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 Well-Architected Tool SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2020-03-31@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-wellarchitected)
+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.WellArchitected](http://hackage.haskell.org/package/amazonka-wellarchitected/docs/Amazonka-WellArchitected.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-wellarchitected` 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-wellarchitected.cabal b/amazonka-wellarchitected.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-wellarchitected.cabal
@@ -0,0 +1,180 @@
+cabal-version:      2.2
+name:               amazonka-wellarchitected
+version:            2.0
+synopsis:           Amazon Well-Architected Tool 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 @2020-03-31@ 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.WellArchitected.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.WellArchitected" 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-wellarchitected
+
+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.WellArchitected
+    Amazonka.WellArchitected.AssociateLenses
+    Amazonka.WellArchitected.CreateLensShare
+    Amazonka.WellArchitected.CreateLensVersion
+    Amazonka.WellArchitected.CreateMilestone
+    Amazonka.WellArchitected.CreateWorkload
+    Amazonka.WellArchitected.CreateWorkloadShare
+    Amazonka.WellArchitected.DeleteLens
+    Amazonka.WellArchitected.DeleteLensShare
+    Amazonka.WellArchitected.DeleteWorkload
+    Amazonka.WellArchitected.DeleteWorkloadShare
+    Amazonka.WellArchitected.DisassociateLenses
+    Amazonka.WellArchitected.ExportLens
+    Amazonka.WellArchitected.GetAnswer
+    Amazonka.WellArchitected.GetLens
+    Amazonka.WellArchitected.GetLensReview
+    Amazonka.WellArchitected.GetLensReviewReport
+    Amazonka.WellArchitected.GetLensVersionDifference
+    Amazonka.WellArchitected.GetMilestone
+    Amazonka.WellArchitected.GetWorkload
+    Amazonka.WellArchitected.ImportLens
+    Amazonka.WellArchitected.Lens
+    Amazonka.WellArchitected.ListAnswers
+    Amazonka.WellArchitected.ListCheckDetails
+    Amazonka.WellArchitected.ListCheckSummaries
+    Amazonka.WellArchitected.ListLenses
+    Amazonka.WellArchitected.ListLensReviewImprovements
+    Amazonka.WellArchitected.ListLensReviews
+    Amazonka.WellArchitected.ListLensShares
+    Amazonka.WellArchitected.ListMilestones
+    Amazonka.WellArchitected.ListNotifications
+    Amazonka.WellArchitected.ListShareInvitations
+    Amazonka.WellArchitected.ListTagsForResource
+    Amazonka.WellArchitected.ListWorkloads
+    Amazonka.WellArchitected.ListWorkloadShares
+    Amazonka.WellArchitected.TagResource
+    Amazonka.WellArchitected.Types
+    Amazonka.WellArchitected.Types.AdditionalResources
+    Amazonka.WellArchitected.Types.AdditionalResourceType
+    Amazonka.WellArchitected.Types.Answer
+    Amazonka.WellArchitected.Types.AnswerReason
+    Amazonka.WellArchitected.Types.AnswerSummary
+    Amazonka.WellArchitected.Types.CheckDetail
+    Amazonka.WellArchitected.Types.CheckFailureReason
+    Amazonka.WellArchitected.Types.CheckProvider
+    Amazonka.WellArchitected.Types.CheckStatus
+    Amazonka.WellArchitected.Types.CheckSummary
+    Amazonka.WellArchitected.Types.Choice
+    Amazonka.WellArchitected.Types.ChoiceAnswer
+    Amazonka.WellArchitected.Types.ChoiceAnswerSummary
+    Amazonka.WellArchitected.Types.ChoiceContent
+    Amazonka.WellArchitected.Types.ChoiceImprovementPlan
+    Amazonka.WellArchitected.Types.ChoiceReason
+    Amazonka.WellArchitected.Types.ChoiceStatus
+    Amazonka.WellArchitected.Types.ChoiceUpdate
+    Amazonka.WellArchitected.Types.DifferenceStatus
+    Amazonka.WellArchitected.Types.ImportLensStatus
+    Amazonka.WellArchitected.Types.ImprovementSummary
+    Amazonka.WellArchitected.Types.Lens
+    Amazonka.WellArchitected.Types.LensReview
+    Amazonka.WellArchitected.Types.LensReviewReport
+    Amazonka.WellArchitected.Types.LensReviewSummary
+    Amazonka.WellArchitected.Types.LensShareSummary
+    Amazonka.WellArchitected.Types.LensStatus
+    Amazonka.WellArchitected.Types.LensStatusType
+    Amazonka.WellArchitected.Types.LensSummary
+    Amazonka.WellArchitected.Types.LensType
+    Amazonka.WellArchitected.Types.LensUpgradeSummary
+    Amazonka.WellArchitected.Types.Milestone
+    Amazonka.WellArchitected.Types.MilestoneSummary
+    Amazonka.WellArchitected.Types.NotificationSummary
+    Amazonka.WellArchitected.Types.NotificationType
+    Amazonka.WellArchitected.Types.OrganizationSharingStatus
+    Amazonka.WellArchitected.Types.PermissionType
+    Amazonka.WellArchitected.Types.PillarDifference
+    Amazonka.WellArchitected.Types.PillarReviewSummary
+    Amazonka.WellArchitected.Types.QuestionDifference
+    Amazonka.WellArchitected.Types.Risk
+    Amazonka.WellArchitected.Types.ShareInvitation
+    Amazonka.WellArchitected.Types.ShareInvitationAction
+    Amazonka.WellArchitected.Types.ShareInvitationSummary
+    Amazonka.WellArchitected.Types.ShareResourceType
+    Amazonka.WellArchitected.Types.ShareStatus
+    Amazonka.WellArchitected.Types.TrustedAdvisorIntegrationStatus
+    Amazonka.WellArchitected.Types.VersionDifferences
+    Amazonka.WellArchitected.Types.Workload
+    Amazonka.WellArchitected.Types.WorkloadDiscoveryConfig
+    Amazonka.WellArchitected.Types.WorkloadEnvironment
+    Amazonka.WellArchitected.Types.WorkloadImprovementStatus
+    Amazonka.WellArchitected.Types.WorkloadShare
+    Amazonka.WellArchitected.Types.WorkloadShareSummary
+    Amazonka.WellArchitected.Types.WorkloadSummary
+    Amazonka.WellArchitected.UntagResource
+    Amazonka.WellArchitected.UpdateAnswer
+    Amazonka.WellArchitected.UpdateGlobalSettings
+    Amazonka.WellArchitected.UpdateLensReview
+    Amazonka.WellArchitected.UpdateShareInvitation
+    Amazonka.WellArchitected.UpdateWorkload
+    Amazonka.WellArchitected.UpdateWorkloadShare
+    Amazonka.WellArchitected.UpgradeLensReview
+    Amazonka.WellArchitected.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-wellarchitected-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.WellArchitected
+    Test.Amazonka.WellArchitected
+    Test.Amazonka.WellArchitected.Internal
+
+  build-depends:
+    , amazonka-core             >=2.0 && <2.1
+    , amazonka-test             >=2.0 && <2.1
+    , amazonka-wellarchitected
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateLenses.yaml b/fixture/AssociateLenses.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateLenses.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/AssociateLensesResponse.proto b/fixture/AssociateLensesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateLensesResponse.proto
diff --git a/fixture/CreateLensShare.yaml b/fixture/CreateLensShare.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLensShare.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/CreateLensShareResponse.proto b/fixture/CreateLensShareResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLensShareResponse.proto
diff --git a/fixture/CreateLensVersion.yaml b/fixture/CreateLensVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLensVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/CreateLensVersionResponse.proto b/fixture/CreateLensVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLensVersionResponse.proto
diff --git a/fixture/CreateMilestone.yaml b/fixture/CreateMilestone.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMilestone.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/CreateMilestoneResponse.proto b/fixture/CreateMilestoneResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMilestoneResponse.proto
diff --git a/fixture/CreateWorkload.yaml b/fixture/CreateWorkload.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkload.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/CreateWorkloadResponse.proto b/fixture/CreateWorkloadResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkloadResponse.proto
diff --git a/fixture/CreateWorkloadShare.yaml b/fixture/CreateWorkloadShare.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkloadShare.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/CreateWorkloadShareResponse.proto b/fixture/CreateWorkloadShareResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkloadShareResponse.proto
diff --git a/fixture/DeleteLens.yaml b/fixture/DeleteLens.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLens.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/DeleteLensResponse.proto b/fixture/DeleteLensResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLensResponse.proto
diff --git a/fixture/DeleteLensShare.yaml b/fixture/DeleteLensShare.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLensShare.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/DeleteLensShareResponse.proto b/fixture/DeleteLensShareResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLensShareResponse.proto
diff --git a/fixture/DeleteWorkload.yaml b/fixture/DeleteWorkload.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkload.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/DeleteWorkloadResponse.proto b/fixture/DeleteWorkloadResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkloadResponse.proto
diff --git a/fixture/DeleteWorkloadShare.yaml b/fixture/DeleteWorkloadShare.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkloadShare.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/DeleteWorkloadShareResponse.proto b/fixture/DeleteWorkloadShareResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkloadShareResponse.proto
diff --git a/fixture/DisassociateLenses.yaml b/fixture/DisassociateLenses.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateLenses.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/DisassociateLensesResponse.proto b/fixture/DisassociateLensesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateLensesResponse.proto
diff --git a/fixture/ExportLens.yaml b/fixture/ExportLens.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ExportLens.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ExportLensResponse.proto b/fixture/ExportLensResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ExportLensResponse.proto
diff --git a/fixture/GetAnswer.yaml b/fixture/GetAnswer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAnswer.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetAnswerResponse.proto b/fixture/GetAnswerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAnswerResponse.proto
diff --git a/fixture/GetLens.yaml b/fixture/GetLens.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLens.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetLensResponse.proto b/fixture/GetLensResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensResponse.proto
diff --git a/fixture/GetLensReview.yaml b/fixture/GetLensReview.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensReview.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetLensReviewReport.yaml b/fixture/GetLensReviewReport.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensReviewReport.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetLensReviewReportResponse.proto b/fixture/GetLensReviewReportResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensReviewReportResponse.proto
diff --git a/fixture/GetLensReviewResponse.proto b/fixture/GetLensReviewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensReviewResponse.proto
diff --git a/fixture/GetLensVersionDifference.yaml b/fixture/GetLensVersionDifference.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensVersionDifference.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetLensVersionDifferenceResponse.proto b/fixture/GetLensVersionDifferenceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLensVersionDifferenceResponse.proto
diff --git a/fixture/GetMilestone.yaml b/fixture/GetMilestone.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMilestone.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetMilestoneResponse.proto b/fixture/GetMilestoneResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMilestoneResponse.proto
diff --git a/fixture/GetWorkload.yaml b/fixture/GetWorkload.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetWorkload.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/GetWorkloadResponse.proto b/fixture/GetWorkloadResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetWorkloadResponse.proto
diff --git a/fixture/ImportLens.yaml b/fixture/ImportLens.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ImportLens.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ImportLensResponse.proto b/fixture/ImportLensResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ImportLensResponse.proto
diff --git a/fixture/ListAnswers.yaml b/fixture/ListAnswers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAnswers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListAnswersResponse.proto b/fixture/ListAnswersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAnswersResponse.proto
diff --git a/fixture/ListCheckDetails.yaml b/fixture/ListCheckDetails.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCheckDetails.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListCheckDetailsResponse.proto b/fixture/ListCheckDetailsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCheckDetailsResponse.proto
diff --git a/fixture/ListCheckSummaries.yaml b/fixture/ListCheckSummaries.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCheckSummaries.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListCheckSummariesResponse.proto b/fixture/ListCheckSummariesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCheckSummariesResponse.proto
diff --git a/fixture/ListLensReviewImprovements.yaml b/fixture/ListLensReviewImprovements.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensReviewImprovements.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListLensReviewImprovementsResponse.proto b/fixture/ListLensReviewImprovementsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensReviewImprovementsResponse.proto
diff --git a/fixture/ListLensReviews.yaml b/fixture/ListLensReviews.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensReviews.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListLensReviewsResponse.proto b/fixture/ListLensReviewsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensReviewsResponse.proto
diff --git a/fixture/ListLensShares.yaml b/fixture/ListLensShares.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensShares.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListLensSharesResponse.proto b/fixture/ListLensSharesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensSharesResponse.proto
diff --git a/fixture/ListLenses.yaml b/fixture/ListLenses.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLenses.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListLensesResponse.proto b/fixture/ListLensesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLensesResponse.proto
diff --git a/fixture/ListMilestones.yaml b/fixture/ListMilestones.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMilestones.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListMilestonesResponse.proto b/fixture/ListMilestonesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMilestonesResponse.proto
diff --git a/fixture/ListNotifications.yaml b/fixture/ListNotifications.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListNotifications.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListNotificationsResponse.proto b/fixture/ListNotificationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListNotificationsResponse.proto
diff --git a/fixture/ListShareInvitations.yaml b/fixture/ListShareInvitations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListShareInvitations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListShareInvitationsResponse.proto b/fixture/ListShareInvitationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListShareInvitationsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/ListWorkloadShares.yaml b/fixture/ListWorkloadShares.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkloadShares.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListWorkloadSharesResponse.proto b/fixture/ListWorkloadSharesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkloadSharesResponse.proto
diff --git a/fixture/ListWorkloads.yaml b/fixture/ListWorkloads.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkloads.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/ListWorkloadsResponse.proto b/fixture/ListWorkloadsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkloadsResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateAnswer.yaml b/fixture/UpdateAnswer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAnswer.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpdateAnswerResponse.proto b/fixture/UpdateAnswerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAnswerResponse.proto
diff --git a/fixture/UpdateGlobalSettings.yaml b/fixture/UpdateGlobalSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGlobalSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpdateGlobalSettingsResponse.proto b/fixture/UpdateGlobalSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGlobalSettingsResponse.proto
diff --git a/fixture/UpdateLensReview.yaml b/fixture/UpdateLensReview.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLensReview.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpdateLensReviewResponse.proto b/fixture/UpdateLensReviewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLensReviewResponse.proto
diff --git a/fixture/UpdateShareInvitation.yaml b/fixture/UpdateShareInvitation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateShareInvitation.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpdateShareInvitationResponse.proto b/fixture/UpdateShareInvitationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateShareInvitationResponse.proto
diff --git a/fixture/UpdateWorkload.yaml b/fixture/UpdateWorkload.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkload.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpdateWorkloadResponse.proto b/fixture/UpdateWorkloadResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkloadResponse.proto
diff --git a/fixture/UpdateWorkloadShare.yaml b/fixture/UpdateWorkloadShare.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkloadShare.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpdateWorkloadShareResponse.proto b/fixture/UpdateWorkloadShareResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkloadShareResponse.proto
diff --git a/fixture/UpgradeLensReview.yaml b/fixture/UpgradeLensReview.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpgradeLensReview.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/wellarchitected/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  wellarchitected.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/UpgradeLensReviewResponse.proto b/fixture/UpgradeLensReviewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpgradeLensReviewResponse.proto
diff --git a/gen/Amazonka/WellArchitected.hs b/gen/Amazonka/WellArchitected.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected.hs
@@ -0,0 +1,582 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.WellArchitected
+-- 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 @2020-03-31@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Well-Architected Tool
+--
+-- This is the /Well-Architected Tool API Reference/. The WA Tool API
+-- provides programmatic access to the
+-- <http://aws.amazon.com/well-architected-tool Well-Architected Tool> in
+-- the
+-- <https://console.aws.amazon.com/wellarchitected Amazon Web Services Management Console>.
+-- For information about the Well-Architected Tool, see the
+-- <https://docs.aws.amazon.com/wellarchitected/latest/userguide/intro.html Well-Architected Tool User Guide>.
+module Amazonka.WellArchitected
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateLenses
+    AssociateLenses (AssociateLenses'),
+    newAssociateLenses,
+    AssociateLensesResponse (AssociateLensesResponse'),
+    newAssociateLensesResponse,
+
+    -- ** CreateLensShare
+    CreateLensShare (CreateLensShare'),
+    newCreateLensShare,
+    CreateLensShareResponse (CreateLensShareResponse'),
+    newCreateLensShareResponse,
+
+    -- ** CreateLensVersion
+    CreateLensVersion (CreateLensVersion'),
+    newCreateLensVersion,
+    CreateLensVersionResponse (CreateLensVersionResponse'),
+    newCreateLensVersionResponse,
+
+    -- ** CreateMilestone
+    CreateMilestone (CreateMilestone'),
+    newCreateMilestone,
+    CreateMilestoneResponse (CreateMilestoneResponse'),
+    newCreateMilestoneResponse,
+
+    -- ** CreateWorkload
+    CreateWorkload (CreateWorkload'),
+    newCreateWorkload,
+    CreateWorkloadResponse (CreateWorkloadResponse'),
+    newCreateWorkloadResponse,
+
+    -- ** CreateWorkloadShare
+    CreateWorkloadShare (CreateWorkloadShare'),
+    newCreateWorkloadShare,
+    CreateWorkloadShareResponse (CreateWorkloadShareResponse'),
+    newCreateWorkloadShareResponse,
+
+    -- ** DeleteLens
+    DeleteLens (DeleteLens'),
+    newDeleteLens,
+    DeleteLensResponse (DeleteLensResponse'),
+    newDeleteLensResponse,
+
+    -- ** DeleteLensShare
+    DeleteLensShare (DeleteLensShare'),
+    newDeleteLensShare,
+    DeleteLensShareResponse (DeleteLensShareResponse'),
+    newDeleteLensShareResponse,
+
+    -- ** DeleteWorkload
+    DeleteWorkload (DeleteWorkload'),
+    newDeleteWorkload,
+    DeleteWorkloadResponse (DeleteWorkloadResponse'),
+    newDeleteWorkloadResponse,
+
+    -- ** DeleteWorkloadShare
+    DeleteWorkloadShare (DeleteWorkloadShare'),
+    newDeleteWorkloadShare,
+    DeleteWorkloadShareResponse (DeleteWorkloadShareResponse'),
+    newDeleteWorkloadShareResponse,
+
+    -- ** DisassociateLenses
+    DisassociateLenses (DisassociateLenses'),
+    newDisassociateLenses,
+    DisassociateLensesResponse (DisassociateLensesResponse'),
+    newDisassociateLensesResponse,
+
+    -- ** ExportLens
+    ExportLens (ExportLens'),
+    newExportLens,
+    ExportLensResponse (ExportLensResponse'),
+    newExportLensResponse,
+
+    -- ** GetAnswer
+    GetAnswer (GetAnswer'),
+    newGetAnswer,
+    GetAnswerResponse (GetAnswerResponse'),
+    newGetAnswerResponse,
+
+    -- ** GetLens
+    GetLens (GetLens'),
+    newGetLens,
+    GetLensResponse (GetLensResponse'),
+    newGetLensResponse,
+
+    -- ** GetLensReview
+    GetLensReview (GetLensReview'),
+    newGetLensReview,
+    GetLensReviewResponse (GetLensReviewResponse'),
+    newGetLensReviewResponse,
+
+    -- ** GetLensReviewReport
+    GetLensReviewReport (GetLensReviewReport'),
+    newGetLensReviewReport,
+    GetLensReviewReportResponse (GetLensReviewReportResponse'),
+    newGetLensReviewReportResponse,
+
+    -- ** GetLensVersionDifference
+    GetLensVersionDifference (GetLensVersionDifference'),
+    newGetLensVersionDifference,
+    GetLensVersionDifferenceResponse (GetLensVersionDifferenceResponse'),
+    newGetLensVersionDifferenceResponse,
+
+    -- ** GetMilestone
+    GetMilestone (GetMilestone'),
+    newGetMilestone,
+    GetMilestoneResponse (GetMilestoneResponse'),
+    newGetMilestoneResponse,
+
+    -- ** GetWorkload
+    GetWorkload (GetWorkload'),
+    newGetWorkload,
+    GetWorkloadResponse (GetWorkloadResponse'),
+    newGetWorkloadResponse,
+
+    -- ** ImportLens
+    ImportLens (ImportLens'),
+    newImportLens,
+    ImportLensResponse (ImportLensResponse'),
+    newImportLensResponse,
+
+    -- ** ListAnswers
+    ListAnswers (ListAnswers'),
+    newListAnswers,
+    ListAnswersResponse (ListAnswersResponse'),
+    newListAnswersResponse,
+
+    -- ** ListCheckDetails
+    ListCheckDetails (ListCheckDetails'),
+    newListCheckDetails,
+    ListCheckDetailsResponse (ListCheckDetailsResponse'),
+    newListCheckDetailsResponse,
+
+    -- ** ListCheckSummaries
+    ListCheckSummaries (ListCheckSummaries'),
+    newListCheckSummaries,
+    ListCheckSummariesResponse (ListCheckSummariesResponse'),
+    newListCheckSummariesResponse,
+
+    -- ** ListLensReviewImprovements
+    ListLensReviewImprovements (ListLensReviewImprovements'),
+    newListLensReviewImprovements,
+    ListLensReviewImprovementsResponse (ListLensReviewImprovementsResponse'),
+    newListLensReviewImprovementsResponse,
+
+    -- ** ListLensReviews
+    ListLensReviews (ListLensReviews'),
+    newListLensReviews,
+    ListLensReviewsResponse (ListLensReviewsResponse'),
+    newListLensReviewsResponse,
+
+    -- ** ListLensShares
+    ListLensShares (ListLensShares'),
+    newListLensShares,
+    ListLensSharesResponse (ListLensSharesResponse'),
+    newListLensSharesResponse,
+
+    -- ** ListLenses
+    ListLenses (ListLenses'),
+    newListLenses,
+    ListLensesResponse (ListLensesResponse'),
+    newListLensesResponse,
+
+    -- ** ListMilestones
+    ListMilestones (ListMilestones'),
+    newListMilestones,
+    ListMilestonesResponse (ListMilestonesResponse'),
+    newListMilestonesResponse,
+
+    -- ** ListNotifications
+    ListNotifications (ListNotifications'),
+    newListNotifications,
+    ListNotificationsResponse (ListNotificationsResponse'),
+    newListNotificationsResponse,
+
+    -- ** ListShareInvitations
+    ListShareInvitations (ListShareInvitations'),
+    newListShareInvitations,
+    ListShareInvitationsResponse (ListShareInvitationsResponse'),
+    newListShareInvitationsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ListWorkloadShares
+    ListWorkloadShares (ListWorkloadShares'),
+    newListWorkloadShares,
+    ListWorkloadSharesResponse (ListWorkloadSharesResponse'),
+    newListWorkloadSharesResponse,
+
+    -- ** ListWorkloads
+    ListWorkloads (ListWorkloads'),
+    newListWorkloads,
+    ListWorkloadsResponse (ListWorkloadsResponse'),
+    newListWorkloadsResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateAnswer
+    UpdateAnswer (UpdateAnswer'),
+    newUpdateAnswer,
+    UpdateAnswerResponse (UpdateAnswerResponse'),
+    newUpdateAnswerResponse,
+
+    -- ** UpdateGlobalSettings
+    UpdateGlobalSettings (UpdateGlobalSettings'),
+    newUpdateGlobalSettings,
+    UpdateGlobalSettingsResponse (UpdateGlobalSettingsResponse'),
+    newUpdateGlobalSettingsResponse,
+
+    -- ** UpdateLensReview
+    UpdateLensReview (UpdateLensReview'),
+    newUpdateLensReview,
+    UpdateLensReviewResponse (UpdateLensReviewResponse'),
+    newUpdateLensReviewResponse,
+
+    -- ** UpdateShareInvitation
+    UpdateShareInvitation (UpdateShareInvitation'),
+    newUpdateShareInvitation,
+    UpdateShareInvitationResponse (UpdateShareInvitationResponse'),
+    newUpdateShareInvitationResponse,
+
+    -- ** UpdateWorkload
+    UpdateWorkload (UpdateWorkload'),
+    newUpdateWorkload,
+    UpdateWorkloadResponse (UpdateWorkloadResponse'),
+    newUpdateWorkloadResponse,
+
+    -- ** UpdateWorkloadShare
+    UpdateWorkloadShare (UpdateWorkloadShare'),
+    newUpdateWorkloadShare,
+    UpdateWorkloadShareResponse (UpdateWorkloadShareResponse'),
+    newUpdateWorkloadShareResponse,
+
+    -- ** UpgradeLensReview
+    UpgradeLensReview (UpgradeLensReview'),
+    newUpgradeLensReview,
+    UpgradeLensReviewResponse (UpgradeLensReviewResponse'),
+    newUpgradeLensReviewResponse,
+
+    -- * Types
+
+    -- ** AdditionalResourceType
+    AdditionalResourceType (..),
+
+    -- ** AnswerReason
+    AnswerReason (..),
+
+    -- ** CheckFailureReason
+    CheckFailureReason (..),
+
+    -- ** CheckProvider
+    CheckProvider (..),
+
+    -- ** CheckStatus
+    CheckStatus (..),
+
+    -- ** ChoiceReason
+    ChoiceReason (..),
+
+    -- ** ChoiceStatus
+    ChoiceStatus (..),
+
+    -- ** DifferenceStatus
+    DifferenceStatus (..),
+
+    -- ** ImportLensStatus
+    ImportLensStatus (..),
+
+    -- ** LensStatus
+    LensStatus (..),
+
+    -- ** LensStatusType
+    LensStatusType (..),
+
+    -- ** LensType
+    LensType (..),
+
+    -- ** NotificationType
+    NotificationType (..),
+
+    -- ** OrganizationSharingStatus
+    OrganizationSharingStatus (..),
+
+    -- ** PermissionType
+    PermissionType (..),
+
+    -- ** Risk
+    Risk (..),
+
+    -- ** ShareInvitationAction
+    ShareInvitationAction (..),
+
+    -- ** ShareResourceType
+    ShareResourceType (..),
+
+    -- ** ShareStatus
+    ShareStatus (..),
+
+    -- ** TrustedAdvisorIntegrationStatus
+    TrustedAdvisorIntegrationStatus (..),
+
+    -- ** WorkloadEnvironment
+    WorkloadEnvironment (..),
+
+    -- ** WorkloadImprovementStatus
+    WorkloadImprovementStatus (..),
+
+    -- ** AdditionalResources
+    AdditionalResources (AdditionalResources'),
+    newAdditionalResources,
+
+    -- ** Answer
+    Answer (Answer'),
+    newAnswer,
+
+    -- ** AnswerSummary
+    AnswerSummary (AnswerSummary'),
+    newAnswerSummary,
+
+    -- ** CheckDetail
+    CheckDetail (CheckDetail'),
+    newCheckDetail,
+
+    -- ** CheckSummary
+    CheckSummary (CheckSummary'),
+    newCheckSummary,
+
+    -- ** Choice
+    Choice (Choice'),
+    newChoice,
+
+    -- ** ChoiceAnswer
+    ChoiceAnswer (ChoiceAnswer'),
+    newChoiceAnswer,
+
+    -- ** ChoiceAnswerSummary
+    ChoiceAnswerSummary (ChoiceAnswerSummary'),
+    newChoiceAnswerSummary,
+
+    -- ** ChoiceContent
+    ChoiceContent (ChoiceContent'),
+    newChoiceContent,
+
+    -- ** ChoiceImprovementPlan
+    ChoiceImprovementPlan (ChoiceImprovementPlan'),
+    newChoiceImprovementPlan,
+
+    -- ** ChoiceUpdate
+    ChoiceUpdate (ChoiceUpdate'),
+    newChoiceUpdate,
+
+    -- ** ImprovementSummary
+    ImprovementSummary (ImprovementSummary'),
+    newImprovementSummary,
+
+    -- ** Lens
+    Lens (Lens'),
+    newLens,
+
+    -- ** LensReview
+    LensReview (LensReview'),
+    newLensReview,
+
+    -- ** LensReviewReport
+    LensReviewReport (LensReviewReport'),
+    newLensReviewReport,
+
+    -- ** LensReviewSummary
+    LensReviewSummary (LensReviewSummary'),
+    newLensReviewSummary,
+
+    -- ** LensShareSummary
+    LensShareSummary (LensShareSummary'),
+    newLensShareSummary,
+
+    -- ** LensSummary
+    LensSummary (LensSummary'),
+    newLensSummary,
+
+    -- ** LensUpgradeSummary
+    LensUpgradeSummary (LensUpgradeSummary'),
+    newLensUpgradeSummary,
+
+    -- ** Milestone
+    Milestone (Milestone'),
+    newMilestone,
+
+    -- ** MilestoneSummary
+    MilestoneSummary (MilestoneSummary'),
+    newMilestoneSummary,
+
+    -- ** NotificationSummary
+    NotificationSummary (NotificationSummary'),
+    newNotificationSummary,
+
+    -- ** PillarDifference
+    PillarDifference (PillarDifference'),
+    newPillarDifference,
+
+    -- ** PillarReviewSummary
+    PillarReviewSummary (PillarReviewSummary'),
+    newPillarReviewSummary,
+
+    -- ** QuestionDifference
+    QuestionDifference (QuestionDifference'),
+    newQuestionDifference,
+
+    -- ** ShareInvitation
+    ShareInvitation (ShareInvitation'),
+    newShareInvitation,
+
+    -- ** ShareInvitationSummary
+    ShareInvitationSummary (ShareInvitationSummary'),
+    newShareInvitationSummary,
+
+    -- ** VersionDifferences
+    VersionDifferences (VersionDifferences'),
+    newVersionDifferences,
+
+    -- ** Workload
+    Workload (Workload'),
+    newWorkload,
+
+    -- ** WorkloadDiscoveryConfig
+    WorkloadDiscoveryConfig (WorkloadDiscoveryConfig'),
+    newWorkloadDiscoveryConfig,
+
+    -- ** WorkloadShare
+    WorkloadShare (WorkloadShare'),
+    newWorkloadShare,
+
+    -- ** WorkloadShareSummary
+    WorkloadShareSummary (WorkloadShareSummary'),
+    newWorkloadShareSummary,
+
+    -- ** WorkloadSummary
+    WorkloadSummary (WorkloadSummary'),
+    newWorkloadSummary,
+  )
+where
+
+import Amazonka.WellArchitected.AssociateLenses
+import Amazonka.WellArchitected.CreateLensShare
+import Amazonka.WellArchitected.CreateLensVersion
+import Amazonka.WellArchitected.CreateMilestone
+import Amazonka.WellArchitected.CreateWorkload
+import Amazonka.WellArchitected.CreateWorkloadShare
+import Amazonka.WellArchitected.DeleteLens
+import Amazonka.WellArchitected.DeleteLensShare
+import Amazonka.WellArchitected.DeleteWorkload
+import Amazonka.WellArchitected.DeleteWorkloadShare
+import Amazonka.WellArchitected.DisassociateLenses
+import Amazonka.WellArchitected.ExportLens
+import Amazonka.WellArchitected.GetAnswer
+import Amazonka.WellArchitected.GetLens
+import Amazonka.WellArchitected.GetLensReview
+import Amazonka.WellArchitected.GetLensReviewReport
+import Amazonka.WellArchitected.GetLensVersionDifference
+import Amazonka.WellArchitected.GetMilestone
+import Amazonka.WellArchitected.GetWorkload
+import Amazonka.WellArchitected.ImportLens
+import Amazonka.WellArchitected.Lens
+import Amazonka.WellArchitected.ListAnswers
+import Amazonka.WellArchitected.ListCheckDetails
+import Amazonka.WellArchitected.ListCheckSummaries
+import Amazonka.WellArchitected.ListLensReviewImprovements
+import Amazonka.WellArchitected.ListLensReviews
+import Amazonka.WellArchitected.ListLensShares
+import Amazonka.WellArchitected.ListLenses
+import Amazonka.WellArchitected.ListMilestones
+import Amazonka.WellArchitected.ListNotifications
+import Amazonka.WellArchitected.ListShareInvitations
+import Amazonka.WellArchitected.ListTagsForResource
+import Amazonka.WellArchitected.ListWorkloadShares
+import Amazonka.WellArchitected.ListWorkloads
+import Amazonka.WellArchitected.TagResource
+import Amazonka.WellArchitected.Types
+import Amazonka.WellArchitected.UntagResource
+import Amazonka.WellArchitected.UpdateAnswer
+import Amazonka.WellArchitected.UpdateGlobalSettings
+import Amazonka.WellArchitected.UpdateLensReview
+import Amazonka.WellArchitected.UpdateShareInvitation
+import Amazonka.WellArchitected.UpdateWorkload
+import Amazonka.WellArchitected.UpdateWorkloadShare
+import Amazonka.WellArchitected.UpgradeLensReview
+import Amazonka.WellArchitected.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 'WellArchitected'.
+
+-- $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/WellArchitected/AssociateLenses.hs b/gen/Amazonka/WellArchitected/AssociateLenses.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/AssociateLenses.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.AssociateLenses
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associate a lens to a workload.
+--
+-- Up to 10 lenses can be associated with a workload in a single API
+-- operation. A maximum of 20 lenses can be associated with a workload.
+--
+-- __Disclaimer__
+--
+-- By accessing and\/or applying custom lenses created by another Amazon
+-- Web Services user or account, you acknowledge that custom lenses created
+-- by other users and shared with you are Third Party Content as defined in
+-- the Amazon Web Services Customer Agreement.
+module Amazonka.WellArchitected.AssociateLenses
+  ( -- * Creating a Request
+    AssociateLenses (..),
+    newAssociateLenses,
+
+    -- * Request Lenses
+    associateLenses_workloadId,
+    associateLenses_lensAliases,
+
+    -- * Destructuring the Response
+    AssociateLensesResponse (..),
+    newAssociateLensesResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to associate lens reviews.
+--
+-- /See:/ 'newAssociateLenses' smart constructor.
+data AssociateLenses = AssociateLenses'
+  { workloadId :: Prelude.Text,
+    lensAliases :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateLenses' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'associateLenses_workloadId' - Undocumented member.
+--
+-- 'lensAliases', 'associateLenses_lensAliases' - Undocumented member.
+newAssociateLenses ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAliases'
+  Prelude.NonEmpty Prelude.Text ->
+  AssociateLenses
+newAssociateLenses pWorkloadId_ pLensAliases_ =
+  AssociateLenses'
+    { workloadId = pWorkloadId_,
+      lensAliases = Lens.coerced Lens.# pLensAliases_
+    }
+
+-- | Undocumented member.
+associateLenses_workloadId :: Lens.Lens' AssociateLenses Prelude.Text
+associateLenses_workloadId = Lens.lens (\AssociateLenses' {workloadId} -> workloadId) (\s@AssociateLenses' {} a -> s {workloadId = a} :: AssociateLenses)
+
+-- | Undocumented member.
+associateLenses_lensAliases :: Lens.Lens' AssociateLenses (Prelude.NonEmpty Prelude.Text)
+associateLenses_lensAliases = Lens.lens (\AssociateLenses' {lensAliases} -> lensAliases) (\s@AssociateLenses' {} a -> s {lensAliases = a} :: AssociateLenses) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AssociateLenses where
+  type
+    AWSResponse AssociateLenses =
+      AssociateLensesResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveNull AssociateLensesResponse'
+
+instance Prelude.Hashable AssociateLenses where
+  hashWithSalt _salt AssociateLenses' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAliases
+
+instance Prelude.NFData AssociateLenses where
+  rnf AssociateLenses' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAliases
+
+instance Data.ToHeaders AssociateLenses where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateLenses where
+  toJSON AssociateLenses' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("LensAliases" Data..= lensAliases)]
+      )
+
+instance Data.ToPath AssociateLenses where
+  toPath AssociateLenses' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/associateLenses"
+      ]
+
+instance Data.ToQuery AssociateLenses where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateLensesResponse' smart constructor.
+data AssociateLensesResponse = AssociateLensesResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateLensesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newAssociateLensesResponse ::
+  AssociateLensesResponse
+newAssociateLensesResponse = AssociateLensesResponse'
+
+instance Prelude.NFData AssociateLensesResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/CreateLensShare.hs b/gen/Amazonka/WellArchitected/CreateLensShare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/CreateLensShare.hs
@@ -0,0 +1,213 @@
+{-# 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.WellArchitected.CreateLensShare
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a lens share.
+--
+-- The owner of a lens can share it with other Amazon Web Services
+-- accounts, IAM users, an organization, and organizational units (OUs) in
+-- the same Amazon Web Services Region. Shared access to a lens is not
+-- removed until the lens invitation is deleted.
+--
+-- __Disclaimer__
+--
+-- By sharing your custom lenses with other Amazon Web Services accounts,
+-- you acknowledge that Amazon Web Services will make your custom lenses
+-- available to those other accounts. Those other accounts may continue to
+-- access and use your shared custom lenses even if you delete the custom
+-- lenses from your own Amazon Web Services account or terminate your
+-- Amazon Web Services account.
+module Amazonka.WellArchitected.CreateLensShare
+  ( -- * Creating a Request
+    CreateLensShare (..),
+    newCreateLensShare,
+
+    -- * Request Lenses
+    createLensShare_lensAlias,
+    createLensShare_sharedWith,
+    createLensShare_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateLensShareResponse (..),
+    newCreateLensShareResponse,
+
+    -- * Response Lenses
+    createLensShareResponse_shareId,
+    createLensShareResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newCreateLensShare' smart constructor.
+data CreateLensShare = CreateLensShare'
+  { lensAlias :: Prelude.Text,
+    sharedWith :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLensShare' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensAlias', 'createLensShare_lensAlias' - Undocumented member.
+--
+-- 'sharedWith', 'createLensShare_sharedWith' - Undocumented member.
+--
+-- 'clientRequestToken', 'createLensShare_clientRequestToken' - Undocumented member.
+newCreateLensShare ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'sharedWith'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateLensShare
+newCreateLensShare
+  pLensAlias_
+  pSharedWith_
+  pClientRequestToken_ =
+    CreateLensShare'
+      { lensAlias = pLensAlias_,
+        sharedWith = pSharedWith_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Undocumented member.
+createLensShare_lensAlias :: Lens.Lens' CreateLensShare Prelude.Text
+createLensShare_lensAlias = Lens.lens (\CreateLensShare' {lensAlias} -> lensAlias) (\s@CreateLensShare' {} a -> s {lensAlias = a} :: CreateLensShare)
+
+-- | Undocumented member.
+createLensShare_sharedWith :: Lens.Lens' CreateLensShare Prelude.Text
+createLensShare_sharedWith = Lens.lens (\CreateLensShare' {sharedWith} -> sharedWith) (\s@CreateLensShare' {} a -> s {sharedWith = a} :: CreateLensShare)
+
+-- | Undocumented member.
+createLensShare_clientRequestToken :: Lens.Lens' CreateLensShare Prelude.Text
+createLensShare_clientRequestToken = Lens.lens (\CreateLensShare' {clientRequestToken} -> clientRequestToken) (\s@CreateLensShare' {} a -> s {clientRequestToken = a} :: CreateLensShare)
+
+instance Core.AWSRequest CreateLensShare where
+  type
+    AWSResponse CreateLensShare =
+      CreateLensShareResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLensShareResponse'
+            Prelude.<$> (x Data..?> "ShareId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLensShare where
+  hashWithSalt _salt CreateLensShare' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` sharedWith
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateLensShare where
+  rnf CreateLensShare' {..} =
+    Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf sharedWith
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateLensShare where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLensShare where
+  toJSON CreateLensShare' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SharedWith" Data..= sharedWith),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateLensShare where
+  toPath CreateLensShare' {..} =
+    Prelude.mconcat
+      ["/lenses/", Data.toBS lensAlias, "/shares"]
+
+instance Data.ToQuery CreateLensShare where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLensShareResponse' smart constructor.
+data CreateLensShareResponse = CreateLensShareResponse'
+  { shareId :: 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 'CreateLensShareResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareId', 'createLensShareResponse_shareId' - Undocumented member.
+--
+-- 'httpStatus', 'createLensShareResponse_httpStatus' - The response's http status code.
+newCreateLensShareResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLensShareResponse
+newCreateLensShareResponse pHttpStatus_ =
+  CreateLensShareResponse'
+    { shareId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createLensShareResponse_shareId :: Lens.Lens' CreateLensShareResponse (Prelude.Maybe Prelude.Text)
+createLensShareResponse_shareId = Lens.lens (\CreateLensShareResponse' {shareId} -> shareId) (\s@CreateLensShareResponse' {} a -> s {shareId = a} :: CreateLensShareResponse)
+
+-- | The response's http status code.
+createLensShareResponse_httpStatus :: Lens.Lens' CreateLensShareResponse Prelude.Int
+createLensShareResponse_httpStatus = Lens.lens (\CreateLensShareResponse' {httpStatus} -> httpStatus) (\s@CreateLensShareResponse' {} a -> s {httpStatus = a} :: CreateLensShareResponse)
+
+instance Prelude.NFData CreateLensShareResponse where
+  rnf CreateLensShareResponse' {..} =
+    Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/CreateLensVersion.hs b/gen/Amazonka/WellArchitected/CreateLensVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/CreateLensVersion.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.CreateLensVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new lens version.
+--
+-- A lens can have up to 100 versions.
+--
+-- After a lens has been imported, create a new lens version to publish it.
+-- The owner of a lens can share the lens with other Amazon Web Services
+-- accounts and IAM users in the same Amazon Web Services Region. Only the
+-- owner of a lens can delete it.
+module Amazonka.WellArchitected.CreateLensVersion
+  ( -- * Creating a Request
+    CreateLensVersion (..),
+    newCreateLensVersion,
+
+    -- * Request Lenses
+    createLensVersion_isMajorVersion,
+    createLensVersion_lensAlias,
+    createLensVersion_lensVersion,
+    createLensVersion_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateLensVersionResponse (..),
+    newCreateLensVersionResponse,
+
+    -- * Response Lenses
+    createLensVersionResponse_lensArn,
+    createLensVersionResponse_lensVersion,
+    createLensVersionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newCreateLensVersion' smart constructor.
+data CreateLensVersion = CreateLensVersion'
+  { -- | Set to true if this new major lens version.
+    isMajorVersion :: Prelude.Maybe Prelude.Bool,
+    lensAlias :: Prelude.Text,
+    -- | The version of the lens being created.
+    lensVersion :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLensVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'isMajorVersion', 'createLensVersion_isMajorVersion' - Set to true if this new major lens version.
+--
+-- 'lensAlias', 'createLensVersion_lensAlias' - Undocumented member.
+--
+-- 'lensVersion', 'createLensVersion_lensVersion' - The version of the lens being created.
+--
+-- 'clientRequestToken', 'createLensVersion_clientRequestToken' - Undocumented member.
+newCreateLensVersion ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'lensVersion'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateLensVersion
+newCreateLensVersion
+  pLensAlias_
+  pLensVersion_
+  pClientRequestToken_ =
+    CreateLensVersion'
+      { isMajorVersion =
+          Prelude.Nothing,
+        lensAlias = pLensAlias_,
+        lensVersion = pLensVersion_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Set to true if this new major lens version.
+createLensVersion_isMajorVersion :: Lens.Lens' CreateLensVersion (Prelude.Maybe Prelude.Bool)
+createLensVersion_isMajorVersion = Lens.lens (\CreateLensVersion' {isMajorVersion} -> isMajorVersion) (\s@CreateLensVersion' {} a -> s {isMajorVersion = a} :: CreateLensVersion)
+
+-- | Undocumented member.
+createLensVersion_lensAlias :: Lens.Lens' CreateLensVersion Prelude.Text
+createLensVersion_lensAlias = Lens.lens (\CreateLensVersion' {lensAlias} -> lensAlias) (\s@CreateLensVersion' {} a -> s {lensAlias = a} :: CreateLensVersion)
+
+-- | The version of the lens being created.
+createLensVersion_lensVersion :: Lens.Lens' CreateLensVersion Prelude.Text
+createLensVersion_lensVersion = Lens.lens (\CreateLensVersion' {lensVersion} -> lensVersion) (\s@CreateLensVersion' {} a -> s {lensVersion = a} :: CreateLensVersion)
+
+-- | Undocumented member.
+createLensVersion_clientRequestToken :: Lens.Lens' CreateLensVersion Prelude.Text
+createLensVersion_clientRequestToken = Lens.lens (\CreateLensVersion' {clientRequestToken} -> clientRequestToken) (\s@CreateLensVersion' {} a -> s {clientRequestToken = a} :: CreateLensVersion)
+
+instance Core.AWSRequest CreateLensVersion where
+  type
+    AWSResponse CreateLensVersion =
+      CreateLensVersionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLensVersionResponse'
+            Prelude.<$> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "LensVersion")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLensVersion where
+  hashWithSalt _salt CreateLensVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` isMajorVersion
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateLensVersion where
+  rnf CreateLensVersion' {..} =
+    Prelude.rnf isMajorVersion
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateLensVersion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLensVersion where
+  toJSON CreateLensVersion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IsMajorVersion" Data..=)
+              Prelude.<$> isMajorVersion,
+            Prelude.Just ("LensVersion" Data..= lensVersion),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateLensVersion where
+  toPath CreateLensVersion' {..} =
+    Prelude.mconcat
+      ["/lenses/", Data.toBS lensAlias, "/versions"]
+
+instance Data.ToQuery CreateLensVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLensVersionResponse' smart constructor.
+data CreateLensVersionResponse = CreateLensVersionResponse'
+  { -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | The version of the lens.
+    lensVersion :: 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 'CreateLensVersionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensArn', 'createLensVersionResponse_lensArn' - The ARN for the lens.
+--
+-- 'lensVersion', 'createLensVersionResponse_lensVersion' - The version of the lens.
+--
+-- 'httpStatus', 'createLensVersionResponse_httpStatus' - The response's http status code.
+newCreateLensVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLensVersionResponse
+newCreateLensVersionResponse pHttpStatus_ =
+  CreateLensVersionResponse'
+    { lensArn =
+        Prelude.Nothing,
+      lensVersion = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN for the lens.
+createLensVersionResponse_lensArn :: Lens.Lens' CreateLensVersionResponse (Prelude.Maybe Prelude.Text)
+createLensVersionResponse_lensArn = Lens.lens (\CreateLensVersionResponse' {lensArn} -> lensArn) (\s@CreateLensVersionResponse' {} a -> s {lensArn = a} :: CreateLensVersionResponse)
+
+-- | The version of the lens.
+createLensVersionResponse_lensVersion :: Lens.Lens' CreateLensVersionResponse (Prelude.Maybe Prelude.Text)
+createLensVersionResponse_lensVersion = Lens.lens (\CreateLensVersionResponse' {lensVersion} -> lensVersion) (\s@CreateLensVersionResponse' {} a -> s {lensVersion = a} :: CreateLensVersionResponse)
+
+-- | The response's http status code.
+createLensVersionResponse_httpStatus :: Lens.Lens' CreateLensVersionResponse Prelude.Int
+createLensVersionResponse_httpStatus = Lens.lens (\CreateLensVersionResponse' {httpStatus} -> httpStatus) (\s@CreateLensVersionResponse' {} a -> s {httpStatus = a} :: CreateLensVersionResponse)
+
+instance Prelude.NFData CreateLensVersionResponse where
+  rnf CreateLensVersionResponse' {..} =
+    Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/CreateMilestone.hs b/gen/Amazonka/WellArchitected/CreateMilestone.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/CreateMilestone.hs
@@ -0,0 +1,216 @@
+{-# 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.WellArchitected.CreateMilestone
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a milestone for an existing workload.
+module Amazonka.WellArchitected.CreateMilestone
+  ( -- * Creating a Request
+    CreateMilestone (..),
+    newCreateMilestone,
+
+    -- * Request Lenses
+    createMilestone_workloadId,
+    createMilestone_milestoneName,
+    createMilestone_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateMilestoneResponse (..),
+    newCreateMilestoneResponse,
+
+    -- * Response Lenses
+    createMilestoneResponse_milestoneNumber,
+    createMilestoneResponse_workloadId,
+    createMilestoneResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for milestone creation.
+--
+-- /See:/ 'newCreateMilestone' smart constructor.
+data CreateMilestone = CreateMilestone'
+  { workloadId :: Prelude.Text,
+    milestoneName :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMilestone' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'createMilestone_workloadId' - Undocumented member.
+--
+-- 'milestoneName', 'createMilestone_milestoneName' - Undocumented member.
+--
+-- 'clientRequestToken', 'createMilestone_clientRequestToken' - Undocumented member.
+newCreateMilestone ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'milestoneName'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateMilestone
+newCreateMilestone
+  pWorkloadId_
+  pMilestoneName_
+  pClientRequestToken_ =
+    CreateMilestone'
+      { workloadId = pWorkloadId_,
+        milestoneName = pMilestoneName_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Undocumented member.
+createMilestone_workloadId :: Lens.Lens' CreateMilestone Prelude.Text
+createMilestone_workloadId = Lens.lens (\CreateMilestone' {workloadId} -> workloadId) (\s@CreateMilestone' {} a -> s {workloadId = a} :: CreateMilestone)
+
+-- | Undocumented member.
+createMilestone_milestoneName :: Lens.Lens' CreateMilestone Prelude.Text
+createMilestone_milestoneName = Lens.lens (\CreateMilestone' {milestoneName} -> milestoneName) (\s@CreateMilestone' {} a -> s {milestoneName = a} :: CreateMilestone)
+
+-- | Undocumented member.
+createMilestone_clientRequestToken :: Lens.Lens' CreateMilestone Prelude.Text
+createMilestone_clientRequestToken = Lens.lens (\CreateMilestone' {clientRequestToken} -> clientRequestToken) (\s@CreateMilestone' {} a -> s {clientRequestToken = a} :: CreateMilestone)
+
+instance Core.AWSRequest CreateMilestone where
+  type
+    AWSResponse CreateMilestone =
+      CreateMilestoneResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMilestoneResponse'
+            Prelude.<$> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateMilestone where
+  hashWithSalt _salt CreateMilestone' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` milestoneName
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateMilestone where
+  rnf CreateMilestone' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf milestoneName
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateMilestone where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateMilestone where
+  toJSON CreateMilestone' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MilestoneName" Data..= milestoneName),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateMilestone where
+  toPath CreateMilestone' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId, "/milestones"]
+
+instance Data.ToQuery CreateMilestone where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a create milestone call.
+--
+-- /See:/ 'newCreateMilestoneResponse' smart constructor.
+data CreateMilestoneResponse = CreateMilestoneResponse'
+  { milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: 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 'CreateMilestoneResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneNumber', 'createMilestoneResponse_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'createMilestoneResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'createMilestoneResponse_httpStatus' - The response's http status code.
+newCreateMilestoneResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMilestoneResponse
+newCreateMilestoneResponse pHttpStatus_ =
+  CreateMilestoneResponse'
+    { milestoneNumber =
+        Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createMilestoneResponse_milestoneNumber :: Lens.Lens' CreateMilestoneResponse (Prelude.Maybe Prelude.Natural)
+createMilestoneResponse_milestoneNumber = Lens.lens (\CreateMilestoneResponse' {milestoneNumber} -> milestoneNumber) (\s@CreateMilestoneResponse' {} a -> s {milestoneNumber = a} :: CreateMilestoneResponse)
+
+-- | Undocumented member.
+createMilestoneResponse_workloadId :: Lens.Lens' CreateMilestoneResponse (Prelude.Maybe Prelude.Text)
+createMilestoneResponse_workloadId = Lens.lens (\CreateMilestoneResponse' {workloadId} -> workloadId) (\s@CreateMilestoneResponse' {} a -> s {workloadId = a} :: CreateMilestoneResponse)
+
+-- | The response's http status code.
+createMilestoneResponse_httpStatus :: Lens.Lens' CreateMilestoneResponse Prelude.Int
+createMilestoneResponse_httpStatus = Lens.lens (\CreateMilestoneResponse' {httpStatus} -> httpStatus) (\s@CreateMilestoneResponse' {} a -> s {httpStatus = a} :: CreateMilestoneResponse)
+
+instance Prelude.NFData CreateMilestoneResponse where
+  rnf CreateMilestoneResponse' {..} =
+    Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/CreateWorkload.hs b/gen/Amazonka/WellArchitected/CreateWorkload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/CreateWorkload.hs
@@ -0,0 +1,403 @@
+{-# 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.WellArchitected.CreateWorkload
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new workload.
+--
+-- The owner of a workload can share the workload with other Amazon Web
+-- Services accounts, IAM users, an organization, and organizational units
+-- (OUs) in the same Amazon Web Services Region. Only the owner of a
+-- workload can delete it.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/wellarchitected/latest/userguide/define-workload.html Defining a Workload>
+-- in the /Well-Architected Tool User Guide/.
+module Amazonka.WellArchitected.CreateWorkload
+  ( -- * Creating a Request
+    CreateWorkload (..),
+    newCreateWorkload,
+
+    -- * Request Lenses
+    createWorkload_accountIds,
+    createWorkload_applications,
+    createWorkload_architecturalDesign,
+    createWorkload_awsRegions,
+    createWorkload_discoveryConfig,
+    createWorkload_industry,
+    createWorkload_industryType,
+    createWorkload_nonAwsRegions,
+    createWorkload_notes,
+    createWorkload_pillarPriorities,
+    createWorkload_reviewOwner,
+    createWorkload_tags,
+    createWorkload_workloadName,
+    createWorkload_description,
+    createWorkload_environment,
+    createWorkload_lenses,
+    createWorkload_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateWorkloadResponse (..),
+    newCreateWorkloadResponse,
+
+    -- * Response Lenses
+    createWorkloadResponse_workloadArn,
+    createWorkloadResponse_workloadId,
+    createWorkloadResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for workload creation.
+--
+-- /See:/ 'newCreateWorkload' smart constructor.
+data CreateWorkload = CreateWorkload'
+  { accountIds :: Prelude.Maybe [Prelude.Text],
+    -- | List of AppRegistry application ARNs associated to the workload.
+    applications :: Prelude.Maybe [Prelude.Text],
+    architecturalDesign :: Prelude.Maybe Prelude.Text,
+    awsRegions :: Prelude.Maybe [Prelude.Text],
+    -- | Well-Architected discovery configuration settings associated to the
+    -- workload.
+    discoveryConfig :: Prelude.Maybe WorkloadDiscoveryConfig,
+    industry :: Prelude.Maybe Prelude.Text,
+    industryType :: Prelude.Maybe Prelude.Text,
+    nonAwsRegions :: Prelude.Maybe [Prelude.Text],
+    notes :: Prelude.Maybe Prelude.Text,
+    pillarPriorities :: Prelude.Maybe [Prelude.Text],
+    reviewOwner :: Prelude.Maybe Prelude.Text,
+    -- | The tags to be associated with the workload.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    workloadName :: Prelude.Text,
+    description :: Prelude.Text,
+    environment :: WorkloadEnvironment,
+    lenses :: [Prelude.Text],
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateWorkload' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountIds', 'createWorkload_accountIds' - Undocumented member.
+--
+-- 'applications', 'createWorkload_applications' - List of AppRegistry application ARNs associated to the workload.
+--
+-- 'architecturalDesign', 'createWorkload_architecturalDesign' - Undocumented member.
+--
+-- 'awsRegions', 'createWorkload_awsRegions' - Undocumented member.
+--
+-- 'discoveryConfig', 'createWorkload_discoveryConfig' - Well-Architected discovery configuration settings associated to the
+-- workload.
+--
+-- 'industry', 'createWorkload_industry' - Undocumented member.
+--
+-- 'industryType', 'createWorkload_industryType' - Undocumented member.
+--
+-- 'nonAwsRegions', 'createWorkload_nonAwsRegions' - Undocumented member.
+--
+-- 'notes', 'createWorkload_notes' - Undocumented member.
+--
+-- 'pillarPriorities', 'createWorkload_pillarPriorities' - Undocumented member.
+--
+-- 'reviewOwner', 'createWorkload_reviewOwner' - Undocumented member.
+--
+-- 'tags', 'createWorkload_tags' - The tags to be associated with the workload.
+--
+-- 'workloadName', 'createWorkload_workloadName' - Undocumented member.
+--
+-- 'description', 'createWorkload_description' - Undocumented member.
+--
+-- 'environment', 'createWorkload_environment' - Undocumented member.
+--
+-- 'lenses', 'createWorkload_lenses' - Undocumented member.
+--
+-- 'clientRequestToken', 'createWorkload_clientRequestToken' - Undocumented member.
+newCreateWorkload ::
+  -- | 'workloadName'
+  Prelude.Text ->
+  -- | 'description'
+  Prelude.Text ->
+  -- | 'environment'
+  WorkloadEnvironment ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateWorkload
+newCreateWorkload
+  pWorkloadName_
+  pDescription_
+  pEnvironment_
+  pClientRequestToken_ =
+    CreateWorkload'
+      { accountIds = Prelude.Nothing,
+        applications = Prelude.Nothing,
+        architecturalDesign = Prelude.Nothing,
+        awsRegions = Prelude.Nothing,
+        discoveryConfig = Prelude.Nothing,
+        industry = Prelude.Nothing,
+        industryType = Prelude.Nothing,
+        nonAwsRegions = Prelude.Nothing,
+        notes = Prelude.Nothing,
+        pillarPriorities = Prelude.Nothing,
+        reviewOwner = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        workloadName = pWorkloadName_,
+        description = pDescription_,
+        environment = pEnvironment_,
+        lenses = Prelude.mempty,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Undocumented member.
+createWorkload_accountIds :: Lens.Lens' CreateWorkload (Prelude.Maybe [Prelude.Text])
+createWorkload_accountIds = Lens.lens (\CreateWorkload' {accountIds} -> accountIds) (\s@CreateWorkload' {} a -> s {accountIds = a} :: CreateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of AppRegistry application ARNs associated to the workload.
+createWorkload_applications :: Lens.Lens' CreateWorkload (Prelude.Maybe [Prelude.Text])
+createWorkload_applications = Lens.lens (\CreateWorkload' {applications} -> applications) (\s@CreateWorkload' {} a -> s {applications = a} :: CreateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createWorkload_architecturalDesign :: Lens.Lens' CreateWorkload (Prelude.Maybe Prelude.Text)
+createWorkload_architecturalDesign = Lens.lens (\CreateWorkload' {architecturalDesign} -> architecturalDesign) (\s@CreateWorkload' {} a -> s {architecturalDesign = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_awsRegions :: Lens.Lens' CreateWorkload (Prelude.Maybe [Prelude.Text])
+createWorkload_awsRegions = Lens.lens (\CreateWorkload' {awsRegions} -> awsRegions) (\s@CreateWorkload' {} a -> s {awsRegions = a} :: CreateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Well-Architected discovery configuration settings associated to the
+-- workload.
+createWorkload_discoveryConfig :: Lens.Lens' CreateWorkload (Prelude.Maybe WorkloadDiscoveryConfig)
+createWorkload_discoveryConfig = Lens.lens (\CreateWorkload' {discoveryConfig} -> discoveryConfig) (\s@CreateWorkload' {} a -> s {discoveryConfig = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_industry :: Lens.Lens' CreateWorkload (Prelude.Maybe Prelude.Text)
+createWorkload_industry = Lens.lens (\CreateWorkload' {industry} -> industry) (\s@CreateWorkload' {} a -> s {industry = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_industryType :: Lens.Lens' CreateWorkload (Prelude.Maybe Prelude.Text)
+createWorkload_industryType = Lens.lens (\CreateWorkload' {industryType} -> industryType) (\s@CreateWorkload' {} a -> s {industryType = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_nonAwsRegions :: Lens.Lens' CreateWorkload (Prelude.Maybe [Prelude.Text])
+createWorkload_nonAwsRegions = Lens.lens (\CreateWorkload' {nonAwsRegions} -> nonAwsRegions) (\s@CreateWorkload' {} a -> s {nonAwsRegions = a} :: CreateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createWorkload_notes :: Lens.Lens' CreateWorkload (Prelude.Maybe Prelude.Text)
+createWorkload_notes = Lens.lens (\CreateWorkload' {notes} -> notes) (\s@CreateWorkload' {} a -> s {notes = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_pillarPriorities :: Lens.Lens' CreateWorkload (Prelude.Maybe [Prelude.Text])
+createWorkload_pillarPriorities = Lens.lens (\CreateWorkload' {pillarPriorities} -> pillarPriorities) (\s@CreateWorkload' {} a -> s {pillarPriorities = a} :: CreateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createWorkload_reviewOwner :: Lens.Lens' CreateWorkload (Prelude.Maybe Prelude.Text)
+createWorkload_reviewOwner = Lens.lens (\CreateWorkload' {reviewOwner} -> reviewOwner) (\s@CreateWorkload' {} a -> s {reviewOwner = a} :: CreateWorkload)
+
+-- | The tags to be associated with the workload.
+createWorkload_tags :: Lens.Lens' CreateWorkload (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createWorkload_tags = Lens.lens (\CreateWorkload' {tags} -> tags) (\s@CreateWorkload' {} a -> s {tags = a} :: CreateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createWorkload_workloadName :: Lens.Lens' CreateWorkload Prelude.Text
+createWorkload_workloadName = Lens.lens (\CreateWorkload' {workloadName} -> workloadName) (\s@CreateWorkload' {} a -> s {workloadName = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_description :: Lens.Lens' CreateWorkload Prelude.Text
+createWorkload_description = Lens.lens (\CreateWorkload' {description} -> description) (\s@CreateWorkload' {} a -> s {description = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_environment :: Lens.Lens' CreateWorkload WorkloadEnvironment
+createWorkload_environment = Lens.lens (\CreateWorkload' {environment} -> environment) (\s@CreateWorkload' {} a -> s {environment = a} :: CreateWorkload)
+
+-- | Undocumented member.
+createWorkload_lenses :: Lens.Lens' CreateWorkload [Prelude.Text]
+createWorkload_lenses = Lens.lens (\CreateWorkload' {lenses} -> lenses) (\s@CreateWorkload' {} a -> s {lenses = a} :: CreateWorkload) Prelude.. Lens.coerced
+
+-- | Undocumented member.
+createWorkload_clientRequestToken :: Lens.Lens' CreateWorkload Prelude.Text
+createWorkload_clientRequestToken = Lens.lens (\CreateWorkload' {clientRequestToken} -> clientRequestToken) (\s@CreateWorkload' {} a -> s {clientRequestToken = a} :: CreateWorkload)
+
+instance Core.AWSRequest CreateWorkload where
+  type
+    AWSResponse CreateWorkload =
+      CreateWorkloadResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateWorkloadResponse'
+            Prelude.<$> (x Data..?> "WorkloadArn")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateWorkload where
+  hashWithSalt _salt CreateWorkload' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountIds
+      `Prelude.hashWithSalt` applications
+      `Prelude.hashWithSalt` architecturalDesign
+      `Prelude.hashWithSalt` awsRegions
+      `Prelude.hashWithSalt` discoveryConfig
+      `Prelude.hashWithSalt` industry
+      `Prelude.hashWithSalt` industryType
+      `Prelude.hashWithSalt` nonAwsRegions
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` pillarPriorities
+      `Prelude.hashWithSalt` reviewOwner
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` workloadName
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` lenses
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateWorkload where
+  rnf CreateWorkload' {..} =
+    Prelude.rnf accountIds
+      `Prelude.seq` Prelude.rnf applications
+      `Prelude.seq` Prelude.rnf architecturalDesign
+      `Prelude.seq` Prelude.rnf awsRegions
+      `Prelude.seq` Prelude.rnf discoveryConfig
+      `Prelude.seq` Prelude.rnf industry
+      `Prelude.seq` Prelude.rnf industryType
+      `Prelude.seq` Prelude.rnf nonAwsRegions
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf pillarPriorities
+      `Prelude.seq` Prelude.rnf reviewOwner
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf workloadName
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf lenses
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateWorkload where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateWorkload where
+  toJSON CreateWorkload' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AccountIds" Data..=) Prelude.<$> accountIds,
+            ("Applications" Data..=) Prelude.<$> applications,
+            ("ArchitecturalDesign" Data..=)
+              Prelude.<$> architecturalDesign,
+            ("AwsRegions" Data..=) Prelude.<$> awsRegions,
+            ("DiscoveryConfig" Data..=)
+              Prelude.<$> discoveryConfig,
+            ("Industry" Data..=) Prelude.<$> industry,
+            ("IndustryType" Data..=) Prelude.<$> industryType,
+            ("NonAwsRegions" Data..=) Prelude.<$> nonAwsRegions,
+            ("Notes" Data..=) Prelude.<$> notes,
+            ("PillarPriorities" Data..=)
+              Prelude.<$> pillarPriorities,
+            ("ReviewOwner" Data..=) Prelude.<$> reviewOwner,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("WorkloadName" Data..= workloadName),
+            Prelude.Just ("Description" Data..= description),
+            Prelude.Just ("Environment" Data..= environment),
+            Prelude.Just ("Lenses" Data..= lenses),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateWorkload where
+  toPath = Prelude.const "/workloads"
+
+instance Data.ToQuery CreateWorkload where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a create workload call.
+--
+-- /See:/ 'newCreateWorkloadResponse' smart constructor.
+data CreateWorkloadResponse = CreateWorkloadResponse'
+  { workloadArn :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'CreateWorkloadResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadArn', 'createWorkloadResponse_workloadArn' - Undocumented member.
+--
+-- 'workloadId', 'createWorkloadResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'createWorkloadResponse_httpStatus' - The response's http status code.
+newCreateWorkloadResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateWorkloadResponse
+newCreateWorkloadResponse pHttpStatus_ =
+  CreateWorkloadResponse'
+    { workloadArn =
+        Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createWorkloadResponse_workloadArn :: Lens.Lens' CreateWorkloadResponse (Prelude.Maybe Prelude.Text)
+createWorkloadResponse_workloadArn = Lens.lens (\CreateWorkloadResponse' {workloadArn} -> workloadArn) (\s@CreateWorkloadResponse' {} a -> s {workloadArn = a} :: CreateWorkloadResponse)
+
+-- | Undocumented member.
+createWorkloadResponse_workloadId :: Lens.Lens' CreateWorkloadResponse (Prelude.Maybe Prelude.Text)
+createWorkloadResponse_workloadId = Lens.lens (\CreateWorkloadResponse' {workloadId} -> workloadId) (\s@CreateWorkloadResponse' {} a -> s {workloadId = a} :: CreateWorkloadResponse)
+
+-- | The response's http status code.
+createWorkloadResponse_httpStatus :: Lens.Lens' CreateWorkloadResponse Prelude.Int
+createWorkloadResponse_httpStatus = Lens.lens (\CreateWorkloadResponse' {httpStatus} -> httpStatus) (\s@CreateWorkloadResponse' {} a -> s {httpStatus = a} :: CreateWorkloadResponse)
+
+instance Prelude.NFData CreateWorkloadResponse where
+  rnf CreateWorkloadResponse' {..} =
+    Prelude.rnf workloadArn
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/CreateWorkloadShare.hs b/gen/Amazonka/WellArchitected/CreateWorkloadShare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/CreateWorkloadShare.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.CreateWorkloadShare
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a workload share.
+--
+-- The owner of a workload can share it with other Amazon Web Services
+-- accounts and IAM users in the same Amazon Web Services Region. Shared
+-- access to a workload is not removed until the workload invitation is
+-- deleted.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/wellarchitected/latest/userguide/workloads-sharing.html Sharing a Workload>
+-- in the /Well-Architected Tool User Guide/.
+module Amazonka.WellArchitected.CreateWorkloadShare
+  ( -- * Creating a Request
+    CreateWorkloadShare (..),
+    newCreateWorkloadShare,
+
+    -- * Request Lenses
+    createWorkloadShare_workloadId,
+    createWorkloadShare_sharedWith,
+    createWorkloadShare_permissionType,
+    createWorkloadShare_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateWorkloadShareResponse (..),
+    newCreateWorkloadShareResponse,
+
+    -- * Response Lenses
+    createWorkloadShareResponse_shareId,
+    createWorkloadShareResponse_workloadId,
+    createWorkloadShareResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for Create Workload Share
+--
+-- /See:/ 'newCreateWorkloadShare' smart constructor.
+data CreateWorkloadShare = CreateWorkloadShare'
+  { workloadId :: Prelude.Text,
+    sharedWith :: Prelude.Text,
+    permissionType :: PermissionType,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateWorkloadShare' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'createWorkloadShare_workloadId' - Undocumented member.
+--
+-- 'sharedWith', 'createWorkloadShare_sharedWith' - Undocumented member.
+--
+-- 'permissionType', 'createWorkloadShare_permissionType' - Undocumented member.
+--
+-- 'clientRequestToken', 'createWorkloadShare_clientRequestToken' - Undocumented member.
+newCreateWorkloadShare ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'sharedWith'
+  Prelude.Text ->
+  -- | 'permissionType'
+  PermissionType ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateWorkloadShare
+newCreateWorkloadShare
+  pWorkloadId_
+  pSharedWith_
+  pPermissionType_
+  pClientRequestToken_ =
+    CreateWorkloadShare'
+      { workloadId = pWorkloadId_,
+        sharedWith = pSharedWith_,
+        permissionType = pPermissionType_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Undocumented member.
+createWorkloadShare_workloadId :: Lens.Lens' CreateWorkloadShare Prelude.Text
+createWorkloadShare_workloadId = Lens.lens (\CreateWorkloadShare' {workloadId} -> workloadId) (\s@CreateWorkloadShare' {} a -> s {workloadId = a} :: CreateWorkloadShare)
+
+-- | Undocumented member.
+createWorkloadShare_sharedWith :: Lens.Lens' CreateWorkloadShare Prelude.Text
+createWorkloadShare_sharedWith = Lens.lens (\CreateWorkloadShare' {sharedWith} -> sharedWith) (\s@CreateWorkloadShare' {} a -> s {sharedWith = a} :: CreateWorkloadShare)
+
+-- | Undocumented member.
+createWorkloadShare_permissionType :: Lens.Lens' CreateWorkloadShare PermissionType
+createWorkloadShare_permissionType = Lens.lens (\CreateWorkloadShare' {permissionType} -> permissionType) (\s@CreateWorkloadShare' {} a -> s {permissionType = a} :: CreateWorkloadShare)
+
+-- | Undocumented member.
+createWorkloadShare_clientRequestToken :: Lens.Lens' CreateWorkloadShare Prelude.Text
+createWorkloadShare_clientRequestToken = Lens.lens (\CreateWorkloadShare' {clientRequestToken} -> clientRequestToken) (\s@CreateWorkloadShare' {} a -> s {clientRequestToken = a} :: CreateWorkloadShare)
+
+instance Core.AWSRequest CreateWorkloadShare where
+  type
+    AWSResponse CreateWorkloadShare =
+      CreateWorkloadShareResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateWorkloadShareResponse'
+            Prelude.<$> (x Data..?> "ShareId")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateWorkloadShare where
+  hashWithSalt _salt CreateWorkloadShare' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` sharedWith
+      `Prelude.hashWithSalt` permissionType
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateWorkloadShare where
+  rnf CreateWorkloadShare' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf sharedWith
+      `Prelude.seq` Prelude.rnf permissionType
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateWorkloadShare where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateWorkloadShare where
+  toJSON CreateWorkloadShare' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SharedWith" Data..= sharedWith),
+            Prelude.Just
+              ("PermissionType" Data..= permissionType),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateWorkloadShare where
+  toPath CreateWorkloadShare' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId, "/shares"]
+
+instance Data.ToQuery CreateWorkloadShare where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Input for Create Workload Share
+--
+-- /See:/ 'newCreateWorkloadShareResponse' smart constructor.
+data CreateWorkloadShareResponse = CreateWorkloadShareResponse'
+  { shareId :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'CreateWorkloadShareResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareId', 'createWorkloadShareResponse_shareId' - Undocumented member.
+--
+-- 'workloadId', 'createWorkloadShareResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'createWorkloadShareResponse_httpStatus' - The response's http status code.
+newCreateWorkloadShareResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateWorkloadShareResponse
+newCreateWorkloadShareResponse pHttpStatus_ =
+  CreateWorkloadShareResponse'
+    { shareId =
+        Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createWorkloadShareResponse_shareId :: Lens.Lens' CreateWorkloadShareResponse (Prelude.Maybe Prelude.Text)
+createWorkloadShareResponse_shareId = Lens.lens (\CreateWorkloadShareResponse' {shareId} -> shareId) (\s@CreateWorkloadShareResponse' {} a -> s {shareId = a} :: CreateWorkloadShareResponse)
+
+-- | Undocumented member.
+createWorkloadShareResponse_workloadId :: Lens.Lens' CreateWorkloadShareResponse (Prelude.Maybe Prelude.Text)
+createWorkloadShareResponse_workloadId = Lens.lens (\CreateWorkloadShareResponse' {workloadId} -> workloadId) (\s@CreateWorkloadShareResponse' {} a -> s {workloadId = a} :: CreateWorkloadShareResponse)
+
+-- | The response's http status code.
+createWorkloadShareResponse_httpStatus :: Lens.Lens' CreateWorkloadShareResponse Prelude.Int
+createWorkloadShareResponse_httpStatus = Lens.lens (\CreateWorkloadShareResponse' {httpStatus} -> httpStatus) (\s@CreateWorkloadShareResponse' {} a -> s {httpStatus = a} :: CreateWorkloadShareResponse)
+
+instance Prelude.NFData CreateWorkloadShareResponse where
+  rnf CreateWorkloadShareResponse' {..} =
+    Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/DeleteLens.hs b/gen/Amazonka/WellArchitected/DeleteLens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/DeleteLens.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.DeleteLens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete an existing lens.
+--
+-- Only the owner of a lens can delete it. After the lens is deleted,
+-- Amazon Web Services accounts and IAM users that you shared the lens with
+-- can continue to use it, but they will no longer be able to apply it to
+-- new workloads.
+--
+-- __Disclaimer__
+--
+-- By sharing your custom lenses with other Amazon Web Services accounts,
+-- you acknowledge that Amazon Web Services will make your custom lenses
+-- available to those other accounts. Those other accounts may continue to
+-- access and use your shared custom lenses even if you delete the custom
+-- lenses from your own Amazon Web Services account or terminate your
+-- Amazon Web Services account.
+module Amazonka.WellArchitected.DeleteLens
+  ( -- * Creating a Request
+    DeleteLens (..),
+    newDeleteLens,
+
+    -- * Request Lenses
+    deleteLens_lensAlias,
+    deleteLens_clientRequestToken,
+    deleteLens_lensStatus,
+
+    -- * Destructuring the Response
+    DeleteLensResponse (..),
+    newDeleteLensResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newDeleteLens' smart constructor.
+data DeleteLens = DeleteLens'
+  { lensAlias :: Prelude.Text,
+    clientRequestToken :: Prelude.Text,
+    -- | The status of the lens to be deleted.
+    lensStatus :: LensStatusType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLens' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensAlias', 'deleteLens_lensAlias' - Undocumented member.
+--
+-- 'clientRequestToken', 'deleteLens_clientRequestToken' - Undocumented member.
+--
+-- 'lensStatus', 'deleteLens_lensStatus' - The status of the lens to be deleted.
+newDeleteLens ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  -- | 'lensStatus'
+  LensStatusType ->
+  DeleteLens
+newDeleteLens
+  pLensAlias_
+  pClientRequestToken_
+  pLensStatus_ =
+    DeleteLens'
+      { lensAlias = pLensAlias_,
+        clientRequestToken = pClientRequestToken_,
+        lensStatus = pLensStatus_
+      }
+
+-- | Undocumented member.
+deleteLens_lensAlias :: Lens.Lens' DeleteLens Prelude.Text
+deleteLens_lensAlias = Lens.lens (\DeleteLens' {lensAlias} -> lensAlias) (\s@DeleteLens' {} a -> s {lensAlias = a} :: DeleteLens)
+
+-- | Undocumented member.
+deleteLens_clientRequestToken :: Lens.Lens' DeleteLens Prelude.Text
+deleteLens_clientRequestToken = Lens.lens (\DeleteLens' {clientRequestToken} -> clientRequestToken) (\s@DeleteLens' {} a -> s {clientRequestToken = a} :: DeleteLens)
+
+-- | The status of the lens to be deleted.
+deleteLens_lensStatus :: Lens.Lens' DeleteLens LensStatusType
+deleteLens_lensStatus = Lens.lens (\DeleteLens' {lensStatus} -> lensStatus) (\s@DeleteLens' {} a -> s {lensStatus = a} :: DeleteLens)
+
+instance Core.AWSRequest DeleteLens where
+  type AWSResponse DeleteLens = DeleteLensResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response = Response.receiveNull DeleteLensResponse'
+
+instance Prelude.Hashable DeleteLens where
+  hashWithSalt _salt DeleteLens' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` lensStatus
+
+instance Prelude.NFData DeleteLens where
+  rnf DeleteLens' {..} =
+    Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf lensStatus
+
+instance Data.ToHeaders DeleteLens where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteLens where
+  toPath DeleteLens' {..} =
+    Prelude.mconcat ["/lenses/", Data.toBS lensAlias]
+
+instance Data.ToQuery DeleteLens where
+  toQuery DeleteLens' {..} =
+    Prelude.mconcat
+      [ "ClientRequestToken" Data.=: clientRequestToken,
+        "LensStatus" Data.=: lensStatus
+      ]
+
+-- | /See:/ 'newDeleteLensResponse' smart constructor.
+data DeleteLensResponse = DeleteLensResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLensResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteLensResponse ::
+  DeleteLensResponse
+newDeleteLensResponse = DeleteLensResponse'
+
+instance Prelude.NFData DeleteLensResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/DeleteLensShare.hs b/gen/Amazonka/WellArchitected/DeleteLensShare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/DeleteLensShare.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.DeleteLensShare
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a lens share.
+--
+-- After the lens share is deleted, Amazon Web Services accounts, IAM
+-- users, organizations, and organizational units (OUs) that you shared the
+-- lens with can continue to use it, but they will no longer be able to
+-- apply it to new workloads.
+--
+-- __Disclaimer__
+--
+-- By sharing your custom lenses with other Amazon Web Services accounts,
+-- you acknowledge that Amazon Web Services will make your custom lenses
+-- available to those other accounts. Those other accounts may continue to
+-- access and use your shared custom lenses even if you delete the custom
+-- lenses from your own Amazon Web Services account or terminate your
+-- Amazon Web Services account.
+module Amazonka.WellArchitected.DeleteLensShare
+  ( -- * Creating a Request
+    DeleteLensShare (..),
+    newDeleteLensShare,
+
+    -- * Request Lenses
+    deleteLensShare_shareId,
+    deleteLensShare_lensAlias,
+    deleteLensShare_clientRequestToken,
+
+    -- * Destructuring the Response
+    DeleteLensShareResponse (..),
+    newDeleteLensShareResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newDeleteLensShare' smart constructor.
+data DeleteLensShare = DeleteLensShare'
+  { shareId :: Prelude.Text,
+    lensAlias :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLensShare' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareId', 'deleteLensShare_shareId' - Undocumented member.
+--
+-- 'lensAlias', 'deleteLensShare_lensAlias' - Undocumented member.
+--
+-- 'clientRequestToken', 'deleteLensShare_clientRequestToken' - Undocumented member.
+newDeleteLensShare ::
+  -- | 'shareId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  DeleteLensShare
+newDeleteLensShare
+  pShareId_
+  pLensAlias_
+  pClientRequestToken_ =
+    DeleteLensShare'
+      { shareId = pShareId_,
+        lensAlias = pLensAlias_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Undocumented member.
+deleteLensShare_shareId :: Lens.Lens' DeleteLensShare Prelude.Text
+deleteLensShare_shareId = Lens.lens (\DeleteLensShare' {shareId} -> shareId) (\s@DeleteLensShare' {} a -> s {shareId = a} :: DeleteLensShare)
+
+-- | Undocumented member.
+deleteLensShare_lensAlias :: Lens.Lens' DeleteLensShare Prelude.Text
+deleteLensShare_lensAlias = Lens.lens (\DeleteLensShare' {lensAlias} -> lensAlias) (\s@DeleteLensShare' {} a -> s {lensAlias = a} :: DeleteLensShare)
+
+-- | Undocumented member.
+deleteLensShare_clientRequestToken :: Lens.Lens' DeleteLensShare Prelude.Text
+deleteLensShare_clientRequestToken = Lens.lens (\DeleteLensShare' {clientRequestToken} -> clientRequestToken) (\s@DeleteLensShare' {} a -> s {clientRequestToken = a} :: DeleteLensShare)
+
+instance Core.AWSRequest DeleteLensShare where
+  type
+    AWSResponse DeleteLensShare =
+      DeleteLensShareResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteLensShareResponse'
+
+instance Prelude.Hashable DeleteLensShare where
+  hashWithSalt _salt DeleteLensShare' {..} =
+    _salt
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData DeleteLensShare where
+  rnf DeleteLensShare' {..} =
+    Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders DeleteLensShare where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteLensShare where
+  toPath DeleteLensShare' {..} =
+    Prelude.mconcat
+      [ "/lenses/",
+        Data.toBS lensAlias,
+        "/shares/",
+        Data.toBS shareId
+      ]
+
+instance Data.ToQuery DeleteLensShare where
+  toQuery DeleteLensShare' {..} =
+    Prelude.mconcat
+      ["ClientRequestToken" Data.=: clientRequestToken]
+
+-- | /See:/ 'newDeleteLensShareResponse' smart constructor.
+data DeleteLensShareResponse = DeleteLensShareResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLensShareResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteLensShareResponse ::
+  DeleteLensShareResponse
+newDeleteLensShareResponse = DeleteLensShareResponse'
+
+instance Prelude.NFData DeleteLensShareResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/DeleteWorkload.hs b/gen/Amazonka/WellArchitected/DeleteWorkload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/DeleteWorkload.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.DeleteWorkload
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete an existing workload.
+module Amazonka.WellArchitected.DeleteWorkload
+  ( -- * Creating a Request
+    DeleteWorkload (..),
+    newDeleteWorkload,
+
+    -- * Request Lenses
+    deleteWorkload_workloadId,
+    deleteWorkload_clientRequestToken,
+
+    -- * Destructuring the Response
+    DeleteWorkloadResponse (..),
+    newDeleteWorkloadResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for workload deletion.
+--
+-- /See:/ 'newDeleteWorkload' smart constructor.
+data DeleteWorkload = DeleteWorkload'
+  { workloadId :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkload' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'deleteWorkload_workloadId' - Undocumented member.
+--
+-- 'clientRequestToken', 'deleteWorkload_clientRequestToken' - Undocumented member.
+newDeleteWorkload ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  DeleteWorkload
+newDeleteWorkload pWorkloadId_ pClientRequestToken_ =
+  DeleteWorkload'
+    { workloadId = pWorkloadId_,
+      clientRequestToken = pClientRequestToken_
+    }
+
+-- | Undocumented member.
+deleteWorkload_workloadId :: Lens.Lens' DeleteWorkload Prelude.Text
+deleteWorkload_workloadId = Lens.lens (\DeleteWorkload' {workloadId} -> workloadId) (\s@DeleteWorkload' {} a -> s {workloadId = a} :: DeleteWorkload)
+
+-- | Undocumented member.
+deleteWorkload_clientRequestToken :: Lens.Lens' DeleteWorkload Prelude.Text
+deleteWorkload_clientRequestToken = Lens.lens (\DeleteWorkload' {clientRequestToken} -> clientRequestToken) (\s@DeleteWorkload' {} a -> s {clientRequestToken = a} :: DeleteWorkload)
+
+instance Core.AWSRequest DeleteWorkload where
+  type
+    AWSResponse DeleteWorkload =
+      DeleteWorkloadResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteWorkloadResponse'
+
+instance Prelude.Hashable DeleteWorkload where
+  hashWithSalt _salt DeleteWorkload' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData DeleteWorkload where
+  rnf DeleteWorkload' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders DeleteWorkload where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteWorkload where
+  toPath DeleteWorkload' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId]
+
+instance Data.ToQuery DeleteWorkload where
+  toQuery DeleteWorkload' {..} =
+    Prelude.mconcat
+      ["ClientRequestToken" Data.=: clientRequestToken]
+
+-- | /See:/ 'newDeleteWorkloadResponse' smart constructor.
+data DeleteWorkloadResponse = DeleteWorkloadResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkloadResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteWorkloadResponse ::
+  DeleteWorkloadResponse
+newDeleteWorkloadResponse = DeleteWorkloadResponse'
+
+instance Prelude.NFData DeleteWorkloadResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/DeleteWorkloadShare.hs b/gen/Amazonka/WellArchitected/DeleteWorkloadShare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/DeleteWorkloadShare.hs
@@ -0,0 +1,164 @@
+{-# 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.WellArchitected.DeleteWorkloadShare
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a workload share.
+module Amazonka.WellArchitected.DeleteWorkloadShare
+  ( -- * Creating a Request
+    DeleteWorkloadShare (..),
+    newDeleteWorkloadShare,
+
+    -- * Request Lenses
+    deleteWorkloadShare_shareId,
+    deleteWorkloadShare_workloadId,
+    deleteWorkloadShare_clientRequestToken,
+
+    -- * Destructuring the Response
+    DeleteWorkloadShareResponse (..),
+    newDeleteWorkloadShareResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for Delete Workload Share
+--
+-- /See:/ 'newDeleteWorkloadShare' smart constructor.
+data DeleteWorkloadShare = DeleteWorkloadShare'
+  { shareId :: Prelude.Text,
+    workloadId :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkloadShare' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareId', 'deleteWorkloadShare_shareId' - Undocumented member.
+--
+-- 'workloadId', 'deleteWorkloadShare_workloadId' - Undocumented member.
+--
+-- 'clientRequestToken', 'deleteWorkloadShare_clientRequestToken' - Undocumented member.
+newDeleteWorkloadShare ::
+  -- | 'shareId'
+  Prelude.Text ->
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  DeleteWorkloadShare
+newDeleteWorkloadShare
+  pShareId_
+  pWorkloadId_
+  pClientRequestToken_ =
+    DeleteWorkloadShare'
+      { shareId = pShareId_,
+        workloadId = pWorkloadId_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | Undocumented member.
+deleteWorkloadShare_shareId :: Lens.Lens' DeleteWorkloadShare Prelude.Text
+deleteWorkloadShare_shareId = Lens.lens (\DeleteWorkloadShare' {shareId} -> shareId) (\s@DeleteWorkloadShare' {} a -> s {shareId = a} :: DeleteWorkloadShare)
+
+-- | Undocumented member.
+deleteWorkloadShare_workloadId :: Lens.Lens' DeleteWorkloadShare Prelude.Text
+deleteWorkloadShare_workloadId = Lens.lens (\DeleteWorkloadShare' {workloadId} -> workloadId) (\s@DeleteWorkloadShare' {} a -> s {workloadId = a} :: DeleteWorkloadShare)
+
+-- | Undocumented member.
+deleteWorkloadShare_clientRequestToken :: Lens.Lens' DeleteWorkloadShare Prelude.Text
+deleteWorkloadShare_clientRequestToken = Lens.lens (\DeleteWorkloadShare' {clientRequestToken} -> clientRequestToken) (\s@DeleteWorkloadShare' {} a -> s {clientRequestToken = a} :: DeleteWorkloadShare)
+
+instance Core.AWSRequest DeleteWorkloadShare where
+  type
+    AWSResponse DeleteWorkloadShare =
+      DeleteWorkloadShareResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteWorkloadShareResponse'
+
+instance Prelude.Hashable DeleteWorkloadShare where
+  hashWithSalt _salt DeleteWorkloadShare' {..} =
+    _salt
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData DeleteWorkloadShare where
+  rnf DeleteWorkloadShare' {..} =
+    Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders DeleteWorkloadShare where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteWorkloadShare where
+  toPath DeleteWorkloadShare' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/shares/",
+        Data.toBS shareId
+      ]
+
+instance Data.ToQuery DeleteWorkloadShare where
+  toQuery DeleteWorkloadShare' {..} =
+    Prelude.mconcat
+      ["ClientRequestToken" Data.=: clientRequestToken]
+
+-- | /See:/ 'newDeleteWorkloadShareResponse' smart constructor.
+data DeleteWorkloadShareResponse = DeleteWorkloadShareResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkloadShareResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteWorkloadShareResponse ::
+  DeleteWorkloadShareResponse
+newDeleteWorkloadShareResponse =
+  DeleteWorkloadShareResponse'
+
+instance Prelude.NFData DeleteWorkloadShareResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/DisassociateLenses.hs b/gen/Amazonka/WellArchitected/DisassociateLenses.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/DisassociateLenses.hs
@@ -0,0 +1,158 @@
+{-# 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.WellArchitected.DisassociateLenses
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociate a lens from a workload.
+--
+-- Up to 10 lenses can be disassociated from a workload in a single API
+-- operation.
+--
+-- The Amazon Web Services Well-Architected Framework lens
+-- (@wellarchitected@) cannot be removed from a workload.
+module Amazonka.WellArchitected.DisassociateLenses
+  ( -- * Creating a Request
+    DisassociateLenses (..),
+    newDisassociateLenses,
+
+    -- * Request Lenses
+    disassociateLenses_workloadId,
+    disassociateLenses_lensAliases,
+
+    -- * Destructuring the Response
+    DisassociateLensesResponse (..),
+    newDisassociateLensesResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to disassociate lens reviews.
+--
+-- /See:/ 'newDisassociateLenses' smart constructor.
+data DisassociateLenses = DisassociateLenses'
+  { workloadId :: Prelude.Text,
+    lensAliases :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateLenses' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'disassociateLenses_workloadId' - Undocumented member.
+--
+-- 'lensAliases', 'disassociateLenses_lensAliases' - Undocumented member.
+newDisassociateLenses ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAliases'
+  Prelude.NonEmpty Prelude.Text ->
+  DisassociateLenses
+newDisassociateLenses pWorkloadId_ pLensAliases_ =
+  DisassociateLenses'
+    { workloadId = pWorkloadId_,
+      lensAliases = Lens.coerced Lens.# pLensAliases_
+    }
+
+-- | Undocumented member.
+disassociateLenses_workloadId :: Lens.Lens' DisassociateLenses Prelude.Text
+disassociateLenses_workloadId = Lens.lens (\DisassociateLenses' {workloadId} -> workloadId) (\s@DisassociateLenses' {} a -> s {workloadId = a} :: DisassociateLenses)
+
+-- | Undocumented member.
+disassociateLenses_lensAliases :: Lens.Lens' DisassociateLenses (Prelude.NonEmpty Prelude.Text)
+disassociateLenses_lensAliases = Lens.lens (\DisassociateLenses' {lensAliases} -> lensAliases) (\s@DisassociateLenses' {} a -> s {lensAliases = a} :: DisassociateLenses) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DisassociateLenses where
+  type
+    AWSResponse DisassociateLenses =
+      DisassociateLensesResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveNull DisassociateLensesResponse'
+
+instance Prelude.Hashable DisassociateLenses where
+  hashWithSalt _salt DisassociateLenses' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAliases
+
+instance Prelude.NFData DisassociateLenses where
+  rnf DisassociateLenses' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAliases
+
+instance Data.ToHeaders DisassociateLenses where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateLenses where
+  toJSON DisassociateLenses' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("LensAliases" Data..= lensAliases)]
+      )
+
+instance Data.ToPath DisassociateLenses where
+  toPath DisassociateLenses' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/disassociateLenses"
+      ]
+
+instance Data.ToQuery DisassociateLenses where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateLensesResponse' smart constructor.
+data DisassociateLensesResponse = DisassociateLensesResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateLensesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDisassociateLensesResponse ::
+  DisassociateLensesResponse
+newDisassociateLensesResponse =
+  DisassociateLensesResponse'
+
+instance Prelude.NFData DisassociateLensesResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/ExportLens.hs b/gen/Amazonka/WellArchitected/ExportLens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ExportLens.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ExportLens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Export an existing lens.
+--
+-- Lenses are defined in JSON. For more information, see
+-- <https://docs.aws.amazon.com/wellarchitected/latest/userguide/lenses-format-specification.html JSON format specification>
+-- in the /Well-Architected Tool User Guide/. Only the owner of a lens can
+-- export it.
+--
+-- __Disclaimer__
+--
+-- Do not include or gather personal identifiable information (PII) of end
+-- users or other identifiable individuals in or via your custom lenses. If
+-- your custom lens or those shared with you and used in your account do
+-- include or collect PII you are responsible for: ensuring that the
+-- included PII is processed in accordance with applicable law, providing
+-- adequate privacy notices, and obtaining necessary consents for
+-- processing such data.
+module Amazonka.WellArchitected.ExportLens
+  ( -- * Creating a Request
+    ExportLens (..),
+    newExportLens,
+
+    -- * Request Lenses
+    exportLens_lensVersion,
+    exportLens_lensAlias,
+
+    -- * Destructuring the Response
+    ExportLensResponse (..),
+    newExportLensResponse,
+
+    -- * Response Lenses
+    exportLensResponse_lensJSON,
+    exportLensResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newExportLens' smart constructor.
+data ExportLens = ExportLens'
+  { -- | The lens version to be exported.
+    lensVersion :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportLens' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensVersion', 'exportLens_lensVersion' - The lens version to be exported.
+--
+-- 'lensAlias', 'exportLens_lensAlias' - Undocumented member.
+newExportLens ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  ExportLens
+newExportLens pLensAlias_ =
+  ExportLens'
+    { lensVersion = Prelude.Nothing,
+      lensAlias = pLensAlias_
+    }
+
+-- | The lens version to be exported.
+exportLens_lensVersion :: Lens.Lens' ExportLens (Prelude.Maybe Prelude.Text)
+exportLens_lensVersion = Lens.lens (\ExportLens' {lensVersion} -> lensVersion) (\s@ExportLens' {} a -> s {lensVersion = a} :: ExportLens)
+
+-- | Undocumented member.
+exportLens_lensAlias :: Lens.Lens' ExportLens Prelude.Text
+exportLens_lensAlias = Lens.lens (\ExportLens' {lensAlias} -> lensAlias) (\s@ExportLens' {} a -> s {lensAlias = a} :: ExportLens)
+
+instance Core.AWSRequest ExportLens where
+  type AWSResponse ExportLens = ExportLensResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ExportLensResponse'
+            Prelude.<$> (x Data..?> "LensJSON")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ExportLens where
+  hashWithSalt _salt ExportLens' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData ExportLens where
+  rnf ExportLens' {..} =
+    Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders ExportLens where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ExportLens where
+  toPath ExportLens' {..} =
+    Prelude.mconcat
+      ["/lenses/", Data.toBS lensAlias, "/export"]
+
+instance Data.ToQuery ExportLens where
+  toQuery ExportLens' {..} =
+    Prelude.mconcat ["LensVersion" Data.=: lensVersion]
+
+-- | /See:/ 'newExportLensResponse' smart constructor.
+data ExportLensResponse = ExportLensResponse'
+  { -- | The JSON for the lens.
+    lensJSON :: 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 'ExportLensResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensJSON', 'exportLensResponse_lensJSON' - The JSON for the lens.
+--
+-- 'httpStatus', 'exportLensResponse_httpStatus' - The response's http status code.
+newExportLensResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ExportLensResponse
+newExportLensResponse pHttpStatus_ =
+  ExportLensResponse'
+    { lensJSON = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The JSON for the lens.
+exportLensResponse_lensJSON :: Lens.Lens' ExportLensResponse (Prelude.Maybe Prelude.Text)
+exportLensResponse_lensJSON = Lens.lens (\ExportLensResponse' {lensJSON} -> lensJSON) (\s@ExportLensResponse' {} a -> s {lensJSON = a} :: ExportLensResponse)
+
+-- | The response's http status code.
+exportLensResponse_httpStatus :: Lens.Lens' ExportLensResponse Prelude.Int
+exportLensResponse_httpStatus = Lens.lens (\ExportLensResponse' {httpStatus} -> httpStatus) (\s@ExportLensResponse' {} a -> s {httpStatus = a} :: ExportLensResponse)
+
+instance Prelude.NFData ExportLensResponse where
+  rnf ExportLensResponse' {..} =
+    Prelude.rnf lensJSON
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetAnswer.hs b/gen/Amazonka/WellArchitected/GetAnswer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetAnswer.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.WellArchitected.GetAnswer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the answer to a specific question in a workload review.
+module Amazonka.WellArchitected.GetAnswer
+  ( -- * Creating a Request
+    GetAnswer (..),
+    newGetAnswer,
+
+    -- * Request Lenses
+    getAnswer_milestoneNumber,
+    getAnswer_workloadId,
+    getAnswer_lensAlias,
+    getAnswer_questionId,
+
+    -- * Destructuring the Response
+    GetAnswerResponse (..),
+    newGetAnswerResponse,
+
+    -- * Response Lenses
+    getAnswerResponse_answer,
+    getAnswerResponse_lensAlias,
+    getAnswerResponse_lensArn,
+    getAnswerResponse_milestoneNumber,
+    getAnswerResponse_workloadId,
+    getAnswerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to get answer.
+--
+-- /See:/ 'newGetAnswer' smart constructor.
+data GetAnswer = GetAnswer'
+  { milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text,
+    questionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAnswer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneNumber', 'getAnswer_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'getAnswer_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'getAnswer_lensAlias' - Undocumented member.
+--
+-- 'questionId', 'getAnswer_questionId' - Undocumented member.
+newGetAnswer ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'questionId'
+  Prelude.Text ->
+  GetAnswer
+newGetAnswer pWorkloadId_ pLensAlias_ pQuestionId_ =
+  GetAnswer'
+    { milestoneNumber = Prelude.Nothing,
+      workloadId = pWorkloadId_,
+      lensAlias = pLensAlias_,
+      questionId = pQuestionId_
+    }
+
+-- | Undocumented member.
+getAnswer_milestoneNumber :: Lens.Lens' GetAnswer (Prelude.Maybe Prelude.Natural)
+getAnswer_milestoneNumber = Lens.lens (\GetAnswer' {milestoneNumber} -> milestoneNumber) (\s@GetAnswer' {} a -> s {milestoneNumber = a} :: GetAnswer)
+
+-- | Undocumented member.
+getAnswer_workloadId :: Lens.Lens' GetAnswer Prelude.Text
+getAnswer_workloadId = Lens.lens (\GetAnswer' {workloadId} -> workloadId) (\s@GetAnswer' {} a -> s {workloadId = a} :: GetAnswer)
+
+-- | Undocumented member.
+getAnswer_lensAlias :: Lens.Lens' GetAnswer Prelude.Text
+getAnswer_lensAlias = Lens.lens (\GetAnswer' {lensAlias} -> lensAlias) (\s@GetAnswer' {} a -> s {lensAlias = a} :: GetAnswer)
+
+-- | Undocumented member.
+getAnswer_questionId :: Lens.Lens' GetAnswer Prelude.Text
+getAnswer_questionId = Lens.lens (\GetAnswer' {questionId} -> questionId) (\s@GetAnswer' {} a -> s {questionId = a} :: GetAnswer)
+
+instance Core.AWSRequest GetAnswer where
+  type AWSResponse GetAnswer = GetAnswerResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAnswerResponse'
+            Prelude.<$> (x Data..?> "Answer")
+            Prelude.<*> (x Data..?> "LensAlias")
+            Prelude.<*> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetAnswer where
+  hashWithSalt _salt GetAnswer' {..} =
+    _salt
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` questionId
+
+instance Prelude.NFData GetAnswer where
+  rnf GetAnswer' {..} =
+    Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf questionId
+
+instance Data.ToHeaders GetAnswer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetAnswer where
+  toPath GetAnswer' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias,
+        "/answers/",
+        Data.toBS questionId
+      ]
+
+instance Data.ToQuery GetAnswer where
+  toQuery GetAnswer' {..} =
+    Prelude.mconcat
+      ["MilestoneNumber" Data.=: milestoneNumber]
+
+-- | Output of a get answer call.
+--
+-- /See:/ 'newGetAnswerResponse' smart constructor.
+data GetAnswerResponse = GetAnswerResponse'
+  { answer :: Prelude.Maybe Answer,
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: 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 'GetAnswerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'answer', 'getAnswerResponse_answer' - Undocumented member.
+--
+-- 'lensAlias', 'getAnswerResponse_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'getAnswerResponse_lensArn' - The ARN for the lens.
+--
+-- 'milestoneNumber', 'getAnswerResponse_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'getAnswerResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'getAnswerResponse_httpStatus' - The response's http status code.
+newGetAnswerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAnswerResponse
+newGetAnswerResponse pHttpStatus_ =
+  GetAnswerResponse'
+    { answer = Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getAnswerResponse_answer :: Lens.Lens' GetAnswerResponse (Prelude.Maybe Answer)
+getAnswerResponse_answer = Lens.lens (\GetAnswerResponse' {answer} -> answer) (\s@GetAnswerResponse' {} a -> s {answer = a} :: GetAnswerResponse)
+
+-- | Undocumented member.
+getAnswerResponse_lensAlias :: Lens.Lens' GetAnswerResponse (Prelude.Maybe Prelude.Text)
+getAnswerResponse_lensAlias = Lens.lens (\GetAnswerResponse' {lensAlias} -> lensAlias) (\s@GetAnswerResponse' {} a -> s {lensAlias = a} :: GetAnswerResponse)
+
+-- | The ARN for the lens.
+getAnswerResponse_lensArn :: Lens.Lens' GetAnswerResponse (Prelude.Maybe Prelude.Text)
+getAnswerResponse_lensArn = Lens.lens (\GetAnswerResponse' {lensArn} -> lensArn) (\s@GetAnswerResponse' {} a -> s {lensArn = a} :: GetAnswerResponse)
+
+-- | Undocumented member.
+getAnswerResponse_milestoneNumber :: Lens.Lens' GetAnswerResponse (Prelude.Maybe Prelude.Natural)
+getAnswerResponse_milestoneNumber = Lens.lens (\GetAnswerResponse' {milestoneNumber} -> milestoneNumber) (\s@GetAnswerResponse' {} a -> s {milestoneNumber = a} :: GetAnswerResponse)
+
+-- | Undocumented member.
+getAnswerResponse_workloadId :: Lens.Lens' GetAnswerResponse (Prelude.Maybe Prelude.Text)
+getAnswerResponse_workloadId = Lens.lens (\GetAnswerResponse' {workloadId} -> workloadId) (\s@GetAnswerResponse' {} a -> s {workloadId = a} :: GetAnswerResponse)
+
+-- | The response's http status code.
+getAnswerResponse_httpStatus :: Lens.Lens' GetAnswerResponse Prelude.Int
+getAnswerResponse_httpStatus = Lens.lens (\GetAnswerResponse' {httpStatus} -> httpStatus) (\s@GetAnswerResponse' {} a -> s {httpStatus = a} :: GetAnswerResponse)
+
+instance Prelude.NFData GetAnswerResponse where
+  rnf GetAnswerResponse' {..} =
+    Prelude.rnf answer
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetLens.hs b/gen/Amazonka/WellArchitected/GetLens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetLens.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.GetLens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get an existing lens.
+module Amazonka.WellArchitected.GetLens
+  ( -- * Creating a Request
+    GetLens (..),
+    newGetLens,
+
+    -- * Request Lenses
+    getLens_lensVersion,
+    getLens_lensAlias,
+
+    -- * Destructuring the Response
+    GetLensResponse (..),
+    newGetLensResponse,
+
+    -- * Response Lenses
+    getLensResponse_lens,
+    getLensResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newGetLens' smart constructor.
+data GetLens = GetLens'
+  { -- | The lens version to be retrieved.
+    lensVersion :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLens' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensVersion', 'getLens_lensVersion' - The lens version to be retrieved.
+--
+-- 'lensAlias', 'getLens_lensAlias' - Undocumented member.
+newGetLens ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  GetLens
+newGetLens pLensAlias_ =
+  GetLens'
+    { lensVersion = Prelude.Nothing,
+      lensAlias = pLensAlias_
+    }
+
+-- | The lens version to be retrieved.
+getLens_lensVersion :: Lens.Lens' GetLens (Prelude.Maybe Prelude.Text)
+getLens_lensVersion = Lens.lens (\GetLens' {lensVersion} -> lensVersion) (\s@GetLens' {} a -> s {lensVersion = a} :: GetLens)
+
+-- | Undocumented member.
+getLens_lensAlias :: Lens.Lens' GetLens Prelude.Text
+getLens_lensAlias = Lens.lens (\GetLens' {lensAlias} -> lensAlias) (\s@GetLens' {} a -> s {lensAlias = a} :: GetLens)
+
+instance Core.AWSRequest GetLens where
+  type AWSResponse GetLens = GetLensResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLensResponse'
+            Prelude.<$> (x Data..?> "Lens")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLens where
+  hashWithSalt _salt GetLens' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData GetLens where
+  rnf GetLens' {..} =
+    Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders GetLens where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetLens where
+  toPath GetLens' {..} =
+    Prelude.mconcat ["/lenses/", Data.toBS lensAlias]
+
+instance Data.ToQuery GetLens where
+  toQuery GetLens' {..} =
+    Prelude.mconcat ["LensVersion" Data.=: lensVersion]
+
+-- | /See:/ 'newGetLensResponse' smart constructor.
+data GetLensResponse = GetLensResponse'
+  { -- | A lens return object.
+    lens :: Prelude.Maybe Lens,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLensResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lens', 'getLensResponse_lens' - A lens return object.
+--
+-- 'httpStatus', 'getLensResponse_httpStatus' - The response's http status code.
+newGetLensResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLensResponse
+newGetLensResponse pHttpStatus_ =
+  GetLensResponse'
+    { lens = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A lens return object.
+getLensResponse_lens :: Lens.Lens' GetLensResponse (Prelude.Maybe Lens)
+getLensResponse_lens = Lens.lens (\GetLensResponse' {lens} -> lens) (\s@GetLensResponse' {} a -> s {lens = a} :: GetLensResponse)
+
+-- | The response's http status code.
+getLensResponse_httpStatus :: Lens.Lens' GetLensResponse Prelude.Int
+getLensResponse_httpStatus = Lens.lens (\GetLensResponse' {httpStatus} -> httpStatus) (\s@GetLensResponse' {} a -> s {httpStatus = a} :: GetLensResponse)
+
+instance Prelude.NFData GetLensResponse where
+  rnf GetLensResponse' {..} =
+    Prelude.rnf lens
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetLensReview.hs b/gen/Amazonka/WellArchitected/GetLensReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetLensReview.hs
@@ -0,0 +1,217 @@
+{-# 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.WellArchitected.GetLensReview
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get lens review.
+module Amazonka.WellArchitected.GetLensReview
+  ( -- * Creating a Request
+    GetLensReview (..),
+    newGetLensReview,
+
+    -- * Request Lenses
+    getLensReview_milestoneNumber,
+    getLensReview_workloadId,
+    getLensReview_lensAlias,
+
+    -- * Destructuring the Response
+    GetLensReviewResponse (..),
+    newGetLensReviewResponse,
+
+    -- * Response Lenses
+    getLensReviewResponse_lensReview,
+    getLensReviewResponse_milestoneNumber,
+    getLensReviewResponse_workloadId,
+    getLensReviewResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to get lens review.
+--
+-- /See:/ 'newGetLensReview' smart constructor.
+data GetLensReview = GetLensReview'
+  { milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLensReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneNumber', 'getLensReview_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'getLensReview_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'getLensReview_lensAlias' - Undocumented member.
+newGetLensReview ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  GetLensReview
+newGetLensReview pWorkloadId_ pLensAlias_ =
+  GetLensReview'
+    { milestoneNumber = Prelude.Nothing,
+      workloadId = pWorkloadId_,
+      lensAlias = pLensAlias_
+    }
+
+-- | Undocumented member.
+getLensReview_milestoneNumber :: Lens.Lens' GetLensReview (Prelude.Maybe Prelude.Natural)
+getLensReview_milestoneNumber = Lens.lens (\GetLensReview' {milestoneNumber} -> milestoneNumber) (\s@GetLensReview' {} a -> s {milestoneNumber = a} :: GetLensReview)
+
+-- | Undocumented member.
+getLensReview_workloadId :: Lens.Lens' GetLensReview Prelude.Text
+getLensReview_workloadId = Lens.lens (\GetLensReview' {workloadId} -> workloadId) (\s@GetLensReview' {} a -> s {workloadId = a} :: GetLensReview)
+
+-- | Undocumented member.
+getLensReview_lensAlias :: Lens.Lens' GetLensReview Prelude.Text
+getLensReview_lensAlias = Lens.lens (\GetLensReview' {lensAlias} -> lensAlias) (\s@GetLensReview' {} a -> s {lensAlias = a} :: GetLensReview)
+
+instance Core.AWSRequest GetLensReview where
+  type
+    AWSResponse GetLensReview =
+      GetLensReviewResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLensReviewResponse'
+            Prelude.<$> (x Data..?> "LensReview")
+            Prelude.<*> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLensReview where
+  hashWithSalt _salt GetLensReview' {..} =
+    _salt
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData GetLensReview where
+  rnf GetLensReview' {..} =
+    Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders GetLensReview where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetLensReview where
+  toPath GetLensReview' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias
+      ]
+
+instance Data.ToQuery GetLensReview where
+  toQuery GetLensReview' {..} =
+    Prelude.mconcat
+      ["MilestoneNumber" Data.=: milestoneNumber]
+
+-- | Output of a get lens review call.
+--
+-- /See:/ 'newGetLensReviewResponse' smart constructor.
+data GetLensReviewResponse = GetLensReviewResponse'
+  { lensReview :: Prelude.Maybe LensReview,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: 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 'GetLensReviewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensReview', 'getLensReviewResponse_lensReview' - Undocumented member.
+--
+-- 'milestoneNumber', 'getLensReviewResponse_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'getLensReviewResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'getLensReviewResponse_httpStatus' - The response's http status code.
+newGetLensReviewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLensReviewResponse
+newGetLensReviewResponse pHttpStatus_ =
+  GetLensReviewResponse'
+    { lensReview =
+        Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getLensReviewResponse_lensReview :: Lens.Lens' GetLensReviewResponse (Prelude.Maybe LensReview)
+getLensReviewResponse_lensReview = Lens.lens (\GetLensReviewResponse' {lensReview} -> lensReview) (\s@GetLensReviewResponse' {} a -> s {lensReview = a} :: GetLensReviewResponse)
+
+-- | Undocumented member.
+getLensReviewResponse_milestoneNumber :: Lens.Lens' GetLensReviewResponse (Prelude.Maybe Prelude.Natural)
+getLensReviewResponse_milestoneNumber = Lens.lens (\GetLensReviewResponse' {milestoneNumber} -> milestoneNumber) (\s@GetLensReviewResponse' {} a -> s {milestoneNumber = a} :: GetLensReviewResponse)
+
+-- | Undocumented member.
+getLensReviewResponse_workloadId :: Lens.Lens' GetLensReviewResponse (Prelude.Maybe Prelude.Text)
+getLensReviewResponse_workloadId = Lens.lens (\GetLensReviewResponse' {workloadId} -> workloadId) (\s@GetLensReviewResponse' {} a -> s {workloadId = a} :: GetLensReviewResponse)
+
+-- | The response's http status code.
+getLensReviewResponse_httpStatus :: Lens.Lens' GetLensReviewResponse Prelude.Int
+getLensReviewResponse_httpStatus = Lens.lens (\GetLensReviewResponse' {httpStatus} -> httpStatus) (\s@GetLensReviewResponse' {} a -> s {httpStatus = a} :: GetLensReviewResponse)
+
+instance Prelude.NFData GetLensReviewResponse where
+  rnf GetLensReviewResponse' {..} =
+    Prelude.rnf lensReview
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetLensReviewReport.hs b/gen/Amazonka/WellArchitected/GetLensReviewReport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetLensReviewReport.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.GetLensReviewReport
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get lens review report.
+module Amazonka.WellArchitected.GetLensReviewReport
+  ( -- * Creating a Request
+    GetLensReviewReport (..),
+    newGetLensReviewReport,
+
+    -- * Request Lenses
+    getLensReviewReport_milestoneNumber,
+    getLensReviewReport_workloadId,
+    getLensReviewReport_lensAlias,
+
+    -- * Destructuring the Response
+    GetLensReviewReportResponse (..),
+    newGetLensReviewReportResponse,
+
+    -- * Response Lenses
+    getLensReviewReportResponse_lensReviewReport,
+    getLensReviewReportResponse_milestoneNumber,
+    getLensReviewReportResponse_workloadId,
+    getLensReviewReportResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to get lens review report.
+--
+-- /See:/ 'newGetLensReviewReport' smart constructor.
+data GetLensReviewReport = GetLensReviewReport'
+  { milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLensReviewReport' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneNumber', 'getLensReviewReport_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'getLensReviewReport_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'getLensReviewReport_lensAlias' - Undocumented member.
+newGetLensReviewReport ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  GetLensReviewReport
+newGetLensReviewReport pWorkloadId_ pLensAlias_ =
+  GetLensReviewReport'
+    { milestoneNumber =
+        Prelude.Nothing,
+      workloadId = pWorkloadId_,
+      lensAlias = pLensAlias_
+    }
+
+-- | Undocumented member.
+getLensReviewReport_milestoneNumber :: Lens.Lens' GetLensReviewReport (Prelude.Maybe Prelude.Natural)
+getLensReviewReport_milestoneNumber = Lens.lens (\GetLensReviewReport' {milestoneNumber} -> milestoneNumber) (\s@GetLensReviewReport' {} a -> s {milestoneNumber = a} :: GetLensReviewReport)
+
+-- | Undocumented member.
+getLensReviewReport_workloadId :: Lens.Lens' GetLensReviewReport Prelude.Text
+getLensReviewReport_workloadId = Lens.lens (\GetLensReviewReport' {workloadId} -> workloadId) (\s@GetLensReviewReport' {} a -> s {workloadId = a} :: GetLensReviewReport)
+
+-- | Undocumented member.
+getLensReviewReport_lensAlias :: Lens.Lens' GetLensReviewReport Prelude.Text
+getLensReviewReport_lensAlias = Lens.lens (\GetLensReviewReport' {lensAlias} -> lensAlias) (\s@GetLensReviewReport' {} a -> s {lensAlias = a} :: GetLensReviewReport)
+
+instance Core.AWSRequest GetLensReviewReport where
+  type
+    AWSResponse GetLensReviewReport =
+      GetLensReviewReportResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLensReviewReportResponse'
+            Prelude.<$> (x Data..?> "LensReviewReport")
+            Prelude.<*> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLensReviewReport where
+  hashWithSalt _salt GetLensReviewReport' {..} =
+    _salt
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData GetLensReviewReport where
+  rnf GetLensReviewReport' {..} =
+    Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders GetLensReviewReport where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetLensReviewReport where
+  toPath GetLensReviewReport' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias,
+        "/report"
+      ]
+
+instance Data.ToQuery GetLensReviewReport where
+  toQuery GetLensReviewReport' {..} =
+    Prelude.mconcat
+      ["MilestoneNumber" Data.=: milestoneNumber]
+
+-- | Output of a get lens review report call.
+--
+-- /See:/ 'newGetLensReviewReportResponse' smart constructor.
+data GetLensReviewReportResponse = GetLensReviewReportResponse'
+  { lensReviewReport :: Prelude.Maybe LensReviewReport,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    workloadId :: 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 'GetLensReviewReportResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensReviewReport', 'getLensReviewReportResponse_lensReviewReport' - Undocumented member.
+--
+-- 'milestoneNumber', 'getLensReviewReportResponse_milestoneNumber' - Undocumented member.
+--
+-- 'workloadId', 'getLensReviewReportResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'getLensReviewReportResponse_httpStatus' - The response's http status code.
+newGetLensReviewReportResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLensReviewReportResponse
+newGetLensReviewReportResponse pHttpStatus_ =
+  GetLensReviewReportResponse'
+    { lensReviewReport =
+        Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getLensReviewReportResponse_lensReviewReport :: Lens.Lens' GetLensReviewReportResponse (Prelude.Maybe LensReviewReport)
+getLensReviewReportResponse_lensReviewReport = Lens.lens (\GetLensReviewReportResponse' {lensReviewReport} -> lensReviewReport) (\s@GetLensReviewReportResponse' {} a -> s {lensReviewReport = a} :: GetLensReviewReportResponse)
+
+-- | Undocumented member.
+getLensReviewReportResponse_milestoneNumber :: Lens.Lens' GetLensReviewReportResponse (Prelude.Maybe Prelude.Natural)
+getLensReviewReportResponse_milestoneNumber = Lens.lens (\GetLensReviewReportResponse' {milestoneNumber} -> milestoneNumber) (\s@GetLensReviewReportResponse' {} a -> s {milestoneNumber = a} :: GetLensReviewReportResponse)
+
+-- | Undocumented member.
+getLensReviewReportResponse_workloadId :: Lens.Lens' GetLensReviewReportResponse (Prelude.Maybe Prelude.Text)
+getLensReviewReportResponse_workloadId = Lens.lens (\GetLensReviewReportResponse' {workloadId} -> workloadId) (\s@GetLensReviewReportResponse' {} a -> s {workloadId = a} :: GetLensReviewReportResponse)
+
+-- | The response's http status code.
+getLensReviewReportResponse_httpStatus :: Lens.Lens' GetLensReviewReportResponse Prelude.Int
+getLensReviewReportResponse_httpStatus = Lens.lens (\GetLensReviewReportResponse' {httpStatus} -> httpStatus) (\s@GetLensReviewReportResponse' {} a -> s {httpStatus = a} :: GetLensReviewReportResponse)
+
+instance Prelude.NFData GetLensReviewReportResponse where
+  rnf GetLensReviewReportResponse' {..} =
+    Prelude.rnf lensReviewReport
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetLensVersionDifference.hs b/gen/Amazonka/WellArchitected/GetLensVersionDifference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetLensVersionDifference.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.GetLensVersionDifference
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get lens version differences.
+module Amazonka.WellArchitected.GetLensVersionDifference
+  ( -- * Creating a Request
+    GetLensVersionDifference (..),
+    newGetLensVersionDifference,
+
+    -- * Request Lenses
+    getLensVersionDifference_baseLensVersion,
+    getLensVersionDifference_targetLensVersion,
+    getLensVersionDifference_lensAlias,
+
+    -- * Destructuring the Response
+    GetLensVersionDifferenceResponse (..),
+    newGetLensVersionDifferenceResponse,
+
+    -- * Response Lenses
+    getLensVersionDifferenceResponse_baseLensVersion,
+    getLensVersionDifferenceResponse_latestLensVersion,
+    getLensVersionDifferenceResponse_lensAlias,
+    getLensVersionDifferenceResponse_lensArn,
+    getLensVersionDifferenceResponse_targetLensVersion,
+    getLensVersionDifferenceResponse_versionDifferences,
+    getLensVersionDifferenceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newGetLensVersionDifference' smart constructor.
+data GetLensVersionDifference = GetLensVersionDifference'
+  { -- | The base version of the lens.
+    baseLensVersion :: Prelude.Maybe Prelude.Text,
+    -- | The lens version to target a difference for.
+    targetLensVersion :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLensVersionDifference' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'baseLensVersion', 'getLensVersionDifference_baseLensVersion' - The base version of the lens.
+--
+-- 'targetLensVersion', 'getLensVersionDifference_targetLensVersion' - The lens version to target a difference for.
+--
+-- 'lensAlias', 'getLensVersionDifference_lensAlias' - Undocumented member.
+newGetLensVersionDifference ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  GetLensVersionDifference
+newGetLensVersionDifference pLensAlias_ =
+  GetLensVersionDifference'
+    { baseLensVersion =
+        Prelude.Nothing,
+      targetLensVersion = Prelude.Nothing,
+      lensAlias = pLensAlias_
+    }
+
+-- | The base version of the lens.
+getLensVersionDifference_baseLensVersion :: Lens.Lens' GetLensVersionDifference (Prelude.Maybe Prelude.Text)
+getLensVersionDifference_baseLensVersion = Lens.lens (\GetLensVersionDifference' {baseLensVersion} -> baseLensVersion) (\s@GetLensVersionDifference' {} a -> s {baseLensVersion = a} :: GetLensVersionDifference)
+
+-- | The lens version to target a difference for.
+getLensVersionDifference_targetLensVersion :: Lens.Lens' GetLensVersionDifference (Prelude.Maybe Prelude.Text)
+getLensVersionDifference_targetLensVersion = Lens.lens (\GetLensVersionDifference' {targetLensVersion} -> targetLensVersion) (\s@GetLensVersionDifference' {} a -> s {targetLensVersion = a} :: GetLensVersionDifference)
+
+-- | Undocumented member.
+getLensVersionDifference_lensAlias :: Lens.Lens' GetLensVersionDifference Prelude.Text
+getLensVersionDifference_lensAlias = Lens.lens (\GetLensVersionDifference' {lensAlias} -> lensAlias) (\s@GetLensVersionDifference' {} a -> s {lensAlias = a} :: GetLensVersionDifference)
+
+instance Core.AWSRequest GetLensVersionDifference where
+  type
+    AWSResponse GetLensVersionDifference =
+      GetLensVersionDifferenceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLensVersionDifferenceResponse'
+            Prelude.<$> (x Data..?> "BaseLensVersion")
+            Prelude.<*> (x Data..?> "LatestLensVersion")
+            Prelude.<*> (x Data..?> "LensAlias")
+            Prelude.<*> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "TargetLensVersion")
+            Prelude.<*> (x Data..?> "VersionDifferences")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLensVersionDifference where
+  hashWithSalt _salt GetLensVersionDifference' {..} =
+    _salt
+      `Prelude.hashWithSalt` baseLensVersion
+      `Prelude.hashWithSalt` targetLensVersion
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData GetLensVersionDifference where
+  rnf GetLensVersionDifference' {..} =
+    Prelude.rnf baseLensVersion
+      `Prelude.seq` Prelude.rnf targetLensVersion
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders GetLensVersionDifference where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetLensVersionDifference where
+  toPath GetLensVersionDifference' {..} =
+    Prelude.mconcat
+      [ "/lenses/",
+        Data.toBS lensAlias,
+        "/versionDifference"
+      ]
+
+instance Data.ToQuery GetLensVersionDifference where
+  toQuery GetLensVersionDifference' {..} =
+    Prelude.mconcat
+      [ "BaseLensVersion" Data.=: baseLensVersion,
+        "TargetLensVersion" Data.=: targetLensVersion
+      ]
+
+-- | /See:/ 'newGetLensVersionDifferenceResponse' smart constructor.
+data GetLensVersionDifferenceResponse = GetLensVersionDifferenceResponse'
+  { -- | The base version of the lens.
+    baseLensVersion :: Prelude.Maybe Prelude.Text,
+    -- | The latest version of the lens.
+    latestLensVersion :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | The target lens version for the lens.
+    targetLensVersion :: Prelude.Maybe Prelude.Text,
+    versionDifferences :: Prelude.Maybe VersionDifferences,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLensVersionDifferenceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'baseLensVersion', 'getLensVersionDifferenceResponse_baseLensVersion' - The base version of the lens.
+--
+-- 'latestLensVersion', 'getLensVersionDifferenceResponse_latestLensVersion' - The latest version of the lens.
+--
+-- 'lensAlias', 'getLensVersionDifferenceResponse_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'getLensVersionDifferenceResponse_lensArn' - The ARN for the lens.
+--
+-- 'targetLensVersion', 'getLensVersionDifferenceResponse_targetLensVersion' - The target lens version for the lens.
+--
+-- 'versionDifferences', 'getLensVersionDifferenceResponse_versionDifferences' - Undocumented member.
+--
+-- 'httpStatus', 'getLensVersionDifferenceResponse_httpStatus' - The response's http status code.
+newGetLensVersionDifferenceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLensVersionDifferenceResponse
+newGetLensVersionDifferenceResponse pHttpStatus_ =
+  GetLensVersionDifferenceResponse'
+    { baseLensVersion =
+        Prelude.Nothing,
+      latestLensVersion = Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      targetLensVersion = Prelude.Nothing,
+      versionDifferences = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The base version of the lens.
+getLensVersionDifferenceResponse_baseLensVersion :: Lens.Lens' GetLensVersionDifferenceResponse (Prelude.Maybe Prelude.Text)
+getLensVersionDifferenceResponse_baseLensVersion = Lens.lens (\GetLensVersionDifferenceResponse' {baseLensVersion} -> baseLensVersion) (\s@GetLensVersionDifferenceResponse' {} a -> s {baseLensVersion = a} :: GetLensVersionDifferenceResponse)
+
+-- | The latest version of the lens.
+getLensVersionDifferenceResponse_latestLensVersion :: Lens.Lens' GetLensVersionDifferenceResponse (Prelude.Maybe Prelude.Text)
+getLensVersionDifferenceResponse_latestLensVersion = Lens.lens (\GetLensVersionDifferenceResponse' {latestLensVersion} -> latestLensVersion) (\s@GetLensVersionDifferenceResponse' {} a -> s {latestLensVersion = a} :: GetLensVersionDifferenceResponse)
+
+-- | Undocumented member.
+getLensVersionDifferenceResponse_lensAlias :: Lens.Lens' GetLensVersionDifferenceResponse (Prelude.Maybe Prelude.Text)
+getLensVersionDifferenceResponse_lensAlias = Lens.lens (\GetLensVersionDifferenceResponse' {lensAlias} -> lensAlias) (\s@GetLensVersionDifferenceResponse' {} a -> s {lensAlias = a} :: GetLensVersionDifferenceResponse)
+
+-- | The ARN for the lens.
+getLensVersionDifferenceResponse_lensArn :: Lens.Lens' GetLensVersionDifferenceResponse (Prelude.Maybe Prelude.Text)
+getLensVersionDifferenceResponse_lensArn = Lens.lens (\GetLensVersionDifferenceResponse' {lensArn} -> lensArn) (\s@GetLensVersionDifferenceResponse' {} a -> s {lensArn = a} :: GetLensVersionDifferenceResponse)
+
+-- | The target lens version for the lens.
+getLensVersionDifferenceResponse_targetLensVersion :: Lens.Lens' GetLensVersionDifferenceResponse (Prelude.Maybe Prelude.Text)
+getLensVersionDifferenceResponse_targetLensVersion = Lens.lens (\GetLensVersionDifferenceResponse' {targetLensVersion} -> targetLensVersion) (\s@GetLensVersionDifferenceResponse' {} a -> s {targetLensVersion = a} :: GetLensVersionDifferenceResponse)
+
+-- | Undocumented member.
+getLensVersionDifferenceResponse_versionDifferences :: Lens.Lens' GetLensVersionDifferenceResponse (Prelude.Maybe VersionDifferences)
+getLensVersionDifferenceResponse_versionDifferences = Lens.lens (\GetLensVersionDifferenceResponse' {versionDifferences} -> versionDifferences) (\s@GetLensVersionDifferenceResponse' {} a -> s {versionDifferences = a} :: GetLensVersionDifferenceResponse)
+
+-- | The response's http status code.
+getLensVersionDifferenceResponse_httpStatus :: Lens.Lens' GetLensVersionDifferenceResponse Prelude.Int
+getLensVersionDifferenceResponse_httpStatus = Lens.lens (\GetLensVersionDifferenceResponse' {httpStatus} -> httpStatus) (\s@GetLensVersionDifferenceResponse' {} a -> s {httpStatus = a} :: GetLensVersionDifferenceResponse)
+
+instance
+  Prelude.NFData
+    GetLensVersionDifferenceResponse
+  where
+  rnf GetLensVersionDifferenceResponse' {..} =
+    Prelude.rnf baseLensVersion
+      `Prelude.seq` Prelude.rnf latestLensVersion
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf targetLensVersion
+      `Prelude.seq` Prelude.rnf versionDifferences
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetMilestone.hs b/gen/Amazonka/WellArchitected/GetMilestone.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetMilestone.hs
@@ -0,0 +1,190 @@
+{-# 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.WellArchitected.GetMilestone
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get a milestone for an existing workload.
+module Amazonka.WellArchitected.GetMilestone
+  ( -- * Creating a Request
+    GetMilestone (..),
+    newGetMilestone,
+
+    -- * Request Lenses
+    getMilestone_workloadId,
+    getMilestone_milestoneNumber,
+
+    -- * Destructuring the Response
+    GetMilestoneResponse (..),
+    newGetMilestoneResponse,
+
+    -- * Response Lenses
+    getMilestoneResponse_milestone,
+    getMilestoneResponse_workloadId,
+    getMilestoneResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to get a milestone.
+--
+-- /See:/ 'newGetMilestone' smart constructor.
+data GetMilestone = GetMilestone'
+  { workloadId :: Prelude.Text,
+    milestoneNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMilestone' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'getMilestone_workloadId' - Undocumented member.
+--
+-- 'milestoneNumber', 'getMilestone_milestoneNumber' - Undocumented member.
+newGetMilestone ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'milestoneNumber'
+  Prelude.Natural ->
+  GetMilestone
+newGetMilestone pWorkloadId_ pMilestoneNumber_ =
+  GetMilestone'
+    { workloadId = pWorkloadId_,
+      milestoneNumber = pMilestoneNumber_
+    }
+
+-- | Undocumented member.
+getMilestone_workloadId :: Lens.Lens' GetMilestone Prelude.Text
+getMilestone_workloadId = Lens.lens (\GetMilestone' {workloadId} -> workloadId) (\s@GetMilestone' {} a -> s {workloadId = a} :: GetMilestone)
+
+-- | Undocumented member.
+getMilestone_milestoneNumber :: Lens.Lens' GetMilestone Prelude.Natural
+getMilestone_milestoneNumber = Lens.lens (\GetMilestone' {milestoneNumber} -> milestoneNumber) (\s@GetMilestone' {} a -> s {milestoneNumber = a} :: GetMilestone)
+
+instance Core.AWSRequest GetMilestone where
+  type AWSResponse GetMilestone = GetMilestoneResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetMilestoneResponse'
+            Prelude.<$> (x Data..?> "Milestone")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetMilestone where
+  hashWithSalt _salt GetMilestone' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` milestoneNumber
+
+instance Prelude.NFData GetMilestone where
+  rnf GetMilestone' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf milestoneNumber
+
+instance Data.ToHeaders GetMilestone where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetMilestone where
+  toPath GetMilestone' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/milestones/",
+        Data.toBS milestoneNumber
+      ]
+
+instance Data.ToQuery GetMilestone where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a get milestone call.
+--
+-- /See:/ 'newGetMilestoneResponse' smart constructor.
+data GetMilestoneResponse = GetMilestoneResponse'
+  { milestone :: Prelude.Maybe Milestone,
+    workloadId :: 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 'GetMilestoneResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestone', 'getMilestoneResponse_milestone' - Undocumented member.
+--
+-- 'workloadId', 'getMilestoneResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'getMilestoneResponse_httpStatus' - The response's http status code.
+newGetMilestoneResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetMilestoneResponse
+newGetMilestoneResponse pHttpStatus_ =
+  GetMilestoneResponse'
+    { milestone = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getMilestoneResponse_milestone :: Lens.Lens' GetMilestoneResponse (Prelude.Maybe Milestone)
+getMilestoneResponse_milestone = Lens.lens (\GetMilestoneResponse' {milestone} -> milestone) (\s@GetMilestoneResponse' {} a -> s {milestone = a} :: GetMilestoneResponse)
+
+-- | Undocumented member.
+getMilestoneResponse_workloadId :: Lens.Lens' GetMilestoneResponse (Prelude.Maybe Prelude.Text)
+getMilestoneResponse_workloadId = Lens.lens (\GetMilestoneResponse' {workloadId} -> workloadId) (\s@GetMilestoneResponse' {} a -> s {workloadId = a} :: GetMilestoneResponse)
+
+-- | The response's http status code.
+getMilestoneResponse_httpStatus :: Lens.Lens' GetMilestoneResponse Prelude.Int
+getMilestoneResponse_httpStatus = Lens.lens (\GetMilestoneResponse' {httpStatus} -> httpStatus) (\s@GetMilestoneResponse' {} a -> s {httpStatus = a} :: GetMilestoneResponse)
+
+instance Prelude.NFData GetMilestoneResponse where
+  rnf GetMilestoneResponse' {..} =
+    Prelude.rnf milestone
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/GetWorkload.hs b/gen/Amazonka/WellArchitected/GetWorkload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/GetWorkload.hs
@@ -0,0 +1,158 @@
+{-# 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.WellArchitected.GetWorkload
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get an existing workload.
+module Amazonka.WellArchitected.GetWorkload
+  ( -- * Creating a Request
+    GetWorkload (..),
+    newGetWorkload,
+
+    -- * Request Lenses
+    getWorkload_workloadId,
+
+    -- * Destructuring the Response
+    GetWorkloadResponse (..),
+    newGetWorkloadResponse,
+
+    -- * Response Lenses
+    getWorkloadResponse_workload,
+    getWorkloadResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to get a workload.
+--
+-- /See:/ 'newGetWorkload' smart constructor.
+data GetWorkload = GetWorkload'
+  { workloadId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetWorkload' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'getWorkload_workloadId' - Undocumented member.
+newGetWorkload ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  GetWorkload
+newGetWorkload pWorkloadId_ =
+  GetWorkload' {workloadId = pWorkloadId_}
+
+-- | Undocumented member.
+getWorkload_workloadId :: Lens.Lens' GetWorkload Prelude.Text
+getWorkload_workloadId = Lens.lens (\GetWorkload' {workloadId} -> workloadId) (\s@GetWorkload' {} a -> s {workloadId = a} :: GetWorkload)
+
+instance Core.AWSRequest GetWorkload where
+  type AWSResponse GetWorkload = GetWorkloadResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetWorkloadResponse'
+            Prelude.<$> (x Data..?> "Workload")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetWorkload where
+  hashWithSalt _salt GetWorkload' {..} =
+    _salt `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData GetWorkload where
+  rnf GetWorkload' {..} = Prelude.rnf workloadId
+
+instance Data.ToHeaders GetWorkload where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetWorkload where
+  toPath GetWorkload' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId]
+
+instance Data.ToQuery GetWorkload where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a get workload call.
+--
+-- /See:/ 'newGetWorkloadResponse' smart constructor.
+data GetWorkloadResponse = GetWorkloadResponse'
+  { workload :: Prelude.Maybe Workload,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetWorkloadResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workload', 'getWorkloadResponse_workload' - Undocumented member.
+--
+-- 'httpStatus', 'getWorkloadResponse_httpStatus' - The response's http status code.
+newGetWorkloadResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetWorkloadResponse
+newGetWorkloadResponse pHttpStatus_ =
+  GetWorkloadResponse'
+    { workload = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getWorkloadResponse_workload :: Lens.Lens' GetWorkloadResponse (Prelude.Maybe Workload)
+getWorkloadResponse_workload = Lens.lens (\GetWorkloadResponse' {workload} -> workload) (\s@GetWorkloadResponse' {} a -> s {workload = a} :: GetWorkloadResponse)
+
+-- | The response's http status code.
+getWorkloadResponse_httpStatus :: Lens.Lens' GetWorkloadResponse Prelude.Int
+getWorkloadResponse_httpStatus = Lens.lens (\GetWorkloadResponse' {httpStatus} -> httpStatus) (\s@GetWorkloadResponse' {} a -> s {httpStatus = a} :: GetWorkloadResponse)
+
+instance Prelude.NFData GetWorkloadResponse where
+  rnf GetWorkloadResponse' {..} =
+    Prelude.rnf workload
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ImportLens.hs b/gen/Amazonka/WellArchitected/ImportLens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ImportLens.hs
@@ -0,0 +1,237 @@
+{-# 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.WellArchitected.ImportLens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Import a new lens.
+--
+-- The lens cannot be applied to workloads or shared with other Amazon Web
+-- Services accounts until it\'s published with CreateLensVersion
+--
+-- Lenses are defined in JSON. For more information, see
+-- <https://docs.aws.amazon.com/wellarchitected/latest/userguide/lenses-format-specification.html JSON format specification>
+-- in the /Well-Architected Tool User Guide/.
+--
+-- A custom lens cannot exceed 500 KB in size.
+--
+-- __Disclaimer__
+--
+-- Do not include or gather personal identifiable information (PII) of end
+-- users or other identifiable individuals in or via your custom lenses. If
+-- your custom lens or those shared with you and used in your account do
+-- include or collect PII you are responsible for: ensuring that the
+-- included PII is processed in accordance with applicable law, providing
+-- adequate privacy notices, and obtaining necessary consents for
+-- processing such data.
+module Amazonka.WellArchitected.ImportLens
+  ( -- * Creating a Request
+    ImportLens (..),
+    newImportLens,
+
+    -- * Request Lenses
+    importLens_lensAlias,
+    importLens_tags,
+    importLens_jSONString,
+    importLens_clientRequestToken,
+
+    -- * Destructuring the Response
+    ImportLensResponse (..),
+    newImportLensResponse,
+
+    -- * Response Lenses
+    importLensResponse_lensArn,
+    importLensResponse_status,
+    importLensResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newImportLens' smart constructor.
+data ImportLens = ImportLens'
+  { lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | Tags to associate to a lens.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The JSON representation of a lens.
+    jSONString :: Prelude.Text,
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportLens' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensAlias', 'importLens_lensAlias' - Undocumented member.
+--
+-- 'tags', 'importLens_tags' - Tags to associate to a lens.
+--
+-- 'jSONString', 'importLens_jSONString' - The JSON representation of a lens.
+--
+-- 'clientRequestToken', 'importLens_clientRequestToken' - Undocumented member.
+newImportLens ::
+  -- | 'jSONString'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  ImportLens
+newImportLens pJSONString_ pClientRequestToken_ =
+  ImportLens'
+    { lensAlias = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      jSONString = pJSONString_,
+      clientRequestToken = pClientRequestToken_
+    }
+
+-- | Undocumented member.
+importLens_lensAlias :: Lens.Lens' ImportLens (Prelude.Maybe Prelude.Text)
+importLens_lensAlias = Lens.lens (\ImportLens' {lensAlias} -> lensAlias) (\s@ImportLens' {} a -> s {lensAlias = a} :: ImportLens)
+
+-- | Tags to associate to a lens.
+importLens_tags :: Lens.Lens' ImportLens (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+importLens_tags = Lens.lens (\ImportLens' {tags} -> tags) (\s@ImportLens' {} a -> s {tags = a} :: ImportLens) Prelude.. Lens.mapping Lens.coerced
+
+-- | The JSON representation of a lens.
+importLens_jSONString :: Lens.Lens' ImportLens Prelude.Text
+importLens_jSONString = Lens.lens (\ImportLens' {jSONString} -> jSONString) (\s@ImportLens' {} a -> s {jSONString = a} :: ImportLens)
+
+-- | Undocumented member.
+importLens_clientRequestToken :: Lens.Lens' ImportLens Prelude.Text
+importLens_clientRequestToken = Lens.lens (\ImportLens' {clientRequestToken} -> clientRequestToken) (\s@ImportLens' {} a -> s {clientRequestToken = a} :: ImportLens)
+
+instance Core.AWSRequest ImportLens where
+  type AWSResponse ImportLens = ImportLensResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ImportLensResponse'
+            Prelude.<$> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ImportLens where
+  hashWithSalt _salt ImportLens' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` jSONString
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData ImportLens where
+  rnf ImportLens' {..} =
+    Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf jSONString
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders ImportLens where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ImportLens where
+  toJSON ImportLens' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LensAlias" Data..=) Prelude.<$> lensAlias,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("JSONString" Data..= jSONString),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath ImportLens where
+  toPath = Prelude.const "/importLens"
+
+instance Data.ToQuery ImportLens where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newImportLensResponse' smart constructor.
+data ImportLensResponse = ImportLensResponse'
+  { -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | The status of the imported lens.
+    status :: Prelude.Maybe ImportLensStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportLensResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensArn', 'importLensResponse_lensArn' - The ARN for the lens.
+--
+-- 'status', 'importLensResponse_status' - The status of the imported lens.
+--
+-- 'httpStatus', 'importLensResponse_httpStatus' - The response's http status code.
+newImportLensResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ImportLensResponse
+newImportLensResponse pHttpStatus_ =
+  ImportLensResponse'
+    { lensArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN for the lens.
+importLensResponse_lensArn :: Lens.Lens' ImportLensResponse (Prelude.Maybe Prelude.Text)
+importLensResponse_lensArn = Lens.lens (\ImportLensResponse' {lensArn} -> lensArn) (\s@ImportLensResponse' {} a -> s {lensArn = a} :: ImportLensResponse)
+
+-- | The status of the imported lens.
+importLensResponse_status :: Lens.Lens' ImportLensResponse (Prelude.Maybe ImportLensStatus)
+importLensResponse_status = Lens.lens (\ImportLensResponse' {status} -> status) (\s@ImportLensResponse' {} a -> s {status = a} :: ImportLensResponse)
+
+-- | The response's http status code.
+importLensResponse_httpStatus :: Lens.Lens' ImportLensResponse Prelude.Int
+importLensResponse_httpStatus = Lens.lens (\ImportLensResponse' {httpStatus} -> httpStatus) (\s@ImportLensResponse' {} a -> s {httpStatus = a} :: ImportLensResponse)
+
+instance Prelude.NFData ImportLensResponse where
+  rnf ImportLensResponse' {..} =
+    Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/Lens.hs b/gen/Amazonka/WellArchitected/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Lens.hs
@@ -0,0 +1,737 @@
+{-# 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.WellArchitected.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.WellArchitected.Lens
+  ( -- * Operations
+
+    -- ** AssociateLenses
+    associateLenses_workloadId,
+    associateLenses_lensAliases,
+
+    -- ** CreateLensShare
+    createLensShare_lensAlias,
+    createLensShare_sharedWith,
+    createLensShare_clientRequestToken,
+    createLensShareResponse_shareId,
+    createLensShareResponse_httpStatus,
+
+    -- ** CreateLensVersion
+    createLensVersion_isMajorVersion,
+    createLensVersion_lensAlias,
+    createLensVersion_lensVersion,
+    createLensVersion_clientRequestToken,
+    createLensVersionResponse_lensArn,
+    createLensVersionResponse_lensVersion,
+    createLensVersionResponse_httpStatus,
+
+    -- ** CreateMilestone
+    createMilestone_workloadId,
+    createMilestone_milestoneName,
+    createMilestone_clientRequestToken,
+    createMilestoneResponse_milestoneNumber,
+    createMilestoneResponse_workloadId,
+    createMilestoneResponse_httpStatus,
+
+    -- ** CreateWorkload
+    createWorkload_accountIds,
+    createWorkload_applications,
+    createWorkload_architecturalDesign,
+    createWorkload_awsRegions,
+    createWorkload_discoveryConfig,
+    createWorkload_industry,
+    createWorkload_industryType,
+    createWorkload_nonAwsRegions,
+    createWorkload_notes,
+    createWorkload_pillarPriorities,
+    createWorkload_reviewOwner,
+    createWorkload_tags,
+    createWorkload_workloadName,
+    createWorkload_description,
+    createWorkload_environment,
+    createWorkload_lenses,
+    createWorkload_clientRequestToken,
+    createWorkloadResponse_workloadArn,
+    createWorkloadResponse_workloadId,
+    createWorkloadResponse_httpStatus,
+
+    -- ** CreateWorkloadShare
+    createWorkloadShare_workloadId,
+    createWorkloadShare_sharedWith,
+    createWorkloadShare_permissionType,
+    createWorkloadShare_clientRequestToken,
+    createWorkloadShareResponse_shareId,
+    createWorkloadShareResponse_workloadId,
+    createWorkloadShareResponse_httpStatus,
+
+    -- ** DeleteLens
+    deleteLens_lensAlias,
+    deleteLens_clientRequestToken,
+    deleteLens_lensStatus,
+
+    -- ** DeleteLensShare
+    deleteLensShare_shareId,
+    deleteLensShare_lensAlias,
+    deleteLensShare_clientRequestToken,
+
+    -- ** DeleteWorkload
+    deleteWorkload_workloadId,
+    deleteWorkload_clientRequestToken,
+
+    -- ** DeleteWorkloadShare
+    deleteWorkloadShare_shareId,
+    deleteWorkloadShare_workloadId,
+    deleteWorkloadShare_clientRequestToken,
+
+    -- ** DisassociateLenses
+    disassociateLenses_workloadId,
+    disassociateLenses_lensAliases,
+
+    -- ** ExportLens
+    exportLens_lensVersion,
+    exportLens_lensAlias,
+    exportLensResponse_lensJSON,
+    exportLensResponse_httpStatus,
+
+    -- ** GetAnswer
+    getAnswer_milestoneNumber,
+    getAnswer_workloadId,
+    getAnswer_lensAlias,
+    getAnswer_questionId,
+    getAnswerResponse_answer,
+    getAnswerResponse_lensAlias,
+    getAnswerResponse_lensArn,
+    getAnswerResponse_milestoneNumber,
+    getAnswerResponse_workloadId,
+    getAnswerResponse_httpStatus,
+
+    -- ** GetLens
+    getLens_lensVersion,
+    getLens_lensAlias,
+    getLensResponse_lens,
+    getLensResponse_httpStatus,
+
+    -- ** GetLensReview
+    getLensReview_milestoneNumber,
+    getLensReview_workloadId,
+    getLensReview_lensAlias,
+    getLensReviewResponse_lensReview,
+    getLensReviewResponse_milestoneNumber,
+    getLensReviewResponse_workloadId,
+    getLensReviewResponse_httpStatus,
+
+    -- ** GetLensReviewReport
+    getLensReviewReport_milestoneNumber,
+    getLensReviewReport_workloadId,
+    getLensReviewReport_lensAlias,
+    getLensReviewReportResponse_lensReviewReport,
+    getLensReviewReportResponse_milestoneNumber,
+    getLensReviewReportResponse_workloadId,
+    getLensReviewReportResponse_httpStatus,
+
+    -- ** GetLensVersionDifference
+    getLensVersionDifference_baseLensVersion,
+    getLensVersionDifference_targetLensVersion,
+    getLensVersionDifference_lensAlias,
+    getLensVersionDifferenceResponse_baseLensVersion,
+    getLensVersionDifferenceResponse_latestLensVersion,
+    getLensVersionDifferenceResponse_lensAlias,
+    getLensVersionDifferenceResponse_lensArn,
+    getLensVersionDifferenceResponse_targetLensVersion,
+    getLensVersionDifferenceResponse_versionDifferences,
+    getLensVersionDifferenceResponse_httpStatus,
+
+    -- ** GetMilestone
+    getMilestone_workloadId,
+    getMilestone_milestoneNumber,
+    getMilestoneResponse_milestone,
+    getMilestoneResponse_workloadId,
+    getMilestoneResponse_httpStatus,
+
+    -- ** GetWorkload
+    getWorkload_workloadId,
+    getWorkloadResponse_workload,
+    getWorkloadResponse_httpStatus,
+
+    -- ** ImportLens
+    importLens_lensAlias,
+    importLens_tags,
+    importLens_jSONString,
+    importLens_clientRequestToken,
+    importLensResponse_lensArn,
+    importLensResponse_status,
+    importLensResponse_httpStatus,
+
+    -- ** ListAnswers
+    listAnswers_maxResults,
+    listAnswers_milestoneNumber,
+    listAnswers_nextToken,
+    listAnswers_pillarId,
+    listAnswers_workloadId,
+    listAnswers_lensAlias,
+    listAnswersResponse_answerSummaries,
+    listAnswersResponse_lensAlias,
+    listAnswersResponse_lensArn,
+    listAnswersResponse_milestoneNumber,
+    listAnswersResponse_nextToken,
+    listAnswersResponse_workloadId,
+    listAnswersResponse_httpStatus,
+
+    -- ** ListCheckDetails
+    listCheckDetails_maxResults,
+    listCheckDetails_nextToken,
+    listCheckDetails_workloadId,
+    listCheckDetails_lensArn,
+    listCheckDetails_pillarId,
+    listCheckDetails_questionId,
+    listCheckDetails_choiceId,
+    listCheckDetailsResponse_checkDetails,
+    listCheckDetailsResponse_nextToken,
+    listCheckDetailsResponse_httpStatus,
+
+    -- ** ListCheckSummaries
+    listCheckSummaries_maxResults,
+    listCheckSummaries_nextToken,
+    listCheckSummaries_workloadId,
+    listCheckSummaries_lensArn,
+    listCheckSummaries_pillarId,
+    listCheckSummaries_questionId,
+    listCheckSummaries_choiceId,
+    listCheckSummariesResponse_checkSummaries,
+    listCheckSummariesResponse_nextToken,
+    listCheckSummariesResponse_httpStatus,
+
+    -- ** ListLensReviewImprovements
+    listLensReviewImprovements_maxResults,
+    listLensReviewImprovements_milestoneNumber,
+    listLensReviewImprovements_nextToken,
+    listLensReviewImprovements_pillarId,
+    listLensReviewImprovements_workloadId,
+    listLensReviewImprovements_lensAlias,
+    listLensReviewImprovementsResponse_improvementSummaries,
+    listLensReviewImprovementsResponse_lensAlias,
+    listLensReviewImprovementsResponse_lensArn,
+    listLensReviewImprovementsResponse_milestoneNumber,
+    listLensReviewImprovementsResponse_nextToken,
+    listLensReviewImprovementsResponse_workloadId,
+    listLensReviewImprovementsResponse_httpStatus,
+
+    -- ** ListLensReviews
+    listLensReviews_maxResults,
+    listLensReviews_milestoneNumber,
+    listLensReviews_nextToken,
+    listLensReviews_workloadId,
+    listLensReviewsResponse_lensReviewSummaries,
+    listLensReviewsResponse_milestoneNumber,
+    listLensReviewsResponse_nextToken,
+    listLensReviewsResponse_workloadId,
+    listLensReviewsResponse_httpStatus,
+
+    -- ** ListLensShares
+    listLensShares_maxResults,
+    listLensShares_nextToken,
+    listLensShares_sharedWithPrefix,
+    listLensShares_status,
+    listLensShares_lensAlias,
+    listLensSharesResponse_lensShareSummaries,
+    listLensSharesResponse_nextToken,
+    listLensSharesResponse_httpStatus,
+
+    -- ** ListLenses
+    listLenses_lensName,
+    listLenses_lensStatus,
+    listLenses_lensType,
+    listLenses_maxResults,
+    listLenses_nextToken,
+    listLensesResponse_lensSummaries,
+    listLensesResponse_nextToken,
+    listLensesResponse_httpStatus,
+
+    -- ** ListMilestones
+    listMilestones_maxResults,
+    listMilestones_nextToken,
+    listMilestones_workloadId,
+    listMilestonesResponse_milestoneSummaries,
+    listMilestonesResponse_nextToken,
+    listMilestonesResponse_workloadId,
+    listMilestonesResponse_httpStatus,
+
+    -- ** ListNotifications
+    listNotifications_maxResults,
+    listNotifications_nextToken,
+    listNotifications_workloadId,
+    listNotificationsResponse_nextToken,
+    listNotificationsResponse_notificationSummaries,
+    listNotificationsResponse_httpStatus,
+
+    -- ** ListShareInvitations
+    listShareInvitations_lensNamePrefix,
+    listShareInvitations_maxResults,
+    listShareInvitations_nextToken,
+    listShareInvitations_shareResourceType,
+    listShareInvitations_workloadNamePrefix,
+    listShareInvitationsResponse_nextToken,
+    listShareInvitationsResponse_shareInvitationSummaries,
+    listShareInvitationsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_workloadArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** ListWorkloadShares
+    listWorkloadShares_maxResults,
+    listWorkloadShares_nextToken,
+    listWorkloadShares_sharedWithPrefix,
+    listWorkloadShares_status,
+    listWorkloadShares_workloadId,
+    listWorkloadSharesResponse_nextToken,
+    listWorkloadSharesResponse_workloadId,
+    listWorkloadSharesResponse_workloadShareSummaries,
+    listWorkloadSharesResponse_httpStatus,
+
+    -- ** ListWorkloads
+    listWorkloads_maxResults,
+    listWorkloads_nextToken,
+    listWorkloads_workloadNamePrefix,
+    listWorkloadsResponse_nextToken,
+    listWorkloadsResponse_workloadSummaries,
+    listWorkloadsResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_workloadArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_workloadArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateAnswer
+    updateAnswer_choiceUpdates,
+    updateAnswer_isApplicable,
+    updateAnswer_notes,
+    updateAnswer_reason,
+    updateAnswer_selectedChoices,
+    updateAnswer_workloadId,
+    updateAnswer_lensAlias,
+    updateAnswer_questionId,
+    updateAnswerResponse_answer,
+    updateAnswerResponse_lensAlias,
+    updateAnswerResponse_lensArn,
+    updateAnswerResponse_workloadId,
+    updateAnswerResponse_httpStatus,
+
+    -- ** UpdateGlobalSettings
+    updateGlobalSettings_organizationSharingStatus,
+
+    -- ** UpdateLensReview
+    updateLensReview_lensNotes,
+    updateLensReview_pillarNotes,
+    updateLensReview_workloadId,
+    updateLensReview_lensAlias,
+    updateLensReviewResponse_lensReview,
+    updateLensReviewResponse_workloadId,
+    updateLensReviewResponse_httpStatus,
+
+    -- ** UpdateShareInvitation
+    updateShareInvitation_shareInvitationId,
+    updateShareInvitation_shareInvitationAction,
+    updateShareInvitationResponse_shareInvitation,
+    updateShareInvitationResponse_httpStatus,
+
+    -- ** UpdateWorkload
+    updateWorkload_accountIds,
+    updateWorkload_applications,
+    updateWorkload_architecturalDesign,
+    updateWorkload_awsRegions,
+    updateWorkload_description,
+    updateWorkload_discoveryConfig,
+    updateWorkload_environment,
+    updateWorkload_improvementStatus,
+    updateWorkload_industry,
+    updateWorkload_industryType,
+    updateWorkload_isReviewOwnerUpdateAcknowledged,
+    updateWorkload_nonAwsRegions,
+    updateWorkload_notes,
+    updateWorkload_pillarPriorities,
+    updateWorkload_reviewOwner,
+    updateWorkload_workloadName,
+    updateWorkload_workloadId,
+    updateWorkloadResponse_workload,
+    updateWorkloadResponse_httpStatus,
+
+    -- ** UpdateWorkloadShare
+    updateWorkloadShare_shareId,
+    updateWorkloadShare_workloadId,
+    updateWorkloadShare_permissionType,
+    updateWorkloadShareResponse_workloadId,
+    updateWorkloadShareResponse_workloadShare,
+    updateWorkloadShareResponse_httpStatus,
+
+    -- ** UpgradeLensReview
+    upgradeLensReview_clientRequestToken,
+    upgradeLensReview_workloadId,
+    upgradeLensReview_lensAlias,
+    upgradeLensReview_milestoneName,
+
+    -- * Types
+
+    -- ** AdditionalResources
+    additionalResources_content,
+    additionalResources_type,
+
+    -- ** Answer
+    answer_choiceAnswers,
+    answer_choices,
+    answer_helpfulResourceDisplayText,
+    answer_helpfulResourceUrl,
+    answer_improvementPlanUrl,
+    answer_isApplicable,
+    answer_notes,
+    answer_pillarId,
+    answer_questionDescription,
+    answer_questionId,
+    answer_questionTitle,
+    answer_reason,
+    answer_risk,
+    answer_selectedChoices,
+
+    -- ** AnswerSummary
+    answerSummary_choiceAnswerSummaries,
+    answerSummary_choices,
+    answerSummary_isApplicable,
+    answerSummary_pillarId,
+    answerSummary_questionId,
+    answerSummary_questionTitle,
+    answerSummary_reason,
+    answerSummary_risk,
+    answerSummary_selectedChoices,
+
+    -- ** CheckDetail
+    checkDetail_accountId,
+    checkDetail_choiceId,
+    checkDetail_description,
+    checkDetail_flaggedResources,
+    checkDetail_id,
+    checkDetail_lensArn,
+    checkDetail_name,
+    checkDetail_pillarId,
+    checkDetail_provider,
+    checkDetail_questionId,
+    checkDetail_reason,
+    checkDetail_status,
+    checkDetail_updatedAt,
+
+    -- ** CheckSummary
+    checkSummary_accountSummary,
+    checkSummary_choiceId,
+    checkSummary_description,
+    checkSummary_id,
+    checkSummary_lensArn,
+    checkSummary_name,
+    checkSummary_pillarId,
+    checkSummary_provider,
+    checkSummary_questionId,
+    checkSummary_status,
+    checkSummary_updatedAt,
+
+    -- ** Choice
+    choice_additionalResources,
+    choice_choiceId,
+    choice_description,
+    choice_helpfulResource,
+    choice_improvementPlan,
+    choice_title,
+
+    -- ** ChoiceAnswer
+    choiceAnswer_choiceId,
+    choiceAnswer_notes,
+    choiceAnswer_reason,
+    choiceAnswer_status,
+
+    -- ** ChoiceAnswerSummary
+    choiceAnswerSummary_choiceId,
+    choiceAnswerSummary_reason,
+    choiceAnswerSummary_status,
+
+    -- ** ChoiceContent
+    choiceContent_displayText,
+    choiceContent_url,
+
+    -- ** ChoiceImprovementPlan
+    choiceImprovementPlan_choiceId,
+    choiceImprovementPlan_displayText,
+    choiceImprovementPlan_improvementPlanUrl,
+
+    -- ** ChoiceUpdate
+    choiceUpdate_notes,
+    choiceUpdate_reason,
+    choiceUpdate_status,
+
+    -- ** ImprovementSummary
+    improvementSummary_improvementPlanUrl,
+    improvementSummary_improvementPlans,
+    improvementSummary_pillarId,
+    improvementSummary_questionId,
+    improvementSummary_questionTitle,
+    improvementSummary_risk,
+
+    -- ** Lens
+    lens_description,
+    lens_lensArn,
+    lens_lensVersion,
+    lens_name,
+    lens_owner,
+    lens_shareInvitationId,
+    lens_tags,
+
+    -- ** LensReview
+    lensReview_lensAlias,
+    lensReview_lensArn,
+    lensReview_lensName,
+    lensReview_lensStatus,
+    lensReview_lensVersion,
+    lensReview_nextToken,
+    lensReview_notes,
+    lensReview_pillarReviewSummaries,
+    lensReview_riskCounts,
+    lensReview_updatedAt,
+
+    -- ** LensReviewReport
+    lensReviewReport_base64String,
+    lensReviewReport_lensAlias,
+    lensReviewReport_lensArn,
+
+    -- ** LensReviewSummary
+    lensReviewSummary_lensAlias,
+    lensReviewSummary_lensArn,
+    lensReviewSummary_lensName,
+    lensReviewSummary_lensStatus,
+    lensReviewSummary_lensVersion,
+    lensReviewSummary_riskCounts,
+    lensReviewSummary_updatedAt,
+
+    -- ** LensShareSummary
+    lensShareSummary_shareId,
+    lensShareSummary_sharedWith,
+    lensShareSummary_status,
+    lensShareSummary_statusMessage,
+
+    -- ** LensSummary
+    lensSummary_createdAt,
+    lensSummary_description,
+    lensSummary_lensAlias,
+    lensSummary_lensArn,
+    lensSummary_lensName,
+    lensSummary_lensStatus,
+    lensSummary_lensType,
+    lensSummary_lensVersion,
+    lensSummary_owner,
+    lensSummary_updatedAt,
+
+    -- ** LensUpgradeSummary
+    lensUpgradeSummary_currentLensVersion,
+    lensUpgradeSummary_latestLensVersion,
+    lensUpgradeSummary_lensAlias,
+    lensUpgradeSummary_lensArn,
+    lensUpgradeSummary_workloadId,
+    lensUpgradeSummary_workloadName,
+
+    -- ** Milestone
+    milestone_milestoneName,
+    milestone_milestoneNumber,
+    milestone_recordedAt,
+    milestone_workload,
+
+    -- ** MilestoneSummary
+    milestoneSummary_milestoneName,
+    milestoneSummary_milestoneNumber,
+    milestoneSummary_recordedAt,
+    milestoneSummary_workloadSummary,
+
+    -- ** NotificationSummary
+    notificationSummary_lensUpgradeSummary,
+    notificationSummary_type,
+
+    -- ** PillarDifference
+    pillarDifference_differenceStatus,
+    pillarDifference_pillarId,
+    pillarDifference_pillarName,
+    pillarDifference_questionDifferences,
+
+    -- ** PillarReviewSummary
+    pillarReviewSummary_notes,
+    pillarReviewSummary_pillarId,
+    pillarReviewSummary_pillarName,
+    pillarReviewSummary_riskCounts,
+
+    -- ** QuestionDifference
+    questionDifference_differenceStatus,
+    questionDifference_questionId,
+    questionDifference_questionTitle,
+
+    -- ** ShareInvitation
+    shareInvitation_lensAlias,
+    shareInvitation_lensArn,
+    shareInvitation_shareInvitationId,
+    shareInvitation_shareResourceType,
+    shareInvitation_workloadId,
+
+    -- ** ShareInvitationSummary
+    shareInvitationSummary_lensArn,
+    shareInvitationSummary_lensName,
+    shareInvitationSummary_permissionType,
+    shareInvitationSummary_shareInvitationId,
+    shareInvitationSummary_shareResourceType,
+    shareInvitationSummary_sharedBy,
+    shareInvitationSummary_sharedWith,
+    shareInvitationSummary_workloadId,
+    shareInvitationSummary_workloadName,
+
+    -- ** VersionDifferences
+    versionDifferences_pillarDifferences,
+
+    -- ** Workload
+    workload_accountIds,
+    workload_applications,
+    workload_architecturalDesign,
+    workload_awsRegions,
+    workload_description,
+    workload_discoveryConfig,
+    workload_environment,
+    workload_improvementStatus,
+    workload_industry,
+    workload_industryType,
+    workload_isReviewOwnerUpdateAcknowledged,
+    workload_lenses,
+    workload_nonAwsRegions,
+    workload_notes,
+    workload_owner,
+    workload_pillarPriorities,
+    workload_reviewOwner,
+    workload_reviewRestrictionDate,
+    workload_riskCounts,
+    workload_shareInvitationId,
+    workload_tags,
+    workload_updatedAt,
+    workload_workloadArn,
+    workload_workloadId,
+    workload_workloadName,
+
+    -- ** WorkloadDiscoveryConfig
+    workloadDiscoveryConfig_trustedAdvisorIntegrationStatus,
+
+    -- ** WorkloadShare
+    workloadShare_permissionType,
+    workloadShare_shareId,
+    workloadShare_sharedBy,
+    workloadShare_sharedWith,
+    workloadShare_status,
+    workloadShare_workloadId,
+    workloadShare_workloadName,
+
+    -- ** WorkloadShareSummary
+    workloadShareSummary_permissionType,
+    workloadShareSummary_shareId,
+    workloadShareSummary_sharedWith,
+    workloadShareSummary_status,
+    workloadShareSummary_statusMessage,
+
+    -- ** WorkloadSummary
+    workloadSummary_improvementStatus,
+    workloadSummary_lenses,
+    workloadSummary_owner,
+    workloadSummary_riskCounts,
+    workloadSummary_updatedAt,
+    workloadSummary_workloadArn,
+    workloadSummary_workloadId,
+    workloadSummary_workloadName,
+  )
+where
+
+import Amazonka.WellArchitected.AssociateLenses
+import Amazonka.WellArchitected.CreateLensShare
+import Amazonka.WellArchitected.CreateLensVersion
+import Amazonka.WellArchitected.CreateMilestone
+import Amazonka.WellArchitected.CreateWorkload
+import Amazonka.WellArchitected.CreateWorkloadShare
+import Amazonka.WellArchitected.DeleteLens
+import Amazonka.WellArchitected.DeleteLensShare
+import Amazonka.WellArchitected.DeleteWorkload
+import Amazonka.WellArchitected.DeleteWorkloadShare
+import Amazonka.WellArchitected.DisassociateLenses
+import Amazonka.WellArchitected.ExportLens
+import Amazonka.WellArchitected.GetAnswer
+import Amazonka.WellArchitected.GetLens
+import Amazonka.WellArchitected.GetLensReview
+import Amazonka.WellArchitected.GetLensReviewReport
+import Amazonka.WellArchitected.GetLensVersionDifference
+import Amazonka.WellArchitected.GetMilestone
+import Amazonka.WellArchitected.GetWorkload
+import Amazonka.WellArchitected.ImportLens
+import Amazonka.WellArchitected.ListAnswers
+import Amazonka.WellArchitected.ListCheckDetails
+import Amazonka.WellArchitected.ListCheckSummaries
+import Amazonka.WellArchitected.ListLensReviewImprovements
+import Amazonka.WellArchitected.ListLensReviews
+import Amazonka.WellArchitected.ListLensShares
+import Amazonka.WellArchitected.ListLenses
+import Amazonka.WellArchitected.ListMilestones
+import Amazonka.WellArchitected.ListNotifications
+import Amazonka.WellArchitected.ListShareInvitations
+import Amazonka.WellArchitected.ListTagsForResource
+import Amazonka.WellArchitected.ListWorkloadShares
+import Amazonka.WellArchitected.ListWorkloads
+import Amazonka.WellArchitected.TagResource
+import Amazonka.WellArchitected.Types.AdditionalResources
+import Amazonka.WellArchitected.Types.Answer
+import Amazonka.WellArchitected.Types.AnswerSummary
+import Amazonka.WellArchitected.Types.CheckDetail
+import Amazonka.WellArchitected.Types.CheckSummary
+import Amazonka.WellArchitected.Types.Choice
+import Amazonka.WellArchitected.Types.ChoiceAnswer
+import Amazonka.WellArchitected.Types.ChoiceAnswerSummary
+import Amazonka.WellArchitected.Types.ChoiceContent
+import Amazonka.WellArchitected.Types.ChoiceImprovementPlan
+import Amazonka.WellArchitected.Types.ChoiceUpdate
+import Amazonka.WellArchitected.Types.ImprovementSummary
+import Amazonka.WellArchitected.Types.Lens
+import Amazonka.WellArchitected.Types.LensReview
+import Amazonka.WellArchitected.Types.LensReviewReport
+import Amazonka.WellArchitected.Types.LensReviewSummary
+import Amazonka.WellArchitected.Types.LensShareSummary
+import Amazonka.WellArchitected.Types.LensSummary
+import Amazonka.WellArchitected.Types.LensUpgradeSummary
+import Amazonka.WellArchitected.Types.Milestone
+import Amazonka.WellArchitected.Types.MilestoneSummary
+import Amazonka.WellArchitected.Types.NotificationSummary
+import Amazonka.WellArchitected.Types.PillarDifference
+import Amazonka.WellArchitected.Types.PillarReviewSummary
+import Amazonka.WellArchitected.Types.QuestionDifference
+import Amazonka.WellArchitected.Types.ShareInvitation
+import Amazonka.WellArchitected.Types.ShareInvitationSummary
+import Amazonka.WellArchitected.Types.VersionDifferences
+import Amazonka.WellArchitected.Types.Workload
+import Amazonka.WellArchitected.Types.WorkloadDiscoveryConfig
+import Amazonka.WellArchitected.Types.WorkloadShare
+import Amazonka.WellArchitected.Types.WorkloadShareSummary
+import Amazonka.WellArchitected.Types.WorkloadSummary
+import Amazonka.WellArchitected.UntagResource
+import Amazonka.WellArchitected.UpdateAnswer
+import Amazonka.WellArchitected.UpdateGlobalSettings
+import Amazonka.WellArchitected.UpdateLensReview
+import Amazonka.WellArchitected.UpdateShareInvitation
+import Amazonka.WellArchitected.UpdateWorkload
+import Amazonka.WellArchitected.UpdateWorkloadShare
+import Amazonka.WellArchitected.UpgradeLensReview
diff --git a/gen/Amazonka/WellArchitected/ListAnswers.hs b/gen/Amazonka/WellArchitected/ListAnswers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListAnswers.hs
@@ -0,0 +1,291 @@
+{-# 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.WellArchitected.ListAnswers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List of answers.
+module Amazonka.WellArchitected.ListAnswers
+  ( -- * Creating a Request
+    ListAnswers (..),
+    newListAnswers,
+
+    -- * Request Lenses
+    listAnswers_maxResults,
+    listAnswers_milestoneNumber,
+    listAnswers_nextToken,
+    listAnswers_pillarId,
+    listAnswers_workloadId,
+    listAnswers_lensAlias,
+
+    -- * Destructuring the Response
+    ListAnswersResponse (..),
+    newListAnswersResponse,
+
+    -- * Response Lenses
+    listAnswersResponse_answerSummaries,
+    listAnswersResponse_lensAlias,
+    listAnswersResponse_lensArn,
+    listAnswersResponse_milestoneNumber,
+    listAnswersResponse_nextToken,
+    listAnswersResponse_workloadId,
+    listAnswersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to list answers.
+--
+-- /See:/ 'newListAnswers' smart constructor.
+data ListAnswers = ListAnswers'
+  { -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAnswers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAnswers_maxResults' - The maximum number of results to return for this request.
+--
+-- 'milestoneNumber', 'listAnswers_milestoneNumber' - Undocumented member.
+--
+-- 'nextToken', 'listAnswers_nextToken' - Undocumented member.
+--
+-- 'pillarId', 'listAnswers_pillarId' - Undocumented member.
+--
+-- 'workloadId', 'listAnswers_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'listAnswers_lensAlias' - Undocumented member.
+newListAnswers ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  ListAnswers
+newListAnswers pWorkloadId_ pLensAlias_ =
+  ListAnswers'
+    { maxResults = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      workloadId = pWorkloadId_,
+      lensAlias = pLensAlias_
+    }
+
+-- | The maximum number of results to return for this request.
+listAnswers_maxResults :: Lens.Lens' ListAnswers (Prelude.Maybe Prelude.Natural)
+listAnswers_maxResults = Lens.lens (\ListAnswers' {maxResults} -> maxResults) (\s@ListAnswers' {} a -> s {maxResults = a} :: ListAnswers)
+
+-- | Undocumented member.
+listAnswers_milestoneNumber :: Lens.Lens' ListAnswers (Prelude.Maybe Prelude.Natural)
+listAnswers_milestoneNumber = Lens.lens (\ListAnswers' {milestoneNumber} -> milestoneNumber) (\s@ListAnswers' {} a -> s {milestoneNumber = a} :: ListAnswers)
+
+-- | Undocumented member.
+listAnswers_nextToken :: Lens.Lens' ListAnswers (Prelude.Maybe Prelude.Text)
+listAnswers_nextToken = Lens.lens (\ListAnswers' {nextToken} -> nextToken) (\s@ListAnswers' {} a -> s {nextToken = a} :: ListAnswers)
+
+-- | Undocumented member.
+listAnswers_pillarId :: Lens.Lens' ListAnswers (Prelude.Maybe Prelude.Text)
+listAnswers_pillarId = Lens.lens (\ListAnswers' {pillarId} -> pillarId) (\s@ListAnswers' {} a -> s {pillarId = a} :: ListAnswers)
+
+-- | Undocumented member.
+listAnswers_workloadId :: Lens.Lens' ListAnswers Prelude.Text
+listAnswers_workloadId = Lens.lens (\ListAnswers' {workloadId} -> workloadId) (\s@ListAnswers' {} a -> s {workloadId = a} :: ListAnswers)
+
+-- | Undocumented member.
+listAnswers_lensAlias :: Lens.Lens' ListAnswers Prelude.Text
+listAnswers_lensAlias = Lens.lens (\ListAnswers' {lensAlias} -> lensAlias) (\s@ListAnswers' {} a -> s {lensAlias = a} :: ListAnswers)
+
+instance Core.AWSRequest ListAnswers where
+  type AWSResponse ListAnswers = ListAnswersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAnswersResponse'
+            Prelude.<$> ( x
+                            Data..?> "AnswerSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "LensAlias")
+            Prelude.<*> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAnswers where
+  hashWithSalt _salt ListAnswers' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData ListAnswers where
+  rnf ListAnswers' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders ListAnswers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListAnswers where
+  toPath ListAnswers' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias,
+        "/answers"
+      ]
+
+instance Data.ToQuery ListAnswers where
+  toQuery ListAnswers' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "MilestoneNumber" Data.=: milestoneNumber,
+        "NextToken" Data.=: nextToken,
+        "PillarId" Data.=: pillarId
+      ]
+
+-- | Output of a list answers call.
+--
+-- /See:/ 'newListAnswersResponse' smart constructor.
+data ListAnswersResponse = ListAnswersResponse'
+  { answerSummaries :: Prelude.Maybe [AnswerSummary],
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'ListAnswersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'answerSummaries', 'listAnswersResponse_answerSummaries' - Undocumented member.
+--
+-- 'lensAlias', 'listAnswersResponse_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'listAnswersResponse_lensArn' - The ARN for the lens.
+--
+-- 'milestoneNumber', 'listAnswersResponse_milestoneNumber' - Undocumented member.
+--
+-- 'nextToken', 'listAnswersResponse_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listAnswersResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'listAnswersResponse_httpStatus' - The response's http status code.
+newListAnswersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAnswersResponse
+newListAnswersResponse pHttpStatus_ =
+  ListAnswersResponse'
+    { answerSummaries =
+        Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listAnswersResponse_answerSummaries :: Lens.Lens' ListAnswersResponse (Prelude.Maybe [AnswerSummary])
+listAnswersResponse_answerSummaries = Lens.lens (\ListAnswersResponse' {answerSummaries} -> answerSummaries) (\s@ListAnswersResponse' {} a -> s {answerSummaries = a} :: ListAnswersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listAnswersResponse_lensAlias :: Lens.Lens' ListAnswersResponse (Prelude.Maybe Prelude.Text)
+listAnswersResponse_lensAlias = Lens.lens (\ListAnswersResponse' {lensAlias} -> lensAlias) (\s@ListAnswersResponse' {} a -> s {lensAlias = a} :: ListAnswersResponse)
+
+-- | The ARN for the lens.
+listAnswersResponse_lensArn :: Lens.Lens' ListAnswersResponse (Prelude.Maybe Prelude.Text)
+listAnswersResponse_lensArn = Lens.lens (\ListAnswersResponse' {lensArn} -> lensArn) (\s@ListAnswersResponse' {} a -> s {lensArn = a} :: ListAnswersResponse)
+
+-- | Undocumented member.
+listAnswersResponse_milestoneNumber :: Lens.Lens' ListAnswersResponse (Prelude.Maybe Prelude.Natural)
+listAnswersResponse_milestoneNumber = Lens.lens (\ListAnswersResponse' {milestoneNumber} -> milestoneNumber) (\s@ListAnswersResponse' {} a -> s {milestoneNumber = a} :: ListAnswersResponse)
+
+-- | Undocumented member.
+listAnswersResponse_nextToken :: Lens.Lens' ListAnswersResponse (Prelude.Maybe Prelude.Text)
+listAnswersResponse_nextToken = Lens.lens (\ListAnswersResponse' {nextToken} -> nextToken) (\s@ListAnswersResponse' {} a -> s {nextToken = a} :: ListAnswersResponse)
+
+-- | Undocumented member.
+listAnswersResponse_workloadId :: Lens.Lens' ListAnswersResponse (Prelude.Maybe Prelude.Text)
+listAnswersResponse_workloadId = Lens.lens (\ListAnswersResponse' {workloadId} -> workloadId) (\s@ListAnswersResponse' {} a -> s {workloadId = a} :: ListAnswersResponse)
+
+-- | The response's http status code.
+listAnswersResponse_httpStatus :: Lens.Lens' ListAnswersResponse Prelude.Int
+listAnswersResponse_httpStatus = Lens.lens (\ListAnswersResponse' {httpStatus} -> httpStatus) (\s@ListAnswersResponse' {} a -> s {httpStatus = a} :: ListAnswersResponse)
+
+instance Prelude.NFData ListAnswersResponse where
+  rnf ListAnswersResponse' {..} =
+    Prelude.rnf answerSummaries
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListCheckDetails.hs b/gen/Amazonka/WellArchitected/ListCheckDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListCheckDetails.hs
@@ -0,0 +1,270 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListCheckDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List of Trusted Advisor check details by account related to the
+-- workload.
+module Amazonka.WellArchitected.ListCheckDetails
+  ( -- * Creating a Request
+    ListCheckDetails (..),
+    newListCheckDetails,
+
+    -- * Request Lenses
+    listCheckDetails_maxResults,
+    listCheckDetails_nextToken,
+    listCheckDetails_workloadId,
+    listCheckDetails_lensArn,
+    listCheckDetails_pillarId,
+    listCheckDetails_questionId,
+    listCheckDetails_choiceId,
+
+    -- * Destructuring the Response
+    ListCheckDetailsResponse (..),
+    newListCheckDetailsResponse,
+
+    -- * Response Lenses
+    listCheckDetailsResponse_checkDetails,
+    listCheckDetailsResponse_nextToken,
+    listCheckDetailsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newListCheckDetails' smart constructor.
+data ListCheckDetails = ListCheckDetails'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text,
+    -- | Well-Architected Lens ARN.
+    lensArn :: Prelude.Text,
+    pillarId :: Prelude.Text,
+    questionId :: Prelude.Text,
+    choiceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCheckDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCheckDetails_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listCheckDetails_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listCheckDetails_workloadId' - Undocumented member.
+--
+-- 'lensArn', 'listCheckDetails_lensArn' - Well-Architected Lens ARN.
+--
+-- 'pillarId', 'listCheckDetails_pillarId' - Undocumented member.
+--
+-- 'questionId', 'listCheckDetails_questionId' - Undocumented member.
+--
+-- 'choiceId', 'listCheckDetails_choiceId' - Undocumented member.
+newListCheckDetails ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensArn'
+  Prelude.Text ->
+  -- | 'pillarId'
+  Prelude.Text ->
+  -- | 'questionId'
+  Prelude.Text ->
+  -- | 'choiceId'
+  Prelude.Text ->
+  ListCheckDetails
+newListCheckDetails
+  pWorkloadId_
+  pLensArn_
+  pPillarId_
+  pQuestionId_
+  pChoiceId_ =
+    ListCheckDetails'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        workloadId = pWorkloadId_,
+        lensArn = pLensArn_,
+        pillarId = pPillarId_,
+        questionId = pQuestionId_,
+        choiceId = pChoiceId_
+      }
+
+-- | Undocumented member.
+listCheckDetails_maxResults :: Lens.Lens' ListCheckDetails (Prelude.Maybe Prelude.Natural)
+listCheckDetails_maxResults = Lens.lens (\ListCheckDetails' {maxResults} -> maxResults) (\s@ListCheckDetails' {} a -> s {maxResults = a} :: ListCheckDetails)
+
+-- | Undocumented member.
+listCheckDetails_nextToken :: Lens.Lens' ListCheckDetails (Prelude.Maybe Prelude.Text)
+listCheckDetails_nextToken = Lens.lens (\ListCheckDetails' {nextToken} -> nextToken) (\s@ListCheckDetails' {} a -> s {nextToken = a} :: ListCheckDetails)
+
+-- | Undocumented member.
+listCheckDetails_workloadId :: Lens.Lens' ListCheckDetails Prelude.Text
+listCheckDetails_workloadId = Lens.lens (\ListCheckDetails' {workloadId} -> workloadId) (\s@ListCheckDetails' {} a -> s {workloadId = a} :: ListCheckDetails)
+
+-- | Well-Architected Lens ARN.
+listCheckDetails_lensArn :: Lens.Lens' ListCheckDetails Prelude.Text
+listCheckDetails_lensArn = Lens.lens (\ListCheckDetails' {lensArn} -> lensArn) (\s@ListCheckDetails' {} a -> s {lensArn = a} :: ListCheckDetails)
+
+-- | Undocumented member.
+listCheckDetails_pillarId :: Lens.Lens' ListCheckDetails Prelude.Text
+listCheckDetails_pillarId = Lens.lens (\ListCheckDetails' {pillarId} -> pillarId) (\s@ListCheckDetails' {} a -> s {pillarId = a} :: ListCheckDetails)
+
+-- | Undocumented member.
+listCheckDetails_questionId :: Lens.Lens' ListCheckDetails Prelude.Text
+listCheckDetails_questionId = Lens.lens (\ListCheckDetails' {questionId} -> questionId) (\s@ListCheckDetails' {} a -> s {questionId = a} :: ListCheckDetails)
+
+-- | Undocumented member.
+listCheckDetails_choiceId :: Lens.Lens' ListCheckDetails Prelude.Text
+listCheckDetails_choiceId = Lens.lens (\ListCheckDetails' {choiceId} -> choiceId) (\s@ListCheckDetails' {} a -> s {choiceId = a} :: ListCheckDetails)
+
+instance Core.AWSRequest ListCheckDetails where
+  type
+    AWSResponse ListCheckDetails =
+      ListCheckDetailsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCheckDetailsResponse'
+            Prelude.<$> (x Data..?> "CheckDetails" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCheckDetails where
+  hashWithSalt _salt ListCheckDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` choiceId
+
+instance Prelude.NFData ListCheckDetails where
+  rnf ListCheckDetails' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf choiceId
+
+instance Data.ToHeaders ListCheckDetails where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCheckDetails where
+  toJSON ListCheckDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("LensArn" Data..= lensArn),
+            Prelude.Just ("PillarId" Data..= pillarId),
+            Prelude.Just ("QuestionId" Data..= questionId),
+            Prelude.Just ("ChoiceId" Data..= choiceId)
+          ]
+      )
+
+instance Data.ToPath ListCheckDetails where
+  toPath ListCheckDetails' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId, "/checks"]
+
+instance Data.ToQuery ListCheckDetails where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCheckDetailsResponse' smart constructor.
+data ListCheckDetailsResponse = ListCheckDetailsResponse'
+  { -- | The details about the Trusted Advisor checks related to the
+    -- Well-Architected best practice.
+    checkDetails :: Prelude.Maybe [CheckDetail],
+    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 'ListCheckDetailsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'checkDetails', 'listCheckDetailsResponse_checkDetails' - The details about the Trusted Advisor checks related to the
+-- Well-Architected best practice.
+--
+-- 'nextToken', 'listCheckDetailsResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'listCheckDetailsResponse_httpStatus' - The response's http status code.
+newListCheckDetailsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCheckDetailsResponse
+newListCheckDetailsResponse pHttpStatus_ =
+  ListCheckDetailsResponse'
+    { checkDetails =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The details about the Trusted Advisor checks related to the
+-- Well-Architected best practice.
+listCheckDetailsResponse_checkDetails :: Lens.Lens' ListCheckDetailsResponse (Prelude.Maybe [CheckDetail])
+listCheckDetailsResponse_checkDetails = Lens.lens (\ListCheckDetailsResponse' {checkDetails} -> checkDetails) (\s@ListCheckDetailsResponse' {} a -> s {checkDetails = a} :: ListCheckDetailsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listCheckDetailsResponse_nextToken :: Lens.Lens' ListCheckDetailsResponse (Prelude.Maybe Prelude.Text)
+listCheckDetailsResponse_nextToken = Lens.lens (\ListCheckDetailsResponse' {nextToken} -> nextToken) (\s@ListCheckDetailsResponse' {} a -> s {nextToken = a} :: ListCheckDetailsResponse)
+
+-- | The response's http status code.
+listCheckDetailsResponse_httpStatus :: Lens.Lens' ListCheckDetailsResponse Prelude.Int
+listCheckDetailsResponse_httpStatus = Lens.lens (\ListCheckDetailsResponse' {httpStatus} -> httpStatus) (\s@ListCheckDetailsResponse' {} a -> s {httpStatus = a} :: ListCheckDetailsResponse)
+
+instance Prelude.NFData ListCheckDetailsResponse where
+  rnf ListCheckDetailsResponse' {..} =
+    Prelude.rnf checkDetails
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListCheckSummaries.hs b/gen/Amazonka/WellArchitected/ListCheckSummaries.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListCheckSummaries.hs
@@ -0,0 +1,273 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListCheckSummaries
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List of Trusted Advisor checks summarized for all accounts related to
+-- the workload.
+module Amazonka.WellArchitected.ListCheckSummaries
+  ( -- * Creating a Request
+    ListCheckSummaries (..),
+    newListCheckSummaries,
+
+    -- * Request Lenses
+    listCheckSummaries_maxResults,
+    listCheckSummaries_nextToken,
+    listCheckSummaries_workloadId,
+    listCheckSummaries_lensArn,
+    listCheckSummaries_pillarId,
+    listCheckSummaries_questionId,
+    listCheckSummaries_choiceId,
+
+    -- * Destructuring the Response
+    ListCheckSummariesResponse (..),
+    newListCheckSummariesResponse,
+
+    -- * Response Lenses
+    listCheckSummariesResponse_checkSummaries,
+    listCheckSummariesResponse_nextToken,
+    listCheckSummariesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newListCheckSummaries' smart constructor.
+data ListCheckSummaries = ListCheckSummaries'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text,
+    -- | Well-Architected Lens ARN.
+    lensArn :: Prelude.Text,
+    pillarId :: Prelude.Text,
+    questionId :: Prelude.Text,
+    choiceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCheckSummaries' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCheckSummaries_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listCheckSummaries_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listCheckSummaries_workloadId' - Undocumented member.
+--
+-- 'lensArn', 'listCheckSummaries_lensArn' - Well-Architected Lens ARN.
+--
+-- 'pillarId', 'listCheckSummaries_pillarId' - Undocumented member.
+--
+-- 'questionId', 'listCheckSummaries_questionId' - Undocumented member.
+--
+-- 'choiceId', 'listCheckSummaries_choiceId' - Undocumented member.
+newListCheckSummaries ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensArn'
+  Prelude.Text ->
+  -- | 'pillarId'
+  Prelude.Text ->
+  -- | 'questionId'
+  Prelude.Text ->
+  -- | 'choiceId'
+  Prelude.Text ->
+  ListCheckSummaries
+newListCheckSummaries
+  pWorkloadId_
+  pLensArn_
+  pPillarId_
+  pQuestionId_
+  pChoiceId_ =
+    ListCheckSummaries'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        workloadId = pWorkloadId_,
+        lensArn = pLensArn_,
+        pillarId = pPillarId_,
+        questionId = pQuestionId_,
+        choiceId = pChoiceId_
+      }
+
+-- | Undocumented member.
+listCheckSummaries_maxResults :: Lens.Lens' ListCheckSummaries (Prelude.Maybe Prelude.Natural)
+listCheckSummaries_maxResults = Lens.lens (\ListCheckSummaries' {maxResults} -> maxResults) (\s@ListCheckSummaries' {} a -> s {maxResults = a} :: ListCheckSummaries)
+
+-- | Undocumented member.
+listCheckSummaries_nextToken :: Lens.Lens' ListCheckSummaries (Prelude.Maybe Prelude.Text)
+listCheckSummaries_nextToken = Lens.lens (\ListCheckSummaries' {nextToken} -> nextToken) (\s@ListCheckSummaries' {} a -> s {nextToken = a} :: ListCheckSummaries)
+
+-- | Undocumented member.
+listCheckSummaries_workloadId :: Lens.Lens' ListCheckSummaries Prelude.Text
+listCheckSummaries_workloadId = Lens.lens (\ListCheckSummaries' {workloadId} -> workloadId) (\s@ListCheckSummaries' {} a -> s {workloadId = a} :: ListCheckSummaries)
+
+-- | Well-Architected Lens ARN.
+listCheckSummaries_lensArn :: Lens.Lens' ListCheckSummaries Prelude.Text
+listCheckSummaries_lensArn = Lens.lens (\ListCheckSummaries' {lensArn} -> lensArn) (\s@ListCheckSummaries' {} a -> s {lensArn = a} :: ListCheckSummaries)
+
+-- | Undocumented member.
+listCheckSummaries_pillarId :: Lens.Lens' ListCheckSummaries Prelude.Text
+listCheckSummaries_pillarId = Lens.lens (\ListCheckSummaries' {pillarId} -> pillarId) (\s@ListCheckSummaries' {} a -> s {pillarId = a} :: ListCheckSummaries)
+
+-- | Undocumented member.
+listCheckSummaries_questionId :: Lens.Lens' ListCheckSummaries Prelude.Text
+listCheckSummaries_questionId = Lens.lens (\ListCheckSummaries' {questionId} -> questionId) (\s@ListCheckSummaries' {} a -> s {questionId = a} :: ListCheckSummaries)
+
+-- | Undocumented member.
+listCheckSummaries_choiceId :: Lens.Lens' ListCheckSummaries Prelude.Text
+listCheckSummaries_choiceId = Lens.lens (\ListCheckSummaries' {choiceId} -> choiceId) (\s@ListCheckSummaries' {} a -> s {choiceId = a} :: ListCheckSummaries)
+
+instance Core.AWSRequest ListCheckSummaries where
+  type
+    AWSResponse ListCheckSummaries =
+      ListCheckSummariesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCheckSummariesResponse'
+            Prelude.<$> (x Data..?> "CheckSummaries" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCheckSummaries where
+  hashWithSalt _salt ListCheckSummaries' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` choiceId
+
+instance Prelude.NFData ListCheckSummaries where
+  rnf ListCheckSummaries' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf choiceId
+
+instance Data.ToHeaders ListCheckSummaries where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCheckSummaries where
+  toJSON ListCheckSummaries' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("LensArn" Data..= lensArn),
+            Prelude.Just ("PillarId" Data..= pillarId),
+            Prelude.Just ("QuestionId" Data..= questionId),
+            Prelude.Just ("ChoiceId" Data..= choiceId)
+          ]
+      )
+
+instance Data.ToPath ListCheckSummaries where
+  toPath ListCheckSummaries' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/checkSummaries"
+      ]
+
+instance Data.ToQuery ListCheckSummaries where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCheckSummariesResponse' smart constructor.
+data ListCheckSummariesResponse = ListCheckSummariesResponse'
+  { -- | List of Trusted Advisor summaries related to the Well-Architected best
+    -- practice.
+    checkSummaries :: Prelude.Maybe [CheckSummary],
+    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 'ListCheckSummariesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'checkSummaries', 'listCheckSummariesResponse_checkSummaries' - List of Trusted Advisor summaries related to the Well-Architected best
+-- practice.
+--
+-- 'nextToken', 'listCheckSummariesResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'listCheckSummariesResponse_httpStatus' - The response's http status code.
+newListCheckSummariesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCheckSummariesResponse
+newListCheckSummariesResponse pHttpStatus_ =
+  ListCheckSummariesResponse'
+    { checkSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of Trusted Advisor summaries related to the Well-Architected best
+-- practice.
+listCheckSummariesResponse_checkSummaries :: Lens.Lens' ListCheckSummariesResponse (Prelude.Maybe [CheckSummary])
+listCheckSummariesResponse_checkSummaries = Lens.lens (\ListCheckSummariesResponse' {checkSummaries} -> checkSummaries) (\s@ListCheckSummariesResponse' {} a -> s {checkSummaries = a} :: ListCheckSummariesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listCheckSummariesResponse_nextToken :: Lens.Lens' ListCheckSummariesResponse (Prelude.Maybe Prelude.Text)
+listCheckSummariesResponse_nextToken = Lens.lens (\ListCheckSummariesResponse' {nextToken} -> nextToken) (\s@ListCheckSummariesResponse' {} a -> s {nextToken = a} :: ListCheckSummariesResponse)
+
+-- | The response's http status code.
+listCheckSummariesResponse_httpStatus :: Lens.Lens' ListCheckSummariesResponse Prelude.Int
+listCheckSummariesResponse_httpStatus = Lens.lens (\ListCheckSummariesResponse' {httpStatus} -> httpStatus) (\s@ListCheckSummariesResponse' {} a -> s {httpStatus = a} :: ListCheckSummariesResponse)
+
+instance Prelude.NFData ListCheckSummariesResponse where
+  rnf ListCheckSummariesResponse' {..} =
+    Prelude.rnf checkSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListLensReviewImprovements.hs b/gen/Amazonka/WellArchitected/ListLensReviewImprovements.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListLensReviewImprovements.hs
@@ -0,0 +1,299 @@
+{-# 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.WellArchitected.ListLensReviewImprovements
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List lens review improvements.
+module Amazonka.WellArchitected.ListLensReviewImprovements
+  ( -- * Creating a Request
+    ListLensReviewImprovements (..),
+    newListLensReviewImprovements,
+
+    -- * Request Lenses
+    listLensReviewImprovements_maxResults,
+    listLensReviewImprovements_milestoneNumber,
+    listLensReviewImprovements_nextToken,
+    listLensReviewImprovements_pillarId,
+    listLensReviewImprovements_workloadId,
+    listLensReviewImprovements_lensAlias,
+
+    -- * Destructuring the Response
+    ListLensReviewImprovementsResponse (..),
+    newListLensReviewImprovementsResponse,
+
+    -- * Response Lenses
+    listLensReviewImprovementsResponse_improvementSummaries,
+    listLensReviewImprovementsResponse_lensAlias,
+    listLensReviewImprovementsResponse_lensArn,
+    listLensReviewImprovementsResponse_milestoneNumber,
+    listLensReviewImprovementsResponse_nextToken,
+    listLensReviewImprovementsResponse_workloadId,
+    listLensReviewImprovementsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to list lens review improvements.
+--
+-- /See:/ 'newListLensReviewImprovements' smart constructor.
+data ListLensReviewImprovements = ListLensReviewImprovements'
+  { -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLensReviewImprovements' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listLensReviewImprovements_maxResults' - The maximum number of results to return for this request.
+--
+-- 'milestoneNumber', 'listLensReviewImprovements_milestoneNumber' - Undocumented member.
+--
+-- 'nextToken', 'listLensReviewImprovements_nextToken' - Undocumented member.
+--
+-- 'pillarId', 'listLensReviewImprovements_pillarId' - Undocumented member.
+--
+-- 'workloadId', 'listLensReviewImprovements_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'listLensReviewImprovements_lensAlias' - Undocumented member.
+newListLensReviewImprovements ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  ListLensReviewImprovements
+newListLensReviewImprovements
+  pWorkloadId_
+  pLensAlias_ =
+    ListLensReviewImprovements'
+      { maxResults =
+          Prelude.Nothing,
+        milestoneNumber = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        pillarId = Prelude.Nothing,
+        workloadId = pWorkloadId_,
+        lensAlias = pLensAlias_
+      }
+
+-- | The maximum number of results to return for this request.
+listLensReviewImprovements_maxResults :: Lens.Lens' ListLensReviewImprovements (Prelude.Maybe Prelude.Natural)
+listLensReviewImprovements_maxResults = Lens.lens (\ListLensReviewImprovements' {maxResults} -> maxResults) (\s@ListLensReviewImprovements' {} a -> s {maxResults = a} :: ListLensReviewImprovements)
+
+-- | Undocumented member.
+listLensReviewImprovements_milestoneNumber :: Lens.Lens' ListLensReviewImprovements (Prelude.Maybe Prelude.Natural)
+listLensReviewImprovements_milestoneNumber = Lens.lens (\ListLensReviewImprovements' {milestoneNumber} -> milestoneNumber) (\s@ListLensReviewImprovements' {} a -> s {milestoneNumber = a} :: ListLensReviewImprovements)
+
+-- | Undocumented member.
+listLensReviewImprovements_nextToken :: Lens.Lens' ListLensReviewImprovements (Prelude.Maybe Prelude.Text)
+listLensReviewImprovements_nextToken = Lens.lens (\ListLensReviewImprovements' {nextToken} -> nextToken) (\s@ListLensReviewImprovements' {} a -> s {nextToken = a} :: ListLensReviewImprovements)
+
+-- | Undocumented member.
+listLensReviewImprovements_pillarId :: Lens.Lens' ListLensReviewImprovements (Prelude.Maybe Prelude.Text)
+listLensReviewImprovements_pillarId = Lens.lens (\ListLensReviewImprovements' {pillarId} -> pillarId) (\s@ListLensReviewImprovements' {} a -> s {pillarId = a} :: ListLensReviewImprovements)
+
+-- | Undocumented member.
+listLensReviewImprovements_workloadId :: Lens.Lens' ListLensReviewImprovements Prelude.Text
+listLensReviewImprovements_workloadId = Lens.lens (\ListLensReviewImprovements' {workloadId} -> workloadId) (\s@ListLensReviewImprovements' {} a -> s {workloadId = a} :: ListLensReviewImprovements)
+
+-- | Undocumented member.
+listLensReviewImprovements_lensAlias :: Lens.Lens' ListLensReviewImprovements Prelude.Text
+listLensReviewImprovements_lensAlias = Lens.lens (\ListLensReviewImprovements' {lensAlias} -> lensAlias) (\s@ListLensReviewImprovements' {} a -> s {lensAlias = a} :: ListLensReviewImprovements)
+
+instance Core.AWSRequest ListLensReviewImprovements where
+  type
+    AWSResponse ListLensReviewImprovements =
+      ListLensReviewImprovementsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLensReviewImprovementsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ImprovementSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "LensAlias")
+            Prelude.<*> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLensReviewImprovements where
+  hashWithSalt _salt ListLensReviewImprovements' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData ListLensReviewImprovements where
+  rnf ListLensReviewImprovements' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders ListLensReviewImprovements where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListLensReviewImprovements where
+  toPath ListLensReviewImprovements' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias,
+        "/improvements"
+      ]
+
+instance Data.ToQuery ListLensReviewImprovements where
+  toQuery ListLensReviewImprovements' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "MilestoneNumber" Data.=: milestoneNumber,
+        "NextToken" Data.=: nextToken,
+        "PillarId" Data.=: pillarId
+      ]
+
+-- | Output of a list lens review improvements call.
+--
+-- /See:/ 'newListLensReviewImprovementsResponse' smart constructor.
+data ListLensReviewImprovementsResponse = ListLensReviewImprovementsResponse'
+  { improvementSummaries :: Prelude.Maybe [ImprovementSummary],
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'ListLensReviewImprovementsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'improvementSummaries', 'listLensReviewImprovementsResponse_improvementSummaries' - Undocumented member.
+--
+-- 'lensAlias', 'listLensReviewImprovementsResponse_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'listLensReviewImprovementsResponse_lensArn' - The ARN for the lens.
+--
+-- 'milestoneNumber', 'listLensReviewImprovementsResponse_milestoneNumber' - Undocumented member.
+--
+-- 'nextToken', 'listLensReviewImprovementsResponse_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listLensReviewImprovementsResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'listLensReviewImprovementsResponse_httpStatus' - The response's http status code.
+newListLensReviewImprovementsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLensReviewImprovementsResponse
+newListLensReviewImprovementsResponse pHttpStatus_ =
+  ListLensReviewImprovementsResponse'
+    { improvementSummaries =
+        Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listLensReviewImprovementsResponse_improvementSummaries :: Lens.Lens' ListLensReviewImprovementsResponse (Prelude.Maybe [ImprovementSummary])
+listLensReviewImprovementsResponse_improvementSummaries = Lens.lens (\ListLensReviewImprovementsResponse' {improvementSummaries} -> improvementSummaries) (\s@ListLensReviewImprovementsResponse' {} a -> s {improvementSummaries = a} :: ListLensReviewImprovementsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listLensReviewImprovementsResponse_lensAlias :: Lens.Lens' ListLensReviewImprovementsResponse (Prelude.Maybe Prelude.Text)
+listLensReviewImprovementsResponse_lensAlias = Lens.lens (\ListLensReviewImprovementsResponse' {lensAlias} -> lensAlias) (\s@ListLensReviewImprovementsResponse' {} a -> s {lensAlias = a} :: ListLensReviewImprovementsResponse)
+
+-- | The ARN for the lens.
+listLensReviewImprovementsResponse_lensArn :: Lens.Lens' ListLensReviewImprovementsResponse (Prelude.Maybe Prelude.Text)
+listLensReviewImprovementsResponse_lensArn = Lens.lens (\ListLensReviewImprovementsResponse' {lensArn} -> lensArn) (\s@ListLensReviewImprovementsResponse' {} a -> s {lensArn = a} :: ListLensReviewImprovementsResponse)
+
+-- | Undocumented member.
+listLensReviewImprovementsResponse_milestoneNumber :: Lens.Lens' ListLensReviewImprovementsResponse (Prelude.Maybe Prelude.Natural)
+listLensReviewImprovementsResponse_milestoneNumber = Lens.lens (\ListLensReviewImprovementsResponse' {milestoneNumber} -> milestoneNumber) (\s@ListLensReviewImprovementsResponse' {} a -> s {milestoneNumber = a} :: ListLensReviewImprovementsResponse)
+
+-- | Undocumented member.
+listLensReviewImprovementsResponse_nextToken :: Lens.Lens' ListLensReviewImprovementsResponse (Prelude.Maybe Prelude.Text)
+listLensReviewImprovementsResponse_nextToken = Lens.lens (\ListLensReviewImprovementsResponse' {nextToken} -> nextToken) (\s@ListLensReviewImprovementsResponse' {} a -> s {nextToken = a} :: ListLensReviewImprovementsResponse)
+
+-- | Undocumented member.
+listLensReviewImprovementsResponse_workloadId :: Lens.Lens' ListLensReviewImprovementsResponse (Prelude.Maybe Prelude.Text)
+listLensReviewImprovementsResponse_workloadId = Lens.lens (\ListLensReviewImprovementsResponse' {workloadId} -> workloadId) (\s@ListLensReviewImprovementsResponse' {} a -> s {workloadId = a} :: ListLensReviewImprovementsResponse)
+
+-- | The response's http status code.
+listLensReviewImprovementsResponse_httpStatus :: Lens.Lens' ListLensReviewImprovementsResponse Prelude.Int
+listLensReviewImprovementsResponse_httpStatus = Lens.lens (\ListLensReviewImprovementsResponse' {httpStatus} -> httpStatus) (\s@ListLensReviewImprovementsResponse' {} a -> s {httpStatus = a} :: ListLensReviewImprovementsResponse)
+
+instance
+  Prelude.NFData
+    ListLensReviewImprovementsResponse
+  where
+  rnf ListLensReviewImprovementsResponse' {..} =
+    Prelude.rnf improvementSummaries
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListLensReviews.hs b/gen/Amazonka/WellArchitected/ListLensReviews.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListLensReviews.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListLensReviews
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List lens reviews.
+module Amazonka.WellArchitected.ListLensReviews
+  ( -- * Creating a Request
+    ListLensReviews (..),
+    newListLensReviews,
+
+    -- * Request Lenses
+    listLensReviews_maxResults,
+    listLensReviews_milestoneNumber,
+    listLensReviews_nextToken,
+    listLensReviews_workloadId,
+
+    -- * Destructuring the Response
+    ListLensReviewsResponse (..),
+    newListLensReviewsResponse,
+
+    -- * Response Lenses
+    listLensReviewsResponse_lensReviewSummaries,
+    listLensReviewsResponse_milestoneNumber,
+    listLensReviewsResponse_nextToken,
+    listLensReviewsResponse_workloadId,
+    listLensReviewsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to list lens reviews.
+--
+-- /See:/ 'newListLensReviews' smart constructor.
+data ListLensReviews = ListLensReviews'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLensReviews' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listLensReviews_maxResults' - Undocumented member.
+--
+-- 'milestoneNumber', 'listLensReviews_milestoneNumber' - Undocumented member.
+--
+-- 'nextToken', 'listLensReviews_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listLensReviews_workloadId' - Undocumented member.
+newListLensReviews ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  ListLensReviews
+newListLensReviews pWorkloadId_ =
+  ListLensReviews'
+    { maxResults = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = pWorkloadId_
+    }
+
+-- | Undocumented member.
+listLensReviews_maxResults :: Lens.Lens' ListLensReviews (Prelude.Maybe Prelude.Natural)
+listLensReviews_maxResults = Lens.lens (\ListLensReviews' {maxResults} -> maxResults) (\s@ListLensReviews' {} a -> s {maxResults = a} :: ListLensReviews)
+
+-- | Undocumented member.
+listLensReviews_milestoneNumber :: Lens.Lens' ListLensReviews (Prelude.Maybe Prelude.Natural)
+listLensReviews_milestoneNumber = Lens.lens (\ListLensReviews' {milestoneNumber} -> milestoneNumber) (\s@ListLensReviews' {} a -> s {milestoneNumber = a} :: ListLensReviews)
+
+-- | Undocumented member.
+listLensReviews_nextToken :: Lens.Lens' ListLensReviews (Prelude.Maybe Prelude.Text)
+listLensReviews_nextToken = Lens.lens (\ListLensReviews' {nextToken} -> nextToken) (\s@ListLensReviews' {} a -> s {nextToken = a} :: ListLensReviews)
+
+-- | Undocumented member.
+listLensReviews_workloadId :: Lens.Lens' ListLensReviews Prelude.Text
+listLensReviews_workloadId = Lens.lens (\ListLensReviews' {workloadId} -> workloadId) (\s@ListLensReviews' {} a -> s {workloadId = a} :: ListLensReviews)
+
+instance Core.AWSRequest ListLensReviews where
+  type
+    AWSResponse ListLensReviews =
+      ListLensReviewsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLensReviewsResponse'
+            Prelude.<$> ( x
+                            Data..?> "LensReviewSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "MilestoneNumber")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLensReviews where
+  hashWithSalt _salt ListLensReviews' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData ListLensReviews where
+  rnf ListLensReviews' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+
+instance Data.ToHeaders ListLensReviews where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListLensReviews where
+  toPath ListLensReviews' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId, "/lensReviews"]
+
+instance Data.ToQuery ListLensReviews where
+  toQuery ListLensReviews' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "MilestoneNumber" Data.=: milestoneNumber,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | Output of a list lens reviews call.
+--
+-- /See:/ 'newListLensReviewsResponse' smart constructor.
+data ListLensReviewsResponse = ListLensReviewsResponse'
+  { lensReviewSummaries :: Prelude.Maybe [LensReviewSummary],
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'ListLensReviewsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensReviewSummaries', 'listLensReviewsResponse_lensReviewSummaries' - Undocumented member.
+--
+-- 'milestoneNumber', 'listLensReviewsResponse_milestoneNumber' - Undocumented member.
+--
+-- 'nextToken', 'listLensReviewsResponse_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listLensReviewsResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'listLensReviewsResponse_httpStatus' - The response's http status code.
+newListLensReviewsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLensReviewsResponse
+newListLensReviewsResponse pHttpStatus_ =
+  ListLensReviewsResponse'
+    { lensReviewSummaries =
+        Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listLensReviewsResponse_lensReviewSummaries :: Lens.Lens' ListLensReviewsResponse (Prelude.Maybe [LensReviewSummary])
+listLensReviewsResponse_lensReviewSummaries = Lens.lens (\ListLensReviewsResponse' {lensReviewSummaries} -> lensReviewSummaries) (\s@ListLensReviewsResponse' {} a -> s {lensReviewSummaries = a} :: ListLensReviewsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listLensReviewsResponse_milestoneNumber :: Lens.Lens' ListLensReviewsResponse (Prelude.Maybe Prelude.Natural)
+listLensReviewsResponse_milestoneNumber = Lens.lens (\ListLensReviewsResponse' {milestoneNumber} -> milestoneNumber) (\s@ListLensReviewsResponse' {} a -> s {milestoneNumber = a} :: ListLensReviewsResponse)
+
+-- | Undocumented member.
+listLensReviewsResponse_nextToken :: Lens.Lens' ListLensReviewsResponse (Prelude.Maybe Prelude.Text)
+listLensReviewsResponse_nextToken = Lens.lens (\ListLensReviewsResponse' {nextToken} -> nextToken) (\s@ListLensReviewsResponse' {} a -> s {nextToken = a} :: ListLensReviewsResponse)
+
+-- | Undocumented member.
+listLensReviewsResponse_workloadId :: Lens.Lens' ListLensReviewsResponse (Prelude.Maybe Prelude.Text)
+listLensReviewsResponse_workloadId = Lens.lens (\ListLensReviewsResponse' {workloadId} -> workloadId) (\s@ListLensReviewsResponse' {} a -> s {workloadId = a} :: ListLensReviewsResponse)
+
+-- | The response's http status code.
+listLensReviewsResponse_httpStatus :: Lens.Lens' ListLensReviewsResponse Prelude.Int
+listLensReviewsResponse_httpStatus = Lens.lens (\ListLensReviewsResponse' {httpStatus} -> httpStatus) (\s@ListLensReviewsResponse' {} a -> s {httpStatus = a} :: ListLensReviewsResponse)
+
+instance Prelude.NFData ListLensReviewsResponse where
+  rnf ListLensReviewsResponse' {..} =
+    Prelude.rnf lensReviewSummaries
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListLensShares.hs b/gen/Amazonka/WellArchitected/ListLensShares.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListLensShares.hs
@@ -0,0 +1,231 @@
+{-# 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.WellArchitected.ListLensShares
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the lens shares associated with the lens.
+module Amazonka.WellArchitected.ListLensShares
+  ( -- * Creating a Request
+    ListLensShares (..),
+    newListLensShares,
+
+    -- * Request Lenses
+    listLensShares_maxResults,
+    listLensShares_nextToken,
+    listLensShares_sharedWithPrefix,
+    listLensShares_status,
+    listLensShares_lensAlias,
+
+    -- * Destructuring the Response
+    ListLensSharesResponse (..),
+    newListLensSharesResponse,
+
+    -- * Response Lenses
+    listLensSharesResponse_lensShareSummaries,
+    listLensSharesResponse_nextToken,
+    listLensSharesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newListLensShares' smart constructor.
+data ListLensShares = ListLensShares'
+  { -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID, IAM role, organization ID, or
+    -- organizational unit (OU) ID with which the lens is shared.
+    sharedWithPrefix :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ShareStatus,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLensShares' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listLensShares_maxResults' - The maximum number of results to return for this request.
+--
+-- 'nextToken', 'listLensShares_nextToken' - Undocumented member.
+--
+-- 'sharedWithPrefix', 'listLensShares_sharedWithPrefix' - The Amazon Web Services account ID, IAM role, organization ID, or
+-- organizational unit (OU) ID with which the lens is shared.
+--
+-- 'status', 'listLensShares_status' - Undocumented member.
+--
+-- 'lensAlias', 'listLensShares_lensAlias' - Undocumented member.
+newListLensShares ::
+  -- | 'lensAlias'
+  Prelude.Text ->
+  ListLensShares
+newListLensShares pLensAlias_ =
+  ListLensShares'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sharedWithPrefix = Prelude.Nothing,
+      status = Prelude.Nothing,
+      lensAlias = pLensAlias_
+    }
+
+-- | The maximum number of results to return for this request.
+listLensShares_maxResults :: Lens.Lens' ListLensShares (Prelude.Maybe Prelude.Natural)
+listLensShares_maxResults = Lens.lens (\ListLensShares' {maxResults} -> maxResults) (\s@ListLensShares' {} a -> s {maxResults = a} :: ListLensShares)
+
+-- | Undocumented member.
+listLensShares_nextToken :: Lens.Lens' ListLensShares (Prelude.Maybe Prelude.Text)
+listLensShares_nextToken = Lens.lens (\ListLensShares' {nextToken} -> nextToken) (\s@ListLensShares' {} a -> s {nextToken = a} :: ListLensShares)
+
+-- | The Amazon Web Services account ID, IAM role, organization ID, or
+-- organizational unit (OU) ID with which the lens is shared.
+listLensShares_sharedWithPrefix :: Lens.Lens' ListLensShares (Prelude.Maybe Prelude.Text)
+listLensShares_sharedWithPrefix = Lens.lens (\ListLensShares' {sharedWithPrefix} -> sharedWithPrefix) (\s@ListLensShares' {} a -> s {sharedWithPrefix = a} :: ListLensShares)
+
+-- | Undocumented member.
+listLensShares_status :: Lens.Lens' ListLensShares (Prelude.Maybe ShareStatus)
+listLensShares_status = Lens.lens (\ListLensShares' {status} -> status) (\s@ListLensShares' {} a -> s {status = a} :: ListLensShares)
+
+-- | Undocumented member.
+listLensShares_lensAlias :: Lens.Lens' ListLensShares Prelude.Text
+listLensShares_lensAlias = Lens.lens (\ListLensShares' {lensAlias} -> lensAlias) (\s@ListLensShares' {} a -> s {lensAlias = a} :: ListLensShares)
+
+instance Core.AWSRequest ListLensShares where
+  type
+    AWSResponse ListLensShares =
+      ListLensSharesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLensSharesResponse'
+            Prelude.<$> ( x
+                            Data..?> "LensShareSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLensShares where
+  hashWithSalt _salt ListLensShares' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sharedWithPrefix
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData ListLensShares where
+  rnf ListLensShares' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sharedWithPrefix
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders ListLensShares where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListLensShares where
+  toPath ListLensShares' {..} =
+    Prelude.mconcat
+      ["/lenses/", Data.toBS lensAlias, "/shares"]
+
+instance Data.ToQuery ListLensShares where
+  toQuery ListLensShares' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "SharedWithPrefix" Data.=: sharedWithPrefix,
+        "Status" Data.=: status
+      ]
+
+-- | /See:/ 'newListLensSharesResponse' smart constructor.
+data ListLensSharesResponse = ListLensSharesResponse'
+  { -- | A list of lens share summaries.
+    lensShareSummaries :: Prelude.Maybe [LensShareSummary],
+    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 'ListLensSharesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensShareSummaries', 'listLensSharesResponse_lensShareSummaries' - A list of lens share summaries.
+--
+-- 'nextToken', 'listLensSharesResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'listLensSharesResponse_httpStatus' - The response's http status code.
+newListLensSharesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLensSharesResponse
+newListLensSharesResponse pHttpStatus_ =
+  ListLensSharesResponse'
+    { lensShareSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of lens share summaries.
+listLensSharesResponse_lensShareSummaries :: Lens.Lens' ListLensSharesResponse (Prelude.Maybe [LensShareSummary])
+listLensSharesResponse_lensShareSummaries = Lens.lens (\ListLensSharesResponse' {lensShareSummaries} -> lensShareSummaries) (\s@ListLensSharesResponse' {} a -> s {lensShareSummaries = a} :: ListLensSharesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listLensSharesResponse_nextToken :: Lens.Lens' ListLensSharesResponse (Prelude.Maybe Prelude.Text)
+listLensSharesResponse_nextToken = Lens.lens (\ListLensSharesResponse' {nextToken} -> nextToken) (\s@ListLensSharesResponse' {} a -> s {nextToken = a} :: ListLensSharesResponse)
+
+-- | The response's http status code.
+listLensSharesResponse_httpStatus :: Lens.Lens' ListLensSharesResponse Prelude.Int
+listLensSharesResponse_httpStatus = Lens.lens (\ListLensSharesResponse' {httpStatus} -> httpStatus) (\s@ListLensSharesResponse' {} a -> s {httpStatus = a} :: ListLensSharesResponse)
+
+instance Prelude.NFData ListLensSharesResponse where
+  rnf ListLensSharesResponse' {..} =
+    Prelude.rnf lensShareSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListLenses.hs b/gen/Amazonka/WellArchitected/ListLenses.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListLenses.hs
@@ -0,0 +1,223 @@
+{-# 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.WellArchitected.ListLenses
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the available lenses.
+module Amazonka.WellArchitected.ListLenses
+  ( -- * Creating a Request
+    ListLenses (..),
+    newListLenses,
+
+    -- * Request Lenses
+    listLenses_lensName,
+    listLenses_lensStatus,
+    listLenses_lensType,
+    listLenses_maxResults,
+    listLenses_nextToken,
+
+    -- * Destructuring the Response
+    ListLensesResponse (..),
+    newListLensesResponse,
+
+    -- * Response Lenses
+    listLensesResponse_lensSummaries,
+    listLensesResponse_nextToken,
+    listLensesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to list lenses.
+--
+-- /See:/ 'newListLenses' smart constructor.
+data ListLenses = ListLenses'
+  { lensName :: Prelude.Maybe Prelude.Text,
+    -- | The status of lenses to be returned.
+    lensStatus :: Prelude.Maybe LensStatusType,
+    -- | The type of lenses to be returned.
+    lensType :: Prelude.Maybe LensType,
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLenses' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensName', 'listLenses_lensName' - Undocumented member.
+--
+-- 'lensStatus', 'listLenses_lensStatus' - The status of lenses to be returned.
+--
+-- 'lensType', 'listLenses_lensType' - The type of lenses to be returned.
+--
+-- 'maxResults', 'listLenses_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listLenses_nextToken' - Undocumented member.
+newListLenses ::
+  ListLenses
+newListLenses =
+  ListLenses'
+    { lensName = Prelude.Nothing,
+      lensStatus = Prelude.Nothing,
+      lensType = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listLenses_lensName :: Lens.Lens' ListLenses (Prelude.Maybe Prelude.Text)
+listLenses_lensName = Lens.lens (\ListLenses' {lensName} -> lensName) (\s@ListLenses' {} a -> s {lensName = a} :: ListLenses)
+
+-- | The status of lenses to be returned.
+listLenses_lensStatus :: Lens.Lens' ListLenses (Prelude.Maybe LensStatusType)
+listLenses_lensStatus = Lens.lens (\ListLenses' {lensStatus} -> lensStatus) (\s@ListLenses' {} a -> s {lensStatus = a} :: ListLenses)
+
+-- | The type of lenses to be returned.
+listLenses_lensType :: Lens.Lens' ListLenses (Prelude.Maybe LensType)
+listLenses_lensType = Lens.lens (\ListLenses' {lensType} -> lensType) (\s@ListLenses' {} a -> s {lensType = a} :: ListLenses)
+
+-- | Undocumented member.
+listLenses_maxResults :: Lens.Lens' ListLenses (Prelude.Maybe Prelude.Natural)
+listLenses_maxResults = Lens.lens (\ListLenses' {maxResults} -> maxResults) (\s@ListLenses' {} a -> s {maxResults = a} :: ListLenses)
+
+-- | Undocumented member.
+listLenses_nextToken :: Lens.Lens' ListLenses (Prelude.Maybe Prelude.Text)
+listLenses_nextToken = Lens.lens (\ListLenses' {nextToken} -> nextToken) (\s@ListLenses' {} a -> s {nextToken = a} :: ListLenses)
+
+instance Core.AWSRequest ListLenses where
+  type AWSResponse ListLenses = ListLensesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLensesResponse'
+            Prelude.<$> (x Data..?> "LensSummaries" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLenses where
+  hashWithSalt _salt ListLenses' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensName
+      `Prelude.hashWithSalt` lensStatus
+      `Prelude.hashWithSalt` lensType
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListLenses where
+  rnf ListLenses' {..} =
+    Prelude.rnf lensName
+      `Prelude.seq` Prelude.rnf lensStatus
+      `Prelude.seq` Prelude.rnf lensType
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListLenses where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListLenses where
+  toPath = Prelude.const "/lenses"
+
+instance Data.ToQuery ListLenses where
+  toQuery ListLenses' {..} =
+    Prelude.mconcat
+      [ "LensName" Data.=: lensName,
+        "LensStatus" Data.=: lensStatus,
+        "LensType" Data.=: lensType,
+        "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | Output of a list lenses call.
+--
+-- /See:/ 'newListLensesResponse' smart constructor.
+data ListLensesResponse = ListLensesResponse'
+  { lensSummaries :: Prelude.Maybe [LensSummary],
+    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 'ListLensesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensSummaries', 'listLensesResponse_lensSummaries' - Undocumented member.
+--
+-- 'nextToken', 'listLensesResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'listLensesResponse_httpStatus' - The response's http status code.
+newListLensesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLensesResponse
+newListLensesResponse pHttpStatus_ =
+  ListLensesResponse'
+    { lensSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listLensesResponse_lensSummaries :: Lens.Lens' ListLensesResponse (Prelude.Maybe [LensSummary])
+listLensesResponse_lensSummaries = Lens.lens (\ListLensesResponse' {lensSummaries} -> lensSummaries) (\s@ListLensesResponse' {} a -> s {lensSummaries = a} :: ListLensesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listLensesResponse_nextToken :: Lens.Lens' ListLensesResponse (Prelude.Maybe Prelude.Text)
+listLensesResponse_nextToken = Lens.lens (\ListLensesResponse' {nextToken} -> nextToken) (\s@ListLensesResponse' {} a -> s {nextToken = a} :: ListLensesResponse)
+
+-- | The response's http status code.
+listLensesResponse_httpStatus :: Lens.Lens' ListLensesResponse Prelude.Int
+listLensesResponse_httpStatus = Lens.lens (\ListLensesResponse' {httpStatus} -> httpStatus) (\s@ListLensesResponse' {} a -> s {httpStatus = a} :: ListLensesResponse)
+
+instance Prelude.NFData ListLensesResponse where
+  rnf ListLensesResponse' {..} =
+    Prelude.rnf lensSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListMilestones.hs b/gen/Amazonka/WellArchitected/ListMilestones.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListMilestones.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListMilestones
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all milestones for an existing workload.
+module Amazonka.WellArchitected.ListMilestones
+  ( -- * Creating a Request
+    ListMilestones (..),
+    newListMilestones,
+
+    -- * Request Lenses
+    listMilestones_maxResults,
+    listMilestones_nextToken,
+    listMilestones_workloadId,
+
+    -- * Destructuring the Response
+    ListMilestonesResponse (..),
+    newListMilestonesResponse,
+
+    -- * Response Lenses
+    listMilestonesResponse_milestoneSummaries,
+    listMilestonesResponse_nextToken,
+    listMilestonesResponse_workloadId,
+    listMilestonesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to list all milestones for a workload.
+--
+-- /See:/ 'newListMilestones' smart constructor.
+data ListMilestones = ListMilestones'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMilestones' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listMilestones_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listMilestones_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listMilestones_workloadId' - Undocumented member.
+newListMilestones ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  ListMilestones
+newListMilestones pWorkloadId_ =
+  ListMilestones'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = pWorkloadId_
+    }
+
+-- | Undocumented member.
+listMilestones_maxResults :: Lens.Lens' ListMilestones (Prelude.Maybe Prelude.Natural)
+listMilestones_maxResults = Lens.lens (\ListMilestones' {maxResults} -> maxResults) (\s@ListMilestones' {} a -> s {maxResults = a} :: ListMilestones)
+
+-- | Undocumented member.
+listMilestones_nextToken :: Lens.Lens' ListMilestones (Prelude.Maybe Prelude.Text)
+listMilestones_nextToken = Lens.lens (\ListMilestones' {nextToken} -> nextToken) (\s@ListMilestones' {} a -> s {nextToken = a} :: ListMilestones)
+
+-- | Undocumented member.
+listMilestones_workloadId :: Lens.Lens' ListMilestones Prelude.Text
+listMilestones_workloadId = Lens.lens (\ListMilestones' {workloadId} -> workloadId) (\s@ListMilestones' {} a -> s {workloadId = a} :: ListMilestones)
+
+instance Core.AWSRequest ListMilestones where
+  type
+    AWSResponse ListMilestones =
+      ListMilestonesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMilestonesResponse'
+            Prelude.<$> ( x
+                            Data..?> "MilestoneSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMilestones where
+  hashWithSalt _salt ListMilestones' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData ListMilestones where
+  rnf ListMilestones' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+
+instance Data.ToHeaders ListMilestones where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListMilestones where
+  toJSON ListMilestones' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListMilestones where
+  toPath ListMilestones' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/milestonesSummaries"
+      ]
+
+instance Data.ToQuery ListMilestones where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a list milestones call.
+--
+-- /See:/ 'newListMilestonesResponse' smart constructor.
+data ListMilestonesResponse = ListMilestonesResponse'
+  { milestoneSummaries :: Prelude.Maybe [MilestoneSummary],
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'ListMilestonesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneSummaries', 'listMilestonesResponse_milestoneSummaries' - Undocumented member.
+--
+-- 'nextToken', 'listMilestonesResponse_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listMilestonesResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'listMilestonesResponse_httpStatus' - The response's http status code.
+newListMilestonesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMilestonesResponse
+newListMilestonesResponse pHttpStatus_ =
+  ListMilestonesResponse'
+    { milestoneSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listMilestonesResponse_milestoneSummaries :: Lens.Lens' ListMilestonesResponse (Prelude.Maybe [MilestoneSummary])
+listMilestonesResponse_milestoneSummaries = Lens.lens (\ListMilestonesResponse' {milestoneSummaries} -> milestoneSummaries) (\s@ListMilestonesResponse' {} a -> s {milestoneSummaries = a} :: ListMilestonesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listMilestonesResponse_nextToken :: Lens.Lens' ListMilestonesResponse (Prelude.Maybe Prelude.Text)
+listMilestonesResponse_nextToken = Lens.lens (\ListMilestonesResponse' {nextToken} -> nextToken) (\s@ListMilestonesResponse' {} a -> s {nextToken = a} :: ListMilestonesResponse)
+
+-- | Undocumented member.
+listMilestonesResponse_workloadId :: Lens.Lens' ListMilestonesResponse (Prelude.Maybe Prelude.Text)
+listMilestonesResponse_workloadId = Lens.lens (\ListMilestonesResponse' {workloadId} -> workloadId) (\s@ListMilestonesResponse' {} a -> s {workloadId = a} :: ListMilestonesResponse)
+
+-- | The response's http status code.
+listMilestonesResponse_httpStatus :: Lens.Lens' ListMilestonesResponse Prelude.Int
+listMilestonesResponse_httpStatus = Lens.lens (\ListMilestonesResponse' {httpStatus} -> httpStatus) (\s@ListMilestonesResponse' {} a -> s {httpStatus = a} :: ListMilestonesResponse)
+
+instance Prelude.NFData ListMilestonesResponse where
+  rnf ListMilestonesResponse' {..} =
+    Prelude.rnf milestoneSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListNotifications.hs b/gen/Amazonka/WellArchitected/ListNotifications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListNotifications.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListNotifications
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List lens notifications.
+module Amazonka.WellArchitected.ListNotifications
+  ( -- * Creating a Request
+    ListNotifications (..),
+    newListNotifications,
+
+    -- * Request Lenses
+    listNotifications_maxResults,
+    listNotifications_nextToken,
+    listNotifications_workloadId,
+
+    -- * Destructuring the Response
+    ListNotificationsResponse (..),
+    newListNotificationsResponse,
+
+    -- * Response Lenses
+    listNotificationsResponse_nextToken,
+    listNotificationsResponse_notificationSummaries,
+    listNotificationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newListNotifications' smart constructor.
+data ListNotifications = ListNotifications'
+  { -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNotifications' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listNotifications_maxResults' - The maximum number of results to return for this request.
+--
+-- 'nextToken', 'listNotifications_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listNotifications_workloadId' - Undocumented member.
+newListNotifications ::
+  ListNotifications
+newListNotifications =
+  ListNotifications'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadId = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return for this request.
+listNotifications_maxResults :: Lens.Lens' ListNotifications (Prelude.Maybe Prelude.Natural)
+listNotifications_maxResults = Lens.lens (\ListNotifications' {maxResults} -> maxResults) (\s@ListNotifications' {} a -> s {maxResults = a} :: ListNotifications)
+
+-- | Undocumented member.
+listNotifications_nextToken :: Lens.Lens' ListNotifications (Prelude.Maybe Prelude.Text)
+listNotifications_nextToken = Lens.lens (\ListNotifications' {nextToken} -> nextToken) (\s@ListNotifications' {} a -> s {nextToken = a} :: ListNotifications)
+
+-- | Undocumented member.
+listNotifications_workloadId :: Lens.Lens' ListNotifications (Prelude.Maybe Prelude.Text)
+listNotifications_workloadId = Lens.lens (\ListNotifications' {workloadId} -> workloadId) (\s@ListNotifications' {} a -> s {workloadId = a} :: ListNotifications)
+
+instance Core.AWSRequest ListNotifications where
+  type
+    AWSResponse ListNotifications =
+      ListNotificationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNotificationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "NotificationSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListNotifications where
+  hashWithSalt _salt ListNotifications' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData ListNotifications where
+  rnf ListNotifications' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+
+instance Data.ToHeaders ListNotifications where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListNotifications where
+  toJSON ListNotifications' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("WorkloadId" Data..=) Prelude.<$> workloadId
+          ]
+      )
+
+instance Data.ToPath ListNotifications where
+  toPath = Prelude.const "/notifications"
+
+instance Data.ToQuery ListNotifications where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListNotificationsResponse' smart constructor.
+data ListNotificationsResponse = ListNotificationsResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of lens notification summaries in a workload.
+    notificationSummaries :: Prelude.Maybe [NotificationSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNotificationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listNotificationsResponse_nextToken' - Undocumented member.
+--
+-- 'notificationSummaries', 'listNotificationsResponse_notificationSummaries' - List of lens notification summaries in a workload.
+--
+-- 'httpStatus', 'listNotificationsResponse_httpStatus' - The response's http status code.
+newListNotificationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListNotificationsResponse
+newListNotificationsResponse pHttpStatus_ =
+  ListNotificationsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      notificationSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listNotificationsResponse_nextToken :: Lens.Lens' ListNotificationsResponse (Prelude.Maybe Prelude.Text)
+listNotificationsResponse_nextToken = Lens.lens (\ListNotificationsResponse' {nextToken} -> nextToken) (\s@ListNotificationsResponse' {} a -> s {nextToken = a} :: ListNotificationsResponse)
+
+-- | List of lens notification summaries in a workload.
+listNotificationsResponse_notificationSummaries :: Lens.Lens' ListNotificationsResponse (Prelude.Maybe [NotificationSummary])
+listNotificationsResponse_notificationSummaries = Lens.lens (\ListNotificationsResponse' {notificationSummaries} -> notificationSummaries) (\s@ListNotificationsResponse' {} a -> s {notificationSummaries = a} :: ListNotificationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listNotificationsResponse_httpStatus :: Lens.Lens' ListNotificationsResponse Prelude.Int
+listNotificationsResponse_httpStatus = Lens.lens (\ListNotificationsResponse' {httpStatus} -> httpStatus) (\s@ListNotificationsResponse' {} a -> s {httpStatus = a} :: ListNotificationsResponse)
+
+instance Prelude.NFData ListNotificationsResponse where
+  rnf ListNotificationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf notificationSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListShareInvitations.hs b/gen/Amazonka/WellArchitected/ListShareInvitations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListShareInvitations.hs
@@ -0,0 +1,234 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListShareInvitations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the workload invitations.
+module Amazonka.WellArchitected.ListShareInvitations
+  ( -- * Creating a Request
+    ListShareInvitations (..),
+    newListShareInvitations,
+
+    -- * Request Lenses
+    listShareInvitations_lensNamePrefix,
+    listShareInvitations_maxResults,
+    listShareInvitations_nextToken,
+    listShareInvitations_shareResourceType,
+    listShareInvitations_workloadNamePrefix,
+
+    -- * Destructuring the Response
+    ListShareInvitationsResponse (..),
+    newListShareInvitationsResponse,
+
+    -- * Response Lenses
+    listShareInvitationsResponse_nextToken,
+    listShareInvitationsResponse_shareInvitationSummaries,
+    listShareInvitationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for List Share Invitations
+--
+-- /See:/ 'newListShareInvitations' smart constructor.
+data ListShareInvitations = ListShareInvitations'
+  { -- | An optional string added to the beginning of each lens name returned in
+    -- the results.
+    lensNamePrefix :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The type of share invitations to be returned.
+    shareResourceType :: Prelude.Maybe ShareResourceType,
+    workloadNamePrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListShareInvitations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensNamePrefix', 'listShareInvitations_lensNamePrefix' - An optional string added to the beginning of each lens name returned in
+-- the results.
+--
+-- 'maxResults', 'listShareInvitations_maxResults' - The maximum number of results to return for this request.
+--
+-- 'nextToken', 'listShareInvitations_nextToken' - Undocumented member.
+--
+-- 'shareResourceType', 'listShareInvitations_shareResourceType' - The type of share invitations to be returned.
+--
+-- 'workloadNamePrefix', 'listShareInvitations_workloadNamePrefix' - Undocumented member.
+newListShareInvitations ::
+  ListShareInvitations
+newListShareInvitations =
+  ListShareInvitations'
+    { lensNamePrefix =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      shareResourceType = Prelude.Nothing,
+      workloadNamePrefix = Prelude.Nothing
+    }
+
+-- | An optional string added to the beginning of each lens name returned in
+-- the results.
+listShareInvitations_lensNamePrefix :: Lens.Lens' ListShareInvitations (Prelude.Maybe Prelude.Text)
+listShareInvitations_lensNamePrefix = Lens.lens (\ListShareInvitations' {lensNamePrefix} -> lensNamePrefix) (\s@ListShareInvitations' {} a -> s {lensNamePrefix = a} :: ListShareInvitations)
+
+-- | The maximum number of results to return for this request.
+listShareInvitations_maxResults :: Lens.Lens' ListShareInvitations (Prelude.Maybe Prelude.Natural)
+listShareInvitations_maxResults = Lens.lens (\ListShareInvitations' {maxResults} -> maxResults) (\s@ListShareInvitations' {} a -> s {maxResults = a} :: ListShareInvitations)
+
+-- | Undocumented member.
+listShareInvitations_nextToken :: Lens.Lens' ListShareInvitations (Prelude.Maybe Prelude.Text)
+listShareInvitations_nextToken = Lens.lens (\ListShareInvitations' {nextToken} -> nextToken) (\s@ListShareInvitations' {} a -> s {nextToken = a} :: ListShareInvitations)
+
+-- | The type of share invitations to be returned.
+listShareInvitations_shareResourceType :: Lens.Lens' ListShareInvitations (Prelude.Maybe ShareResourceType)
+listShareInvitations_shareResourceType = Lens.lens (\ListShareInvitations' {shareResourceType} -> shareResourceType) (\s@ListShareInvitations' {} a -> s {shareResourceType = a} :: ListShareInvitations)
+
+-- | Undocumented member.
+listShareInvitations_workloadNamePrefix :: Lens.Lens' ListShareInvitations (Prelude.Maybe Prelude.Text)
+listShareInvitations_workloadNamePrefix = Lens.lens (\ListShareInvitations' {workloadNamePrefix} -> workloadNamePrefix) (\s@ListShareInvitations' {} a -> s {workloadNamePrefix = a} :: ListShareInvitations)
+
+instance Core.AWSRequest ListShareInvitations where
+  type
+    AWSResponse ListShareInvitations =
+      ListShareInvitationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListShareInvitationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "ShareInvitationSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListShareInvitations where
+  hashWithSalt _salt ListShareInvitations' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensNamePrefix
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` shareResourceType
+      `Prelude.hashWithSalt` workloadNamePrefix
+
+instance Prelude.NFData ListShareInvitations where
+  rnf ListShareInvitations' {..} =
+    Prelude.rnf lensNamePrefix
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf shareResourceType
+      `Prelude.seq` Prelude.rnf workloadNamePrefix
+
+instance Data.ToHeaders ListShareInvitations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListShareInvitations where
+  toPath = Prelude.const "/shareInvitations"
+
+instance Data.ToQuery ListShareInvitations where
+  toQuery ListShareInvitations' {..} =
+    Prelude.mconcat
+      [ "LensNamePrefix" Data.=: lensNamePrefix,
+        "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "ShareResourceType" Data.=: shareResourceType,
+        "WorkloadNamePrefix" Data.=: workloadNamePrefix
+      ]
+
+-- | Input for List Share Invitations
+--
+-- /See:/ 'newListShareInvitationsResponse' smart constructor.
+data ListShareInvitationsResponse = ListShareInvitationsResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of share invitation summaries in a workload.
+    shareInvitationSummaries :: Prelude.Maybe [ShareInvitationSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListShareInvitationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listShareInvitationsResponse_nextToken' - Undocumented member.
+--
+-- 'shareInvitationSummaries', 'listShareInvitationsResponse_shareInvitationSummaries' - List of share invitation summaries in a workload.
+--
+-- 'httpStatus', 'listShareInvitationsResponse_httpStatus' - The response's http status code.
+newListShareInvitationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListShareInvitationsResponse
+newListShareInvitationsResponse pHttpStatus_ =
+  ListShareInvitationsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      shareInvitationSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listShareInvitationsResponse_nextToken :: Lens.Lens' ListShareInvitationsResponse (Prelude.Maybe Prelude.Text)
+listShareInvitationsResponse_nextToken = Lens.lens (\ListShareInvitationsResponse' {nextToken} -> nextToken) (\s@ListShareInvitationsResponse' {} a -> s {nextToken = a} :: ListShareInvitationsResponse)
+
+-- | List of share invitation summaries in a workload.
+listShareInvitationsResponse_shareInvitationSummaries :: Lens.Lens' ListShareInvitationsResponse (Prelude.Maybe [ShareInvitationSummary])
+listShareInvitationsResponse_shareInvitationSummaries = Lens.lens (\ListShareInvitationsResponse' {shareInvitationSummaries} -> shareInvitationSummaries) (\s@ListShareInvitationsResponse' {} a -> s {shareInvitationSummaries = a} :: ListShareInvitationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listShareInvitationsResponse_httpStatus :: Lens.Lens' ListShareInvitationsResponse Prelude.Int
+listShareInvitationsResponse_httpStatus = Lens.lens (\ListShareInvitationsResponse' {httpStatus} -> httpStatus) (\s@ListShareInvitationsResponse' {} a -> s {httpStatus = a} :: ListShareInvitationsResponse)
+
+instance Prelude.NFData ListShareInvitationsResponse where
+  rnf ListShareInvitationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf shareInvitationSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListTagsForResource.hs b/gen/Amazonka/WellArchitected/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListTagsForResource.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the tags for a resource.
+--
+-- The WorkloadArn parameter can be either a workload ARN or a custom lens
+-- ARN.
+module Amazonka.WellArchitected.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_workloadArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { workloadArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadArn', 'listTagsForResource_workloadArn' - Undocumented member.
+newListTagsForResource ::
+  -- | 'workloadArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pWorkloadArn_ =
+  ListTagsForResource' {workloadArn = pWorkloadArn_}
+
+-- | Undocumented member.
+listTagsForResource_workloadArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_workloadArn = Lens.lens (\ListTagsForResource' {workloadArn} -> workloadArn) (\s@ListTagsForResource' {} a -> s {workloadArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` workloadArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf workloadArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS workloadArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The tags for the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The tags for the resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The tags for the resource.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListWorkloadShares.hs b/gen/Amazonka/WellArchitected/ListWorkloadShares.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListWorkloadShares.hs
@@ -0,0 +1,245 @@
+{-# 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.WellArchitected.ListWorkloadShares
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the workload shares associated with the workload.
+module Amazonka.WellArchitected.ListWorkloadShares
+  ( -- * Creating a Request
+    ListWorkloadShares (..),
+    newListWorkloadShares,
+
+    -- * Request Lenses
+    listWorkloadShares_maxResults,
+    listWorkloadShares_nextToken,
+    listWorkloadShares_sharedWithPrefix,
+    listWorkloadShares_status,
+    listWorkloadShares_workloadId,
+
+    -- * Destructuring the Response
+    ListWorkloadSharesResponse (..),
+    newListWorkloadSharesResponse,
+
+    -- * Response Lenses
+    listWorkloadSharesResponse_nextToken,
+    listWorkloadSharesResponse_workloadId,
+    listWorkloadSharesResponse_workloadShareSummaries,
+    listWorkloadSharesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for List Workload Share
+--
+-- /See:/ 'newListWorkloadShares' smart constructor.
+data ListWorkloadShares = ListWorkloadShares'
+  { -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID, IAM role, organization ID, or
+    -- organizational unit (OU) ID with which the workload is shared.
+    sharedWithPrefix :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ShareStatus,
+    workloadId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkloadShares' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listWorkloadShares_maxResults' - The maximum number of results to return for this request.
+--
+-- 'nextToken', 'listWorkloadShares_nextToken' - Undocumented member.
+--
+-- 'sharedWithPrefix', 'listWorkloadShares_sharedWithPrefix' - The Amazon Web Services account ID, IAM role, organization ID, or
+-- organizational unit (OU) ID with which the workload is shared.
+--
+-- 'status', 'listWorkloadShares_status' - Undocumented member.
+--
+-- 'workloadId', 'listWorkloadShares_workloadId' - Undocumented member.
+newListWorkloadShares ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  ListWorkloadShares
+newListWorkloadShares pWorkloadId_ =
+  ListWorkloadShares'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sharedWithPrefix = Prelude.Nothing,
+      status = Prelude.Nothing,
+      workloadId = pWorkloadId_
+    }
+
+-- | The maximum number of results to return for this request.
+listWorkloadShares_maxResults :: Lens.Lens' ListWorkloadShares (Prelude.Maybe Prelude.Natural)
+listWorkloadShares_maxResults = Lens.lens (\ListWorkloadShares' {maxResults} -> maxResults) (\s@ListWorkloadShares' {} a -> s {maxResults = a} :: ListWorkloadShares)
+
+-- | Undocumented member.
+listWorkloadShares_nextToken :: Lens.Lens' ListWorkloadShares (Prelude.Maybe Prelude.Text)
+listWorkloadShares_nextToken = Lens.lens (\ListWorkloadShares' {nextToken} -> nextToken) (\s@ListWorkloadShares' {} a -> s {nextToken = a} :: ListWorkloadShares)
+
+-- | The Amazon Web Services account ID, IAM role, organization ID, or
+-- organizational unit (OU) ID with which the workload is shared.
+listWorkloadShares_sharedWithPrefix :: Lens.Lens' ListWorkloadShares (Prelude.Maybe Prelude.Text)
+listWorkloadShares_sharedWithPrefix = Lens.lens (\ListWorkloadShares' {sharedWithPrefix} -> sharedWithPrefix) (\s@ListWorkloadShares' {} a -> s {sharedWithPrefix = a} :: ListWorkloadShares)
+
+-- | Undocumented member.
+listWorkloadShares_status :: Lens.Lens' ListWorkloadShares (Prelude.Maybe ShareStatus)
+listWorkloadShares_status = Lens.lens (\ListWorkloadShares' {status} -> status) (\s@ListWorkloadShares' {} a -> s {status = a} :: ListWorkloadShares)
+
+-- | Undocumented member.
+listWorkloadShares_workloadId :: Lens.Lens' ListWorkloadShares Prelude.Text
+listWorkloadShares_workloadId = Lens.lens (\ListWorkloadShares' {workloadId} -> workloadId) (\s@ListWorkloadShares' {} a -> s {workloadId = a} :: ListWorkloadShares)
+
+instance Core.AWSRequest ListWorkloadShares where
+  type
+    AWSResponse ListWorkloadShares =
+      ListWorkloadSharesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListWorkloadSharesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> ( x
+                            Data..?> "WorkloadShareSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListWorkloadShares where
+  hashWithSalt _salt ListWorkloadShares' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sharedWithPrefix
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData ListWorkloadShares where
+  rnf ListWorkloadShares' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sharedWithPrefix
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf workloadId
+
+instance Data.ToHeaders ListWorkloadShares where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListWorkloadShares where
+  toPath ListWorkloadShares' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId, "/shares"]
+
+instance Data.ToQuery ListWorkloadShares where
+  toQuery ListWorkloadShares' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "SharedWithPrefix" Data.=: sharedWithPrefix,
+        "Status" Data.=: status
+      ]
+
+-- | Input for List Workload Share
+--
+-- /See:/ 'newListWorkloadSharesResponse' smart constructor.
+data ListWorkloadSharesResponse = ListWorkloadSharesResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Maybe Prelude.Text,
+    workloadShareSummaries :: Prelude.Maybe [WorkloadShareSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkloadSharesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listWorkloadSharesResponse_nextToken' - Undocumented member.
+--
+-- 'workloadId', 'listWorkloadSharesResponse_workloadId' - Undocumented member.
+--
+-- 'workloadShareSummaries', 'listWorkloadSharesResponse_workloadShareSummaries' - Undocumented member.
+--
+-- 'httpStatus', 'listWorkloadSharesResponse_httpStatus' - The response's http status code.
+newListWorkloadSharesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListWorkloadSharesResponse
+newListWorkloadSharesResponse pHttpStatus_ =
+  ListWorkloadSharesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      workloadShareSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listWorkloadSharesResponse_nextToken :: Lens.Lens' ListWorkloadSharesResponse (Prelude.Maybe Prelude.Text)
+listWorkloadSharesResponse_nextToken = Lens.lens (\ListWorkloadSharesResponse' {nextToken} -> nextToken) (\s@ListWorkloadSharesResponse' {} a -> s {nextToken = a} :: ListWorkloadSharesResponse)
+
+-- | Undocumented member.
+listWorkloadSharesResponse_workloadId :: Lens.Lens' ListWorkloadSharesResponse (Prelude.Maybe Prelude.Text)
+listWorkloadSharesResponse_workloadId = Lens.lens (\ListWorkloadSharesResponse' {workloadId} -> workloadId) (\s@ListWorkloadSharesResponse' {} a -> s {workloadId = a} :: ListWorkloadSharesResponse)
+
+-- | Undocumented member.
+listWorkloadSharesResponse_workloadShareSummaries :: Lens.Lens' ListWorkloadSharesResponse (Prelude.Maybe [WorkloadShareSummary])
+listWorkloadSharesResponse_workloadShareSummaries = Lens.lens (\ListWorkloadSharesResponse' {workloadShareSummaries} -> workloadShareSummaries) (\s@ListWorkloadSharesResponse' {} a -> s {workloadShareSummaries = a} :: ListWorkloadSharesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listWorkloadSharesResponse_httpStatus :: Lens.Lens' ListWorkloadSharesResponse Prelude.Int
+listWorkloadSharesResponse_httpStatus = Lens.lens (\ListWorkloadSharesResponse' {httpStatus} -> httpStatus) (\s@ListWorkloadSharesResponse' {} a -> s {httpStatus = a} :: ListWorkloadSharesResponse)
+
+instance Prelude.NFData ListWorkloadSharesResponse where
+  rnf ListWorkloadSharesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf workloadShareSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/ListWorkloads.hs b/gen/Amazonka/WellArchitected/ListWorkloads.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/ListWorkloads.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.ListWorkloads
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List workloads. Paginated.
+module Amazonka.WellArchitected.ListWorkloads
+  ( -- * Creating a Request
+    ListWorkloads (..),
+    newListWorkloads,
+
+    -- * Request Lenses
+    listWorkloads_maxResults,
+    listWorkloads_nextToken,
+    listWorkloads_workloadNamePrefix,
+
+    -- * Destructuring the Response
+    ListWorkloadsResponse (..),
+    newListWorkloadsResponse,
+
+    -- * Response Lenses
+    listWorkloadsResponse_nextToken,
+    listWorkloadsResponse_workloadSummaries,
+    listWorkloadsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to list all workloads.
+--
+-- /See:/ 'newListWorkloads' smart constructor.
+data ListWorkloads = ListWorkloads'
+  { -- | The maximum number of results to return for this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    workloadNamePrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkloads' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listWorkloads_maxResults' - The maximum number of results to return for this request.
+--
+-- 'nextToken', 'listWorkloads_nextToken' - Undocumented member.
+--
+-- 'workloadNamePrefix', 'listWorkloads_workloadNamePrefix' - Undocumented member.
+newListWorkloads ::
+  ListWorkloads
+newListWorkloads =
+  ListWorkloads'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      workloadNamePrefix = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return for this request.
+listWorkloads_maxResults :: Lens.Lens' ListWorkloads (Prelude.Maybe Prelude.Natural)
+listWorkloads_maxResults = Lens.lens (\ListWorkloads' {maxResults} -> maxResults) (\s@ListWorkloads' {} a -> s {maxResults = a} :: ListWorkloads)
+
+-- | Undocumented member.
+listWorkloads_nextToken :: Lens.Lens' ListWorkloads (Prelude.Maybe Prelude.Text)
+listWorkloads_nextToken = Lens.lens (\ListWorkloads' {nextToken} -> nextToken) (\s@ListWorkloads' {} a -> s {nextToken = a} :: ListWorkloads)
+
+-- | Undocumented member.
+listWorkloads_workloadNamePrefix :: Lens.Lens' ListWorkloads (Prelude.Maybe Prelude.Text)
+listWorkloads_workloadNamePrefix = Lens.lens (\ListWorkloads' {workloadNamePrefix} -> workloadNamePrefix) (\s@ListWorkloads' {} a -> s {workloadNamePrefix = a} :: ListWorkloads)
+
+instance Core.AWSRequest ListWorkloads where
+  type
+    AWSResponse ListWorkloads =
+      ListWorkloadsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListWorkloadsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "WorkloadSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListWorkloads where
+  hashWithSalt _salt ListWorkloads' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` workloadNamePrefix
+
+instance Prelude.NFData ListWorkloads where
+  rnf ListWorkloads' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadNamePrefix
+
+instance Data.ToHeaders ListWorkloads where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListWorkloads where
+  toJSON ListWorkloads' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("WorkloadNamePrefix" Data..=)
+              Prelude.<$> workloadNamePrefix
+          ]
+      )
+
+instance Data.ToPath ListWorkloads where
+  toPath = Prelude.const "/workloadsSummaries"
+
+instance Data.ToQuery ListWorkloads where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a list workloads call.
+--
+-- /See:/ 'newListWorkloadsResponse' smart constructor.
+data ListWorkloadsResponse = ListWorkloadsResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    workloadSummaries :: Prelude.Maybe [WorkloadSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkloadsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listWorkloadsResponse_nextToken' - Undocumented member.
+--
+-- 'workloadSummaries', 'listWorkloadsResponse_workloadSummaries' - Undocumented member.
+--
+-- 'httpStatus', 'listWorkloadsResponse_httpStatus' - The response's http status code.
+newListWorkloadsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListWorkloadsResponse
+newListWorkloadsResponse pHttpStatus_ =
+  ListWorkloadsResponse'
+    { nextToken = Prelude.Nothing,
+      workloadSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listWorkloadsResponse_nextToken :: Lens.Lens' ListWorkloadsResponse (Prelude.Maybe Prelude.Text)
+listWorkloadsResponse_nextToken = Lens.lens (\ListWorkloadsResponse' {nextToken} -> nextToken) (\s@ListWorkloadsResponse' {} a -> s {nextToken = a} :: ListWorkloadsResponse)
+
+-- | Undocumented member.
+listWorkloadsResponse_workloadSummaries :: Lens.Lens' ListWorkloadsResponse (Prelude.Maybe [WorkloadSummary])
+listWorkloadsResponse_workloadSummaries = Lens.lens (\ListWorkloadsResponse' {workloadSummaries} -> workloadSummaries) (\s@ListWorkloadsResponse' {} a -> s {workloadSummaries = a} :: ListWorkloadsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listWorkloadsResponse_httpStatus :: Lens.Lens' ListWorkloadsResponse Prelude.Int
+listWorkloadsResponse_httpStatus = Lens.lens (\ListWorkloadsResponse' {httpStatus} -> httpStatus) (\s@ListWorkloadsResponse' {} a -> s {httpStatus = a} :: ListWorkloadsResponse)
+
+instance Prelude.NFData ListWorkloadsResponse where
+  rnf ListWorkloadsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf workloadSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/TagResource.hs b/gen/Amazonka/WellArchitected/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/TagResource.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds one or more tags to the specified resource.
+--
+-- The WorkloadArn parameter can be either a workload ARN or a custom lens
+-- ARN.
+module Amazonka.WellArchitected.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_workloadArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { workloadArn :: Prelude.Text,
+    -- | The tags for the resource.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadArn', 'tagResource_workloadArn' - Undocumented member.
+--
+-- 'tags', 'tagResource_tags' - The tags for the resource.
+newTagResource ::
+  -- | 'workloadArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pWorkloadArn_ =
+  TagResource'
+    { workloadArn = pWorkloadArn_,
+      tags = Prelude.mempty
+    }
+
+-- | Undocumented member.
+tagResource_workloadArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_workloadArn = Lens.lens (\TagResource' {workloadArn} -> workloadArn) (\s@TagResource' {} a -> s {workloadArn = a} :: TagResource)
+
+-- | The tags for the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf workloadArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS workloadArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/Types.hs b/gen/Amazonka/WellArchitected/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types.hs
@@ -0,0 +1,618 @@
+{-# 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.WellArchitected.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.WellArchitected.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AdditionalResourceType
+    AdditionalResourceType (..),
+
+    -- * AnswerReason
+    AnswerReason (..),
+
+    -- * CheckFailureReason
+    CheckFailureReason (..),
+
+    -- * CheckProvider
+    CheckProvider (..),
+
+    -- * CheckStatus
+    CheckStatus (..),
+
+    -- * ChoiceReason
+    ChoiceReason (..),
+
+    -- * ChoiceStatus
+    ChoiceStatus (..),
+
+    -- * DifferenceStatus
+    DifferenceStatus (..),
+
+    -- * ImportLensStatus
+    ImportLensStatus (..),
+
+    -- * LensStatus
+    LensStatus (..),
+
+    -- * LensStatusType
+    LensStatusType (..),
+
+    -- * LensType
+    LensType (..),
+
+    -- * NotificationType
+    NotificationType (..),
+
+    -- * OrganizationSharingStatus
+    OrganizationSharingStatus (..),
+
+    -- * PermissionType
+    PermissionType (..),
+
+    -- * Risk
+    Risk (..),
+
+    -- * ShareInvitationAction
+    ShareInvitationAction (..),
+
+    -- * ShareResourceType
+    ShareResourceType (..),
+
+    -- * ShareStatus
+    ShareStatus (..),
+
+    -- * TrustedAdvisorIntegrationStatus
+    TrustedAdvisorIntegrationStatus (..),
+
+    -- * WorkloadEnvironment
+    WorkloadEnvironment (..),
+
+    -- * WorkloadImprovementStatus
+    WorkloadImprovementStatus (..),
+
+    -- * AdditionalResources
+    AdditionalResources (..),
+    newAdditionalResources,
+    additionalResources_content,
+    additionalResources_type,
+
+    -- * Answer
+    Answer (..),
+    newAnswer,
+    answer_choiceAnswers,
+    answer_choices,
+    answer_helpfulResourceDisplayText,
+    answer_helpfulResourceUrl,
+    answer_improvementPlanUrl,
+    answer_isApplicable,
+    answer_notes,
+    answer_pillarId,
+    answer_questionDescription,
+    answer_questionId,
+    answer_questionTitle,
+    answer_reason,
+    answer_risk,
+    answer_selectedChoices,
+
+    -- * AnswerSummary
+    AnswerSummary (..),
+    newAnswerSummary,
+    answerSummary_choiceAnswerSummaries,
+    answerSummary_choices,
+    answerSummary_isApplicable,
+    answerSummary_pillarId,
+    answerSummary_questionId,
+    answerSummary_questionTitle,
+    answerSummary_reason,
+    answerSummary_risk,
+    answerSummary_selectedChoices,
+
+    -- * CheckDetail
+    CheckDetail (..),
+    newCheckDetail,
+    checkDetail_accountId,
+    checkDetail_choiceId,
+    checkDetail_description,
+    checkDetail_flaggedResources,
+    checkDetail_id,
+    checkDetail_lensArn,
+    checkDetail_name,
+    checkDetail_pillarId,
+    checkDetail_provider,
+    checkDetail_questionId,
+    checkDetail_reason,
+    checkDetail_status,
+    checkDetail_updatedAt,
+
+    -- * CheckSummary
+    CheckSummary (..),
+    newCheckSummary,
+    checkSummary_accountSummary,
+    checkSummary_choiceId,
+    checkSummary_description,
+    checkSummary_id,
+    checkSummary_lensArn,
+    checkSummary_name,
+    checkSummary_pillarId,
+    checkSummary_provider,
+    checkSummary_questionId,
+    checkSummary_status,
+    checkSummary_updatedAt,
+
+    -- * Choice
+    Choice (..),
+    newChoice,
+    choice_additionalResources,
+    choice_choiceId,
+    choice_description,
+    choice_helpfulResource,
+    choice_improvementPlan,
+    choice_title,
+
+    -- * ChoiceAnswer
+    ChoiceAnswer (..),
+    newChoiceAnswer,
+    choiceAnswer_choiceId,
+    choiceAnswer_notes,
+    choiceAnswer_reason,
+    choiceAnswer_status,
+
+    -- * ChoiceAnswerSummary
+    ChoiceAnswerSummary (..),
+    newChoiceAnswerSummary,
+    choiceAnswerSummary_choiceId,
+    choiceAnswerSummary_reason,
+    choiceAnswerSummary_status,
+
+    -- * ChoiceContent
+    ChoiceContent (..),
+    newChoiceContent,
+    choiceContent_displayText,
+    choiceContent_url,
+
+    -- * ChoiceImprovementPlan
+    ChoiceImprovementPlan (..),
+    newChoiceImprovementPlan,
+    choiceImprovementPlan_choiceId,
+    choiceImprovementPlan_displayText,
+    choiceImprovementPlan_improvementPlanUrl,
+
+    -- * ChoiceUpdate
+    ChoiceUpdate (..),
+    newChoiceUpdate,
+    choiceUpdate_notes,
+    choiceUpdate_reason,
+    choiceUpdate_status,
+
+    -- * ImprovementSummary
+    ImprovementSummary (..),
+    newImprovementSummary,
+    improvementSummary_improvementPlanUrl,
+    improvementSummary_improvementPlans,
+    improvementSummary_pillarId,
+    improvementSummary_questionId,
+    improvementSummary_questionTitle,
+    improvementSummary_risk,
+
+    -- * Lens
+    Lens (..),
+    newLens,
+    lens_description,
+    lens_lensArn,
+    lens_lensVersion,
+    lens_name,
+    lens_owner,
+    lens_shareInvitationId,
+    lens_tags,
+
+    -- * LensReview
+    LensReview (..),
+    newLensReview,
+    lensReview_lensAlias,
+    lensReview_lensArn,
+    lensReview_lensName,
+    lensReview_lensStatus,
+    lensReview_lensVersion,
+    lensReview_nextToken,
+    lensReview_notes,
+    lensReview_pillarReviewSummaries,
+    lensReview_riskCounts,
+    lensReview_updatedAt,
+
+    -- * LensReviewReport
+    LensReviewReport (..),
+    newLensReviewReport,
+    lensReviewReport_base64String,
+    lensReviewReport_lensAlias,
+    lensReviewReport_lensArn,
+
+    -- * LensReviewSummary
+    LensReviewSummary (..),
+    newLensReviewSummary,
+    lensReviewSummary_lensAlias,
+    lensReviewSummary_lensArn,
+    lensReviewSummary_lensName,
+    lensReviewSummary_lensStatus,
+    lensReviewSummary_lensVersion,
+    lensReviewSummary_riskCounts,
+    lensReviewSummary_updatedAt,
+
+    -- * LensShareSummary
+    LensShareSummary (..),
+    newLensShareSummary,
+    lensShareSummary_shareId,
+    lensShareSummary_sharedWith,
+    lensShareSummary_status,
+    lensShareSummary_statusMessage,
+
+    -- * LensSummary
+    LensSummary (..),
+    newLensSummary,
+    lensSummary_createdAt,
+    lensSummary_description,
+    lensSummary_lensAlias,
+    lensSummary_lensArn,
+    lensSummary_lensName,
+    lensSummary_lensStatus,
+    lensSummary_lensType,
+    lensSummary_lensVersion,
+    lensSummary_owner,
+    lensSummary_updatedAt,
+
+    -- * LensUpgradeSummary
+    LensUpgradeSummary (..),
+    newLensUpgradeSummary,
+    lensUpgradeSummary_currentLensVersion,
+    lensUpgradeSummary_latestLensVersion,
+    lensUpgradeSummary_lensAlias,
+    lensUpgradeSummary_lensArn,
+    lensUpgradeSummary_workloadId,
+    lensUpgradeSummary_workloadName,
+
+    -- * Milestone
+    Milestone (..),
+    newMilestone,
+    milestone_milestoneName,
+    milestone_milestoneNumber,
+    milestone_recordedAt,
+    milestone_workload,
+
+    -- * MilestoneSummary
+    MilestoneSummary (..),
+    newMilestoneSummary,
+    milestoneSummary_milestoneName,
+    milestoneSummary_milestoneNumber,
+    milestoneSummary_recordedAt,
+    milestoneSummary_workloadSummary,
+
+    -- * NotificationSummary
+    NotificationSummary (..),
+    newNotificationSummary,
+    notificationSummary_lensUpgradeSummary,
+    notificationSummary_type,
+
+    -- * PillarDifference
+    PillarDifference (..),
+    newPillarDifference,
+    pillarDifference_differenceStatus,
+    pillarDifference_pillarId,
+    pillarDifference_pillarName,
+    pillarDifference_questionDifferences,
+
+    -- * PillarReviewSummary
+    PillarReviewSummary (..),
+    newPillarReviewSummary,
+    pillarReviewSummary_notes,
+    pillarReviewSummary_pillarId,
+    pillarReviewSummary_pillarName,
+    pillarReviewSummary_riskCounts,
+
+    -- * QuestionDifference
+    QuestionDifference (..),
+    newQuestionDifference,
+    questionDifference_differenceStatus,
+    questionDifference_questionId,
+    questionDifference_questionTitle,
+
+    -- * ShareInvitation
+    ShareInvitation (..),
+    newShareInvitation,
+    shareInvitation_lensAlias,
+    shareInvitation_lensArn,
+    shareInvitation_shareInvitationId,
+    shareInvitation_shareResourceType,
+    shareInvitation_workloadId,
+
+    -- * ShareInvitationSummary
+    ShareInvitationSummary (..),
+    newShareInvitationSummary,
+    shareInvitationSummary_lensArn,
+    shareInvitationSummary_lensName,
+    shareInvitationSummary_permissionType,
+    shareInvitationSummary_shareInvitationId,
+    shareInvitationSummary_shareResourceType,
+    shareInvitationSummary_sharedBy,
+    shareInvitationSummary_sharedWith,
+    shareInvitationSummary_workloadId,
+    shareInvitationSummary_workloadName,
+
+    -- * VersionDifferences
+    VersionDifferences (..),
+    newVersionDifferences,
+    versionDifferences_pillarDifferences,
+
+    -- * Workload
+    Workload (..),
+    newWorkload,
+    workload_accountIds,
+    workload_applications,
+    workload_architecturalDesign,
+    workload_awsRegions,
+    workload_description,
+    workload_discoveryConfig,
+    workload_environment,
+    workload_improvementStatus,
+    workload_industry,
+    workload_industryType,
+    workload_isReviewOwnerUpdateAcknowledged,
+    workload_lenses,
+    workload_nonAwsRegions,
+    workload_notes,
+    workload_owner,
+    workload_pillarPriorities,
+    workload_reviewOwner,
+    workload_reviewRestrictionDate,
+    workload_riskCounts,
+    workload_shareInvitationId,
+    workload_tags,
+    workload_updatedAt,
+    workload_workloadArn,
+    workload_workloadId,
+    workload_workloadName,
+
+    -- * WorkloadDiscoveryConfig
+    WorkloadDiscoveryConfig (..),
+    newWorkloadDiscoveryConfig,
+    workloadDiscoveryConfig_trustedAdvisorIntegrationStatus,
+
+    -- * WorkloadShare
+    WorkloadShare (..),
+    newWorkloadShare,
+    workloadShare_permissionType,
+    workloadShare_shareId,
+    workloadShare_sharedBy,
+    workloadShare_sharedWith,
+    workloadShare_status,
+    workloadShare_workloadId,
+    workloadShare_workloadName,
+
+    -- * WorkloadShareSummary
+    WorkloadShareSummary (..),
+    newWorkloadShareSummary,
+    workloadShareSummary_permissionType,
+    workloadShareSummary_shareId,
+    workloadShareSummary_sharedWith,
+    workloadShareSummary_status,
+    workloadShareSummary_statusMessage,
+
+    -- * WorkloadSummary
+    WorkloadSummary (..),
+    newWorkloadSummary,
+    workloadSummary_improvementStatus,
+    workloadSummary_lenses,
+    workloadSummary_owner,
+    workloadSummary_riskCounts,
+    workloadSummary_updatedAt,
+    workloadSummary_workloadArn,
+    workloadSummary_workloadId,
+    workloadSummary_workloadName,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+import Amazonka.WellArchitected.Types.AdditionalResourceType
+import Amazonka.WellArchitected.Types.AdditionalResources
+import Amazonka.WellArchitected.Types.Answer
+import Amazonka.WellArchitected.Types.AnswerReason
+import Amazonka.WellArchitected.Types.AnswerSummary
+import Amazonka.WellArchitected.Types.CheckDetail
+import Amazonka.WellArchitected.Types.CheckFailureReason
+import Amazonka.WellArchitected.Types.CheckProvider
+import Amazonka.WellArchitected.Types.CheckStatus
+import Amazonka.WellArchitected.Types.CheckSummary
+import Amazonka.WellArchitected.Types.Choice
+import Amazonka.WellArchitected.Types.ChoiceAnswer
+import Amazonka.WellArchitected.Types.ChoiceAnswerSummary
+import Amazonka.WellArchitected.Types.ChoiceContent
+import Amazonka.WellArchitected.Types.ChoiceImprovementPlan
+import Amazonka.WellArchitected.Types.ChoiceReason
+import Amazonka.WellArchitected.Types.ChoiceStatus
+import Amazonka.WellArchitected.Types.ChoiceUpdate
+import Amazonka.WellArchitected.Types.DifferenceStatus
+import Amazonka.WellArchitected.Types.ImportLensStatus
+import Amazonka.WellArchitected.Types.ImprovementSummary
+import Amazonka.WellArchitected.Types.Lens
+import Amazonka.WellArchitected.Types.LensReview
+import Amazonka.WellArchitected.Types.LensReviewReport
+import Amazonka.WellArchitected.Types.LensReviewSummary
+import Amazonka.WellArchitected.Types.LensShareSummary
+import Amazonka.WellArchitected.Types.LensStatus
+import Amazonka.WellArchitected.Types.LensStatusType
+import Amazonka.WellArchitected.Types.LensSummary
+import Amazonka.WellArchitected.Types.LensType
+import Amazonka.WellArchitected.Types.LensUpgradeSummary
+import Amazonka.WellArchitected.Types.Milestone
+import Amazonka.WellArchitected.Types.MilestoneSummary
+import Amazonka.WellArchitected.Types.NotificationSummary
+import Amazonka.WellArchitected.Types.NotificationType
+import Amazonka.WellArchitected.Types.OrganizationSharingStatus
+import Amazonka.WellArchitected.Types.PermissionType
+import Amazonka.WellArchitected.Types.PillarDifference
+import Amazonka.WellArchitected.Types.PillarReviewSummary
+import Amazonka.WellArchitected.Types.QuestionDifference
+import Amazonka.WellArchitected.Types.Risk
+import Amazonka.WellArchitected.Types.ShareInvitation
+import Amazonka.WellArchitected.Types.ShareInvitationAction
+import Amazonka.WellArchitected.Types.ShareInvitationSummary
+import Amazonka.WellArchitected.Types.ShareResourceType
+import Amazonka.WellArchitected.Types.ShareStatus
+import Amazonka.WellArchitected.Types.TrustedAdvisorIntegrationStatus
+import Amazonka.WellArchitected.Types.VersionDifferences
+import Amazonka.WellArchitected.Types.Workload
+import Amazonka.WellArchitected.Types.WorkloadDiscoveryConfig
+import Amazonka.WellArchitected.Types.WorkloadEnvironment
+import Amazonka.WellArchitected.Types.WorkloadImprovementStatus
+import Amazonka.WellArchitected.Types.WorkloadShare
+import Amazonka.WellArchitected.Types.WorkloadShareSummary
+import Amazonka.WellArchitected.Types.WorkloadSummary
+
+-- | API version @2020-03-31@ of the Amazon Well-Architected Tool SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "WellArchitected",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "wellarchitected",
+      Core.signingName = "wellarchitected",
+      Core.version = "2020-03-31",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "WellArchitected",
+      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
+
+-- | User does not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | The resource already exists.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | There is a problem with the Well-Architected Tool API service.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The requested resource was not found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The user has reached their resource quota.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | Request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The user input is not valid.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/WellArchitected/Types/AdditionalResourceType.hs b/gen/Amazonka/WellArchitected/Types/AdditionalResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/AdditionalResourceType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.AdditionalResourceType
+-- 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.WellArchitected.Types.AdditionalResourceType
+  ( AdditionalResourceType
+      ( ..,
+        AdditionalResourceType_HELPFUL_RESOURCE,
+        AdditionalResourceType_IMPROVEMENT_PLAN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AdditionalResourceType = AdditionalResourceType'
+  { fromAdditionalResourceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AdditionalResourceType_HELPFUL_RESOURCE :: AdditionalResourceType
+pattern AdditionalResourceType_HELPFUL_RESOURCE = AdditionalResourceType' "HELPFUL_RESOURCE"
+
+pattern AdditionalResourceType_IMPROVEMENT_PLAN :: AdditionalResourceType
+pattern AdditionalResourceType_IMPROVEMENT_PLAN = AdditionalResourceType' "IMPROVEMENT_PLAN"
+
+{-# COMPLETE
+  AdditionalResourceType_HELPFUL_RESOURCE,
+  AdditionalResourceType_IMPROVEMENT_PLAN,
+  AdditionalResourceType'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/AdditionalResources.hs b/gen/Amazonka/WellArchitected/Types/AdditionalResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/AdditionalResources.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.AdditionalResources
+-- 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.WellArchitected.Types.AdditionalResources where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.AdditionalResourceType
+import Amazonka.WellArchitected.Types.ChoiceContent
+
+-- | The choice level additional resources.
+--
+-- /See:/ 'newAdditionalResources' smart constructor.
+data AdditionalResources = AdditionalResources'
+  { -- | The URLs for additional resources, either helpful resources or
+    -- improvement plans. Up to five additional URLs can be specified.
+    content :: Prelude.Maybe [ChoiceContent],
+    -- | Type of additional resource.
+    type' :: Prelude.Maybe AdditionalResourceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AdditionalResources' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'content', 'additionalResources_content' - The URLs for additional resources, either helpful resources or
+-- improvement plans. Up to five additional URLs can be specified.
+--
+-- 'type'', 'additionalResources_type' - Type of additional resource.
+newAdditionalResources ::
+  AdditionalResources
+newAdditionalResources =
+  AdditionalResources'
+    { content = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The URLs for additional resources, either helpful resources or
+-- improvement plans. Up to five additional URLs can be specified.
+additionalResources_content :: Lens.Lens' AdditionalResources (Prelude.Maybe [ChoiceContent])
+additionalResources_content = Lens.lens (\AdditionalResources' {content} -> content) (\s@AdditionalResources' {} a -> s {content = a} :: AdditionalResources) Prelude.. Lens.mapping Lens.coerced
+
+-- | Type of additional resource.
+additionalResources_type :: Lens.Lens' AdditionalResources (Prelude.Maybe AdditionalResourceType)
+additionalResources_type = Lens.lens (\AdditionalResources' {type'} -> type') (\s@AdditionalResources' {} a -> s {type' = a} :: AdditionalResources)
+
+instance Data.FromJSON AdditionalResources where
+  parseJSON =
+    Data.withObject
+      "AdditionalResources"
+      ( \x ->
+          AdditionalResources'
+            Prelude.<$> (x Data..:? "Content" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable AdditionalResources where
+  hashWithSalt _salt AdditionalResources' {..} =
+    _salt
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData AdditionalResources where
+  rnf AdditionalResources' {..} =
+    Prelude.rnf content `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/WellArchitected/Types/Answer.hs b/gen/Amazonka/WellArchitected/Types/Answer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/Answer.hs
@@ -0,0 +1,224 @@
+{-# 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.WellArchitected.Types.Answer
+-- 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.WellArchitected.Types.Answer where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.AnswerReason
+import Amazonka.WellArchitected.Types.Choice
+import Amazonka.WellArchitected.Types.ChoiceAnswer
+import Amazonka.WellArchitected.Types.Risk
+
+-- | An answer of the question.
+--
+-- /See:/ 'newAnswer' smart constructor.
+data Answer = Answer'
+  { -- | A list of selected choices to a question in your workload.
+    choiceAnswers :: Prelude.Maybe [ChoiceAnswer],
+    choices :: Prelude.Maybe [Choice],
+    -- | The helpful resource text to be displayed.
+    helpfulResourceDisplayText :: Prelude.Maybe Prelude.Text,
+    helpfulResourceUrl :: Prelude.Maybe Prelude.Text,
+    improvementPlanUrl :: Prelude.Maybe Prelude.Text,
+    isApplicable :: Prelude.Maybe Prelude.Bool,
+    notes :: Prelude.Maybe Prelude.Text,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    questionDescription :: Prelude.Maybe Prelude.Text,
+    questionId :: Prelude.Maybe Prelude.Text,
+    questionTitle :: Prelude.Maybe Prelude.Text,
+    -- | The reason why the question is not applicable to your workload.
+    reason :: Prelude.Maybe AnswerReason,
+    risk :: Prelude.Maybe Risk,
+    selectedChoices :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Answer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'choiceAnswers', 'answer_choiceAnswers' - A list of selected choices to a question in your workload.
+--
+-- 'choices', 'answer_choices' - Undocumented member.
+--
+-- 'helpfulResourceDisplayText', 'answer_helpfulResourceDisplayText' - The helpful resource text to be displayed.
+--
+-- 'helpfulResourceUrl', 'answer_helpfulResourceUrl' - Undocumented member.
+--
+-- 'improvementPlanUrl', 'answer_improvementPlanUrl' - Undocumented member.
+--
+-- 'isApplicable', 'answer_isApplicable' - Undocumented member.
+--
+-- 'notes', 'answer_notes' - Undocumented member.
+--
+-- 'pillarId', 'answer_pillarId' - Undocumented member.
+--
+-- 'questionDescription', 'answer_questionDescription' - Undocumented member.
+--
+-- 'questionId', 'answer_questionId' - Undocumented member.
+--
+-- 'questionTitle', 'answer_questionTitle' - Undocumented member.
+--
+-- 'reason', 'answer_reason' - The reason why the question is not applicable to your workload.
+--
+-- 'risk', 'answer_risk' - Undocumented member.
+--
+-- 'selectedChoices', 'answer_selectedChoices' - Undocumented member.
+newAnswer ::
+  Answer
+newAnswer =
+  Answer'
+    { choiceAnswers = Prelude.Nothing,
+      choices = Prelude.Nothing,
+      helpfulResourceDisplayText = Prelude.Nothing,
+      helpfulResourceUrl = Prelude.Nothing,
+      improvementPlanUrl = Prelude.Nothing,
+      isApplicable = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      questionDescription = Prelude.Nothing,
+      questionId = Prelude.Nothing,
+      questionTitle = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      risk = Prelude.Nothing,
+      selectedChoices = Prelude.Nothing
+    }
+
+-- | A list of selected choices to a question in your workload.
+answer_choiceAnswers :: Lens.Lens' Answer (Prelude.Maybe [ChoiceAnswer])
+answer_choiceAnswers = Lens.lens (\Answer' {choiceAnswers} -> choiceAnswers) (\s@Answer' {} a -> s {choiceAnswers = a} :: Answer) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+answer_choices :: Lens.Lens' Answer (Prelude.Maybe [Choice])
+answer_choices = Lens.lens (\Answer' {choices} -> choices) (\s@Answer' {} a -> s {choices = a} :: Answer) Prelude.. Lens.mapping Lens.coerced
+
+-- | The helpful resource text to be displayed.
+answer_helpfulResourceDisplayText :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_helpfulResourceDisplayText = Lens.lens (\Answer' {helpfulResourceDisplayText} -> helpfulResourceDisplayText) (\s@Answer' {} a -> s {helpfulResourceDisplayText = a} :: Answer)
+
+-- | Undocumented member.
+answer_helpfulResourceUrl :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_helpfulResourceUrl = Lens.lens (\Answer' {helpfulResourceUrl} -> helpfulResourceUrl) (\s@Answer' {} a -> s {helpfulResourceUrl = a} :: Answer)
+
+-- | Undocumented member.
+answer_improvementPlanUrl :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_improvementPlanUrl = Lens.lens (\Answer' {improvementPlanUrl} -> improvementPlanUrl) (\s@Answer' {} a -> s {improvementPlanUrl = a} :: Answer)
+
+-- | Undocumented member.
+answer_isApplicable :: Lens.Lens' Answer (Prelude.Maybe Prelude.Bool)
+answer_isApplicable = Lens.lens (\Answer' {isApplicable} -> isApplicable) (\s@Answer' {} a -> s {isApplicable = a} :: Answer)
+
+-- | Undocumented member.
+answer_notes :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_notes = Lens.lens (\Answer' {notes} -> notes) (\s@Answer' {} a -> s {notes = a} :: Answer)
+
+-- | Undocumented member.
+answer_pillarId :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_pillarId = Lens.lens (\Answer' {pillarId} -> pillarId) (\s@Answer' {} a -> s {pillarId = a} :: Answer)
+
+-- | Undocumented member.
+answer_questionDescription :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_questionDescription = Lens.lens (\Answer' {questionDescription} -> questionDescription) (\s@Answer' {} a -> s {questionDescription = a} :: Answer)
+
+-- | Undocumented member.
+answer_questionId :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_questionId = Lens.lens (\Answer' {questionId} -> questionId) (\s@Answer' {} a -> s {questionId = a} :: Answer)
+
+-- | Undocumented member.
+answer_questionTitle :: Lens.Lens' Answer (Prelude.Maybe Prelude.Text)
+answer_questionTitle = Lens.lens (\Answer' {questionTitle} -> questionTitle) (\s@Answer' {} a -> s {questionTitle = a} :: Answer)
+
+-- | The reason why the question is not applicable to your workload.
+answer_reason :: Lens.Lens' Answer (Prelude.Maybe AnswerReason)
+answer_reason = Lens.lens (\Answer' {reason} -> reason) (\s@Answer' {} a -> s {reason = a} :: Answer)
+
+-- | Undocumented member.
+answer_risk :: Lens.Lens' Answer (Prelude.Maybe Risk)
+answer_risk = Lens.lens (\Answer' {risk} -> risk) (\s@Answer' {} a -> s {risk = a} :: Answer)
+
+-- | Undocumented member.
+answer_selectedChoices :: Lens.Lens' Answer (Prelude.Maybe [Prelude.Text])
+answer_selectedChoices = Lens.lens (\Answer' {selectedChoices} -> selectedChoices) (\s@Answer' {} a -> s {selectedChoices = a} :: Answer) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Answer where
+  parseJSON =
+    Data.withObject
+      "Answer"
+      ( \x ->
+          Answer'
+            Prelude.<$> (x Data..:? "ChoiceAnswers" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Choices" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "HelpfulResourceDisplayText")
+            Prelude.<*> (x Data..:? "HelpfulResourceUrl")
+            Prelude.<*> (x Data..:? "ImprovementPlanUrl")
+            Prelude.<*> (x Data..:? "IsApplicable")
+            Prelude.<*> (x Data..:? "Notes")
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "QuestionDescription")
+            Prelude.<*> (x Data..:? "QuestionId")
+            Prelude.<*> (x Data..:? "QuestionTitle")
+            Prelude.<*> (x Data..:? "Reason")
+            Prelude.<*> (x Data..:? "Risk")
+            Prelude.<*> ( x
+                            Data..:? "SelectedChoices"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable Answer where
+  hashWithSalt _salt Answer' {..} =
+    _salt
+      `Prelude.hashWithSalt` choiceAnswers
+      `Prelude.hashWithSalt` choices
+      `Prelude.hashWithSalt` helpfulResourceDisplayText
+      `Prelude.hashWithSalt` helpfulResourceUrl
+      `Prelude.hashWithSalt` improvementPlanUrl
+      `Prelude.hashWithSalt` isApplicable
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` questionDescription
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` questionTitle
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` risk
+      `Prelude.hashWithSalt` selectedChoices
+
+instance Prelude.NFData Answer where
+  rnf Answer' {..} =
+    Prelude.rnf choiceAnswers
+      `Prelude.seq` Prelude.rnf choices
+      `Prelude.seq` Prelude.rnf helpfulResourceDisplayText
+      `Prelude.seq` Prelude.rnf helpfulResourceUrl
+      `Prelude.seq` Prelude.rnf improvementPlanUrl
+      `Prelude.seq` Prelude.rnf isApplicable
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf questionDescription
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf questionTitle
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf risk
+      `Prelude.seq` Prelude.rnf selectedChoices
diff --git a/gen/Amazonka/WellArchitected/Types/AnswerReason.hs b/gen/Amazonka/WellArchitected/Types/AnswerReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/AnswerReason.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.AnswerReason
+-- 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.WellArchitected.Types.AnswerReason
+  ( AnswerReason
+      ( ..,
+        AnswerReason_ARCHITECTURE_CONSTRAINTS,
+        AnswerReason_BUSINESS_PRIORITIES,
+        AnswerReason_NONE,
+        AnswerReason_OTHER,
+        AnswerReason_OUT_OF_SCOPE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AnswerReason = AnswerReason'
+  { fromAnswerReason ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AnswerReason_ARCHITECTURE_CONSTRAINTS :: AnswerReason
+pattern AnswerReason_ARCHITECTURE_CONSTRAINTS = AnswerReason' "ARCHITECTURE_CONSTRAINTS"
+
+pattern AnswerReason_BUSINESS_PRIORITIES :: AnswerReason
+pattern AnswerReason_BUSINESS_PRIORITIES = AnswerReason' "BUSINESS_PRIORITIES"
+
+pattern AnswerReason_NONE :: AnswerReason
+pattern AnswerReason_NONE = AnswerReason' "NONE"
+
+pattern AnswerReason_OTHER :: AnswerReason
+pattern AnswerReason_OTHER = AnswerReason' "OTHER"
+
+pattern AnswerReason_OUT_OF_SCOPE :: AnswerReason
+pattern AnswerReason_OUT_OF_SCOPE = AnswerReason' "OUT_OF_SCOPE"
+
+{-# COMPLETE
+  AnswerReason_ARCHITECTURE_CONSTRAINTS,
+  AnswerReason_BUSINESS_PRIORITIES,
+  AnswerReason_NONE,
+  AnswerReason_OTHER,
+  AnswerReason_OUT_OF_SCOPE,
+  AnswerReason'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/AnswerSummary.hs b/gen/Amazonka/WellArchitected/Types/AnswerSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/AnswerSummary.hs
@@ -0,0 +1,175 @@
+{-# 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.WellArchitected.Types.AnswerSummary
+-- 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.WellArchitected.Types.AnswerSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.AnswerReason
+import Amazonka.WellArchitected.Types.Choice
+import Amazonka.WellArchitected.Types.ChoiceAnswerSummary
+import Amazonka.WellArchitected.Types.Risk
+
+-- | An answer summary of a lens review in a workload.
+--
+-- /See:/ 'newAnswerSummary' smart constructor.
+data AnswerSummary = AnswerSummary'
+  { -- | A list of selected choices to a question in your workload.
+    choiceAnswerSummaries :: Prelude.Maybe [ChoiceAnswerSummary],
+    choices :: Prelude.Maybe [Choice],
+    isApplicable :: Prelude.Maybe Prelude.Bool,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    questionId :: Prelude.Maybe Prelude.Text,
+    questionTitle :: Prelude.Maybe Prelude.Text,
+    -- | The reason why a choice is non-applicable to a question in your
+    -- workload.
+    reason :: Prelude.Maybe AnswerReason,
+    risk :: Prelude.Maybe Risk,
+    selectedChoices :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnswerSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'choiceAnswerSummaries', 'answerSummary_choiceAnswerSummaries' - A list of selected choices to a question in your workload.
+--
+-- 'choices', 'answerSummary_choices' - Undocumented member.
+--
+-- 'isApplicable', 'answerSummary_isApplicable' - Undocumented member.
+--
+-- 'pillarId', 'answerSummary_pillarId' - Undocumented member.
+--
+-- 'questionId', 'answerSummary_questionId' - Undocumented member.
+--
+-- 'questionTitle', 'answerSummary_questionTitle' - Undocumented member.
+--
+-- 'reason', 'answerSummary_reason' - The reason why a choice is non-applicable to a question in your
+-- workload.
+--
+-- 'risk', 'answerSummary_risk' - Undocumented member.
+--
+-- 'selectedChoices', 'answerSummary_selectedChoices' - Undocumented member.
+newAnswerSummary ::
+  AnswerSummary
+newAnswerSummary =
+  AnswerSummary'
+    { choiceAnswerSummaries =
+        Prelude.Nothing,
+      choices = Prelude.Nothing,
+      isApplicable = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      questionId = Prelude.Nothing,
+      questionTitle = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      risk = Prelude.Nothing,
+      selectedChoices = Prelude.Nothing
+    }
+
+-- | A list of selected choices to a question in your workload.
+answerSummary_choiceAnswerSummaries :: Lens.Lens' AnswerSummary (Prelude.Maybe [ChoiceAnswerSummary])
+answerSummary_choiceAnswerSummaries = Lens.lens (\AnswerSummary' {choiceAnswerSummaries} -> choiceAnswerSummaries) (\s@AnswerSummary' {} a -> s {choiceAnswerSummaries = a} :: AnswerSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+answerSummary_choices :: Lens.Lens' AnswerSummary (Prelude.Maybe [Choice])
+answerSummary_choices = Lens.lens (\AnswerSummary' {choices} -> choices) (\s@AnswerSummary' {} a -> s {choices = a} :: AnswerSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+answerSummary_isApplicable :: Lens.Lens' AnswerSummary (Prelude.Maybe Prelude.Bool)
+answerSummary_isApplicable = Lens.lens (\AnswerSummary' {isApplicable} -> isApplicable) (\s@AnswerSummary' {} a -> s {isApplicable = a} :: AnswerSummary)
+
+-- | Undocumented member.
+answerSummary_pillarId :: Lens.Lens' AnswerSummary (Prelude.Maybe Prelude.Text)
+answerSummary_pillarId = Lens.lens (\AnswerSummary' {pillarId} -> pillarId) (\s@AnswerSummary' {} a -> s {pillarId = a} :: AnswerSummary)
+
+-- | Undocumented member.
+answerSummary_questionId :: Lens.Lens' AnswerSummary (Prelude.Maybe Prelude.Text)
+answerSummary_questionId = Lens.lens (\AnswerSummary' {questionId} -> questionId) (\s@AnswerSummary' {} a -> s {questionId = a} :: AnswerSummary)
+
+-- | Undocumented member.
+answerSummary_questionTitle :: Lens.Lens' AnswerSummary (Prelude.Maybe Prelude.Text)
+answerSummary_questionTitle = Lens.lens (\AnswerSummary' {questionTitle} -> questionTitle) (\s@AnswerSummary' {} a -> s {questionTitle = a} :: AnswerSummary)
+
+-- | The reason why a choice is non-applicable to a question in your
+-- workload.
+answerSummary_reason :: Lens.Lens' AnswerSummary (Prelude.Maybe AnswerReason)
+answerSummary_reason = Lens.lens (\AnswerSummary' {reason} -> reason) (\s@AnswerSummary' {} a -> s {reason = a} :: AnswerSummary)
+
+-- | Undocumented member.
+answerSummary_risk :: Lens.Lens' AnswerSummary (Prelude.Maybe Risk)
+answerSummary_risk = Lens.lens (\AnswerSummary' {risk} -> risk) (\s@AnswerSummary' {} a -> s {risk = a} :: AnswerSummary)
+
+-- | Undocumented member.
+answerSummary_selectedChoices :: Lens.Lens' AnswerSummary (Prelude.Maybe [Prelude.Text])
+answerSummary_selectedChoices = Lens.lens (\AnswerSummary' {selectedChoices} -> selectedChoices) (\s@AnswerSummary' {} a -> s {selectedChoices = a} :: AnswerSummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AnswerSummary where
+  parseJSON =
+    Data.withObject
+      "AnswerSummary"
+      ( \x ->
+          AnswerSummary'
+            Prelude.<$> ( x
+                            Data..:? "ChoiceAnswerSummaries"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Choices" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "IsApplicable")
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "QuestionId")
+            Prelude.<*> (x Data..:? "QuestionTitle")
+            Prelude.<*> (x Data..:? "Reason")
+            Prelude.<*> (x Data..:? "Risk")
+            Prelude.<*> ( x
+                            Data..:? "SelectedChoices"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable AnswerSummary where
+  hashWithSalt _salt AnswerSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` choiceAnswerSummaries
+      `Prelude.hashWithSalt` choices
+      `Prelude.hashWithSalt` isApplicable
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` questionTitle
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` risk
+      `Prelude.hashWithSalt` selectedChoices
+
+instance Prelude.NFData AnswerSummary where
+  rnf AnswerSummary' {..} =
+    Prelude.rnf choiceAnswerSummaries
+      `Prelude.seq` Prelude.rnf choices
+      `Prelude.seq` Prelude.rnf isApplicable
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf questionTitle
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf risk
+      `Prelude.seq` Prelude.rnf selectedChoices
diff --git a/gen/Amazonka/WellArchitected/Types/CheckDetail.hs b/gen/Amazonka/WellArchitected/Types/CheckDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/CheckDetail.hs
@@ -0,0 +1,215 @@
+{-# 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.WellArchitected.Types.CheckDetail
+-- 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.WellArchitected.Types.CheckDetail where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.CheckFailureReason
+import Amazonka.WellArchitected.Types.CheckProvider
+import Amazonka.WellArchitected.Types.CheckStatus
+
+-- | Account details for a Well-Architected best practice in relation to
+-- Trusted Advisor checks.
+--
+-- /See:/ 'newCheckDetail' smart constructor.
+data CheckDetail = CheckDetail'
+  { accountId :: Prelude.Maybe Prelude.Text,
+    choiceId :: Prelude.Maybe Prelude.Text,
+    -- | Trusted Advisor check description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Count of flagged resources associated to the check.
+    flaggedResources :: Prelude.Maybe Prelude.Natural,
+    -- | Trusted Advisor check ID.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | Well-Architected Lens ARN associated to the check.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | Trusted Advisor check name.
+    name :: Prelude.Maybe Prelude.Text,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    -- | Provider of the check related to the best practice.
+    provider :: Prelude.Maybe CheckProvider,
+    questionId :: Prelude.Maybe Prelude.Text,
+    -- | Reason associated to the check.
+    reason :: Prelude.Maybe CheckFailureReason,
+    -- | Status associated to the check.
+    status :: Prelude.Maybe CheckStatus,
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CheckDetail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'checkDetail_accountId' - Undocumented member.
+--
+-- 'choiceId', 'checkDetail_choiceId' - Undocumented member.
+--
+-- 'description', 'checkDetail_description' - Trusted Advisor check description.
+--
+-- 'flaggedResources', 'checkDetail_flaggedResources' - Count of flagged resources associated to the check.
+--
+-- 'id', 'checkDetail_id' - Trusted Advisor check ID.
+--
+-- 'lensArn', 'checkDetail_lensArn' - Well-Architected Lens ARN associated to the check.
+--
+-- 'name', 'checkDetail_name' - Trusted Advisor check name.
+--
+-- 'pillarId', 'checkDetail_pillarId' - Undocumented member.
+--
+-- 'provider', 'checkDetail_provider' - Provider of the check related to the best practice.
+--
+-- 'questionId', 'checkDetail_questionId' - Undocumented member.
+--
+-- 'reason', 'checkDetail_reason' - Reason associated to the check.
+--
+-- 'status', 'checkDetail_status' - Status associated to the check.
+--
+-- 'updatedAt', 'checkDetail_updatedAt' - Undocumented member.
+newCheckDetail ::
+  CheckDetail
+newCheckDetail =
+  CheckDetail'
+    { accountId = Prelude.Nothing,
+      choiceId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      flaggedResources = Prelude.Nothing,
+      id = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      name = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      provider = Prelude.Nothing,
+      questionId = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+checkDetail_accountId :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_accountId = Lens.lens (\CheckDetail' {accountId} -> accountId) (\s@CheckDetail' {} a -> s {accountId = a} :: CheckDetail)
+
+-- | Undocumented member.
+checkDetail_choiceId :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_choiceId = Lens.lens (\CheckDetail' {choiceId} -> choiceId) (\s@CheckDetail' {} a -> s {choiceId = a} :: CheckDetail)
+
+-- | Trusted Advisor check description.
+checkDetail_description :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_description = Lens.lens (\CheckDetail' {description} -> description) (\s@CheckDetail' {} a -> s {description = a} :: CheckDetail)
+
+-- | Count of flagged resources associated to the check.
+checkDetail_flaggedResources :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Natural)
+checkDetail_flaggedResources = Lens.lens (\CheckDetail' {flaggedResources} -> flaggedResources) (\s@CheckDetail' {} a -> s {flaggedResources = a} :: CheckDetail)
+
+-- | Trusted Advisor check ID.
+checkDetail_id :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_id = Lens.lens (\CheckDetail' {id} -> id) (\s@CheckDetail' {} a -> s {id = a} :: CheckDetail)
+
+-- | Well-Architected Lens ARN associated to the check.
+checkDetail_lensArn :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_lensArn = Lens.lens (\CheckDetail' {lensArn} -> lensArn) (\s@CheckDetail' {} a -> s {lensArn = a} :: CheckDetail)
+
+-- | Trusted Advisor check name.
+checkDetail_name :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_name = Lens.lens (\CheckDetail' {name} -> name) (\s@CheckDetail' {} a -> s {name = a} :: CheckDetail)
+
+-- | Undocumented member.
+checkDetail_pillarId :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_pillarId = Lens.lens (\CheckDetail' {pillarId} -> pillarId) (\s@CheckDetail' {} a -> s {pillarId = a} :: CheckDetail)
+
+-- | Provider of the check related to the best practice.
+checkDetail_provider :: Lens.Lens' CheckDetail (Prelude.Maybe CheckProvider)
+checkDetail_provider = Lens.lens (\CheckDetail' {provider} -> provider) (\s@CheckDetail' {} a -> s {provider = a} :: CheckDetail)
+
+-- | Undocumented member.
+checkDetail_questionId :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.Text)
+checkDetail_questionId = Lens.lens (\CheckDetail' {questionId} -> questionId) (\s@CheckDetail' {} a -> s {questionId = a} :: CheckDetail)
+
+-- | Reason associated to the check.
+checkDetail_reason :: Lens.Lens' CheckDetail (Prelude.Maybe CheckFailureReason)
+checkDetail_reason = Lens.lens (\CheckDetail' {reason} -> reason) (\s@CheckDetail' {} a -> s {reason = a} :: CheckDetail)
+
+-- | Status associated to the check.
+checkDetail_status :: Lens.Lens' CheckDetail (Prelude.Maybe CheckStatus)
+checkDetail_status = Lens.lens (\CheckDetail' {status} -> status) (\s@CheckDetail' {} a -> s {status = a} :: CheckDetail)
+
+-- | Undocumented member.
+checkDetail_updatedAt :: Lens.Lens' CheckDetail (Prelude.Maybe Prelude.UTCTime)
+checkDetail_updatedAt = Lens.lens (\CheckDetail' {updatedAt} -> updatedAt) (\s@CheckDetail' {} a -> s {updatedAt = a} :: CheckDetail) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON CheckDetail where
+  parseJSON =
+    Data.withObject
+      "CheckDetail"
+      ( \x ->
+          CheckDetail'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "ChoiceId")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "FlaggedResources")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "Provider")
+            Prelude.<*> (x Data..:? "QuestionId")
+            Prelude.<*> (x Data..:? "Reason")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable CheckDetail where
+  hashWithSalt _salt CheckDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` choiceId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` flaggedResources
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` provider
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData CheckDetail where
+  rnf CheckDetail' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf choiceId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf flaggedResources
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf provider
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/WellArchitected/Types/CheckFailureReason.hs b/gen/Amazonka/WellArchitected/Types/CheckFailureReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/CheckFailureReason.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.CheckFailureReason
+-- 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.WellArchitected.Types.CheckFailureReason
+  ( CheckFailureReason
+      ( ..,
+        CheckFailureReason_ACCESS_DENIED,
+        CheckFailureReason_ASSUME_ROLE_ERROR,
+        CheckFailureReason_PREMIUM_SUPPORT_REQUIRED,
+        CheckFailureReason_UNKNOWN_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CheckFailureReason = CheckFailureReason'
+  { fromCheckFailureReason ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CheckFailureReason_ACCESS_DENIED :: CheckFailureReason
+pattern CheckFailureReason_ACCESS_DENIED = CheckFailureReason' "ACCESS_DENIED"
+
+pattern CheckFailureReason_ASSUME_ROLE_ERROR :: CheckFailureReason
+pattern CheckFailureReason_ASSUME_ROLE_ERROR = CheckFailureReason' "ASSUME_ROLE_ERROR"
+
+pattern CheckFailureReason_PREMIUM_SUPPORT_REQUIRED :: CheckFailureReason
+pattern CheckFailureReason_PREMIUM_SUPPORT_REQUIRED = CheckFailureReason' "PREMIUM_SUPPORT_REQUIRED"
+
+pattern CheckFailureReason_UNKNOWN_ERROR :: CheckFailureReason
+pattern CheckFailureReason_UNKNOWN_ERROR = CheckFailureReason' "UNKNOWN_ERROR"
+
+{-# COMPLETE
+  CheckFailureReason_ACCESS_DENIED,
+  CheckFailureReason_ASSUME_ROLE_ERROR,
+  CheckFailureReason_PREMIUM_SUPPORT_REQUIRED,
+  CheckFailureReason_UNKNOWN_ERROR,
+  CheckFailureReason'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/CheckProvider.hs b/gen/Amazonka/WellArchitected/Types/CheckProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/CheckProvider.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.CheckProvider
+-- 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.WellArchitected.Types.CheckProvider
+  ( CheckProvider
+      ( ..,
+        CheckProvider_TRUSTED_ADVISOR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CheckProvider = CheckProvider'
+  { fromCheckProvider ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CheckProvider_TRUSTED_ADVISOR :: CheckProvider
+pattern CheckProvider_TRUSTED_ADVISOR = CheckProvider' "TRUSTED_ADVISOR"
+
+{-# COMPLETE
+  CheckProvider_TRUSTED_ADVISOR,
+  CheckProvider'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/CheckStatus.hs b/gen/Amazonka/WellArchitected/Types/CheckStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/CheckStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.CheckStatus
+-- 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.WellArchitected.Types.CheckStatus
+  ( CheckStatus
+      ( ..,
+        CheckStatus_ERROR,
+        CheckStatus_FETCH_FAILED,
+        CheckStatus_NOT_AVAILABLE,
+        CheckStatus_OKAY,
+        CheckStatus_WARNING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CheckStatus = CheckStatus'
+  { fromCheckStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CheckStatus_ERROR :: CheckStatus
+pattern CheckStatus_ERROR = CheckStatus' "ERROR"
+
+pattern CheckStatus_FETCH_FAILED :: CheckStatus
+pattern CheckStatus_FETCH_FAILED = CheckStatus' "FETCH_FAILED"
+
+pattern CheckStatus_NOT_AVAILABLE :: CheckStatus
+pattern CheckStatus_NOT_AVAILABLE = CheckStatus' "NOT_AVAILABLE"
+
+pattern CheckStatus_OKAY :: CheckStatus
+pattern CheckStatus_OKAY = CheckStatus' "OKAY"
+
+pattern CheckStatus_WARNING :: CheckStatus
+pattern CheckStatus_WARNING = CheckStatus' "WARNING"
+
+{-# COMPLETE
+  CheckStatus_ERROR,
+  CheckStatus_FETCH_FAILED,
+  CheckStatus_NOT_AVAILABLE,
+  CheckStatus_OKAY,
+  CheckStatus_WARNING,
+  CheckStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/CheckSummary.hs b/gen/Amazonka/WellArchitected/Types/CheckSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/CheckSummary.hs
@@ -0,0 +1,190 @@
+{-# 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.WellArchitected.Types.CheckSummary
+-- 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.WellArchitected.Types.CheckSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.CheckProvider
+import Amazonka.WellArchitected.Types.CheckStatus
+
+-- | Trusted Advisor check summary.
+--
+-- /See:/ 'newCheckSummary' smart constructor.
+data CheckSummary = CheckSummary'
+  { -- | Account summary associated to the check.
+    accountSummary :: Prelude.Maybe (Prelude.HashMap CheckStatus Prelude.Natural),
+    choiceId :: Prelude.Maybe Prelude.Text,
+    -- | Trusted Advisor check description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Trusted Advisor check ID.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | Well-Architected Lens ARN associated to the check.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | Trusted Advisor check name.
+    name :: Prelude.Maybe Prelude.Text,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    -- | Provider of the check related to the best practice.
+    provider :: Prelude.Maybe CheckProvider,
+    questionId :: Prelude.Maybe Prelude.Text,
+    -- | Status associated to the check.
+    status :: Prelude.Maybe CheckStatus,
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CheckSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountSummary', 'checkSummary_accountSummary' - Account summary associated to the check.
+--
+-- 'choiceId', 'checkSummary_choiceId' - Undocumented member.
+--
+-- 'description', 'checkSummary_description' - Trusted Advisor check description.
+--
+-- 'id', 'checkSummary_id' - Trusted Advisor check ID.
+--
+-- 'lensArn', 'checkSummary_lensArn' - Well-Architected Lens ARN associated to the check.
+--
+-- 'name', 'checkSummary_name' - Trusted Advisor check name.
+--
+-- 'pillarId', 'checkSummary_pillarId' - Undocumented member.
+--
+-- 'provider', 'checkSummary_provider' - Provider of the check related to the best practice.
+--
+-- 'questionId', 'checkSummary_questionId' - Undocumented member.
+--
+-- 'status', 'checkSummary_status' - Status associated to the check.
+--
+-- 'updatedAt', 'checkSummary_updatedAt' - Undocumented member.
+newCheckSummary ::
+  CheckSummary
+newCheckSummary =
+  CheckSummary'
+    { accountSummary = Prelude.Nothing,
+      choiceId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      id = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      name = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      provider = Prelude.Nothing,
+      questionId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | Account summary associated to the check.
+checkSummary_accountSummary :: Lens.Lens' CheckSummary (Prelude.Maybe (Prelude.HashMap CheckStatus Prelude.Natural))
+checkSummary_accountSummary = Lens.lens (\CheckSummary' {accountSummary} -> accountSummary) (\s@CheckSummary' {} a -> s {accountSummary = a} :: CheckSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+checkSummary_choiceId :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_choiceId = Lens.lens (\CheckSummary' {choiceId} -> choiceId) (\s@CheckSummary' {} a -> s {choiceId = a} :: CheckSummary)
+
+-- | Trusted Advisor check description.
+checkSummary_description :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_description = Lens.lens (\CheckSummary' {description} -> description) (\s@CheckSummary' {} a -> s {description = a} :: CheckSummary)
+
+-- | Trusted Advisor check ID.
+checkSummary_id :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_id = Lens.lens (\CheckSummary' {id} -> id) (\s@CheckSummary' {} a -> s {id = a} :: CheckSummary)
+
+-- | Well-Architected Lens ARN associated to the check.
+checkSummary_lensArn :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_lensArn = Lens.lens (\CheckSummary' {lensArn} -> lensArn) (\s@CheckSummary' {} a -> s {lensArn = a} :: CheckSummary)
+
+-- | Trusted Advisor check name.
+checkSummary_name :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_name = Lens.lens (\CheckSummary' {name} -> name) (\s@CheckSummary' {} a -> s {name = a} :: CheckSummary)
+
+-- | Undocumented member.
+checkSummary_pillarId :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_pillarId = Lens.lens (\CheckSummary' {pillarId} -> pillarId) (\s@CheckSummary' {} a -> s {pillarId = a} :: CheckSummary)
+
+-- | Provider of the check related to the best practice.
+checkSummary_provider :: Lens.Lens' CheckSummary (Prelude.Maybe CheckProvider)
+checkSummary_provider = Lens.lens (\CheckSummary' {provider} -> provider) (\s@CheckSummary' {} a -> s {provider = a} :: CheckSummary)
+
+-- | Undocumented member.
+checkSummary_questionId :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.Text)
+checkSummary_questionId = Lens.lens (\CheckSummary' {questionId} -> questionId) (\s@CheckSummary' {} a -> s {questionId = a} :: CheckSummary)
+
+-- | Status associated to the check.
+checkSummary_status :: Lens.Lens' CheckSummary (Prelude.Maybe CheckStatus)
+checkSummary_status = Lens.lens (\CheckSummary' {status} -> status) (\s@CheckSummary' {} a -> s {status = a} :: CheckSummary)
+
+-- | Undocumented member.
+checkSummary_updatedAt :: Lens.Lens' CheckSummary (Prelude.Maybe Prelude.UTCTime)
+checkSummary_updatedAt = Lens.lens (\CheckSummary' {updatedAt} -> updatedAt) (\s@CheckSummary' {} a -> s {updatedAt = a} :: CheckSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON CheckSummary where
+  parseJSON =
+    Data.withObject
+      "CheckSummary"
+      ( \x ->
+          CheckSummary'
+            Prelude.<$> (x Data..:? "AccountSummary" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChoiceId")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "Provider")
+            Prelude.<*> (x Data..:? "QuestionId")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable CheckSummary where
+  hashWithSalt _salt CheckSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountSummary
+      `Prelude.hashWithSalt` choiceId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` provider
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData CheckSummary where
+  rnf CheckSummary' {..} =
+    Prelude.rnf accountSummary
+      `Prelude.seq` Prelude.rnf choiceId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf provider
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/WellArchitected/Types/Choice.hs b/gen/Amazonka/WellArchitected/Types/Choice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/Choice.hs
@@ -0,0 +1,140 @@
+{-# 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.WellArchitected.Types.Choice
+-- 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.WellArchitected.Types.Choice where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.AdditionalResources
+import Amazonka.WellArchitected.Types.ChoiceContent
+
+-- | A choice available to answer question.
+--
+-- /See:/ 'newChoice' smart constructor.
+data Choice = Choice'
+  { -- | The additional resources for a choice. A choice can have up to two
+    -- additional resources: one of type @HELPFUL_RESOURCE@, one of type
+    -- @IMPROVEMENT_PLAN@, or both.
+    additionalResources :: Prelude.Maybe [AdditionalResources],
+    choiceId :: Prelude.Maybe Prelude.Text,
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The choice level helpful resource.
+    helpfulResource :: Prelude.Maybe ChoiceContent,
+    -- | The choice level improvement plan.
+    improvementPlan :: Prelude.Maybe ChoiceContent,
+    title :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Choice' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'additionalResources', 'choice_additionalResources' - The additional resources for a choice. A choice can have up to two
+-- additional resources: one of type @HELPFUL_RESOURCE@, one of type
+-- @IMPROVEMENT_PLAN@, or both.
+--
+-- 'choiceId', 'choice_choiceId' - Undocumented member.
+--
+-- 'description', 'choice_description' - Undocumented member.
+--
+-- 'helpfulResource', 'choice_helpfulResource' - The choice level helpful resource.
+--
+-- 'improvementPlan', 'choice_improvementPlan' - The choice level improvement plan.
+--
+-- 'title', 'choice_title' - Undocumented member.
+newChoice ::
+  Choice
+newChoice =
+  Choice'
+    { additionalResources = Prelude.Nothing,
+      choiceId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      helpfulResource = Prelude.Nothing,
+      improvementPlan = Prelude.Nothing,
+      title = Prelude.Nothing
+    }
+
+-- | The additional resources for a choice. A choice can have up to two
+-- additional resources: one of type @HELPFUL_RESOURCE@, one of type
+-- @IMPROVEMENT_PLAN@, or both.
+choice_additionalResources :: Lens.Lens' Choice (Prelude.Maybe [AdditionalResources])
+choice_additionalResources = Lens.lens (\Choice' {additionalResources} -> additionalResources) (\s@Choice' {} a -> s {additionalResources = a} :: Choice) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+choice_choiceId :: Lens.Lens' Choice (Prelude.Maybe Prelude.Text)
+choice_choiceId = Lens.lens (\Choice' {choiceId} -> choiceId) (\s@Choice' {} a -> s {choiceId = a} :: Choice)
+
+-- | Undocumented member.
+choice_description :: Lens.Lens' Choice (Prelude.Maybe Prelude.Text)
+choice_description = Lens.lens (\Choice' {description} -> description) (\s@Choice' {} a -> s {description = a} :: Choice)
+
+-- | The choice level helpful resource.
+choice_helpfulResource :: Lens.Lens' Choice (Prelude.Maybe ChoiceContent)
+choice_helpfulResource = Lens.lens (\Choice' {helpfulResource} -> helpfulResource) (\s@Choice' {} a -> s {helpfulResource = a} :: Choice)
+
+-- | The choice level improvement plan.
+choice_improvementPlan :: Lens.Lens' Choice (Prelude.Maybe ChoiceContent)
+choice_improvementPlan = Lens.lens (\Choice' {improvementPlan} -> improvementPlan) (\s@Choice' {} a -> s {improvementPlan = a} :: Choice)
+
+-- | Undocumented member.
+choice_title :: Lens.Lens' Choice (Prelude.Maybe Prelude.Text)
+choice_title = Lens.lens (\Choice' {title} -> title) (\s@Choice' {} a -> s {title = a} :: Choice)
+
+instance Data.FromJSON Choice where
+  parseJSON =
+    Data.withObject
+      "Choice"
+      ( \x ->
+          Choice'
+            Prelude.<$> ( x
+                            Data..:? "AdditionalResources"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "ChoiceId")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "HelpfulResource")
+            Prelude.<*> (x Data..:? "ImprovementPlan")
+            Prelude.<*> (x Data..:? "Title")
+      )
+
+instance Prelude.Hashable Choice where
+  hashWithSalt _salt Choice' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalResources
+      `Prelude.hashWithSalt` choiceId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` helpfulResource
+      `Prelude.hashWithSalt` improvementPlan
+      `Prelude.hashWithSalt` title
+
+instance Prelude.NFData Choice where
+  rnf Choice' {..} =
+    Prelude.rnf additionalResources
+      `Prelude.seq` Prelude.rnf choiceId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf helpfulResource
+      `Prelude.seq` Prelude.rnf improvementPlan
+      `Prelude.seq` Prelude.rnf title
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceAnswer.hs b/gen/Amazonka/WellArchitected/Types/ChoiceAnswer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceAnswer.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceAnswer
+-- 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.WellArchitected.Types.ChoiceAnswer where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.ChoiceReason
+import Amazonka.WellArchitected.Types.ChoiceStatus
+
+-- | A choice that has been answered on a question in your workload.
+--
+-- /See:/ 'newChoiceAnswer' smart constructor.
+data ChoiceAnswer = ChoiceAnswer'
+  { choiceId :: Prelude.Maybe Prelude.Text,
+    -- | The notes associated with a choice.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | The reason why a choice is non-applicable to a question in your
+    -- workload.
+    reason :: Prelude.Maybe ChoiceReason,
+    -- | The status of a choice.
+    status :: Prelude.Maybe ChoiceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChoiceAnswer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'choiceId', 'choiceAnswer_choiceId' - Undocumented member.
+--
+-- 'notes', 'choiceAnswer_notes' - The notes associated with a choice.
+--
+-- 'reason', 'choiceAnswer_reason' - The reason why a choice is non-applicable to a question in your
+-- workload.
+--
+-- 'status', 'choiceAnswer_status' - The status of a choice.
+newChoiceAnswer ::
+  ChoiceAnswer
+newChoiceAnswer =
+  ChoiceAnswer'
+    { choiceId = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+choiceAnswer_choiceId :: Lens.Lens' ChoiceAnswer (Prelude.Maybe Prelude.Text)
+choiceAnswer_choiceId = Lens.lens (\ChoiceAnswer' {choiceId} -> choiceId) (\s@ChoiceAnswer' {} a -> s {choiceId = a} :: ChoiceAnswer)
+
+-- | The notes associated with a choice.
+choiceAnswer_notes :: Lens.Lens' ChoiceAnswer (Prelude.Maybe Prelude.Text)
+choiceAnswer_notes = Lens.lens (\ChoiceAnswer' {notes} -> notes) (\s@ChoiceAnswer' {} a -> s {notes = a} :: ChoiceAnswer)
+
+-- | The reason why a choice is non-applicable to a question in your
+-- workload.
+choiceAnswer_reason :: Lens.Lens' ChoiceAnswer (Prelude.Maybe ChoiceReason)
+choiceAnswer_reason = Lens.lens (\ChoiceAnswer' {reason} -> reason) (\s@ChoiceAnswer' {} a -> s {reason = a} :: ChoiceAnswer)
+
+-- | The status of a choice.
+choiceAnswer_status :: Lens.Lens' ChoiceAnswer (Prelude.Maybe ChoiceStatus)
+choiceAnswer_status = Lens.lens (\ChoiceAnswer' {status} -> status) (\s@ChoiceAnswer' {} a -> s {status = a} :: ChoiceAnswer)
+
+instance Data.FromJSON ChoiceAnswer where
+  parseJSON =
+    Data.withObject
+      "ChoiceAnswer"
+      ( \x ->
+          ChoiceAnswer'
+            Prelude.<$> (x Data..:? "ChoiceId")
+            Prelude.<*> (x Data..:? "Notes")
+            Prelude.<*> (x Data..:? "Reason")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable ChoiceAnswer where
+  hashWithSalt _salt ChoiceAnswer' {..} =
+    _salt
+      `Prelude.hashWithSalt` choiceId
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ChoiceAnswer where
+  rnf ChoiceAnswer' {..} =
+    Prelude.rnf choiceId
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceAnswerSummary.hs b/gen/Amazonka/WellArchitected/Types/ChoiceAnswerSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceAnswerSummary.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceAnswerSummary
+-- 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.WellArchitected.Types.ChoiceAnswerSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.ChoiceReason
+import Amazonka.WellArchitected.Types.ChoiceStatus
+
+-- | A choice summary that has been answered on a question in your workload.
+--
+-- /See:/ 'newChoiceAnswerSummary' smart constructor.
+data ChoiceAnswerSummary = ChoiceAnswerSummary'
+  { choiceId :: Prelude.Maybe Prelude.Text,
+    -- | The reason why a choice is non-applicable to a question in your
+    -- workload.
+    reason :: Prelude.Maybe ChoiceReason,
+    -- | The status of a choice.
+    status :: Prelude.Maybe ChoiceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChoiceAnswerSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'choiceId', 'choiceAnswerSummary_choiceId' - Undocumented member.
+--
+-- 'reason', 'choiceAnswerSummary_reason' - The reason why a choice is non-applicable to a question in your
+-- workload.
+--
+-- 'status', 'choiceAnswerSummary_status' - The status of a choice.
+newChoiceAnswerSummary ::
+  ChoiceAnswerSummary
+newChoiceAnswerSummary =
+  ChoiceAnswerSummary'
+    { choiceId = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+choiceAnswerSummary_choiceId :: Lens.Lens' ChoiceAnswerSummary (Prelude.Maybe Prelude.Text)
+choiceAnswerSummary_choiceId = Lens.lens (\ChoiceAnswerSummary' {choiceId} -> choiceId) (\s@ChoiceAnswerSummary' {} a -> s {choiceId = a} :: ChoiceAnswerSummary)
+
+-- | The reason why a choice is non-applicable to a question in your
+-- workload.
+choiceAnswerSummary_reason :: Lens.Lens' ChoiceAnswerSummary (Prelude.Maybe ChoiceReason)
+choiceAnswerSummary_reason = Lens.lens (\ChoiceAnswerSummary' {reason} -> reason) (\s@ChoiceAnswerSummary' {} a -> s {reason = a} :: ChoiceAnswerSummary)
+
+-- | The status of a choice.
+choiceAnswerSummary_status :: Lens.Lens' ChoiceAnswerSummary (Prelude.Maybe ChoiceStatus)
+choiceAnswerSummary_status = Lens.lens (\ChoiceAnswerSummary' {status} -> status) (\s@ChoiceAnswerSummary' {} a -> s {status = a} :: ChoiceAnswerSummary)
+
+instance Data.FromJSON ChoiceAnswerSummary where
+  parseJSON =
+    Data.withObject
+      "ChoiceAnswerSummary"
+      ( \x ->
+          ChoiceAnswerSummary'
+            Prelude.<$> (x Data..:? "ChoiceId")
+            Prelude.<*> (x Data..:? "Reason")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable ChoiceAnswerSummary where
+  hashWithSalt _salt ChoiceAnswerSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` choiceId
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ChoiceAnswerSummary where
+  rnf ChoiceAnswerSummary' {..} =
+    Prelude.rnf choiceId
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceContent.hs b/gen/Amazonka/WellArchitected/Types/ChoiceContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceContent.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceContent
+-- 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.WellArchitected.Types.ChoiceContent 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 choice content.
+--
+-- /See:/ 'newChoiceContent' smart constructor.
+data ChoiceContent = ChoiceContent'
+  { -- | The display text for the choice content.
+    displayText :: Prelude.Maybe Prelude.Text,
+    -- | The URL for the choice content.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChoiceContent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayText', 'choiceContent_displayText' - The display text for the choice content.
+--
+-- 'url', 'choiceContent_url' - The URL for the choice content.
+newChoiceContent ::
+  ChoiceContent
+newChoiceContent =
+  ChoiceContent'
+    { displayText = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | The display text for the choice content.
+choiceContent_displayText :: Lens.Lens' ChoiceContent (Prelude.Maybe Prelude.Text)
+choiceContent_displayText = Lens.lens (\ChoiceContent' {displayText} -> displayText) (\s@ChoiceContent' {} a -> s {displayText = a} :: ChoiceContent)
+
+-- | The URL for the choice content.
+choiceContent_url :: Lens.Lens' ChoiceContent (Prelude.Maybe Prelude.Text)
+choiceContent_url = Lens.lens (\ChoiceContent' {url} -> url) (\s@ChoiceContent' {} a -> s {url = a} :: ChoiceContent)
+
+instance Data.FromJSON ChoiceContent where
+  parseJSON =
+    Data.withObject
+      "ChoiceContent"
+      ( \x ->
+          ChoiceContent'
+            Prelude.<$> (x Data..:? "DisplayText")
+            Prelude.<*> (x Data..:? "Url")
+      )
+
+instance Prelude.Hashable ChoiceContent where
+  hashWithSalt _salt ChoiceContent' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayText
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData ChoiceContent where
+  rnf ChoiceContent' {..} =
+    Prelude.rnf displayText
+      `Prelude.seq` Prelude.rnf url
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceImprovementPlan.hs b/gen/Amazonka/WellArchitected/Types/ChoiceImprovementPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceImprovementPlan.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceImprovementPlan
+-- 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.WellArchitected.Types.ChoiceImprovementPlan 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 choice level improvement plan.
+--
+-- /See:/ 'newChoiceImprovementPlan' smart constructor.
+data ChoiceImprovementPlan = ChoiceImprovementPlan'
+  { choiceId :: Prelude.Maybe Prelude.Text,
+    -- | The display text for the improvement plan.
+    displayText :: Prelude.Maybe Prelude.Text,
+    improvementPlanUrl :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChoiceImprovementPlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'choiceId', 'choiceImprovementPlan_choiceId' - Undocumented member.
+--
+-- 'displayText', 'choiceImprovementPlan_displayText' - The display text for the improvement plan.
+--
+-- 'improvementPlanUrl', 'choiceImprovementPlan_improvementPlanUrl' - Undocumented member.
+newChoiceImprovementPlan ::
+  ChoiceImprovementPlan
+newChoiceImprovementPlan =
+  ChoiceImprovementPlan'
+    { choiceId = Prelude.Nothing,
+      displayText = Prelude.Nothing,
+      improvementPlanUrl = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+choiceImprovementPlan_choiceId :: Lens.Lens' ChoiceImprovementPlan (Prelude.Maybe Prelude.Text)
+choiceImprovementPlan_choiceId = Lens.lens (\ChoiceImprovementPlan' {choiceId} -> choiceId) (\s@ChoiceImprovementPlan' {} a -> s {choiceId = a} :: ChoiceImprovementPlan)
+
+-- | The display text for the improvement plan.
+choiceImprovementPlan_displayText :: Lens.Lens' ChoiceImprovementPlan (Prelude.Maybe Prelude.Text)
+choiceImprovementPlan_displayText = Lens.lens (\ChoiceImprovementPlan' {displayText} -> displayText) (\s@ChoiceImprovementPlan' {} a -> s {displayText = a} :: ChoiceImprovementPlan)
+
+-- | Undocumented member.
+choiceImprovementPlan_improvementPlanUrl :: Lens.Lens' ChoiceImprovementPlan (Prelude.Maybe Prelude.Text)
+choiceImprovementPlan_improvementPlanUrl = Lens.lens (\ChoiceImprovementPlan' {improvementPlanUrl} -> improvementPlanUrl) (\s@ChoiceImprovementPlan' {} a -> s {improvementPlanUrl = a} :: ChoiceImprovementPlan)
+
+instance Data.FromJSON ChoiceImprovementPlan where
+  parseJSON =
+    Data.withObject
+      "ChoiceImprovementPlan"
+      ( \x ->
+          ChoiceImprovementPlan'
+            Prelude.<$> (x Data..:? "ChoiceId")
+            Prelude.<*> (x Data..:? "DisplayText")
+            Prelude.<*> (x Data..:? "ImprovementPlanUrl")
+      )
+
+instance Prelude.Hashable ChoiceImprovementPlan where
+  hashWithSalt _salt ChoiceImprovementPlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` choiceId
+      `Prelude.hashWithSalt` displayText
+      `Prelude.hashWithSalt` improvementPlanUrl
+
+instance Prelude.NFData ChoiceImprovementPlan where
+  rnf ChoiceImprovementPlan' {..} =
+    Prelude.rnf choiceId
+      `Prelude.seq` Prelude.rnf displayText
+      `Prelude.seq` Prelude.rnf improvementPlanUrl
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceReason.hs b/gen/Amazonka/WellArchitected/Types/ChoiceReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceReason.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceReason
+-- 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.WellArchitected.Types.ChoiceReason
+  ( ChoiceReason
+      ( ..,
+        ChoiceReason_ARCHITECTURE_CONSTRAINTS,
+        ChoiceReason_BUSINESS_PRIORITIES,
+        ChoiceReason_NONE,
+        ChoiceReason_OTHER,
+        ChoiceReason_OUT_OF_SCOPE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChoiceReason = ChoiceReason'
+  { fromChoiceReason ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChoiceReason_ARCHITECTURE_CONSTRAINTS :: ChoiceReason
+pattern ChoiceReason_ARCHITECTURE_CONSTRAINTS = ChoiceReason' "ARCHITECTURE_CONSTRAINTS"
+
+pattern ChoiceReason_BUSINESS_PRIORITIES :: ChoiceReason
+pattern ChoiceReason_BUSINESS_PRIORITIES = ChoiceReason' "BUSINESS_PRIORITIES"
+
+pattern ChoiceReason_NONE :: ChoiceReason
+pattern ChoiceReason_NONE = ChoiceReason' "NONE"
+
+pattern ChoiceReason_OTHER :: ChoiceReason
+pattern ChoiceReason_OTHER = ChoiceReason' "OTHER"
+
+pattern ChoiceReason_OUT_OF_SCOPE :: ChoiceReason
+pattern ChoiceReason_OUT_OF_SCOPE = ChoiceReason' "OUT_OF_SCOPE"
+
+{-# COMPLETE
+  ChoiceReason_ARCHITECTURE_CONSTRAINTS,
+  ChoiceReason_BUSINESS_PRIORITIES,
+  ChoiceReason_NONE,
+  ChoiceReason_OTHER,
+  ChoiceReason_OUT_OF_SCOPE,
+  ChoiceReason'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceStatus.hs b/gen/Amazonka/WellArchitected/Types/ChoiceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceStatus
+-- 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.WellArchitected.Types.ChoiceStatus
+  ( ChoiceStatus
+      ( ..,
+        ChoiceStatus_NOT_APPLICABLE,
+        ChoiceStatus_SELECTED,
+        ChoiceStatus_UNSELECTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChoiceStatus = ChoiceStatus'
+  { fromChoiceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChoiceStatus_NOT_APPLICABLE :: ChoiceStatus
+pattern ChoiceStatus_NOT_APPLICABLE = ChoiceStatus' "NOT_APPLICABLE"
+
+pattern ChoiceStatus_SELECTED :: ChoiceStatus
+pattern ChoiceStatus_SELECTED = ChoiceStatus' "SELECTED"
+
+pattern ChoiceStatus_UNSELECTED :: ChoiceStatus
+pattern ChoiceStatus_UNSELECTED = ChoiceStatus' "UNSELECTED"
+
+{-# COMPLETE
+  ChoiceStatus_NOT_APPLICABLE,
+  ChoiceStatus_SELECTED,
+  ChoiceStatus_UNSELECTED,
+  ChoiceStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ChoiceUpdate.hs b/gen/Amazonka/WellArchitected/Types/ChoiceUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ChoiceUpdate.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ChoiceUpdate
+-- 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.WellArchitected.Types.ChoiceUpdate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.ChoiceReason
+import Amazonka.WellArchitected.Types.ChoiceStatus
+
+-- | A list of choices to be updated.
+--
+-- /See:/ 'newChoiceUpdate' smart constructor.
+data ChoiceUpdate = ChoiceUpdate'
+  { -- | The notes associated with a choice.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | The reason why a choice is non-applicable to a question in your
+    -- workload.
+    reason :: Prelude.Maybe ChoiceReason,
+    -- | The status of a choice.
+    status :: ChoiceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChoiceUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'notes', 'choiceUpdate_notes' - The notes associated with a choice.
+--
+-- 'reason', 'choiceUpdate_reason' - The reason why a choice is non-applicable to a question in your
+-- workload.
+--
+-- 'status', 'choiceUpdate_status' - The status of a choice.
+newChoiceUpdate ::
+  -- | 'status'
+  ChoiceStatus ->
+  ChoiceUpdate
+newChoiceUpdate pStatus_ =
+  ChoiceUpdate'
+    { notes = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The notes associated with a choice.
+choiceUpdate_notes :: Lens.Lens' ChoiceUpdate (Prelude.Maybe Prelude.Text)
+choiceUpdate_notes = Lens.lens (\ChoiceUpdate' {notes} -> notes) (\s@ChoiceUpdate' {} a -> s {notes = a} :: ChoiceUpdate)
+
+-- | The reason why a choice is non-applicable to a question in your
+-- workload.
+choiceUpdate_reason :: Lens.Lens' ChoiceUpdate (Prelude.Maybe ChoiceReason)
+choiceUpdate_reason = Lens.lens (\ChoiceUpdate' {reason} -> reason) (\s@ChoiceUpdate' {} a -> s {reason = a} :: ChoiceUpdate)
+
+-- | The status of a choice.
+choiceUpdate_status :: Lens.Lens' ChoiceUpdate ChoiceStatus
+choiceUpdate_status = Lens.lens (\ChoiceUpdate' {status} -> status) (\s@ChoiceUpdate' {} a -> s {status = a} :: ChoiceUpdate)
+
+instance Prelude.Hashable ChoiceUpdate where
+  hashWithSalt _salt ChoiceUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ChoiceUpdate where
+  rnf ChoiceUpdate' {..} =
+    Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToJSON ChoiceUpdate where
+  toJSON ChoiceUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Notes" Data..=) Prelude.<$> notes,
+            ("Reason" Data..=) Prelude.<$> reason,
+            Prelude.Just ("Status" Data..= status)
+          ]
+      )
diff --git a/gen/Amazonka/WellArchitected/Types/DifferenceStatus.hs b/gen/Amazonka/WellArchitected/Types/DifferenceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/DifferenceStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.DifferenceStatus
+-- 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.WellArchitected.Types.DifferenceStatus
+  ( DifferenceStatus
+      ( ..,
+        DifferenceStatus_DELETED,
+        DifferenceStatus_NEW,
+        DifferenceStatus_UPDATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DifferenceStatus = DifferenceStatus'
+  { fromDifferenceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DifferenceStatus_DELETED :: DifferenceStatus
+pattern DifferenceStatus_DELETED = DifferenceStatus' "DELETED"
+
+pattern DifferenceStatus_NEW :: DifferenceStatus
+pattern DifferenceStatus_NEW = DifferenceStatus' "NEW"
+
+pattern DifferenceStatus_UPDATED :: DifferenceStatus
+pattern DifferenceStatus_UPDATED = DifferenceStatus' "UPDATED"
+
+{-# COMPLETE
+  DifferenceStatus_DELETED,
+  DifferenceStatus_NEW,
+  DifferenceStatus_UPDATED,
+  DifferenceStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ImportLensStatus.hs b/gen/Amazonka/WellArchitected/Types/ImportLensStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ImportLensStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ImportLensStatus
+-- 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.WellArchitected.Types.ImportLensStatus
+  ( ImportLensStatus
+      ( ..,
+        ImportLensStatus_COMPLETE,
+        ImportLensStatus_ERROR,
+        ImportLensStatus_IN_PROGRESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImportLensStatus = ImportLensStatus'
+  { fromImportLensStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImportLensStatus_COMPLETE :: ImportLensStatus
+pattern ImportLensStatus_COMPLETE = ImportLensStatus' "COMPLETE"
+
+pattern ImportLensStatus_ERROR :: ImportLensStatus
+pattern ImportLensStatus_ERROR = ImportLensStatus' "ERROR"
+
+pattern ImportLensStatus_IN_PROGRESS :: ImportLensStatus
+pattern ImportLensStatus_IN_PROGRESS = ImportLensStatus' "IN_PROGRESS"
+
+{-# COMPLETE
+  ImportLensStatus_COMPLETE,
+  ImportLensStatus_ERROR,
+  ImportLensStatus_IN_PROGRESS,
+  ImportLensStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ImprovementSummary.hs b/gen/Amazonka/WellArchitected/Types/ImprovementSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ImprovementSummary.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ImprovementSummary
+-- 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.WellArchitected.Types.ImprovementSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.ChoiceImprovementPlan
+import Amazonka.WellArchitected.Types.Risk
+
+-- | An improvement summary of a lens review in a workload.
+--
+-- /See:/ 'newImprovementSummary' smart constructor.
+data ImprovementSummary = ImprovementSummary'
+  { improvementPlanUrl :: Prelude.Maybe Prelude.Text,
+    -- | The improvement plan details.
+    improvementPlans :: Prelude.Maybe [ChoiceImprovementPlan],
+    pillarId :: Prelude.Maybe Prelude.Text,
+    questionId :: Prelude.Maybe Prelude.Text,
+    questionTitle :: Prelude.Maybe Prelude.Text,
+    risk :: Prelude.Maybe Risk
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImprovementSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'improvementPlanUrl', 'improvementSummary_improvementPlanUrl' - Undocumented member.
+--
+-- 'improvementPlans', 'improvementSummary_improvementPlans' - The improvement plan details.
+--
+-- 'pillarId', 'improvementSummary_pillarId' - Undocumented member.
+--
+-- 'questionId', 'improvementSummary_questionId' - Undocumented member.
+--
+-- 'questionTitle', 'improvementSummary_questionTitle' - Undocumented member.
+--
+-- 'risk', 'improvementSummary_risk' - Undocumented member.
+newImprovementSummary ::
+  ImprovementSummary
+newImprovementSummary =
+  ImprovementSummary'
+    { improvementPlanUrl =
+        Prelude.Nothing,
+      improvementPlans = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      questionId = Prelude.Nothing,
+      questionTitle = Prelude.Nothing,
+      risk = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+improvementSummary_improvementPlanUrl :: Lens.Lens' ImprovementSummary (Prelude.Maybe Prelude.Text)
+improvementSummary_improvementPlanUrl = Lens.lens (\ImprovementSummary' {improvementPlanUrl} -> improvementPlanUrl) (\s@ImprovementSummary' {} a -> s {improvementPlanUrl = a} :: ImprovementSummary)
+
+-- | The improvement plan details.
+improvementSummary_improvementPlans :: Lens.Lens' ImprovementSummary (Prelude.Maybe [ChoiceImprovementPlan])
+improvementSummary_improvementPlans = Lens.lens (\ImprovementSummary' {improvementPlans} -> improvementPlans) (\s@ImprovementSummary' {} a -> s {improvementPlans = a} :: ImprovementSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+improvementSummary_pillarId :: Lens.Lens' ImprovementSummary (Prelude.Maybe Prelude.Text)
+improvementSummary_pillarId = Lens.lens (\ImprovementSummary' {pillarId} -> pillarId) (\s@ImprovementSummary' {} a -> s {pillarId = a} :: ImprovementSummary)
+
+-- | Undocumented member.
+improvementSummary_questionId :: Lens.Lens' ImprovementSummary (Prelude.Maybe Prelude.Text)
+improvementSummary_questionId = Lens.lens (\ImprovementSummary' {questionId} -> questionId) (\s@ImprovementSummary' {} a -> s {questionId = a} :: ImprovementSummary)
+
+-- | Undocumented member.
+improvementSummary_questionTitle :: Lens.Lens' ImprovementSummary (Prelude.Maybe Prelude.Text)
+improvementSummary_questionTitle = Lens.lens (\ImprovementSummary' {questionTitle} -> questionTitle) (\s@ImprovementSummary' {} a -> s {questionTitle = a} :: ImprovementSummary)
+
+-- | Undocumented member.
+improvementSummary_risk :: Lens.Lens' ImprovementSummary (Prelude.Maybe Risk)
+improvementSummary_risk = Lens.lens (\ImprovementSummary' {risk} -> risk) (\s@ImprovementSummary' {} a -> s {risk = a} :: ImprovementSummary)
+
+instance Data.FromJSON ImprovementSummary where
+  parseJSON =
+    Data.withObject
+      "ImprovementSummary"
+      ( \x ->
+          ImprovementSummary'
+            Prelude.<$> (x Data..:? "ImprovementPlanUrl")
+            Prelude.<*> ( x
+                            Data..:? "ImprovementPlans"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "QuestionId")
+            Prelude.<*> (x Data..:? "QuestionTitle")
+            Prelude.<*> (x Data..:? "Risk")
+      )
+
+instance Prelude.Hashable ImprovementSummary where
+  hashWithSalt _salt ImprovementSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` improvementPlanUrl
+      `Prelude.hashWithSalt` improvementPlans
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` questionTitle
+      `Prelude.hashWithSalt` risk
+
+instance Prelude.NFData ImprovementSummary where
+  rnf ImprovementSummary' {..} =
+    Prelude.rnf improvementPlanUrl
+      `Prelude.seq` Prelude.rnf improvementPlans
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf questionTitle
+      `Prelude.seq` Prelude.rnf risk
diff --git a/gen/Amazonka/WellArchitected/Types/Lens.hs b/gen/Amazonka/WellArchitected/Types/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/Lens.hs
@@ -0,0 +1,142 @@
+{-# 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.WellArchitected.Types.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.WellArchitected.Types.Lens 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 lens return object.
+--
+-- /See:/ 'newLens' smart constructor.
+data Lens = Lens'
+  { description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of a lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | The version of a lens.
+    lensVersion :: Prelude.Maybe Prelude.Text,
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID that owns the lens.
+    owner :: Prelude.Maybe Prelude.Text,
+    -- | The ID assigned to the share invitation.
+    shareInvitationId :: Prelude.Maybe Prelude.Text,
+    -- | The tags assigned to the lens.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Lens' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'lens_description' - Undocumented member.
+--
+-- 'lensArn', 'lens_lensArn' - The ARN of a lens.
+--
+-- 'lensVersion', 'lens_lensVersion' - The version of a lens.
+--
+-- 'name', 'lens_name' - Undocumented member.
+--
+-- 'owner', 'lens_owner' - The Amazon Web Services account ID that owns the lens.
+--
+-- 'shareInvitationId', 'lens_shareInvitationId' - The ID assigned to the share invitation.
+--
+-- 'tags', 'lens_tags' - The tags assigned to the lens.
+newLens ::
+  Lens
+newLens =
+  Lens'
+    { description = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      lensVersion = Prelude.Nothing,
+      name = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      shareInvitationId = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lens_description :: Lens.Lens' Lens (Prelude.Maybe Prelude.Text)
+lens_description = Lens.lens (\Lens' {description} -> description) (\s@Lens' {} a -> s {description = a} :: Lens)
+
+-- | The ARN of a lens.
+lens_lensArn :: Lens.Lens' Lens (Prelude.Maybe Prelude.Text)
+lens_lensArn = Lens.lens (\Lens' {lensArn} -> lensArn) (\s@Lens' {} a -> s {lensArn = a} :: Lens)
+
+-- | The version of a lens.
+lens_lensVersion :: Lens.Lens' Lens (Prelude.Maybe Prelude.Text)
+lens_lensVersion = Lens.lens (\Lens' {lensVersion} -> lensVersion) (\s@Lens' {} a -> s {lensVersion = a} :: Lens)
+
+-- | Undocumented member.
+lens_name :: Lens.Lens' Lens (Prelude.Maybe Prelude.Text)
+lens_name = Lens.lens (\Lens' {name} -> name) (\s@Lens' {} a -> s {name = a} :: Lens)
+
+-- | The Amazon Web Services account ID that owns the lens.
+lens_owner :: Lens.Lens' Lens (Prelude.Maybe Prelude.Text)
+lens_owner = Lens.lens (\Lens' {owner} -> owner) (\s@Lens' {} a -> s {owner = a} :: Lens)
+
+-- | The ID assigned to the share invitation.
+lens_shareInvitationId :: Lens.Lens' Lens (Prelude.Maybe Prelude.Text)
+lens_shareInvitationId = Lens.lens (\Lens' {shareInvitationId} -> shareInvitationId) (\s@Lens' {} a -> s {shareInvitationId = a} :: Lens)
+
+-- | The tags assigned to the lens.
+lens_tags :: Lens.Lens' Lens (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+lens_tags = Lens.lens (\Lens' {tags} -> tags) (\s@Lens' {} a -> s {tags = a} :: Lens) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Lens where
+  parseJSON =
+    Data.withObject
+      "Lens"
+      ( \x ->
+          Lens'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "LensVersion")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "ShareInvitationId")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Lens where
+  hashWithSalt _salt Lens' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` shareInvitationId
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Lens where
+  rnf Lens' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf shareInvitationId
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/WellArchitected/Types/LensReview.hs b/gen/Amazonka/WellArchitected/Types/LensReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensReview.hs
@@ -0,0 +1,179 @@
+{-# 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.WellArchitected.Types.LensReview
+-- 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.WellArchitected.Types.LensReview where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.LensStatus
+import Amazonka.WellArchitected.Types.PillarReviewSummary
+import Amazonka.WellArchitected.Types.Risk
+
+-- | A lens review of a question.
+--
+-- /See:/ 'newLensReview' smart constructor.
+data LensReview = LensReview'
+  { lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    lensName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the lens.
+    lensStatus :: Prelude.Maybe LensStatus,
+    -- | The version of the lens.
+    lensVersion :: Prelude.Maybe Prelude.Text,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    notes :: Prelude.Maybe Prelude.Text,
+    pillarReviewSummaries :: Prelude.Maybe [PillarReviewSummary],
+    riskCounts :: Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural),
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LensReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensAlias', 'lensReview_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'lensReview_lensArn' - The ARN for the lens.
+--
+-- 'lensName', 'lensReview_lensName' - Undocumented member.
+--
+-- 'lensStatus', 'lensReview_lensStatus' - The status of the lens.
+--
+-- 'lensVersion', 'lensReview_lensVersion' - The version of the lens.
+--
+-- 'nextToken', 'lensReview_nextToken' - Undocumented member.
+--
+-- 'notes', 'lensReview_notes' - Undocumented member.
+--
+-- 'pillarReviewSummaries', 'lensReview_pillarReviewSummaries' - Undocumented member.
+--
+-- 'riskCounts', 'lensReview_riskCounts' - Undocumented member.
+--
+-- 'updatedAt', 'lensReview_updatedAt' - Undocumented member.
+newLensReview ::
+  LensReview
+newLensReview =
+  LensReview'
+    { lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      lensName = Prelude.Nothing,
+      lensStatus = Prelude.Nothing,
+      lensVersion = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      pillarReviewSummaries = Prelude.Nothing,
+      riskCounts = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lensReview_lensAlias :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
+lensReview_lensAlias = Lens.lens (\LensReview' {lensAlias} -> lensAlias) (\s@LensReview' {} a -> s {lensAlias = a} :: LensReview)
+
+-- | The ARN for the lens.
+lensReview_lensArn :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
+lensReview_lensArn = Lens.lens (\LensReview' {lensArn} -> lensArn) (\s@LensReview' {} a -> s {lensArn = a} :: LensReview)
+
+-- | Undocumented member.
+lensReview_lensName :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
+lensReview_lensName = Lens.lens (\LensReview' {lensName} -> lensName) (\s@LensReview' {} a -> s {lensName = a} :: LensReview)
+
+-- | The status of the lens.
+lensReview_lensStatus :: Lens.Lens' LensReview (Prelude.Maybe LensStatus)
+lensReview_lensStatus = Lens.lens (\LensReview' {lensStatus} -> lensStatus) (\s@LensReview' {} a -> s {lensStatus = a} :: LensReview)
+
+-- | The version of the lens.
+lensReview_lensVersion :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
+lensReview_lensVersion = Lens.lens (\LensReview' {lensVersion} -> lensVersion) (\s@LensReview' {} a -> s {lensVersion = a} :: LensReview)
+
+-- | Undocumented member.
+lensReview_nextToken :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
+lensReview_nextToken = Lens.lens (\LensReview' {nextToken} -> nextToken) (\s@LensReview' {} a -> s {nextToken = a} :: LensReview)
+
+-- | Undocumented member.
+lensReview_notes :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
+lensReview_notes = Lens.lens (\LensReview' {notes} -> notes) (\s@LensReview' {} a -> s {notes = a} :: LensReview)
+
+-- | Undocumented member.
+lensReview_pillarReviewSummaries :: Lens.Lens' LensReview (Prelude.Maybe [PillarReviewSummary])
+lensReview_pillarReviewSummaries = Lens.lens (\LensReview' {pillarReviewSummaries} -> pillarReviewSummaries) (\s@LensReview' {} a -> s {pillarReviewSummaries = a} :: LensReview) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+lensReview_riskCounts :: Lens.Lens' LensReview (Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural))
+lensReview_riskCounts = Lens.lens (\LensReview' {riskCounts} -> riskCounts) (\s@LensReview' {} a -> s {riskCounts = a} :: LensReview) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+lensReview_updatedAt :: Lens.Lens' LensReview (Prelude.Maybe Prelude.UTCTime)
+lensReview_updatedAt = Lens.lens (\LensReview' {updatedAt} -> updatedAt) (\s@LensReview' {} a -> s {updatedAt = a} :: LensReview) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON LensReview where
+  parseJSON =
+    Data.withObject
+      "LensReview"
+      ( \x ->
+          LensReview'
+            Prelude.<$> (x Data..:? "LensAlias")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "LensName")
+            Prelude.<*> (x Data..:? "LensStatus")
+            Prelude.<*> (x Data..:? "LensVersion")
+            Prelude.<*> (x Data..:? "NextToken")
+            Prelude.<*> (x Data..:? "Notes")
+            Prelude.<*> ( x
+                            Data..:? "PillarReviewSummaries"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "RiskCounts" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable LensReview where
+  hashWithSalt _salt LensReview' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` lensName
+      `Prelude.hashWithSalt` lensStatus
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` pillarReviewSummaries
+      `Prelude.hashWithSalt` riskCounts
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData LensReview where
+  rnf LensReview' {..} =
+    Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf lensName
+      `Prelude.seq` Prelude.rnf lensStatus
+      `Prelude.seq` Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf pillarReviewSummaries
+      `Prelude.seq` Prelude.rnf riskCounts
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/WellArchitected/Types/LensReviewReport.hs b/gen/Amazonka/WellArchitected/Types/LensReviewReport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensReviewReport.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.LensReviewReport
+-- 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.WellArchitected.Types.LensReviewReport 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 report of a lens review.
+--
+-- /See:/ 'newLensReviewReport' smart constructor.
+data LensReviewReport = LensReviewReport'
+  { base64String :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LensReviewReport' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'base64String', 'lensReviewReport_base64String' - Undocumented member.
+--
+-- 'lensAlias', 'lensReviewReport_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'lensReviewReport_lensArn' - The ARN for the lens.
+newLensReviewReport ::
+  LensReviewReport
+newLensReviewReport =
+  LensReviewReport'
+    { base64String = Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lensReviewReport_base64String :: Lens.Lens' LensReviewReport (Prelude.Maybe Prelude.Text)
+lensReviewReport_base64String = Lens.lens (\LensReviewReport' {base64String} -> base64String) (\s@LensReviewReport' {} a -> s {base64String = a} :: LensReviewReport)
+
+-- | Undocumented member.
+lensReviewReport_lensAlias :: Lens.Lens' LensReviewReport (Prelude.Maybe Prelude.Text)
+lensReviewReport_lensAlias = Lens.lens (\LensReviewReport' {lensAlias} -> lensAlias) (\s@LensReviewReport' {} a -> s {lensAlias = a} :: LensReviewReport)
+
+-- | The ARN for the lens.
+lensReviewReport_lensArn :: Lens.Lens' LensReviewReport (Prelude.Maybe Prelude.Text)
+lensReviewReport_lensArn = Lens.lens (\LensReviewReport' {lensArn} -> lensArn) (\s@LensReviewReport' {} a -> s {lensArn = a} :: LensReviewReport)
+
+instance Data.FromJSON LensReviewReport where
+  parseJSON =
+    Data.withObject
+      "LensReviewReport"
+      ( \x ->
+          LensReviewReport'
+            Prelude.<$> (x Data..:? "Base64String")
+            Prelude.<*> (x Data..:? "LensAlias")
+            Prelude.<*> (x Data..:? "LensArn")
+      )
+
+instance Prelude.Hashable LensReviewReport where
+  hashWithSalt _salt LensReviewReport' {..} =
+    _salt
+      `Prelude.hashWithSalt` base64String
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensArn
+
+instance Prelude.NFData LensReviewReport where
+  rnf LensReviewReport' {..} =
+    Prelude.rnf base64String
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
diff --git a/gen/Amazonka/WellArchitected/Types/LensReviewSummary.hs b/gen/Amazonka/WellArchitected/Types/LensReviewSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensReviewSummary.hs
@@ -0,0 +1,142 @@
+{-# 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.WellArchitected.Types.LensReviewSummary
+-- 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.WellArchitected.Types.LensReviewSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.LensStatus
+import Amazonka.WellArchitected.Types.Risk
+
+-- | A lens review summary of a workload.
+--
+-- /See:/ 'newLensReviewSummary' smart constructor.
+data LensReviewSummary = LensReviewSummary'
+  { lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    lensName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the lens.
+    lensStatus :: Prelude.Maybe LensStatus,
+    -- | The version of the lens.
+    lensVersion :: Prelude.Maybe Prelude.Text,
+    riskCounts :: Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural),
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LensReviewSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensAlias', 'lensReviewSummary_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'lensReviewSummary_lensArn' - The ARN for the lens.
+--
+-- 'lensName', 'lensReviewSummary_lensName' - Undocumented member.
+--
+-- 'lensStatus', 'lensReviewSummary_lensStatus' - The status of the lens.
+--
+-- 'lensVersion', 'lensReviewSummary_lensVersion' - The version of the lens.
+--
+-- 'riskCounts', 'lensReviewSummary_riskCounts' - Undocumented member.
+--
+-- 'updatedAt', 'lensReviewSummary_updatedAt' - Undocumented member.
+newLensReviewSummary ::
+  LensReviewSummary
+newLensReviewSummary =
+  LensReviewSummary'
+    { lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      lensName = Prelude.Nothing,
+      lensStatus = Prelude.Nothing,
+      lensVersion = Prelude.Nothing,
+      riskCounts = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lensReviewSummary_lensAlias :: Lens.Lens' LensReviewSummary (Prelude.Maybe Prelude.Text)
+lensReviewSummary_lensAlias = Lens.lens (\LensReviewSummary' {lensAlias} -> lensAlias) (\s@LensReviewSummary' {} a -> s {lensAlias = a} :: LensReviewSummary)
+
+-- | The ARN for the lens.
+lensReviewSummary_lensArn :: Lens.Lens' LensReviewSummary (Prelude.Maybe Prelude.Text)
+lensReviewSummary_lensArn = Lens.lens (\LensReviewSummary' {lensArn} -> lensArn) (\s@LensReviewSummary' {} a -> s {lensArn = a} :: LensReviewSummary)
+
+-- | Undocumented member.
+lensReviewSummary_lensName :: Lens.Lens' LensReviewSummary (Prelude.Maybe Prelude.Text)
+lensReviewSummary_lensName = Lens.lens (\LensReviewSummary' {lensName} -> lensName) (\s@LensReviewSummary' {} a -> s {lensName = a} :: LensReviewSummary)
+
+-- | The status of the lens.
+lensReviewSummary_lensStatus :: Lens.Lens' LensReviewSummary (Prelude.Maybe LensStatus)
+lensReviewSummary_lensStatus = Lens.lens (\LensReviewSummary' {lensStatus} -> lensStatus) (\s@LensReviewSummary' {} a -> s {lensStatus = a} :: LensReviewSummary)
+
+-- | The version of the lens.
+lensReviewSummary_lensVersion :: Lens.Lens' LensReviewSummary (Prelude.Maybe Prelude.Text)
+lensReviewSummary_lensVersion = Lens.lens (\LensReviewSummary' {lensVersion} -> lensVersion) (\s@LensReviewSummary' {} a -> s {lensVersion = a} :: LensReviewSummary)
+
+-- | Undocumented member.
+lensReviewSummary_riskCounts :: Lens.Lens' LensReviewSummary (Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural))
+lensReviewSummary_riskCounts = Lens.lens (\LensReviewSummary' {riskCounts} -> riskCounts) (\s@LensReviewSummary' {} a -> s {riskCounts = a} :: LensReviewSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+lensReviewSummary_updatedAt :: Lens.Lens' LensReviewSummary (Prelude.Maybe Prelude.UTCTime)
+lensReviewSummary_updatedAt = Lens.lens (\LensReviewSummary' {updatedAt} -> updatedAt) (\s@LensReviewSummary' {} a -> s {updatedAt = a} :: LensReviewSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON LensReviewSummary where
+  parseJSON =
+    Data.withObject
+      "LensReviewSummary"
+      ( \x ->
+          LensReviewSummary'
+            Prelude.<$> (x Data..:? "LensAlias")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "LensName")
+            Prelude.<*> (x Data..:? "LensStatus")
+            Prelude.<*> (x Data..:? "LensVersion")
+            Prelude.<*> (x Data..:? "RiskCounts" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable LensReviewSummary where
+  hashWithSalt _salt LensReviewSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` lensName
+      `Prelude.hashWithSalt` lensStatus
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` riskCounts
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData LensReviewSummary where
+  rnf LensReviewSummary' {..} =
+    Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf lensName
+      `Prelude.seq` Prelude.rnf lensStatus
+      `Prelude.seq` Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf riskCounts
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/WellArchitected/Types/LensShareSummary.hs b/gen/Amazonka/WellArchitected/Types/LensShareSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensShareSummary.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.LensShareSummary
+-- 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.WellArchitected.Types.LensShareSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.ShareStatus
+
+-- | A lens share summary return object.
+--
+-- /See:/ 'newLensShareSummary' smart constructor.
+data LensShareSummary = LensShareSummary'
+  { shareId :: Prelude.Maybe Prelude.Text,
+    sharedWith :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ShareStatus,
+    -- | Optional message to compliment the Status field.
+    statusMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LensShareSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareId', 'lensShareSummary_shareId' - Undocumented member.
+--
+-- 'sharedWith', 'lensShareSummary_sharedWith' - Undocumented member.
+--
+-- 'status', 'lensShareSummary_status' - Undocumented member.
+--
+-- 'statusMessage', 'lensShareSummary_statusMessage' - Optional message to compliment the Status field.
+newLensShareSummary ::
+  LensShareSummary
+newLensShareSummary =
+  LensShareSummary'
+    { shareId = Prelude.Nothing,
+      sharedWith = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusMessage = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lensShareSummary_shareId :: Lens.Lens' LensShareSummary (Prelude.Maybe Prelude.Text)
+lensShareSummary_shareId = Lens.lens (\LensShareSummary' {shareId} -> shareId) (\s@LensShareSummary' {} a -> s {shareId = a} :: LensShareSummary)
+
+-- | Undocumented member.
+lensShareSummary_sharedWith :: Lens.Lens' LensShareSummary (Prelude.Maybe Prelude.Text)
+lensShareSummary_sharedWith = Lens.lens (\LensShareSummary' {sharedWith} -> sharedWith) (\s@LensShareSummary' {} a -> s {sharedWith = a} :: LensShareSummary)
+
+-- | Undocumented member.
+lensShareSummary_status :: Lens.Lens' LensShareSummary (Prelude.Maybe ShareStatus)
+lensShareSummary_status = Lens.lens (\LensShareSummary' {status} -> status) (\s@LensShareSummary' {} a -> s {status = a} :: LensShareSummary)
+
+-- | Optional message to compliment the Status field.
+lensShareSummary_statusMessage :: Lens.Lens' LensShareSummary (Prelude.Maybe Prelude.Text)
+lensShareSummary_statusMessage = Lens.lens (\LensShareSummary' {statusMessage} -> statusMessage) (\s@LensShareSummary' {} a -> s {statusMessage = a} :: LensShareSummary)
+
+instance Data.FromJSON LensShareSummary where
+  parseJSON =
+    Data.withObject
+      "LensShareSummary"
+      ( \x ->
+          LensShareSummary'
+            Prelude.<$> (x Data..:? "ShareId")
+            Prelude.<*> (x Data..:? "SharedWith")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StatusMessage")
+      )
+
+instance Prelude.Hashable LensShareSummary where
+  hashWithSalt _salt LensShareSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` sharedWith
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusMessage
+
+instance Prelude.NFData LensShareSummary where
+  rnf LensShareSummary' {..} =
+    Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf sharedWith
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusMessage
diff --git a/gen/Amazonka/WellArchitected/Types/LensStatus.hs b/gen/Amazonka/WellArchitected/Types/LensStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.LensStatus
+-- 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.WellArchitected.Types.LensStatus
+  ( LensStatus
+      ( ..,
+        LensStatus_CURRENT,
+        LensStatus_DELETED,
+        LensStatus_DEPRECATED,
+        LensStatus_NOT_CURRENT,
+        LensStatus_UNSHARED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LensStatus = LensStatus'
+  { fromLensStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LensStatus_CURRENT :: LensStatus
+pattern LensStatus_CURRENT = LensStatus' "CURRENT"
+
+pattern LensStatus_DELETED :: LensStatus
+pattern LensStatus_DELETED = LensStatus' "DELETED"
+
+pattern LensStatus_DEPRECATED :: LensStatus
+pattern LensStatus_DEPRECATED = LensStatus' "DEPRECATED"
+
+pattern LensStatus_NOT_CURRENT :: LensStatus
+pattern LensStatus_NOT_CURRENT = LensStatus' "NOT_CURRENT"
+
+pattern LensStatus_UNSHARED :: LensStatus
+pattern LensStatus_UNSHARED = LensStatus' "UNSHARED"
+
+{-# COMPLETE
+  LensStatus_CURRENT,
+  LensStatus_DELETED,
+  LensStatus_DEPRECATED,
+  LensStatus_NOT_CURRENT,
+  LensStatus_UNSHARED,
+  LensStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/LensStatusType.hs b/gen/Amazonka/WellArchitected/Types/LensStatusType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensStatusType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.LensStatusType
+-- 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.WellArchitected.Types.LensStatusType
+  ( LensStatusType
+      ( ..,
+        LensStatusType_ALL,
+        LensStatusType_DRAFT,
+        LensStatusType_PUBLISHED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LensStatusType = LensStatusType'
+  { fromLensStatusType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LensStatusType_ALL :: LensStatusType
+pattern LensStatusType_ALL = LensStatusType' "ALL"
+
+pattern LensStatusType_DRAFT :: LensStatusType
+pattern LensStatusType_DRAFT = LensStatusType' "DRAFT"
+
+pattern LensStatusType_PUBLISHED :: LensStatusType
+pattern LensStatusType_PUBLISHED = LensStatusType' "PUBLISHED"
+
+{-# COMPLETE
+  LensStatusType_ALL,
+  LensStatusType_DRAFT,
+  LensStatusType_PUBLISHED,
+  LensStatusType'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/LensSummary.hs b/gen/Amazonka/WellArchitected/Types/LensSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensSummary.hs
@@ -0,0 +1,176 @@
+{-# 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.WellArchitected.Types.LensSummary
+-- 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.WellArchitected.Types.LensSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.LensStatus
+import Amazonka.WellArchitected.Types.LensType
+
+-- | A lens summary of a lens.
+--
+-- /See:/ 'newLensSummary' smart constructor.
+data LensSummary = LensSummary'
+  { createdAt :: Prelude.Maybe Data.POSIX,
+    description :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    lensName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the lens.
+    lensStatus :: Prelude.Maybe LensStatus,
+    -- | The type of the lens.
+    lensType :: Prelude.Maybe LensType,
+    -- | The version of the lens.
+    lensVersion :: Prelude.Maybe Prelude.Text,
+    owner :: Prelude.Maybe Prelude.Text,
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LensSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'lensSummary_createdAt' - Undocumented member.
+--
+-- 'description', 'lensSummary_description' - Undocumented member.
+--
+-- 'lensAlias', 'lensSummary_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'lensSummary_lensArn' - The ARN of the lens.
+--
+-- 'lensName', 'lensSummary_lensName' - Undocumented member.
+--
+-- 'lensStatus', 'lensSummary_lensStatus' - The status of the lens.
+--
+-- 'lensType', 'lensSummary_lensType' - The type of the lens.
+--
+-- 'lensVersion', 'lensSummary_lensVersion' - The version of the lens.
+--
+-- 'owner', 'lensSummary_owner' - Undocumented member.
+--
+-- 'updatedAt', 'lensSummary_updatedAt' - Undocumented member.
+newLensSummary ::
+  LensSummary
+newLensSummary =
+  LensSummary'
+    { createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      lensName = Prelude.Nothing,
+      lensStatus = Prelude.Nothing,
+      lensType = Prelude.Nothing,
+      lensVersion = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lensSummary_createdAt :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.UTCTime)
+lensSummary_createdAt = Lens.lens (\LensSummary' {createdAt} -> createdAt) (\s@LensSummary' {} a -> s {createdAt = a} :: LensSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+lensSummary_description :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.Text)
+lensSummary_description = Lens.lens (\LensSummary' {description} -> description) (\s@LensSummary' {} a -> s {description = a} :: LensSummary)
+
+-- | Undocumented member.
+lensSummary_lensAlias :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.Text)
+lensSummary_lensAlias = Lens.lens (\LensSummary' {lensAlias} -> lensAlias) (\s@LensSummary' {} a -> s {lensAlias = a} :: LensSummary)
+
+-- | The ARN of the lens.
+lensSummary_lensArn :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.Text)
+lensSummary_lensArn = Lens.lens (\LensSummary' {lensArn} -> lensArn) (\s@LensSummary' {} a -> s {lensArn = a} :: LensSummary)
+
+-- | Undocumented member.
+lensSummary_lensName :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.Text)
+lensSummary_lensName = Lens.lens (\LensSummary' {lensName} -> lensName) (\s@LensSummary' {} a -> s {lensName = a} :: LensSummary)
+
+-- | The status of the lens.
+lensSummary_lensStatus :: Lens.Lens' LensSummary (Prelude.Maybe LensStatus)
+lensSummary_lensStatus = Lens.lens (\LensSummary' {lensStatus} -> lensStatus) (\s@LensSummary' {} a -> s {lensStatus = a} :: LensSummary)
+
+-- | The type of the lens.
+lensSummary_lensType :: Lens.Lens' LensSummary (Prelude.Maybe LensType)
+lensSummary_lensType = Lens.lens (\LensSummary' {lensType} -> lensType) (\s@LensSummary' {} a -> s {lensType = a} :: LensSummary)
+
+-- | The version of the lens.
+lensSummary_lensVersion :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.Text)
+lensSummary_lensVersion = Lens.lens (\LensSummary' {lensVersion} -> lensVersion) (\s@LensSummary' {} a -> s {lensVersion = a} :: LensSummary)
+
+-- | Undocumented member.
+lensSummary_owner :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.Text)
+lensSummary_owner = Lens.lens (\LensSummary' {owner} -> owner) (\s@LensSummary' {} a -> s {owner = a} :: LensSummary)
+
+-- | Undocumented member.
+lensSummary_updatedAt :: Lens.Lens' LensSummary (Prelude.Maybe Prelude.UTCTime)
+lensSummary_updatedAt = Lens.lens (\LensSummary' {updatedAt} -> updatedAt) (\s@LensSummary' {} a -> s {updatedAt = a} :: LensSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON LensSummary where
+  parseJSON =
+    Data.withObject
+      "LensSummary"
+      ( \x ->
+          LensSummary'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LensAlias")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "LensName")
+            Prelude.<*> (x Data..:? "LensStatus")
+            Prelude.<*> (x Data..:? "LensType")
+            Prelude.<*> (x Data..:? "LensVersion")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable LensSummary where
+  hashWithSalt _salt LensSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` lensName
+      `Prelude.hashWithSalt` lensStatus
+      `Prelude.hashWithSalt` lensType
+      `Prelude.hashWithSalt` lensVersion
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData LensSummary where
+  rnf LensSummary' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf lensName
+      `Prelude.seq` Prelude.rnf lensStatus
+      `Prelude.seq` Prelude.rnf lensType
+      `Prelude.seq` Prelude.rnf lensVersion
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/WellArchitected/Types/LensType.hs b/gen/Amazonka/WellArchitected/Types/LensType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.LensType
+-- 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.WellArchitected.Types.LensType
+  ( LensType
+      ( ..,
+        LensType_AWS_OFFICIAL,
+        LensType_CUSTOM_SELF,
+        LensType_CUSTOM_SHARED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LensType = LensType'
+  { fromLensType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LensType_AWS_OFFICIAL :: LensType
+pattern LensType_AWS_OFFICIAL = LensType' "AWS_OFFICIAL"
+
+pattern LensType_CUSTOM_SELF :: LensType
+pattern LensType_CUSTOM_SELF = LensType' "CUSTOM_SELF"
+
+pattern LensType_CUSTOM_SHARED :: LensType
+pattern LensType_CUSTOM_SHARED = LensType' "CUSTOM_SHARED"
+
+{-# COMPLETE
+  LensType_AWS_OFFICIAL,
+  LensType_CUSTOM_SELF,
+  LensType_CUSTOM_SHARED,
+  LensType'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/LensUpgradeSummary.hs b/gen/Amazonka/WellArchitected/Types/LensUpgradeSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/LensUpgradeSummary.hs
@@ -0,0 +1,130 @@
+{-# 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.WellArchitected.Types.LensUpgradeSummary
+-- 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.WellArchitected.Types.LensUpgradeSummary 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
+
+-- | Lens upgrade summary return object.
+--
+-- /See:/ 'newLensUpgradeSummary' smart constructor.
+data LensUpgradeSummary = LensUpgradeSummary'
+  { -- | The current version of the lens.
+    currentLensVersion :: Prelude.Maybe Prelude.Text,
+    -- | The latest version of the lens.
+    latestLensVersion :: Prelude.Maybe Prelude.Text,
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Maybe Prelude.Text,
+    workloadName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LensUpgradeSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'currentLensVersion', 'lensUpgradeSummary_currentLensVersion' - The current version of the lens.
+--
+-- 'latestLensVersion', 'lensUpgradeSummary_latestLensVersion' - The latest version of the lens.
+--
+-- 'lensAlias', 'lensUpgradeSummary_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'lensUpgradeSummary_lensArn' - The ARN for the lens.
+--
+-- 'workloadId', 'lensUpgradeSummary_workloadId' - Undocumented member.
+--
+-- 'workloadName', 'lensUpgradeSummary_workloadName' - Undocumented member.
+newLensUpgradeSummary ::
+  LensUpgradeSummary
+newLensUpgradeSummary =
+  LensUpgradeSummary'
+    { currentLensVersion =
+        Prelude.Nothing,
+      latestLensVersion = Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      workloadName = Prelude.Nothing
+    }
+
+-- | The current version of the lens.
+lensUpgradeSummary_currentLensVersion :: Lens.Lens' LensUpgradeSummary (Prelude.Maybe Prelude.Text)
+lensUpgradeSummary_currentLensVersion = Lens.lens (\LensUpgradeSummary' {currentLensVersion} -> currentLensVersion) (\s@LensUpgradeSummary' {} a -> s {currentLensVersion = a} :: LensUpgradeSummary)
+
+-- | The latest version of the lens.
+lensUpgradeSummary_latestLensVersion :: Lens.Lens' LensUpgradeSummary (Prelude.Maybe Prelude.Text)
+lensUpgradeSummary_latestLensVersion = Lens.lens (\LensUpgradeSummary' {latestLensVersion} -> latestLensVersion) (\s@LensUpgradeSummary' {} a -> s {latestLensVersion = a} :: LensUpgradeSummary)
+
+-- | Undocumented member.
+lensUpgradeSummary_lensAlias :: Lens.Lens' LensUpgradeSummary (Prelude.Maybe Prelude.Text)
+lensUpgradeSummary_lensAlias = Lens.lens (\LensUpgradeSummary' {lensAlias} -> lensAlias) (\s@LensUpgradeSummary' {} a -> s {lensAlias = a} :: LensUpgradeSummary)
+
+-- | The ARN for the lens.
+lensUpgradeSummary_lensArn :: Lens.Lens' LensUpgradeSummary (Prelude.Maybe Prelude.Text)
+lensUpgradeSummary_lensArn = Lens.lens (\LensUpgradeSummary' {lensArn} -> lensArn) (\s@LensUpgradeSummary' {} a -> s {lensArn = a} :: LensUpgradeSummary)
+
+-- | Undocumented member.
+lensUpgradeSummary_workloadId :: Lens.Lens' LensUpgradeSummary (Prelude.Maybe Prelude.Text)
+lensUpgradeSummary_workloadId = Lens.lens (\LensUpgradeSummary' {workloadId} -> workloadId) (\s@LensUpgradeSummary' {} a -> s {workloadId = a} :: LensUpgradeSummary)
+
+-- | Undocumented member.
+lensUpgradeSummary_workloadName :: Lens.Lens' LensUpgradeSummary (Prelude.Maybe Prelude.Text)
+lensUpgradeSummary_workloadName = Lens.lens (\LensUpgradeSummary' {workloadName} -> workloadName) (\s@LensUpgradeSummary' {} a -> s {workloadName = a} :: LensUpgradeSummary)
+
+instance Data.FromJSON LensUpgradeSummary where
+  parseJSON =
+    Data.withObject
+      "LensUpgradeSummary"
+      ( \x ->
+          LensUpgradeSummary'
+            Prelude.<$> (x Data..:? "CurrentLensVersion")
+            Prelude.<*> (x Data..:? "LatestLensVersion")
+            Prelude.<*> (x Data..:? "LensAlias")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "WorkloadId")
+            Prelude.<*> (x Data..:? "WorkloadName")
+      )
+
+instance Prelude.Hashable LensUpgradeSummary where
+  hashWithSalt _salt LensUpgradeSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` currentLensVersion
+      `Prelude.hashWithSalt` latestLensVersion
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` workloadName
+
+instance Prelude.NFData LensUpgradeSummary where
+  rnf LensUpgradeSummary' {..} =
+    Prelude.rnf currentLensVersion
+      `Prelude.seq` Prelude.rnf latestLensVersion
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf workloadName
diff --git a/gen/Amazonka/WellArchitected/Types/Milestone.hs b/gen/Amazonka/WellArchitected/Types/Milestone.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/Milestone.hs
@@ -0,0 +1,105 @@
+{-# 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.WellArchitected.Types.Milestone
+-- 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.WellArchitected.Types.Milestone where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.Workload
+
+-- | A milestone return object.
+--
+-- /See:/ 'newMilestone' smart constructor.
+data Milestone = Milestone'
+  { milestoneName :: Prelude.Maybe Prelude.Text,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    recordedAt :: Prelude.Maybe Data.POSIX,
+    workload :: Prelude.Maybe Workload
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Milestone' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneName', 'milestone_milestoneName' - Undocumented member.
+--
+-- 'milestoneNumber', 'milestone_milestoneNumber' - Undocumented member.
+--
+-- 'recordedAt', 'milestone_recordedAt' - Undocumented member.
+--
+-- 'workload', 'milestone_workload' - Undocumented member.
+newMilestone ::
+  Milestone
+newMilestone =
+  Milestone'
+    { milestoneName = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      recordedAt = Prelude.Nothing,
+      workload = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+milestone_milestoneName :: Lens.Lens' Milestone (Prelude.Maybe Prelude.Text)
+milestone_milestoneName = Lens.lens (\Milestone' {milestoneName} -> milestoneName) (\s@Milestone' {} a -> s {milestoneName = a} :: Milestone)
+
+-- | Undocumented member.
+milestone_milestoneNumber :: Lens.Lens' Milestone (Prelude.Maybe Prelude.Natural)
+milestone_milestoneNumber = Lens.lens (\Milestone' {milestoneNumber} -> milestoneNumber) (\s@Milestone' {} a -> s {milestoneNumber = a} :: Milestone)
+
+-- | Undocumented member.
+milestone_recordedAt :: Lens.Lens' Milestone (Prelude.Maybe Prelude.UTCTime)
+milestone_recordedAt = Lens.lens (\Milestone' {recordedAt} -> recordedAt) (\s@Milestone' {} a -> s {recordedAt = a} :: Milestone) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+milestone_workload :: Lens.Lens' Milestone (Prelude.Maybe Workload)
+milestone_workload = Lens.lens (\Milestone' {workload} -> workload) (\s@Milestone' {} a -> s {workload = a} :: Milestone)
+
+instance Data.FromJSON Milestone where
+  parseJSON =
+    Data.withObject
+      "Milestone"
+      ( \x ->
+          Milestone'
+            Prelude.<$> (x Data..:? "MilestoneName")
+            Prelude.<*> (x Data..:? "MilestoneNumber")
+            Prelude.<*> (x Data..:? "RecordedAt")
+            Prelude.<*> (x Data..:? "Workload")
+      )
+
+instance Prelude.Hashable Milestone where
+  hashWithSalt _salt Milestone' {..} =
+    _salt
+      `Prelude.hashWithSalt` milestoneName
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` recordedAt
+      `Prelude.hashWithSalt` workload
+
+instance Prelude.NFData Milestone where
+  rnf Milestone' {..} =
+    Prelude.rnf milestoneName
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf recordedAt
+      `Prelude.seq` Prelude.rnf workload
diff --git a/gen/Amazonka/WellArchitected/Types/MilestoneSummary.hs b/gen/Amazonka/WellArchitected/Types/MilestoneSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/MilestoneSummary.hs
@@ -0,0 +1,105 @@
+{-# 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.WellArchitected.Types.MilestoneSummary
+-- 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.WellArchitected.Types.MilestoneSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.WorkloadSummary
+
+-- | A milestone summary return object.
+--
+-- /See:/ 'newMilestoneSummary' smart constructor.
+data MilestoneSummary = MilestoneSummary'
+  { milestoneName :: Prelude.Maybe Prelude.Text,
+    milestoneNumber :: Prelude.Maybe Prelude.Natural,
+    recordedAt :: Prelude.Maybe Data.POSIX,
+    workloadSummary :: Prelude.Maybe WorkloadSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MilestoneSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'milestoneName', 'milestoneSummary_milestoneName' - Undocumented member.
+--
+-- 'milestoneNumber', 'milestoneSummary_milestoneNumber' - Undocumented member.
+--
+-- 'recordedAt', 'milestoneSummary_recordedAt' - Undocumented member.
+--
+-- 'workloadSummary', 'milestoneSummary_workloadSummary' - Undocumented member.
+newMilestoneSummary ::
+  MilestoneSummary
+newMilestoneSummary =
+  MilestoneSummary'
+    { milestoneName = Prelude.Nothing,
+      milestoneNumber = Prelude.Nothing,
+      recordedAt = Prelude.Nothing,
+      workloadSummary = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+milestoneSummary_milestoneName :: Lens.Lens' MilestoneSummary (Prelude.Maybe Prelude.Text)
+milestoneSummary_milestoneName = Lens.lens (\MilestoneSummary' {milestoneName} -> milestoneName) (\s@MilestoneSummary' {} a -> s {milestoneName = a} :: MilestoneSummary)
+
+-- | Undocumented member.
+milestoneSummary_milestoneNumber :: Lens.Lens' MilestoneSummary (Prelude.Maybe Prelude.Natural)
+milestoneSummary_milestoneNumber = Lens.lens (\MilestoneSummary' {milestoneNumber} -> milestoneNumber) (\s@MilestoneSummary' {} a -> s {milestoneNumber = a} :: MilestoneSummary)
+
+-- | Undocumented member.
+milestoneSummary_recordedAt :: Lens.Lens' MilestoneSummary (Prelude.Maybe Prelude.UTCTime)
+milestoneSummary_recordedAt = Lens.lens (\MilestoneSummary' {recordedAt} -> recordedAt) (\s@MilestoneSummary' {} a -> s {recordedAt = a} :: MilestoneSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+milestoneSummary_workloadSummary :: Lens.Lens' MilestoneSummary (Prelude.Maybe WorkloadSummary)
+milestoneSummary_workloadSummary = Lens.lens (\MilestoneSummary' {workloadSummary} -> workloadSummary) (\s@MilestoneSummary' {} a -> s {workloadSummary = a} :: MilestoneSummary)
+
+instance Data.FromJSON MilestoneSummary where
+  parseJSON =
+    Data.withObject
+      "MilestoneSummary"
+      ( \x ->
+          MilestoneSummary'
+            Prelude.<$> (x Data..:? "MilestoneName")
+            Prelude.<*> (x Data..:? "MilestoneNumber")
+            Prelude.<*> (x Data..:? "RecordedAt")
+            Prelude.<*> (x Data..:? "WorkloadSummary")
+      )
+
+instance Prelude.Hashable MilestoneSummary where
+  hashWithSalt _salt MilestoneSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` milestoneName
+      `Prelude.hashWithSalt` milestoneNumber
+      `Prelude.hashWithSalt` recordedAt
+      `Prelude.hashWithSalt` workloadSummary
+
+instance Prelude.NFData MilestoneSummary where
+  rnf MilestoneSummary' {..} =
+    Prelude.rnf milestoneName
+      `Prelude.seq` Prelude.rnf milestoneNumber
+      `Prelude.seq` Prelude.rnf recordedAt
+      `Prelude.seq` Prelude.rnf workloadSummary
diff --git a/gen/Amazonka/WellArchitected/Types/NotificationSummary.hs b/gen/Amazonka/WellArchitected/Types/NotificationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/NotificationSummary.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.NotificationSummary
+-- 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.WellArchitected.Types.NotificationSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.LensUpgradeSummary
+import Amazonka.WellArchitected.Types.NotificationType
+
+-- | A notification summary return object.
+--
+-- /See:/ 'newNotificationSummary' smart constructor.
+data NotificationSummary = NotificationSummary'
+  { -- | Summary of lens upgrade.
+    lensUpgradeSummary :: Prelude.Maybe LensUpgradeSummary,
+    -- | The type of notification.
+    type' :: Prelude.Maybe NotificationType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotificationSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensUpgradeSummary', 'notificationSummary_lensUpgradeSummary' - Summary of lens upgrade.
+--
+-- 'type'', 'notificationSummary_type' - The type of notification.
+newNotificationSummary ::
+  NotificationSummary
+newNotificationSummary =
+  NotificationSummary'
+    { lensUpgradeSummary =
+        Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Summary of lens upgrade.
+notificationSummary_lensUpgradeSummary :: Lens.Lens' NotificationSummary (Prelude.Maybe LensUpgradeSummary)
+notificationSummary_lensUpgradeSummary = Lens.lens (\NotificationSummary' {lensUpgradeSummary} -> lensUpgradeSummary) (\s@NotificationSummary' {} a -> s {lensUpgradeSummary = a} :: NotificationSummary)
+
+-- | The type of notification.
+notificationSummary_type :: Lens.Lens' NotificationSummary (Prelude.Maybe NotificationType)
+notificationSummary_type = Lens.lens (\NotificationSummary' {type'} -> type') (\s@NotificationSummary' {} a -> s {type' = a} :: NotificationSummary)
+
+instance Data.FromJSON NotificationSummary where
+  parseJSON =
+    Data.withObject
+      "NotificationSummary"
+      ( \x ->
+          NotificationSummary'
+            Prelude.<$> (x Data..:? "LensUpgradeSummary")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable NotificationSummary where
+  hashWithSalt _salt NotificationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensUpgradeSummary
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData NotificationSummary where
+  rnf NotificationSummary' {..} =
+    Prelude.rnf lensUpgradeSummary
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/WellArchitected/Types/NotificationType.hs b/gen/Amazonka/WellArchitected/Types/NotificationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/NotificationType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.NotificationType
+-- 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.WellArchitected.Types.NotificationType
+  ( NotificationType
+      ( ..,
+        NotificationType_LENS_VERSION_DEPRECATED,
+        NotificationType_LENS_VERSION_UPGRADED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotificationType = NotificationType'
+  { fromNotificationType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotificationType_LENS_VERSION_DEPRECATED :: NotificationType
+pattern NotificationType_LENS_VERSION_DEPRECATED = NotificationType' "LENS_VERSION_DEPRECATED"
+
+pattern NotificationType_LENS_VERSION_UPGRADED :: NotificationType
+pattern NotificationType_LENS_VERSION_UPGRADED = NotificationType' "LENS_VERSION_UPGRADED"
+
+{-# COMPLETE
+  NotificationType_LENS_VERSION_DEPRECATED,
+  NotificationType_LENS_VERSION_UPGRADED,
+  NotificationType'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/OrganizationSharingStatus.hs b/gen/Amazonka/WellArchitected/Types/OrganizationSharingStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/OrganizationSharingStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.OrganizationSharingStatus
+-- 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.WellArchitected.Types.OrganizationSharingStatus
+  ( OrganizationSharingStatus
+      ( ..,
+        OrganizationSharingStatus_DISABLED,
+        OrganizationSharingStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrganizationSharingStatus = OrganizationSharingStatus'
+  { fromOrganizationSharingStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OrganizationSharingStatus_DISABLED :: OrganizationSharingStatus
+pattern OrganizationSharingStatus_DISABLED = OrganizationSharingStatus' "DISABLED"
+
+pattern OrganizationSharingStatus_ENABLED :: OrganizationSharingStatus
+pattern OrganizationSharingStatus_ENABLED = OrganizationSharingStatus' "ENABLED"
+
+{-# COMPLETE
+  OrganizationSharingStatus_DISABLED,
+  OrganizationSharingStatus_ENABLED,
+  OrganizationSharingStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/PermissionType.hs b/gen/Amazonka/WellArchitected/Types/PermissionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/PermissionType.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.PermissionType
+-- 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.WellArchitected.Types.PermissionType
+  ( PermissionType
+      ( ..,
+        PermissionType_CONTRIBUTOR,
+        PermissionType_READONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Permission granted on a workload share.
+newtype PermissionType = PermissionType'
+  { fromPermissionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PermissionType_CONTRIBUTOR :: PermissionType
+pattern PermissionType_CONTRIBUTOR = PermissionType' "CONTRIBUTOR"
+
+pattern PermissionType_READONLY :: PermissionType
+pattern PermissionType_READONLY = PermissionType' "READONLY"
+
+{-# COMPLETE
+  PermissionType_CONTRIBUTOR,
+  PermissionType_READONLY,
+  PermissionType'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/PillarDifference.hs b/gen/Amazonka/WellArchitected/Types/PillarDifference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/PillarDifference.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.PillarDifference
+-- 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.WellArchitected.Types.PillarDifference where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.DifferenceStatus
+import Amazonka.WellArchitected.Types.QuestionDifference
+
+-- | A pillar difference return object.
+--
+-- /See:/ 'newPillarDifference' smart constructor.
+data PillarDifference = PillarDifference'
+  { -- | Indicates the type of change to the pillar.
+    differenceStatus :: Prelude.Maybe DifferenceStatus,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    pillarName :: Prelude.Maybe Prelude.Text,
+    -- | List of question differences.
+    questionDifferences :: Prelude.Maybe [QuestionDifference]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PillarDifference' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'differenceStatus', 'pillarDifference_differenceStatus' - Indicates the type of change to the pillar.
+--
+-- 'pillarId', 'pillarDifference_pillarId' - Undocumented member.
+--
+-- 'pillarName', 'pillarDifference_pillarName' - Undocumented member.
+--
+-- 'questionDifferences', 'pillarDifference_questionDifferences' - List of question differences.
+newPillarDifference ::
+  PillarDifference
+newPillarDifference =
+  PillarDifference'
+    { differenceStatus =
+        Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      pillarName = Prelude.Nothing,
+      questionDifferences = Prelude.Nothing
+    }
+
+-- | Indicates the type of change to the pillar.
+pillarDifference_differenceStatus :: Lens.Lens' PillarDifference (Prelude.Maybe DifferenceStatus)
+pillarDifference_differenceStatus = Lens.lens (\PillarDifference' {differenceStatus} -> differenceStatus) (\s@PillarDifference' {} a -> s {differenceStatus = a} :: PillarDifference)
+
+-- | Undocumented member.
+pillarDifference_pillarId :: Lens.Lens' PillarDifference (Prelude.Maybe Prelude.Text)
+pillarDifference_pillarId = Lens.lens (\PillarDifference' {pillarId} -> pillarId) (\s@PillarDifference' {} a -> s {pillarId = a} :: PillarDifference)
+
+-- | Undocumented member.
+pillarDifference_pillarName :: Lens.Lens' PillarDifference (Prelude.Maybe Prelude.Text)
+pillarDifference_pillarName = Lens.lens (\PillarDifference' {pillarName} -> pillarName) (\s@PillarDifference' {} a -> s {pillarName = a} :: PillarDifference)
+
+-- | List of question differences.
+pillarDifference_questionDifferences :: Lens.Lens' PillarDifference (Prelude.Maybe [QuestionDifference])
+pillarDifference_questionDifferences = Lens.lens (\PillarDifference' {questionDifferences} -> questionDifferences) (\s@PillarDifference' {} a -> s {questionDifferences = a} :: PillarDifference) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PillarDifference where
+  parseJSON =
+    Data.withObject
+      "PillarDifference"
+      ( \x ->
+          PillarDifference'
+            Prelude.<$> (x Data..:? "DifferenceStatus")
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "PillarName")
+            Prelude.<*> ( x
+                            Data..:? "QuestionDifferences"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PillarDifference where
+  hashWithSalt _salt PillarDifference' {..} =
+    _salt
+      `Prelude.hashWithSalt` differenceStatus
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` pillarName
+      `Prelude.hashWithSalt` questionDifferences
+
+instance Prelude.NFData PillarDifference where
+  rnf PillarDifference' {..} =
+    Prelude.rnf differenceStatus
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf pillarName
+      `Prelude.seq` Prelude.rnf questionDifferences
diff --git a/gen/Amazonka/WellArchitected/Types/PillarReviewSummary.hs b/gen/Amazonka/WellArchitected/Types/PillarReviewSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/PillarReviewSummary.hs
@@ -0,0 +1,105 @@
+{-# 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.WellArchitected.Types.PillarReviewSummary
+-- 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.WellArchitected.Types.PillarReviewSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.Risk
+
+-- | A pillar review summary of a lens review.
+--
+-- /See:/ 'newPillarReviewSummary' smart constructor.
+data PillarReviewSummary = PillarReviewSummary'
+  { notes :: Prelude.Maybe Prelude.Text,
+    pillarId :: Prelude.Maybe Prelude.Text,
+    pillarName :: Prelude.Maybe Prelude.Text,
+    riskCounts :: Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PillarReviewSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'notes', 'pillarReviewSummary_notes' - Undocumented member.
+--
+-- 'pillarId', 'pillarReviewSummary_pillarId' - Undocumented member.
+--
+-- 'pillarName', 'pillarReviewSummary_pillarName' - Undocumented member.
+--
+-- 'riskCounts', 'pillarReviewSummary_riskCounts' - Undocumented member.
+newPillarReviewSummary ::
+  PillarReviewSummary
+newPillarReviewSummary =
+  PillarReviewSummary'
+    { notes = Prelude.Nothing,
+      pillarId = Prelude.Nothing,
+      pillarName = Prelude.Nothing,
+      riskCounts = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+pillarReviewSummary_notes :: Lens.Lens' PillarReviewSummary (Prelude.Maybe Prelude.Text)
+pillarReviewSummary_notes = Lens.lens (\PillarReviewSummary' {notes} -> notes) (\s@PillarReviewSummary' {} a -> s {notes = a} :: PillarReviewSummary)
+
+-- | Undocumented member.
+pillarReviewSummary_pillarId :: Lens.Lens' PillarReviewSummary (Prelude.Maybe Prelude.Text)
+pillarReviewSummary_pillarId = Lens.lens (\PillarReviewSummary' {pillarId} -> pillarId) (\s@PillarReviewSummary' {} a -> s {pillarId = a} :: PillarReviewSummary)
+
+-- | Undocumented member.
+pillarReviewSummary_pillarName :: Lens.Lens' PillarReviewSummary (Prelude.Maybe Prelude.Text)
+pillarReviewSummary_pillarName = Lens.lens (\PillarReviewSummary' {pillarName} -> pillarName) (\s@PillarReviewSummary' {} a -> s {pillarName = a} :: PillarReviewSummary)
+
+-- | Undocumented member.
+pillarReviewSummary_riskCounts :: Lens.Lens' PillarReviewSummary (Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural))
+pillarReviewSummary_riskCounts = Lens.lens (\PillarReviewSummary' {riskCounts} -> riskCounts) (\s@PillarReviewSummary' {} a -> s {riskCounts = a} :: PillarReviewSummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PillarReviewSummary where
+  parseJSON =
+    Data.withObject
+      "PillarReviewSummary"
+      ( \x ->
+          PillarReviewSummary'
+            Prelude.<$> (x Data..:? "Notes")
+            Prelude.<*> (x Data..:? "PillarId")
+            Prelude.<*> (x Data..:? "PillarName")
+            Prelude.<*> (x Data..:? "RiskCounts" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable PillarReviewSummary where
+  hashWithSalt _salt PillarReviewSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` pillarId
+      `Prelude.hashWithSalt` pillarName
+      `Prelude.hashWithSalt` riskCounts
+
+instance Prelude.NFData PillarReviewSummary where
+  rnf PillarReviewSummary' {..} =
+    Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf pillarId
+      `Prelude.seq` Prelude.rnf pillarName
+      `Prelude.seq` Prelude.rnf riskCounts
diff --git a/gen/Amazonka/WellArchitected/Types/QuestionDifference.hs b/gen/Amazonka/WellArchitected/Types/QuestionDifference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/QuestionDifference.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.QuestionDifference
+-- 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.WellArchitected.Types.QuestionDifference where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.DifferenceStatus
+
+-- | A question difference return object.
+--
+-- /See:/ 'newQuestionDifference' smart constructor.
+data QuestionDifference = QuestionDifference'
+  { -- | Indicates the type of change to the question.
+    differenceStatus :: Prelude.Maybe DifferenceStatus,
+    questionId :: Prelude.Maybe Prelude.Text,
+    questionTitle :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QuestionDifference' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'differenceStatus', 'questionDifference_differenceStatus' - Indicates the type of change to the question.
+--
+-- 'questionId', 'questionDifference_questionId' - Undocumented member.
+--
+-- 'questionTitle', 'questionDifference_questionTitle' - Undocumented member.
+newQuestionDifference ::
+  QuestionDifference
+newQuestionDifference =
+  QuestionDifference'
+    { differenceStatus =
+        Prelude.Nothing,
+      questionId = Prelude.Nothing,
+      questionTitle = Prelude.Nothing
+    }
+
+-- | Indicates the type of change to the question.
+questionDifference_differenceStatus :: Lens.Lens' QuestionDifference (Prelude.Maybe DifferenceStatus)
+questionDifference_differenceStatus = Lens.lens (\QuestionDifference' {differenceStatus} -> differenceStatus) (\s@QuestionDifference' {} a -> s {differenceStatus = a} :: QuestionDifference)
+
+-- | Undocumented member.
+questionDifference_questionId :: Lens.Lens' QuestionDifference (Prelude.Maybe Prelude.Text)
+questionDifference_questionId = Lens.lens (\QuestionDifference' {questionId} -> questionId) (\s@QuestionDifference' {} a -> s {questionId = a} :: QuestionDifference)
+
+-- | Undocumented member.
+questionDifference_questionTitle :: Lens.Lens' QuestionDifference (Prelude.Maybe Prelude.Text)
+questionDifference_questionTitle = Lens.lens (\QuestionDifference' {questionTitle} -> questionTitle) (\s@QuestionDifference' {} a -> s {questionTitle = a} :: QuestionDifference)
+
+instance Data.FromJSON QuestionDifference where
+  parseJSON =
+    Data.withObject
+      "QuestionDifference"
+      ( \x ->
+          QuestionDifference'
+            Prelude.<$> (x Data..:? "DifferenceStatus")
+            Prelude.<*> (x Data..:? "QuestionId")
+            Prelude.<*> (x Data..:? "QuestionTitle")
+      )
+
+instance Prelude.Hashable QuestionDifference where
+  hashWithSalt _salt QuestionDifference' {..} =
+    _salt
+      `Prelude.hashWithSalt` differenceStatus
+      `Prelude.hashWithSalt` questionId
+      `Prelude.hashWithSalt` questionTitle
+
+instance Prelude.NFData QuestionDifference where
+  rnf QuestionDifference' {..} =
+    Prelude.rnf differenceStatus
+      `Prelude.seq` Prelude.rnf questionId
+      `Prelude.seq` Prelude.rnf questionTitle
diff --git a/gen/Amazonka/WellArchitected/Types/Risk.hs b/gen/Amazonka/WellArchitected/Types/Risk.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/Risk.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.Risk
+-- 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.WellArchitected.Types.Risk
+  ( Risk
+      ( ..,
+        Risk_HIGH,
+        Risk_MEDIUM,
+        Risk_NONE,
+        Risk_NOT_APPLICABLE,
+        Risk_UNANSWERED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The risk for a given workload, lens review, pillar, or question.
+newtype Risk = Risk' {fromRisk :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Risk_HIGH :: Risk
+pattern Risk_HIGH = Risk' "HIGH"
+
+pattern Risk_MEDIUM :: Risk
+pattern Risk_MEDIUM = Risk' "MEDIUM"
+
+pattern Risk_NONE :: Risk
+pattern Risk_NONE = Risk' "NONE"
+
+pattern Risk_NOT_APPLICABLE :: Risk
+pattern Risk_NOT_APPLICABLE = Risk' "NOT_APPLICABLE"
+
+pattern Risk_UNANSWERED :: Risk
+pattern Risk_UNANSWERED = Risk' "UNANSWERED"
+
+{-# COMPLETE
+  Risk_HIGH,
+  Risk_MEDIUM,
+  Risk_NONE,
+  Risk_NOT_APPLICABLE,
+  Risk_UNANSWERED,
+  Risk'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ShareInvitation.hs b/gen/Amazonka/WellArchitected/Types/ShareInvitation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ShareInvitation.hs
@@ -0,0 +1,119 @@
+{-# 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.WellArchitected.Types.ShareInvitation
+-- 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.WellArchitected.Types.ShareInvitation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.ShareResourceType
+
+-- | The share invitation.
+--
+-- /See:/ 'newShareInvitation' smart constructor.
+data ShareInvitation = ShareInvitation'
+  { lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID assigned to the share invitation.
+    shareInvitationId :: Prelude.Maybe Prelude.Text,
+    -- | The resource type of the share invitation.
+    shareResourceType :: Prelude.Maybe ShareResourceType,
+    workloadId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShareInvitation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensAlias', 'shareInvitation_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'shareInvitation_lensArn' - The ARN for the lens.
+--
+-- 'shareInvitationId', 'shareInvitation_shareInvitationId' - The ID assigned to the share invitation.
+--
+-- 'shareResourceType', 'shareInvitation_shareResourceType' - The resource type of the share invitation.
+--
+-- 'workloadId', 'shareInvitation_workloadId' - Undocumented member.
+newShareInvitation ::
+  ShareInvitation
+newShareInvitation =
+  ShareInvitation'
+    { lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      shareInvitationId = Prelude.Nothing,
+      shareResourceType = Prelude.Nothing,
+      workloadId = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+shareInvitation_lensAlias :: Lens.Lens' ShareInvitation (Prelude.Maybe Prelude.Text)
+shareInvitation_lensAlias = Lens.lens (\ShareInvitation' {lensAlias} -> lensAlias) (\s@ShareInvitation' {} a -> s {lensAlias = a} :: ShareInvitation)
+
+-- | The ARN for the lens.
+shareInvitation_lensArn :: Lens.Lens' ShareInvitation (Prelude.Maybe Prelude.Text)
+shareInvitation_lensArn = Lens.lens (\ShareInvitation' {lensArn} -> lensArn) (\s@ShareInvitation' {} a -> s {lensArn = a} :: ShareInvitation)
+
+-- | The ID assigned to the share invitation.
+shareInvitation_shareInvitationId :: Lens.Lens' ShareInvitation (Prelude.Maybe Prelude.Text)
+shareInvitation_shareInvitationId = Lens.lens (\ShareInvitation' {shareInvitationId} -> shareInvitationId) (\s@ShareInvitation' {} a -> s {shareInvitationId = a} :: ShareInvitation)
+
+-- | The resource type of the share invitation.
+shareInvitation_shareResourceType :: Lens.Lens' ShareInvitation (Prelude.Maybe ShareResourceType)
+shareInvitation_shareResourceType = Lens.lens (\ShareInvitation' {shareResourceType} -> shareResourceType) (\s@ShareInvitation' {} a -> s {shareResourceType = a} :: ShareInvitation)
+
+-- | Undocumented member.
+shareInvitation_workloadId :: Lens.Lens' ShareInvitation (Prelude.Maybe Prelude.Text)
+shareInvitation_workloadId = Lens.lens (\ShareInvitation' {workloadId} -> workloadId) (\s@ShareInvitation' {} a -> s {workloadId = a} :: ShareInvitation)
+
+instance Data.FromJSON ShareInvitation where
+  parseJSON =
+    Data.withObject
+      "ShareInvitation"
+      ( \x ->
+          ShareInvitation'
+            Prelude.<$> (x Data..:? "LensAlias")
+            Prelude.<*> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "ShareInvitationId")
+            Prelude.<*> (x Data..:? "ShareResourceType")
+            Prelude.<*> (x Data..:? "WorkloadId")
+      )
+
+instance Prelude.Hashable ShareInvitation where
+  hashWithSalt _salt ShareInvitation' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` shareInvitationId
+      `Prelude.hashWithSalt` shareResourceType
+      `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData ShareInvitation where
+  rnf ShareInvitation' {..} =
+    Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf shareInvitationId
+      `Prelude.seq` Prelude.rnf shareResourceType
+      `Prelude.seq` Prelude.rnf workloadId
diff --git a/gen/Amazonka/WellArchitected/Types/ShareInvitationAction.hs b/gen/Amazonka/WellArchitected/Types/ShareInvitationAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ShareInvitationAction.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ShareInvitationAction
+-- 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.WellArchitected.Types.ShareInvitationAction
+  ( ShareInvitationAction
+      ( ..,
+        ShareInvitationAction_ACCEPT,
+        ShareInvitationAction_REJECT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Share invitation action taken by contributor.
+newtype ShareInvitationAction = ShareInvitationAction'
+  { fromShareInvitationAction ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ShareInvitationAction_ACCEPT :: ShareInvitationAction
+pattern ShareInvitationAction_ACCEPT = ShareInvitationAction' "ACCEPT"
+
+pattern ShareInvitationAction_REJECT :: ShareInvitationAction
+pattern ShareInvitationAction_REJECT = ShareInvitationAction' "REJECT"
+
+{-# COMPLETE
+  ShareInvitationAction_ACCEPT,
+  ShareInvitationAction_REJECT,
+  ShareInvitationAction'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ShareInvitationSummary.hs b/gen/Amazonka/WellArchitected/Types/ShareInvitationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ShareInvitationSummary.hs
@@ -0,0 +1,164 @@
+{-# 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.WellArchitected.Types.ShareInvitationSummary
+-- 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.WellArchitected.Types.ShareInvitationSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.PermissionType
+import Amazonka.WellArchitected.Types.ShareResourceType
+
+-- | A share invitation summary return object.
+--
+-- /See:/ 'newShareInvitationSummary' smart constructor.
+data ShareInvitationSummary = ShareInvitationSummary'
+  { -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    lensName :: Prelude.Maybe Prelude.Text,
+    permissionType :: Prelude.Maybe PermissionType,
+    -- | The ID assigned to the share invitation.
+    shareInvitationId :: Prelude.Maybe Prelude.Text,
+    -- | The resource type of the share invitation.
+    shareResourceType :: Prelude.Maybe ShareResourceType,
+    sharedBy :: Prelude.Maybe Prelude.Text,
+    sharedWith :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Maybe Prelude.Text,
+    workloadName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShareInvitationSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensArn', 'shareInvitationSummary_lensArn' - The ARN for the lens.
+--
+-- 'lensName', 'shareInvitationSummary_lensName' - Undocumented member.
+--
+-- 'permissionType', 'shareInvitationSummary_permissionType' - Undocumented member.
+--
+-- 'shareInvitationId', 'shareInvitationSummary_shareInvitationId' - The ID assigned to the share invitation.
+--
+-- 'shareResourceType', 'shareInvitationSummary_shareResourceType' - The resource type of the share invitation.
+--
+-- 'sharedBy', 'shareInvitationSummary_sharedBy' - Undocumented member.
+--
+-- 'sharedWith', 'shareInvitationSummary_sharedWith' - Undocumented member.
+--
+-- 'workloadId', 'shareInvitationSummary_workloadId' - Undocumented member.
+--
+-- 'workloadName', 'shareInvitationSummary_workloadName' - Undocumented member.
+newShareInvitationSummary ::
+  ShareInvitationSummary
+newShareInvitationSummary =
+  ShareInvitationSummary'
+    { lensArn = Prelude.Nothing,
+      lensName = Prelude.Nothing,
+      permissionType = Prelude.Nothing,
+      shareInvitationId = Prelude.Nothing,
+      shareResourceType = Prelude.Nothing,
+      sharedBy = Prelude.Nothing,
+      sharedWith = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      workloadName = Prelude.Nothing
+    }
+
+-- | The ARN for the lens.
+shareInvitationSummary_lensArn :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_lensArn = Lens.lens (\ShareInvitationSummary' {lensArn} -> lensArn) (\s@ShareInvitationSummary' {} a -> s {lensArn = a} :: ShareInvitationSummary)
+
+-- | Undocumented member.
+shareInvitationSummary_lensName :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_lensName = Lens.lens (\ShareInvitationSummary' {lensName} -> lensName) (\s@ShareInvitationSummary' {} a -> s {lensName = a} :: ShareInvitationSummary)
+
+-- | Undocumented member.
+shareInvitationSummary_permissionType :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe PermissionType)
+shareInvitationSummary_permissionType = Lens.lens (\ShareInvitationSummary' {permissionType} -> permissionType) (\s@ShareInvitationSummary' {} a -> s {permissionType = a} :: ShareInvitationSummary)
+
+-- | The ID assigned to the share invitation.
+shareInvitationSummary_shareInvitationId :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_shareInvitationId = Lens.lens (\ShareInvitationSummary' {shareInvitationId} -> shareInvitationId) (\s@ShareInvitationSummary' {} a -> s {shareInvitationId = a} :: ShareInvitationSummary)
+
+-- | The resource type of the share invitation.
+shareInvitationSummary_shareResourceType :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe ShareResourceType)
+shareInvitationSummary_shareResourceType = Lens.lens (\ShareInvitationSummary' {shareResourceType} -> shareResourceType) (\s@ShareInvitationSummary' {} a -> s {shareResourceType = a} :: ShareInvitationSummary)
+
+-- | Undocumented member.
+shareInvitationSummary_sharedBy :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_sharedBy = Lens.lens (\ShareInvitationSummary' {sharedBy} -> sharedBy) (\s@ShareInvitationSummary' {} a -> s {sharedBy = a} :: ShareInvitationSummary)
+
+-- | Undocumented member.
+shareInvitationSummary_sharedWith :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_sharedWith = Lens.lens (\ShareInvitationSummary' {sharedWith} -> sharedWith) (\s@ShareInvitationSummary' {} a -> s {sharedWith = a} :: ShareInvitationSummary)
+
+-- | Undocumented member.
+shareInvitationSummary_workloadId :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_workloadId = Lens.lens (\ShareInvitationSummary' {workloadId} -> workloadId) (\s@ShareInvitationSummary' {} a -> s {workloadId = a} :: ShareInvitationSummary)
+
+-- | Undocumented member.
+shareInvitationSummary_workloadName :: Lens.Lens' ShareInvitationSummary (Prelude.Maybe Prelude.Text)
+shareInvitationSummary_workloadName = Lens.lens (\ShareInvitationSummary' {workloadName} -> workloadName) (\s@ShareInvitationSummary' {} a -> s {workloadName = a} :: ShareInvitationSummary)
+
+instance Data.FromJSON ShareInvitationSummary where
+  parseJSON =
+    Data.withObject
+      "ShareInvitationSummary"
+      ( \x ->
+          ShareInvitationSummary'
+            Prelude.<$> (x Data..:? "LensArn")
+            Prelude.<*> (x Data..:? "LensName")
+            Prelude.<*> (x Data..:? "PermissionType")
+            Prelude.<*> (x Data..:? "ShareInvitationId")
+            Prelude.<*> (x Data..:? "ShareResourceType")
+            Prelude.<*> (x Data..:? "SharedBy")
+            Prelude.<*> (x Data..:? "SharedWith")
+            Prelude.<*> (x Data..:? "WorkloadId")
+            Prelude.<*> (x Data..:? "WorkloadName")
+      )
+
+instance Prelude.Hashable ShareInvitationSummary where
+  hashWithSalt _salt ShareInvitationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensArn
+      `Prelude.hashWithSalt` lensName
+      `Prelude.hashWithSalt` permissionType
+      `Prelude.hashWithSalt` shareInvitationId
+      `Prelude.hashWithSalt` shareResourceType
+      `Prelude.hashWithSalt` sharedBy
+      `Prelude.hashWithSalt` sharedWith
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` workloadName
+
+instance Prelude.NFData ShareInvitationSummary where
+  rnf ShareInvitationSummary' {..} =
+    Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf lensName
+      `Prelude.seq` Prelude.rnf permissionType
+      `Prelude.seq` Prelude.rnf shareInvitationId
+      `Prelude.seq` Prelude.rnf shareResourceType
+      `Prelude.seq` Prelude.rnf sharedBy
+      `Prelude.seq` Prelude.rnf sharedWith
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf workloadName
diff --git a/gen/Amazonka/WellArchitected/Types/ShareResourceType.hs b/gen/Amazonka/WellArchitected/Types/ShareResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ShareResourceType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ShareResourceType
+-- 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.WellArchitected.Types.ShareResourceType
+  ( ShareResourceType
+      ( ..,
+        ShareResourceType_LENS,
+        ShareResourceType_WORKLOAD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ShareResourceType = ShareResourceType'
+  { fromShareResourceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ShareResourceType_LENS :: ShareResourceType
+pattern ShareResourceType_LENS = ShareResourceType' "LENS"
+
+pattern ShareResourceType_WORKLOAD :: ShareResourceType
+pattern ShareResourceType_WORKLOAD = ShareResourceType' "WORKLOAD"
+
+{-# COMPLETE
+  ShareResourceType_LENS,
+  ShareResourceType_WORKLOAD,
+  ShareResourceType'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/ShareStatus.hs b/gen/Amazonka/WellArchitected/Types/ShareStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/ShareStatus.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.ShareStatus
+-- 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.WellArchitected.Types.ShareStatus
+  ( ShareStatus
+      ( ..,
+        ShareStatus_ACCEPTED,
+        ShareStatus_ASSOCIATED,
+        ShareStatus_ASSOCIATING,
+        ShareStatus_EXPIRED,
+        ShareStatus_FAILED,
+        ShareStatus_PENDING,
+        ShareStatus_REJECTED,
+        ShareStatus_REVOKED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The status of a workload share.
+newtype ShareStatus = ShareStatus'
+  { fromShareStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ShareStatus_ACCEPTED :: ShareStatus
+pattern ShareStatus_ACCEPTED = ShareStatus' "ACCEPTED"
+
+pattern ShareStatus_ASSOCIATED :: ShareStatus
+pattern ShareStatus_ASSOCIATED = ShareStatus' "ASSOCIATED"
+
+pattern ShareStatus_ASSOCIATING :: ShareStatus
+pattern ShareStatus_ASSOCIATING = ShareStatus' "ASSOCIATING"
+
+pattern ShareStatus_EXPIRED :: ShareStatus
+pattern ShareStatus_EXPIRED = ShareStatus' "EXPIRED"
+
+pattern ShareStatus_FAILED :: ShareStatus
+pattern ShareStatus_FAILED = ShareStatus' "FAILED"
+
+pattern ShareStatus_PENDING :: ShareStatus
+pattern ShareStatus_PENDING = ShareStatus' "PENDING"
+
+pattern ShareStatus_REJECTED :: ShareStatus
+pattern ShareStatus_REJECTED = ShareStatus' "REJECTED"
+
+pattern ShareStatus_REVOKED :: ShareStatus
+pattern ShareStatus_REVOKED = ShareStatus' "REVOKED"
+
+{-# COMPLETE
+  ShareStatus_ACCEPTED,
+  ShareStatus_ASSOCIATED,
+  ShareStatus_ASSOCIATING,
+  ShareStatus_EXPIRED,
+  ShareStatus_FAILED,
+  ShareStatus_PENDING,
+  ShareStatus_REJECTED,
+  ShareStatus_REVOKED,
+  ShareStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/TrustedAdvisorIntegrationStatus.hs b/gen/Amazonka/WellArchitected/Types/TrustedAdvisorIntegrationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/TrustedAdvisorIntegrationStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.TrustedAdvisorIntegrationStatus
+-- 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.WellArchitected.Types.TrustedAdvisorIntegrationStatus
+  ( TrustedAdvisorIntegrationStatus
+      ( ..,
+        TrustedAdvisorIntegrationStatus_DISABLED,
+        TrustedAdvisorIntegrationStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrustedAdvisorIntegrationStatus = TrustedAdvisorIntegrationStatus'
+  { fromTrustedAdvisorIntegrationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrustedAdvisorIntegrationStatus_DISABLED :: TrustedAdvisorIntegrationStatus
+pattern TrustedAdvisorIntegrationStatus_DISABLED = TrustedAdvisorIntegrationStatus' "DISABLED"
+
+pattern TrustedAdvisorIntegrationStatus_ENABLED :: TrustedAdvisorIntegrationStatus
+pattern TrustedAdvisorIntegrationStatus_ENABLED = TrustedAdvisorIntegrationStatus' "ENABLED"
+
+{-# COMPLETE
+  TrustedAdvisorIntegrationStatus_DISABLED,
+  TrustedAdvisorIntegrationStatus_ENABLED,
+  TrustedAdvisorIntegrationStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/VersionDifferences.hs b/gen/Amazonka/WellArchitected/Types/VersionDifferences.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/VersionDifferences.hs
@@ -0,0 +1,76 @@
+{-# 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.WellArchitected.Types.VersionDifferences
+-- 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.WellArchitected.Types.VersionDifferences where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.PillarDifference
+
+-- | The differences between the base and latest versions of the lens.
+--
+-- /See:/ 'newVersionDifferences' smart constructor.
+data VersionDifferences = VersionDifferences'
+  { -- | The differences between the base and latest versions of the lens.
+    pillarDifferences :: Prelude.Maybe [PillarDifference]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VersionDifferences' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pillarDifferences', 'versionDifferences_pillarDifferences' - The differences between the base and latest versions of the lens.
+newVersionDifferences ::
+  VersionDifferences
+newVersionDifferences =
+  VersionDifferences'
+    { pillarDifferences =
+        Prelude.Nothing
+    }
+
+-- | The differences between the base and latest versions of the lens.
+versionDifferences_pillarDifferences :: Lens.Lens' VersionDifferences (Prelude.Maybe [PillarDifference])
+versionDifferences_pillarDifferences = Lens.lens (\VersionDifferences' {pillarDifferences} -> pillarDifferences) (\s@VersionDifferences' {} a -> s {pillarDifferences = a} :: VersionDifferences) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON VersionDifferences where
+  parseJSON =
+    Data.withObject
+      "VersionDifferences"
+      ( \x ->
+          VersionDifferences'
+            Prelude.<$> ( x
+                            Data..:? "PillarDifferences"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable VersionDifferences where
+  hashWithSalt _salt VersionDifferences' {..} =
+    _salt `Prelude.hashWithSalt` pillarDifferences
+
+instance Prelude.NFData VersionDifferences where
+  rnf VersionDifferences' {..} =
+    Prelude.rnf pillarDifferences
diff --git a/gen/Amazonka/WellArchitected/Types/Workload.hs b/gen/Amazonka/WellArchitected/Types/Workload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/Workload.hs
@@ -0,0 +1,363 @@
+{-# 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.WellArchitected.Types.Workload
+-- 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.WellArchitected.Types.Workload where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.Risk
+import Amazonka.WellArchitected.Types.WorkloadDiscoveryConfig
+import Amazonka.WellArchitected.Types.WorkloadEnvironment
+import Amazonka.WellArchitected.Types.WorkloadImprovementStatus
+
+-- | A workload return object.
+--
+-- /See:/ 'newWorkload' smart constructor.
+data Workload = Workload'
+  { accountIds :: Prelude.Maybe [Prelude.Text],
+    -- | List of AppRegistry application ARNs associated to the workload.
+    applications :: Prelude.Maybe [Prelude.Text],
+    architecturalDesign :: Prelude.Maybe Prelude.Text,
+    awsRegions :: Prelude.Maybe [Prelude.Text],
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Discovery configuration associated to the workload.
+    discoveryConfig :: Prelude.Maybe WorkloadDiscoveryConfig,
+    environment :: Prelude.Maybe WorkloadEnvironment,
+    improvementStatus :: Prelude.Maybe WorkloadImprovementStatus,
+    industry :: Prelude.Maybe Prelude.Text,
+    industryType :: Prelude.Maybe Prelude.Text,
+    -- | Flag indicating whether the workload owner has acknowledged that the
+    -- /Review owner/ field is required.
+    --
+    -- If a __Review owner__ is not added to the workload within 60 days of
+    -- acknowledgement, access to the workload is restricted until an owner is
+    -- added.
+    isReviewOwnerUpdateAcknowledged :: Prelude.Maybe Prelude.Bool,
+    lenses :: Prelude.Maybe [Prelude.Text],
+    nonAwsRegions :: Prelude.Maybe [Prelude.Text],
+    notes :: Prelude.Maybe Prelude.Text,
+    owner :: Prelude.Maybe Prelude.Text,
+    pillarPriorities :: Prelude.Maybe [Prelude.Text],
+    reviewOwner :: Prelude.Maybe Prelude.Text,
+    reviewRestrictionDate :: Prelude.Maybe Data.POSIX,
+    riskCounts :: Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural),
+    -- | The ID assigned to the share invitation.
+    shareInvitationId :: Prelude.Maybe Prelude.Text,
+    -- | The tags associated with the workload.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    updatedAt :: Prelude.Maybe Data.POSIX,
+    workloadArn :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Maybe Prelude.Text,
+    workloadName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Workload' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountIds', 'workload_accountIds' - Undocumented member.
+--
+-- 'applications', 'workload_applications' - List of AppRegistry application ARNs associated to the workload.
+--
+-- 'architecturalDesign', 'workload_architecturalDesign' - Undocumented member.
+--
+-- 'awsRegions', 'workload_awsRegions' - Undocumented member.
+--
+-- 'description', 'workload_description' - Undocumented member.
+--
+-- 'discoveryConfig', 'workload_discoveryConfig' - Discovery configuration associated to the workload.
+--
+-- 'environment', 'workload_environment' - Undocumented member.
+--
+-- 'improvementStatus', 'workload_improvementStatus' - Undocumented member.
+--
+-- 'industry', 'workload_industry' - Undocumented member.
+--
+-- 'industryType', 'workload_industryType' - Undocumented member.
+--
+-- 'isReviewOwnerUpdateAcknowledged', 'workload_isReviewOwnerUpdateAcknowledged' - Flag indicating whether the workload owner has acknowledged that the
+-- /Review owner/ field is required.
+--
+-- If a __Review owner__ is not added to the workload within 60 days of
+-- acknowledgement, access to the workload is restricted until an owner is
+-- added.
+--
+-- 'lenses', 'workload_lenses' - Undocumented member.
+--
+-- 'nonAwsRegions', 'workload_nonAwsRegions' - Undocumented member.
+--
+-- 'notes', 'workload_notes' - Undocumented member.
+--
+-- 'owner', 'workload_owner' - Undocumented member.
+--
+-- 'pillarPriorities', 'workload_pillarPriorities' - Undocumented member.
+--
+-- 'reviewOwner', 'workload_reviewOwner' - Undocumented member.
+--
+-- 'reviewRestrictionDate', 'workload_reviewRestrictionDate' - Undocumented member.
+--
+-- 'riskCounts', 'workload_riskCounts' - Undocumented member.
+--
+-- 'shareInvitationId', 'workload_shareInvitationId' - The ID assigned to the share invitation.
+--
+-- 'tags', 'workload_tags' - The tags associated with the workload.
+--
+-- 'updatedAt', 'workload_updatedAt' - Undocumented member.
+--
+-- 'workloadArn', 'workload_workloadArn' - Undocumented member.
+--
+-- 'workloadId', 'workload_workloadId' - Undocumented member.
+--
+-- 'workloadName', 'workload_workloadName' - Undocumented member.
+newWorkload ::
+  Workload
+newWorkload =
+  Workload'
+    { accountIds = Prelude.Nothing,
+      applications = Prelude.Nothing,
+      architecturalDesign = Prelude.Nothing,
+      awsRegions = Prelude.Nothing,
+      description = Prelude.Nothing,
+      discoveryConfig = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      improvementStatus = Prelude.Nothing,
+      industry = Prelude.Nothing,
+      industryType = Prelude.Nothing,
+      isReviewOwnerUpdateAcknowledged = Prelude.Nothing,
+      lenses = Prelude.Nothing,
+      nonAwsRegions = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      pillarPriorities = Prelude.Nothing,
+      reviewOwner = Prelude.Nothing,
+      reviewRestrictionDate = Prelude.Nothing,
+      riskCounts = Prelude.Nothing,
+      shareInvitationId = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      updatedAt = Prelude.Nothing,
+      workloadArn = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      workloadName = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+workload_accountIds :: Lens.Lens' Workload (Prelude.Maybe [Prelude.Text])
+workload_accountIds = Lens.lens (\Workload' {accountIds} -> accountIds) (\s@Workload' {} a -> s {accountIds = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of AppRegistry application ARNs associated to the workload.
+workload_applications :: Lens.Lens' Workload (Prelude.Maybe [Prelude.Text])
+workload_applications = Lens.lens (\Workload' {applications} -> applications) (\s@Workload' {} a -> s {applications = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workload_architecturalDesign :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_architecturalDesign = Lens.lens (\Workload' {architecturalDesign} -> architecturalDesign) (\s@Workload' {} a -> s {architecturalDesign = a} :: Workload)
+
+-- | Undocumented member.
+workload_awsRegions :: Lens.Lens' Workload (Prelude.Maybe [Prelude.Text])
+workload_awsRegions = Lens.lens (\Workload' {awsRegions} -> awsRegions) (\s@Workload' {} a -> s {awsRegions = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workload_description :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_description = Lens.lens (\Workload' {description} -> description) (\s@Workload' {} a -> s {description = a} :: Workload)
+
+-- | Discovery configuration associated to the workload.
+workload_discoveryConfig :: Lens.Lens' Workload (Prelude.Maybe WorkloadDiscoveryConfig)
+workload_discoveryConfig = Lens.lens (\Workload' {discoveryConfig} -> discoveryConfig) (\s@Workload' {} a -> s {discoveryConfig = a} :: Workload)
+
+-- | Undocumented member.
+workload_environment :: Lens.Lens' Workload (Prelude.Maybe WorkloadEnvironment)
+workload_environment = Lens.lens (\Workload' {environment} -> environment) (\s@Workload' {} a -> s {environment = a} :: Workload)
+
+-- | Undocumented member.
+workload_improvementStatus :: Lens.Lens' Workload (Prelude.Maybe WorkloadImprovementStatus)
+workload_improvementStatus = Lens.lens (\Workload' {improvementStatus} -> improvementStatus) (\s@Workload' {} a -> s {improvementStatus = a} :: Workload)
+
+-- | Undocumented member.
+workload_industry :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_industry = Lens.lens (\Workload' {industry} -> industry) (\s@Workload' {} a -> s {industry = a} :: Workload)
+
+-- | Undocumented member.
+workload_industryType :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_industryType = Lens.lens (\Workload' {industryType} -> industryType) (\s@Workload' {} a -> s {industryType = a} :: Workload)
+
+-- | Flag indicating whether the workload owner has acknowledged that the
+-- /Review owner/ field is required.
+--
+-- If a __Review owner__ is not added to the workload within 60 days of
+-- acknowledgement, access to the workload is restricted until an owner is
+-- added.
+workload_isReviewOwnerUpdateAcknowledged :: Lens.Lens' Workload (Prelude.Maybe Prelude.Bool)
+workload_isReviewOwnerUpdateAcknowledged = Lens.lens (\Workload' {isReviewOwnerUpdateAcknowledged} -> isReviewOwnerUpdateAcknowledged) (\s@Workload' {} a -> s {isReviewOwnerUpdateAcknowledged = a} :: Workload)
+
+-- | Undocumented member.
+workload_lenses :: Lens.Lens' Workload (Prelude.Maybe [Prelude.Text])
+workload_lenses = Lens.lens (\Workload' {lenses} -> lenses) (\s@Workload' {} a -> s {lenses = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workload_nonAwsRegions :: Lens.Lens' Workload (Prelude.Maybe [Prelude.Text])
+workload_nonAwsRegions = Lens.lens (\Workload' {nonAwsRegions} -> nonAwsRegions) (\s@Workload' {} a -> s {nonAwsRegions = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workload_notes :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_notes = Lens.lens (\Workload' {notes} -> notes) (\s@Workload' {} a -> s {notes = a} :: Workload)
+
+-- | Undocumented member.
+workload_owner :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_owner = Lens.lens (\Workload' {owner} -> owner) (\s@Workload' {} a -> s {owner = a} :: Workload)
+
+-- | Undocumented member.
+workload_pillarPriorities :: Lens.Lens' Workload (Prelude.Maybe [Prelude.Text])
+workload_pillarPriorities = Lens.lens (\Workload' {pillarPriorities} -> pillarPriorities) (\s@Workload' {} a -> s {pillarPriorities = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workload_reviewOwner :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_reviewOwner = Lens.lens (\Workload' {reviewOwner} -> reviewOwner) (\s@Workload' {} a -> s {reviewOwner = a} :: Workload)
+
+-- | Undocumented member.
+workload_reviewRestrictionDate :: Lens.Lens' Workload (Prelude.Maybe Prelude.UTCTime)
+workload_reviewRestrictionDate = Lens.lens (\Workload' {reviewRestrictionDate} -> reviewRestrictionDate) (\s@Workload' {} a -> s {reviewRestrictionDate = a} :: Workload) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+workload_riskCounts :: Lens.Lens' Workload (Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural))
+workload_riskCounts = Lens.lens (\Workload' {riskCounts} -> riskCounts) (\s@Workload' {} a -> s {riskCounts = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID assigned to the share invitation.
+workload_shareInvitationId :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_shareInvitationId = Lens.lens (\Workload' {shareInvitationId} -> shareInvitationId) (\s@Workload' {} a -> s {shareInvitationId = a} :: Workload)
+
+-- | The tags associated with the workload.
+workload_tags :: Lens.Lens' Workload (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+workload_tags = Lens.lens (\Workload' {tags} -> tags) (\s@Workload' {} a -> s {tags = a} :: Workload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workload_updatedAt :: Lens.Lens' Workload (Prelude.Maybe Prelude.UTCTime)
+workload_updatedAt = Lens.lens (\Workload' {updatedAt} -> updatedAt) (\s@Workload' {} a -> s {updatedAt = a} :: Workload) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+workload_workloadArn :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_workloadArn = Lens.lens (\Workload' {workloadArn} -> workloadArn) (\s@Workload' {} a -> s {workloadArn = a} :: Workload)
+
+-- | Undocumented member.
+workload_workloadId :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_workloadId = Lens.lens (\Workload' {workloadId} -> workloadId) (\s@Workload' {} a -> s {workloadId = a} :: Workload)
+
+-- | Undocumented member.
+workload_workloadName :: Lens.Lens' Workload (Prelude.Maybe Prelude.Text)
+workload_workloadName = Lens.lens (\Workload' {workloadName} -> workloadName) (\s@Workload' {} a -> s {workloadName = a} :: Workload)
+
+instance Data.FromJSON Workload where
+  parseJSON =
+    Data.withObject
+      "Workload"
+      ( \x ->
+          Workload'
+            Prelude.<$> (x Data..:? "AccountIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Applications" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ArchitecturalDesign")
+            Prelude.<*> (x Data..:? "AwsRegions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DiscoveryConfig")
+            Prelude.<*> (x Data..:? "Environment")
+            Prelude.<*> (x Data..:? "ImprovementStatus")
+            Prelude.<*> (x Data..:? "Industry")
+            Prelude.<*> (x Data..:? "IndustryType")
+            Prelude.<*> (x Data..:? "IsReviewOwnerUpdateAcknowledged")
+            Prelude.<*> (x Data..:? "Lenses" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "NonAwsRegions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Notes")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> ( x
+                            Data..:? "PillarPriorities"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "ReviewOwner")
+            Prelude.<*> (x Data..:? "ReviewRestrictionDate")
+            Prelude.<*> (x Data..:? "RiskCounts" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ShareInvitationId")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UpdatedAt")
+            Prelude.<*> (x Data..:? "WorkloadArn")
+            Prelude.<*> (x Data..:? "WorkloadId")
+            Prelude.<*> (x Data..:? "WorkloadName")
+      )
+
+instance Prelude.Hashable Workload where
+  hashWithSalt _salt Workload' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountIds
+      `Prelude.hashWithSalt` applications
+      `Prelude.hashWithSalt` architecturalDesign
+      `Prelude.hashWithSalt` awsRegions
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` discoveryConfig
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` improvementStatus
+      `Prelude.hashWithSalt` industry
+      `Prelude.hashWithSalt` industryType
+      `Prelude.hashWithSalt` isReviewOwnerUpdateAcknowledged
+      `Prelude.hashWithSalt` lenses
+      `Prelude.hashWithSalt` nonAwsRegions
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` pillarPriorities
+      `Prelude.hashWithSalt` reviewOwner
+      `Prelude.hashWithSalt` reviewRestrictionDate
+      `Prelude.hashWithSalt` riskCounts
+      `Prelude.hashWithSalt` shareInvitationId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` updatedAt
+      `Prelude.hashWithSalt` workloadArn
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` workloadName
+
+instance Prelude.NFData Workload where
+  rnf Workload' {..} =
+    Prelude.rnf accountIds
+      `Prelude.seq` Prelude.rnf applications
+      `Prelude.seq` Prelude.rnf architecturalDesign
+      `Prelude.seq` Prelude.rnf awsRegions
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf discoveryConfig
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf improvementStatus
+      `Prelude.seq` Prelude.rnf industry
+      `Prelude.seq` Prelude.rnf industryType
+      `Prelude.seq` Prelude.rnf isReviewOwnerUpdateAcknowledged
+      `Prelude.seq` Prelude.rnf lenses
+      `Prelude.seq` Prelude.rnf nonAwsRegions
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf pillarPriorities
+      `Prelude.seq` Prelude.rnf reviewOwner
+      `Prelude.seq` Prelude.rnf reviewRestrictionDate
+      `Prelude.seq` Prelude.rnf riskCounts
+      `Prelude.seq` Prelude.rnf shareInvitationId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf updatedAt
+      `Prelude.seq` Prelude.rnf workloadArn
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf
+        workloadName
diff --git a/gen/Amazonka/WellArchitected/Types/WorkloadDiscoveryConfig.hs b/gen/Amazonka/WellArchitected/Types/WorkloadDiscoveryConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/WorkloadDiscoveryConfig.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.WorkloadDiscoveryConfig
+-- 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.WellArchitected.Types.WorkloadDiscoveryConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.TrustedAdvisorIntegrationStatus
+
+-- | Discovery configuration associated to the workload.
+--
+-- /See:/ 'newWorkloadDiscoveryConfig' smart constructor.
+data WorkloadDiscoveryConfig = WorkloadDiscoveryConfig'
+  { -- | Discovery integration status in respect to Trusted Advisor for the
+    -- workload.
+    trustedAdvisorIntegrationStatus :: Prelude.Maybe TrustedAdvisorIntegrationStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkloadDiscoveryConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'trustedAdvisorIntegrationStatus', 'workloadDiscoveryConfig_trustedAdvisorIntegrationStatus' - Discovery integration status in respect to Trusted Advisor for the
+-- workload.
+newWorkloadDiscoveryConfig ::
+  WorkloadDiscoveryConfig
+newWorkloadDiscoveryConfig =
+  WorkloadDiscoveryConfig'
+    { trustedAdvisorIntegrationStatus =
+        Prelude.Nothing
+    }
+
+-- | Discovery integration status in respect to Trusted Advisor for the
+-- workload.
+workloadDiscoveryConfig_trustedAdvisorIntegrationStatus :: Lens.Lens' WorkloadDiscoveryConfig (Prelude.Maybe TrustedAdvisorIntegrationStatus)
+workloadDiscoveryConfig_trustedAdvisorIntegrationStatus = Lens.lens (\WorkloadDiscoveryConfig' {trustedAdvisorIntegrationStatus} -> trustedAdvisorIntegrationStatus) (\s@WorkloadDiscoveryConfig' {} a -> s {trustedAdvisorIntegrationStatus = a} :: WorkloadDiscoveryConfig)
+
+instance Data.FromJSON WorkloadDiscoveryConfig where
+  parseJSON =
+    Data.withObject
+      "WorkloadDiscoveryConfig"
+      ( \x ->
+          WorkloadDiscoveryConfig'
+            Prelude.<$> (x Data..:? "TrustedAdvisorIntegrationStatus")
+      )
+
+instance Prelude.Hashable WorkloadDiscoveryConfig where
+  hashWithSalt _salt WorkloadDiscoveryConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` trustedAdvisorIntegrationStatus
+
+instance Prelude.NFData WorkloadDiscoveryConfig where
+  rnf WorkloadDiscoveryConfig' {..} =
+    Prelude.rnf trustedAdvisorIntegrationStatus
+
+instance Data.ToJSON WorkloadDiscoveryConfig where
+  toJSON WorkloadDiscoveryConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TrustedAdvisorIntegrationStatus" Data..=)
+              Prelude.<$> trustedAdvisorIntegrationStatus
+          ]
+      )
diff --git a/gen/Amazonka/WellArchitected/Types/WorkloadEnvironment.hs b/gen/Amazonka/WellArchitected/Types/WorkloadEnvironment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/WorkloadEnvironment.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.WorkloadEnvironment
+-- 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.WellArchitected.Types.WorkloadEnvironment
+  ( WorkloadEnvironment
+      ( ..,
+        WorkloadEnvironment_PREPRODUCTION,
+        WorkloadEnvironment_PRODUCTION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The environment for the workload.
+newtype WorkloadEnvironment = WorkloadEnvironment'
+  { fromWorkloadEnvironment ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WorkloadEnvironment_PREPRODUCTION :: WorkloadEnvironment
+pattern WorkloadEnvironment_PREPRODUCTION = WorkloadEnvironment' "PREPRODUCTION"
+
+pattern WorkloadEnvironment_PRODUCTION :: WorkloadEnvironment
+pattern WorkloadEnvironment_PRODUCTION = WorkloadEnvironment' "PRODUCTION"
+
+{-# COMPLETE
+  WorkloadEnvironment_PREPRODUCTION,
+  WorkloadEnvironment_PRODUCTION,
+  WorkloadEnvironment'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/WorkloadImprovementStatus.hs b/gen/Amazonka/WellArchitected/Types/WorkloadImprovementStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/WorkloadImprovementStatus.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.WorkloadImprovementStatus
+-- 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.WellArchitected.Types.WorkloadImprovementStatus
+  ( WorkloadImprovementStatus
+      ( ..,
+        WorkloadImprovementStatus_COMPLETE,
+        WorkloadImprovementStatus_IN_PROGRESS,
+        WorkloadImprovementStatus_NOT_APPLICABLE,
+        WorkloadImprovementStatus_NOT_STARTED,
+        WorkloadImprovementStatus_RISK_ACKNOWLEDGED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The improvement status for a workload.
+newtype WorkloadImprovementStatus = WorkloadImprovementStatus'
+  { fromWorkloadImprovementStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WorkloadImprovementStatus_COMPLETE :: WorkloadImprovementStatus
+pattern WorkloadImprovementStatus_COMPLETE = WorkloadImprovementStatus' "COMPLETE"
+
+pattern WorkloadImprovementStatus_IN_PROGRESS :: WorkloadImprovementStatus
+pattern WorkloadImprovementStatus_IN_PROGRESS = WorkloadImprovementStatus' "IN_PROGRESS"
+
+pattern WorkloadImprovementStatus_NOT_APPLICABLE :: WorkloadImprovementStatus
+pattern WorkloadImprovementStatus_NOT_APPLICABLE = WorkloadImprovementStatus' "NOT_APPLICABLE"
+
+pattern WorkloadImprovementStatus_NOT_STARTED :: WorkloadImprovementStatus
+pattern WorkloadImprovementStatus_NOT_STARTED = WorkloadImprovementStatus' "NOT_STARTED"
+
+pattern WorkloadImprovementStatus_RISK_ACKNOWLEDGED :: WorkloadImprovementStatus
+pattern WorkloadImprovementStatus_RISK_ACKNOWLEDGED = WorkloadImprovementStatus' "RISK_ACKNOWLEDGED"
+
+{-# COMPLETE
+  WorkloadImprovementStatus_COMPLETE,
+  WorkloadImprovementStatus_IN_PROGRESS,
+  WorkloadImprovementStatus_NOT_APPLICABLE,
+  WorkloadImprovementStatus_NOT_STARTED,
+  WorkloadImprovementStatus_RISK_ACKNOWLEDGED,
+  WorkloadImprovementStatus'
+  #-}
diff --git a/gen/Amazonka/WellArchitected/Types/WorkloadShare.hs b/gen/Amazonka/WellArchitected/Types/WorkloadShare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/WorkloadShare.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.Types.WorkloadShare
+-- 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.WellArchitected.Types.WorkloadShare where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.PermissionType
+import Amazonka.WellArchitected.Types.ShareStatus
+
+-- | A workload share return object.
+--
+-- /See:/ 'newWorkloadShare' smart constructor.
+data WorkloadShare = WorkloadShare'
+  { permissionType :: Prelude.Maybe PermissionType,
+    shareId :: Prelude.Maybe Prelude.Text,
+    sharedBy :: Prelude.Maybe Prelude.Text,
+    sharedWith :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ShareStatus,
+    workloadId :: Prelude.Maybe Prelude.Text,
+    workloadName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkloadShare' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissionType', 'workloadShare_permissionType' - Undocumented member.
+--
+-- 'shareId', 'workloadShare_shareId' - Undocumented member.
+--
+-- 'sharedBy', 'workloadShare_sharedBy' - Undocumented member.
+--
+-- 'sharedWith', 'workloadShare_sharedWith' - Undocumented member.
+--
+-- 'status', 'workloadShare_status' - Undocumented member.
+--
+-- 'workloadId', 'workloadShare_workloadId' - Undocumented member.
+--
+-- 'workloadName', 'workloadShare_workloadName' - Undocumented member.
+newWorkloadShare ::
+  WorkloadShare
+newWorkloadShare =
+  WorkloadShare'
+    { permissionType = Prelude.Nothing,
+      shareId = Prelude.Nothing,
+      sharedBy = Prelude.Nothing,
+      sharedWith = Prelude.Nothing,
+      status = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      workloadName = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+workloadShare_permissionType :: Lens.Lens' WorkloadShare (Prelude.Maybe PermissionType)
+workloadShare_permissionType = Lens.lens (\WorkloadShare' {permissionType} -> permissionType) (\s@WorkloadShare' {} a -> s {permissionType = a} :: WorkloadShare)
+
+-- | Undocumented member.
+workloadShare_shareId :: Lens.Lens' WorkloadShare (Prelude.Maybe Prelude.Text)
+workloadShare_shareId = Lens.lens (\WorkloadShare' {shareId} -> shareId) (\s@WorkloadShare' {} a -> s {shareId = a} :: WorkloadShare)
+
+-- | Undocumented member.
+workloadShare_sharedBy :: Lens.Lens' WorkloadShare (Prelude.Maybe Prelude.Text)
+workloadShare_sharedBy = Lens.lens (\WorkloadShare' {sharedBy} -> sharedBy) (\s@WorkloadShare' {} a -> s {sharedBy = a} :: WorkloadShare)
+
+-- | Undocumented member.
+workloadShare_sharedWith :: Lens.Lens' WorkloadShare (Prelude.Maybe Prelude.Text)
+workloadShare_sharedWith = Lens.lens (\WorkloadShare' {sharedWith} -> sharedWith) (\s@WorkloadShare' {} a -> s {sharedWith = a} :: WorkloadShare)
+
+-- | Undocumented member.
+workloadShare_status :: Lens.Lens' WorkloadShare (Prelude.Maybe ShareStatus)
+workloadShare_status = Lens.lens (\WorkloadShare' {status} -> status) (\s@WorkloadShare' {} a -> s {status = a} :: WorkloadShare)
+
+-- | Undocumented member.
+workloadShare_workloadId :: Lens.Lens' WorkloadShare (Prelude.Maybe Prelude.Text)
+workloadShare_workloadId = Lens.lens (\WorkloadShare' {workloadId} -> workloadId) (\s@WorkloadShare' {} a -> s {workloadId = a} :: WorkloadShare)
+
+-- | Undocumented member.
+workloadShare_workloadName :: Lens.Lens' WorkloadShare (Prelude.Maybe Prelude.Text)
+workloadShare_workloadName = Lens.lens (\WorkloadShare' {workloadName} -> workloadName) (\s@WorkloadShare' {} a -> s {workloadName = a} :: WorkloadShare)
+
+instance Data.FromJSON WorkloadShare where
+  parseJSON =
+    Data.withObject
+      "WorkloadShare"
+      ( \x ->
+          WorkloadShare'
+            Prelude.<$> (x Data..:? "PermissionType")
+            Prelude.<*> (x Data..:? "ShareId")
+            Prelude.<*> (x Data..:? "SharedBy")
+            Prelude.<*> (x Data..:? "SharedWith")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "WorkloadId")
+            Prelude.<*> (x Data..:? "WorkloadName")
+      )
+
+instance Prelude.Hashable WorkloadShare where
+  hashWithSalt _salt WorkloadShare' {..} =
+    _salt
+      `Prelude.hashWithSalt` permissionType
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` sharedBy
+      `Prelude.hashWithSalt` sharedWith
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` workloadName
+
+instance Prelude.NFData WorkloadShare where
+  rnf WorkloadShare' {..} =
+    Prelude.rnf permissionType
+      `Prelude.seq` Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf sharedBy
+      `Prelude.seq` Prelude.rnf sharedWith
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf workloadName
diff --git a/gen/Amazonka/WellArchitected/Types/WorkloadShareSummary.hs b/gen/Amazonka/WellArchitected/Types/WorkloadShareSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/WorkloadShareSummary.hs
@@ -0,0 +1,119 @@
+{-# 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.WellArchitected.Types.WorkloadShareSummary
+-- 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.WellArchitected.Types.WorkloadShareSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.PermissionType
+import Amazonka.WellArchitected.Types.ShareStatus
+
+-- | A workload share summary return object.
+--
+-- /See:/ 'newWorkloadShareSummary' smart constructor.
+data WorkloadShareSummary = WorkloadShareSummary'
+  { permissionType :: Prelude.Maybe PermissionType,
+    shareId :: Prelude.Maybe Prelude.Text,
+    sharedWith :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ShareStatus,
+    -- | Optional message to compliment the Status field.
+    statusMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkloadShareSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissionType', 'workloadShareSummary_permissionType' - Undocumented member.
+--
+-- 'shareId', 'workloadShareSummary_shareId' - Undocumented member.
+--
+-- 'sharedWith', 'workloadShareSummary_sharedWith' - Undocumented member.
+--
+-- 'status', 'workloadShareSummary_status' - Undocumented member.
+--
+-- 'statusMessage', 'workloadShareSummary_statusMessage' - Optional message to compliment the Status field.
+newWorkloadShareSummary ::
+  WorkloadShareSummary
+newWorkloadShareSummary =
+  WorkloadShareSummary'
+    { permissionType =
+        Prelude.Nothing,
+      shareId = Prelude.Nothing,
+      sharedWith = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusMessage = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+workloadShareSummary_permissionType :: Lens.Lens' WorkloadShareSummary (Prelude.Maybe PermissionType)
+workloadShareSummary_permissionType = Lens.lens (\WorkloadShareSummary' {permissionType} -> permissionType) (\s@WorkloadShareSummary' {} a -> s {permissionType = a} :: WorkloadShareSummary)
+
+-- | Undocumented member.
+workloadShareSummary_shareId :: Lens.Lens' WorkloadShareSummary (Prelude.Maybe Prelude.Text)
+workloadShareSummary_shareId = Lens.lens (\WorkloadShareSummary' {shareId} -> shareId) (\s@WorkloadShareSummary' {} a -> s {shareId = a} :: WorkloadShareSummary)
+
+-- | Undocumented member.
+workloadShareSummary_sharedWith :: Lens.Lens' WorkloadShareSummary (Prelude.Maybe Prelude.Text)
+workloadShareSummary_sharedWith = Lens.lens (\WorkloadShareSummary' {sharedWith} -> sharedWith) (\s@WorkloadShareSummary' {} a -> s {sharedWith = a} :: WorkloadShareSummary)
+
+-- | Undocumented member.
+workloadShareSummary_status :: Lens.Lens' WorkloadShareSummary (Prelude.Maybe ShareStatus)
+workloadShareSummary_status = Lens.lens (\WorkloadShareSummary' {status} -> status) (\s@WorkloadShareSummary' {} a -> s {status = a} :: WorkloadShareSummary)
+
+-- | Optional message to compliment the Status field.
+workloadShareSummary_statusMessage :: Lens.Lens' WorkloadShareSummary (Prelude.Maybe Prelude.Text)
+workloadShareSummary_statusMessage = Lens.lens (\WorkloadShareSummary' {statusMessage} -> statusMessage) (\s@WorkloadShareSummary' {} a -> s {statusMessage = a} :: WorkloadShareSummary)
+
+instance Data.FromJSON WorkloadShareSummary where
+  parseJSON =
+    Data.withObject
+      "WorkloadShareSummary"
+      ( \x ->
+          WorkloadShareSummary'
+            Prelude.<$> (x Data..:? "PermissionType")
+            Prelude.<*> (x Data..:? "ShareId")
+            Prelude.<*> (x Data..:? "SharedWith")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StatusMessage")
+      )
+
+instance Prelude.Hashable WorkloadShareSummary where
+  hashWithSalt _salt WorkloadShareSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` permissionType
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` sharedWith
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusMessage
+
+instance Prelude.NFData WorkloadShareSummary where
+  rnf WorkloadShareSummary' {..} =
+    Prelude.rnf permissionType
+      `Prelude.seq` Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf sharedWith
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusMessage
diff --git a/gen/Amazonka/WellArchitected/Types/WorkloadSummary.hs b/gen/Amazonka/WellArchitected/Types/WorkloadSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/Types/WorkloadSummary.hs
@@ -0,0 +1,151 @@
+{-# 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.WellArchitected.Types.WorkloadSummary
+-- 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.WellArchitected.Types.WorkloadSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Types.Risk
+import Amazonka.WellArchitected.Types.WorkloadImprovementStatus
+
+-- | A workload summary return object.
+--
+-- /See:/ 'newWorkloadSummary' smart constructor.
+data WorkloadSummary = WorkloadSummary'
+  { improvementStatus :: Prelude.Maybe WorkloadImprovementStatus,
+    lenses :: Prelude.Maybe [Prelude.Text],
+    owner :: Prelude.Maybe Prelude.Text,
+    riskCounts :: Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural),
+    updatedAt :: Prelude.Maybe Data.POSIX,
+    workloadArn :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Maybe Prelude.Text,
+    workloadName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkloadSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'improvementStatus', 'workloadSummary_improvementStatus' - Undocumented member.
+--
+-- 'lenses', 'workloadSummary_lenses' - Undocumented member.
+--
+-- 'owner', 'workloadSummary_owner' - Undocumented member.
+--
+-- 'riskCounts', 'workloadSummary_riskCounts' - Undocumented member.
+--
+-- 'updatedAt', 'workloadSummary_updatedAt' - Undocumented member.
+--
+-- 'workloadArn', 'workloadSummary_workloadArn' - Undocumented member.
+--
+-- 'workloadId', 'workloadSummary_workloadId' - Undocumented member.
+--
+-- 'workloadName', 'workloadSummary_workloadName' - Undocumented member.
+newWorkloadSummary ::
+  WorkloadSummary
+newWorkloadSummary =
+  WorkloadSummary'
+    { improvementStatus =
+        Prelude.Nothing,
+      lenses = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      riskCounts = Prelude.Nothing,
+      updatedAt = Prelude.Nothing,
+      workloadArn = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      workloadName = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+workloadSummary_improvementStatus :: Lens.Lens' WorkloadSummary (Prelude.Maybe WorkloadImprovementStatus)
+workloadSummary_improvementStatus = Lens.lens (\WorkloadSummary' {improvementStatus} -> improvementStatus) (\s@WorkloadSummary' {} a -> s {improvementStatus = a} :: WorkloadSummary)
+
+-- | Undocumented member.
+workloadSummary_lenses :: Lens.Lens' WorkloadSummary (Prelude.Maybe [Prelude.Text])
+workloadSummary_lenses = Lens.lens (\WorkloadSummary' {lenses} -> lenses) (\s@WorkloadSummary' {} a -> s {lenses = a} :: WorkloadSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workloadSummary_owner :: Lens.Lens' WorkloadSummary (Prelude.Maybe Prelude.Text)
+workloadSummary_owner = Lens.lens (\WorkloadSummary' {owner} -> owner) (\s@WorkloadSummary' {} a -> s {owner = a} :: WorkloadSummary)
+
+-- | Undocumented member.
+workloadSummary_riskCounts :: Lens.Lens' WorkloadSummary (Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural))
+workloadSummary_riskCounts = Lens.lens (\WorkloadSummary' {riskCounts} -> riskCounts) (\s@WorkloadSummary' {} a -> s {riskCounts = a} :: WorkloadSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+workloadSummary_updatedAt :: Lens.Lens' WorkloadSummary (Prelude.Maybe Prelude.UTCTime)
+workloadSummary_updatedAt = Lens.lens (\WorkloadSummary' {updatedAt} -> updatedAt) (\s@WorkloadSummary' {} a -> s {updatedAt = a} :: WorkloadSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+workloadSummary_workloadArn :: Lens.Lens' WorkloadSummary (Prelude.Maybe Prelude.Text)
+workloadSummary_workloadArn = Lens.lens (\WorkloadSummary' {workloadArn} -> workloadArn) (\s@WorkloadSummary' {} a -> s {workloadArn = a} :: WorkloadSummary)
+
+-- | Undocumented member.
+workloadSummary_workloadId :: Lens.Lens' WorkloadSummary (Prelude.Maybe Prelude.Text)
+workloadSummary_workloadId = Lens.lens (\WorkloadSummary' {workloadId} -> workloadId) (\s@WorkloadSummary' {} a -> s {workloadId = a} :: WorkloadSummary)
+
+-- | Undocumented member.
+workloadSummary_workloadName :: Lens.Lens' WorkloadSummary (Prelude.Maybe Prelude.Text)
+workloadSummary_workloadName = Lens.lens (\WorkloadSummary' {workloadName} -> workloadName) (\s@WorkloadSummary' {} a -> s {workloadName = a} :: WorkloadSummary)
+
+instance Data.FromJSON WorkloadSummary where
+  parseJSON =
+    Data.withObject
+      "WorkloadSummary"
+      ( \x ->
+          WorkloadSummary'
+            Prelude.<$> (x Data..:? "ImprovementStatus")
+            Prelude.<*> (x Data..:? "Lenses" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "RiskCounts" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UpdatedAt")
+            Prelude.<*> (x Data..:? "WorkloadArn")
+            Prelude.<*> (x Data..:? "WorkloadId")
+            Prelude.<*> (x Data..:? "WorkloadName")
+      )
+
+instance Prelude.Hashable WorkloadSummary where
+  hashWithSalt _salt WorkloadSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` improvementStatus
+      `Prelude.hashWithSalt` lenses
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` riskCounts
+      `Prelude.hashWithSalt` updatedAt
+      `Prelude.hashWithSalt` workloadArn
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` workloadName
+
+instance Prelude.NFData WorkloadSummary where
+  rnf WorkloadSummary' {..} =
+    Prelude.rnf improvementStatus
+      `Prelude.seq` Prelude.rnf lenses
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf riskCounts
+      `Prelude.seq` Prelude.rnf updatedAt
+      `Prelude.seq` Prelude.rnf workloadArn
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf workloadName
diff --git a/gen/Amazonka/WellArchitected/UntagResource.hs b/gen/Amazonka/WellArchitected/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UntagResource.hs
@@ -0,0 +1,173 @@
+{-# 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.WellArchitected.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes specified tags from a resource.
+--
+-- The WorkloadArn parameter can be either a workload ARN or a custom lens
+-- ARN.
+--
+-- To specify multiple tags, use separate __tagKeys__ parameters, for
+-- example:
+--
+-- @DELETE \/tags\/WorkloadArn?tagKeys=key1&tagKeys=key2@
+module Amazonka.WellArchitected.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_workloadArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { workloadArn :: Prelude.Text,
+    -- | A list of tag keys. Existing tags of the resource whose keys are members
+    -- of this list are removed from the resource.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadArn', 'untagResource_workloadArn' - Undocumented member.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - A list of tag keys. Existing tags of the resource whose keys are members
+-- of this list are removed from the resource.
+newUntagResource ::
+  -- | 'workloadArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pWorkloadArn_ pTagKeys_ =
+  UntagResource'
+    { workloadArn = pWorkloadArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | Undocumented member.
+untagResource_workloadArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_workloadArn = Lens.lens (\UntagResource' {workloadArn} -> workloadArn) (\s@UntagResource' {} a -> s {workloadArn = a} :: UntagResource)
+
+-- | A list of tag keys. Existing tags of the resource whose keys are members
+-- of this list are removed from the resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` workloadArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf workloadArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS workloadArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/UpdateAnswer.hs b/gen/Amazonka/WellArchitected/UpdateAnswer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpdateAnswer.hs
@@ -0,0 +1,301 @@
+{-# 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.WellArchitected.UpdateAnswer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the answer to a specific question in a workload review.
+module Amazonka.WellArchitected.UpdateAnswer
+  ( -- * Creating a Request
+    UpdateAnswer (..),
+    newUpdateAnswer,
+
+    -- * Request Lenses
+    updateAnswer_choiceUpdates,
+    updateAnswer_isApplicable,
+    updateAnswer_notes,
+    updateAnswer_reason,
+    updateAnswer_selectedChoices,
+    updateAnswer_workloadId,
+    updateAnswer_lensAlias,
+    updateAnswer_questionId,
+
+    -- * Destructuring the Response
+    UpdateAnswerResponse (..),
+    newUpdateAnswerResponse,
+
+    -- * Response Lenses
+    updateAnswerResponse_answer,
+    updateAnswerResponse_lensAlias,
+    updateAnswerResponse_lensArn,
+    updateAnswerResponse_workloadId,
+    updateAnswerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to update answer.
+--
+-- /See:/ 'newUpdateAnswer' smart constructor.
+data UpdateAnswer = UpdateAnswer'
+  { -- | A list of choices to update on a question in your workload. The String
+    -- key corresponds to the choice ID to be updated.
+    choiceUpdates :: Prelude.Maybe (Prelude.HashMap Prelude.Text ChoiceUpdate),
+    isApplicable :: Prelude.Maybe Prelude.Bool,
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | The reason why a question is not applicable to your workload.
+    reason :: Prelude.Maybe AnswerReason,
+    selectedChoices :: Prelude.Maybe [Prelude.Text],
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text,
+    questionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAnswer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'choiceUpdates', 'updateAnswer_choiceUpdates' - A list of choices to update on a question in your workload. The String
+-- key corresponds to the choice ID to be updated.
+--
+-- 'isApplicable', 'updateAnswer_isApplicable' - Undocumented member.
+--
+-- 'notes', 'updateAnswer_notes' - Undocumented member.
+--
+-- 'reason', 'updateAnswer_reason' - The reason why a question is not applicable to your workload.
+--
+-- 'selectedChoices', 'updateAnswer_selectedChoices' - Undocumented member.
+--
+-- 'workloadId', 'updateAnswer_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'updateAnswer_lensAlias' - Undocumented member.
+--
+-- 'questionId', 'updateAnswer_questionId' - Undocumented member.
+newUpdateAnswer ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'questionId'
+  Prelude.Text ->
+  UpdateAnswer
+newUpdateAnswer pWorkloadId_ pLensAlias_ pQuestionId_ =
+  UpdateAnswer'
+    { choiceUpdates = Prelude.Nothing,
+      isApplicable = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      selectedChoices = Prelude.Nothing,
+      workloadId = pWorkloadId_,
+      lensAlias = pLensAlias_,
+      questionId = pQuestionId_
+    }
+
+-- | A list of choices to update on a question in your workload. The String
+-- key corresponds to the choice ID to be updated.
+updateAnswer_choiceUpdates :: Lens.Lens' UpdateAnswer (Prelude.Maybe (Prelude.HashMap Prelude.Text ChoiceUpdate))
+updateAnswer_choiceUpdates = Lens.lens (\UpdateAnswer' {choiceUpdates} -> choiceUpdates) (\s@UpdateAnswer' {} a -> s {choiceUpdates = a} :: UpdateAnswer) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateAnswer_isApplicable :: Lens.Lens' UpdateAnswer (Prelude.Maybe Prelude.Bool)
+updateAnswer_isApplicable = Lens.lens (\UpdateAnswer' {isApplicable} -> isApplicable) (\s@UpdateAnswer' {} a -> s {isApplicable = a} :: UpdateAnswer)
+
+-- | Undocumented member.
+updateAnswer_notes :: Lens.Lens' UpdateAnswer (Prelude.Maybe Prelude.Text)
+updateAnswer_notes = Lens.lens (\UpdateAnswer' {notes} -> notes) (\s@UpdateAnswer' {} a -> s {notes = a} :: UpdateAnswer)
+
+-- | The reason why a question is not applicable to your workload.
+updateAnswer_reason :: Lens.Lens' UpdateAnswer (Prelude.Maybe AnswerReason)
+updateAnswer_reason = Lens.lens (\UpdateAnswer' {reason} -> reason) (\s@UpdateAnswer' {} a -> s {reason = a} :: UpdateAnswer)
+
+-- | Undocumented member.
+updateAnswer_selectedChoices :: Lens.Lens' UpdateAnswer (Prelude.Maybe [Prelude.Text])
+updateAnswer_selectedChoices = Lens.lens (\UpdateAnswer' {selectedChoices} -> selectedChoices) (\s@UpdateAnswer' {} a -> s {selectedChoices = a} :: UpdateAnswer) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateAnswer_workloadId :: Lens.Lens' UpdateAnswer Prelude.Text
+updateAnswer_workloadId = Lens.lens (\UpdateAnswer' {workloadId} -> workloadId) (\s@UpdateAnswer' {} a -> s {workloadId = a} :: UpdateAnswer)
+
+-- | Undocumented member.
+updateAnswer_lensAlias :: Lens.Lens' UpdateAnswer Prelude.Text
+updateAnswer_lensAlias = Lens.lens (\UpdateAnswer' {lensAlias} -> lensAlias) (\s@UpdateAnswer' {} a -> s {lensAlias = a} :: UpdateAnswer)
+
+-- | Undocumented member.
+updateAnswer_questionId :: Lens.Lens' UpdateAnswer Prelude.Text
+updateAnswer_questionId = Lens.lens (\UpdateAnswer' {questionId} -> questionId) (\s@UpdateAnswer' {} a -> s {questionId = a} :: UpdateAnswer)
+
+instance Core.AWSRequest UpdateAnswer where
+  type AWSResponse UpdateAnswer = UpdateAnswerResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAnswerResponse'
+            Prelude.<$> (x Data..?> "Answer")
+            Prelude.<*> (x Data..?> "LensAlias")
+            Prelude.<*> (x Data..?> "LensArn")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAnswer where
+  hashWithSalt _salt UpdateAnswer' {..} =
+    _salt
+      `Prelude.hashWithSalt` choiceUpdates
+      `Prelude.hashWithSalt` isApplicable
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` selectedChoices
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` questionId
+
+instance Prelude.NFData UpdateAnswer where
+  rnf UpdateAnswer' {..} =
+    Prelude.rnf choiceUpdates
+      `Prelude.seq` Prelude.rnf isApplicable
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf selectedChoices
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf questionId
+
+instance Data.ToHeaders UpdateAnswer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAnswer where
+  toJSON UpdateAnswer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ChoiceUpdates" Data..=) Prelude.<$> choiceUpdates,
+            ("IsApplicable" Data..=) Prelude.<$> isApplicable,
+            ("Notes" Data..=) Prelude.<$> notes,
+            ("Reason" Data..=) Prelude.<$> reason,
+            ("SelectedChoices" Data..=)
+              Prelude.<$> selectedChoices
+          ]
+      )
+
+instance Data.ToPath UpdateAnswer where
+  toPath UpdateAnswer' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias,
+        "/answers/",
+        Data.toBS questionId
+      ]
+
+instance Data.ToQuery UpdateAnswer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a update answer call.
+--
+-- /See:/ 'newUpdateAnswerResponse' smart constructor.
+data UpdateAnswerResponse = UpdateAnswerResponse'
+  { answer :: Prelude.Maybe Answer,
+    lensAlias :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the lens.
+    lensArn :: Prelude.Maybe Prelude.Text,
+    workloadId :: 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 'UpdateAnswerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'answer', 'updateAnswerResponse_answer' - Undocumented member.
+--
+-- 'lensAlias', 'updateAnswerResponse_lensAlias' - Undocumented member.
+--
+-- 'lensArn', 'updateAnswerResponse_lensArn' - The ARN for the lens.
+--
+-- 'workloadId', 'updateAnswerResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'updateAnswerResponse_httpStatus' - The response's http status code.
+newUpdateAnswerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateAnswerResponse
+newUpdateAnswerResponse pHttpStatus_ =
+  UpdateAnswerResponse'
+    { answer = Prelude.Nothing,
+      lensAlias = Prelude.Nothing,
+      lensArn = Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateAnswerResponse_answer :: Lens.Lens' UpdateAnswerResponse (Prelude.Maybe Answer)
+updateAnswerResponse_answer = Lens.lens (\UpdateAnswerResponse' {answer} -> answer) (\s@UpdateAnswerResponse' {} a -> s {answer = a} :: UpdateAnswerResponse)
+
+-- | Undocumented member.
+updateAnswerResponse_lensAlias :: Lens.Lens' UpdateAnswerResponse (Prelude.Maybe Prelude.Text)
+updateAnswerResponse_lensAlias = Lens.lens (\UpdateAnswerResponse' {lensAlias} -> lensAlias) (\s@UpdateAnswerResponse' {} a -> s {lensAlias = a} :: UpdateAnswerResponse)
+
+-- | The ARN for the lens.
+updateAnswerResponse_lensArn :: Lens.Lens' UpdateAnswerResponse (Prelude.Maybe Prelude.Text)
+updateAnswerResponse_lensArn = Lens.lens (\UpdateAnswerResponse' {lensArn} -> lensArn) (\s@UpdateAnswerResponse' {} a -> s {lensArn = a} :: UpdateAnswerResponse)
+
+-- | Undocumented member.
+updateAnswerResponse_workloadId :: Lens.Lens' UpdateAnswerResponse (Prelude.Maybe Prelude.Text)
+updateAnswerResponse_workloadId = Lens.lens (\UpdateAnswerResponse' {workloadId} -> workloadId) (\s@UpdateAnswerResponse' {} a -> s {workloadId = a} :: UpdateAnswerResponse)
+
+-- | The response's http status code.
+updateAnswerResponse_httpStatus :: Lens.Lens' UpdateAnswerResponse Prelude.Int
+updateAnswerResponse_httpStatus = Lens.lens (\UpdateAnswerResponse' {httpStatus} -> httpStatus) (\s@UpdateAnswerResponse' {} a -> s {httpStatus = a} :: UpdateAnswerResponse)
+
+instance Prelude.NFData UpdateAnswerResponse where
+  rnf UpdateAnswerResponse' {..} =
+    Prelude.rnf answer
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf lensArn
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/UpdateGlobalSettings.hs b/gen/Amazonka/WellArchitected/UpdateGlobalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpdateGlobalSettings.hs
@@ -0,0 +1,135 @@
+{-# 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.WellArchitected.UpdateGlobalSettings
+-- 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 whether the Amazon Web Services account is opted into
+-- organization sharing features.
+module Amazonka.WellArchitected.UpdateGlobalSettings
+  ( -- * Creating a Request
+    UpdateGlobalSettings (..),
+    newUpdateGlobalSettings,
+
+    -- * Request Lenses
+    updateGlobalSettings_organizationSharingStatus,
+
+    -- * Destructuring the Response
+    UpdateGlobalSettingsResponse (..),
+    newUpdateGlobalSettingsResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newUpdateGlobalSettings' smart constructor.
+data UpdateGlobalSettings = UpdateGlobalSettings'
+  { -- | The status of organization sharing settings.
+    organizationSharingStatus :: Prelude.Maybe OrganizationSharingStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGlobalSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'organizationSharingStatus', 'updateGlobalSettings_organizationSharingStatus' - The status of organization sharing settings.
+newUpdateGlobalSettings ::
+  UpdateGlobalSettings
+newUpdateGlobalSettings =
+  UpdateGlobalSettings'
+    { organizationSharingStatus =
+        Prelude.Nothing
+    }
+
+-- | The status of organization sharing settings.
+updateGlobalSettings_organizationSharingStatus :: Lens.Lens' UpdateGlobalSettings (Prelude.Maybe OrganizationSharingStatus)
+updateGlobalSettings_organizationSharingStatus = Lens.lens (\UpdateGlobalSettings' {organizationSharingStatus} -> organizationSharingStatus) (\s@UpdateGlobalSettings' {} a -> s {organizationSharingStatus = a} :: UpdateGlobalSettings)
+
+instance Core.AWSRequest UpdateGlobalSettings where
+  type
+    AWSResponse UpdateGlobalSettings =
+      UpdateGlobalSettingsResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateGlobalSettingsResponse'
+
+instance Prelude.Hashable UpdateGlobalSettings where
+  hashWithSalt _salt UpdateGlobalSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` organizationSharingStatus
+
+instance Prelude.NFData UpdateGlobalSettings where
+  rnf UpdateGlobalSettings' {..} =
+    Prelude.rnf organizationSharingStatus
+
+instance Data.ToHeaders UpdateGlobalSettings where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateGlobalSettings where
+  toJSON UpdateGlobalSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OrganizationSharingStatus" Data..=)
+              Prelude.<$> organizationSharingStatus
+          ]
+      )
+
+instance Data.ToPath UpdateGlobalSettings where
+  toPath = Prelude.const "/global-settings"
+
+instance Data.ToQuery UpdateGlobalSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateGlobalSettingsResponse' smart constructor.
+data UpdateGlobalSettingsResponse = UpdateGlobalSettingsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGlobalSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateGlobalSettingsResponse ::
+  UpdateGlobalSettingsResponse
+newUpdateGlobalSettingsResponse =
+  UpdateGlobalSettingsResponse'
+
+instance Prelude.NFData UpdateGlobalSettingsResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/UpdateLensReview.hs b/gen/Amazonka/WellArchitected/UpdateLensReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpdateLensReview.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.UpdateLensReview
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update lens review.
+module Amazonka.WellArchitected.UpdateLensReview
+  ( -- * Creating a Request
+    UpdateLensReview (..),
+    newUpdateLensReview,
+
+    -- * Request Lenses
+    updateLensReview_lensNotes,
+    updateLensReview_pillarNotes,
+    updateLensReview_workloadId,
+    updateLensReview_lensAlias,
+
+    -- * Destructuring the Response
+    UpdateLensReviewResponse (..),
+    newUpdateLensReviewResponse,
+
+    -- * Response Lenses
+    updateLensReviewResponse_lensReview,
+    updateLensReviewResponse_workloadId,
+    updateLensReviewResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for update lens review.
+--
+-- /See:/ 'newUpdateLensReview' smart constructor.
+data UpdateLensReview = UpdateLensReview'
+  { lensNotes :: Prelude.Maybe Prelude.Text,
+    pillarNotes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLensReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensNotes', 'updateLensReview_lensNotes' - Undocumented member.
+--
+-- 'pillarNotes', 'updateLensReview_pillarNotes' - Undocumented member.
+--
+-- 'workloadId', 'updateLensReview_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'updateLensReview_lensAlias' - Undocumented member.
+newUpdateLensReview ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  UpdateLensReview
+newUpdateLensReview pWorkloadId_ pLensAlias_ =
+  UpdateLensReview'
+    { lensNotes = Prelude.Nothing,
+      pillarNotes = Prelude.Nothing,
+      workloadId = pWorkloadId_,
+      lensAlias = pLensAlias_
+    }
+
+-- | Undocumented member.
+updateLensReview_lensNotes :: Lens.Lens' UpdateLensReview (Prelude.Maybe Prelude.Text)
+updateLensReview_lensNotes = Lens.lens (\UpdateLensReview' {lensNotes} -> lensNotes) (\s@UpdateLensReview' {} a -> s {lensNotes = a} :: UpdateLensReview)
+
+-- | Undocumented member.
+updateLensReview_pillarNotes :: Lens.Lens' UpdateLensReview (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateLensReview_pillarNotes = Lens.lens (\UpdateLensReview' {pillarNotes} -> pillarNotes) (\s@UpdateLensReview' {} a -> s {pillarNotes = a} :: UpdateLensReview) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateLensReview_workloadId :: Lens.Lens' UpdateLensReview Prelude.Text
+updateLensReview_workloadId = Lens.lens (\UpdateLensReview' {workloadId} -> workloadId) (\s@UpdateLensReview' {} a -> s {workloadId = a} :: UpdateLensReview)
+
+-- | Undocumented member.
+updateLensReview_lensAlias :: Lens.Lens' UpdateLensReview Prelude.Text
+updateLensReview_lensAlias = Lens.lens (\UpdateLensReview' {lensAlias} -> lensAlias) (\s@UpdateLensReview' {} a -> s {lensAlias = a} :: UpdateLensReview)
+
+instance Core.AWSRequest UpdateLensReview where
+  type
+    AWSResponse UpdateLensReview =
+      UpdateLensReviewResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateLensReviewResponse'
+            Prelude.<$> (x Data..?> "LensReview")
+            Prelude.<*> (x Data..?> "WorkloadId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateLensReview where
+  hashWithSalt _salt UpdateLensReview' {..} =
+    _salt
+      `Prelude.hashWithSalt` lensNotes
+      `Prelude.hashWithSalt` pillarNotes
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+
+instance Prelude.NFData UpdateLensReview where
+  rnf UpdateLensReview' {..} =
+    Prelude.rnf lensNotes
+      `Prelude.seq` Prelude.rnf pillarNotes
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+
+instance Data.ToHeaders UpdateLensReview where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateLensReview where
+  toJSON UpdateLensReview' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LensNotes" Data..=) Prelude.<$> lensNotes,
+            ("PillarNotes" Data..=) Prelude.<$> pillarNotes
+          ]
+      )
+
+instance Data.ToPath UpdateLensReview where
+  toPath UpdateLensReview' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias
+      ]
+
+instance Data.ToQuery UpdateLensReview where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of a update lens review call.
+--
+-- /See:/ 'newUpdateLensReviewResponse' smart constructor.
+data UpdateLensReviewResponse = UpdateLensReviewResponse'
+  { lensReview :: Prelude.Maybe LensReview,
+    workloadId :: 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 'UpdateLensReviewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lensReview', 'updateLensReviewResponse_lensReview' - Undocumented member.
+--
+-- 'workloadId', 'updateLensReviewResponse_workloadId' - Undocumented member.
+--
+-- 'httpStatus', 'updateLensReviewResponse_httpStatus' - The response's http status code.
+newUpdateLensReviewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateLensReviewResponse
+newUpdateLensReviewResponse pHttpStatus_ =
+  UpdateLensReviewResponse'
+    { lensReview =
+        Prelude.Nothing,
+      workloadId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateLensReviewResponse_lensReview :: Lens.Lens' UpdateLensReviewResponse (Prelude.Maybe LensReview)
+updateLensReviewResponse_lensReview = Lens.lens (\UpdateLensReviewResponse' {lensReview} -> lensReview) (\s@UpdateLensReviewResponse' {} a -> s {lensReview = a} :: UpdateLensReviewResponse)
+
+-- | Undocumented member.
+updateLensReviewResponse_workloadId :: Lens.Lens' UpdateLensReviewResponse (Prelude.Maybe Prelude.Text)
+updateLensReviewResponse_workloadId = Lens.lens (\UpdateLensReviewResponse' {workloadId} -> workloadId) (\s@UpdateLensReviewResponse' {} a -> s {workloadId = a} :: UpdateLensReviewResponse)
+
+-- | The response's http status code.
+updateLensReviewResponse_httpStatus :: Lens.Lens' UpdateLensReviewResponse Prelude.Int
+updateLensReviewResponse_httpStatus = Lens.lens (\UpdateLensReviewResponse' {httpStatus} -> httpStatus) (\s@UpdateLensReviewResponse' {} a -> s {httpStatus = a} :: UpdateLensReviewResponse)
+
+instance Prelude.NFData UpdateLensReviewResponse where
+  rnf UpdateLensReviewResponse' {..} =
+    Prelude.rnf lensReview
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/UpdateShareInvitation.hs b/gen/Amazonka/WellArchitected/UpdateShareInvitation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpdateShareInvitation.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.UpdateShareInvitation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a workload or custom lens share invitation.
+--
+-- This API operation can be called independently of any resource. Previous
+-- documentation implied that a workload ARN must be specified.
+module Amazonka.WellArchitected.UpdateShareInvitation
+  ( -- * Creating a Request
+    UpdateShareInvitation (..),
+    newUpdateShareInvitation,
+
+    -- * Request Lenses
+    updateShareInvitation_shareInvitationId,
+    updateShareInvitation_shareInvitationAction,
+
+    -- * Destructuring the Response
+    UpdateShareInvitationResponse (..),
+    newUpdateShareInvitationResponse,
+
+    -- * Response Lenses
+    updateShareInvitationResponse_shareInvitation,
+    updateShareInvitationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for Update Share Invitation
+--
+-- /See:/ 'newUpdateShareInvitation' smart constructor.
+data UpdateShareInvitation = UpdateShareInvitation'
+  { -- | The ID assigned to the share invitation.
+    shareInvitationId :: Prelude.Text,
+    shareInvitationAction :: ShareInvitationAction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateShareInvitation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareInvitationId', 'updateShareInvitation_shareInvitationId' - The ID assigned to the share invitation.
+--
+-- 'shareInvitationAction', 'updateShareInvitation_shareInvitationAction' - Undocumented member.
+newUpdateShareInvitation ::
+  -- | 'shareInvitationId'
+  Prelude.Text ->
+  -- | 'shareInvitationAction'
+  ShareInvitationAction ->
+  UpdateShareInvitation
+newUpdateShareInvitation
+  pShareInvitationId_
+  pShareInvitationAction_ =
+    UpdateShareInvitation'
+      { shareInvitationId =
+          pShareInvitationId_,
+        shareInvitationAction = pShareInvitationAction_
+      }
+
+-- | The ID assigned to the share invitation.
+updateShareInvitation_shareInvitationId :: Lens.Lens' UpdateShareInvitation Prelude.Text
+updateShareInvitation_shareInvitationId = Lens.lens (\UpdateShareInvitation' {shareInvitationId} -> shareInvitationId) (\s@UpdateShareInvitation' {} a -> s {shareInvitationId = a} :: UpdateShareInvitation)
+
+-- | Undocumented member.
+updateShareInvitation_shareInvitationAction :: Lens.Lens' UpdateShareInvitation ShareInvitationAction
+updateShareInvitation_shareInvitationAction = Lens.lens (\UpdateShareInvitation' {shareInvitationAction} -> shareInvitationAction) (\s@UpdateShareInvitation' {} a -> s {shareInvitationAction = a} :: UpdateShareInvitation)
+
+instance Core.AWSRequest UpdateShareInvitation where
+  type
+    AWSResponse UpdateShareInvitation =
+      UpdateShareInvitationResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateShareInvitationResponse'
+            Prelude.<$> (x Data..?> "ShareInvitation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateShareInvitation where
+  hashWithSalt _salt UpdateShareInvitation' {..} =
+    _salt
+      `Prelude.hashWithSalt` shareInvitationId
+      `Prelude.hashWithSalt` shareInvitationAction
+
+instance Prelude.NFData UpdateShareInvitation where
+  rnf UpdateShareInvitation' {..} =
+    Prelude.rnf shareInvitationId
+      `Prelude.seq` Prelude.rnf shareInvitationAction
+
+instance Data.ToHeaders UpdateShareInvitation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateShareInvitation where
+  toJSON UpdateShareInvitation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ShareInvitationAction"
+                  Data..= shareInvitationAction
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateShareInvitation where
+  toPath UpdateShareInvitation' {..} =
+    Prelude.mconcat
+      ["/shareInvitations/", Data.toBS shareInvitationId]
+
+instance Data.ToQuery UpdateShareInvitation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateShareInvitationResponse' smart constructor.
+data UpdateShareInvitationResponse = UpdateShareInvitationResponse'
+  { -- | The updated workload or custom lens share invitation.
+    shareInvitation :: Prelude.Maybe ShareInvitation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateShareInvitationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareInvitation', 'updateShareInvitationResponse_shareInvitation' - The updated workload or custom lens share invitation.
+--
+-- 'httpStatus', 'updateShareInvitationResponse_httpStatus' - The response's http status code.
+newUpdateShareInvitationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateShareInvitationResponse
+newUpdateShareInvitationResponse pHttpStatus_ =
+  UpdateShareInvitationResponse'
+    { shareInvitation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated workload or custom lens share invitation.
+updateShareInvitationResponse_shareInvitation :: Lens.Lens' UpdateShareInvitationResponse (Prelude.Maybe ShareInvitation)
+updateShareInvitationResponse_shareInvitation = Lens.lens (\UpdateShareInvitationResponse' {shareInvitation} -> shareInvitation) (\s@UpdateShareInvitationResponse' {} a -> s {shareInvitation = a} :: UpdateShareInvitationResponse)
+
+-- | The response's http status code.
+updateShareInvitationResponse_httpStatus :: Lens.Lens' UpdateShareInvitationResponse Prelude.Int
+updateShareInvitationResponse_httpStatus = Lens.lens (\UpdateShareInvitationResponse' {httpStatus} -> httpStatus) (\s@UpdateShareInvitationResponse' {} a -> s {httpStatus = a} :: UpdateShareInvitationResponse)
+
+instance Prelude.NFData UpdateShareInvitationResponse where
+  rnf UpdateShareInvitationResponse' {..} =
+    Prelude.rnf shareInvitation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/UpdateWorkload.hs b/gen/Amazonka/WellArchitected/UpdateWorkload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpdateWorkload.hs
@@ -0,0 +1,389 @@
+{-# 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.WellArchitected.UpdateWorkload
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing workload.
+module Amazonka.WellArchitected.UpdateWorkload
+  ( -- * Creating a Request
+    UpdateWorkload (..),
+    newUpdateWorkload,
+
+    -- * Request Lenses
+    updateWorkload_accountIds,
+    updateWorkload_applications,
+    updateWorkload_architecturalDesign,
+    updateWorkload_awsRegions,
+    updateWorkload_description,
+    updateWorkload_discoveryConfig,
+    updateWorkload_environment,
+    updateWorkload_improvementStatus,
+    updateWorkload_industry,
+    updateWorkload_industryType,
+    updateWorkload_isReviewOwnerUpdateAcknowledged,
+    updateWorkload_nonAwsRegions,
+    updateWorkload_notes,
+    updateWorkload_pillarPriorities,
+    updateWorkload_reviewOwner,
+    updateWorkload_workloadName,
+    updateWorkload_workloadId,
+
+    -- * Destructuring the Response
+    UpdateWorkloadResponse (..),
+    newUpdateWorkloadResponse,
+
+    -- * Response Lenses
+    updateWorkloadResponse_workload,
+    updateWorkloadResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input to update a workload.
+--
+-- /See:/ 'newUpdateWorkload' smart constructor.
+data UpdateWorkload = UpdateWorkload'
+  { accountIds :: Prelude.Maybe [Prelude.Text],
+    -- | List of AppRegistry application ARNs to associate to the workload.
+    applications :: Prelude.Maybe [Prelude.Text],
+    architecturalDesign :: Prelude.Maybe Prelude.Text,
+    awsRegions :: Prelude.Maybe [Prelude.Text],
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Well-Architected discovery configuration settings to associate to the
+    -- workload.
+    discoveryConfig :: Prelude.Maybe WorkloadDiscoveryConfig,
+    environment :: Prelude.Maybe WorkloadEnvironment,
+    improvementStatus :: Prelude.Maybe WorkloadImprovementStatus,
+    industry :: Prelude.Maybe Prelude.Text,
+    industryType :: Prelude.Maybe Prelude.Text,
+    -- | Flag indicating whether the workload owner has acknowledged that the
+    -- /Review owner/ field is required.
+    --
+    -- If a __Review owner__ is not added to the workload within 60 days of
+    -- acknowledgement, access to the workload is restricted until an owner is
+    -- added.
+    isReviewOwnerUpdateAcknowledged :: Prelude.Maybe Prelude.Bool,
+    nonAwsRegions :: Prelude.Maybe [Prelude.Text],
+    notes :: Prelude.Maybe Prelude.Text,
+    pillarPriorities :: Prelude.Maybe [Prelude.Text],
+    reviewOwner :: Prelude.Maybe Prelude.Text,
+    workloadName :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkload' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountIds', 'updateWorkload_accountIds' - Undocumented member.
+--
+-- 'applications', 'updateWorkload_applications' - List of AppRegistry application ARNs to associate to the workload.
+--
+-- 'architecturalDesign', 'updateWorkload_architecturalDesign' - Undocumented member.
+--
+-- 'awsRegions', 'updateWorkload_awsRegions' - Undocumented member.
+--
+-- 'description', 'updateWorkload_description' - Undocumented member.
+--
+-- 'discoveryConfig', 'updateWorkload_discoveryConfig' - Well-Architected discovery configuration settings to associate to the
+-- workload.
+--
+-- 'environment', 'updateWorkload_environment' - Undocumented member.
+--
+-- 'improvementStatus', 'updateWorkload_improvementStatus' - Undocumented member.
+--
+-- 'industry', 'updateWorkload_industry' - Undocumented member.
+--
+-- 'industryType', 'updateWorkload_industryType' - Undocumented member.
+--
+-- 'isReviewOwnerUpdateAcknowledged', 'updateWorkload_isReviewOwnerUpdateAcknowledged' - Flag indicating whether the workload owner has acknowledged that the
+-- /Review owner/ field is required.
+--
+-- If a __Review owner__ is not added to the workload within 60 days of
+-- acknowledgement, access to the workload is restricted until an owner is
+-- added.
+--
+-- 'nonAwsRegions', 'updateWorkload_nonAwsRegions' - Undocumented member.
+--
+-- 'notes', 'updateWorkload_notes' - Undocumented member.
+--
+-- 'pillarPriorities', 'updateWorkload_pillarPriorities' - Undocumented member.
+--
+-- 'reviewOwner', 'updateWorkload_reviewOwner' - Undocumented member.
+--
+-- 'workloadName', 'updateWorkload_workloadName' - Undocumented member.
+--
+-- 'workloadId', 'updateWorkload_workloadId' - Undocumented member.
+newUpdateWorkload ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  UpdateWorkload
+newUpdateWorkload pWorkloadId_ =
+  UpdateWorkload'
+    { accountIds = Prelude.Nothing,
+      applications = Prelude.Nothing,
+      architecturalDesign = Prelude.Nothing,
+      awsRegions = Prelude.Nothing,
+      description = Prelude.Nothing,
+      discoveryConfig = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      improvementStatus = Prelude.Nothing,
+      industry = Prelude.Nothing,
+      industryType = Prelude.Nothing,
+      isReviewOwnerUpdateAcknowledged = Prelude.Nothing,
+      nonAwsRegions = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      pillarPriorities = Prelude.Nothing,
+      reviewOwner = Prelude.Nothing,
+      workloadName = Prelude.Nothing,
+      workloadId = pWorkloadId_
+    }
+
+-- | Undocumented member.
+updateWorkload_accountIds :: Lens.Lens' UpdateWorkload (Prelude.Maybe [Prelude.Text])
+updateWorkload_accountIds = Lens.lens (\UpdateWorkload' {accountIds} -> accountIds) (\s@UpdateWorkload' {} a -> s {accountIds = a} :: UpdateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of AppRegistry application ARNs to associate to the workload.
+updateWorkload_applications :: Lens.Lens' UpdateWorkload (Prelude.Maybe [Prelude.Text])
+updateWorkload_applications = Lens.lens (\UpdateWorkload' {applications} -> applications) (\s@UpdateWorkload' {} a -> s {applications = a} :: UpdateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateWorkload_architecturalDesign :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_architecturalDesign = Lens.lens (\UpdateWorkload' {architecturalDesign} -> architecturalDesign) (\s@UpdateWorkload' {} a -> s {architecturalDesign = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_awsRegions :: Lens.Lens' UpdateWorkload (Prelude.Maybe [Prelude.Text])
+updateWorkload_awsRegions = Lens.lens (\UpdateWorkload' {awsRegions} -> awsRegions) (\s@UpdateWorkload' {} a -> s {awsRegions = a} :: UpdateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateWorkload_description :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_description = Lens.lens (\UpdateWorkload' {description} -> description) (\s@UpdateWorkload' {} a -> s {description = a} :: UpdateWorkload)
+
+-- | Well-Architected discovery configuration settings to associate to the
+-- workload.
+updateWorkload_discoveryConfig :: Lens.Lens' UpdateWorkload (Prelude.Maybe WorkloadDiscoveryConfig)
+updateWorkload_discoveryConfig = Lens.lens (\UpdateWorkload' {discoveryConfig} -> discoveryConfig) (\s@UpdateWorkload' {} a -> s {discoveryConfig = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_environment :: Lens.Lens' UpdateWorkload (Prelude.Maybe WorkloadEnvironment)
+updateWorkload_environment = Lens.lens (\UpdateWorkload' {environment} -> environment) (\s@UpdateWorkload' {} a -> s {environment = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_improvementStatus :: Lens.Lens' UpdateWorkload (Prelude.Maybe WorkloadImprovementStatus)
+updateWorkload_improvementStatus = Lens.lens (\UpdateWorkload' {improvementStatus} -> improvementStatus) (\s@UpdateWorkload' {} a -> s {improvementStatus = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_industry :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_industry = Lens.lens (\UpdateWorkload' {industry} -> industry) (\s@UpdateWorkload' {} a -> s {industry = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_industryType :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_industryType = Lens.lens (\UpdateWorkload' {industryType} -> industryType) (\s@UpdateWorkload' {} a -> s {industryType = a} :: UpdateWorkload)
+
+-- | Flag indicating whether the workload owner has acknowledged that the
+-- /Review owner/ field is required.
+--
+-- If a __Review owner__ is not added to the workload within 60 days of
+-- acknowledgement, access to the workload is restricted until an owner is
+-- added.
+updateWorkload_isReviewOwnerUpdateAcknowledged :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Bool)
+updateWorkload_isReviewOwnerUpdateAcknowledged = Lens.lens (\UpdateWorkload' {isReviewOwnerUpdateAcknowledged} -> isReviewOwnerUpdateAcknowledged) (\s@UpdateWorkload' {} a -> s {isReviewOwnerUpdateAcknowledged = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_nonAwsRegions :: Lens.Lens' UpdateWorkload (Prelude.Maybe [Prelude.Text])
+updateWorkload_nonAwsRegions = Lens.lens (\UpdateWorkload' {nonAwsRegions} -> nonAwsRegions) (\s@UpdateWorkload' {} a -> s {nonAwsRegions = a} :: UpdateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateWorkload_notes :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_notes = Lens.lens (\UpdateWorkload' {notes} -> notes) (\s@UpdateWorkload' {} a -> s {notes = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_pillarPriorities :: Lens.Lens' UpdateWorkload (Prelude.Maybe [Prelude.Text])
+updateWorkload_pillarPriorities = Lens.lens (\UpdateWorkload' {pillarPriorities} -> pillarPriorities) (\s@UpdateWorkload' {} a -> s {pillarPriorities = a} :: UpdateWorkload) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateWorkload_reviewOwner :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_reviewOwner = Lens.lens (\UpdateWorkload' {reviewOwner} -> reviewOwner) (\s@UpdateWorkload' {} a -> s {reviewOwner = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_workloadName :: Lens.Lens' UpdateWorkload (Prelude.Maybe Prelude.Text)
+updateWorkload_workloadName = Lens.lens (\UpdateWorkload' {workloadName} -> workloadName) (\s@UpdateWorkload' {} a -> s {workloadName = a} :: UpdateWorkload)
+
+-- | Undocumented member.
+updateWorkload_workloadId :: Lens.Lens' UpdateWorkload Prelude.Text
+updateWorkload_workloadId = Lens.lens (\UpdateWorkload' {workloadId} -> workloadId) (\s@UpdateWorkload' {} a -> s {workloadId = a} :: UpdateWorkload)
+
+instance Core.AWSRequest UpdateWorkload where
+  type
+    AWSResponse UpdateWorkload =
+      UpdateWorkloadResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateWorkloadResponse'
+            Prelude.<$> (x Data..?> "Workload")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateWorkload where
+  hashWithSalt _salt UpdateWorkload' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountIds
+      `Prelude.hashWithSalt` applications
+      `Prelude.hashWithSalt` architecturalDesign
+      `Prelude.hashWithSalt` awsRegions
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` discoveryConfig
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` improvementStatus
+      `Prelude.hashWithSalt` industry
+      `Prelude.hashWithSalt` industryType
+      `Prelude.hashWithSalt` isReviewOwnerUpdateAcknowledged
+      `Prelude.hashWithSalt` nonAwsRegions
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` pillarPriorities
+      `Prelude.hashWithSalt` reviewOwner
+      `Prelude.hashWithSalt` workloadName
+      `Prelude.hashWithSalt` workloadId
+
+instance Prelude.NFData UpdateWorkload where
+  rnf UpdateWorkload' {..} =
+    Prelude.rnf accountIds
+      `Prelude.seq` Prelude.rnf applications
+      `Prelude.seq` Prelude.rnf architecturalDesign
+      `Prelude.seq` Prelude.rnf awsRegions
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf discoveryConfig
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf improvementStatus
+      `Prelude.seq` Prelude.rnf industry
+      `Prelude.seq` Prelude.rnf industryType
+      `Prelude.seq` Prelude.rnf isReviewOwnerUpdateAcknowledged
+      `Prelude.seq` Prelude.rnf nonAwsRegions
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf pillarPriorities
+      `Prelude.seq` Prelude.rnf reviewOwner
+      `Prelude.seq` Prelude.rnf workloadName
+      `Prelude.seq` Prelude.rnf workloadId
+
+instance Data.ToHeaders UpdateWorkload where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateWorkload where
+  toJSON UpdateWorkload' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AccountIds" Data..=) Prelude.<$> accountIds,
+            ("Applications" Data..=) Prelude.<$> applications,
+            ("ArchitecturalDesign" Data..=)
+              Prelude.<$> architecturalDesign,
+            ("AwsRegions" Data..=) Prelude.<$> awsRegions,
+            ("Description" Data..=) Prelude.<$> description,
+            ("DiscoveryConfig" Data..=)
+              Prelude.<$> discoveryConfig,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("ImprovementStatus" Data..=)
+              Prelude.<$> improvementStatus,
+            ("Industry" Data..=) Prelude.<$> industry,
+            ("IndustryType" Data..=) Prelude.<$> industryType,
+            ("IsReviewOwnerUpdateAcknowledged" Data..=)
+              Prelude.<$> isReviewOwnerUpdateAcknowledged,
+            ("NonAwsRegions" Data..=) Prelude.<$> nonAwsRegions,
+            ("Notes" Data..=) Prelude.<$> notes,
+            ("PillarPriorities" Data..=)
+              Prelude.<$> pillarPriorities,
+            ("ReviewOwner" Data..=) Prelude.<$> reviewOwner,
+            ("WorkloadName" Data..=) Prelude.<$> workloadName
+          ]
+      )
+
+instance Data.ToPath UpdateWorkload where
+  toPath UpdateWorkload' {..} =
+    Prelude.mconcat
+      ["/workloads/", Data.toBS workloadId]
+
+instance Data.ToQuery UpdateWorkload where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Output of an update workload call.
+--
+-- /See:/ 'newUpdateWorkloadResponse' smart constructor.
+data UpdateWorkloadResponse = UpdateWorkloadResponse'
+  { workload :: Prelude.Maybe Workload,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkloadResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workload', 'updateWorkloadResponse_workload' - Undocumented member.
+--
+-- 'httpStatus', 'updateWorkloadResponse_httpStatus' - The response's http status code.
+newUpdateWorkloadResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateWorkloadResponse
+newUpdateWorkloadResponse pHttpStatus_ =
+  UpdateWorkloadResponse'
+    { workload = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateWorkloadResponse_workload :: Lens.Lens' UpdateWorkloadResponse (Prelude.Maybe Workload)
+updateWorkloadResponse_workload = Lens.lens (\UpdateWorkloadResponse' {workload} -> workload) (\s@UpdateWorkloadResponse' {} a -> s {workload = a} :: UpdateWorkloadResponse)
+
+-- | The response's http status code.
+updateWorkloadResponse_httpStatus :: Lens.Lens' UpdateWorkloadResponse Prelude.Int
+updateWorkloadResponse_httpStatus = Lens.lens (\UpdateWorkloadResponse' {httpStatus} -> httpStatus) (\s@UpdateWorkloadResponse' {} a -> s {httpStatus = a} :: UpdateWorkloadResponse)
+
+instance Prelude.NFData UpdateWorkloadResponse where
+  rnf UpdateWorkloadResponse' {..} =
+    Prelude.rnf workload
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/UpdateWorkloadShare.hs b/gen/Amazonka/WellArchitected/UpdateWorkloadShare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpdateWorkloadShare.hs
@@ -0,0 +1,218 @@
+{-# 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.WellArchitected.UpdateWorkloadShare
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a workload share.
+module Amazonka.WellArchitected.UpdateWorkloadShare
+  ( -- * Creating a Request
+    UpdateWorkloadShare (..),
+    newUpdateWorkloadShare,
+
+    -- * Request Lenses
+    updateWorkloadShare_shareId,
+    updateWorkloadShare_workloadId,
+    updateWorkloadShare_permissionType,
+
+    -- * Destructuring the Response
+    UpdateWorkloadShareResponse (..),
+    newUpdateWorkloadShareResponse,
+
+    -- * Response Lenses
+    updateWorkloadShareResponse_workloadId,
+    updateWorkloadShareResponse_workloadShare,
+    updateWorkloadShareResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | Input for Update Workload Share
+--
+-- /See:/ 'newUpdateWorkloadShare' smart constructor.
+data UpdateWorkloadShare = UpdateWorkloadShare'
+  { shareId :: Prelude.Text,
+    workloadId :: Prelude.Text,
+    permissionType :: PermissionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkloadShare' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shareId', 'updateWorkloadShare_shareId' - Undocumented member.
+--
+-- 'workloadId', 'updateWorkloadShare_workloadId' - Undocumented member.
+--
+-- 'permissionType', 'updateWorkloadShare_permissionType' - Undocumented member.
+newUpdateWorkloadShare ::
+  -- | 'shareId'
+  Prelude.Text ->
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'permissionType'
+  PermissionType ->
+  UpdateWorkloadShare
+newUpdateWorkloadShare
+  pShareId_
+  pWorkloadId_
+  pPermissionType_ =
+    UpdateWorkloadShare'
+      { shareId = pShareId_,
+        workloadId = pWorkloadId_,
+        permissionType = pPermissionType_
+      }
+
+-- | Undocumented member.
+updateWorkloadShare_shareId :: Lens.Lens' UpdateWorkloadShare Prelude.Text
+updateWorkloadShare_shareId = Lens.lens (\UpdateWorkloadShare' {shareId} -> shareId) (\s@UpdateWorkloadShare' {} a -> s {shareId = a} :: UpdateWorkloadShare)
+
+-- | Undocumented member.
+updateWorkloadShare_workloadId :: Lens.Lens' UpdateWorkloadShare Prelude.Text
+updateWorkloadShare_workloadId = Lens.lens (\UpdateWorkloadShare' {workloadId} -> workloadId) (\s@UpdateWorkloadShare' {} a -> s {workloadId = a} :: UpdateWorkloadShare)
+
+-- | Undocumented member.
+updateWorkloadShare_permissionType :: Lens.Lens' UpdateWorkloadShare PermissionType
+updateWorkloadShare_permissionType = Lens.lens (\UpdateWorkloadShare' {permissionType} -> permissionType) (\s@UpdateWorkloadShare' {} a -> s {permissionType = a} :: UpdateWorkloadShare)
+
+instance Core.AWSRequest UpdateWorkloadShare where
+  type
+    AWSResponse UpdateWorkloadShare =
+      UpdateWorkloadShareResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateWorkloadShareResponse'
+            Prelude.<$> (x Data..?> "WorkloadId")
+            Prelude.<*> (x Data..?> "WorkloadShare")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateWorkloadShare where
+  hashWithSalt _salt UpdateWorkloadShare' {..} =
+    _salt
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` permissionType
+
+instance Prelude.NFData UpdateWorkloadShare where
+  rnf UpdateWorkloadShare' {..} =
+    Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf permissionType
+
+instance Data.ToHeaders UpdateWorkloadShare where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateWorkloadShare where
+  toJSON UpdateWorkloadShare' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("PermissionType" Data..= permissionType)
+          ]
+      )
+
+instance Data.ToPath UpdateWorkloadShare where
+  toPath UpdateWorkloadShare' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/shares/",
+        Data.toBS shareId
+      ]
+
+instance Data.ToQuery UpdateWorkloadShare where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Input for Update Workload Share
+--
+-- /See:/ 'newUpdateWorkloadShareResponse' smart constructor.
+data UpdateWorkloadShareResponse = UpdateWorkloadShareResponse'
+  { workloadId :: Prelude.Maybe Prelude.Text,
+    workloadShare :: Prelude.Maybe WorkloadShare,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkloadShareResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'workloadId', 'updateWorkloadShareResponse_workloadId' - Undocumented member.
+--
+-- 'workloadShare', 'updateWorkloadShareResponse_workloadShare' - Undocumented member.
+--
+-- 'httpStatus', 'updateWorkloadShareResponse_httpStatus' - The response's http status code.
+newUpdateWorkloadShareResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateWorkloadShareResponse
+newUpdateWorkloadShareResponse pHttpStatus_ =
+  UpdateWorkloadShareResponse'
+    { workloadId =
+        Prelude.Nothing,
+      workloadShare = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateWorkloadShareResponse_workloadId :: Lens.Lens' UpdateWorkloadShareResponse (Prelude.Maybe Prelude.Text)
+updateWorkloadShareResponse_workloadId = Lens.lens (\UpdateWorkloadShareResponse' {workloadId} -> workloadId) (\s@UpdateWorkloadShareResponse' {} a -> s {workloadId = a} :: UpdateWorkloadShareResponse)
+
+-- | Undocumented member.
+updateWorkloadShareResponse_workloadShare :: Lens.Lens' UpdateWorkloadShareResponse (Prelude.Maybe WorkloadShare)
+updateWorkloadShareResponse_workloadShare = Lens.lens (\UpdateWorkloadShareResponse' {workloadShare} -> workloadShare) (\s@UpdateWorkloadShareResponse' {} a -> s {workloadShare = a} :: UpdateWorkloadShareResponse)
+
+-- | The response's http status code.
+updateWorkloadShareResponse_httpStatus :: Lens.Lens' UpdateWorkloadShareResponse Prelude.Int
+updateWorkloadShareResponse_httpStatus = Lens.lens (\UpdateWorkloadShareResponse' {httpStatus} -> httpStatus) (\s@UpdateWorkloadShareResponse' {} a -> s {httpStatus = a} :: UpdateWorkloadShareResponse)
+
+instance Prelude.NFData UpdateWorkloadShareResponse where
+  rnf UpdateWorkloadShareResponse' {..} =
+    Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf workloadShare
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WellArchitected/UpgradeLensReview.hs b/gen/Amazonka/WellArchitected/UpgradeLensReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/UpgradeLensReview.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.WellArchitected.UpgradeLensReview
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Upgrade lens review.
+module Amazonka.WellArchitected.UpgradeLensReview
+  ( -- * Creating a Request
+    UpgradeLensReview (..),
+    newUpgradeLensReview,
+
+    -- * Request Lenses
+    upgradeLensReview_clientRequestToken,
+    upgradeLensReview_workloadId,
+    upgradeLensReview_lensAlias,
+    upgradeLensReview_milestoneName,
+
+    -- * Destructuring the Response
+    UpgradeLensReviewResponse (..),
+    newUpgradeLensReviewResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WellArchitected.Types
+
+-- | /See:/ 'newUpgradeLensReview' smart constructor.
+data UpgradeLensReview = UpgradeLensReview'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    workloadId :: Prelude.Text,
+    lensAlias :: Prelude.Text,
+    milestoneName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpgradeLensReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'upgradeLensReview_clientRequestToken' - Undocumented member.
+--
+-- 'workloadId', 'upgradeLensReview_workloadId' - Undocumented member.
+--
+-- 'lensAlias', 'upgradeLensReview_lensAlias' - Undocumented member.
+--
+-- 'milestoneName', 'upgradeLensReview_milestoneName' - Undocumented member.
+newUpgradeLensReview ::
+  -- | 'workloadId'
+  Prelude.Text ->
+  -- | 'lensAlias'
+  Prelude.Text ->
+  -- | 'milestoneName'
+  Prelude.Text ->
+  UpgradeLensReview
+newUpgradeLensReview
+  pWorkloadId_
+  pLensAlias_
+  pMilestoneName_ =
+    UpgradeLensReview'
+      { clientRequestToken =
+          Prelude.Nothing,
+        workloadId = pWorkloadId_,
+        lensAlias = pLensAlias_,
+        milestoneName = pMilestoneName_
+      }
+
+-- | Undocumented member.
+upgradeLensReview_clientRequestToken :: Lens.Lens' UpgradeLensReview (Prelude.Maybe Prelude.Text)
+upgradeLensReview_clientRequestToken = Lens.lens (\UpgradeLensReview' {clientRequestToken} -> clientRequestToken) (\s@UpgradeLensReview' {} a -> s {clientRequestToken = a} :: UpgradeLensReview)
+
+-- | Undocumented member.
+upgradeLensReview_workloadId :: Lens.Lens' UpgradeLensReview Prelude.Text
+upgradeLensReview_workloadId = Lens.lens (\UpgradeLensReview' {workloadId} -> workloadId) (\s@UpgradeLensReview' {} a -> s {workloadId = a} :: UpgradeLensReview)
+
+-- | Undocumented member.
+upgradeLensReview_lensAlias :: Lens.Lens' UpgradeLensReview Prelude.Text
+upgradeLensReview_lensAlias = Lens.lens (\UpgradeLensReview' {lensAlias} -> lensAlias) (\s@UpgradeLensReview' {} a -> s {lensAlias = a} :: UpgradeLensReview)
+
+-- | Undocumented member.
+upgradeLensReview_milestoneName :: Lens.Lens' UpgradeLensReview Prelude.Text
+upgradeLensReview_milestoneName = Lens.lens (\UpgradeLensReview' {milestoneName} -> milestoneName) (\s@UpgradeLensReview' {} a -> s {milestoneName = a} :: UpgradeLensReview)
+
+instance Core.AWSRequest UpgradeLensReview where
+  type
+    AWSResponse UpgradeLensReview =
+      UpgradeLensReviewResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpgradeLensReviewResponse'
+
+instance Prelude.Hashable UpgradeLensReview where
+  hashWithSalt _salt UpgradeLensReview' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` workloadId
+      `Prelude.hashWithSalt` lensAlias
+      `Prelude.hashWithSalt` milestoneName
+
+instance Prelude.NFData UpgradeLensReview where
+  rnf UpgradeLensReview' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf workloadId
+      `Prelude.seq` Prelude.rnf lensAlias
+      `Prelude.seq` Prelude.rnf milestoneName
+
+instance Data.ToHeaders UpgradeLensReview where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpgradeLensReview where
+  toJSON UpgradeLensReview' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just
+              ("MilestoneName" Data..= milestoneName)
+          ]
+      )
+
+instance Data.ToPath UpgradeLensReview where
+  toPath UpgradeLensReview' {..} =
+    Prelude.mconcat
+      [ "/workloads/",
+        Data.toBS workloadId,
+        "/lensReviews/",
+        Data.toBS lensAlias,
+        "/upgrade"
+      ]
+
+instance Data.ToQuery UpgradeLensReview where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpgradeLensReviewResponse' smart constructor.
+data UpgradeLensReviewResponse = UpgradeLensReviewResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpgradeLensReviewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpgradeLensReviewResponse ::
+  UpgradeLensReviewResponse
+newUpgradeLensReviewResponse =
+  UpgradeLensReviewResponse'
+
+instance Prelude.NFData UpgradeLensReviewResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WellArchitected/Waiters.hs b/gen/Amazonka/WellArchitected/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WellArchitected/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.WellArchitected.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.WellArchitected.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.WellArchitected.Lens
+import Amazonka.WellArchitected.Types
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.WellArchitected
+import Test.Amazonka.WellArchitected.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "WellArchitected"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/WellArchitected.hs b/test/Test/Amazonka/Gen/WellArchitected.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/WellArchitected.hs
@@ -0,0 +1,878 @@
+{-# 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.WellArchitected
+-- 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.WellArchitected where
+
+import Amazonka.WellArchitected
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.WellArchitected.Internal
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAssociateLenses $
+--             newAssociateLenses
+--
+--         , requestCreateLensShare $
+--             newCreateLensShare
+--
+--         , requestCreateLensVersion $
+--             newCreateLensVersion
+--
+--         , requestCreateMilestone $
+--             newCreateMilestone
+--
+--         , requestCreateWorkload $
+--             newCreateWorkload
+--
+--         , requestCreateWorkloadShare $
+--             newCreateWorkloadShare
+--
+--         , requestDeleteLens $
+--             newDeleteLens
+--
+--         , requestDeleteLensShare $
+--             newDeleteLensShare
+--
+--         , requestDeleteWorkload $
+--             newDeleteWorkload
+--
+--         , requestDeleteWorkloadShare $
+--             newDeleteWorkloadShare
+--
+--         , requestDisassociateLenses $
+--             newDisassociateLenses
+--
+--         , requestExportLens $
+--             newExportLens
+--
+--         , requestGetAnswer $
+--             newGetAnswer
+--
+--         , requestGetLens $
+--             newGetLens
+--
+--         , requestGetLensReview $
+--             newGetLensReview
+--
+--         , requestGetLensReviewReport $
+--             newGetLensReviewReport
+--
+--         , requestGetLensVersionDifference $
+--             newGetLensVersionDifference
+--
+--         , requestGetMilestone $
+--             newGetMilestone
+--
+--         , requestGetWorkload $
+--             newGetWorkload
+--
+--         , requestImportLens $
+--             newImportLens
+--
+--         , requestListAnswers $
+--             newListAnswers
+--
+--         , requestListCheckDetails $
+--             newListCheckDetails
+--
+--         , requestListCheckSummaries $
+--             newListCheckSummaries
+--
+--         , requestListLensReviewImprovements $
+--             newListLensReviewImprovements
+--
+--         , requestListLensReviews $
+--             newListLensReviews
+--
+--         , requestListLensShares $
+--             newListLensShares
+--
+--         , requestListLenses $
+--             newListLenses
+--
+--         , requestListMilestones $
+--             newListMilestones
+--
+--         , requestListNotifications $
+--             newListNotifications
+--
+--         , requestListShareInvitations $
+--             newListShareInvitations
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestListWorkloadShares $
+--             newListWorkloadShares
+--
+--         , requestListWorkloads $
+--             newListWorkloads
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateAnswer $
+--             newUpdateAnswer
+--
+--         , requestUpdateGlobalSettings $
+--             newUpdateGlobalSettings
+--
+--         , requestUpdateLensReview $
+--             newUpdateLensReview
+--
+--         , requestUpdateShareInvitation $
+--             newUpdateShareInvitation
+--
+--         , requestUpdateWorkload $
+--             newUpdateWorkload
+--
+--         , requestUpdateWorkloadShare $
+--             newUpdateWorkloadShare
+--
+--         , requestUpgradeLensReview $
+--             newUpgradeLensReview
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateLenses $
+--             newAssociateLensesResponse
+--
+--         , responseCreateLensShare $
+--             newCreateLensShareResponse
+--
+--         , responseCreateLensVersion $
+--             newCreateLensVersionResponse
+--
+--         , responseCreateMilestone $
+--             newCreateMilestoneResponse
+--
+--         , responseCreateWorkload $
+--             newCreateWorkloadResponse
+--
+--         , responseCreateWorkloadShare $
+--             newCreateWorkloadShareResponse
+--
+--         , responseDeleteLens $
+--             newDeleteLensResponse
+--
+--         , responseDeleteLensShare $
+--             newDeleteLensShareResponse
+--
+--         , responseDeleteWorkload $
+--             newDeleteWorkloadResponse
+--
+--         , responseDeleteWorkloadShare $
+--             newDeleteWorkloadShareResponse
+--
+--         , responseDisassociateLenses $
+--             newDisassociateLensesResponse
+--
+--         , responseExportLens $
+--             newExportLensResponse
+--
+--         , responseGetAnswer $
+--             newGetAnswerResponse
+--
+--         , responseGetLens $
+--             newGetLensResponse
+--
+--         , responseGetLensReview $
+--             newGetLensReviewResponse
+--
+--         , responseGetLensReviewReport $
+--             newGetLensReviewReportResponse
+--
+--         , responseGetLensVersionDifference $
+--             newGetLensVersionDifferenceResponse
+--
+--         , responseGetMilestone $
+--             newGetMilestoneResponse
+--
+--         , responseGetWorkload $
+--             newGetWorkloadResponse
+--
+--         , responseImportLens $
+--             newImportLensResponse
+--
+--         , responseListAnswers $
+--             newListAnswersResponse
+--
+--         , responseListCheckDetails $
+--             newListCheckDetailsResponse
+--
+--         , responseListCheckSummaries $
+--             newListCheckSummariesResponse
+--
+--         , responseListLensReviewImprovements $
+--             newListLensReviewImprovementsResponse
+--
+--         , responseListLensReviews $
+--             newListLensReviewsResponse
+--
+--         , responseListLensShares $
+--             newListLensSharesResponse
+--
+--         , responseListLenses $
+--             newListLensesResponse
+--
+--         , responseListMilestones $
+--             newListMilestonesResponse
+--
+--         , responseListNotifications $
+--             newListNotificationsResponse
+--
+--         , responseListShareInvitations $
+--             newListShareInvitationsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseListWorkloadShares $
+--             newListWorkloadSharesResponse
+--
+--         , responseListWorkloads $
+--             newListWorkloadsResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateAnswer $
+--             newUpdateAnswerResponse
+--
+--         , responseUpdateGlobalSettings $
+--             newUpdateGlobalSettingsResponse
+--
+--         , responseUpdateLensReview $
+--             newUpdateLensReviewResponse
+--
+--         , responseUpdateShareInvitation $
+--             newUpdateShareInvitationResponse
+--
+--         , responseUpdateWorkload $
+--             newUpdateWorkloadResponse
+--
+--         , responseUpdateWorkloadShare $
+--             newUpdateWorkloadShareResponse
+--
+--         , responseUpgradeLensReview $
+--             newUpgradeLensReviewResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateLenses :: AssociateLenses -> TestTree
+requestAssociateLenses =
+  req
+    "AssociateLenses"
+    "fixture/AssociateLenses.yaml"
+
+requestCreateLensShare :: CreateLensShare -> TestTree
+requestCreateLensShare =
+  req
+    "CreateLensShare"
+    "fixture/CreateLensShare.yaml"
+
+requestCreateLensVersion :: CreateLensVersion -> TestTree
+requestCreateLensVersion =
+  req
+    "CreateLensVersion"
+    "fixture/CreateLensVersion.yaml"
+
+requestCreateMilestone :: CreateMilestone -> TestTree
+requestCreateMilestone =
+  req
+    "CreateMilestone"
+    "fixture/CreateMilestone.yaml"
+
+requestCreateWorkload :: CreateWorkload -> TestTree
+requestCreateWorkload =
+  req
+    "CreateWorkload"
+    "fixture/CreateWorkload.yaml"
+
+requestCreateWorkloadShare :: CreateWorkloadShare -> TestTree
+requestCreateWorkloadShare =
+  req
+    "CreateWorkloadShare"
+    "fixture/CreateWorkloadShare.yaml"
+
+requestDeleteLens :: DeleteLens -> TestTree
+requestDeleteLens =
+  req
+    "DeleteLens"
+    "fixture/DeleteLens.yaml"
+
+requestDeleteLensShare :: DeleteLensShare -> TestTree
+requestDeleteLensShare =
+  req
+    "DeleteLensShare"
+    "fixture/DeleteLensShare.yaml"
+
+requestDeleteWorkload :: DeleteWorkload -> TestTree
+requestDeleteWorkload =
+  req
+    "DeleteWorkload"
+    "fixture/DeleteWorkload.yaml"
+
+requestDeleteWorkloadShare :: DeleteWorkloadShare -> TestTree
+requestDeleteWorkloadShare =
+  req
+    "DeleteWorkloadShare"
+    "fixture/DeleteWorkloadShare.yaml"
+
+requestDisassociateLenses :: DisassociateLenses -> TestTree
+requestDisassociateLenses =
+  req
+    "DisassociateLenses"
+    "fixture/DisassociateLenses.yaml"
+
+requestExportLens :: ExportLens -> TestTree
+requestExportLens =
+  req
+    "ExportLens"
+    "fixture/ExportLens.yaml"
+
+requestGetAnswer :: GetAnswer -> TestTree
+requestGetAnswer =
+  req
+    "GetAnswer"
+    "fixture/GetAnswer.yaml"
+
+requestGetLens :: GetLens -> TestTree
+requestGetLens =
+  req
+    "GetLens"
+    "fixture/GetLens.yaml"
+
+requestGetLensReview :: GetLensReview -> TestTree
+requestGetLensReview =
+  req
+    "GetLensReview"
+    "fixture/GetLensReview.yaml"
+
+requestGetLensReviewReport :: GetLensReviewReport -> TestTree
+requestGetLensReviewReport =
+  req
+    "GetLensReviewReport"
+    "fixture/GetLensReviewReport.yaml"
+
+requestGetLensVersionDifference :: GetLensVersionDifference -> TestTree
+requestGetLensVersionDifference =
+  req
+    "GetLensVersionDifference"
+    "fixture/GetLensVersionDifference.yaml"
+
+requestGetMilestone :: GetMilestone -> TestTree
+requestGetMilestone =
+  req
+    "GetMilestone"
+    "fixture/GetMilestone.yaml"
+
+requestGetWorkload :: GetWorkload -> TestTree
+requestGetWorkload =
+  req
+    "GetWorkload"
+    "fixture/GetWorkload.yaml"
+
+requestImportLens :: ImportLens -> TestTree
+requestImportLens =
+  req
+    "ImportLens"
+    "fixture/ImportLens.yaml"
+
+requestListAnswers :: ListAnswers -> TestTree
+requestListAnswers =
+  req
+    "ListAnswers"
+    "fixture/ListAnswers.yaml"
+
+requestListCheckDetails :: ListCheckDetails -> TestTree
+requestListCheckDetails =
+  req
+    "ListCheckDetails"
+    "fixture/ListCheckDetails.yaml"
+
+requestListCheckSummaries :: ListCheckSummaries -> TestTree
+requestListCheckSummaries =
+  req
+    "ListCheckSummaries"
+    "fixture/ListCheckSummaries.yaml"
+
+requestListLensReviewImprovements :: ListLensReviewImprovements -> TestTree
+requestListLensReviewImprovements =
+  req
+    "ListLensReviewImprovements"
+    "fixture/ListLensReviewImprovements.yaml"
+
+requestListLensReviews :: ListLensReviews -> TestTree
+requestListLensReviews =
+  req
+    "ListLensReviews"
+    "fixture/ListLensReviews.yaml"
+
+requestListLensShares :: ListLensShares -> TestTree
+requestListLensShares =
+  req
+    "ListLensShares"
+    "fixture/ListLensShares.yaml"
+
+requestListLenses :: ListLenses -> TestTree
+requestListLenses =
+  req
+    "ListLenses"
+    "fixture/ListLenses.yaml"
+
+requestListMilestones :: ListMilestones -> TestTree
+requestListMilestones =
+  req
+    "ListMilestones"
+    "fixture/ListMilestones.yaml"
+
+requestListNotifications :: ListNotifications -> TestTree
+requestListNotifications =
+  req
+    "ListNotifications"
+    "fixture/ListNotifications.yaml"
+
+requestListShareInvitations :: ListShareInvitations -> TestTree
+requestListShareInvitations =
+  req
+    "ListShareInvitations"
+    "fixture/ListShareInvitations.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestListWorkloadShares :: ListWorkloadShares -> TestTree
+requestListWorkloadShares =
+  req
+    "ListWorkloadShares"
+    "fixture/ListWorkloadShares.yaml"
+
+requestListWorkloads :: ListWorkloads -> TestTree
+requestListWorkloads =
+  req
+    "ListWorkloads"
+    "fixture/ListWorkloads.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateAnswer :: UpdateAnswer -> TestTree
+requestUpdateAnswer =
+  req
+    "UpdateAnswer"
+    "fixture/UpdateAnswer.yaml"
+
+requestUpdateGlobalSettings :: UpdateGlobalSettings -> TestTree
+requestUpdateGlobalSettings =
+  req
+    "UpdateGlobalSettings"
+    "fixture/UpdateGlobalSettings.yaml"
+
+requestUpdateLensReview :: UpdateLensReview -> TestTree
+requestUpdateLensReview =
+  req
+    "UpdateLensReview"
+    "fixture/UpdateLensReview.yaml"
+
+requestUpdateShareInvitation :: UpdateShareInvitation -> TestTree
+requestUpdateShareInvitation =
+  req
+    "UpdateShareInvitation"
+    "fixture/UpdateShareInvitation.yaml"
+
+requestUpdateWorkload :: UpdateWorkload -> TestTree
+requestUpdateWorkload =
+  req
+    "UpdateWorkload"
+    "fixture/UpdateWorkload.yaml"
+
+requestUpdateWorkloadShare :: UpdateWorkloadShare -> TestTree
+requestUpdateWorkloadShare =
+  req
+    "UpdateWorkloadShare"
+    "fixture/UpdateWorkloadShare.yaml"
+
+requestUpgradeLensReview :: UpgradeLensReview -> TestTree
+requestUpgradeLensReview =
+  req
+    "UpgradeLensReview"
+    "fixture/UpgradeLensReview.yaml"
+
+-- Responses
+
+responseAssociateLenses :: AssociateLensesResponse -> TestTree
+responseAssociateLenses =
+  res
+    "AssociateLensesResponse"
+    "fixture/AssociateLensesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateLenses)
+
+responseCreateLensShare :: CreateLensShareResponse -> TestTree
+responseCreateLensShare =
+  res
+    "CreateLensShareResponse"
+    "fixture/CreateLensShareResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLensShare)
+
+responseCreateLensVersion :: CreateLensVersionResponse -> TestTree
+responseCreateLensVersion =
+  res
+    "CreateLensVersionResponse"
+    "fixture/CreateLensVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLensVersion)
+
+responseCreateMilestone :: CreateMilestoneResponse -> TestTree
+responseCreateMilestone =
+  res
+    "CreateMilestoneResponse"
+    "fixture/CreateMilestoneResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMilestone)
+
+responseCreateWorkload :: CreateWorkloadResponse -> TestTree
+responseCreateWorkload =
+  res
+    "CreateWorkloadResponse"
+    "fixture/CreateWorkloadResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateWorkload)
+
+responseCreateWorkloadShare :: CreateWorkloadShareResponse -> TestTree
+responseCreateWorkloadShare =
+  res
+    "CreateWorkloadShareResponse"
+    "fixture/CreateWorkloadShareResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateWorkloadShare)
+
+responseDeleteLens :: DeleteLensResponse -> TestTree
+responseDeleteLens =
+  res
+    "DeleteLensResponse"
+    "fixture/DeleteLensResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLens)
+
+responseDeleteLensShare :: DeleteLensShareResponse -> TestTree
+responseDeleteLensShare =
+  res
+    "DeleteLensShareResponse"
+    "fixture/DeleteLensShareResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLensShare)
+
+responseDeleteWorkload :: DeleteWorkloadResponse -> TestTree
+responseDeleteWorkload =
+  res
+    "DeleteWorkloadResponse"
+    "fixture/DeleteWorkloadResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteWorkload)
+
+responseDeleteWorkloadShare :: DeleteWorkloadShareResponse -> TestTree
+responseDeleteWorkloadShare =
+  res
+    "DeleteWorkloadShareResponse"
+    "fixture/DeleteWorkloadShareResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteWorkloadShare)
+
+responseDisassociateLenses :: DisassociateLensesResponse -> TestTree
+responseDisassociateLenses =
+  res
+    "DisassociateLensesResponse"
+    "fixture/DisassociateLensesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateLenses)
+
+responseExportLens :: ExportLensResponse -> TestTree
+responseExportLens =
+  res
+    "ExportLensResponse"
+    "fixture/ExportLensResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ExportLens)
+
+responseGetAnswer :: GetAnswerResponse -> TestTree
+responseGetAnswer =
+  res
+    "GetAnswerResponse"
+    "fixture/GetAnswerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAnswer)
+
+responseGetLens :: GetLensResponse -> TestTree
+responseGetLens =
+  res
+    "GetLensResponse"
+    "fixture/GetLensResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLens)
+
+responseGetLensReview :: GetLensReviewResponse -> TestTree
+responseGetLensReview =
+  res
+    "GetLensReviewResponse"
+    "fixture/GetLensReviewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLensReview)
+
+responseGetLensReviewReport :: GetLensReviewReportResponse -> TestTree
+responseGetLensReviewReport =
+  res
+    "GetLensReviewReportResponse"
+    "fixture/GetLensReviewReportResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLensReviewReport)
+
+responseGetLensVersionDifference :: GetLensVersionDifferenceResponse -> TestTree
+responseGetLensVersionDifference =
+  res
+    "GetLensVersionDifferenceResponse"
+    "fixture/GetLensVersionDifferenceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLensVersionDifference)
+
+responseGetMilestone :: GetMilestoneResponse -> TestTree
+responseGetMilestone =
+  res
+    "GetMilestoneResponse"
+    "fixture/GetMilestoneResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetMilestone)
+
+responseGetWorkload :: GetWorkloadResponse -> TestTree
+responseGetWorkload =
+  res
+    "GetWorkloadResponse"
+    "fixture/GetWorkloadResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetWorkload)
+
+responseImportLens :: ImportLensResponse -> TestTree
+responseImportLens =
+  res
+    "ImportLensResponse"
+    "fixture/ImportLensResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ImportLens)
+
+responseListAnswers :: ListAnswersResponse -> TestTree
+responseListAnswers =
+  res
+    "ListAnswersResponse"
+    "fixture/ListAnswersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAnswers)
+
+responseListCheckDetails :: ListCheckDetailsResponse -> TestTree
+responseListCheckDetails =
+  res
+    "ListCheckDetailsResponse"
+    "fixture/ListCheckDetailsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCheckDetails)
+
+responseListCheckSummaries :: ListCheckSummariesResponse -> TestTree
+responseListCheckSummaries =
+  res
+    "ListCheckSummariesResponse"
+    "fixture/ListCheckSummariesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCheckSummaries)
+
+responseListLensReviewImprovements :: ListLensReviewImprovementsResponse -> TestTree
+responseListLensReviewImprovements =
+  res
+    "ListLensReviewImprovementsResponse"
+    "fixture/ListLensReviewImprovementsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLensReviewImprovements)
+
+responseListLensReviews :: ListLensReviewsResponse -> TestTree
+responseListLensReviews =
+  res
+    "ListLensReviewsResponse"
+    "fixture/ListLensReviewsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLensReviews)
+
+responseListLensShares :: ListLensSharesResponse -> TestTree
+responseListLensShares =
+  res
+    "ListLensSharesResponse"
+    "fixture/ListLensSharesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLensShares)
+
+responseListLenses :: ListLensesResponse -> TestTree
+responseListLenses =
+  res
+    "ListLensesResponse"
+    "fixture/ListLensesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLenses)
+
+responseListMilestones :: ListMilestonesResponse -> TestTree
+responseListMilestones =
+  res
+    "ListMilestonesResponse"
+    "fixture/ListMilestonesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMilestones)
+
+responseListNotifications :: ListNotificationsResponse -> TestTree
+responseListNotifications =
+  res
+    "ListNotificationsResponse"
+    "fixture/ListNotificationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNotifications)
+
+responseListShareInvitations :: ListShareInvitationsResponse -> TestTree
+responseListShareInvitations =
+  res
+    "ListShareInvitationsResponse"
+    "fixture/ListShareInvitationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListShareInvitations)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseListWorkloadShares :: ListWorkloadSharesResponse -> TestTree
+responseListWorkloadShares =
+  res
+    "ListWorkloadSharesResponse"
+    "fixture/ListWorkloadSharesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListWorkloadShares)
+
+responseListWorkloads :: ListWorkloadsResponse -> TestTree
+responseListWorkloads =
+  res
+    "ListWorkloadsResponse"
+    "fixture/ListWorkloadsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListWorkloads)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateAnswer :: UpdateAnswerResponse -> TestTree
+responseUpdateAnswer =
+  res
+    "UpdateAnswerResponse"
+    "fixture/UpdateAnswerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAnswer)
+
+responseUpdateGlobalSettings :: UpdateGlobalSettingsResponse -> TestTree
+responseUpdateGlobalSettings =
+  res
+    "UpdateGlobalSettingsResponse"
+    "fixture/UpdateGlobalSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateGlobalSettings)
+
+responseUpdateLensReview :: UpdateLensReviewResponse -> TestTree
+responseUpdateLensReview =
+  res
+    "UpdateLensReviewResponse"
+    "fixture/UpdateLensReviewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateLensReview)
+
+responseUpdateShareInvitation :: UpdateShareInvitationResponse -> TestTree
+responseUpdateShareInvitation =
+  res
+    "UpdateShareInvitationResponse"
+    "fixture/UpdateShareInvitationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateShareInvitation)
+
+responseUpdateWorkload :: UpdateWorkloadResponse -> TestTree
+responseUpdateWorkload =
+  res
+    "UpdateWorkloadResponse"
+    "fixture/UpdateWorkloadResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateWorkload)
+
+responseUpdateWorkloadShare :: UpdateWorkloadShareResponse -> TestTree
+responseUpdateWorkloadShare =
+  res
+    "UpdateWorkloadShareResponse"
+    "fixture/UpdateWorkloadShareResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateWorkloadShare)
+
+responseUpgradeLensReview :: UpgradeLensReviewResponse -> TestTree
+responseUpgradeLensReview =
+  res
+    "UpgradeLensReviewResponse"
+    "fixture/UpgradeLensReviewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpgradeLensReview)
diff --git a/test/Test/Amazonka/WellArchitected.hs b/test/Test/Amazonka/WellArchitected.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/WellArchitected.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.WellArchitected
+-- 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.WellArchitected
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/WellArchitected/Internal.hs b/test/Test/Amazonka/WellArchitected/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/WellArchitected/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.WellArchitected.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.WellArchitected.Internal where
