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 QuickSight SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2018-04-01@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-quicksight)
+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.QuickSight](http://hackage.haskell.org/package/amazonka-quicksight/docs/Amazonka-QuickSight.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-quicksight` 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-quicksight.cabal b/amazonka-quicksight.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-quicksight.cabal
@@ -0,0 +1,942 @@
+cabal-version:      2.2
+name:               amazonka-quicksight
+version:            2.0
+synopsis:           Amazon QuickSight SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2018-04-01@ 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.QuickSight.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.QuickSight" 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-quicksight
+
+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.QuickSight
+    Amazonka.QuickSight.CancelIngestion
+    Amazonka.QuickSight.CreateAccountCustomization
+    Amazonka.QuickSight.CreateAccountSubscription
+    Amazonka.QuickSight.CreateAnalysis
+    Amazonka.QuickSight.CreateDashboard
+    Amazonka.QuickSight.CreateDataSet
+    Amazonka.QuickSight.CreateDataSource
+    Amazonka.QuickSight.CreateFolder
+    Amazonka.QuickSight.CreateFolderMembership
+    Amazonka.QuickSight.CreateGroup
+    Amazonka.QuickSight.CreateGroupMembership
+    Amazonka.QuickSight.CreateIAMPolicyAssignment
+    Amazonka.QuickSight.CreateIngestion
+    Amazonka.QuickSight.CreateNamespace
+    Amazonka.QuickSight.CreateTemplate
+    Amazonka.QuickSight.CreateTemplateAlias
+    Amazonka.QuickSight.CreateTheme
+    Amazonka.QuickSight.CreateThemeAlias
+    Amazonka.QuickSight.DeleteAccountCustomization
+    Amazonka.QuickSight.DeleteAccountSubscription
+    Amazonka.QuickSight.DeleteAnalysis
+    Amazonka.QuickSight.DeleteDashboard
+    Amazonka.QuickSight.DeleteDataSet
+    Amazonka.QuickSight.DeleteDataSource
+    Amazonka.QuickSight.DeleteFolder
+    Amazonka.QuickSight.DeleteFolderMembership
+    Amazonka.QuickSight.DeleteGroup
+    Amazonka.QuickSight.DeleteGroupMembership
+    Amazonka.QuickSight.DeleteIAMPolicyAssignment
+    Amazonka.QuickSight.DeleteNamespace
+    Amazonka.QuickSight.DeleteTemplate
+    Amazonka.QuickSight.DeleteTemplateAlias
+    Amazonka.QuickSight.DeleteTheme
+    Amazonka.QuickSight.DeleteThemeAlias
+    Amazonka.QuickSight.DeleteUser
+    Amazonka.QuickSight.DeleteUserByPrincipalId
+    Amazonka.QuickSight.DescribeAccountCustomization
+    Amazonka.QuickSight.DescribeAccountSettings
+    Amazonka.QuickSight.DescribeAccountSubscription
+    Amazonka.QuickSight.DescribeAnalysis
+    Amazonka.QuickSight.DescribeAnalysisDefinition
+    Amazonka.QuickSight.DescribeAnalysisPermissions
+    Amazonka.QuickSight.DescribeDashboard
+    Amazonka.QuickSight.DescribeDashboardDefinition
+    Amazonka.QuickSight.DescribeDashboardPermissions
+    Amazonka.QuickSight.DescribeDataSet
+    Amazonka.QuickSight.DescribeDataSetPermissions
+    Amazonka.QuickSight.DescribeDataSource
+    Amazonka.QuickSight.DescribeDataSourcePermissions
+    Amazonka.QuickSight.DescribeFolder
+    Amazonka.QuickSight.DescribeFolderPermissions
+    Amazonka.QuickSight.DescribeFolderResolvedPermissions
+    Amazonka.QuickSight.DescribeGroup
+    Amazonka.QuickSight.DescribeGroupMembership
+    Amazonka.QuickSight.DescribeIAMPolicyAssignment
+    Amazonka.QuickSight.DescribeIngestion
+    Amazonka.QuickSight.DescribeIpRestriction
+    Amazonka.QuickSight.DescribeNamespace
+    Amazonka.QuickSight.DescribeTemplate
+    Amazonka.QuickSight.DescribeTemplateAlias
+    Amazonka.QuickSight.DescribeTemplateDefinition
+    Amazonka.QuickSight.DescribeTemplatePermissions
+    Amazonka.QuickSight.DescribeTheme
+    Amazonka.QuickSight.DescribeThemeAlias
+    Amazonka.QuickSight.DescribeThemePermissions
+    Amazonka.QuickSight.DescribeUser
+    Amazonka.QuickSight.GenerateEmbedUrlForAnonymousUser
+    Amazonka.QuickSight.GenerateEmbedUrlForRegisteredUser
+    Amazonka.QuickSight.GetDashboardEmbedUrl
+    Amazonka.QuickSight.GetSessionEmbedUrl
+    Amazonka.QuickSight.Lens
+    Amazonka.QuickSight.ListAnalyses
+    Amazonka.QuickSight.ListDashboards
+    Amazonka.QuickSight.ListDashboardVersions
+    Amazonka.QuickSight.ListDataSets
+    Amazonka.QuickSight.ListDataSources
+    Amazonka.QuickSight.ListFolderMembers
+    Amazonka.QuickSight.ListFolders
+    Amazonka.QuickSight.ListGroupMemberships
+    Amazonka.QuickSight.ListGroups
+    Amazonka.QuickSight.ListIAMPolicyAssignments
+    Amazonka.QuickSight.ListIAMPolicyAssignmentsForUser
+    Amazonka.QuickSight.ListIngestions
+    Amazonka.QuickSight.ListNamespaces
+    Amazonka.QuickSight.ListTagsForResource
+    Amazonka.QuickSight.ListTemplateAliases
+    Amazonka.QuickSight.ListTemplates
+    Amazonka.QuickSight.ListTemplateVersions
+    Amazonka.QuickSight.ListThemeAliases
+    Amazonka.QuickSight.ListThemes
+    Amazonka.QuickSight.ListThemeVersions
+    Amazonka.QuickSight.ListUserGroups
+    Amazonka.QuickSight.ListUsers
+    Amazonka.QuickSight.RegisterUser
+    Amazonka.QuickSight.RestoreAnalysis
+    Amazonka.QuickSight.SearchAnalyses
+    Amazonka.QuickSight.SearchDashboards
+    Amazonka.QuickSight.SearchDataSets
+    Amazonka.QuickSight.SearchDataSources
+    Amazonka.QuickSight.SearchFolders
+    Amazonka.QuickSight.SearchGroups
+    Amazonka.QuickSight.TagResource
+    Amazonka.QuickSight.Types
+    Amazonka.QuickSight.Types.AccountCustomization
+    Amazonka.QuickSight.Types.AccountInfo
+    Amazonka.QuickSight.Types.AccountSettings
+    Amazonka.QuickSight.Types.ActiveIAMPolicyAssignment
+    Amazonka.QuickSight.Types.AdHocFilteringOption
+    Amazonka.QuickSight.Types.AggregationFunction
+    Amazonka.QuickSight.Types.AggregationSortConfiguration
+    Amazonka.QuickSight.Types.AmazonElasticsearchParameters
+    Amazonka.QuickSight.Types.AmazonOpenSearchParameters
+    Amazonka.QuickSight.Types.Analysis
+    Amazonka.QuickSight.Types.AnalysisDefaults
+    Amazonka.QuickSight.Types.AnalysisDefinition
+    Amazonka.QuickSight.Types.AnalysisError
+    Amazonka.QuickSight.Types.AnalysisErrorType
+    Amazonka.QuickSight.Types.AnalysisFilterAttribute
+    Amazonka.QuickSight.Types.AnalysisSearchFilter
+    Amazonka.QuickSight.Types.AnalysisSourceEntity
+    Amazonka.QuickSight.Types.AnalysisSourceTemplate
+    Amazonka.QuickSight.Types.AnalysisSummary
+    Amazonka.QuickSight.Types.AnchorDateConfiguration
+    Amazonka.QuickSight.Types.AnchorOption
+    Amazonka.QuickSight.Types.AnonymousUserDashboardEmbeddingConfiguration
+    Amazonka.QuickSight.Types.AnonymousUserDashboardVisualEmbeddingConfiguration
+    Amazonka.QuickSight.Types.AnonymousUserEmbeddingExperienceConfiguration
+    Amazonka.QuickSight.Types.AnonymousUserQSearchBarEmbeddingConfiguration
+    Amazonka.QuickSight.Types.ArcAxisConfiguration
+    Amazonka.QuickSight.Types.ArcAxisDisplayRange
+    Amazonka.QuickSight.Types.ArcConfiguration
+    Amazonka.QuickSight.Types.ArcOptions
+    Amazonka.QuickSight.Types.ArcThickness
+    Amazonka.QuickSight.Types.ArcThicknessOptions
+    Amazonka.QuickSight.Types.AssignmentStatus
+    Amazonka.QuickSight.Types.AthenaParameters
+    Amazonka.QuickSight.Types.AuroraParameters
+    Amazonka.QuickSight.Types.AuroraPostgreSqlParameters
+    Amazonka.QuickSight.Types.AuthenticationMethodOption
+    Amazonka.QuickSight.Types.AwsIotAnalyticsParameters
+    Amazonka.QuickSight.Types.AxisBinding
+    Amazonka.QuickSight.Types.AxisDataOptions
+    Amazonka.QuickSight.Types.AxisDisplayDataDrivenRange
+    Amazonka.QuickSight.Types.AxisDisplayMinMaxRange
+    Amazonka.QuickSight.Types.AxisDisplayOptions
+    Amazonka.QuickSight.Types.AxisDisplayRange
+    Amazonka.QuickSight.Types.AxisLabelOptions
+    Amazonka.QuickSight.Types.AxisLabelReferenceOptions
+    Amazonka.QuickSight.Types.AxisLinearScale
+    Amazonka.QuickSight.Types.AxisLogarithmicScale
+    Amazonka.QuickSight.Types.AxisScale
+    Amazonka.QuickSight.Types.AxisTickLabelOptions
+    Amazonka.QuickSight.Types.BarChartAggregatedFieldWells
+    Amazonka.QuickSight.Types.BarChartConfiguration
+    Amazonka.QuickSight.Types.BarChartFieldWells
+    Amazonka.QuickSight.Types.BarChartOrientation
+    Amazonka.QuickSight.Types.BarChartSortConfiguration
+    Amazonka.QuickSight.Types.BarChartVisual
+    Amazonka.QuickSight.Types.BarsArrangement
+    Amazonka.QuickSight.Types.BaseMapStyleType
+    Amazonka.QuickSight.Types.BinCountOptions
+    Amazonka.QuickSight.Types.BinWidthOptions
+    Amazonka.QuickSight.Types.BodySectionConfiguration
+    Amazonka.QuickSight.Types.BodySectionContent
+    Amazonka.QuickSight.Types.BorderStyle
+    Amazonka.QuickSight.Types.BoxPlotAggregatedFieldWells
+    Amazonka.QuickSight.Types.BoxPlotChartConfiguration
+    Amazonka.QuickSight.Types.BoxPlotFieldWells
+    Amazonka.QuickSight.Types.BoxPlotFillStyle
+    Amazonka.QuickSight.Types.BoxPlotOptions
+    Amazonka.QuickSight.Types.BoxPlotSortConfiguration
+    Amazonka.QuickSight.Types.BoxPlotStyleOptions
+    Amazonka.QuickSight.Types.BoxPlotVisual
+    Amazonka.QuickSight.Types.CalculatedColumn
+    Amazonka.QuickSight.Types.CalculatedField
+    Amazonka.QuickSight.Types.CalculatedMeasureField
+    Amazonka.QuickSight.Types.CascadingControlConfiguration
+    Amazonka.QuickSight.Types.CascadingControlSource
+    Amazonka.QuickSight.Types.CastColumnTypeOperation
+    Amazonka.QuickSight.Types.CategoricalAggregationFunction
+    Amazonka.QuickSight.Types.CategoricalDimensionField
+    Amazonka.QuickSight.Types.CategoricalMeasureField
+    Amazonka.QuickSight.Types.CategoryDrillDownFilter
+    Amazonka.QuickSight.Types.CategoryFilter
+    Amazonka.QuickSight.Types.CategoryFilterConfiguration
+    Amazonka.QuickSight.Types.CategoryFilterMatchOperator
+    Amazonka.QuickSight.Types.CategoryFilterSelectAllOptions
+    Amazonka.QuickSight.Types.ChartAxisLabelOptions
+    Amazonka.QuickSight.Types.ClusterMarker
+    Amazonka.QuickSight.Types.ClusterMarkerConfiguration
+    Amazonka.QuickSight.Types.ColorFillType
+    Amazonka.QuickSight.Types.ColorScale
+    Amazonka.QuickSight.Types.ColumnConfiguration
+    Amazonka.QuickSight.Types.ColumnDataType
+    Amazonka.QuickSight.Types.ColumnDescription
+    Amazonka.QuickSight.Types.ColumnGroup
+    Amazonka.QuickSight.Types.ColumnGroupColumnSchema
+    Amazonka.QuickSight.Types.ColumnGroupSchema
+    Amazonka.QuickSight.Types.ColumnHierarchy
+    Amazonka.QuickSight.Types.ColumnIdentifier
+    Amazonka.QuickSight.Types.ColumnLevelPermissionRule
+    Amazonka.QuickSight.Types.ColumnRole
+    Amazonka.QuickSight.Types.ColumnSchema
+    Amazonka.QuickSight.Types.ColumnSort
+    Amazonka.QuickSight.Types.ColumnTag
+    Amazonka.QuickSight.Types.ColumnTagName
+    Amazonka.QuickSight.Types.ColumnTooltipItem
+    Amazonka.QuickSight.Types.ComboChartAggregatedFieldWells
+    Amazonka.QuickSight.Types.ComboChartConfiguration
+    Amazonka.QuickSight.Types.ComboChartFieldWells
+    Amazonka.QuickSight.Types.ComboChartSortConfiguration
+    Amazonka.QuickSight.Types.ComboChartVisual
+    Amazonka.QuickSight.Types.ComparisonConfiguration
+    Amazonka.QuickSight.Types.ComparisonFormatConfiguration
+    Amazonka.QuickSight.Types.ComparisonMethod
+    Amazonka.QuickSight.Types.Computation
+    Amazonka.QuickSight.Types.ConditionalFormattingColor
+    Amazonka.QuickSight.Types.ConditionalFormattingCustomIconCondition
+    Amazonka.QuickSight.Types.ConditionalFormattingCustomIconOptions
+    Amazonka.QuickSight.Types.ConditionalFormattingGradientColor
+    Amazonka.QuickSight.Types.ConditionalFormattingIcon
+    Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayConfiguration
+    Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayOption
+    Amazonka.QuickSight.Types.ConditionalFormattingIconSet
+    Amazonka.QuickSight.Types.ConditionalFormattingIconSetType
+    Amazonka.QuickSight.Types.ConditionalFormattingSolidColor
+    Amazonka.QuickSight.Types.ContributionAnalysisDefault
+    Amazonka.QuickSight.Types.CreateColumnsOperation
+    Amazonka.QuickSight.Types.CredentialPair
+    Amazonka.QuickSight.Types.CrossDatasetTypes
+    Amazonka.QuickSight.Types.CurrencyDisplayFormatConfiguration
+    Amazonka.QuickSight.Types.CustomActionFilterOperation
+    Amazonka.QuickSight.Types.CustomActionNavigationOperation
+    Amazonka.QuickSight.Types.CustomActionSetParametersOperation
+    Amazonka.QuickSight.Types.CustomActionURLOperation
+    Amazonka.QuickSight.Types.CustomContentConfiguration
+    Amazonka.QuickSight.Types.CustomContentImageScalingConfiguration
+    Amazonka.QuickSight.Types.CustomContentType
+    Amazonka.QuickSight.Types.CustomContentVisual
+    Amazonka.QuickSight.Types.CustomFilterConfiguration
+    Amazonka.QuickSight.Types.CustomFilterListConfiguration
+    Amazonka.QuickSight.Types.CustomNarrativeOptions
+    Amazonka.QuickSight.Types.CustomParameterValues
+    Amazonka.QuickSight.Types.CustomSql
+    Amazonka.QuickSight.Types.CustomValuesConfiguration
+    Amazonka.QuickSight.Types.Dashboard
+    Amazonka.QuickSight.Types.DashboardBehavior
+    Amazonka.QuickSight.Types.DashboardError
+    Amazonka.QuickSight.Types.DashboardErrorType
+    Amazonka.QuickSight.Types.DashboardFilterAttribute
+    Amazonka.QuickSight.Types.DashboardPublishOptions
+    Amazonka.QuickSight.Types.DashboardSearchFilter
+    Amazonka.QuickSight.Types.DashboardSourceEntity
+    Amazonka.QuickSight.Types.DashboardSourceTemplate
+    Amazonka.QuickSight.Types.DashboardSummary
+    Amazonka.QuickSight.Types.DashboardUIState
+    Amazonka.QuickSight.Types.DashboardVersion
+    Amazonka.QuickSight.Types.DashboardVersionDefinition
+    Amazonka.QuickSight.Types.DashboardVersionSummary
+    Amazonka.QuickSight.Types.DashboardVisualId
+    Amazonka.QuickSight.Types.DashboardVisualPublishOptions
+    Amazonka.QuickSight.Types.DatabricksParameters
+    Amazonka.QuickSight.Types.DataColor
+    Amazonka.QuickSight.Types.DataColorPalette
+    Amazonka.QuickSight.Types.DataFieldSeriesItem
+    Amazonka.QuickSight.Types.DataLabelContent
+    Amazonka.QuickSight.Types.DataLabelOptions
+    Amazonka.QuickSight.Types.DataLabelOverlap
+    Amazonka.QuickSight.Types.DataLabelPosition
+    Amazonka.QuickSight.Types.DataLabelType
+    Amazonka.QuickSight.Types.DataPathColor
+    Amazonka.QuickSight.Types.DataPathLabelType
+    Amazonka.QuickSight.Types.DataPathSort
+    Amazonka.QuickSight.Types.DataPathValue
+    Amazonka.QuickSight.Types.DataSet
+    Amazonka.QuickSight.Types.DataSetConfiguration
+    Amazonka.QuickSight.Types.DataSetFilterAttribute
+    Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
+    Amazonka.QuickSight.Types.DataSetImportMode
+    Amazonka.QuickSight.Types.DataSetReference
+    Amazonka.QuickSight.Types.DataSetSchema
+    Amazonka.QuickSight.Types.DataSetSearchFilter
+    Amazonka.QuickSight.Types.DataSetSummary
+    Amazonka.QuickSight.Types.DataSetUsageConfiguration
+    Amazonka.QuickSight.Types.DataSource
+    Amazonka.QuickSight.Types.DataSourceCredentials
+    Amazonka.QuickSight.Types.DataSourceErrorInfo
+    Amazonka.QuickSight.Types.DataSourceErrorInfoType
+    Amazonka.QuickSight.Types.DataSourceFilterAttribute
+    Amazonka.QuickSight.Types.DataSourceParameters
+    Amazonka.QuickSight.Types.DataSourceSearchFilter
+    Amazonka.QuickSight.Types.DataSourceSummary
+    Amazonka.QuickSight.Types.DataSourceType
+    Amazonka.QuickSight.Types.DateAggregationFunction
+    Amazonka.QuickSight.Types.DateAxisOptions
+    Amazonka.QuickSight.Types.DateDimensionField
+    Amazonka.QuickSight.Types.DateMeasureField
+    Amazonka.QuickSight.Types.DateTimeDefaultValues
+    Amazonka.QuickSight.Types.DateTimeFormatConfiguration
+    Amazonka.QuickSight.Types.DateTimeHierarchy
+    Amazonka.QuickSight.Types.DateTimeParameter
+    Amazonka.QuickSight.Types.DateTimeParameterDeclaration
+    Amazonka.QuickSight.Types.DateTimePickerControlDisplayOptions
+    Amazonka.QuickSight.Types.DateTimeValueWhenUnsetConfiguration
+    Amazonka.QuickSight.Types.DecimalDefaultValues
+    Amazonka.QuickSight.Types.DecimalParameter
+    Amazonka.QuickSight.Types.DecimalParameterDeclaration
+    Amazonka.QuickSight.Types.DecimalPlacesConfiguration
+    Amazonka.QuickSight.Types.DecimalValueWhenUnsetConfiguration
+    Amazonka.QuickSight.Types.DefaultFreeFormLayoutConfiguration
+    Amazonka.QuickSight.Types.DefaultGridLayoutConfiguration
+    Amazonka.QuickSight.Types.DefaultInteractiveLayoutConfiguration
+    Amazonka.QuickSight.Types.DefaultNewSheetConfiguration
+    Amazonka.QuickSight.Types.DefaultPaginatedLayoutConfiguration
+    Amazonka.QuickSight.Types.DefaultSectionBasedLayoutConfiguration
+    Amazonka.QuickSight.Types.DestinationParameterValueConfiguration
+    Amazonka.QuickSight.Types.DimensionField
+    Amazonka.QuickSight.Types.DonutCenterOptions
+    Amazonka.QuickSight.Types.DonutOptions
+    Amazonka.QuickSight.Types.DrillDownFilter
+    Amazonka.QuickSight.Types.DropDownControlDisplayOptions
+    Amazonka.QuickSight.Types.DynamicDefaultValue
+    Amazonka.QuickSight.Types.Edition
+    Amazonka.QuickSight.Types.EmbeddingIdentityType
+    Amazonka.QuickSight.Types.EmptyVisual
+    Amazonka.QuickSight.Types.Entity
+    Amazonka.QuickSight.Types.ErrorInfo
+    Amazonka.QuickSight.Types.ExasolParameters
+    Amazonka.QuickSight.Types.ExcludePeriodConfiguration
+    Amazonka.QuickSight.Types.ExplicitHierarchy
+    Amazonka.QuickSight.Types.ExportHiddenFieldsOption
+    Amazonka.QuickSight.Types.ExportToCSVOption
+    Amazonka.QuickSight.Types.FieldBasedTooltip
+    Amazonka.QuickSight.Types.FieldFolder
+    Amazonka.QuickSight.Types.FieldLabelType
+    Amazonka.QuickSight.Types.FieldSeriesItem
+    Amazonka.QuickSight.Types.FieldSort
+    Amazonka.QuickSight.Types.FieldSortOptions
+    Amazonka.QuickSight.Types.FieldTooltipItem
+    Amazonka.QuickSight.Types.FileFormat
+    Amazonka.QuickSight.Types.FilledMapAggregatedFieldWells
+    Amazonka.QuickSight.Types.FilledMapConditionalFormatting
+    Amazonka.QuickSight.Types.FilledMapConditionalFormattingOption
+    Amazonka.QuickSight.Types.FilledMapConfiguration
+    Amazonka.QuickSight.Types.FilledMapFieldWells
+    Amazonka.QuickSight.Types.FilledMapShapeConditionalFormatting
+    Amazonka.QuickSight.Types.FilledMapSortConfiguration
+    Amazonka.QuickSight.Types.FilledMapVisual
+    Amazonka.QuickSight.Types.Filter
+    Amazonka.QuickSight.Types.FilterControl
+    Amazonka.QuickSight.Types.FilterDateTimePickerControl
+    Amazonka.QuickSight.Types.FilterDropDownControl
+    Amazonka.QuickSight.Types.FilterGroup
+    Amazonka.QuickSight.Types.FilterListConfiguration
+    Amazonka.QuickSight.Types.FilterListControl
+    Amazonka.QuickSight.Types.FilterNullOption
+    Amazonka.QuickSight.Types.FilterOperation
+    Amazonka.QuickSight.Types.FilterOperationSelectedFieldsConfiguration
+    Amazonka.QuickSight.Types.FilterOperationTargetVisualsConfiguration
+    Amazonka.QuickSight.Types.FilterOperator
+    Amazonka.QuickSight.Types.FilterRelativeDateTimeControl
+    Amazonka.QuickSight.Types.FilterScopeConfiguration
+    Amazonka.QuickSight.Types.FilterSelectableValues
+    Amazonka.QuickSight.Types.FilterSliderControl
+    Amazonka.QuickSight.Types.FilterTextAreaControl
+    Amazonka.QuickSight.Types.FilterTextFieldControl
+    Amazonka.QuickSight.Types.FilterVisualScope
+    Amazonka.QuickSight.Types.Folder
+    Amazonka.QuickSight.Types.FolderFilterAttribute
+    Amazonka.QuickSight.Types.FolderMember
+    Amazonka.QuickSight.Types.FolderSearchFilter
+    Amazonka.QuickSight.Types.FolderSummary
+    Amazonka.QuickSight.Types.FolderType
+    Amazonka.QuickSight.Types.Font
+    Amazonka.QuickSight.Types.FontConfiguration
+    Amazonka.QuickSight.Types.FontDecoration
+    Amazonka.QuickSight.Types.FontSize
+    Amazonka.QuickSight.Types.FontStyle
+    Amazonka.QuickSight.Types.FontWeight
+    Amazonka.QuickSight.Types.FontWeightName
+    Amazonka.QuickSight.Types.ForecastComputation
+    Amazonka.QuickSight.Types.ForecastComputationSeasonality
+    Amazonka.QuickSight.Types.ForecastConfiguration
+    Amazonka.QuickSight.Types.ForecastScenario
+    Amazonka.QuickSight.Types.FormatConfiguration
+    Amazonka.QuickSight.Types.FreeFormLayoutCanvasSizeOptions
+    Amazonka.QuickSight.Types.FreeFormLayoutConfiguration
+    Amazonka.QuickSight.Types.FreeFormLayoutElement
+    Amazonka.QuickSight.Types.FreeFormLayoutElementBackgroundStyle
+    Amazonka.QuickSight.Types.FreeFormLayoutElementBorderStyle
+    Amazonka.QuickSight.Types.FreeFormLayoutScreenCanvasSizeOptions
+    Amazonka.QuickSight.Types.FreeFormSectionLayoutConfiguration
+    Amazonka.QuickSight.Types.FunnelChartAggregatedFieldWells
+    Amazonka.QuickSight.Types.FunnelChartConfiguration
+    Amazonka.QuickSight.Types.FunnelChartDataLabelOptions
+    Amazonka.QuickSight.Types.FunnelChartFieldWells
+    Amazonka.QuickSight.Types.FunnelChartMeasureDataLabelStyle
+    Amazonka.QuickSight.Types.FunnelChartSortConfiguration
+    Amazonka.QuickSight.Types.FunnelChartVisual
+    Amazonka.QuickSight.Types.GaugeChartArcConditionalFormatting
+    Amazonka.QuickSight.Types.GaugeChartConditionalFormatting
+    Amazonka.QuickSight.Types.GaugeChartConditionalFormattingOption
+    Amazonka.QuickSight.Types.GaugeChartConfiguration
+    Amazonka.QuickSight.Types.GaugeChartFieldWells
+    Amazonka.QuickSight.Types.GaugeChartOptions
+    Amazonka.QuickSight.Types.GaugeChartPrimaryValueConditionalFormatting
+    Amazonka.QuickSight.Types.GaugeChartVisual
+    Amazonka.QuickSight.Types.GeoSpatialColumnGroup
+    Amazonka.QuickSight.Types.GeospatialCoordinateBounds
+    Amazonka.QuickSight.Types.GeoSpatialCountryCode
+    Amazonka.QuickSight.Types.GeoSpatialDataRole
+    Amazonka.QuickSight.Types.GeospatialMapAggregatedFieldWells
+    Amazonka.QuickSight.Types.GeospatialMapConfiguration
+    Amazonka.QuickSight.Types.GeospatialMapFieldWells
+    Amazonka.QuickSight.Types.GeospatialMapStyleOptions
+    Amazonka.QuickSight.Types.GeospatialMapVisual
+    Amazonka.QuickSight.Types.GeospatialPointStyleOptions
+    Amazonka.QuickSight.Types.GeospatialSelectedPointStyle
+    Amazonka.QuickSight.Types.GeospatialWindowOptions
+    Amazonka.QuickSight.Types.GlobalTableBorderOptions
+    Amazonka.QuickSight.Types.GradientColor
+    Amazonka.QuickSight.Types.GradientStop
+    Amazonka.QuickSight.Types.GridLayoutCanvasSizeOptions
+    Amazonka.QuickSight.Types.GridLayoutConfiguration
+    Amazonka.QuickSight.Types.GridLayoutElement
+    Amazonka.QuickSight.Types.GridLayoutScreenCanvasSizeOptions
+    Amazonka.QuickSight.Types.Group
+    Amazonka.QuickSight.Types.GroupFilterAttribute
+    Amazonka.QuickSight.Types.GroupFilterOperator
+    Amazonka.QuickSight.Types.GroupMember
+    Amazonka.QuickSight.Types.GroupSearchFilter
+    Amazonka.QuickSight.Types.GrowthRateComputation
+    Amazonka.QuickSight.Types.GutterStyle
+    Amazonka.QuickSight.Types.HeaderFooterSectionConfiguration
+    Amazonka.QuickSight.Types.HeatMapAggregatedFieldWells
+    Amazonka.QuickSight.Types.HeatMapConfiguration
+    Amazonka.QuickSight.Types.HeatMapFieldWells
+    Amazonka.QuickSight.Types.HeatMapSortConfiguration
+    Amazonka.QuickSight.Types.HeatMapVisual
+    Amazonka.QuickSight.Types.HistogramAggregatedFieldWells
+    Amazonka.QuickSight.Types.HistogramBinOptions
+    Amazonka.QuickSight.Types.HistogramBinType
+    Amazonka.QuickSight.Types.HistogramConfiguration
+    Amazonka.QuickSight.Types.HistogramFieldWells
+    Amazonka.QuickSight.Types.HistogramVisual
+    Amazonka.QuickSight.Types.HorizontalTextAlignment
+    Amazonka.QuickSight.Types.IAMPolicyAssignment
+    Amazonka.QuickSight.Types.IAMPolicyAssignmentSummary
+    Amazonka.QuickSight.Types.Icon
+    Amazonka.QuickSight.Types.IdentityStore
+    Amazonka.QuickSight.Types.IdentityType
+    Amazonka.QuickSight.Types.Ingestion
+    Amazonka.QuickSight.Types.IngestionErrorType
+    Amazonka.QuickSight.Types.IngestionRequestSource
+    Amazonka.QuickSight.Types.IngestionRequestType
+    Amazonka.QuickSight.Types.IngestionStatus
+    Amazonka.QuickSight.Types.IngestionType
+    Amazonka.QuickSight.Types.InputColumn
+    Amazonka.QuickSight.Types.InputColumnDataType
+    Amazonka.QuickSight.Types.InsightConfiguration
+    Amazonka.QuickSight.Types.InsightVisual
+    Amazonka.QuickSight.Types.IntegerDefaultValues
+    Amazonka.QuickSight.Types.IntegerParameter
+    Amazonka.QuickSight.Types.IntegerParameterDeclaration
+    Amazonka.QuickSight.Types.IntegerValueWhenUnsetConfiguration
+    Amazonka.QuickSight.Types.ItemsLimitConfiguration
+    Amazonka.QuickSight.Types.JiraParameters
+    Amazonka.QuickSight.Types.JoinInstruction
+    Amazonka.QuickSight.Types.JoinKeyProperties
+    Amazonka.QuickSight.Types.JoinType
+    Amazonka.QuickSight.Types.KPIConditionalFormatting
+    Amazonka.QuickSight.Types.KPIConditionalFormattingOption
+    Amazonka.QuickSight.Types.KPIConfiguration
+    Amazonka.QuickSight.Types.KPIFieldWells
+    Amazonka.QuickSight.Types.KPIOptions
+    Amazonka.QuickSight.Types.KPIPrimaryValueConditionalFormatting
+    Amazonka.QuickSight.Types.KPIProgressBarConditionalFormatting
+    Amazonka.QuickSight.Types.KPISortConfiguration
+    Amazonka.QuickSight.Types.KPIVisual
+    Amazonka.QuickSight.Types.LabelOptions
+    Amazonka.QuickSight.Types.Layout
+    Amazonka.QuickSight.Types.LayoutConfiguration
+    Amazonka.QuickSight.Types.LayoutElementType
+    Amazonka.QuickSight.Types.LegendOptions
+    Amazonka.QuickSight.Types.LegendPosition
+    Amazonka.QuickSight.Types.LineChartAggregatedFieldWells
+    Amazonka.QuickSight.Types.LineChartConfiguration
+    Amazonka.QuickSight.Types.LineChartDefaultSeriesSettings
+    Amazonka.QuickSight.Types.LineChartFieldWells
+    Amazonka.QuickSight.Types.LineChartLineStyle
+    Amazonka.QuickSight.Types.LineChartLineStyleSettings
+    Amazonka.QuickSight.Types.LineChartMarkerShape
+    Amazonka.QuickSight.Types.LineChartMarkerStyleSettings
+    Amazonka.QuickSight.Types.LineChartSeriesSettings
+    Amazonka.QuickSight.Types.LineChartSortConfiguration
+    Amazonka.QuickSight.Types.LineChartType
+    Amazonka.QuickSight.Types.LineChartVisual
+    Amazonka.QuickSight.Types.LineInterpolation
+    Amazonka.QuickSight.Types.LineSeriesAxisDisplayOptions
+    Amazonka.QuickSight.Types.LinkSharingConfiguration
+    Amazonka.QuickSight.Types.ListControlDisplayOptions
+    Amazonka.QuickSight.Types.ListControlSearchOptions
+    Amazonka.QuickSight.Types.ListControlSelectAllOptions
+    Amazonka.QuickSight.Types.LoadingAnimation
+    Amazonka.QuickSight.Types.LocalNavigationConfiguration
+    Amazonka.QuickSight.Types.LogicalTable
+    Amazonka.QuickSight.Types.LogicalTableSource
+    Amazonka.QuickSight.Types.LongFormatText
+    Amazonka.QuickSight.Types.ManifestFileLocation
+    Amazonka.QuickSight.Types.MapZoomMode
+    Amazonka.QuickSight.Types.MarginStyle
+    Amazonka.QuickSight.Types.MariaDbParameters
+    Amazonka.QuickSight.Types.MaximumLabelType
+    Amazonka.QuickSight.Types.MaximumMinimumComputation
+    Amazonka.QuickSight.Types.MaximumMinimumComputationType
+    Amazonka.QuickSight.Types.MeasureField
+    Amazonka.QuickSight.Types.MemberIdArnPair
+    Amazonka.QuickSight.Types.MemberType
+    Amazonka.QuickSight.Types.MetricComparisonComputation
+    Amazonka.QuickSight.Types.MinimumLabelType
+    Amazonka.QuickSight.Types.MissingDataConfiguration
+    Amazonka.QuickSight.Types.MissingDataTreatmentOption
+    Amazonka.QuickSight.Types.MySqlParameters
+    Amazonka.QuickSight.Types.NamespaceError
+    Amazonka.QuickSight.Types.NamespaceErrorType
+    Amazonka.QuickSight.Types.NamespaceInfoV2
+    Amazonka.QuickSight.Types.NamespaceStatus
+    Amazonka.QuickSight.Types.NegativeValueConfiguration
+    Amazonka.QuickSight.Types.NegativeValueDisplayMode
+    Amazonka.QuickSight.Types.NullValueFormatConfiguration
+    Amazonka.QuickSight.Types.NumberDisplayFormatConfiguration
+    Amazonka.QuickSight.Types.NumberFormatConfiguration
+    Amazonka.QuickSight.Types.NumberScale
+    Amazonka.QuickSight.Types.NumericalAggregationFunction
+    Amazonka.QuickSight.Types.NumericalDimensionField
+    Amazonka.QuickSight.Types.NumericalMeasureField
+    Amazonka.QuickSight.Types.NumericAxisOptions
+    Amazonka.QuickSight.Types.NumericEqualityDrillDownFilter
+    Amazonka.QuickSight.Types.NumericEqualityFilter
+    Amazonka.QuickSight.Types.NumericEqualityMatchOperator
+    Amazonka.QuickSight.Types.NumericFilterSelectAllOptions
+    Amazonka.QuickSight.Types.NumericFormatConfiguration
+    Amazonka.QuickSight.Types.NumericRangeFilter
+    Amazonka.QuickSight.Types.NumericRangeFilterValue
+    Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+    Amazonka.QuickSight.Types.NumericSeparatorSymbol
+    Amazonka.QuickSight.Types.OracleParameters
+    Amazonka.QuickSight.Types.OtherCategories
+    Amazonka.QuickSight.Types.OutputColumn
+    Amazonka.QuickSight.Types.PaginationConfiguration
+    Amazonka.QuickSight.Types.PanelBorderStyle
+    Amazonka.QuickSight.Types.PanelConfiguration
+    Amazonka.QuickSight.Types.PanelTitleOptions
+    Amazonka.QuickSight.Types.PaperOrientation
+    Amazonka.QuickSight.Types.PaperSize
+    Amazonka.QuickSight.Types.ParameterControl
+    Amazonka.QuickSight.Types.ParameterDateTimePickerControl
+    Amazonka.QuickSight.Types.ParameterDeclaration
+    Amazonka.QuickSight.Types.ParameterDropDownControl
+    Amazonka.QuickSight.Types.ParameterListControl
+    Amazonka.QuickSight.Types.Parameters
+    Amazonka.QuickSight.Types.ParameterSelectableValues
+    Amazonka.QuickSight.Types.ParameterSliderControl
+    Amazonka.QuickSight.Types.ParameterTextAreaControl
+    Amazonka.QuickSight.Types.ParameterTextFieldControl
+    Amazonka.QuickSight.Types.ParameterValueType
+    Amazonka.QuickSight.Types.PercentageDisplayFormatConfiguration
+    Amazonka.QuickSight.Types.PercentileAggregation
+    Amazonka.QuickSight.Types.PercentVisibleRange
+    Amazonka.QuickSight.Types.PeriodOverPeriodComputation
+    Amazonka.QuickSight.Types.PeriodToDateComputation
+    Amazonka.QuickSight.Types.PhysicalTable
+    Amazonka.QuickSight.Types.PieChartAggregatedFieldWells
+    Amazonka.QuickSight.Types.PieChartConfiguration
+    Amazonka.QuickSight.Types.PieChartFieldWells
+    Amazonka.QuickSight.Types.PieChartSortConfiguration
+    Amazonka.QuickSight.Types.PieChartVisual
+    Amazonka.QuickSight.Types.PivotFieldSortOptions
+    Amazonka.QuickSight.Types.PivotTableAggregatedFieldWells
+    Amazonka.QuickSight.Types.PivotTableCellConditionalFormatting
+    Amazonka.QuickSight.Types.PivotTableConditionalFormatting
+    Amazonka.QuickSight.Types.PivotTableConditionalFormattingOption
+    Amazonka.QuickSight.Types.PivotTableConditionalFormattingScope
+    Amazonka.QuickSight.Types.PivotTableConditionalFormattingScopeRole
+    Amazonka.QuickSight.Types.PivotTableConfiguration
+    Amazonka.QuickSight.Types.PivotTableDataPathOption
+    Amazonka.QuickSight.Types.PivotTableFieldOption
+    Amazonka.QuickSight.Types.PivotTableFieldOptions
+    Amazonka.QuickSight.Types.PivotTableFieldSubtotalOptions
+    Amazonka.QuickSight.Types.PivotTableFieldWells
+    Amazonka.QuickSight.Types.PivotTableMetricPlacement
+    Amazonka.QuickSight.Types.PivotTableOptions
+    Amazonka.QuickSight.Types.PivotTablePaginatedReportOptions
+    Amazonka.QuickSight.Types.PivotTableSortBy
+    Amazonka.QuickSight.Types.PivotTableSortConfiguration
+    Amazonka.QuickSight.Types.PivotTableSubtotalLevel
+    Amazonka.QuickSight.Types.PivotTableTotalOptions
+    Amazonka.QuickSight.Types.PivotTableVisual
+    Amazonka.QuickSight.Types.PivotTotalOptions
+    Amazonka.QuickSight.Types.PostgreSqlParameters
+    Amazonka.QuickSight.Types.PredefinedHierarchy
+    Amazonka.QuickSight.Types.PrestoParameters
+    Amazonka.QuickSight.Types.PrimaryValueDisplayType
+    Amazonka.QuickSight.Types.ProgressBarOptions
+    Amazonka.QuickSight.Types.ProjectOperation
+    Amazonka.QuickSight.Types.QueueInfo
+    Amazonka.QuickSight.Types.RangeEndsLabelType
+    Amazonka.QuickSight.Types.RdsParameters
+    Amazonka.QuickSight.Types.RedshiftParameters
+    Amazonka.QuickSight.Types.ReferenceLine
+    Amazonka.QuickSight.Types.ReferenceLineCustomLabelConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineDataConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineDynamicDataConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineLabelConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineLabelHorizontalPosition
+    Amazonka.QuickSight.Types.ReferenceLineLabelVerticalPosition
+    Amazonka.QuickSight.Types.ReferenceLinePatternType
+    Amazonka.QuickSight.Types.ReferenceLineStaticDataConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineStyleConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineValueLabelConfiguration
+    Amazonka.QuickSight.Types.ReferenceLineValueLabelRelativePosition
+    Amazonka.QuickSight.Types.RegisteredUserDashboardEmbeddingConfiguration
+    Amazonka.QuickSight.Types.RegisteredUserDashboardVisualEmbeddingConfiguration
+    Amazonka.QuickSight.Types.RegisteredUserEmbeddingExperienceConfiguration
+    Amazonka.QuickSight.Types.RegisteredUserQSearchBarEmbeddingConfiguration
+    Amazonka.QuickSight.Types.RegisteredUserQuickSightConsoleEmbeddingConfiguration
+    Amazonka.QuickSight.Types.RelationalTable
+    Amazonka.QuickSight.Types.RelativeDatesFilter
+    Amazonka.QuickSight.Types.RelativeDateTimeControlDisplayOptions
+    Amazonka.QuickSight.Types.RelativeDateType
+    Amazonka.QuickSight.Types.RelativeFontSize
+    Amazonka.QuickSight.Types.RenameColumnOperation
+    Amazonka.QuickSight.Types.ResizeOption
+    Amazonka.QuickSight.Types.ResourcePermission
+    Amazonka.QuickSight.Types.ResourceStatus
+    Amazonka.QuickSight.Types.RollingDateConfiguration
+    Amazonka.QuickSight.Types.RowAlternateColorOptions
+    Amazonka.QuickSight.Types.RowInfo
+    Amazonka.QuickSight.Types.RowLevelPermissionDataSet
+    Amazonka.QuickSight.Types.RowLevelPermissionFormatVersion
+    Amazonka.QuickSight.Types.RowLevelPermissionPolicy
+    Amazonka.QuickSight.Types.RowLevelPermissionTagConfiguration
+    Amazonka.QuickSight.Types.RowLevelPermissionTagRule
+    Amazonka.QuickSight.Types.S3Parameters
+    Amazonka.QuickSight.Types.S3Source
+    Amazonka.QuickSight.Types.SameSheetTargetVisualConfiguration
+    Amazonka.QuickSight.Types.SankeyDiagramAggregatedFieldWells
+    Amazonka.QuickSight.Types.SankeyDiagramChartConfiguration
+    Amazonka.QuickSight.Types.SankeyDiagramFieldWells
+    Amazonka.QuickSight.Types.SankeyDiagramSortConfiguration
+    Amazonka.QuickSight.Types.SankeyDiagramVisual
+    Amazonka.QuickSight.Types.ScatterPlotCategoricallyAggregatedFieldWells
+    Amazonka.QuickSight.Types.ScatterPlotConfiguration
+    Amazonka.QuickSight.Types.ScatterPlotFieldWells
+    Amazonka.QuickSight.Types.ScatterPlotUnaggregatedFieldWells
+    Amazonka.QuickSight.Types.ScatterPlotVisual
+    Amazonka.QuickSight.Types.ScrollBarOptions
+    Amazonka.QuickSight.Types.SecondaryValueOptions
+    Amazonka.QuickSight.Types.SectionAfterPageBreak
+    Amazonka.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions
+    Amazonka.QuickSight.Types.SectionBasedLayoutConfiguration
+    Amazonka.QuickSight.Types.SectionBasedLayoutPaperCanvasSizeOptions
+    Amazonka.QuickSight.Types.SectionLayoutConfiguration
+    Amazonka.QuickSight.Types.SectionPageBreakConfiguration
+    Amazonka.QuickSight.Types.SectionPageBreakStatus
+    Amazonka.QuickSight.Types.SectionStyle
+    Amazonka.QuickSight.Types.SelectAllValueOptions
+    Amazonka.QuickSight.Types.SelectedFieldOptions
+    Amazonka.QuickSight.Types.SelectedSheetsFilterScopeConfiguration
+    Amazonka.QuickSight.Types.SelectedTooltipType
+    Amazonka.QuickSight.Types.SeriesItem
+    Amazonka.QuickSight.Types.ServiceNowParameters
+    Amazonka.QuickSight.Types.SessionTag
+    Amazonka.QuickSight.Types.SetParameterValueConfiguration
+    Amazonka.QuickSight.Types.ShapeConditionalFormat
+    Amazonka.QuickSight.Types.Sheet
+    Amazonka.QuickSight.Types.SheetContentType
+    Amazonka.QuickSight.Types.SheetControlDateTimePickerType
+    Amazonka.QuickSight.Types.SheetControlLayout
+    Amazonka.QuickSight.Types.SheetControlLayoutConfiguration
+    Amazonka.QuickSight.Types.SheetControlListType
+    Amazonka.QuickSight.Types.SheetControlSliderType
+    Amazonka.QuickSight.Types.SheetControlsOption
+    Amazonka.QuickSight.Types.SheetDefinition
+    Amazonka.QuickSight.Types.SheetElementConfigurationOverrides
+    Amazonka.QuickSight.Types.SheetElementRenderingRule
+    Amazonka.QuickSight.Types.SheetStyle
+    Amazonka.QuickSight.Types.SheetTextBox
+    Amazonka.QuickSight.Types.SheetVisualScopingConfiguration
+    Amazonka.QuickSight.Types.ShortFormatText
+    Amazonka.QuickSight.Types.SignupResponse
+    Amazonka.QuickSight.Types.SimpleClusterMarker
+    Amazonka.QuickSight.Types.SimpleNumericalAggregationFunction
+    Amazonka.QuickSight.Types.SliderControlDisplayOptions
+    Amazonka.QuickSight.Types.SmallMultiplesOptions
+    Amazonka.QuickSight.Types.SnowflakeParameters
+    Amazonka.QuickSight.Types.SortDirection
+    Amazonka.QuickSight.Types.Spacing
+    Amazonka.QuickSight.Types.SparkParameters
+    Amazonka.QuickSight.Types.SqlServerParameters
+    Amazonka.QuickSight.Types.SslProperties
+    Amazonka.QuickSight.Types.Status
+    Amazonka.QuickSight.Types.StringDefaultValues
+    Amazonka.QuickSight.Types.StringFormatConfiguration
+    Amazonka.QuickSight.Types.StringParameter
+    Amazonka.QuickSight.Types.StringParameterDeclaration
+    Amazonka.QuickSight.Types.StringValueWhenUnsetConfiguration
+    Amazonka.QuickSight.Types.SubtotalOptions
+    Amazonka.QuickSight.Types.TableAggregatedFieldWells
+    Amazonka.QuickSight.Types.TableBorderOptions
+    Amazonka.QuickSight.Types.TableBorderStyle
+    Amazonka.QuickSight.Types.TableCellConditionalFormatting
+    Amazonka.QuickSight.Types.TableCellImageScalingConfiguration
+    Amazonka.QuickSight.Types.TableCellImageSizingConfiguration
+    Amazonka.QuickSight.Types.TableCellStyle
+    Amazonka.QuickSight.Types.TableConditionalFormatting
+    Amazonka.QuickSight.Types.TableConditionalFormattingOption
+    Amazonka.QuickSight.Types.TableConfiguration
+    Amazonka.QuickSight.Types.TableFieldCustomIconContent
+    Amazonka.QuickSight.Types.TableFieldCustomTextContent
+    Amazonka.QuickSight.Types.TableFieldIconSetType
+    Amazonka.QuickSight.Types.TableFieldImageConfiguration
+    Amazonka.QuickSight.Types.TableFieldLinkConfiguration
+    Amazonka.QuickSight.Types.TableFieldLinkContentConfiguration
+    Amazonka.QuickSight.Types.TableFieldOption
+    Amazonka.QuickSight.Types.TableFieldOptions
+    Amazonka.QuickSight.Types.TableFieldURLConfiguration
+    Amazonka.QuickSight.Types.TableFieldWells
+    Amazonka.QuickSight.Types.TableOptions
+    Amazonka.QuickSight.Types.TableOrientation
+    Amazonka.QuickSight.Types.TablePaginatedReportOptions
+    Amazonka.QuickSight.Types.TableRowConditionalFormatting
+    Amazonka.QuickSight.Types.TableSideBorderOptions
+    Amazonka.QuickSight.Types.TableSortConfiguration
+    Amazonka.QuickSight.Types.TableTotalsPlacement
+    Amazonka.QuickSight.Types.TableTotalsScrollStatus
+    Amazonka.QuickSight.Types.TableUnaggregatedFieldWells
+    Amazonka.QuickSight.Types.TableVisual
+    Amazonka.QuickSight.Types.Tag
+    Amazonka.QuickSight.Types.TagColumnOperation
+    Amazonka.QuickSight.Types.TargetVisualOptions
+    Amazonka.QuickSight.Types.Template
+    Amazonka.QuickSight.Types.TemplateAlias
+    Amazonka.QuickSight.Types.TemplateError
+    Amazonka.QuickSight.Types.TemplateErrorType
+    Amazonka.QuickSight.Types.TemplateSourceAnalysis
+    Amazonka.QuickSight.Types.TemplateSourceEntity
+    Amazonka.QuickSight.Types.TemplateSourceTemplate
+    Amazonka.QuickSight.Types.TemplateSummary
+    Amazonka.QuickSight.Types.TemplateVersion
+    Amazonka.QuickSight.Types.TemplateVersionDefinition
+    Amazonka.QuickSight.Types.TemplateVersionSummary
+    Amazonka.QuickSight.Types.TeradataParameters
+    Amazonka.QuickSight.Types.TextAreaControlDisplayOptions
+    Amazonka.QuickSight.Types.TextConditionalFormat
+    Amazonka.QuickSight.Types.TextControlPlaceholderOptions
+    Amazonka.QuickSight.Types.TextFieldControlDisplayOptions
+    Amazonka.QuickSight.Types.TextQualifier
+    Amazonka.QuickSight.Types.TextWrap
+    Amazonka.QuickSight.Types.Theme
+    Amazonka.QuickSight.Types.ThemeAlias
+    Amazonka.QuickSight.Types.ThemeConfiguration
+    Amazonka.QuickSight.Types.ThemeError
+    Amazonka.QuickSight.Types.ThemeErrorType
+    Amazonka.QuickSight.Types.ThemeSummary
+    Amazonka.QuickSight.Types.ThemeType
+    Amazonka.QuickSight.Types.ThemeVersion
+    Amazonka.QuickSight.Types.ThemeVersionSummary
+    Amazonka.QuickSight.Types.ThousandSeparatorOptions
+    Amazonka.QuickSight.Types.TileLayoutStyle
+    Amazonka.QuickSight.Types.TileStyle
+    Amazonka.QuickSight.Types.TimeBasedForecastProperties
+    Amazonka.QuickSight.Types.TimeEqualityFilter
+    Amazonka.QuickSight.Types.TimeGranularity
+    Amazonka.QuickSight.Types.TimeRangeDrillDownFilter
+    Amazonka.QuickSight.Types.TimeRangeFilter
+    Amazonka.QuickSight.Types.TimeRangeFilterValue
+    Amazonka.QuickSight.Types.TooltipItem
+    Amazonka.QuickSight.Types.TooltipOptions
+    Amazonka.QuickSight.Types.TooltipTitleType
+    Amazonka.QuickSight.Types.TopBottomComputationType
+    Amazonka.QuickSight.Types.TopBottomFilter
+    Amazonka.QuickSight.Types.TopBottomMoversComputation
+    Amazonka.QuickSight.Types.TopBottomRankedComputation
+    Amazonka.QuickSight.Types.TopBottomSortOrder
+    Amazonka.QuickSight.Types.TotalAggregationComputation
+    Amazonka.QuickSight.Types.TotalOptions
+    Amazonka.QuickSight.Types.TransformOperation
+    Amazonka.QuickSight.Types.TreeMapAggregatedFieldWells
+    Amazonka.QuickSight.Types.TreeMapConfiguration
+    Amazonka.QuickSight.Types.TreeMapFieldWells
+    Amazonka.QuickSight.Types.TreeMapSortConfiguration
+    Amazonka.QuickSight.Types.TreeMapVisual
+    Amazonka.QuickSight.Types.TrendArrowOptions
+    Amazonka.QuickSight.Types.TwitterParameters
+    Amazonka.QuickSight.Types.Typography
+    Amazonka.QuickSight.Types.UIColorPalette
+    Amazonka.QuickSight.Types.UnaggregatedField
+    Amazonka.QuickSight.Types.UniqueValuesComputation
+    Amazonka.QuickSight.Types.UntagColumnOperation
+    Amazonka.QuickSight.Types.UploadSettings
+    Amazonka.QuickSight.Types.URLTargetConfiguration
+    Amazonka.QuickSight.Types.User
+    Amazonka.QuickSight.Types.UserRole
+    Amazonka.QuickSight.Types.ValueWhenUnsetOption
+    Amazonka.QuickSight.Types.VerticalTextAlignment
+    Amazonka.QuickSight.Types.Visibility
+    Amazonka.QuickSight.Types.VisibleRangeOptions
+    Amazonka.QuickSight.Types.Visual
+    Amazonka.QuickSight.Types.VisualCustomAction
+    Amazonka.QuickSight.Types.VisualCustomActionOperation
+    Amazonka.QuickSight.Types.VisualCustomActionTrigger
+    Amazonka.QuickSight.Types.VisualPalette
+    Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+    Amazonka.QuickSight.Types.VisualTitleLabelOptions
+    Amazonka.QuickSight.Types.VpcConnectionProperties
+    Amazonka.QuickSight.Types.WaterfallChartAggregatedFieldWells
+    Amazonka.QuickSight.Types.WaterfallChartConfiguration
+    Amazonka.QuickSight.Types.WaterfallChartFieldWells
+    Amazonka.QuickSight.Types.WaterfallChartOptions
+    Amazonka.QuickSight.Types.WaterfallChartSortConfiguration
+    Amazonka.QuickSight.Types.WaterfallVisual
+    Amazonka.QuickSight.Types.WhatIfPointScenario
+    Amazonka.QuickSight.Types.WhatIfRangeScenario
+    Amazonka.QuickSight.Types.WidgetStatus
+    Amazonka.QuickSight.Types.WordCloudAggregatedFieldWells
+    Amazonka.QuickSight.Types.WordCloudChartConfiguration
+    Amazonka.QuickSight.Types.WordCloudCloudLayout
+    Amazonka.QuickSight.Types.WordCloudFieldWells
+    Amazonka.QuickSight.Types.WordCloudOptions
+    Amazonka.QuickSight.Types.WordCloudSortConfiguration
+    Amazonka.QuickSight.Types.WordCloudVisual
+    Amazonka.QuickSight.Types.WordCloudWordCasing
+    Amazonka.QuickSight.Types.WordCloudWordOrientation
+    Amazonka.QuickSight.Types.WordCloudWordPadding
+    Amazonka.QuickSight.Types.WordCloudWordScaling
+    Amazonka.QuickSight.UntagResource
+    Amazonka.QuickSight.UpdateAccountCustomization
+    Amazonka.QuickSight.UpdateAccountSettings
+    Amazonka.QuickSight.UpdateAnalysis
+    Amazonka.QuickSight.UpdateAnalysisPermissions
+    Amazonka.QuickSight.UpdateDashboard
+    Amazonka.QuickSight.UpdateDashboardPermissions
+    Amazonka.QuickSight.UpdateDashboardPublishedVersion
+    Amazonka.QuickSight.UpdateDataSet
+    Amazonka.QuickSight.UpdateDataSetPermissions
+    Amazonka.QuickSight.UpdateDataSource
+    Amazonka.QuickSight.UpdateDataSourcePermissions
+    Amazonka.QuickSight.UpdateFolder
+    Amazonka.QuickSight.UpdateFolderPermissions
+    Amazonka.QuickSight.UpdateGroup
+    Amazonka.QuickSight.UpdateIAMPolicyAssignment
+    Amazonka.QuickSight.UpdateIpRestriction
+    Amazonka.QuickSight.UpdatePublicSharingSettings
+    Amazonka.QuickSight.UpdateTemplate
+    Amazonka.QuickSight.UpdateTemplateAlias
+    Amazonka.QuickSight.UpdateTemplatePermissions
+    Amazonka.QuickSight.UpdateTheme
+    Amazonka.QuickSight.UpdateThemeAlias
+    Amazonka.QuickSight.UpdateThemePermissions
+    Amazonka.QuickSight.UpdateUser
+    Amazonka.QuickSight.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-quicksight-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.QuickSight
+    Test.Amazonka.QuickSight
+    Test.Amazonka.QuickSight.Internal
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-quicksight
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CancelIngestion.yaml b/fixture/CancelIngestion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CancelIngestion.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CancelIngestionResponse.proto b/fixture/CancelIngestionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CancelIngestionResponse.proto
diff --git a/fixture/CreateAccountCustomization.yaml b/fixture/CreateAccountCustomization.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAccountCustomization.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateAccountCustomizationResponse.proto b/fixture/CreateAccountCustomizationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAccountCustomizationResponse.proto
diff --git a/fixture/CreateAccountSubscription.yaml b/fixture/CreateAccountSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAccountSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateAccountSubscriptionResponse.proto b/fixture/CreateAccountSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAccountSubscriptionResponse.proto
diff --git a/fixture/CreateAnalysis.yaml b/fixture/CreateAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateAnalysisResponse.proto b/fixture/CreateAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAnalysisResponse.proto
diff --git a/fixture/CreateDashboard.yaml b/fixture/CreateDashboard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDashboard.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateDashboardResponse.proto b/fixture/CreateDashboardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDashboardResponse.proto
diff --git a/fixture/CreateDataSet.yaml b/fixture/CreateDataSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateDataSetResponse.proto b/fixture/CreateDataSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataSetResponse.proto
diff --git a/fixture/CreateDataSource.yaml b/fixture/CreateDataSource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataSource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateDataSourceResponse.proto b/fixture/CreateDataSourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataSourceResponse.proto
diff --git a/fixture/CreateFolder.yaml b/fixture/CreateFolder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFolder.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateFolderMembership.yaml b/fixture/CreateFolderMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFolderMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateFolderMembershipResponse.proto b/fixture/CreateFolderMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFolderMembershipResponse.proto
diff --git a/fixture/CreateFolderResponse.proto b/fixture/CreateFolderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFolderResponse.proto
diff --git a/fixture/CreateGroup.yaml b/fixture/CreateGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateGroupMembership.yaml b/fixture/CreateGroupMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGroupMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateGroupMembershipResponse.proto b/fixture/CreateGroupMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGroupMembershipResponse.proto
diff --git a/fixture/CreateGroupResponse.proto b/fixture/CreateGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGroupResponse.proto
diff --git a/fixture/CreateIAMPolicyAssignment.yaml b/fixture/CreateIAMPolicyAssignment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateIAMPolicyAssignment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateIAMPolicyAssignmentResponse.proto b/fixture/CreateIAMPolicyAssignmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateIAMPolicyAssignmentResponse.proto
diff --git a/fixture/CreateIngestion.yaml b/fixture/CreateIngestion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateIngestion.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateIngestionResponse.proto b/fixture/CreateIngestionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateIngestionResponse.proto
diff --git a/fixture/CreateNamespace.yaml b/fixture/CreateNamespace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNamespace.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateNamespaceResponse.proto b/fixture/CreateNamespaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNamespaceResponse.proto
diff --git a/fixture/CreateTemplate.yaml b/fixture/CreateTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateTemplateAlias.yaml b/fixture/CreateTemplateAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTemplateAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateTemplateAliasResponse.proto b/fixture/CreateTemplateAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTemplateAliasResponse.proto
diff --git a/fixture/CreateTemplateResponse.proto b/fixture/CreateTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTemplateResponse.proto
diff --git a/fixture/CreateTheme.yaml b/fixture/CreateTheme.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTheme.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateThemeAlias.yaml b/fixture/CreateThemeAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateThemeAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/CreateThemeAliasResponse.proto b/fixture/CreateThemeAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateThemeAliasResponse.proto
diff --git a/fixture/CreateThemeResponse.proto b/fixture/CreateThemeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateThemeResponse.proto
diff --git a/fixture/DeleteAccountCustomization.yaml b/fixture/DeleteAccountCustomization.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAccountCustomization.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteAccountCustomizationResponse.proto b/fixture/DeleteAccountCustomizationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAccountCustomizationResponse.proto
diff --git a/fixture/DeleteAccountSubscription.yaml b/fixture/DeleteAccountSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAccountSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteAccountSubscriptionResponse.proto b/fixture/DeleteAccountSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAccountSubscriptionResponse.proto
diff --git a/fixture/DeleteAnalysis.yaml b/fixture/DeleteAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteAnalysisResponse.proto b/fixture/DeleteAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAnalysisResponse.proto
diff --git a/fixture/DeleteDashboard.yaml b/fixture/DeleteDashboard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDashboard.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteDashboardResponse.proto b/fixture/DeleteDashboardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDashboardResponse.proto
diff --git a/fixture/DeleteDataSet.yaml b/fixture/DeleteDataSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataSet.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteDataSetResponse.proto b/fixture/DeleteDataSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataSetResponse.proto
diff --git a/fixture/DeleteDataSource.yaml b/fixture/DeleteDataSource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataSource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteDataSourceResponse.proto b/fixture/DeleteDataSourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataSourceResponse.proto
diff --git a/fixture/DeleteFolder.yaml b/fixture/DeleteFolder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFolder.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteFolderMembership.yaml b/fixture/DeleteFolderMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFolderMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteFolderMembershipResponse.proto b/fixture/DeleteFolderMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFolderMembershipResponse.proto
diff --git a/fixture/DeleteFolderResponse.proto b/fixture/DeleteFolderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFolderResponse.proto
diff --git a/fixture/DeleteGroup.yaml b/fixture/DeleteGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteGroupMembership.yaml b/fixture/DeleteGroupMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGroupMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteGroupMembershipResponse.proto b/fixture/DeleteGroupMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGroupMembershipResponse.proto
diff --git a/fixture/DeleteGroupResponse.proto b/fixture/DeleteGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGroupResponse.proto
diff --git a/fixture/DeleteIAMPolicyAssignment.yaml b/fixture/DeleteIAMPolicyAssignment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIAMPolicyAssignment.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteIAMPolicyAssignmentResponse.proto b/fixture/DeleteIAMPolicyAssignmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIAMPolicyAssignmentResponse.proto
diff --git a/fixture/DeleteNamespace.yaml b/fixture/DeleteNamespace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNamespace.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteNamespaceResponse.proto b/fixture/DeleteNamespaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNamespaceResponse.proto
diff --git a/fixture/DeleteTemplate.yaml b/fixture/DeleteTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteTemplateAlias.yaml b/fixture/DeleteTemplateAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTemplateAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteTemplateAliasResponse.proto b/fixture/DeleteTemplateAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTemplateAliasResponse.proto
diff --git a/fixture/DeleteTemplateResponse.proto b/fixture/DeleteTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTemplateResponse.proto
diff --git a/fixture/DeleteTheme.yaml b/fixture/DeleteTheme.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTheme.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteThemeAlias.yaml b/fixture/DeleteThemeAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteThemeAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteThemeAliasResponse.proto b/fixture/DeleteThemeAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteThemeAliasResponse.proto
diff --git a/fixture/DeleteThemeResponse.proto b/fixture/DeleteThemeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteThemeResponse.proto
diff --git a/fixture/DeleteUser.yaml b/fixture/DeleteUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUser.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteUserByPrincipalId.yaml b/fixture/DeleteUserByPrincipalId.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUserByPrincipalId.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DeleteUserByPrincipalIdResponse.proto b/fixture/DeleteUserByPrincipalIdResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUserByPrincipalIdResponse.proto
diff --git a/fixture/DeleteUserResponse.proto b/fixture/DeleteUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUserResponse.proto
diff --git a/fixture/DescribeAccountCustomization.yaml b/fixture/DescribeAccountCustomization.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAccountCustomization.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeAccountCustomizationResponse.proto b/fixture/DescribeAccountCustomizationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAccountCustomizationResponse.proto
diff --git a/fixture/DescribeAccountSettings.yaml b/fixture/DescribeAccountSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAccountSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeAccountSettingsResponse.proto b/fixture/DescribeAccountSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAccountSettingsResponse.proto
diff --git a/fixture/DescribeAccountSubscription.yaml b/fixture/DescribeAccountSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAccountSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeAccountSubscriptionResponse.proto b/fixture/DescribeAccountSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAccountSubscriptionResponse.proto
diff --git a/fixture/DescribeAnalysis.yaml b/fixture/DescribeAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeAnalysisDefinition.yaml b/fixture/DescribeAnalysisDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAnalysisDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeAnalysisDefinitionResponse.proto b/fixture/DescribeAnalysisDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAnalysisDefinitionResponse.proto
diff --git a/fixture/DescribeAnalysisPermissions.yaml b/fixture/DescribeAnalysisPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAnalysisPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeAnalysisPermissionsResponse.proto b/fixture/DescribeAnalysisPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAnalysisPermissionsResponse.proto
diff --git a/fixture/DescribeAnalysisResponse.proto b/fixture/DescribeAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAnalysisResponse.proto
diff --git a/fixture/DescribeDashboard.yaml b/fixture/DescribeDashboard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDashboard.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDashboardDefinition.yaml b/fixture/DescribeDashboardDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDashboardDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDashboardDefinitionResponse.proto b/fixture/DescribeDashboardDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDashboardDefinitionResponse.proto
diff --git a/fixture/DescribeDashboardPermissions.yaml b/fixture/DescribeDashboardPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDashboardPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDashboardPermissionsResponse.proto b/fixture/DescribeDashboardPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDashboardPermissionsResponse.proto
diff --git a/fixture/DescribeDashboardResponse.proto b/fixture/DescribeDashboardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDashboardResponse.proto
diff --git a/fixture/DescribeDataSet.yaml b/fixture/DescribeDataSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSet.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDataSetPermissions.yaml b/fixture/DescribeDataSetPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSetPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDataSetPermissionsResponse.proto b/fixture/DescribeDataSetPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSetPermissionsResponse.proto
diff --git a/fixture/DescribeDataSetResponse.proto b/fixture/DescribeDataSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSetResponse.proto
diff --git a/fixture/DescribeDataSource.yaml b/fixture/DescribeDataSource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDataSourcePermissions.yaml b/fixture/DescribeDataSourcePermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSourcePermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeDataSourcePermissionsResponse.proto b/fixture/DescribeDataSourcePermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSourcePermissionsResponse.proto
diff --git a/fixture/DescribeDataSourceResponse.proto b/fixture/DescribeDataSourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataSourceResponse.proto
diff --git a/fixture/DescribeFolder.yaml b/fixture/DescribeFolder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFolder.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeFolderPermissions.yaml b/fixture/DescribeFolderPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFolderPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeFolderPermissionsResponse.proto b/fixture/DescribeFolderPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFolderPermissionsResponse.proto
diff --git a/fixture/DescribeFolderResolvedPermissions.yaml b/fixture/DescribeFolderResolvedPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFolderResolvedPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeFolderResolvedPermissionsResponse.proto b/fixture/DescribeFolderResolvedPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFolderResolvedPermissionsResponse.proto
diff --git a/fixture/DescribeFolderResponse.proto b/fixture/DescribeFolderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFolderResponse.proto
diff --git a/fixture/DescribeGroup.yaml b/fixture/DescribeGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeGroupMembership.yaml b/fixture/DescribeGroupMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGroupMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeGroupMembershipResponse.proto b/fixture/DescribeGroupMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGroupMembershipResponse.proto
diff --git a/fixture/DescribeGroupResponse.proto b/fixture/DescribeGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGroupResponse.proto
diff --git a/fixture/DescribeIAMPolicyAssignment.yaml b/fixture/DescribeIAMPolicyAssignment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIAMPolicyAssignment.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeIAMPolicyAssignmentResponse.proto b/fixture/DescribeIAMPolicyAssignmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIAMPolicyAssignmentResponse.proto
diff --git a/fixture/DescribeIngestion.yaml b/fixture/DescribeIngestion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIngestion.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeIngestionResponse.proto b/fixture/DescribeIngestionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIngestionResponse.proto
diff --git a/fixture/DescribeIpRestriction.yaml b/fixture/DescribeIpRestriction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIpRestriction.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeIpRestrictionResponse.proto b/fixture/DescribeIpRestrictionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeIpRestrictionResponse.proto
diff --git a/fixture/DescribeNamespace.yaml b/fixture/DescribeNamespace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeNamespace.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeNamespaceResponse.proto b/fixture/DescribeNamespaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeNamespaceResponse.proto
diff --git a/fixture/DescribeTemplate.yaml b/fixture/DescribeTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeTemplateAlias.yaml b/fixture/DescribeTemplateAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplateAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeTemplateAliasResponse.proto b/fixture/DescribeTemplateAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplateAliasResponse.proto
diff --git a/fixture/DescribeTemplateDefinition.yaml b/fixture/DescribeTemplateDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplateDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeTemplateDefinitionResponse.proto b/fixture/DescribeTemplateDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplateDefinitionResponse.proto
diff --git a/fixture/DescribeTemplatePermissions.yaml b/fixture/DescribeTemplatePermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplatePermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeTemplatePermissionsResponse.proto b/fixture/DescribeTemplatePermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplatePermissionsResponse.proto
diff --git a/fixture/DescribeTemplateResponse.proto b/fixture/DescribeTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTemplateResponse.proto
diff --git a/fixture/DescribeTheme.yaml b/fixture/DescribeTheme.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTheme.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeThemeAlias.yaml b/fixture/DescribeThemeAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeThemeAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeThemeAliasResponse.proto b/fixture/DescribeThemeAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeThemeAliasResponse.proto
diff --git a/fixture/DescribeThemePermissions.yaml b/fixture/DescribeThemePermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeThemePermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeThemePermissionsResponse.proto b/fixture/DescribeThemePermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeThemePermissionsResponse.proto
diff --git a/fixture/DescribeThemeResponse.proto b/fixture/DescribeThemeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeThemeResponse.proto
diff --git a/fixture/DescribeUser.yaml b/fixture/DescribeUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/DescribeUserResponse.proto b/fixture/DescribeUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeUserResponse.proto
diff --git a/fixture/GenerateEmbedUrlForAnonymousUser.yaml b/fixture/GenerateEmbedUrlForAnonymousUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateEmbedUrlForAnonymousUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/GenerateEmbedUrlForAnonymousUserResponse.proto b/fixture/GenerateEmbedUrlForAnonymousUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateEmbedUrlForAnonymousUserResponse.proto
diff --git a/fixture/GenerateEmbedUrlForRegisteredUser.yaml b/fixture/GenerateEmbedUrlForRegisteredUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateEmbedUrlForRegisteredUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/GenerateEmbedUrlForRegisteredUserResponse.proto b/fixture/GenerateEmbedUrlForRegisteredUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateEmbedUrlForRegisteredUserResponse.proto
diff --git a/fixture/GetDashboardEmbedUrl.yaml b/fixture/GetDashboardEmbedUrl.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDashboardEmbedUrl.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/GetDashboardEmbedUrlResponse.proto b/fixture/GetDashboardEmbedUrlResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDashboardEmbedUrlResponse.proto
diff --git a/fixture/GetSessionEmbedUrl.yaml b/fixture/GetSessionEmbedUrl.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSessionEmbedUrl.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/GetSessionEmbedUrlResponse.proto b/fixture/GetSessionEmbedUrlResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSessionEmbedUrlResponse.proto
diff --git a/fixture/ListAnalyses.yaml b/fixture/ListAnalyses.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAnalyses.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListAnalysesResponse.proto b/fixture/ListAnalysesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAnalysesResponse.proto
diff --git a/fixture/ListDashboardVersions.yaml b/fixture/ListDashboardVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDashboardVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListDashboardVersionsResponse.proto b/fixture/ListDashboardVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDashboardVersionsResponse.proto
diff --git a/fixture/ListDashboards.yaml b/fixture/ListDashboards.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDashboards.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListDashboardsResponse.proto b/fixture/ListDashboardsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDashboardsResponse.proto
diff --git a/fixture/ListDataSets.yaml b/fixture/ListDataSets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataSets.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListDataSetsResponse.proto b/fixture/ListDataSetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataSetsResponse.proto
diff --git a/fixture/ListDataSources.yaml b/fixture/ListDataSources.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataSources.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListDataSourcesResponse.proto b/fixture/ListDataSourcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataSourcesResponse.proto
diff --git a/fixture/ListFolderMembers.yaml b/fixture/ListFolderMembers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFolderMembers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListFolderMembersResponse.proto b/fixture/ListFolderMembersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFolderMembersResponse.proto
diff --git a/fixture/ListFolders.yaml b/fixture/ListFolders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFolders.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListFoldersResponse.proto b/fixture/ListFoldersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFoldersResponse.proto
diff --git a/fixture/ListGroupMemberships.yaml b/fixture/ListGroupMemberships.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListGroupMemberships.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListGroupMembershipsResponse.proto b/fixture/ListGroupMembershipsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListGroupMembershipsResponse.proto
diff --git a/fixture/ListGroups.yaml b/fixture/ListGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListGroupsResponse.proto b/fixture/ListGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListGroupsResponse.proto
diff --git a/fixture/ListIAMPolicyAssignments.yaml b/fixture/ListIAMPolicyAssignments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListIAMPolicyAssignments.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListIAMPolicyAssignmentsForUser.yaml b/fixture/ListIAMPolicyAssignmentsForUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListIAMPolicyAssignmentsForUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListIAMPolicyAssignmentsForUserResponse.proto b/fixture/ListIAMPolicyAssignmentsForUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListIAMPolicyAssignmentsForUserResponse.proto
diff --git a/fixture/ListIAMPolicyAssignmentsResponse.proto b/fixture/ListIAMPolicyAssignmentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListIAMPolicyAssignmentsResponse.proto
diff --git a/fixture/ListIngestions.yaml b/fixture/ListIngestions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListIngestions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListIngestionsResponse.proto b/fixture/ListIngestionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListIngestionsResponse.proto
diff --git a/fixture/ListNamespaces.yaml b/fixture/ListNamespaces.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListNamespaces.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListNamespacesResponse.proto b/fixture/ListNamespacesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListNamespacesResponse.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/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListTemplateAliases.yaml b/fixture/ListTemplateAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTemplateAliases.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListTemplateAliasesResponse.proto b/fixture/ListTemplateAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTemplateAliasesResponse.proto
diff --git a/fixture/ListTemplateVersions.yaml b/fixture/ListTemplateVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTemplateVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListTemplateVersionsResponse.proto b/fixture/ListTemplateVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTemplateVersionsResponse.proto
diff --git a/fixture/ListTemplates.yaml b/fixture/ListTemplates.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTemplates.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListTemplatesResponse.proto b/fixture/ListTemplatesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTemplatesResponse.proto
diff --git a/fixture/ListThemeAliases.yaml b/fixture/ListThemeAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListThemeAliases.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListThemeAliasesResponse.proto b/fixture/ListThemeAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListThemeAliasesResponse.proto
diff --git a/fixture/ListThemeVersions.yaml b/fixture/ListThemeVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListThemeVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListThemeVersionsResponse.proto b/fixture/ListThemeVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListThemeVersionsResponse.proto
diff --git a/fixture/ListThemes.yaml b/fixture/ListThemes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListThemes.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListThemesResponse.proto b/fixture/ListThemesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListThemesResponse.proto
diff --git a/fixture/ListUserGroups.yaml b/fixture/ListUserGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListUserGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListUserGroupsResponse.proto b/fixture/ListUserGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListUserGroupsResponse.proto
diff --git a/fixture/ListUsers.yaml b/fixture/ListUsers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListUsers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/ListUsersResponse.proto b/fixture/ListUsersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListUsersResponse.proto
diff --git a/fixture/RegisterUser.yaml b/fixture/RegisterUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/RegisterUserResponse.proto b/fixture/RegisterUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterUserResponse.proto
diff --git a/fixture/RestoreAnalysis.yaml b/fixture/RestoreAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/RestoreAnalysisResponse.proto b/fixture/RestoreAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreAnalysisResponse.proto
diff --git a/fixture/SearchAnalyses.yaml b/fixture/SearchAnalyses.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchAnalyses.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/SearchAnalysesResponse.proto b/fixture/SearchAnalysesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchAnalysesResponse.proto
diff --git a/fixture/SearchDashboards.yaml b/fixture/SearchDashboards.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDashboards.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/SearchDashboardsResponse.proto b/fixture/SearchDashboardsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDashboardsResponse.proto
diff --git a/fixture/SearchDataSets.yaml b/fixture/SearchDataSets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDataSets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/SearchDataSetsResponse.proto b/fixture/SearchDataSetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDataSetsResponse.proto
diff --git a/fixture/SearchDataSources.yaml b/fixture/SearchDataSources.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDataSources.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/SearchDataSourcesResponse.proto b/fixture/SearchDataSourcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDataSourcesResponse.proto
diff --git a/fixture/SearchFolders.yaml b/fixture/SearchFolders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchFolders.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/SearchFoldersResponse.proto b/fixture/SearchFoldersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchFoldersResponse.proto
diff --git a/fixture/SearchGroups.yaml b/fixture/SearchGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/SearchGroupsResponse.proto b/fixture/SearchGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchGroupsResponse.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/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateAccountCustomization.yaml b/fixture/UpdateAccountCustomization.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountCustomization.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateAccountCustomizationResponse.proto b/fixture/UpdateAccountCustomizationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountCustomizationResponse.proto
diff --git a/fixture/UpdateAccountSettings.yaml b/fixture/UpdateAccountSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateAccountSettingsResponse.proto b/fixture/UpdateAccountSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountSettingsResponse.proto
diff --git a/fixture/UpdateAnalysis.yaml b/fixture/UpdateAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateAnalysisPermissions.yaml b/fixture/UpdateAnalysisPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAnalysisPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateAnalysisPermissionsResponse.proto b/fixture/UpdateAnalysisPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAnalysisPermissionsResponse.proto
diff --git a/fixture/UpdateAnalysisResponse.proto b/fixture/UpdateAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAnalysisResponse.proto
diff --git a/fixture/UpdateDashboard.yaml b/fixture/UpdateDashboard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDashboard.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDashboardPermissions.yaml b/fixture/UpdateDashboardPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDashboardPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDashboardPermissionsResponse.proto b/fixture/UpdateDashboardPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDashboardPermissionsResponse.proto
diff --git a/fixture/UpdateDashboardPublishedVersion.yaml b/fixture/UpdateDashboardPublishedVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDashboardPublishedVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDashboardPublishedVersionResponse.proto b/fixture/UpdateDashboardPublishedVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDashboardPublishedVersionResponse.proto
diff --git a/fixture/UpdateDashboardResponse.proto b/fixture/UpdateDashboardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDashboardResponse.proto
diff --git a/fixture/UpdateDataSet.yaml b/fixture/UpdateDataSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSet.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDataSetPermissions.yaml b/fixture/UpdateDataSetPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSetPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDataSetPermissionsResponse.proto b/fixture/UpdateDataSetPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSetPermissionsResponse.proto
diff --git a/fixture/UpdateDataSetResponse.proto b/fixture/UpdateDataSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSetResponse.proto
diff --git a/fixture/UpdateDataSource.yaml b/fixture/UpdateDataSource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSource.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDataSourcePermissions.yaml b/fixture/UpdateDataSourcePermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSourcePermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateDataSourcePermissionsResponse.proto b/fixture/UpdateDataSourcePermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSourcePermissionsResponse.proto
diff --git a/fixture/UpdateDataSourceResponse.proto b/fixture/UpdateDataSourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataSourceResponse.proto
diff --git a/fixture/UpdateFolder.yaml b/fixture/UpdateFolder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFolder.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateFolderPermissions.yaml b/fixture/UpdateFolderPermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFolderPermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateFolderPermissionsResponse.proto b/fixture/UpdateFolderPermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFolderPermissionsResponse.proto
diff --git a/fixture/UpdateFolderResponse.proto b/fixture/UpdateFolderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFolderResponse.proto
diff --git a/fixture/UpdateGroup.yaml b/fixture/UpdateGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateGroupResponse.proto b/fixture/UpdateGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGroupResponse.proto
diff --git a/fixture/UpdateIAMPolicyAssignment.yaml b/fixture/UpdateIAMPolicyAssignment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIAMPolicyAssignment.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateIAMPolicyAssignmentResponse.proto b/fixture/UpdateIAMPolicyAssignmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIAMPolicyAssignmentResponse.proto
diff --git a/fixture/UpdateIpRestriction.yaml b/fixture/UpdateIpRestriction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIpRestriction.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateIpRestrictionResponse.proto b/fixture/UpdateIpRestrictionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIpRestrictionResponse.proto
diff --git a/fixture/UpdatePublicSharingSettings.yaml b/fixture/UpdatePublicSharingSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePublicSharingSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdatePublicSharingSettingsResponse.proto b/fixture/UpdatePublicSharingSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePublicSharingSettingsResponse.proto
diff --git a/fixture/UpdateTemplate.yaml b/fixture/UpdateTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateTemplateAlias.yaml b/fixture/UpdateTemplateAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTemplateAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateTemplateAliasResponse.proto b/fixture/UpdateTemplateAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTemplateAliasResponse.proto
diff --git a/fixture/UpdateTemplatePermissions.yaml b/fixture/UpdateTemplatePermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTemplatePermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateTemplatePermissionsResponse.proto b/fixture/UpdateTemplatePermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTemplatePermissionsResponse.proto
diff --git a/fixture/UpdateTemplateResponse.proto b/fixture/UpdateTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTemplateResponse.proto
diff --git a/fixture/UpdateTheme.yaml b/fixture/UpdateTheme.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTheme.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateThemeAlias.yaml b/fixture/UpdateThemeAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateThemeAlias.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateThemeAliasResponse.proto b/fixture/UpdateThemeAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateThemeAliasResponse.proto
diff --git a/fixture/UpdateThemePermissions.yaml b/fixture/UpdateThemePermissions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateThemePermissions.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateThemePermissionsResponse.proto b/fixture/UpdateThemePermissionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateThemePermissionsResponse.proto
diff --git a/fixture/UpdateThemeResponse.proto b/fixture/UpdateThemeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateThemeResponse.proto
diff --git a/fixture/UpdateUser.yaml b/fixture/UpdateUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUser.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/quicksight/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  quicksight.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/UpdateUserResponse.proto b/fixture/UpdateUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUserResponse.proto
diff --git a/gen/Amazonka/QuickSight.hs b/gen/Amazonka/QuickSight.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight.hs
@@ -0,0 +1,3795 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.QuickSight
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2018-04-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon QuickSight API Reference
+--
+-- Amazon QuickSight is a fully managed, serverless business intelligence
+-- service for the Amazon Web Services Cloud that makes it easy to extend
+-- data and insights to every user in your organization. This API reference
+-- contains documentation for a programming interface that you can use to
+-- manage Amazon QuickSight.
+module Amazonka.QuickSight
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConcurrentUpdatingException
+    _ConcurrentUpdatingException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** DomainNotWhitelistedException
+    _DomainNotWhitelistedException,
+
+    -- ** IdentityTypeNotSupportedException
+    _IdentityTypeNotSupportedException,
+
+    -- ** InternalFailureException
+    _InternalFailureException,
+
+    -- ** InvalidNextTokenException
+    _InvalidNextTokenException,
+
+    -- ** InvalidParameterValueException
+    _InvalidParameterValueException,
+
+    -- ** InvalidRequestException
+    _InvalidRequestException,
+
+    -- ** LimitExceededException
+    _LimitExceededException,
+
+    -- ** PreconditionNotMetException
+    _PreconditionNotMetException,
+
+    -- ** QuickSightUserNotFoundException
+    _QuickSightUserNotFoundException,
+
+    -- ** ResourceExistsException
+    _ResourceExistsException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ResourceUnavailableException
+    _ResourceUnavailableException,
+
+    -- ** SessionLifetimeInMinutesInvalidException
+    _SessionLifetimeInMinutesInvalidException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** UnsupportedPricingPlanException
+    _UnsupportedPricingPlanException,
+
+    -- ** UnsupportedUserEditionException
+    _UnsupportedUserEditionException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CancelIngestion
+    CancelIngestion (CancelIngestion'),
+    newCancelIngestion,
+    CancelIngestionResponse (CancelIngestionResponse'),
+    newCancelIngestionResponse,
+
+    -- ** CreateAccountCustomization
+    CreateAccountCustomization (CreateAccountCustomization'),
+    newCreateAccountCustomization,
+    CreateAccountCustomizationResponse (CreateAccountCustomizationResponse'),
+    newCreateAccountCustomizationResponse,
+
+    -- ** CreateAccountSubscription
+    CreateAccountSubscription (CreateAccountSubscription'),
+    newCreateAccountSubscription,
+    CreateAccountSubscriptionResponse (CreateAccountSubscriptionResponse'),
+    newCreateAccountSubscriptionResponse,
+
+    -- ** CreateAnalysis
+    CreateAnalysis (CreateAnalysis'),
+    newCreateAnalysis,
+    CreateAnalysisResponse (CreateAnalysisResponse'),
+    newCreateAnalysisResponse,
+
+    -- ** CreateDashboard
+    CreateDashboard (CreateDashboard'),
+    newCreateDashboard,
+    CreateDashboardResponse (CreateDashboardResponse'),
+    newCreateDashboardResponse,
+
+    -- ** CreateDataSet
+    CreateDataSet (CreateDataSet'),
+    newCreateDataSet,
+    CreateDataSetResponse (CreateDataSetResponse'),
+    newCreateDataSetResponse,
+
+    -- ** CreateDataSource
+    CreateDataSource (CreateDataSource'),
+    newCreateDataSource,
+    CreateDataSourceResponse (CreateDataSourceResponse'),
+    newCreateDataSourceResponse,
+
+    -- ** CreateFolder
+    CreateFolder (CreateFolder'),
+    newCreateFolder,
+    CreateFolderResponse (CreateFolderResponse'),
+    newCreateFolderResponse,
+
+    -- ** CreateFolderMembership
+    CreateFolderMembership (CreateFolderMembership'),
+    newCreateFolderMembership,
+    CreateFolderMembershipResponse (CreateFolderMembershipResponse'),
+    newCreateFolderMembershipResponse,
+
+    -- ** CreateGroup
+    CreateGroup (CreateGroup'),
+    newCreateGroup,
+    CreateGroupResponse (CreateGroupResponse'),
+    newCreateGroupResponse,
+
+    -- ** CreateGroupMembership
+    CreateGroupMembership (CreateGroupMembership'),
+    newCreateGroupMembership,
+    CreateGroupMembershipResponse (CreateGroupMembershipResponse'),
+    newCreateGroupMembershipResponse,
+
+    -- ** CreateIAMPolicyAssignment
+    CreateIAMPolicyAssignment (CreateIAMPolicyAssignment'),
+    newCreateIAMPolicyAssignment,
+    CreateIAMPolicyAssignmentResponse (CreateIAMPolicyAssignmentResponse'),
+    newCreateIAMPolicyAssignmentResponse,
+
+    -- ** CreateIngestion
+    CreateIngestion (CreateIngestion'),
+    newCreateIngestion,
+    CreateIngestionResponse (CreateIngestionResponse'),
+    newCreateIngestionResponse,
+
+    -- ** CreateNamespace
+    CreateNamespace (CreateNamespace'),
+    newCreateNamespace,
+    CreateNamespaceResponse (CreateNamespaceResponse'),
+    newCreateNamespaceResponse,
+
+    -- ** CreateTemplate
+    CreateTemplate (CreateTemplate'),
+    newCreateTemplate,
+    CreateTemplateResponse (CreateTemplateResponse'),
+    newCreateTemplateResponse,
+
+    -- ** CreateTemplateAlias
+    CreateTemplateAlias (CreateTemplateAlias'),
+    newCreateTemplateAlias,
+    CreateTemplateAliasResponse (CreateTemplateAliasResponse'),
+    newCreateTemplateAliasResponse,
+
+    -- ** CreateTheme
+    CreateTheme (CreateTheme'),
+    newCreateTheme,
+    CreateThemeResponse (CreateThemeResponse'),
+    newCreateThemeResponse,
+
+    -- ** CreateThemeAlias
+    CreateThemeAlias (CreateThemeAlias'),
+    newCreateThemeAlias,
+    CreateThemeAliasResponse (CreateThemeAliasResponse'),
+    newCreateThemeAliasResponse,
+
+    -- ** DeleteAccountCustomization
+    DeleteAccountCustomization (DeleteAccountCustomization'),
+    newDeleteAccountCustomization,
+    DeleteAccountCustomizationResponse (DeleteAccountCustomizationResponse'),
+    newDeleteAccountCustomizationResponse,
+
+    -- ** DeleteAccountSubscription
+    DeleteAccountSubscription (DeleteAccountSubscription'),
+    newDeleteAccountSubscription,
+    DeleteAccountSubscriptionResponse (DeleteAccountSubscriptionResponse'),
+    newDeleteAccountSubscriptionResponse,
+
+    -- ** DeleteAnalysis
+    DeleteAnalysis (DeleteAnalysis'),
+    newDeleteAnalysis,
+    DeleteAnalysisResponse (DeleteAnalysisResponse'),
+    newDeleteAnalysisResponse,
+
+    -- ** DeleteDashboard
+    DeleteDashboard (DeleteDashboard'),
+    newDeleteDashboard,
+    DeleteDashboardResponse (DeleteDashboardResponse'),
+    newDeleteDashboardResponse,
+
+    -- ** DeleteDataSet
+    DeleteDataSet (DeleteDataSet'),
+    newDeleteDataSet,
+    DeleteDataSetResponse (DeleteDataSetResponse'),
+    newDeleteDataSetResponse,
+
+    -- ** DeleteDataSource
+    DeleteDataSource (DeleteDataSource'),
+    newDeleteDataSource,
+    DeleteDataSourceResponse (DeleteDataSourceResponse'),
+    newDeleteDataSourceResponse,
+
+    -- ** DeleteFolder
+    DeleteFolder (DeleteFolder'),
+    newDeleteFolder,
+    DeleteFolderResponse (DeleteFolderResponse'),
+    newDeleteFolderResponse,
+
+    -- ** DeleteFolderMembership
+    DeleteFolderMembership (DeleteFolderMembership'),
+    newDeleteFolderMembership,
+    DeleteFolderMembershipResponse (DeleteFolderMembershipResponse'),
+    newDeleteFolderMembershipResponse,
+
+    -- ** DeleteGroup
+    DeleteGroup (DeleteGroup'),
+    newDeleteGroup,
+    DeleteGroupResponse (DeleteGroupResponse'),
+    newDeleteGroupResponse,
+
+    -- ** DeleteGroupMembership
+    DeleteGroupMembership (DeleteGroupMembership'),
+    newDeleteGroupMembership,
+    DeleteGroupMembershipResponse (DeleteGroupMembershipResponse'),
+    newDeleteGroupMembershipResponse,
+
+    -- ** DeleteIAMPolicyAssignment
+    DeleteIAMPolicyAssignment (DeleteIAMPolicyAssignment'),
+    newDeleteIAMPolicyAssignment,
+    DeleteIAMPolicyAssignmentResponse (DeleteIAMPolicyAssignmentResponse'),
+    newDeleteIAMPolicyAssignmentResponse,
+
+    -- ** DeleteNamespace
+    DeleteNamespace (DeleteNamespace'),
+    newDeleteNamespace,
+    DeleteNamespaceResponse (DeleteNamespaceResponse'),
+    newDeleteNamespaceResponse,
+
+    -- ** DeleteTemplate
+    DeleteTemplate (DeleteTemplate'),
+    newDeleteTemplate,
+    DeleteTemplateResponse (DeleteTemplateResponse'),
+    newDeleteTemplateResponse,
+
+    -- ** DeleteTemplateAlias
+    DeleteTemplateAlias (DeleteTemplateAlias'),
+    newDeleteTemplateAlias,
+    DeleteTemplateAliasResponse (DeleteTemplateAliasResponse'),
+    newDeleteTemplateAliasResponse,
+
+    -- ** DeleteTheme
+    DeleteTheme (DeleteTheme'),
+    newDeleteTheme,
+    DeleteThemeResponse (DeleteThemeResponse'),
+    newDeleteThemeResponse,
+
+    -- ** DeleteThemeAlias
+    DeleteThemeAlias (DeleteThemeAlias'),
+    newDeleteThemeAlias,
+    DeleteThemeAliasResponse (DeleteThemeAliasResponse'),
+    newDeleteThemeAliasResponse,
+
+    -- ** DeleteUser
+    DeleteUser (DeleteUser'),
+    newDeleteUser,
+    DeleteUserResponse (DeleteUserResponse'),
+    newDeleteUserResponse,
+
+    -- ** DeleteUserByPrincipalId
+    DeleteUserByPrincipalId (DeleteUserByPrincipalId'),
+    newDeleteUserByPrincipalId,
+    DeleteUserByPrincipalIdResponse (DeleteUserByPrincipalIdResponse'),
+    newDeleteUserByPrincipalIdResponse,
+
+    -- ** DescribeAccountCustomization
+    DescribeAccountCustomization (DescribeAccountCustomization'),
+    newDescribeAccountCustomization,
+    DescribeAccountCustomizationResponse (DescribeAccountCustomizationResponse'),
+    newDescribeAccountCustomizationResponse,
+
+    -- ** DescribeAccountSettings
+    DescribeAccountSettings (DescribeAccountSettings'),
+    newDescribeAccountSettings,
+    DescribeAccountSettingsResponse (DescribeAccountSettingsResponse'),
+    newDescribeAccountSettingsResponse,
+
+    -- ** DescribeAccountSubscription
+    DescribeAccountSubscription (DescribeAccountSubscription'),
+    newDescribeAccountSubscription,
+    DescribeAccountSubscriptionResponse (DescribeAccountSubscriptionResponse'),
+    newDescribeAccountSubscriptionResponse,
+
+    -- ** DescribeAnalysis
+    DescribeAnalysis (DescribeAnalysis'),
+    newDescribeAnalysis,
+    DescribeAnalysisResponse (DescribeAnalysisResponse'),
+    newDescribeAnalysisResponse,
+
+    -- ** DescribeAnalysisDefinition
+    DescribeAnalysisDefinition (DescribeAnalysisDefinition'),
+    newDescribeAnalysisDefinition,
+    DescribeAnalysisDefinitionResponse (DescribeAnalysisDefinitionResponse'),
+    newDescribeAnalysisDefinitionResponse,
+
+    -- ** DescribeAnalysisPermissions
+    DescribeAnalysisPermissions (DescribeAnalysisPermissions'),
+    newDescribeAnalysisPermissions,
+    DescribeAnalysisPermissionsResponse (DescribeAnalysisPermissionsResponse'),
+    newDescribeAnalysisPermissionsResponse,
+
+    -- ** DescribeDashboard
+    DescribeDashboard (DescribeDashboard'),
+    newDescribeDashboard,
+    DescribeDashboardResponse (DescribeDashboardResponse'),
+    newDescribeDashboardResponse,
+
+    -- ** DescribeDashboardDefinition
+    DescribeDashboardDefinition (DescribeDashboardDefinition'),
+    newDescribeDashboardDefinition,
+    DescribeDashboardDefinitionResponse (DescribeDashboardDefinitionResponse'),
+    newDescribeDashboardDefinitionResponse,
+
+    -- ** DescribeDashboardPermissions
+    DescribeDashboardPermissions (DescribeDashboardPermissions'),
+    newDescribeDashboardPermissions,
+    DescribeDashboardPermissionsResponse (DescribeDashboardPermissionsResponse'),
+    newDescribeDashboardPermissionsResponse,
+
+    -- ** DescribeDataSet
+    DescribeDataSet (DescribeDataSet'),
+    newDescribeDataSet,
+    DescribeDataSetResponse (DescribeDataSetResponse'),
+    newDescribeDataSetResponse,
+
+    -- ** DescribeDataSetPermissions
+    DescribeDataSetPermissions (DescribeDataSetPermissions'),
+    newDescribeDataSetPermissions,
+    DescribeDataSetPermissionsResponse (DescribeDataSetPermissionsResponse'),
+    newDescribeDataSetPermissionsResponse,
+
+    -- ** DescribeDataSource
+    DescribeDataSource (DescribeDataSource'),
+    newDescribeDataSource,
+    DescribeDataSourceResponse (DescribeDataSourceResponse'),
+    newDescribeDataSourceResponse,
+
+    -- ** DescribeDataSourcePermissions
+    DescribeDataSourcePermissions (DescribeDataSourcePermissions'),
+    newDescribeDataSourcePermissions,
+    DescribeDataSourcePermissionsResponse (DescribeDataSourcePermissionsResponse'),
+    newDescribeDataSourcePermissionsResponse,
+
+    -- ** DescribeFolder
+    DescribeFolder (DescribeFolder'),
+    newDescribeFolder,
+    DescribeFolderResponse (DescribeFolderResponse'),
+    newDescribeFolderResponse,
+
+    -- ** DescribeFolderPermissions
+    DescribeFolderPermissions (DescribeFolderPermissions'),
+    newDescribeFolderPermissions,
+    DescribeFolderPermissionsResponse (DescribeFolderPermissionsResponse'),
+    newDescribeFolderPermissionsResponse,
+
+    -- ** DescribeFolderResolvedPermissions
+    DescribeFolderResolvedPermissions (DescribeFolderResolvedPermissions'),
+    newDescribeFolderResolvedPermissions,
+    DescribeFolderResolvedPermissionsResponse (DescribeFolderResolvedPermissionsResponse'),
+    newDescribeFolderResolvedPermissionsResponse,
+
+    -- ** DescribeGroup
+    DescribeGroup (DescribeGroup'),
+    newDescribeGroup,
+    DescribeGroupResponse (DescribeGroupResponse'),
+    newDescribeGroupResponse,
+
+    -- ** DescribeGroupMembership
+    DescribeGroupMembership (DescribeGroupMembership'),
+    newDescribeGroupMembership,
+    DescribeGroupMembershipResponse (DescribeGroupMembershipResponse'),
+    newDescribeGroupMembershipResponse,
+
+    -- ** DescribeIAMPolicyAssignment
+    DescribeIAMPolicyAssignment (DescribeIAMPolicyAssignment'),
+    newDescribeIAMPolicyAssignment,
+    DescribeIAMPolicyAssignmentResponse (DescribeIAMPolicyAssignmentResponse'),
+    newDescribeIAMPolicyAssignmentResponse,
+
+    -- ** DescribeIngestion
+    DescribeIngestion (DescribeIngestion'),
+    newDescribeIngestion,
+    DescribeIngestionResponse (DescribeIngestionResponse'),
+    newDescribeIngestionResponse,
+
+    -- ** DescribeIpRestriction
+    DescribeIpRestriction (DescribeIpRestriction'),
+    newDescribeIpRestriction,
+    DescribeIpRestrictionResponse (DescribeIpRestrictionResponse'),
+    newDescribeIpRestrictionResponse,
+
+    -- ** DescribeNamespace
+    DescribeNamespace (DescribeNamespace'),
+    newDescribeNamespace,
+    DescribeNamespaceResponse (DescribeNamespaceResponse'),
+    newDescribeNamespaceResponse,
+
+    -- ** DescribeTemplate
+    DescribeTemplate (DescribeTemplate'),
+    newDescribeTemplate,
+    DescribeTemplateResponse (DescribeTemplateResponse'),
+    newDescribeTemplateResponse,
+
+    -- ** DescribeTemplateAlias
+    DescribeTemplateAlias (DescribeTemplateAlias'),
+    newDescribeTemplateAlias,
+    DescribeTemplateAliasResponse (DescribeTemplateAliasResponse'),
+    newDescribeTemplateAliasResponse,
+
+    -- ** DescribeTemplateDefinition
+    DescribeTemplateDefinition (DescribeTemplateDefinition'),
+    newDescribeTemplateDefinition,
+    DescribeTemplateDefinitionResponse (DescribeTemplateDefinitionResponse'),
+    newDescribeTemplateDefinitionResponse,
+
+    -- ** DescribeTemplatePermissions
+    DescribeTemplatePermissions (DescribeTemplatePermissions'),
+    newDescribeTemplatePermissions,
+    DescribeTemplatePermissionsResponse (DescribeTemplatePermissionsResponse'),
+    newDescribeTemplatePermissionsResponse,
+
+    -- ** DescribeTheme
+    DescribeTheme (DescribeTheme'),
+    newDescribeTheme,
+    DescribeThemeResponse (DescribeThemeResponse'),
+    newDescribeThemeResponse,
+
+    -- ** DescribeThemeAlias
+    DescribeThemeAlias (DescribeThemeAlias'),
+    newDescribeThemeAlias,
+    DescribeThemeAliasResponse (DescribeThemeAliasResponse'),
+    newDescribeThemeAliasResponse,
+
+    -- ** DescribeThemePermissions
+    DescribeThemePermissions (DescribeThemePermissions'),
+    newDescribeThemePermissions,
+    DescribeThemePermissionsResponse (DescribeThemePermissionsResponse'),
+    newDescribeThemePermissionsResponse,
+
+    -- ** DescribeUser
+    DescribeUser (DescribeUser'),
+    newDescribeUser,
+    DescribeUserResponse (DescribeUserResponse'),
+    newDescribeUserResponse,
+
+    -- ** GenerateEmbedUrlForAnonymousUser
+    GenerateEmbedUrlForAnonymousUser (GenerateEmbedUrlForAnonymousUser'),
+    newGenerateEmbedUrlForAnonymousUser,
+    GenerateEmbedUrlForAnonymousUserResponse (GenerateEmbedUrlForAnonymousUserResponse'),
+    newGenerateEmbedUrlForAnonymousUserResponse,
+
+    -- ** GenerateEmbedUrlForRegisteredUser
+    GenerateEmbedUrlForRegisteredUser (GenerateEmbedUrlForRegisteredUser'),
+    newGenerateEmbedUrlForRegisteredUser,
+    GenerateEmbedUrlForRegisteredUserResponse (GenerateEmbedUrlForRegisteredUserResponse'),
+    newGenerateEmbedUrlForRegisteredUserResponse,
+
+    -- ** GetDashboardEmbedUrl
+    GetDashboardEmbedUrl (GetDashboardEmbedUrl'),
+    newGetDashboardEmbedUrl,
+    GetDashboardEmbedUrlResponse (GetDashboardEmbedUrlResponse'),
+    newGetDashboardEmbedUrlResponse,
+
+    -- ** GetSessionEmbedUrl
+    GetSessionEmbedUrl (GetSessionEmbedUrl'),
+    newGetSessionEmbedUrl,
+    GetSessionEmbedUrlResponse (GetSessionEmbedUrlResponse'),
+    newGetSessionEmbedUrlResponse,
+
+    -- ** ListAnalyses (Paginated)
+    ListAnalyses (ListAnalyses'),
+    newListAnalyses,
+    ListAnalysesResponse (ListAnalysesResponse'),
+    newListAnalysesResponse,
+
+    -- ** ListDashboardVersions (Paginated)
+    ListDashboardVersions (ListDashboardVersions'),
+    newListDashboardVersions,
+    ListDashboardVersionsResponse (ListDashboardVersionsResponse'),
+    newListDashboardVersionsResponse,
+
+    -- ** ListDashboards (Paginated)
+    ListDashboards (ListDashboards'),
+    newListDashboards,
+    ListDashboardsResponse (ListDashboardsResponse'),
+    newListDashboardsResponse,
+
+    -- ** ListDataSets (Paginated)
+    ListDataSets (ListDataSets'),
+    newListDataSets,
+    ListDataSetsResponse (ListDataSetsResponse'),
+    newListDataSetsResponse,
+
+    -- ** ListDataSources (Paginated)
+    ListDataSources (ListDataSources'),
+    newListDataSources,
+    ListDataSourcesResponse (ListDataSourcesResponse'),
+    newListDataSourcesResponse,
+
+    -- ** ListFolderMembers
+    ListFolderMembers (ListFolderMembers'),
+    newListFolderMembers,
+    ListFolderMembersResponse (ListFolderMembersResponse'),
+    newListFolderMembersResponse,
+
+    -- ** ListFolders
+    ListFolders (ListFolders'),
+    newListFolders,
+    ListFoldersResponse (ListFoldersResponse'),
+    newListFoldersResponse,
+
+    -- ** ListGroupMemberships
+    ListGroupMemberships (ListGroupMemberships'),
+    newListGroupMemberships,
+    ListGroupMembershipsResponse (ListGroupMembershipsResponse'),
+    newListGroupMembershipsResponse,
+
+    -- ** ListGroups
+    ListGroups (ListGroups'),
+    newListGroups,
+    ListGroupsResponse (ListGroupsResponse'),
+    newListGroupsResponse,
+
+    -- ** ListIAMPolicyAssignments
+    ListIAMPolicyAssignments (ListIAMPolicyAssignments'),
+    newListIAMPolicyAssignments,
+    ListIAMPolicyAssignmentsResponse (ListIAMPolicyAssignmentsResponse'),
+    newListIAMPolicyAssignmentsResponse,
+
+    -- ** ListIAMPolicyAssignmentsForUser
+    ListIAMPolicyAssignmentsForUser (ListIAMPolicyAssignmentsForUser'),
+    newListIAMPolicyAssignmentsForUser,
+    ListIAMPolicyAssignmentsForUserResponse (ListIAMPolicyAssignmentsForUserResponse'),
+    newListIAMPolicyAssignmentsForUserResponse,
+
+    -- ** ListIngestions (Paginated)
+    ListIngestions (ListIngestions'),
+    newListIngestions,
+    ListIngestionsResponse (ListIngestionsResponse'),
+    newListIngestionsResponse,
+
+    -- ** ListNamespaces (Paginated)
+    ListNamespaces (ListNamespaces'),
+    newListNamespaces,
+    ListNamespacesResponse (ListNamespacesResponse'),
+    newListNamespacesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ListTemplateAliases (Paginated)
+    ListTemplateAliases (ListTemplateAliases'),
+    newListTemplateAliases,
+    ListTemplateAliasesResponse (ListTemplateAliasesResponse'),
+    newListTemplateAliasesResponse,
+
+    -- ** ListTemplateVersions (Paginated)
+    ListTemplateVersions (ListTemplateVersions'),
+    newListTemplateVersions,
+    ListTemplateVersionsResponse (ListTemplateVersionsResponse'),
+    newListTemplateVersionsResponse,
+
+    -- ** ListTemplates (Paginated)
+    ListTemplates (ListTemplates'),
+    newListTemplates,
+    ListTemplatesResponse (ListTemplatesResponse'),
+    newListTemplatesResponse,
+
+    -- ** ListThemeAliases
+    ListThemeAliases (ListThemeAliases'),
+    newListThemeAliases,
+    ListThemeAliasesResponse (ListThemeAliasesResponse'),
+    newListThemeAliasesResponse,
+
+    -- ** ListThemeVersions (Paginated)
+    ListThemeVersions (ListThemeVersions'),
+    newListThemeVersions,
+    ListThemeVersionsResponse (ListThemeVersionsResponse'),
+    newListThemeVersionsResponse,
+
+    -- ** ListThemes (Paginated)
+    ListThemes (ListThemes'),
+    newListThemes,
+    ListThemesResponse (ListThemesResponse'),
+    newListThemesResponse,
+
+    -- ** ListUserGroups
+    ListUserGroups (ListUserGroups'),
+    newListUserGroups,
+    ListUserGroupsResponse (ListUserGroupsResponse'),
+    newListUserGroupsResponse,
+
+    -- ** ListUsers
+    ListUsers (ListUsers'),
+    newListUsers,
+    ListUsersResponse (ListUsersResponse'),
+    newListUsersResponse,
+
+    -- ** RegisterUser
+    RegisterUser (RegisterUser'),
+    newRegisterUser,
+    RegisterUserResponse (RegisterUserResponse'),
+    newRegisterUserResponse,
+
+    -- ** RestoreAnalysis
+    RestoreAnalysis (RestoreAnalysis'),
+    newRestoreAnalysis,
+    RestoreAnalysisResponse (RestoreAnalysisResponse'),
+    newRestoreAnalysisResponse,
+
+    -- ** SearchAnalyses (Paginated)
+    SearchAnalyses (SearchAnalyses'),
+    newSearchAnalyses,
+    SearchAnalysesResponse (SearchAnalysesResponse'),
+    newSearchAnalysesResponse,
+
+    -- ** SearchDashboards (Paginated)
+    SearchDashboards (SearchDashboards'),
+    newSearchDashboards,
+    SearchDashboardsResponse (SearchDashboardsResponse'),
+    newSearchDashboardsResponse,
+
+    -- ** SearchDataSets (Paginated)
+    SearchDataSets (SearchDataSets'),
+    newSearchDataSets,
+    SearchDataSetsResponse (SearchDataSetsResponse'),
+    newSearchDataSetsResponse,
+
+    -- ** SearchDataSources (Paginated)
+    SearchDataSources (SearchDataSources'),
+    newSearchDataSources,
+    SearchDataSourcesResponse (SearchDataSourcesResponse'),
+    newSearchDataSourcesResponse,
+
+    -- ** SearchFolders
+    SearchFolders (SearchFolders'),
+    newSearchFolders,
+    SearchFoldersResponse (SearchFoldersResponse'),
+    newSearchFoldersResponse,
+
+    -- ** SearchGroups
+    SearchGroups (SearchGroups'),
+    newSearchGroups,
+    SearchGroupsResponse (SearchGroupsResponse'),
+    newSearchGroupsResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateAccountCustomization
+    UpdateAccountCustomization (UpdateAccountCustomization'),
+    newUpdateAccountCustomization,
+    UpdateAccountCustomizationResponse (UpdateAccountCustomizationResponse'),
+    newUpdateAccountCustomizationResponse,
+
+    -- ** UpdateAccountSettings
+    UpdateAccountSettings (UpdateAccountSettings'),
+    newUpdateAccountSettings,
+    UpdateAccountSettingsResponse (UpdateAccountSettingsResponse'),
+    newUpdateAccountSettingsResponse,
+
+    -- ** UpdateAnalysis
+    UpdateAnalysis (UpdateAnalysis'),
+    newUpdateAnalysis,
+    UpdateAnalysisResponse (UpdateAnalysisResponse'),
+    newUpdateAnalysisResponse,
+
+    -- ** UpdateAnalysisPermissions
+    UpdateAnalysisPermissions (UpdateAnalysisPermissions'),
+    newUpdateAnalysisPermissions,
+    UpdateAnalysisPermissionsResponse (UpdateAnalysisPermissionsResponse'),
+    newUpdateAnalysisPermissionsResponse,
+
+    -- ** UpdateDashboard
+    UpdateDashboard (UpdateDashboard'),
+    newUpdateDashboard,
+    UpdateDashboardResponse (UpdateDashboardResponse'),
+    newUpdateDashboardResponse,
+
+    -- ** UpdateDashboardPermissions
+    UpdateDashboardPermissions (UpdateDashboardPermissions'),
+    newUpdateDashboardPermissions,
+    UpdateDashboardPermissionsResponse (UpdateDashboardPermissionsResponse'),
+    newUpdateDashboardPermissionsResponse,
+
+    -- ** UpdateDashboardPublishedVersion
+    UpdateDashboardPublishedVersion (UpdateDashboardPublishedVersion'),
+    newUpdateDashboardPublishedVersion,
+    UpdateDashboardPublishedVersionResponse (UpdateDashboardPublishedVersionResponse'),
+    newUpdateDashboardPublishedVersionResponse,
+
+    -- ** UpdateDataSet
+    UpdateDataSet (UpdateDataSet'),
+    newUpdateDataSet,
+    UpdateDataSetResponse (UpdateDataSetResponse'),
+    newUpdateDataSetResponse,
+
+    -- ** UpdateDataSetPermissions
+    UpdateDataSetPermissions (UpdateDataSetPermissions'),
+    newUpdateDataSetPermissions,
+    UpdateDataSetPermissionsResponse (UpdateDataSetPermissionsResponse'),
+    newUpdateDataSetPermissionsResponse,
+
+    -- ** UpdateDataSource
+    UpdateDataSource (UpdateDataSource'),
+    newUpdateDataSource,
+    UpdateDataSourceResponse (UpdateDataSourceResponse'),
+    newUpdateDataSourceResponse,
+
+    -- ** UpdateDataSourcePermissions
+    UpdateDataSourcePermissions (UpdateDataSourcePermissions'),
+    newUpdateDataSourcePermissions,
+    UpdateDataSourcePermissionsResponse (UpdateDataSourcePermissionsResponse'),
+    newUpdateDataSourcePermissionsResponse,
+
+    -- ** UpdateFolder
+    UpdateFolder (UpdateFolder'),
+    newUpdateFolder,
+    UpdateFolderResponse (UpdateFolderResponse'),
+    newUpdateFolderResponse,
+
+    -- ** UpdateFolderPermissions
+    UpdateFolderPermissions (UpdateFolderPermissions'),
+    newUpdateFolderPermissions,
+    UpdateFolderPermissionsResponse (UpdateFolderPermissionsResponse'),
+    newUpdateFolderPermissionsResponse,
+
+    -- ** UpdateGroup
+    UpdateGroup (UpdateGroup'),
+    newUpdateGroup,
+    UpdateGroupResponse (UpdateGroupResponse'),
+    newUpdateGroupResponse,
+
+    -- ** UpdateIAMPolicyAssignment
+    UpdateIAMPolicyAssignment (UpdateIAMPolicyAssignment'),
+    newUpdateIAMPolicyAssignment,
+    UpdateIAMPolicyAssignmentResponse (UpdateIAMPolicyAssignmentResponse'),
+    newUpdateIAMPolicyAssignmentResponse,
+
+    -- ** UpdateIpRestriction
+    UpdateIpRestriction (UpdateIpRestriction'),
+    newUpdateIpRestriction,
+    UpdateIpRestrictionResponse (UpdateIpRestrictionResponse'),
+    newUpdateIpRestrictionResponse,
+
+    -- ** UpdatePublicSharingSettings
+    UpdatePublicSharingSettings (UpdatePublicSharingSettings'),
+    newUpdatePublicSharingSettings,
+    UpdatePublicSharingSettingsResponse (UpdatePublicSharingSettingsResponse'),
+    newUpdatePublicSharingSettingsResponse,
+
+    -- ** UpdateTemplate
+    UpdateTemplate (UpdateTemplate'),
+    newUpdateTemplate,
+    UpdateTemplateResponse (UpdateTemplateResponse'),
+    newUpdateTemplateResponse,
+
+    -- ** UpdateTemplateAlias
+    UpdateTemplateAlias (UpdateTemplateAlias'),
+    newUpdateTemplateAlias,
+    UpdateTemplateAliasResponse (UpdateTemplateAliasResponse'),
+    newUpdateTemplateAliasResponse,
+
+    -- ** UpdateTemplatePermissions
+    UpdateTemplatePermissions (UpdateTemplatePermissions'),
+    newUpdateTemplatePermissions,
+    UpdateTemplatePermissionsResponse (UpdateTemplatePermissionsResponse'),
+    newUpdateTemplatePermissionsResponse,
+
+    -- ** UpdateTheme
+    UpdateTheme (UpdateTheme'),
+    newUpdateTheme,
+    UpdateThemeResponse (UpdateThemeResponse'),
+    newUpdateThemeResponse,
+
+    -- ** UpdateThemeAlias
+    UpdateThemeAlias (UpdateThemeAlias'),
+    newUpdateThemeAlias,
+    UpdateThemeAliasResponse (UpdateThemeAliasResponse'),
+    newUpdateThemeAliasResponse,
+
+    -- ** UpdateThemePermissions
+    UpdateThemePermissions (UpdateThemePermissions'),
+    newUpdateThemePermissions,
+    UpdateThemePermissionsResponse (UpdateThemePermissionsResponse'),
+    newUpdateThemePermissionsResponse,
+
+    -- ** UpdateUser
+    UpdateUser (UpdateUser'),
+    newUpdateUser,
+    UpdateUserResponse (UpdateUserResponse'),
+    newUpdateUserResponse,
+
+    -- * Types
+
+    -- ** AnalysisErrorType
+    AnalysisErrorType (..),
+
+    -- ** AnalysisFilterAttribute
+    AnalysisFilterAttribute (..),
+
+    -- ** AnchorOption
+    AnchorOption (..),
+
+    -- ** ArcThickness
+    ArcThickness (..),
+
+    -- ** ArcThicknessOptions
+    ArcThicknessOptions (..),
+
+    -- ** AssignmentStatus
+    AssignmentStatus (..),
+
+    -- ** AuthenticationMethodOption
+    AuthenticationMethodOption (..),
+
+    -- ** AxisBinding
+    AxisBinding (..),
+
+    -- ** BarChartOrientation
+    BarChartOrientation (..),
+
+    -- ** BarsArrangement
+    BarsArrangement (..),
+
+    -- ** BaseMapStyleType
+    BaseMapStyleType (..),
+
+    -- ** BoxPlotFillStyle
+    BoxPlotFillStyle (..),
+
+    -- ** CategoricalAggregationFunction
+    CategoricalAggregationFunction (..),
+
+    -- ** CategoryFilterMatchOperator
+    CategoryFilterMatchOperator (..),
+
+    -- ** CategoryFilterSelectAllOptions
+    CategoryFilterSelectAllOptions (..),
+
+    -- ** ColorFillType
+    ColorFillType (..),
+
+    -- ** ColumnDataType
+    ColumnDataType (..),
+
+    -- ** ColumnRole
+    ColumnRole (..),
+
+    -- ** ColumnTagName
+    ColumnTagName (..),
+
+    -- ** ComparisonMethod
+    ComparisonMethod (..),
+
+    -- ** ConditionalFormattingIconDisplayOption
+    ConditionalFormattingIconDisplayOption (..),
+
+    -- ** ConditionalFormattingIconSetType
+    ConditionalFormattingIconSetType (..),
+
+    -- ** CrossDatasetTypes
+    CrossDatasetTypes (..),
+
+    -- ** CustomContentImageScalingConfiguration
+    CustomContentImageScalingConfiguration (..),
+
+    -- ** CustomContentType
+    CustomContentType (..),
+
+    -- ** DashboardBehavior
+    DashboardBehavior (..),
+
+    -- ** DashboardErrorType
+    DashboardErrorType (..),
+
+    -- ** DashboardFilterAttribute
+    DashboardFilterAttribute (..),
+
+    -- ** DashboardUIState
+    DashboardUIState (..),
+
+    -- ** DataLabelContent
+    DataLabelContent (..),
+
+    -- ** DataLabelOverlap
+    DataLabelOverlap (..),
+
+    -- ** DataLabelPosition
+    DataLabelPosition (..),
+
+    -- ** DataSetFilterAttribute
+    DataSetFilterAttribute (..),
+
+    -- ** DataSetImportMode
+    DataSetImportMode (..),
+
+    -- ** DataSourceErrorInfoType
+    DataSourceErrorInfoType (..),
+
+    -- ** DataSourceFilterAttribute
+    DataSourceFilterAttribute (..),
+
+    -- ** DataSourceType
+    DataSourceType (..),
+
+    -- ** DateAggregationFunction
+    DateAggregationFunction (..),
+
+    -- ** Edition
+    Edition (..),
+
+    -- ** EmbeddingIdentityType
+    EmbeddingIdentityType (..),
+
+    -- ** FileFormat
+    FileFormat (..),
+
+    -- ** FilterNullOption
+    FilterNullOption (..),
+
+    -- ** FilterOperator
+    FilterOperator (..),
+
+    -- ** FilterVisualScope
+    FilterVisualScope (..),
+
+    -- ** FolderFilterAttribute
+    FolderFilterAttribute (..),
+
+    -- ** FolderType
+    FolderType (..),
+
+    -- ** FontDecoration
+    FontDecoration (..),
+
+    -- ** FontStyle
+    FontStyle (..),
+
+    -- ** FontWeightName
+    FontWeightName (..),
+
+    -- ** ForecastComputationSeasonality
+    ForecastComputationSeasonality (..),
+
+    -- ** FunnelChartMeasureDataLabelStyle
+    FunnelChartMeasureDataLabelStyle (..),
+
+    -- ** GeoSpatialCountryCode
+    GeoSpatialCountryCode (..),
+
+    -- ** GeoSpatialDataRole
+    GeoSpatialDataRole (..),
+
+    -- ** GeospatialSelectedPointStyle
+    GeospatialSelectedPointStyle (..),
+
+    -- ** GroupFilterAttribute
+    GroupFilterAttribute (..),
+
+    -- ** GroupFilterOperator
+    GroupFilterOperator (..),
+
+    -- ** HistogramBinType
+    HistogramBinType (..),
+
+    -- ** HorizontalTextAlignment
+    HorizontalTextAlignment (..),
+
+    -- ** Icon
+    Icon (..),
+
+    -- ** IdentityStore
+    IdentityStore (..),
+
+    -- ** IdentityType
+    IdentityType (..),
+
+    -- ** IngestionErrorType
+    IngestionErrorType (..),
+
+    -- ** IngestionRequestSource
+    IngestionRequestSource (..),
+
+    -- ** IngestionRequestType
+    IngestionRequestType (..),
+
+    -- ** IngestionStatus
+    IngestionStatus (..),
+
+    -- ** IngestionType
+    IngestionType (..),
+
+    -- ** InputColumnDataType
+    InputColumnDataType (..),
+
+    -- ** JoinType
+    JoinType (..),
+
+    -- ** LayoutElementType
+    LayoutElementType (..),
+
+    -- ** LegendPosition
+    LegendPosition (..),
+
+    -- ** LineChartLineStyle
+    LineChartLineStyle (..),
+
+    -- ** LineChartMarkerShape
+    LineChartMarkerShape (..),
+
+    -- ** LineChartType
+    LineChartType (..),
+
+    -- ** LineInterpolation
+    LineInterpolation (..),
+
+    -- ** MapZoomMode
+    MapZoomMode (..),
+
+    -- ** MaximumMinimumComputationType
+    MaximumMinimumComputationType (..),
+
+    -- ** MemberType
+    MemberType (..),
+
+    -- ** MissingDataTreatmentOption
+    MissingDataTreatmentOption (..),
+
+    -- ** NamespaceErrorType
+    NamespaceErrorType (..),
+
+    -- ** NamespaceStatus
+    NamespaceStatus (..),
+
+    -- ** NegativeValueDisplayMode
+    NegativeValueDisplayMode (..),
+
+    -- ** NumberScale
+    NumberScale (..),
+
+    -- ** NumericEqualityMatchOperator
+    NumericEqualityMatchOperator (..),
+
+    -- ** NumericFilterSelectAllOptions
+    NumericFilterSelectAllOptions (..),
+
+    -- ** NumericSeparatorSymbol
+    NumericSeparatorSymbol (..),
+
+    -- ** OtherCategories
+    OtherCategories (..),
+
+    -- ** PanelBorderStyle
+    PanelBorderStyle (..),
+
+    -- ** PaperOrientation
+    PaperOrientation (..),
+
+    -- ** PaperSize
+    PaperSize (..),
+
+    -- ** ParameterValueType
+    ParameterValueType (..),
+
+    -- ** PivotTableConditionalFormattingScopeRole
+    PivotTableConditionalFormattingScopeRole (..),
+
+    -- ** PivotTableMetricPlacement
+    PivotTableMetricPlacement (..),
+
+    -- ** PivotTableSubtotalLevel
+    PivotTableSubtotalLevel (..),
+
+    -- ** PrimaryValueDisplayType
+    PrimaryValueDisplayType (..),
+
+    -- ** ReferenceLineLabelHorizontalPosition
+    ReferenceLineLabelHorizontalPosition (..),
+
+    -- ** ReferenceLineLabelVerticalPosition
+    ReferenceLineLabelVerticalPosition (..),
+
+    -- ** ReferenceLinePatternType
+    ReferenceLinePatternType (..),
+
+    -- ** ReferenceLineValueLabelRelativePosition
+    ReferenceLineValueLabelRelativePosition (..),
+
+    -- ** RelativeDateType
+    RelativeDateType (..),
+
+    -- ** RelativeFontSize
+    RelativeFontSize (..),
+
+    -- ** ResizeOption
+    ResizeOption (..),
+
+    -- ** ResourceStatus
+    ResourceStatus (..),
+
+    -- ** RowLevelPermissionFormatVersion
+    RowLevelPermissionFormatVersion (..),
+
+    -- ** RowLevelPermissionPolicy
+    RowLevelPermissionPolicy (..),
+
+    -- ** SectionPageBreakStatus
+    SectionPageBreakStatus (..),
+
+    -- ** SelectAllValueOptions
+    SelectAllValueOptions (..),
+
+    -- ** SelectedFieldOptions
+    SelectedFieldOptions (..),
+
+    -- ** SelectedTooltipType
+    SelectedTooltipType (..),
+
+    -- ** SheetContentType
+    SheetContentType (..),
+
+    -- ** SheetControlDateTimePickerType
+    SheetControlDateTimePickerType (..),
+
+    -- ** SheetControlListType
+    SheetControlListType (..),
+
+    -- ** SheetControlSliderType
+    SheetControlSliderType (..),
+
+    -- ** SimpleNumericalAggregationFunction
+    SimpleNumericalAggregationFunction (..),
+
+    -- ** SortDirection
+    SortDirection (..),
+
+    -- ** Status
+    Status (..),
+
+    -- ** TableBorderStyle
+    TableBorderStyle (..),
+
+    -- ** TableCellImageScalingConfiguration
+    TableCellImageScalingConfiguration (..),
+
+    -- ** TableFieldIconSetType
+    TableFieldIconSetType (..),
+
+    -- ** TableOrientation
+    TableOrientation (..),
+
+    -- ** TableTotalsPlacement
+    TableTotalsPlacement (..),
+
+    -- ** TableTotalsScrollStatus
+    TableTotalsScrollStatus (..),
+
+    -- ** TargetVisualOptions
+    TargetVisualOptions (..),
+
+    -- ** TemplateErrorType
+    TemplateErrorType (..),
+
+    -- ** TextQualifier
+    TextQualifier (..),
+
+    -- ** TextWrap
+    TextWrap (..),
+
+    -- ** ThemeErrorType
+    ThemeErrorType (..),
+
+    -- ** ThemeType
+    ThemeType (..),
+
+    -- ** TimeGranularity
+    TimeGranularity (..),
+
+    -- ** TooltipTitleType
+    TooltipTitleType (..),
+
+    -- ** TopBottomComputationType
+    TopBottomComputationType (..),
+
+    -- ** TopBottomSortOrder
+    TopBottomSortOrder (..),
+
+    -- ** URLTargetConfiguration
+    URLTargetConfiguration (..),
+
+    -- ** UserRole
+    UserRole (..),
+
+    -- ** ValueWhenUnsetOption
+    ValueWhenUnsetOption (..),
+
+    -- ** VerticalTextAlignment
+    VerticalTextAlignment (..),
+
+    -- ** Visibility
+    Visibility (..),
+
+    -- ** VisualCustomActionTrigger
+    VisualCustomActionTrigger (..),
+
+    -- ** WidgetStatus
+    WidgetStatus (..),
+
+    -- ** WordCloudCloudLayout
+    WordCloudCloudLayout (..),
+
+    -- ** WordCloudWordCasing
+    WordCloudWordCasing (..),
+
+    -- ** WordCloudWordOrientation
+    WordCloudWordOrientation (..),
+
+    -- ** WordCloudWordPadding
+    WordCloudWordPadding (..),
+
+    -- ** WordCloudWordScaling
+    WordCloudWordScaling (..),
+
+    -- ** AccountCustomization
+    AccountCustomization (AccountCustomization'),
+    newAccountCustomization,
+
+    -- ** AccountInfo
+    AccountInfo (AccountInfo'),
+    newAccountInfo,
+
+    -- ** AccountSettings
+    AccountSettings (AccountSettings'),
+    newAccountSettings,
+
+    -- ** ActiveIAMPolicyAssignment
+    ActiveIAMPolicyAssignment (ActiveIAMPolicyAssignment'),
+    newActiveIAMPolicyAssignment,
+
+    -- ** AdHocFilteringOption
+    AdHocFilteringOption (AdHocFilteringOption'),
+    newAdHocFilteringOption,
+
+    -- ** AggregationFunction
+    AggregationFunction (AggregationFunction'),
+    newAggregationFunction,
+
+    -- ** AggregationSortConfiguration
+    AggregationSortConfiguration (AggregationSortConfiguration'),
+    newAggregationSortConfiguration,
+
+    -- ** AmazonElasticsearchParameters
+    AmazonElasticsearchParameters (AmazonElasticsearchParameters'),
+    newAmazonElasticsearchParameters,
+
+    -- ** AmazonOpenSearchParameters
+    AmazonOpenSearchParameters (AmazonOpenSearchParameters'),
+    newAmazonOpenSearchParameters,
+
+    -- ** Analysis
+    Analysis (Analysis'),
+    newAnalysis,
+
+    -- ** AnalysisDefaults
+    AnalysisDefaults (AnalysisDefaults'),
+    newAnalysisDefaults,
+
+    -- ** AnalysisDefinition
+    AnalysisDefinition (AnalysisDefinition'),
+    newAnalysisDefinition,
+
+    -- ** AnalysisError
+    AnalysisError (AnalysisError'),
+    newAnalysisError,
+
+    -- ** AnalysisSearchFilter
+    AnalysisSearchFilter (AnalysisSearchFilter'),
+    newAnalysisSearchFilter,
+
+    -- ** AnalysisSourceEntity
+    AnalysisSourceEntity (AnalysisSourceEntity'),
+    newAnalysisSourceEntity,
+
+    -- ** AnalysisSourceTemplate
+    AnalysisSourceTemplate (AnalysisSourceTemplate'),
+    newAnalysisSourceTemplate,
+
+    -- ** AnalysisSummary
+    AnalysisSummary (AnalysisSummary'),
+    newAnalysisSummary,
+
+    -- ** AnchorDateConfiguration
+    AnchorDateConfiguration (AnchorDateConfiguration'),
+    newAnchorDateConfiguration,
+
+    -- ** AnonymousUserDashboardEmbeddingConfiguration
+    AnonymousUserDashboardEmbeddingConfiguration (AnonymousUserDashboardEmbeddingConfiguration'),
+    newAnonymousUserDashboardEmbeddingConfiguration,
+
+    -- ** AnonymousUserDashboardVisualEmbeddingConfiguration
+    AnonymousUserDashboardVisualEmbeddingConfiguration (AnonymousUserDashboardVisualEmbeddingConfiguration'),
+    newAnonymousUserDashboardVisualEmbeddingConfiguration,
+
+    -- ** AnonymousUserEmbeddingExperienceConfiguration
+    AnonymousUserEmbeddingExperienceConfiguration (AnonymousUserEmbeddingExperienceConfiguration'),
+    newAnonymousUserEmbeddingExperienceConfiguration,
+
+    -- ** AnonymousUserQSearchBarEmbeddingConfiguration
+    AnonymousUserQSearchBarEmbeddingConfiguration (AnonymousUserQSearchBarEmbeddingConfiguration'),
+    newAnonymousUserQSearchBarEmbeddingConfiguration,
+
+    -- ** ArcAxisConfiguration
+    ArcAxisConfiguration (ArcAxisConfiguration'),
+    newArcAxisConfiguration,
+
+    -- ** ArcAxisDisplayRange
+    ArcAxisDisplayRange (ArcAxisDisplayRange'),
+    newArcAxisDisplayRange,
+
+    -- ** ArcConfiguration
+    ArcConfiguration (ArcConfiguration'),
+    newArcConfiguration,
+
+    -- ** ArcOptions
+    ArcOptions (ArcOptions'),
+    newArcOptions,
+
+    -- ** AthenaParameters
+    AthenaParameters (AthenaParameters'),
+    newAthenaParameters,
+
+    -- ** AuroraParameters
+    AuroraParameters (AuroraParameters'),
+    newAuroraParameters,
+
+    -- ** AuroraPostgreSqlParameters
+    AuroraPostgreSqlParameters (AuroraPostgreSqlParameters'),
+    newAuroraPostgreSqlParameters,
+
+    -- ** AwsIotAnalyticsParameters
+    AwsIotAnalyticsParameters (AwsIotAnalyticsParameters'),
+    newAwsIotAnalyticsParameters,
+
+    -- ** AxisDataOptions
+    AxisDataOptions (AxisDataOptions'),
+    newAxisDataOptions,
+
+    -- ** AxisDisplayDataDrivenRange
+    AxisDisplayDataDrivenRange (AxisDisplayDataDrivenRange'),
+    newAxisDisplayDataDrivenRange,
+
+    -- ** AxisDisplayMinMaxRange
+    AxisDisplayMinMaxRange (AxisDisplayMinMaxRange'),
+    newAxisDisplayMinMaxRange,
+
+    -- ** AxisDisplayOptions
+    AxisDisplayOptions (AxisDisplayOptions'),
+    newAxisDisplayOptions,
+
+    -- ** AxisDisplayRange
+    AxisDisplayRange (AxisDisplayRange'),
+    newAxisDisplayRange,
+
+    -- ** AxisLabelOptions
+    AxisLabelOptions (AxisLabelOptions'),
+    newAxisLabelOptions,
+
+    -- ** AxisLabelReferenceOptions
+    AxisLabelReferenceOptions (AxisLabelReferenceOptions'),
+    newAxisLabelReferenceOptions,
+
+    -- ** AxisLinearScale
+    AxisLinearScale (AxisLinearScale'),
+    newAxisLinearScale,
+
+    -- ** AxisLogarithmicScale
+    AxisLogarithmicScale (AxisLogarithmicScale'),
+    newAxisLogarithmicScale,
+
+    -- ** AxisScale
+    AxisScale (AxisScale'),
+    newAxisScale,
+
+    -- ** AxisTickLabelOptions
+    AxisTickLabelOptions (AxisTickLabelOptions'),
+    newAxisTickLabelOptions,
+
+    -- ** BarChartAggregatedFieldWells
+    BarChartAggregatedFieldWells (BarChartAggregatedFieldWells'),
+    newBarChartAggregatedFieldWells,
+
+    -- ** BarChartConfiguration
+    BarChartConfiguration (BarChartConfiguration'),
+    newBarChartConfiguration,
+
+    -- ** BarChartFieldWells
+    BarChartFieldWells (BarChartFieldWells'),
+    newBarChartFieldWells,
+
+    -- ** BarChartSortConfiguration
+    BarChartSortConfiguration (BarChartSortConfiguration'),
+    newBarChartSortConfiguration,
+
+    -- ** BarChartVisual
+    BarChartVisual (BarChartVisual'),
+    newBarChartVisual,
+
+    -- ** BinCountOptions
+    BinCountOptions (BinCountOptions'),
+    newBinCountOptions,
+
+    -- ** BinWidthOptions
+    BinWidthOptions (BinWidthOptions'),
+    newBinWidthOptions,
+
+    -- ** BodySectionConfiguration
+    BodySectionConfiguration (BodySectionConfiguration'),
+    newBodySectionConfiguration,
+
+    -- ** BodySectionContent
+    BodySectionContent (BodySectionContent'),
+    newBodySectionContent,
+
+    -- ** BorderStyle
+    BorderStyle (BorderStyle'),
+    newBorderStyle,
+
+    -- ** BoxPlotAggregatedFieldWells
+    BoxPlotAggregatedFieldWells (BoxPlotAggregatedFieldWells'),
+    newBoxPlotAggregatedFieldWells,
+
+    -- ** BoxPlotChartConfiguration
+    BoxPlotChartConfiguration (BoxPlotChartConfiguration'),
+    newBoxPlotChartConfiguration,
+
+    -- ** BoxPlotFieldWells
+    BoxPlotFieldWells (BoxPlotFieldWells'),
+    newBoxPlotFieldWells,
+
+    -- ** BoxPlotOptions
+    BoxPlotOptions (BoxPlotOptions'),
+    newBoxPlotOptions,
+
+    -- ** BoxPlotSortConfiguration
+    BoxPlotSortConfiguration (BoxPlotSortConfiguration'),
+    newBoxPlotSortConfiguration,
+
+    -- ** BoxPlotStyleOptions
+    BoxPlotStyleOptions (BoxPlotStyleOptions'),
+    newBoxPlotStyleOptions,
+
+    -- ** BoxPlotVisual
+    BoxPlotVisual (BoxPlotVisual'),
+    newBoxPlotVisual,
+
+    -- ** CalculatedColumn
+    CalculatedColumn (CalculatedColumn'),
+    newCalculatedColumn,
+
+    -- ** CalculatedField
+    CalculatedField (CalculatedField'),
+    newCalculatedField,
+
+    -- ** CalculatedMeasureField
+    CalculatedMeasureField (CalculatedMeasureField'),
+    newCalculatedMeasureField,
+
+    -- ** CascadingControlConfiguration
+    CascadingControlConfiguration (CascadingControlConfiguration'),
+    newCascadingControlConfiguration,
+
+    -- ** CascadingControlSource
+    CascadingControlSource (CascadingControlSource'),
+    newCascadingControlSource,
+
+    -- ** CastColumnTypeOperation
+    CastColumnTypeOperation (CastColumnTypeOperation'),
+    newCastColumnTypeOperation,
+
+    -- ** CategoricalDimensionField
+    CategoricalDimensionField (CategoricalDimensionField'),
+    newCategoricalDimensionField,
+
+    -- ** CategoricalMeasureField
+    CategoricalMeasureField (CategoricalMeasureField'),
+    newCategoricalMeasureField,
+
+    -- ** CategoryDrillDownFilter
+    CategoryDrillDownFilter (CategoryDrillDownFilter'),
+    newCategoryDrillDownFilter,
+
+    -- ** CategoryFilter
+    CategoryFilter (CategoryFilter'),
+    newCategoryFilter,
+
+    -- ** CategoryFilterConfiguration
+    CategoryFilterConfiguration (CategoryFilterConfiguration'),
+    newCategoryFilterConfiguration,
+
+    -- ** ChartAxisLabelOptions
+    ChartAxisLabelOptions (ChartAxisLabelOptions'),
+    newChartAxisLabelOptions,
+
+    -- ** ClusterMarker
+    ClusterMarker (ClusterMarker'),
+    newClusterMarker,
+
+    -- ** ClusterMarkerConfiguration
+    ClusterMarkerConfiguration (ClusterMarkerConfiguration'),
+    newClusterMarkerConfiguration,
+
+    -- ** ColorScale
+    ColorScale (ColorScale'),
+    newColorScale,
+
+    -- ** ColumnConfiguration
+    ColumnConfiguration (ColumnConfiguration'),
+    newColumnConfiguration,
+
+    -- ** ColumnDescription
+    ColumnDescription (ColumnDescription'),
+    newColumnDescription,
+
+    -- ** ColumnGroup
+    ColumnGroup (ColumnGroup'),
+    newColumnGroup,
+
+    -- ** ColumnGroupColumnSchema
+    ColumnGroupColumnSchema (ColumnGroupColumnSchema'),
+    newColumnGroupColumnSchema,
+
+    -- ** ColumnGroupSchema
+    ColumnGroupSchema (ColumnGroupSchema'),
+    newColumnGroupSchema,
+
+    -- ** ColumnHierarchy
+    ColumnHierarchy (ColumnHierarchy'),
+    newColumnHierarchy,
+
+    -- ** ColumnIdentifier
+    ColumnIdentifier (ColumnIdentifier'),
+    newColumnIdentifier,
+
+    -- ** ColumnLevelPermissionRule
+    ColumnLevelPermissionRule (ColumnLevelPermissionRule'),
+    newColumnLevelPermissionRule,
+
+    -- ** ColumnSchema
+    ColumnSchema (ColumnSchema'),
+    newColumnSchema,
+
+    -- ** ColumnSort
+    ColumnSort (ColumnSort'),
+    newColumnSort,
+
+    -- ** ColumnTag
+    ColumnTag (ColumnTag'),
+    newColumnTag,
+
+    -- ** ColumnTooltipItem
+    ColumnTooltipItem (ColumnTooltipItem'),
+    newColumnTooltipItem,
+
+    -- ** ComboChartAggregatedFieldWells
+    ComboChartAggregatedFieldWells (ComboChartAggregatedFieldWells'),
+    newComboChartAggregatedFieldWells,
+
+    -- ** ComboChartConfiguration
+    ComboChartConfiguration (ComboChartConfiguration'),
+    newComboChartConfiguration,
+
+    -- ** ComboChartFieldWells
+    ComboChartFieldWells (ComboChartFieldWells'),
+    newComboChartFieldWells,
+
+    -- ** ComboChartSortConfiguration
+    ComboChartSortConfiguration (ComboChartSortConfiguration'),
+    newComboChartSortConfiguration,
+
+    -- ** ComboChartVisual
+    ComboChartVisual (ComboChartVisual'),
+    newComboChartVisual,
+
+    -- ** ComparisonConfiguration
+    ComparisonConfiguration (ComparisonConfiguration'),
+    newComparisonConfiguration,
+
+    -- ** ComparisonFormatConfiguration
+    ComparisonFormatConfiguration (ComparisonFormatConfiguration'),
+    newComparisonFormatConfiguration,
+
+    -- ** Computation
+    Computation (Computation'),
+    newComputation,
+
+    -- ** ConditionalFormattingColor
+    ConditionalFormattingColor (ConditionalFormattingColor'),
+    newConditionalFormattingColor,
+
+    -- ** ConditionalFormattingCustomIconCondition
+    ConditionalFormattingCustomIconCondition (ConditionalFormattingCustomIconCondition'),
+    newConditionalFormattingCustomIconCondition,
+
+    -- ** ConditionalFormattingCustomIconOptions
+    ConditionalFormattingCustomIconOptions (ConditionalFormattingCustomIconOptions'),
+    newConditionalFormattingCustomIconOptions,
+
+    -- ** ConditionalFormattingGradientColor
+    ConditionalFormattingGradientColor (ConditionalFormattingGradientColor'),
+    newConditionalFormattingGradientColor,
+
+    -- ** ConditionalFormattingIcon
+    ConditionalFormattingIcon (ConditionalFormattingIcon'),
+    newConditionalFormattingIcon,
+
+    -- ** ConditionalFormattingIconDisplayConfiguration
+    ConditionalFormattingIconDisplayConfiguration (ConditionalFormattingIconDisplayConfiguration'),
+    newConditionalFormattingIconDisplayConfiguration,
+
+    -- ** ConditionalFormattingIconSet
+    ConditionalFormattingIconSet (ConditionalFormattingIconSet'),
+    newConditionalFormattingIconSet,
+
+    -- ** ConditionalFormattingSolidColor
+    ConditionalFormattingSolidColor (ConditionalFormattingSolidColor'),
+    newConditionalFormattingSolidColor,
+
+    -- ** ContributionAnalysisDefault
+    ContributionAnalysisDefault (ContributionAnalysisDefault'),
+    newContributionAnalysisDefault,
+
+    -- ** CreateColumnsOperation
+    CreateColumnsOperation (CreateColumnsOperation'),
+    newCreateColumnsOperation,
+
+    -- ** CredentialPair
+    CredentialPair (CredentialPair'),
+    newCredentialPair,
+
+    -- ** CurrencyDisplayFormatConfiguration
+    CurrencyDisplayFormatConfiguration (CurrencyDisplayFormatConfiguration'),
+    newCurrencyDisplayFormatConfiguration,
+
+    -- ** CustomActionFilterOperation
+    CustomActionFilterOperation (CustomActionFilterOperation'),
+    newCustomActionFilterOperation,
+
+    -- ** CustomActionNavigationOperation
+    CustomActionNavigationOperation (CustomActionNavigationOperation'),
+    newCustomActionNavigationOperation,
+
+    -- ** CustomActionSetParametersOperation
+    CustomActionSetParametersOperation (CustomActionSetParametersOperation'),
+    newCustomActionSetParametersOperation,
+
+    -- ** CustomActionURLOperation
+    CustomActionURLOperation (CustomActionURLOperation'),
+    newCustomActionURLOperation,
+
+    -- ** CustomContentConfiguration
+    CustomContentConfiguration (CustomContentConfiguration'),
+    newCustomContentConfiguration,
+
+    -- ** CustomContentVisual
+    CustomContentVisual (CustomContentVisual'),
+    newCustomContentVisual,
+
+    -- ** CustomFilterConfiguration
+    CustomFilterConfiguration (CustomFilterConfiguration'),
+    newCustomFilterConfiguration,
+
+    -- ** CustomFilterListConfiguration
+    CustomFilterListConfiguration (CustomFilterListConfiguration'),
+    newCustomFilterListConfiguration,
+
+    -- ** CustomNarrativeOptions
+    CustomNarrativeOptions (CustomNarrativeOptions'),
+    newCustomNarrativeOptions,
+
+    -- ** CustomParameterValues
+    CustomParameterValues (CustomParameterValues'),
+    newCustomParameterValues,
+
+    -- ** CustomSql
+    CustomSql (CustomSql'),
+    newCustomSql,
+
+    -- ** CustomValuesConfiguration
+    CustomValuesConfiguration (CustomValuesConfiguration'),
+    newCustomValuesConfiguration,
+
+    -- ** Dashboard
+    Dashboard (Dashboard'),
+    newDashboard,
+
+    -- ** DashboardError
+    DashboardError (DashboardError'),
+    newDashboardError,
+
+    -- ** DashboardPublishOptions
+    DashboardPublishOptions (DashboardPublishOptions'),
+    newDashboardPublishOptions,
+
+    -- ** DashboardSearchFilter
+    DashboardSearchFilter (DashboardSearchFilter'),
+    newDashboardSearchFilter,
+
+    -- ** DashboardSourceEntity
+    DashboardSourceEntity (DashboardSourceEntity'),
+    newDashboardSourceEntity,
+
+    -- ** DashboardSourceTemplate
+    DashboardSourceTemplate (DashboardSourceTemplate'),
+    newDashboardSourceTemplate,
+
+    -- ** DashboardSummary
+    DashboardSummary (DashboardSummary'),
+    newDashboardSummary,
+
+    -- ** DashboardVersion
+    DashboardVersion (DashboardVersion'),
+    newDashboardVersion,
+
+    -- ** DashboardVersionDefinition
+    DashboardVersionDefinition (DashboardVersionDefinition'),
+    newDashboardVersionDefinition,
+
+    -- ** DashboardVersionSummary
+    DashboardVersionSummary (DashboardVersionSummary'),
+    newDashboardVersionSummary,
+
+    -- ** DashboardVisualId
+    DashboardVisualId (DashboardVisualId'),
+    newDashboardVisualId,
+
+    -- ** DashboardVisualPublishOptions
+    DashboardVisualPublishOptions (DashboardVisualPublishOptions'),
+    newDashboardVisualPublishOptions,
+
+    -- ** DataColor
+    DataColor (DataColor'),
+    newDataColor,
+
+    -- ** DataColorPalette
+    DataColorPalette (DataColorPalette'),
+    newDataColorPalette,
+
+    -- ** DataFieldSeriesItem
+    DataFieldSeriesItem (DataFieldSeriesItem'),
+    newDataFieldSeriesItem,
+
+    -- ** DataLabelOptions
+    DataLabelOptions (DataLabelOptions'),
+    newDataLabelOptions,
+
+    -- ** DataLabelType
+    DataLabelType (DataLabelType'),
+    newDataLabelType,
+
+    -- ** DataPathColor
+    DataPathColor (DataPathColor'),
+    newDataPathColor,
+
+    -- ** DataPathLabelType
+    DataPathLabelType (DataPathLabelType'),
+    newDataPathLabelType,
+
+    -- ** DataPathSort
+    DataPathSort (DataPathSort'),
+    newDataPathSort,
+
+    -- ** DataPathValue
+    DataPathValue (DataPathValue'),
+    newDataPathValue,
+
+    -- ** DataSet
+    DataSet (DataSet'),
+    newDataSet,
+
+    -- ** DataSetConfiguration
+    DataSetConfiguration (DataSetConfiguration'),
+    newDataSetConfiguration,
+
+    -- ** DataSetIdentifierDeclaration
+    DataSetIdentifierDeclaration (DataSetIdentifierDeclaration'),
+    newDataSetIdentifierDeclaration,
+
+    -- ** DataSetReference
+    DataSetReference (DataSetReference'),
+    newDataSetReference,
+
+    -- ** DataSetSchema
+    DataSetSchema (DataSetSchema'),
+    newDataSetSchema,
+
+    -- ** DataSetSearchFilter
+    DataSetSearchFilter (DataSetSearchFilter'),
+    newDataSetSearchFilter,
+
+    -- ** DataSetSummary
+    DataSetSummary (DataSetSummary'),
+    newDataSetSummary,
+
+    -- ** DataSetUsageConfiguration
+    DataSetUsageConfiguration (DataSetUsageConfiguration'),
+    newDataSetUsageConfiguration,
+
+    -- ** DataSource
+    DataSource (DataSource'),
+    newDataSource,
+
+    -- ** DataSourceCredentials
+    DataSourceCredentials (DataSourceCredentials'),
+    newDataSourceCredentials,
+
+    -- ** DataSourceErrorInfo
+    DataSourceErrorInfo (DataSourceErrorInfo'),
+    newDataSourceErrorInfo,
+
+    -- ** DataSourceParameters
+    DataSourceParameters (DataSourceParameters'),
+    newDataSourceParameters,
+
+    -- ** DataSourceSearchFilter
+    DataSourceSearchFilter (DataSourceSearchFilter'),
+    newDataSourceSearchFilter,
+
+    -- ** DataSourceSummary
+    DataSourceSummary (DataSourceSummary'),
+    newDataSourceSummary,
+
+    -- ** DatabricksParameters
+    DatabricksParameters (DatabricksParameters'),
+    newDatabricksParameters,
+
+    -- ** DateAxisOptions
+    DateAxisOptions (DateAxisOptions'),
+    newDateAxisOptions,
+
+    -- ** DateDimensionField
+    DateDimensionField (DateDimensionField'),
+    newDateDimensionField,
+
+    -- ** DateMeasureField
+    DateMeasureField (DateMeasureField'),
+    newDateMeasureField,
+
+    -- ** DateTimeDefaultValues
+    DateTimeDefaultValues (DateTimeDefaultValues'),
+    newDateTimeDefaultValues,
+
+    -- ** DateTimeFormatConfiguration
+    DateTimeFormatConfiguration (DateTimeFormatConfiguration'),
+    newDateTimeFormatConfiguration,
+
+    -- ** DateTimeHierarchy
+    DateTimeHierarchy (DateTimeHierarchy'),
+    newDateTimeHierarchy,
+
+    -- ** DateTimeParameter
+    DateTimeParameter (DateTimeParameter'),
+    newDateTimeParameter,
+
+    -- ** DateTimeParameterDeclaration
+    DateTimeParameterDeclaration (DateTimeParameterDeclaration'),
+    newDateTimeParameterDeclaration,
+
+    -- ** DateTimePickerControlDisplayOptions
+    DateTimePickerControlDisplayOptions (DateTimePickerControlDisplayOptions'),
+    newDateTimePickerControlDisplayOptions,
+
+    -- ** DateTimeValueWhenUnsetConfiguration
+    DateTimeValueWhenUnsetConfiguration (DateTimeValueWhenUnsetConfiguration'),
+    newDateTimeValueWhenUnsetConfiguration,
+
+    -- ** DecimalDefaultValues
+    DecimalDefaultValues (DecimalDefaultValues'),
+    newDecimalDefaultValues,
+
+    -- ** DecimalParameter
+    DecimalParameter (DecimalParameter'),
+    newDecimalParameter,
+
+    -- ** DecimalParameterDeclaration
+    DecimalParameterDeclaration (DecimalParameterDeclaration'),
+    newDecimalParameterDeclaration,
+
+    -- ** DecimalPlacesConfiguration
+    DecimalPlacesConfiguration (DecimalPlacesConfiguration'),
+    newDecimalPlacesConfiguration,
+
+    -- ** DecimalValueWhenUnsetConfiguration
+    DecimalValueWhenUnsetConfiguration (DecimalValueWhenUnsetConfiguration'),
+    newDecimalValueWhenUnsetConfiguration,
+
+    -- ** DefaultFreeFormLayoutConfiguration
+    DefaultFreeFormLayoutConfiguration (DefaultFreeFormLayoutConfiguration'),
+    newDefaultFreeFormLayoutConfiguration,
+
+    -- ** DefaultGridLayoutConfiguration
+    DefaultGridLayoutConfiguration (DefaultGridLayoutConfiguration'),
+    newDefaultGridLayoutConfiguration,
+
+    -- ** DefaultInteractiveLayoutConfiguration
+    DefaultInteractiveLayoutConfiguration (DefaultInteractiveLayoutConfiguration'),
+    newDefaultInteractiveLayoutConfiguration,
+
+    -- ** DefaultNewSheetConfiguration
+    DefaultNewSheetConfiguration (DefaultNewSheetConfiguration'),
+    newDefaultNewSheetConfiguration,
+
+    -- ** DefaultPaginatedLayoutConfiguration
+    DefaultPaginatedLayoutConfiguration (DefaultPaginatedLayoutConfiguration'),
+    newDefaultPaginatedLayoutConfiguration,
+
+    -- ** DefaultSectionBasedLayoutConfiguration
+    DefaultSectionBasedLayoutConfiguration (DefaultSectionBasedLayoutConfiguration'),
+    newDefaultSectionBasedLayoutConfiguration,
+
+    -- ** DestinationParameterValueConfiguration
+    DestinationParameterValueConfiguration (DestinationParameterValueConfiguration'),
+    newDestinationParameterValueConfiguration,
+
+    -- ** DimensionField
+    DimensionField (DimensionField'),
+    newDimensionField,
+
+    -- ** DonutCenterOptions
+    DonutCenterOptions (DonutCenterOptions'),
+    newDonutCenterOptions,
+
+    -- ** DonutOptions
+    DonutOptions (DonutOptions'),
+    newDonutOptions,
+
+    -- ** DrillDownFilter
+    DrillDownFilter (DrillDownFilter'),
+    newDrillDownFilter,
+
+    -- ** DropDownControlDisplayOptions
+    DropDownControlDisplayOptions (DropDownControlDisplayOptions'),
+    newDropDownControlDisplayOptions,
+
+    -- ** DynamicDefaultValue
+    DynamicDefaultValue (DynamicDefaultValue'),
+    newDynamicDefaultValue,
+
+    -- ** EmptyVisual
+    EmptyVisual (EmptyVisual'),
+    newEmptyVisual,
+
+    -- ** Entity
+    Entity (Entity'),
+    newEntity,
+
+    -- ** ErrorInfo
+    ErrorInfo (ErrorInfo'),
+    newErrorInfo,
+
+    -- ** ExasolParameters
+    ExasolParameters (ExasolParameters'),
+    newExasolParameters,
+
+    -- ** ExcludePeriodConfiguration
+    ExcludePeriodConfiguration (ExcludePeriodConfiguration'),
+    newExcludePeriodConfiguration,
+
+    -- ** ExplicitHierarchy
+    ExplicitHierarchy (ExplicitHierarchy'),
+    newExplicitHierarchy,
+
+    -- ** ExportHiddenFieldsOption
+    ExportHiddenFieldsOption (ExportHiddenFieldsOption'),
+    newExportHiddenFieldsOption,
+
+    -- ** ExportToCSVOption
+    ExportToCSVOption (ExportToCSVOption'),
+    newExportToCSVOption,
+
+    -- ** FieldBasedTooltip
+    FieldBasedTooltip (FieldBasedTooltip'),
+    newFieldBasedTooltip,
+
+    -- ** FieldFolder
+    FieldFolder (FieldFolder'),
+    newFieldFolder,
+
+    -- ** FieldLabelType
+    FieldLabelType (FieldLabelType'),
+    newFieldLabelType,
+
+    -- ** FieldSeriesItem
+    FieldSeriesItem (FieldSeriesItem'),
+    newFieldSeriesItem,
+
+    -- ** FieldSort
+    FieldSort (FieldSort'),
+    newFieldSort,
+
+    -- ** FieldSortOptions
+    FieldSortOptions (FieldSortOptions'),
+    newFieldSortOptions,
+
+    -- ** FieldTooltipItem
+    FieldTooltipItem (FieldTooltipItem'),
+    newFieldTooltipItem,
+
+    -- ** FilledMapAggregatedFieldWells
+    FilledMapAggregatedFieldWells (FilledMapAggregatedFieldWells'),
+    newFilledMapAggregatedFieldWells,
+
+    -- ** FilledMapConditionalFormatting
+    FilledMapConditionalFormatting (FilledMapConditionalFormatting'),
+    newFilledMapConditionalFormatting,
+
+    -- ** FilledMapConditionalFormattingOption
+    FilledMapConditionalFormattingOption (FilledMapConditionalFormattingOption'),
+    newFilledMapConditionalFormattingOption,
+
+    -- ** FilledMapConfiguration
+    FilledMapConfiguration (FilledMapConfiguration'),
+    newFilledMapConfiguration,
+
+    -- ** FilledMapFieldWells
+    FilledMapFieldWells (FilledMapFieldWells'),
+    newFilledMapFieldWells,
+
+    -- ** FilledMapShapeConditionalFormatting
+    FilledMapShapeConditionalFormatting (FilledMapShapeConditionalFormatting'),
+    newFilledMapShapeConditionalFormatting,
+
+    -- ** FilledMapSortConfiguration
+    FilledMapSortConfiguration (FilledMapSortConfiguration'),
+    newFilledMapSortConfiguration,
+
+    -- ** FilledMapVisual
+    FilledMapVisual (FilledMapVisual'),
+    newFilledMapVisual,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** FilterControl
+    FilterControl (FilterControl'),
+    newFilterControl,
+
+    -- ** FilterDateTimePickerControl
+    FilterDateTimePickerControl (FilterDateTimePickerControl'),
+    newFilterDateTimePickerControl,
+
+    -- ** FilterDropDownControl
+    FilterDropDownControl (FilterDropDownControl'),
+    newFilterDropDownControl,
+
+    -- ** FilterGroup
+    FilterGroup (FilterGroup'),
+    newFilterGroup,
+
+    -- ** FilterListConfiguration
+    FilterListConfiguration (FilterListConfiguration'),
+    newFilterListConfiguration,
+
+    -- ** FilterListControl
+    FilterListControl (FilterListControl'),
+    newFilterListControl,
+
+    -- ** FilterOperation
+    FilterOperation (FilterOperation'),
+    newFilterOperation,
+
+    -- ** FilterOperationSelectedFieldsConfiguration
+    FilterOperationSelectedFieldsConfiguration (FilterOperationSelectedFieldsConfiguration'),
+    newFilterOperationSelectedFieldsConfiguration,
+
+    -- ** FilterOperationTargetVisualsConfiguration
+    FilterOperationTargetVisualsConfiguration (FilterOperationTargetVisualsConfiguration'),
+    newFilterOperationTargetVisualsConfiguration,
+
+    -- ** FilterRelativeDateTimeControl
+    FilterRelativeDateTimeControl (FilterRelativeDateTimeControl'),
+    newFilterRelativeDateTimeControl,
+
+    -- ** FilterScopeConfiguration
+    FilterScopeConfiguration (FilterScopeConfiguration'),
+    newFilterScopeConfiguration,
+
+    -- ** FilterSelectableValues
+    FilterSelectableValues (FilterSelectableValues'),
+    newFilterSelectableValues,
+
+    -- ** FilterSliderControl
+    FilterSliderControl (FilterSliderControl'),
+    newFilterSliderControl,
+
+    -- ** FilterTextAreaControl
+    FilterTextAreaControl (FilterTextAreaControl'),
+    newFilterTextAreaControl,
+
+    -- ** FilterTextFieldControl
+    FilterTextFieldControl (FilterTextFieldControl'),
+    newFilterTextFieldControl,
+
+    -- ** Folder
+    Folder (Folder'),
+    newFolder,
+
+    -- ** FolderMember
+    FolderMember (FolderMember'),
+    newFolderMember,
+
+    -- ** FolderSearchFilter
+    FolderSearchFilter (FolderSearchFilter'),
+    newFolderSearchFilter,
+
+    -- ** FolderSummary
+    FolderSummary (FolderSummary'),
+    newFolderSummary,
+
+    -- ** Font
+    Font (Font'),
+    newFont,
+
+    -- ** FontConfiguration
+    FontConfiguration (FontConfiguration'),
+    newFontConfiguration,
+
+    -- ** FontSize
+    FontSize (FontSize'),
+    newFontSize,
+
+    -- ** FontWeight
+    FontWeight (FontWeight'),
+    newFontWeight,
+
+    -- ** ForecastComputation
+    ForecastComputation (ForecastComputation'),
+    newForecastComputation,
+
+    -- ** ForecastConfiguration
+    ForecastConfiguration (ForecastConfiguration'),
+    newForecastConfiguration,
+
+    -- ** ForecastScenario
+    ForecastScenario (ForecastScenario'),
+    newForecastScenario,
+
+    -- ** FormatConfiguration
+    FormatConfiguration (FormatConfiguration'),
+    newFormatConfiguration,
+
+    -- ** FreeFormLayoutCanvasSizeOptions
+    FreeFormLayoutCanvasSizeOptions (FreeFormLayoutCanvasSizeOptions'),
+    newFreeFormLayoutCanvasSizeOptions,
+
+    -- ** FreeFormLayoutConfiguration
+    FreeFormLayoutConfiguration (FreeFormLayoutConfiguration'),
+    newFreeFormLayoutConfiguration,
+
+    -- ** FreeFormLayoutElement
+    FreeFormLayoutElement (FreeFormLayoutElement'),
+    newFreeFormLayoutElement,
+
+    -- ** FreeFormLayoutElementBackgroundStyle
+    FreeFormLayoutElementBackgroundStyle (FreeFormLayoutElementBackgroundStyle'),
+    newFreeFormLayoutElementBackgroundStyle,
+
+    -- ** FreeFormLayoutElementBorderStyle
+    FreeFormLayoutElementBorderStyle (FreeFormLayoutElementBorderStyle'),
+    newFreeFormLayoutElementBorderStyle,
+
+    -- ** FreeFormLayoutScreenCanvasSizeOptions
+    FreeFormLayoutScreenCanvasSizeOptions (FreeFormLayoutScreenCanvasSizeOptions'),
+    newFreeFormLayoutScreenCanvasSizeOptions,
+
+    -- ** FreeFormSectionLayoutConfiguration
+    FreeFormSectionLayoutConfiguration (FreeFormSectionLayoutConfiguration'),
+    newFreeFormSectionLayoutConfiguration,
+
+    -- ** FunnelChartAggregatedFieldWells
+    FunnelChartAggregatedFieldWells (FunnelChartAggregatedFieldWells'),
+    newFunnelChartAggregatedFieldWells,
+
+    -- ** FunnelChartConfiguration
+    FunnelChartConfiguration (FunnelChartConfiguration'),
+    newFunnelChartConfiguration,
+
+    -- ** FunnelChartDataLabelOptions
+    FunnelChartDataLabelOptions (FunnelChartDataLabelOptions'),
+    newFunnelChartDataLabelOptions,
+
+    -- ** FunnelChartFieldWells
+    FunnelChartFieldWells (FunnelChartFieldWells'),
+    newFunnelChartFieldWells,
+
+    -- ** FunnelChartSortConfiguration
+    FunnelChartSortConfiguration (FunnelChartSortConfiguration'),
+    newFunnelChartSortConfiguration,
+
+    -- ** FunnelChartVisual
+    FunnelChartVisual (FunnelChartVisual'),
+    newFunnelChartVisual,
+
+    -- ** GaugeChartArcConditionalFormatting
+    GaugeChartArcConditionalFormatting (GaugeChartArcConditionalFormatting'),
+    newGaugeChartArcConditionalFormatting,
+
+    -- ** GaugeChartConditionalFormatting
+    GaugeChartConditionalFormatting (GaugeChartConditionalFormatting'),
+    newGaugeChartConditionalFormatting,
+
+    -- ** GaugeChartConditionalFormattingOption
+    GaugeChartConditionalFormattingOption (GaugeChartConditionalFormattingOption'),
+    newGaugeChartConditionalFormattingOption,
+
+    -- ** GaugeChartConfiguration
+    GaugeChartConfiguration (GaugeChartConfiguration'),
+    newGaugeChartConfiguration,
+
+    -- ** GaugeChartFieldWells
+    GaugeChartFieldWells (GaugeChartFieldWells'),
+    newGaugeChartFieldWells,
+
+    -- ** GaugeChartOptions
+    GaugeChartOptions (GaugeChartOptions'),
+    newGaugeChartOptions,
+
+    -- ** GaugeChartPrimaryValueConditionalFormatting
+    GaugeChartPrimaryValueConditionalFormatting (GaugeChartPrimaryValueConditionalFormatting'),
+    newGaugeChartPrimaryValueConditionalFormatting,
+
+    -- ** GaugeChartVisual
+    GaugeChartVisual (GaugeChartVisual'),
+    newGaugeChartVisual,
+
+    -- ** GeoSpatialColumnGroup
+    GeoSpatialColumnGroup (GeoSpatialColumnGroup'),
+    newGeoSpatialColumnGroup,
+
+    -- ** GeospatialCoordinateBounds
+    GeospatialCoordinateBounds (GeospatialCoordinateBounds'),
+    newGeospatialCoordinateBounds,
+
+    -- ** GeospatialMapAggregatedFieldWells
+    GeospatialMapAggregatedFieldWells (GeospatialMapAggregatedFieldWells'),
+    newGeospatialMapAggregatedFieldWells,
+
+    -- ** GeospatialMapConfiguration
+    GeospatialMapConfiguration (GeospatialMapConfiguration'),
+    newGeospatialMapConfiguration,
+
+    -- ** GeospatialMapFieldWells
+    GeospatialMapFieldWells (GeospatialMapFieldWells'),
+    newGeospatialMapFieldWells,
+
+    -- ** GeospatialMapStyleOptions
+    GeospatialMapStyleOptions (GeospatialMapStyleOptions'),
+    newGeospatialMapStyleOptions,
+
+    -- ** GeospatialMapVisual
+    GeospatialMapVisual (GeospatialMapVisual'),
+    newGeospatialMapVisual,
+
+    -- ** GeospatialPointStyleOptions
+    GeospatialPointStyleOptions (GeospatialPointStyleOptions'),
+    newGeospatialPointStyleOptions,
+
+    -- ** GeospatialWindowOptions
+    GeospatialWindowOptions (GeospatialWindowOptions'),
+    newGeospatialWindowOptions,
+
+    -- ** GlobalTableBorderOptions
+    GlobalTableBorderOptions (GlobalTableBorderOptions'),
+    newGlobalTableBorderOptions,
+
+    -- ** GradientColor
+    GradientColor (GradientColor'),
+    newGradientColor,
+
+    -- ** GradientStop
+    GradientStop (GradientStop'),
+    newGradientStop,
+
+    -- ** GridLayoutCanvasSizeOptions
+    GridLayoutCanvasSizeOptions (GridLayoutCanvasSizeOptions'),
+    newGridLayoutCanvasSizeOptions,
+
+    -- ** GridLayoutConfiguration
+    GridLayoutConfiguration (GridLayoutConfiguration'),
+    newGridLayoutConfiguration,
+
+    -- ** GridLayoutElement
+    GridLayoutElement (GridLayoutElement'),
+    newGridLayoutElement,
+
+    -- ** GridLayoutScreenCanvasSizeOptions
+    GridLayoutScreenCanvasSizeOptions (GridLayoutScreenCanvasSizeOptions'),
+    newGridLayoutScreenCanvasSizeOptions,
+
+    -- ** Group
+    Group (Group'),
+    newGroup,
+
+    -- ** GroupMember
+    GroupMember (GroupMember'),
+    newGroupMember,
+
+    -- ** GroupSearchFilter
+    GroupSearchFilter (GroupSearchFilter'),
+    newGroupSearchFilter,
+
+    -- ** GrowthRateComputation
+    GrowthRateComputation (GrowthRateComputation'),
+    newGrowthRateComputation,
+
+    -- ** GutterStyle
+    GutterStyle (GutterStyle'),
+    newGutterStyle,
+
+    -- ** HeaderFooterSectionConfiguration
+    HeaderFooterSectionConfiguration (HeaderFooterSectionConfiguration'),
+    newHeaderFooterSectionConfiguration,
+
+    -- ** HeatMapAggregatedFieldWells
+    HeatMapAggregatedFieldWells (HeatMapAggregatedFieldWells'),
+    newHeatMapAggregatedFieldWells,
+
+    -- ** HeatMapConfiguration
+    HeatMapConfiguration (HeatMapConfiguration'),
+    newHeatMapConfiguration,
+
+    -- ** HeatMapFieldWells
+    HeatMapFieldWells (HeatMapFieldWells'),
+    newHeatMapFieldWells,
+
+    -- ** HeatMapSortConfiguration
+    HeatMapSortConfiguration (HeatMapSortConfiguration'),
+    newHeatMapSortConfiguration,
+
+    -- ** HeatMapVisual
+    HeatMapVisual (HeatMapVisual'),
+    newHeatMapVisual,
+
+    -- ** HistogramAggregatedFieldWells
+    HistogramAggregatedFieldWells (HistogramAggregatedFieldWells'),
+    newHistogramAggregatedFieldWells,
+
+    -- ** HistogramBinOptions
+    HistogramBinOptions (HistogramBinOptions'),
+    newHistogramBinOptions,
+
+    -- ** HistogramConfiguration
+    HistogramConfiguration (HistogramConfiguration'),
+    newHistogramConfiguration,
+
+    -- ** HistogramFieldWells
+    HistogramFieldWells (HistogramFieldWells'),
+    newHistogramFieldWells,
+
+    -- ** HistogramVisual
+    HistogramVisual (HistogramVisual'),
+    newHistogramVisual,
+
+    -- ** IAMPolicyAssignment
+    IAMPolicyAssignment (IAMPolicyAssignment'),
+    newIAMPolicyAssignment,
+
+    -- ** IAMPolicyAssignmentSummary
+    IAMPolicyAssignmentSummary (IAMPolicyAssignmentSummary'),
+    newIAMPolicyAssignmentSummary,
+
+    -- ** Ingestion
+    Ingestion (Ingestion'),
+    newIngestion,
+
+    -- ** InputColumn
+    InputColumn (InputColumn'),
+    newInputColumn,
+
+    -- ** InsightConfiguration
+    InsightConfiguration (InsightConfiguration'),
+    newInsightConfiguration,
+
+    -- ** InsightVisual
+    InsightVisual (InsightVisual'),
+    newInsightVisual,
+
+    -- ** IntegerDefaultValues
+    IntegerDefaultValues (IntegerDefaultValues'),
+    newIntegerDefaultValues,
+
+    -- ** IntegerParameter
+    IntegerParameter (IntegerParameter'),
+    newIntegerParameter,
+
+    -- ** IntegerParameterDeclaration
+    IntegerParameterDeclaration (IntegerParameterDeclaration'),
+    newIntegerParameterDeclaration,
+
+    -- ** IntegerValueWhenUnsetConfiguration
+    IntegerValueWhenUnsetConfiguration (IntegerValueWhenUnsetConfiguration'),
+    newIntegerValueWhenUnsetConfiguration,
+
+    -- ** ItemsLimitConfiguration
+    ItemsLimitConfiguration (ItemsLimitConfiguration'),
+    newItemsLimitConfiguration,
+
+    -- ** JiraParameters
+    JiraParameters (JiraParameters'),
+    newJiraParameters,
+
+    -- ** JoinInstruction
+    JoinInstruction (JoinInstruction'),
+    newJoinInstruction,
+
+    -- ** JoinKeyProperties
+    JoinKeyProperties (JoinKeyProperties'),
+    newJoinKeyProperties,
+
+    -- ** KPIConditionalFormatting
+    KPIConditionalFormatting (KPIConditionalFormatting'),
+    newKPIConditionalFormatting,
+
+    -- ** KPIConditionalFormattingOption
+    KPIConditionalFormattingOption (KPIConditionalFormattingOption'),
+    newKPIConditionalFormattingOption,
+
+    -- ** KPIConfiguration
+    KPIConfiguration (KPIConfiguration'),
+    newKPIConfiguration,
+
+    -- ** KPIFieldWells
+    KPIFieldWells (KPIFieldWells'),
+    newKPIFieldWells,
+
+    -- ** KPIOptions
+    KPIOptions (KPIOptions'),
+    newKPIOptions,
+
+    -- ** KPIPrimaryValueConditionalFormatting
+    KPIPrimaryValueConditionalFormatting (KPIPrimaryValueConditionalFormatting'),
+    newKPIPrimaryValueConditionalFormatting,
+
+    -- ** KPIProgressBarConditionalFormatting
+    KPIProgressBarConditionalFormatting (KPIProgressBarConditionalFormatting'),
+    newKPIProgressBarConditionalFormatting,
+
+    -- ** KPISortConfiguration
+    KPISortConfiguration (KPISortConfiguration'),
+    newKPISortConfiguration,
+
+    -- ** KPIVisual
+    KPIVisual (KPIVisual'),
+    newKPIVisual,
+
+    -- ** LabelOptions
+    LabelOptions (LabelOptions'),
+    newLabelOptions,
+
+    -- ** Layout
+    Layout (Layout'),
+    newLayout,
+
+    -- ** LayoutConfiguration
+    LayoutConfiguration (LayoutConfiguration'),
+    newLayoutConfiguration,
+
+    -- ** LegendOptions
+    LegendOptions (LegendOptions'),
+    newLegendOptions,
+
+    -- ** LineChartAggregatedFieldWells
+    LineChartAggregatedFieldWells (LineChartAggregatedFieldWells'),
+    newLineChartAggregatedFieldWells,
+
+    -- ** LineChartConfiguration
+    LineChartConfiguration (LineChartConfiguration'),
+    newLineChartConfiguration,
+
+    -- ** LineChartDefaultSeriesSettings
+    LineChartDefaultSeriesSettings (LineChartDefaultSeriesSettings'),
+    newLineChartDefaultSeriesSettings,
+
+    -- ** LineChartFieldWells
+    LineChartFieldWells (LineChartFieldWells'),
+    newLineChartFieldWells,
+
+    -- ** LineChartLineStyleSettings
+    LineChartLineStyleSettings (LineChartLineStyleSettings'),
+    newLineChartLineStyleSettings,
+
+    -- ** LineChartMarkerStyleSettings
+    LineChartMarkerStyleSettings (LineChartMarkerStyleSettings'),
+    newLineChartMarkerStyleSettings,
+
+    -- ** LineChartSeriesSettings
+    LineChartSeriesSettings (LineChartSeriesSettings'),
+    newLineChartSeriesSettings,
+
+    -- ** LineChartSortConfiguration
+    LineChartSortConfiguration (LineChartSortConfiguration'),
+    newLineChartSortConfiguration,
+
+    -- ** LineChartVisual
+    LineChartVisual (LineChartVisual'),
+    newLineChartVisual,
+
+    -- ** LineSeriesAxisDisplayOptions
+    LineSeriesAxisDisplayOptions (LineSeriesAxisDisplayOptions'),
+    newLineSeriesAxisDisplayOptions,
+
+    -- ** LinkSharingConfiguration
+    LinkSharingConfiguration (LinkSharingConfiguration'),
+    newLinkSharingConfiguration,
+
+    -- ** ListControlDisplayOptions
+    ListControlDisplayOptions (ListControlDisplayOptions'),
+    newListControlDisplayOptions,
+
+    -- ** ListControlSearchOptions
+    ListControlSearchOptions (ListControlSearchOptions'),
+    newListControlSearchOptions,
+
+    -- ** ListControlSelectAllOptions
+    ListControlSelectAllOptions (ListControlSelectAllOptions'),
+    newListControlSelectAllOptions,
+
+    -- ** LoadingAnimation
+    LoadingAnimation (LoadingAnimation'),
+    newLoadingAnimation,
+
+    -- ** LocalNavigationConfiguration
+    LocalNavigationConfiguration (LocalNavigationConfiguration'),
+    newLocalNavigationConfiguration,
+
+    -- ** LogicalTable
+    LogicalTable (LogicalTable'),
+    newLogicalTable,
+
+    -- ** LogicalTableSource
+    LogicalTableSource (LogicalTableSource'),
+    newLogicalTableSource,
+
+    -- ** LongFormatText
+    LongFormatText (LongFormatText'),
+    newLongFormatText,
+
+    -- ** ManifestFileLocation
+    ManifestFileLocation (ManifestFileLocation'),
+    newManifestFileLocation,
+
+    -- ** MarginStyle
+    MarginStyle (MarginStyle'),
+    newMarginStyle,
+
+    -- ** MariaDbParameters
+    MariaDbParameters (MariaDbParameters'),
+    newMariaDbParameters,
+
+    -- ** MaximumLabelType
+    MaximumLabelType (MaximumLabelType'),
+    newMaximumLabelType,
+
+    -- ** MaximumMinimumComputation
+    MaximumMinimumComputation (MaximumMinimumComputation'),
+    newMaximumMinimumComputation,
+
+    -- ** MeasureField
+    MeasureField (MeasureField'),
+    newMeasureField,
+
+    -- ** MemberIdArnPair
+    MemberIdArnPair (MemberIdArnPair'),
+    newMemberIdArnPair,
+
+    -- ** MetricComparisonComputation
+    MetricComparisonComputation (MetricComparisonComputation'),
+    newMetricComparisonComputation,
+
+    -- ** MinimumLabelType
+    MinimumLabelType (MinimumLabelType'),
+    newMinimumLabelType,
+
+    -- ** MissingDataConfiguration
+    MissingDataConfiguration (MissingDataConfiguration'),
+    newMissingDataConfiguration,
+
+    -- ** MySqlParameters
+    MySqlParameters (MySqlParameters'),
+    newMySqlParameters,
+
+    -- ** NamespaceError
+    NamespaceError (NamespaceError'),
+    newNamespaceError,
+
+    -- ** NamespaceInfoV2
+    NamespaceInfoV2 (NamespaceInfoV2'),
+    newNamespaceInfoV2,
+
+    -- ** NegativeValueConfiguration
+    NegativeValueConfiguration (NegativeValueConfiguration'),
+    newNegativeValueConfiguration,
+
+    -- ** NullValueFormatConfiguration
+    NullValueFormatConfiguration (NullValueFormatConfiguration'),
+    newNullValueFormatConfiguration,
+
+    -- ** NumberDisplayFormatConfiguration
+    NumberDisplayFormatConfiguration (NumberDisplayFormatConfiguration'),
+    newNumberDisplayFormatConfiguration,
+
+    -- ** NumberFormatConfiguration
+    NumberFormatConfiguration (NumberFormatConfiguration'),
+    newNumberFormatConfiguration,
+
+    -- ** NumericAxisOptions
+    NumericAxisOptions (NumericAxisOptions'),
+    newNumericAxisOptions,
+
+    -- ** NumericEqualityDrillDownFilter
+    NumericEqualityDrillDownFilter (NumericEqualityDrillDownFilter'),
+    newNumericEqualityDrillDownFilter,
+
+    -- ** NumericEqualityFilter
+    NumericEqualityFilter (NumericEqualityFilter'),
+    newNumericEqualityFilter,
+
+    -- ** NumericFormatConfiguration
+    NumericFormatConfiguration (NumericFormatConfiguration'),
+    newNumericFormatConfiguration,
+
+    -- ** NumericRangeFilter
+    NumericRangeFilter (NumericRangeFilter'),
+    newNumericRangeFilter,
+
+    -- ** NumericRangeFilterValue
+    NumericRangeFilterValue (NumericRangeFilterValue'),
+    newNumericRangeFilterValue,
+
+    -- ** NumericSeparatorConfiguration
+    NumericSeparatorConfiguration (NumericSeparatorConfiguration'),
+    newNumericSeparatorConfiguration,
+
+    -- ** NumericalAggregationFunction
+    NumericalAggregationFunction (NumericalAggregationFunction'),
+    newNumericalAggregationFunction,
+
+    -- ** NumericalDimensionField
+    NumericalDimensionField (NumericalDimensionField'),
+    newNumericalDimensionField,
+
+    -- ** NumericalMeasureField
+    NumericalMeasureField (NumericalMeasureField'),
+    newNumericalMeasureField,
+
+    -- ** OracleParameters
+    OracleParameters (OracleParameters'),
+    newOracleParameters,
+
+    -- ** OutputColumn
+    OutputColumn (OutputColumn'),
+    newOutputColumn,
+
+    -- ** PaginationConfiguration
+    PaginationConfiguration (PaginationConfiguration'),
+    newPaginationConfiguration,
+
+    -- ** PanelConfiguration
+    PanelConfiguration (PanelConfiguration'),
+    newPanelConfiguration,
+
+    -- ** PanelTitleOptions
+    PanelTitleOptions (PanelTitleOptions'),
+    newPanelTitleOptions,
+
+    -- ** ParameterControl
+    ParameterControl (ParameterControl'),
+    newParameterControl,
+
+    -- ** ParameterDateTimePickerControl
+    ParameterDateTimePickerControl (ParameterDateTimePickerControl'),
+    newParameterDateTimePickerControl,
+
+    -- ** ParameterDeclaration
+    ParameterDeclaration (ParameterDeclaration'),
+    newParameterDeclaration,
+
+    -- ** ParameterDropDownControl
+    ParameterDropDownControl (ParameterDropDownControl'),
+    newParameterDropDownControl,
+
+    -- ** ParameterListControl
+    ParameterListControl (ParameterListControl'),
+    newParameterListControl,
+
+    -- ** ParameterSelectableValues
+    ParameterSelectableValues (ParameterSelectableValues'),
+    newParameterSelectableValues,
+
+    -- ** ParameterSliderControl
+    ParameterSliderControl (ParameterSliderControl'),
+    newParameterSliderControl,
+
+    -- ** ParameterTextAreaControl
+    ParameterTextAreaControl (ParameterTextAreaControl'),
+    newParameterTextAreaControl,
+
+    -- ** ParameterTextFieldControl
+    ParameterTextFieldControl (ParameterTextFieldControl'),
+    newParameterTextFieldControl,
+
+    -- ** Parameters
+    Parameters (Parameters'),
+    newParameters,
+
+    -- ** PercentVisibleRange
+    PercentVisibleRange (PercentVisibleRange'),
+    newPercentVisibleRange,
+
+    -- ** PercentageDisplayFormatConfiguration
+    PercentageDisplayFormatConfiguration (PercentageDisplayFormatConfiguration'),
+    newPercentageDisplayFormatConfiguration,
+
+    -- ** PercentileAggregation
+    PercentileAggregation (PercentileAggregation'),
+    newPercentileAggregation,
+
+    -- ** PeriodOverPeriodComputation
+    PeriodOverPeriodComputation (PeriodOverPeriodComputation'),
+    newPeriodOverPeriodComputation,
+
+    -- ** PeriodToDateComputation
+    PeriodToDateComputation (PeriodToDateComputation'),
+    newPeriodToDateComputation,
+
+    -- ** PhysicalTable
+    PhysicalTable (PhysicalTable'),
+    newPhysicalTable,
+
+    -- ** PieChartAggregatedFieldWells
+    PieChartAggregatedFieldWells (PieChartAggregatedFieldWells'),
+    newPieChartAggregatedFieldWells,
+
+    -- ** PieChartConfiguration
+    PieChartConfiguration (PieChartConfiguration'),
+    newPieChartConfiguration,
+
+    -- ** PieChartFieldWells
+    PieChartFieldWells (PieChartFieldWells'),
+    newPieChartFieldWells,
+
+    -- ** PieChartSortConfiguration
+    PieChartSortConfiguration (PieChartSortConfiguration'),
+    newPieChartSortConfiguration,
+
+    -- ** PieChartVisual
+    PieChartVisual (PieChartVisual'),
+    newPieChartVisual,
+
+    -- ** PivotFieldSortOptions
+    PivotFieldSortOptions (PivotFieldSortOptions'),
+    newPivotFieldSortOptions,
+
+    -- ** PivotTableAggregatedFieldWells
+    PivotTableAggregatedFieldWells (PivotTableAggregatedFieldWells'),
+    newPivotTableAggregatedFieldWells,
+
+    -- ** PivotTableCellConditionalFormatting
+    PivotTableCellConditionalFormatting (PivotTableCellConditionalFormatting'),
+    newPivotTableCellConditionalFormatting,
+
+    -- ** PivotTableConditionalFormatting
+    PivotTableConditionalFormatting (PivotTableConditionalFormatting'),
+    newPivotTableConditionalFormatting,
+
+    -- ** PivotTableConditionalFormattingOption
+    PivotTableConditionalFormattingOption (PivotTableConditionalFormattingOption'),
+    newPivotTableConditionalFormattingOption,
+
+    -- ** PivotTableConditionalFormattingScope
+    PivotTableConditionalFormattingScope (PivotTableConditionalFormattingScope'),
+    newPivotTableConditionalFormattingScope,
+
+    -- ** PivotTableConfiguration
+    PivotTableConfiguration (PivotTableConfiguration'),
+    newPivotTableConfiguration,
+
+    -- ** PivotTableDataPathOption
+    PivotTableDataPathOption (PivotTableDataPathOption'),
+    newPivotTableDataPathOption,
+
+    -- ** PivotTableFieldOption
+    PivotTableFieldOption (PivotTableFieldOption'),
+    newPivotTableFieldOption,
+
+    -- ** PivotTableFieldOptions
+    PivotTableFieldOptions (PivotTableFieldOptions'),
+    newPivotTableFieldOptions,
+
+    -- ** PivotTableFieldSubtotalOptions
+    PivotTableFieldSubtotalOptions (PivotTableFieldSubtotalOptions'),
+    newPivotTableFieldSubtotalOptions,
+
+    -- ** PivotTableFieldWells
+    PivotTableFieldWells (PivotTableFieldWells'),
+    newPivotTableFieldWells,
+
+    -- ** PivotTableOptions
+    PivotTableOptions (PivotTableOptions'),
+    newPivotTableOptions,
+
+    -- ** PivotTablePaginatedReportOptions
+    PivotTablePaginatedReportOptions (PivotTablePaginatedReportOptions'),
+    newPivotTablePaginatedReportOptions,
+
+    -- ** PivotTableSortBy
+    PivotTableSortBy (PivotTableSortBy'),
+    newPivotTableSortBy,
+
+    -- ** PivotTableSortConfiguration
+    PivotTableSortConfiguration (PivotTableSortConfiguration'),
+    newPivotTableSortConfiguration,
+
+    -- ** PivotTableTotalOptions
+    PivotTableTotalOptions (PivotTableTotalOptions'),
+    newPivotTableTotalOptions,
+
+    -- ** PivotTableVisual
+    PivotTableVisual (PivotTableVisual'),
+    newPivotTableVisual,
+
+    -- ** PivotTotalOptions
+    PivotTotalOptions (PivotTotalOptions'),
+    newPivotTotalOptions,
+
+    -- ** PostgreSqlParameters
+    PostgreSqlParameters (PostgreSqlParameters'),
+    newPostgreSqlParameters,
+
+    -- ** PredefinedHierarchy
+    PredefinedHierarchy (PredefinedHierarchy'),
+    newPredefinedHierarchy,
+
+    -- ** PrestoParameters
+    PrestoParameters (PrestoParameters'),
+    newPrestoParameters,
+
+    -- ** ProgressBarOptions
+    ProgressBarOptions (ProgressBarOptions'),
+    newProgressBarOptions,
+
+    -- ** ProjectOperation
+    ProjectOperation (ProjectOperation'),
+    newProjectOperation,
+
+    -- ** QueueInfo
+    QueueInfo (QueueInfo'),
+    newQueueInfo,
+
+    -- ** RangeEndsLabelType
+    RangeEndsLabelType (RangeEndsLabelType'),
+    newRangeEndsLabelType,
+
+    -- ** RdsParameters
+    RdsParameters (RdsParameters'),
+    newRdsParameters,
+
+    -- ** RedshiftParameters
+    RedshiftParameters (RedshiftParameters'),
+    newRedshiftParameters,
+
+    -- ** ReferenceLine
+    ReferenceLine (ReferenceLine'),
+    newReferenceLine,
+
+    -- ** ReferenceLineCustomLabelConfiguration
+    ReferenceLineCustomLabelConfiguration (ReferenceLineCustomLabelConfiguration'),
+    newReferenceLineCustomLabelConfiguration,
+
+    -- ** ReferenceLineDataConfiguration
+    ReferenceLineDataConfiguration (ReferenceLineDataConfiguration'),
+    newReferenceLineDataConfiguration,
+
+    -- ** ReferenceLineDynamicDataConfiguration
+    ReferenceLineDynamicDataConfiguration (ReferenceLineDynamicDataConfiguration'),
+    newReferenceLineDynamicDataConfiguration,
+
+    -- ** ReferenceLineLabelConfiguration
+    ReferenceLineLabelConfiguration (ReferenceLineLabelConfiguration'),
+    newReferenceLineLabelConfiguration,
+
+    -- ** ReferenceLineStaticDataConfiguration
+    ReferenceLineStaticDataConfiguration (ReferenceLineStaticDataConfiguration'),
+    newReferenceLineStaticDataConfiguration,
+
+    -- ** ReferenceLineStyleConfiguration
+    ReferenceLineStyleConfiguration (ReferenceLineStyleConfiguration'),
+    newReferenceLineStyleConfiguration,
+
+    -- ** ReferenceLineValueLabelConfiguration
+    ReferenceLineValueLabelConfiguration (ReferenceLineValueLabelConfiguration'),
+    newReferenceLineValueLabelConfiguration,
+
+    -- ** RegisteredUserDashboardEmbeddingConfiguration
+    RegisteredUserDashboardEmbeddingConfiguration (RegisteredUserDashboardEmbeddingConfiguration'),
+    newRegisteredUserDashboardEmbeddingConfiguration,
+
+    -- ** RegisteredUserDashboardVisualEmbeddingConfiguration
+    RegisteredUserDashboardVisualEmbeddingConfiguration (RegisteredUserDashboardVisualEmbeddingConfiguration'),
+    newRegisteredUserDashboardVisualEmbeddingConfiguration,
+
+    -- ** RegisteredUserEmbeddingExperienceConfiguration
+    RegisteredUserEmbeddingExperienceConfiguration (RegisteredUserEmbeddingExperienceConfiguration'),
+    newRegisteredUserEmbeddingExperienceConfiguration,
+
+    -- ** RegisteredUserQSearchBarEmbeddingConfiguration
+    RegisteredUserQSearchBarEmbeddingConfiguration (RegisteredUserQSearchBarEmbeddingConfiguration'),
+    newRegisteredUserQSearchBarEmbeddingConfiguration,
+
+    -- ** RegisteredUserQuickSightConsoleEmbeddingConfiguration
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration (RegisteredUserQuickSightConsoleEmbeddingConfiguration'),
+    newRegisteredUserQuickSightConsoleEmbeddingConfiguration,
+
+    -- ** RelationalTable
+    RelationalTable (RelationalTable'),
+    newRelationalTable,
+
+    -- ** RelativeDateTimeControlDisplayOptions
+    RelativeDateTimeControlDisplayOptions (RelativeDateTimeControlDisplayOptions'),
+    newRelativeDateTimeControlDisplayOptions,
+
+    -- ** RelativeDatesFilter
+    RelativeDatesFilter (RelativeDatesFilter'),
+    newRelativeDatesFilter,
+
+    -- ** RenameColumnOperation
+    RenameColumnOperation (RenameColumnOperation'),
+    newRenameColumnOperation,
+
+    -- ** ResourcePermission
+    ResourcePermission (ResourcePermission'),
+    newResourcePermission,
+
+    -- ** RollingDateConfiguration
+    RollingDateConfiguration (RollingDateConfiguration'),
+    newRollingDateConfiguration,
+
+    -- ** RowAlternateColorOptions
+    RowAlternateColorOptions (RowAlternateColorOptions'),
+    newRowAlternateColorOptions,
+
+    -- ** RowInfo
+    RowInfo (RowInfo'),
+    newRowInfo,
+
+    -- ** RowLevelPermissionDataSet
+    RowLevelPermissionDataSet (RowLevelPermissionDataSet'),
+    newRowLevelPermissionDataSet,
+
+    -- ** RowLevelPermissionTagConfiguration
+    RowLevelPermissionTagConfiguration (RowLevelPermissionTagConfiguration'),
+    newRowLevelPermissionTagConfiguration,
+
+    -- ** RowLevelPermissionTagRule
+    RowLevelPermissionTagRule (RowLevelPermissionTagRule'),
+    newRowLevelPermissionTagRule,
+
+    -- ** S3Parameters
+    S3Parameters (S3Parameters'),
+    newS3Parameters,
+
+    -- ** S3Source
+    S3Source (S3Source'),
+    newS3Source,
+
+    -- ** SameSheetTargetVisualConfiguration
+    SameSheetTargetVisualConfiguration (SameSheetTargetVisualConfiguration'),
+    newSameSheetTargetVisualConfiguration,
+
+    -- ** SankeyDiagramAggregatedFieldWells
+    SankeyDiagramAggregatedFieldWells (SankeyDiagramAggregatedFieldWells'),
+    newSankeyDiagramAggregatedFieldWells,
+
+    -- ** SankeyDiagramChartConfiguration
+    SankeyDiagramChartConfiguration (SankeyDiagramChartConfiguration'),
+    newSankeyDiagramChartConfiguration,
+
+    -- ** SankeyDiagramFieldWells
+    SankeyDiagramFieldWells (SankeyDiagramFieldWells'),
+    newSankeyDiagramFieldWells,
+
+    -- ** SankeyDiagramSortConfiguration
+    SankeyDiagramSortConfiguration (SankeyDiagramSortConfiguration'),
+    newSankeyDiagramSortConfiguration,
+
+    -- ** SankeyDiagramVisual
+    SankeyDiagramVisual (SankeyDiagramVisual'),
+    newSankeyDiagramVisual,
+
+    -- ** ScatterPlotCategoricallyAggregatedFieldWells
+    ScatterPlotCategoricallyAggregatedFieldWells (ScatterPlotCategoricallyAggregatedFieldWells'),
+    newScatterPlotCategoricallyAggregatedFieldWells,
+
+    -- ** ScatterPlotConfiguration
+    ScatterPlotConfiguration (ScatterPlotConfiguration'),
+    newScatterPlotConfiguration,
+
+    -- ** ScatterPlotFieldWells
+    ScatterPlotFieldWells (ScatterPlotFieldWells'),
+    newScatterPlotFieldWells,
+
+    -- ** ScatterPlotUnaggregatedFieldWells
+    ScatterPlotUnaggregatedFieldWells (ScatterPlotUnaggregatedFieldWells'),
+    newScatterPlotUnaggregatedFieldWells,
+
+    -- ** ScatterPlotVisual
+    ScatterPlotVisual (ScatterPlotVisual'),
+    newScatterPlotVisual,
+
+    -- ** ScrollBarOptions
+    ScrollBarOptions (ScrollBarOptions'),
+    newScrollBarOptions,
+
+    -- ** SecondaryValueOptions
+    SecondaryValueOptions (SecondaryValueOptions'),
+    newSecondaryValueOptions,
+
+    -- ** SectionAfterPageBreak
+    SectionAfterPageBreak (SectionAfterPageBreak'),
+    newSectionAfterPageBreak,
+
+    -- ** SectionBasedLayoutCanvasSizeOptions
+    SectionBasedLayoutCanvasSizeOptions (SectionBasedLayoutCanvasSizeOptions'),
+    newSectionBasedLayoutCanvasSizeOptions,
+
+    -- ** SectionBasedLayoutConfiguration
+    SectionBasedLayoutConfiguration (SectionBasedLayoutConfiguration'),
+    newSectionBasedLayoutConfiguration,
+
+    -- ** SectionBasedLayoutPaperCanvasSizeOptions
+    SectionBasedLayoutPaperCanvasSizeOptions (SectionBasedLayoutPaperCanvasSizeOptions'),
+    newSectionBasedLayoutPaperCanvasSizeOptions,
+
+    -- ** SectionLayoutConfiguration
+    SectionLayoutConfiguration (SectionLayoutConfiguration'),
+    newSectionLayoutConfiguration,
+
+    -- ** SectionPageBreakConfiguration
+    SectionPageBreakConfiguration (SectionPageBreakConfiguration'),
+    newSectionPageBreakConfiguration,
+
+    -- ** SectionStyle
+    SectionStyle (SectionStyle'),
+    newSectionStyle,
+
+    -- ** SelectedSheetsFilterScopeConfiguration
+    SelectedSheetsFilterScopeConfiguration (SelectedSheetsFilterScopeConfiguration'),
+    newSelectedSheetsFilterScopeConfiguration,
+
+    -- ** SeriesItem
+    SeriesItem (SeriesItem'),
+    newSeriesItem,
+
+    -- ** ServiceNowParameters
+    ServiceNowParameters (ServiceNowParameters'),
+    newServiceNowParameters,
+
+    -- ** SessionTag
+    SessionTag (SessionTag'),
+    newSessionTag,
+
+    -- ** SetParameterValueConfiguration
+    SetParameterValueConfiguration (SetParameterValueConfiguration'),
+    newSetParameterValueConfiguration,
+
+    -- ** ShapeConditionalFormat
+    ShapeConditionalFormat (ShapeConditionalFormat'),
+    newShapeConditionalFormat,
+
+    -- ** Sheet
+    Sheet (Sheet'),
+    newSheet,
+
+    -- ** SheetControlLayout
+    SheetControlLayout (SheetControlLayout'),
+    newSheetControlLayout,
+
+    -- ** SheetControlLayoutConfiguration
+    SheetControlLayoutConfiguration (SheetControlLayoutConfiguration'),
+    newSheetControlLayoutConfiguration,
+
+    -- ** SheetControlsOption
+    SheetControlsOption (SheetControlsOption'),
+    newSheetControlsOption,
+
+    -- ** SheetDefinition
+    SheetDefinition (SheetDefinition'),
+    newSheetDefinition,
+
+    -- ** SheetElementConfigurationOverrides
+    SheetElementConfigurationOverrides (SheetElementConfigurationOverrides'),
+    newSheetElementConfigurationOverrides,
+
+    -- ** SheetElementRenderingRule
+    SheetElementRenderingRule (SheetElementRenderingRule'),
+    newSheetElementRenderingRule,
+
+    -- ** SheetStyle
+    SheetStyle (SheetStyle'),
+    newSheetStyle,
+
+    -- ** SheetTextBox
+    SheetTextBox (SheetTextBox'),
+    newSheetTextBox,
+
+    -- ** SheetVisualScopingConfiguration
+    SheetVisualScopingConfiguration (SheetVisualScopingConfiguration'),
+    newSheetVisualScopingConfiguration,
+
+    -- ** ShortFormatText
+    ShortFormatText (ShortFormatText'),
+    newShortFormatText,
+
+    -- ** SignupResponse
+    SignupResponse (SignupResponse'),
+    newSignupResponse,
+
+    -- ** SimpleClusterMarker
+    SimpleClusterMarker (SimpleClusterMarker'),
+    newSimpleClusterMarker,
+
+    -- ** SliderControlDisplayOptions
+    SliderControlDisplayOptions (SliderControlDisplayOptions'),
+    newSliderControlDisplayOptions,
+
+    -- ** SmallMultiplesOptions
+    SmallMultiplesOptions (SmallMultiplesOptions'),
+    newSmallMultiplesOptions,
+
+    -- ** SnowflakeParameters
+    SnowflakeParameters (SnowflakeParameters'),
+    newSnowflakeParameters,
+
+    -- ** Spacing
+    Spacing (Spacing'),
+    newSpacing,
+
+    -- ** SparkParameters
+    SparkParameters (SparkParameters'),
+    newSparkParameters,
+
+    -- ** SqlServerParameters
+    SqlServerParameters (SqlServerParameters'),
+    newSqlServerParameters,
+
+    -- ** SslProperties
+    SslProperties (SslProperties'),
+    newSslProperties,
+
+    -- ** StringDefaultValues
+    StringDefaultValues (StringDefaultValues'),
+    newStringDefaultValues,
+
+    -- ** StringFormatConfiguration
+    StringFormatConfiguration (StringFormatConfiguration'),
+    newStringFormatConfiguration,
+
+    -- ** StringParameter
+    StringParameter (StringParameter'),
+    newStringParameter,
+
+    -- ** StringParameterDeclaration
+    StringParameterDeclaration (StringParameterDeclaration'),
+    newStringParameterDeclaration,
+
+    -- ** StringValueWhenUnsetConfiguration
+    StringValueWhenUnsetConfiguration (StringValueWhenUnsetConfiguration'),
+    newStringValueWhenUnsetConfiguration,
+
+    -- ** SubtotalOptions
+    SubtotalOptions (SubtotalOptions'),
+    newSubtotalOptions,
+
+    -- ** TableAggregatedFieldWells
+    TableAggregatedFieldWells (TableAggregatedFieldWells'),
+    newTableAggregatedFieldWells,
+
+    -- ** TableBorderOptions
+    TableBorderOptions (TableBorderOptions'),
+    newTableBorderOptions,
+
+    -- ** TableCellConditionalFormatting
+    TableCellConditionalFormatting (TableCellConditionalFormatting'),
+    newTableCellConditionalFormatting,
+
+    -- ** TableCellImageSizingConfiguration
+    TableCellImageSizingConfiguration (TableCellImageSizingConfiguration'),
+    newTableCellImageSizingConfiguration,
+
+    -- ** TableCellStyle
+    TableCellStyle (TableCellStyle'),
+    newTableCellStyle,
+
+    -- ** TableConditionalFormatting
+    TableConditionalFormatting (TableConditionalFormatting'),
+    newTableConditionalFormatting,
+
+    -- ** TableConditionalFormattingOption
+    TableConditionalFormattingOption (TableConditionalFormattingOption'),
+    newTableConditionalFormattingOption,
+
+    -- ** TableConfiguration
+    TableConfiguration (TableConfiguration'),
+    newTableConfiguration,
+
+    -- ** TableFieldCustomIconContent
+    TableFieldCustomIconContent (TableFieldCustomIconContent'),
+    newTableFieldCustomIconContent,
+
+    -- ** TableFieldCustomTextContent
+    TableFieldCustomTextContent (TableFieldCustomTextContent'),
+    newTableFieldCustomTextContent,
+
+    -- ** TableFieldImageConfiguration
+    TableFieldImageConfiguration (TableFieldImageConfiguration'),
+    newTableFieldImageConfiguration,
+
+    -- ** TableFieldLinkConfiguration
+    TableFieldLinkConfiguration (TableFieldLinkConfiguration'),
+    newTableFieldLinkConfiguration,
+
+    -- ** TableFieldLinkContentConfiguration
+    TableFieldLinkContentConfiguration (TableFieldLinkContentConfiguration'),
+    newTableFieldLinkContentConfiguration,
+
+    -- ** TableFieldOption
+    TableFieldOption (TableFieldOption'),
+    newTableFieldOption,
+
+    -- ** TableFieldOptions
+    TableFieldOptions (TableFieldOptions'),
+    newTableFieldOptions,
+
+    -- ** TableFieldURLConfiguration
+    TableFieldURLConfiguration (TableFieldURLConfiguration'),
+    newTableFieldURLConfiguration,
+
+    -- ** TableFieldWells
+    TableFieldWells (TableFieldWells'),
+    newTableFieldWells,
+
+    -- ** TableOptions
+    TableOptions (TableOptions'),
+    newTableOptions,
+
+    -- ** TablePaginatedReportOptions
+    TablePaginatedReportOptions (TablePaginatedReportOptions'),
+    newTablePaginatedReportOptions,
+
+    -- ** TableRowConditionalFormatting
+    TableRowConditionalFormatting (TableRowConditionalFormatting'),
+    newTableRowConditionalFormatting,
+
+    -- ** TableSideBorderOptions
+    TableSideBorderOptions (TableSideBorderOptions'),
+    newTableSideBorderOptions,
+
+    -- ** TableSortConfiguration
+    TableSortConfiguration (TableSortConfiguration'),
+    newTableSortConfiguration,
+
+    -- ** TableUnaggregatedFieldWells
+    TableUnaggregatedFieldWells (TableUnaggregatedFieldWells'),
+    newTableUnaggregatedFieldWells,
+
+    -- ** TableVisual
+    TableVisual (TableVisual'),
+    newTableVisual,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TagColumnOperation
+    TagColumnOperation (TagColumnOperation'),
+    newTagColumnOperation,
+
+    -- ** Template
+    Template (Template'),
+    newTemplate,
+
+    -- ** TemplateAlias
+    TemplateAlias (TemplateAlias'),
+    newTemplateAlias,
+
+    -- ** TemplateError
+    TemplateError (TemplateError'),
+    newTemplateError,
+
+    -- ** TemplateSourceAnalysis
+    TemplateSourceAnalysis (TemplateSourceAnalysis'),
+    newTemplateSourceAnalysis,
+
+    -- ** TemplateSourceEntity
+    TemplateSourceEntity (TemplateSourceEntity'),
+    newTemplateSourceEntity,
+
+    -- ** TemplateSourceTemplate
+    TemplateSourceTemplate (TemplateSourceTemplate'),
+    newTemplateSourceTemplate,
+
+    -- ** TemplateSummary
+    TemplateSummary (TemplateSummary'),
+    newTemplateSummary,
+
+    -- ** TemplateVersion
+    TemplateVersion (TemplateVersion'),
+    newTemplateVersion,
+
+    -- ** TemplateVersionDefinition
+    TemplateVersionDefinition (TemplateVersionDefinition'),
+    newTemplateVersionDefinition,
+
+    -- ** TemplateVersionSummary
+    TemplateVersionSummary (TemplateVersionSummary'),
+    newTemplateVersionSummary,
+
+    -- ** TeradataParameters
+    TeradataParameters (TeradataParameters'),
+    newTeradataParameters,
+
+    -- ** TextAreaControlDisplayOptions
+    TextAreaControlDisplayOptions (TextAreaControlDisplayOptions'),
+    newTextAreaControlDisplayOptions,
+
+    -- ** TextConditionalFormat
+    TextConditionalFormat (TextConditionalFormat'),
+    newTextConditionalFormat,
+
+    -- ** TextControlPlaceholderOptions
+    TextControlPlaceholderOptions (TextControlPlaceholderOptions'),
+    newTextControlPlaceholderOptions,
+
+    -- ** TextFieldControlDisplayOptions
+    TextFieldControlDisplayOptions (TextFieldControlDisplayOptions'),
+    newTextFieldControlDisplayOptions,
+
+    -- ** Theme
+    Theme (Theme'),
+    newTheme,
+
+    -- ** ThemeAlias
+    ThemeAlias (ThemeAlias'),
+    newThemeAlias,
+
+    -- ** ThemeConfiguration
+    ThemeConfiguration (ThemeConfiguration'),
+    newThemeConfiguration,
+
+    -- ** ThemeError
+    ThemeError (ThemeError'),
+    newThemeError,
+
+    -- ** ThemeSummary
+    ThemeSummary (ThemeSummary'),
+    newThemeSummary,
+
+    -- ** ThemeVersion
+    ThemeVersion (ThemeVersion'),
+    newThemeVersion,
+
+    -- ** ThemeVersionSummary
+    ThemeVersionSummary (ThemeVersionSummary'),
+    newThemeVersionSummary,
+
+    -- ** ThousandSeparatorOptions
+    ThousandSeparatorOptions (ThousandSeparatorOptions'),
+    newThousandSeparatorOptions,
+
+    -- ** TileLayoutStyle
+    TileLayoutStyle (TileLayoutStyle'),
+    newTileLayoutStyle,
+
+    -- ** TileStyle
+    TileStyle (TileStyle'),
+    newTileStyle,
+
+    -- ** TimeBasedForecastProperties
+    TimeBasedForecastProperties (TimeBasedForecastProperties'),
+    newTimeBasedForecastProperties,
+
+    -- ** TimeEqualityFilter
+    TimeEqualityFilter (TimeEqualityFilter'),
+    newTimeEqualityFilter,
+
+    -- ** TimeRangeDrillDownFilter
+    TimeRangeDrillDownFilter (TimeRangeDrillDownFilter'),
+    newTimeRangeDrillDownFilter,
+
+    -- ** TimeRangeFilter
+    TimeRangeFilter (TimeRangeFilter'),
+    newTimeRangeFilter,
+
+    -- ** TimeRangeFilterValue
+    TimeRangeFilterValue (TimeRangeFilterValue'),
+    newTimeRangeFilterValue,
+
+    -- ** TooltipItem
+    TooltipItem (TooltipItem'),
+    newTooltipItem,
+
+    -- ** TooltipOptions
+    TooltipOptions (TooltipOptions'),
+    newTooltipOptions,
+
+    -- ** TopBottomFilter
+    TopBottomFilter (TopBottomFilter'),
+    newTopBottomFilter,
+
+    -- ** TopBottomMoversComputation
+    TopBottomMoversComputation (TopBottomMoversComputation'),
+    newTopBottomMoversComputation,
+
+    -- ** TopBottomRankedComputation
+    TopBottomRankedComputation (TopBottomRankedComputation'),
+    newTopBottomRankedComputation,
+
+    -- ** TotalAggregationComputation
+    TotalAggregationComputation (TotalAggregationComputation'),
+    newTotalAggregationComputation,
+
+    -- ** TotalOptions
+    TotalOptions (TotalOptions'),
+    newTotalOptions,
+
+    -- ** TransformOperation
+    TransformOperation (TransformOperation'),
+    newTransformOperation,
+
+    -- ** TreeMapAggregatedFieldWells
+    TreeMapAggregatedFieldWells (TreeMapAggregatedFieldWells'),
+    newTreeMapAggregatedFieldWells,
+
+    -- ** TreeMapConfiguration
+    TreeMapConfiguration (TreeMapConfiguration'),
+    newTreeMapConfiguration,
+
+    -- ** TreeMapFieldWells
+    TreeMapFieldWells (TreeMapFieldWells'),
+    newTreeMapFieldWells,
+
+    -- ** TreeMapSortConfiguration
+    TreeMapSortConfiguration (TreeMapSortConfiguration'),
+    newTreeMapSortConfiguration,
+
+    -- ** TreeMapVisual
+    TreeMapVisual (TreeMapVisual'),
+    newTreeMapVisual,
+
+    -- ** TrendArrowOptions
+    TrendArrowOptions (TrendArrowOptions'),
+    newTrendArrowOptions,
+
+    -- ** TwitterParameters
+    TwitterParameters (TwitterParameters'),
+    newTwitterParameters,
+
+    -- ** Typography
+    Typography (Typography'),
+    newTypography,
+
+    -- ** UIColorPalette
+    UIColorPalette (UIColorPalette'),
+    newUIColorPalette,
+
+    -- ** UnaggregatedField
+    UnaggregatedField (UnaggregatedField'),
+    newUnaggregatedField,
+
+    -- ** UniqueValuesComputation
+    UniqueValuesComputation (UniqueValuesComputation'),
+    newUniqueValuesComputation,
+
+    -- ** UntagColumnOperation
+    UntagColumnOperation (UntagColumnOperation'),
+    newUntagColumnOperation,
+
+    -- ** UploadSettings
+    UploadSettings (UploadSettings'),
+    newUploadSettings,
+
+    -- ** User
+    User (User'),
+    newUser,
+
+    -- ** VisibleRangeOptions
+    VisibleRangeOptions (VisibleRangeOptions'),
+    newVisibleRangeOptions,
+
+    -- ** Visual
+    Visual (Visual'),
+    newVisual,
+
+    -- ** VisualCustomAction
+    VisualCustomAction (VisualCustomAction'),
+    newVisualCustomAction,
+
+    -- ** VisualCustomActionOperation
+    VisualCustomActionOperation (VisualCustomActionOperation'),
+    newVisualCustomActionOperation,
+
+    -- ** VisualPalette
+    VisualPalette (VisualPalette'),
+    newVisualPalette,
+
+    -- ** VisualSubtitleLabelOptions
+    VisualSubtitleLabelOptions (VisualSubtitleLabelOptions'),
+    newVisualSubtitleLabelOptions,
+
+    -- ** VisualTitleLabelOptions
+    VisualTitleLabelOptions (VisualTitleLabelOptions'),
+    newVisualTitleLabelOptions,
+
+    -- ** VpcConnectionProperties
+    VpcConnectionProperties (VpcConnectionProperties'),
+    newVpcConnectionProperties,
+
+    -- ** WaterfallChartAggregatedFieldWells
+    WaterfallChartAggregatedFieldWells (WaterfallChartAggregatedFieldWells'),
+    newWaterfallChartAggregatedFieldWells,
+
+    -- ** WaterfallChartConfiguration
+    WaterfallChartConfiguration (WaterfallChartConfiguration'),
+    newWaterfallChartConfiguration,
+
+    -- ** WaterfallChartFieldWells
+    WaterfallChartFieldWells (WaterfallChartFieldWells'),
+    newWaterfallChartFieldWells,
+
+    -- ** WaterfallChartOptions
+    WaterfallChartOptions (WaterfallChartOptions'),
+    newWaterfallChartOptions,
+
+    -- ** WaterfallChartSortConfiguration
+    WaterfallChartSortConfiguration (WaterfallChartSortConfiguration'),
+    newWaterfallChartSortConfiguration,
+
+    -- ** WaterfallVisual
+    WaterfallVisual (WaterfallVisual'),
+    newWaterfallVisual,
+
+    -- ** WhatIfPointScenario
+    WhatIfPointScenario (WhatIfPointScenario'),
+    newWhatIfPointScenario,
+
+    -- ** WhatIfRangeScenario
+    WhatIfRangeScenario (WhatIfRangeScenario'),
+    newWhatIfRangeScenario,
+
+    -- ** WordCloudAggregatedFieldWells
+    WordCloudAggregatedFieldWells (WordCloudAggregatedFieldWells'),
+    newWordCloudAggregatedFieldWells,
+
+    -- ** WordCloudChartConfiguration
+    WordCloudChartConfiguration (WordCloudChartConfiguration'),
+    newWordCloudChartConfiguration,
+
+    -- ** WordCloudFieldWells
+    WordCloudFieldWells (WordCloudFieldWells'),
+    newWordCloudFieldWells,
+
+    -- ** WordCloudOptions
+    WordCloudOptions (WordCloudOptions'),
+    newWordCloudOptions,
+
+    -- ** WordCloudSortConfiguration
+    WordCloudSortConfiguration (WordCloudSortConfiguration'),
+    newWordCloudSortConfiguration,
+
+    -- ** WordCloudVisual
+    WordCloudVisual (WordCloudVisual'),
+    newWordCloudVisual,
+  )
+where
+
+import Amazonka.QuickSight.CancelIngestion
+import Amazonka.QuickSight.CreateAccountCustomization
+import Amazonka.QuickSight.CreateAccountSubscription
+import Amazonka.QuickSight.CreateAnalysis
+import Amazonka.QuickSight.CreateDashboard
+import Amazonka.QuickSight.CreateDataSet
+import Amazonka.QuickSight.CreateDataSource
+import Amazonka.QuickSight.CreateFolder
+import Amazonka.QuickSight.CreateFolderMembership
+import Amazonka.QuickSight.CreateGroup
+import Amazonka.QuickSight.CreateGroupMembership
+import Amazonka.QuickSight.CreateIAMPolicyAssignment
+import Amazonka.QuickSight.CreateIngestion
+import Amazonka.QuickSight.CreateNamespace
+import Amazonka.QuickSight.CreateTemplate
+import Amazonka.QuickSight.CreateTemplateAlias
+import Amazonka.QuickSight.CreateTheme
+import Amazonka.QuickSight.CreateThemeAlias
+import Amazonka.QuickSight.DeleteAccountCustomization
+import Amazonka.QuickSight.DeleteAccountSubscription
+import Amazonka.QuickSight.DeleteAnalysis
+import Amazonka.QuickSight.DeleteDashboard
+import Amazonka.QuickSight.DeleteDataSet
+import Amazonka.QuickSight.DeleteDataSource
+import Amazonka.QuickSight.DeleteFolder
+import Amazonka.QuickSight.DeleteFolderMembership
+import Amazonka.QuickSight.DeleteGroup
+import Amazonka.QuickSight.DeleteGroupMembership
+import Amazonka.QuickSight.DeleteIAMPolicyAssignment
+import Amazonka.QuickSight.DeleteNamespace
+import Amazonka.QuickSight.DeleteTemplate
+import Amazonka.QuickSight.DeleteTemplateAlias
+import Amazonka.QuickSight.DeleteTheme
+import Amazonka.QuickSight.DeleteThemeAlias
+import Amazonka.QuickSight.DeleteUser
+import Amazonka.QuickSight.DeleteUserByPrincipalId
+import Amazonka.QuickSight.DescribeAccountCustomization
+import Amazonka.QuickSight.DescribeAccountSettings
+import Amazonka.QuickSight.DescribeAccountSubscription
+import Amazonka.QuickSight.DescribeAnalysis
+import Amazonka.QuickSight.DescribeAnalysisDefinition
+import Amazonka.QuickSight.DescribeAnalysisPermissions
+import Amazonka.QuickSight.DescribeDashboard
+import Amazonka.QuickSight.DescribeDashboardDefinition
+import Amazonka.QuickSight.DescribeDashboardPermissions
+import Amazonka.QuickSight.DescribeDataSet
+import Amazonka.QuickSight.DescribeDataSetPermissions
+import Amazonka.QuickSight.DescribeDataSource
+import Amazonka.QuickSight.DescribeDataSourcePermissions
+import Amazonka.QuickSight.DescribeFolder
+import Amazonka.QuickSight.DescribeFolderPermissions
+import Amazonka.QuickSight.DescribeFolderResolvedPermissions
+import Amazonka.QuickSight.DescribeGroup
+import Amazonka.QuickSight.DescribeGroupMembership
+import Amazonka.QuickSight.DescribeIAMPolicyAssignment
+import Amazonka.QuickSight.DescribeIngestion
+import Amazonka.QuickSight.DescribeIpRestriction
+import Amazonka.QuickSight.DescribeNamespace
+import Amazonka.QuickSight.DescribeTemplate
+import Amazonka.QuickSight.DescribeTemplateAlias
+import Amazonka.QuickSight.DescribeTemplateDefinition
+import Amazonka.QuickSight.DescribeTemplatePermissions
+import Amazonka.QuickSight.DescribeTheme
+import Amazonka.QuickSight.DescribeThemeAlias
+import Amazonka.QuickSight.DescribeThemePermissions
+import Amazonka.QuickSight.DescribeUser
+import Amazonka.QuickSight.GenerateEmbedUrlForAnonymousUser
+import Amazonka.QuickSight.GenerateEmbedUrlForRegisteredUser
+import Amazonka.QuickSight.GetDashboardEmbedUrl
+import Amazonka.QuickSight.GetSessionEmbedUrl
+import Amazonka.QuickSight.Lens
+import Amazonka.QuickSight.ListAnalyses
+import Amazonka.QuickSight.ListDashboardVersions
+import Amazonka.QuickSight.ListDashboards
+import Amazonka.QuickSight.ListDataSets
+import Amazonka.QuickSight.ListDataSources
+import Amazonka.QuickSight.ListFolderMembers
+import Amazonka.QuickSight.ListFolders
+import Amazonka.QuickSight.ListGroupMemberships
+import Amazonka.QuickSight.ListGroups
+import Amazonka.QuickSight.ListIAMPolicyAssignments
+import Amazonka.QuickSight.ListIAMPolicyAssignmentsForUser
+import Amazonka.QuickSight.ListIngestions
+import Amazonka.QuickSight.ListNamespaces
+import Amazonka.QuickSight.ListTagsForResource
+import Amazonka.QuickSight.ListTemplateAliases
+import Amazonka.QuickSight.ListTemplateVersions
+import Amazonka.QuickSight.ListTemplates
+import Amazonka.QuickSight.ListThemeAliases
+import Amazonka.QuickSight.ListThemeVersions
+import Amazonka.QuickSight.ListThemes
+import Amazonka.QuickSight.ListUserGroups
+import Amazonka.QuickSight.ListUsers
+import Amazonka.QuickSight.RegisterUser
+import Amazonka.QuickSight.RestoreAnalysis
+import Amazonka.QuickSight.SearchAnalyses
+import Amazonka.QuickSight.SearchDashboards
+import Amazonka.QuickSight.SearchDataSets
+import Amazonka.QuickSight.SearchDataSources
+import Amazonka.QuickSight.SearchFolders
+import Amazonka.QuickSight.SearchGroups
+import Amazonka.QuickSight.TagResource
+import Amazonka.QuickSight.Types
+import Amazonka.QuickSight.UntagResource
+import Amazonka.QuickSight.UpdateAccountCustomization
+import Amazonka.QuickSight.UpdateAccountSettings
+import Amazonka.QuickSight.UpdateAnalysis
+import Amazonka.QuickSight.UpdateAnalysisPermissions
+import Amazonka.QuickSight.UpdateDashboard
+import Amazonka.QuickSight.UpdateDashboardPermissions
+import Amazonka.QuickSight.UpdateDashboardPublishedVersion
+import Amazonka.QuickSight.UpdateDataSet
+import Amazonka.QuickSight.UpdateDataSetPermissions
+import Amazonka.QuickSight.UpdateDataSource
+import Amazonka.QuickSight.UpdateDataSourcePermissions
+import Amazonka.QuickSight.UpdateFolder
+import Amazonka.QuickSight.UpdateFolderPermissions
+import Amazonka.QuickSight.UpdateGroup
+import Amazonka.QuickSight.UpdateIAMPolicyAssignment
+import Amazonka.QuickSight.UpdateIpRestriction
+import Amazonka.QuickSight.UpdatePublicSharingSettings
+import Amazonka.QuickSight.UpdateTemplate
+import Amazonka.QuickSight.UpdateTemplateAlias
+import Amazonka.QuickSight.UpdateTemplatePermissions
+import Amazonka.QuickSight.UpdateTheme
+import Amazonka.QuickSight.UpdateThemeAlias
+import Amazonka.QuickSight.UpdateThemePermissions
+import Amazonka.QuickSight.UpdateUser
+import Amazonka.QuickSight.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 'QuickSight'.
+
+-- $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/QuickSight/CancelIngestion.hs b/gen/Amazonka/QuickSight/CancelIngestion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CancelIngestion.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.QuickSight.CancelIngestion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancels an ongoing ingestion of data into SPICE.
+module Amazonka.QuickSight.CancelIngestion
+  ( -- * Creating a Request
+    CancelIngestion (..),
+    newCancelIngestion,
+
+    -- * Request Lenses
+    cancelIngestion_awsAccountId,
+    cancelIngestion_dataSetId,
+    cancelIngestion_ingestionId,
+
+    -- * Destructuring the Response
+    CancelIngestionResponse (..),
+    newCancelIngestionResponse,
+
+    -- * Response Lenses
+    cancelIngestionResponse_arn,
+    cancelIngestionResponse_ingestionId,
+    cancelIngestionResponse_requestId,
+    cancelIngestionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCancelIngestion' smart constructor.
+data CancelIngestion = CancelIngestion'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the dataset used in the ingestion.
+    dataSetId :: Prelude.Text,
+    -- | An ID for the ingestion.
+    ingestionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelIngestion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'cancelIngestion_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'cancelIngestion_dataSetId' - The ID of the dataset used in the ingestion.
+--
+-- 'ingestionId', 'cancelIngestion_ingestionId' - An ID for the ingestion.
+newCancelIngestion ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  -- | 'ingestionId'
+  Prelude.Text ->
+  CancelIngestion
+newCancelIngestion
+  pAwsAccountId_
+  pDataSetId_
+  pIngestionId_ =
+    CancelIngestion'
+      { awsAccountId = pAwsAccountId_,
+        dataSetId = pDataSetId_,
+        ingestionId = pIngestionId_
+      }
+
+-- | The Amazon Web Services account ID.
+cancelIngestion_awsAccountId :: Lens.Lens' CancelIngestion Prelude.Text
+cancelIngestion_awsAccountId = Lens.lens (\CancelIngestion' {awsAccountId} -> awsAccountId) (\s@CancelIngestion' {} a -> s {awsAccountId = a} :: CancelIngestion)
+
+-- | The ID of the dataset used in the ingestion.
+cancelIngestion_dataSetId :: Lens.Lens' CancelIngestion Prelude.Text
+cancelIngestion_dataSetId = Lens.lens (\CancelIngestion' {dataSetId} -> dataSetId) (\s@CancelIngestion' {} a -> s {dataSetId = a} :: CancelIngestion)
+
+-- | An ID for the ingestion.
+cancelIngestion_ingestionId :: Lens.Lens' CancelIngestion Prelude.Text
+cancelIngestion_ingestionId = Lens.lens (\CancelIngestion' {ingestionId} -> ingestionId) (\s@CancelIngestion' {} a -> s {ingestionId = a} :: CancelIngestion)
+
+instance Core.AWSRequest CancelIngestion where
+  type
+    AWSResponse CancelIngestion =
+      CancelIngestionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CancelIngestionResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "IngestionId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CancelIngestion where
+  hashWithSalt _salt CancelIngestion' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` ingestionId
+
+instance Prelude.NFData CancelIngestion where
+  rnf CancelIngestion' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf ingestionId
+
+instance Data.ToHeaders CancelIngestion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath CancelIngestion where
+  toPath CancelIngestion' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId,
+        "/ingestions/",
+        Data.toBS ingestionId
+      ]
+
+instance Data.ToQuery CancelIngestion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCancelIngestionResponse' smart constructor.
+data CancelIngestionResponse = CancelIngestionResponse'
+  { -- | The Amazon Resource Name (ARN) for the data ingestion.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | An ID for the ingestion.
+    ingestionId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelIngestionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'cancelIngestionResponse_arn' - The Amazon Resource Name (ARN) for the data ingestion.
+--
+-- 'ingestionId', 'cancelIngestionResponse_ingestionId' - An ID for the ingestion.
+--
+-- 'requestId', 'cancelIngestionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'cancelIngestionResponse_status' - The HTTP status of the request.
+newCancelIngestionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CancelIngestionResponse
+newCancelIngestionResponse pStatus_ =
+  CancelIngestionResponse'
+    { arn = Prelude.Nothing,
+      ingestionId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the data ingestion.
+cancelIngestionResponse_arn :: Lens.Lens' CancelIngestionResponse (Prelude.Maybe Prelude.Text)
+cancelIngestionResponse_arn = Lens.lens (\CancelIngestionResponse' {arn} -> arn) (\s@CancelIngestionResponse' {} a -> s {arn = a} :: CancelIngestionResponse)
+
+-- | An ID for the ingestion.
+cancelIngestionResponse_ingestionId :: Lens.Lens' CancelIngestionResponse (Prelude.Maybe Prelude.Text)
+cancelIngestionResponse_ingestionId = Lens.lens (\CancelIngestionResponse' {ingestionId} -> ingestionId) (\s@CancelIngestionResponse' {} a -> s {ingestionId = a} :: CancelIngestionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+cancelIngestionResponse_requestId :: Lens.Lens' CancelIngestionResponse (Prelude.Maybe Prelude.Text)
+cancelIngestionResponse_requestId = Lens.lens (\CancelIngestionResponse' {requestId} -> requestId) (\s@CancelIngestionResponse' {} a -> s {requestId = a} :: CancelIngestionResponse)
+
+-- | The HTTP status of the request.
+cancelIngestionResponse_status :: Lens.Lens' CancelIngestionResponse Prelude.Int
+cancelIngestionResponse_status = Lens.lens (\CancelIngestionResponse' {status} -> status) (\s@CancelIngestionResponse' {} a -> s {status = a} :: CancelIngestionResponse)
+
+instance Prelude.NFData CancelIngestionResponse where
+  rnf CancelIngestionResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf ingestionId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateAccountCustomization.hs b/gen/Amazonka/QuickSight/CreateAccountCustomization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateAccountCustomization.hs
@@ -0,0 +1,330 @@
+{-# 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.QuickSight.CreateAccountCustomization
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates Amazon QuickSight customizations for the current Amazon Web
+-- Services Region. Currently, you can add a custom default theme by using
+-- the @CreateAccountCustomization@ or @UpdateAccountCustomization@ API
+-- operation. To further customize Amazon QuickSight by removing Amazon
+-- QuickSight sample assets and videos for all new users, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/customizing-quicksight.html Customizing Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide./
+--
+-- You can create customizations for your Amazon Web Services account or,
+-- if you specify a namespace, for a QuickSight namespace instead.
+-- Customizations that apply to a namespace always override customizations
+-- that apply to an Amazon Web Services account. To find out which
+-- customizations apply, use the @DescribeAccountCustomization@ API
+-- operation.
+--
+-- Before you use the @CreateAccountCustomization@ API operation to add a
+-- theme as the namespace default, make sure that you first share the theme
+-- with the namespace. If you don\'t share it with the namespace, the theme
+-- isn\'t visible to your users even if you make it the default theme. To
+-- check if the theme is shared, view the current permissions by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeThemePermissions.html DescribeThemePermissions>@ @
+-- API operation. To share the theme, grant permissions by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateThemePermissions.html UpdateThemePermissions>@ @
+-- API operation.
+module Amazonka.QuickSight.CreateAccountCustomization
+  ( -- * Creating a Request
+    CreateAccountCustomization (..),
+    newCreateAccountCustomization,
+
+    -- * Request Lenses
+    createAccountCustomization_namespace,
+    createAccountCustomization_tags,
+    createAccountCustomization_awsAccountId,
+    createAccountCustomization_accountCustomization,
+
+    -- * Destructuring the Response
+    CreateAccountCustomizationResponse (..),
+    newCreateAccountCustomizationResponse,
+
+    -- * Response Lenses
+    createAccountCustomizationResponse_accountCustomization,
+    createAccountCustomizationResponse_arn,
+    createAccountCustomizationResponse_awsAccountId,
+    createAccountCustomizationResponse_namespace,
+    createAccountCustomizationResponse_requestId,
+    createAccountCustomizationResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAccountCustomization' smart constructor.
+data CreateAccountCustomization = CreateAccountCustomization'
+  { -- | The Amazon QuickSight namespace that you want to add customizations to.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | A list of the tags that you want to attach to this resource.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ID for the Amazon Web Services account that you want to customize
+    -- Amazon QuickSight for.
+    awsAccountId :: Prelude.Text,
+    -- | The Amazon QuickSight customizations you\'re adding in the current
+    -- Amazon Web Services Region. You can add these to an Amazon Web Services
+    -- account and a QuickSight namespace.
+    --
+    -- For example, you can add a default theme by setting
+    -- @AccountCustomization@ to the midnight theme:
+    -- @\"AccountCustomization\": { \"DefaultTheme\": \"arn:aws:quicksight::aws:theme\/MIDNIGHT\" }@.
+    -- Or, you can add a custom theme by specifying
+    -- @\"AccountCustomization\": { \"DefaultTheme\": \"arn:aws:quicksight:us-west-2:111122223333:theme\/bdb844d0-0fe9-4d9d-b520-0fe602d93639\" }@.
+    accountCustomization :: AccountCustomization
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAccountCustomization' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'namespace', 'createAccountCustomization_namespace' - The Amazon QuickSight namespace that you want to add customizations to.
+--
+-- 'tags', 'createAccountCustomization_tags' - A list of the tags that you want to attach to this resource.
+--
+-- 'awsAccountId', 'createAccountCustomization_awsAccountId' - The ID for the Amazon Web Services account that you want to customize
+-- Amazon QuickSight for.
+--
+-- 'accountCustomization', 'createAccountCustomization_accountCustomization' - The Amazon QuickSight customizations you\'re adding in the current
+-- Amazon Web Services Region. You can add these to an Amazon Web Services
+-- account and a QuickSight namespace.
+--
+-- For example, you can add a default theme by setting
+-- @AccountCustomization@ to the midnight theme:
+-- @\"AccountCustomization\": { \"DefaultTheme\": \"arn:aws:quicksight::aws:theme\/MIDNIGHT\" }@.
+-- Or, you can add a custom theme by specifying
+-- @\"AccountCustomization\": { \"DefaultTheme\": \"arn:aws:quicksight:us-west-2:111122223333:theme\/bdb844d0-0fe9-4d9d-b520-0fe602d93639\" }@.
+newCreateAccountCustomization ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'accountCustomization'
+  AccountCustomization ->
+  CreateAccountCustomization
+newCreateAccountCustomization
+  pAwsAccountId_
+  pAccountCustomization_ =
+    CreateAccountCustomization'
+      { namespace =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        accountCustomization = pAccountCustomization_
+      }
+
+-- | The Amazon QuickSight namespace that you want to add customizations to.
+createAccountCustomization_namespace :: Lens.Lens' CreateAccountCustomization (Prelude.Maybe Prelude.Text)
+createAccountCustomization_namespace = Lens.lens (\CreateAccountCustomization' {namespace} -> namespace) (\s@CreateAccountCustomization' {} a -> s {namespace = a} :: CreateAccountCustomization)
+
+-- | A list of the tags that you want to attach to this resource.
+createAccountCustomization_tags :: Lens.Lens' CreateAccountCustomization (Prelude.Maybe (Prelude.NonEmpty Tag))
+createAccountCustomization_tags = Lens.lens (\CreateAccountCustomization' {tags} -> tags) (\s@CreateAccountCustomization' {} a -> s {tags = a} :: CreateAccountCustomization) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID for the Amazon Web Services account that you want to customize
+-- Amazon QuickSight for.
+createAccountCustomization_awsAccountId :: Lens.Lens' CreateAccountCustomization Prelude.Text
+createAccountCustomization_awsAccountId = Lens.lens (\CreateAccountCustomization' {awsAccountId} -> awsAccountId) (\s@CreateAccountCustomization' {} a -> s {awsAccountId = a} :: CreateAccountCustomization)
+
+-- | The Amazon QuickSight customizations you\'re adding in the current
+-- Amazon Web Services Region. You can add these to an Amazon Web Services
+-- account and a QuickSight namespace.
+--
+-- For example, you can add a default theme by setting
+-- @AccountCustomization@ to the midnight theme:
+-- @\"AccountCustomization\": { \"DefaultTheme\": \"arn:aws:quicksight::aws:theme\/MIDNIGHT\" }@.
+-- Or, you can add a custom theme by specifying
+-- @\"AccountCustomization\": { \"DefaultTheme\": \"arn:aws:quicksight:us-west-2:111122223333:theme\/bdb844d0-0fe9-4d9d-b520-0fe602d93639\" }@.
+createAccountCustomization_accountCustomization :: Lens.Lens' CreateAccountCustomization AccountCustomization
+createAccountCustomization_accountCustomization = Lens.lens (\CreateAccountCustomization' {accountCustomization} -> accountCustomization) (\s@CreateAccountCustomization' {} a -> s {accountCustomization = a} :: CreateAccountCustomization)
+
+instance Core.AWSRequest CreateAccountCustomization where
+  type
+    AWSResponse CreateAccountCustomization =
+      CreateAccountCustomizationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAccountCustomizationResponse'
+            Prelude.<$> (x Data..?> "AccountCustomization")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "AwsAccountId")
+            Prelude.<*> (x Data..?> "Namespace")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAccountCustomization where
+  hashWithSalt _salt CreateAccountCustomization' {..} =
+    _salt
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` accountCustomization
+
+instance Prelude.NFData CreateAccountCustomization where
+  rnf CreateAccountCustomization' {..} =
+    Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf accountCustomization
+
+instance Data.ToHeaders CreateAccountCustomization where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAccountCustomization where
+  toJSON CreateAccountCustomization' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "AccountCustomization"
+                  Data..= accountCustomization
+              )
+          ]
+      )
+
+instance Data.ToPath CreateAccountCustomization where
+  toPath CreateAccountCustomization' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/customizations"
+      ]
+
+instance Data.ToQuery CreateAccountCustomization where
+  toQuery CreateAccountCustomization' {..} =
+    Prelude.mconcat ["namespace" Data.=: namespace]
+
+-- | /See:/ 'newCreateAccountCustomizationResponse' smart constructor.
+data CreateAccountCustomizationResponse = CreateAccountCustomizationResponse'
+  { -- | The Amazon QuickSight customizations you\'re adding in the current
+    -- Amazon Web Services Region.
+    accountCustomization :: Prelude.Maybe AccountCustomization,
+    -- | The Amazon Resource Name (ARN) for the customization that you created
+    -- for this Amazon Web Services account.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that you want to customize
+    -- Amazon QuickSight for.
+    awsAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The namespace associated with the customization you\'re creating.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAccountCustomizationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountCustomization', 'createAccountCustomizationResponse_accountCustomization' - The Amazon QuickSight customizations you\'re adding in the current
+-- Amazon Web Services Region.
+--
+-- 'arn', 'createAccountCustomizationResponse_arn' - The Amazon Resource Name (ARN) for the customization that you created
+-- for this Amazon Web Services account.
+--
+-- 'awsAccountId', 'createAccountCustomizationResponse_awsAccountId' - The ID for the Amazon Web Services account that you want to customize
+-- Amazon QuickSight for.
+--
+-- 'namespace', 'createAccountCustomizationResponse_namespace' - The namespace associated with the customization you\'re creating.
+--
+-- 'requestId', 'createAccountCustomizationResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createAccountCustomizationResponse_status' - The HTTP status of the request.
+newCreateAccountCustomizationResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateAccountCustomizationResponse
+newCreateAccountCustomizationResponse pStatus_ =
+  CreateAccountCustomizationResponse'
+    { accountCustomization =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      awsAccountId = Prelude.Nothing,
+      namespace = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon QuickSight customizations you\'re adding in the current
+-- Amazon Web Services Region.
+createAccountCustomizationResponse_accountCustomization :: Lens.Lens' CreateAccountCustomizationResponse (Prelude.Maybe AccountCustomization)
+createAccountCustomizationResponse_accountCustomization = Lens.lens (\CreateAccountCustomizationResponse' {accountCustomization} -> accountCustomization) (\s@CreateAccountCustomizationResponse' {} a -> s {accountCustomization = a} :: CreateAccountCustomizationResponse)
+
+-- | The Amazon Resource Name (ARN) for the customization that you created
+-- for this Amazon Web Services account.
+createAccountCustomizationResponse_arn :: Lens.Lens' CreateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+createAccountCustomizationResponse_arn = Lens.lens (\CreateAccountCustomizationResponse' {arn} -> arn) (\s@CreateAccountCustomizationResponse' {} a -> s {arn = a} :: CreateAccountCustomizationResponse)
+
+-- | The ID for the Amazon Web Services account that you want to customize
+-- Amazon QuickSight for.
+createAccountCustomizationResponse_awsAccountId :: Lens.Lens' CreateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+createAccountCustomizationResponse_awsAccountId = Lens.lens (\CreateAccountCustomizationResponse' {awsAccountId} -> awsAccountId) (\s@CreateAccountCustomizationResponse' {} a -> s {awsAccountId = a} :: CreateAccountCustomizationResponse)
+
+-- | The namespace associated with the customization you\'re creating.
+createAccountCustomizationResponse_namespace :: Lens.Lens' CreateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+createAccountCustomizationResponse_namespace = Lens.lens (\CreateAccountCustomizationResponse' {namespace} -> namespace) (\s@CreateAccountCustomizationResponse' {} a -> s {namespace = a} :: CreateAccountCustomizationResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createAccountCustomizationResponse_requestId :: Lens.Lens' CreateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+createAccountCustomizationResponse_requestId = Lens.lens (\CreateAccountCustomizationResponse' {requestId} -> requestId) (\s@CreateAccountCustomizationResponse' {} a -> s {requestId = a} :: CreateAccountCustomizationResponse)
+
+-- | The HTTP status of the request.
+createAccountCustomizationResponse_status :: Lens.Lens' CreateAccountCustomizationResponse Prelude.Int
+createAccountCustomizationResponse_status = Lens.lens (\CreateAccountCustomizationResponse' {status} -> status) (\s@CreateAccountCustomizationResponse' {} a -> s {status = a} :: CreateAccountCustomizationResponse)
+
+instance
+  Prelude.NFData
+    CreateAccountCustomizationResponse
+  where
+  rnf CreateAccountCustomizationResponse' {..} =
+    Prelude.rnf accountCustomization
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateAccountSubscription.hs b/gen/Amazonka/QuickSight/CreateAccountSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateAccountSubscription.hs
@@ -0,0 +1,564 @@
+{-# 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.QuickSight.CreateAccountSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon QuickSight account, or subscribes to Amazon QuickSight
+-- Q.
+--
+-- The Amazon Web Services Region for the account is derived from what is
+-- configured in the CLI or SDK. This operation isn\'t supported in the US
+-- East (Ohio) Region, South America (Sao Paulo) Region, or Asia Pacific
+-- (Singapore) Region.
+--
+-- Before you use this operation, make sure that you can connect to an
+-- existing Amazon Web Services account. If you don\'t have an Amazon Web
+-- Services account, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/setting-up-aws-sign-up.html Sign up for Amazon Web Services>
+-- in the /Amazon QuickSight User Guide/. The person who signs up for
+-- Amazon QuickSight needs to have the correct Identity and Access
+-- Management (IAM) permissions. For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html IAM Policy Examples for Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- If your IAM policy includes both the @Subscribe@ and
+-- @CreateAccountSubscription@ actions, make sure that both actions are set
+-- to @Allow@. If either action is set to @Deny@, the @Deny@ action
+-- prevails and your API call fails.
+--
+-- You can\'t pass an existing IAM role to access other Amazon Web Services
+-- services using this API operation. To pass your existing IAM role to
+-- Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html#security-create-iam-role Passing IAM roles to Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- You can\'t set default resource access on the new account from the
+-- Amazon QuickSight API. Instead, add default resource access from the
+-- Amazon QuickSight console. For more information about setting default
+-- resource access to Amazon Web Services services, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/scoping-policies-defaults.html Setting default resource access to Amazon Web Services services>
+-- in the /Amazon QuickSight User Guide/.
+module Amazonka.QuickSight.CreateAccountSubscription
+  ( -- * Creating a Request
+    CreateAccountSubscription (..),
+    newCreateAccountSubscription,
+
+    -- * Request Lenses
+    createAccountSubscription_activeDirectoryName,
+    createAccountSubscription_adminGroup,
+    createAccountSubscription_authorGroup,
+    createAccountSubscription_contactNumber,
+    createAccountSubscription_directoryId,
+    createAccountSubscription_emailAddress,
+    createAccountSubscription_firstName,
+    createAccountSubscription_lastName,
+    createAccountSubscription_readerGroup,
+    createAccountSubscription_realm,
+    createAccountSubscription_edition,
+    createAccountSubscription_authenticationMethod,
+    createAccountSubscription_awsAccountId,
+    createAccountSubscription_accountName,
+    createAccountSubscription_notificationEmail,
+
+    -- * Destructuring the Response
+    CreateAccountSubscriptionResponse (..),
+    newCreateAccountSubscriptionResponse,
+
+    -- * Response Lenses
+    createAccountSubscriptionResponse_requestId,
+    createAccountSubscriptionResponse_signupResponse,
+    createAccountSubscriptionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAccountSubscription' smart constructor.
+data CreateAccountSubscription = CreateAccountSubscription'
+  { -- | The name of your Active Directory. This field is required if
+    -- @ACTIVE_DIRECTORY@ is the selected authentication method of the new
+    -- Amazon QuickSight account.
+    activeDirectoryName :: Prelude.Maybe Prelude.Text,
+    -- | The admin group associated with your Active Directory. This field is
+    -- required if @ACTIVE_DIRECTORY@ is the selected authentication method of
+    -- the new Amazon QuickSight account. For more information about using
+    -- Active Directory in Amazon QuickSight, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+    -- in the Amazon QuickSight User Guide.
+    adminGroup :: Prelude.Maybe [Prelude.Text],
+    -- | The author group associated with your Active Directory. For more
+    -- information about using Active Directory in Amazon QuickSight, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+    -- in the Amazon QuickSight User Guide.
+    authorGroup :: Prelude.Maybe [Prelude.Text],
+    -- | A 10-digit phone number for the author of the Amazon QuickSight account
+    -- to use for future communications. This field is required if
+    -- @ENTERPPRISE_AND_Q@ is the selected edition of the new Amazon QuickSight
+    -- account.
+    contactNumber :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Active Directory that is associated with your Amazon
+    -- QuickSight account.
+    directoryId :: Prelude.Maybe Prelude.Text,
+    -- | The email address of the author of the Amazon QuickSight account to use
+    -- for future communications. This field is required if @ENTERPPRISE_AND_Q@
+    -- is the selected edition of the new Amazon QuickSight account.
+    emailAddress :: Prelude.Maybe Prelude.Text,
+    -- | The first name of the author of the Amazon QuickSight account to use for
+    -- future communications. This field is required if @ENTERPPRISE_AND_Q@ is
+    -- the selected edition of the new Amazon QuickSight account.
+    firstName :: Prelude.Maybe Prelude.Text,
+    -- | The last name of the author of the Amazon QuickSight account to use for
+    -- future communications. This field is required if @ENTERPPRISE_AND_Q@ is
+    -- the selected edition of the new Amazon QuickSight account.
+    lastName :: Prelude.Maybe Prelude.Text,
+    -- | The reader group associated with your Active Direcrtory. For more
+    -- information about using Active Directory in Amazon QuickSight, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+    -- in the /Amazon QuickSight User Guide/.
+    readerGroup :: Prelude.Maybe [Prelude.Text],
+    -- | The realm of the Active Directory that is associated with your Amazon
+    -- QuickSight account. This field is required if @ACTIVE_DIRECTORY@ is the
+    -- selected authentication method of the new Amazon QuickSight account.
+    realm :: Prelude.Maybe Prelude.Text,
+    -- | The edition of Amazon QuickSight that you want your account to have.
+    -- Currently, you can choose from @ENTERPRISE@ or @ENTERPRISE_AND_Q@.
+    --
+    -- If you choose @ENTERPRISE_AND_Q@, the following parameters are required:
+    --
+    -- -   @FirstName@
+    --
+    -- -   @LastName@
+    --
+    -- -   @EmailAddress@
+    --
+    -- -   @ContactNumber@
+    edition :: Edition,
+    -- | The method that you want to use to authenticate your Amazon QuickSight
+    -- account. Currently, the valid values for this parameter are
+    -- @IAM_AND_QUICKSIGHT@, @IAM_ONLY@, and @ACTIVE_DIRECTORY@.
+    --
+    -- If you choose @ACTIVE_DIRECTORY@, provide an @ActiveDirectoryName@ and
+    -- an @AdminGroup@ associated with your Active Directory.
+    authenticationMethod :: AuthenticationMethodOption,
+    -- | The Amazon Web Services account ID of the account that you\'re using to
+    -- create your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The name of your Amazon QuickSight account. This name is unique over all
+    -- of Amazon Web Services, and it appears only when users sign in. You
+    -- can\'t change @AccountName@ value after the Amazon QuickSight account is
+    -- created.
+    accountName :: Prelude.Text,
+    -- | The email address that you want Amazon QuickSight to send notifications
+    -- to regarding your Amazon QuickSight account or Amazon QuickSight
+    -- subscription.
+    notificationEmail :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAccountSubscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryName', 'createAccountSubscription_activeDirectoryName' - The name of your Active Directory. This field is required if
+-- @ACTIVE_DIRECTORY@ is the selected authentication method of the new
+-- Amazon QuickSight account.
+--
+-- 'adminGroup', 'createAccountSubscription_adminGroup' - The admin group associated with your Active Directory. This field is
+-- required if @ACTIVE_DIRECTORY@ is the selected authentication method of
+-- the new Amazon QuickSight account. For more information about using
+-- Active Directory in Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+-- in the Amazon QuickSight User Guide.
+--
+-- 'authorGroup', 'createAccountSubscription_authorGroup' - The author group associated with your Active Directory. For more
+-- information about using Active Directory in Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+-- in the Amazon QuickSight User Guide.
+--
+-- 'contactNumber', 'createAccountSubscription_contactNumber' - A 10-digit phone number for the author of the Amazon QuickSight account
+-- to use for future communications. This field is required if
+-- @ENTERPPRISE_AND_Q@ is the selected edition of the new Amazon QuickSight
+-- account.
+--
+-- 'directoryId', 'createAccountSubscription_directoryId' - The ID of the Active Directory that is associated with your Amazon
+-- QuickSight account.
+--
+-- 'emailAddress', 'createAccountSubscription_emailAddress' - The email address of the author of the Amazon QuickSight account to use
+-- for future communications. This field is required if @ENTERPPRISE_AND_Q@
+-- is the selected edition of the new Amazon QuickSight account.
+--
+-- 'firstName', 'createAccountSubscription_firstName' - The first name of the author of the Amazon QuickSight account to use for
+-- future communications. This field is required if @ENTERPPRISE_AND_Q@ is
+-- the selected edition of the new Amazon QuickSight account.
+--
+-- 'lastName', 'createAccountSubscription_lastName' - The last name of the author of the Amazon QuickSight account to use for
+-- future communications. This field is required if @ENTERPPRISE_AND_Q@ is
+-- the selected edition of the new Amazon QuickSight account.
+--
+-- 'readerGroup', 'createAccountSubscription_readerGroup' - The reader group associated with your Active Direcrtory. For more
+-- information about using Active Directory in Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'realm', 'createAccountSubscription_realm' - The realm of the Active Directory that is associated with your Amazon
+-- QuickSight account. This field is required if @ACTIVE_DIRECTORY@ is the
+-- selected authentication method of the new Amazon QuickSight account.
+--
+-- 'edition', 'createAccountSubscription_edition' - The edition of Amazon QuickSight that you want your account to have.
+-- Currently, you can choose from @ENTERPRISE@ or @ENTERPRISE_AND_Q@.
+--
+-- If you choose @ENTERPRISE_AND_Q@, the following parameters are required:
+--
+-- -   @FirstName@
+--
+-- -   @LastName@
+--
+-- -   @EmailAddress@
+--
+-- -   @ContactNumber@
+--
+-- 'authenticationMethod', 'createAccountSubscription_authenticationMethod' - The method that you want to use to authenticate your Amazon QuickSight
+-- account. Currently, the valid values for this parameter are
+-- @IAM_AND_QUICKSIGHT@, @IAM_ONLY@, and @ACTIVE_DIRECTORY@.
+--
+-- If you choose @ACTIVE_DIRECTORY@, provide an @ActiveDirectoryName@ and
+-- an @AdminGroup@ associated with your Active Directory.
+--
+-- 'awsAccountId', 'createAccountSubscription_awsAccountId' - The Amazon Web Services account ID of the account that you\'re using to
+-- create your Amazon QuickSight account.
+--
+-- 'accountName', 'createAccountSubscription_accountName' - The name of your Amazon QuickSight account. This name is unique over all
+-- of Amazon Web Services, and it appears only when users sign in. You
+-- can\'t change @AccountName@ value after the Amazon QuickSight account is
+-- created.
+--
+-- 'notificationEmail', 'createAccountSubscription_notificationEmail' - The email address that you want Amazon QuickSight to send notifications
+-- to regarding your Amazon QuickSight account or Amazon QuickSight
+-- subscription.
+newCreateAccountSubscription ::
+  -- | 'edition'
+  Edition ->
+  -- | 'authenticationMethod'
+  AuthenticationMethodOption ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'accountName'
+  Prelude.Text ->
+  -- | 'notificationEmail'
+  Prelude.Text ->
+  CreateAccountSubscription
+newCreateAccountSubscription
+  pEdition_
+  pAuthenticationMethod_
+  pAwsAccountId_
+  pAccountName_
+  pNotificationEmail_ =
+    CreateAccountSubscription'
+      { activeDirectoryName =
+          Prelude.Nothing,
+        adminGroup = Prelude.Nothing,
+        authorGroup = Prelude.Nothing,
+        contactNumber = Prelude.Nothing,
+        directoryId = Prelude.Nothing,
+        emailAddress = Prelude.Nothing,
+        firstName = Prelude.Nothing,
+        lastName = Prelude.Nothing,
+        readerGroup = Prelude.Nothing,
+        realm = Prelude.Nothing,
+        edition = pEdition_,
+        authenticationMethod = pAuthenticationMethod_,
+        awsAccountId = pAwsAccountId_,
+        accountName = pAccountName_,
+        notificationEmail = pNotificationEmail_
+      }
+
+-- | The name of your Active Directory. This field is required if
+-- @ACTIVE_DIRECTORY@ is the selected authentication method of the new
+-- Amazon QuickSight account.
+createAccountSubscription_activeDirectoryName :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_activeDirectoryName = Lens.lens (\CreateAccountSubscription' {activeDirectoryName} -> activeDirectoryName) (\s@CreateAccountSubscription' {} a -> s {activeDirectoryName = a} :: CreateAccountSubscription)
+
+-- | The admin group associated with your Active Directory. This field is
+-- required if @ACTIVE_DIRECTORY@ is the selected authentication method of
+-- the new Amazon QuickSight account. For more information about using
+-- Active Directory in Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+-- in the Amazon QuickSight User Guide.
+createAccountSubscription_adminGroup :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe [Prelude.Text])
+createAccountSubscription_adminGroup = Lens.lens (\CreateAccountSubscription' {adminGroup} -> adminGroup) (\s@CreateAccountSubscription' {} a -> s {adminGroup = a} :: CreateAccountSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The author group associated with your Active Directory. For more
+-- information about using Active Directory in Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+-- in the Amazon QuickSight User Guide.
+createAccountSubscription_authorGroup :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe [Prelude.Text])
+createAccountSubscription_authorGroup = Lens.lens (\CreateAccountSubscription' {authorGroup} -> authorGroup) (\s@CreateAccountSubscription' {} a -> s {authorGroup = a} :: CreateAccountSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | A 10-digit phone number for the author of the Amazon QuickSight account
+-- to use for future communications. This field is required if
+-- @ENTERPPRISE_AND_Q@ is the selected edition of the new Amazon QuickSight
+-- account.
+createAccountSubscription_contactNumber :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_contactNumber = Lens.lens (\CreateAccountSubscription' {contactNumber} -> contactNumber) (\s@CreateAccountSubscription' {} a -> s {contactNumber = a} :: CreateAccountSubscription)
+
+-- | The ID of the Active Directory that is associated with your Amazon
+-- QuickSight account.
+createAccountSubscription_directoryId :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_directoryId = Lens.lens (\CreateAccountSubscription' {directoryId} -> directoryId) (\s@CreateAccountSubscription' {} a -> s {directoryId = a} :: CreateAccountSubscription)
+
+-- | The email address of the author of the Amazon QuickSight account to use
+-- for future communications. This field is required if @ENTERPPRISE_AND_Q@
+-- is the selected edition of the new Amazon QuickSight account.
+createAccountSubscription_emailAddress :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_emailAddress = Lens.lens (\CreateAccountSubscription' {emailAddress} -> emailAddress) (\s@CreateAccountSubscription' {} a -> s {emailAddress = a} :: CreateAccountSubscription)
+
+-- | The first name of the author of the Amazon QuickSight account to use for
+-- future communications. This field is required if @ENTERPPRISE_AND_Q@ is
+-- the selected edition of the new Amazon QuickSight account.
+createAccountSubscription_firstName :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_firstName = Lens.lens (\CreateAccountSubscription' {firstName} -> firstName) (\s@CreateAccountSubscription' {} a -> s {firstName = a} :: CreateAccountSubscription)
+
+-- | The last name of the author of the Amazon QuickSight account to use for
+-- future communications. This field is required if @ENTERPPRISE_AND_Q@ is
+-- the selected edition of the new Amazon QuickSight account.
+createAccountSubscription_lastName :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_lastName = Lens.lens (\CreateAccountSubscription' {lastName} -> lastName) (\s@CreateAccountSubscription' {} a -> s {lastName = a} :: CreateAccountSubscription)
+
+-- | The reader group associated with your Active Direcrtory. For more
+-- information about using Active Directory in Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html Using Active Directory with Amazon QuickSight Enterprise Edition>
+-- in the /Amazon QuickSight User Guide/.
+createAccountSubscription_readerGroup :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe [Prelude.Text])
+createAccountSubscription_readerGroup = Lens.lens (\CreateAccountSubscription' {readerGroup} -> readerGroup) (\s@CreateAccountSubscription' {} a -> s {readerGroup = a} :: CreateAccountSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The realm of the Active Directory that is associated with your Amazon
+-- QuickSight account. This field is required if @ACTIVE_DIRECTORY@ is the
+-- selected authentication method of the new Amazon QuickSight account.
+createAccountSubscription_realm :: Lens.Lens' CreateAccountSubscription (Prelude.Maybe Prelude.Text)
+createAccountSubscription_realm = Lens.lens (\CreateAccountSubscription' {realm} -> realm) (\s@CreateAccountSubscription' {} a -> s {realm = a} :: CreateAccountSubscription)
+
+-- | The edition of Amazon QuickSight that you want your account to have.
+-- Currently, you can choose from @ENTERPRISE@ or @ENTERPRISE_AND_Q@.
+--
+-- If you choose @ENTERPRISE_AND_Q@, the following parameters are required:
+--
+-- -   @FirstName@
+--
+-- -   @LastName@
+--
+-- -   @EmailAddress@
+--
+-- -   @ContactNumber@
+createAccountSubscription_edition :: Lens.Lens' CreateAccountSubscription Edition
+createAccountSubscription_edition = Lens.lens (\CreateAccountSubscription' {edition} -> edition) (\s@CreateAccountSubscription' {} a -> s {edition = a} :: CreateAccountSubscription)
+
+-- | The method that you want to use to authenticate your Amazon QuickSight
+-- account. Currently, the valid values for this parameter are
+-- @IAM_AND_QUICKSIGHT@, @IAM_ONLY@, and @ACTIVE_DIRECTORY@.
+--
+-- If you choose @ACTIVE_DIRECTORY@, provide an @ActiveDirectoryName@ and
+-- an @AdminGroup@ associated with your Active Directory.
+createAccountSubscription_authenticationMethod :: Lens.Lens' CreateAccountSubscription AuthenticationMethodOption
+createAccountSubscription_authenticationMethod = Lens.lens (\CreateAccountSubscription' {authenticationMethod} -> authenticationMethod) (\s@CreateAccountSubscription' {} a -> s {authenticationMethod = a} :: CreateAccountSubscription)
+
+-- | The Amazon Web Services account ID of the account that you\'re using to
+-- create your Amazon QuickSight account.
+createAccountSubscription_awsAccountId :: Lens.Lens' CreateAccountSubscription Prelude.Text
+createAccountSubscription_awsAccountId = Lens.lens (\CreateAccountSubscription' {awsAccountId} -> awsAccountId) (\s@CreateAccountSubscription' {} a -> s {awsAccountId = a} :: CreateAccountSubscription)
+
+-- | The name of your Amazon QuickSight account. This name is unique over all
+-- of Amazon Web Services, and it appears only when users sign in. You
+-- can\'t change @AccountName@ value after the Amazon QuickSight account is
+-- created.
+createAccountSubscription_accountName :: Lens.Lens' CreateAccountSubscription Prelude.Text
+createAccountSubscription_accountName = Lens.lens (\CreateAccountSubscription' {accountName} -> accountName) (\s@CreateAccountSubscription' {} a -> s {accountName = a} :: CreateAccountSubscription)
+
+-- | The email address that you want Amazon QuickSight to send notifications
+-- to regarding your Amazon QuickSight account or Amazon QuickSight
+-- subscription.
+createAccountSubscription_notificationEmail :: Lens.Lens' CreateAccountSubscription Prelude.Text
+createAccountSubscription_notificationEmail = Lens.lens (\CreateAccountSubscription' {notificationEmail} -> notificationEmail) (\s@CreateAccountSubscription' {} a -> s {notificationEmail = a} :: CreateAccountSubscription)
+
+instance Core.AWSRequest CreateAccountSubscription where
+  type
+    AWSResponse CreateAccountSubscription =
+      CreateAccountSubscriptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAccountSubscriptionResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "SignupResponse")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAccountSubscription where
+  hashWithSalt _salt CreateAccountSubscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeDirectoryName
+      `Prelude.hashWithSalt` adminGroup
+      `Prelude.hashWithSalt` authorGroup
+      `Prelude.hashWithSalt` contactNumber
+      `Prelude.hashWithSalt` directoryId
+      `Prelude.hashWithSalt` emailAddress
+      `Prelude.hashWithSalt` firstName
+      `Prelude.hashWithSalt` lastName
+      `Prelude.hashWithSalt` readerGroup
+      `Prelude.hashWithSalt` realm
+      `Prelude.hashWithSalt` edition
+      `Prelude.hashWithSalt` authenticationMethod
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` accountName
+      `Prelude.hashWithSalt` notificationEmail
+
+instance Prelude.NFData CreateAccountSubscription where
+  rnf CreateAccountSubscription' {..} =
+    Prelude.rnf activeDirectoryName
+      `Prelude.seq` Prelude.rnf adminGroup
+      `Prelude.seq` Prelude.rnf authorGroup
+      `Prelude.seq` Prelude.rnf contactNumber
+      `Prelude.seq` Prelude.rnf directoryId
+      `Prelude.seq` Prelude.rnf emailAddress
+      `Prelude.seq` Prelude.rnf firstName
+      `Prelude.seq` Prelude.rnf lastName
+      `Prelude.seq` Prelude.rnf readerGroup
+      `Prelude.seq` Prelude.rnf realm
+      `Prelude.seq` Prelude.rnf edition
+      `Prelude.seq` Prelude.rnf authenticationMethod
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf accountName
+      `Prelude.seq` Prelude.rnf notificationEmail
+
+instance Data.ToHeaders CreateAccountSubscription where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAccountSubscription where
+  toJSON CreateAccountSubscription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveDirectoryName" Data..=)
+              Prelude.<$> activeDirectoryName,
+            ("AdminGroup" Data..=) Prelude.<$> adminGroup,
+            ("AuthorGroup" Data..=) Prelude.<$> authorGroup,
+            ("ContactNumber" Data..=) Prelude.<$> contactNumber,
+            ("DirectoryId" Data..=) Prelude.<$> directoryId,
+            ("EmailAddress" Data..=) Prelude.<$> emailAddress,
+            ("FirstName" Data..=) Prelude.<$> firstName,
+            ("LastName" Data..=) Prelude.<$> lastName,
+            ("ReaderGroup" Data..=) Prelude.<$> readerGroup,
+            ("Realm" Data..=) Prelude.<$> realm,
+            Prelude.Just ("Edition" Data..= edition),
+            Prelude.Just
+              ( "AuthenticationMethod"
+                  Data..= authenticationMethod
+              ),
+            Prelude.Just ("AccountName" Data..= accountName),
+            Prelude.Just
+              ("NotificationEmail" Data..= notificationEmail)
+          ]
+      )
+
+instance Data.ToPath CreateAccountSubscription where
+  toPath CreateAccountSubscription' {..} =
+    Prelude.mconcat
+      ["/account/", Data.toBS awsAccountId]
+
+instance Data.ToQuery CreateAccountSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAccountSubscriptionResponse' smart constructor.
+data CreateAccountSubscriptionResponse = CreateAccountSubscriptionResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | A @SignupResponse@ object that returns information about a newly created
+    -- Amazon QuickSight account.
+    signupResponse :: Prelude.Maybe SignupResponse,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAccountSubscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'createAccountSubscriptionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'signupResponse', 'createAccountSubscriptionResponse_signupResponse' - A @SignupResponse@ object that returns information about a newly created
+-- Amazon QuickSight account.
+--
+-- 'status', 'createAccountSubscriptionResponse_status' - The HTTP status of the request.
+newCreateAccountSubscriptionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateAccountSubscriptionResponse
+newCreateAccountSubscriptionResponse pStatus_ =
+  CreateAccountSubscriptionResponse'
+    { requestId =
+        Prelude.Nothing,
+      signupResponse = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+createAccountSubscriptionResponse_requestId :: Lens.Lens' CreateAccountSubscriptionResponse (Prelude.Maybe Prelude.Text)
+createAccountSubscriptionResponse_requestId = Lens.lens (\CreateAccountSubscriptionResponse' {requestId} -> requestId) (\s@CreateAccountSubscriptionResponse' {} a -> s {requestId = a} :: CreateAccountSubscriptionResponse)
+
+-- | A @SignupResponse@ object that returns information about a newly created
+-- Amazon QuickSight account.
+createAccountSubscriptionResponse_signupResponse :: Lens.Lens' CreateAccountSubscriptionResponse (Prelude.Maybe SignupResponse)
+createAccountSubscriptionResponse_signupResponse = Lens.lens (\CreateAccountSubscriptionResponse' {signupResponse} -> signupResponse) (\s@CreateAccountSubscriptionResponse' {} a -> s {signupResponse = a} :: CreateAccountSubscriptionResponse)
+
+-- | The HTTP status of the request.
+createAccountSubscriptionResponse_status :: Lens.Lens' CreateAccountSubscriptionResponse Prelude.Int
+createAccountSubscriptionResponse_status = Lens.lens (\CreateAccountSubscriptionResponse' {status} -> status) (\s@CreateAccountSubscriptionResponse' {} a -> s {status = a} :: CreateAccountSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    CreateAccountSubscriptionResponse
+  where
+  rnf CreateAccountSubscriptionResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf signupResponse
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateAnalysis.hs b/gen/Amazonka/QuickSight/CreateAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateAnalysis.hs
@@ -0,0 +1,374 @@
+{-# 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.QuickSight.CreateAnalysis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an analysis in Amazon QuickSight.
+module Amazonka.QuickSight.CreateAnalysis
+  ( -- * Creating a Request
+    CreateAnalysis (..),
+    newCreateAnalysis,
+
+    -- * Request Lenses
+    createAnalysis_definition,
+    createAnalysis_parameters,
+    createAnalysis_permissions,
+    createAnalysis_sourceEntity,
+    createAnalysis_tags,
+    createAnalysis_themeArn,
+    createAnalysis_awsAccountId,
+    createAnalysis_analysisId,
+    createAnalysis_name,
+
+    -- * Destructuring the Response
+    CreateAnalysisResponse (..),
+    newCreateAnalysisResponse,
+
+    -- * Response Lenses
+    createAnalysisResponse_analysisId,
+    createAnalysisResponse_arn,
+    createAnalysisResponse_creationStatus,
+    createAnalysisResponse_requestId,
+    createAnalysisResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAnalysis' smart constructor.
+data CreateAnalysis = CreateAnalysis'
+  { -- | The definition of an analysis.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe AnalysisDefinition,
+    -- | The parameter names and override values that you want to use. An
+    -- analysis can have any parameter type, and some parameters might accept
+    -- multiple values.
+    parameters :: Prelude.Maybe Parameters,
+    -- | A structure that describes the principals and the resource-level
+    -- permissions on an analysis. You can use the @Permissions@ structure to
+    -- grant permissions by providing a list of Identity and Access Management
+    -- (IAM) action information for each principal listed by Amazon Resource
+    -- Name (ARN).
+    --
+    -- To specify no permissions, omit @Permissions@.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | A source entity to use for the analysis that you\'re creating. This
+    -- metadata structure contains details that describe a source template and
+    -- one or more datasets.
+    sourceEntity :: Prelude.Maybe AnalysisSourceEntity,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the analysis.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ARN for the theme to apply to the analysis that you\'re creating. To
+    -- see the theme in the Amazon QuickSight console, make sure that you have
+    -- access to it.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account where you are creating an
+    -- analysis.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the analysis that you\'re creating. This ID displays in the
+    -- URL of the analysis.
+    analysisId :: Prelude.Text,
+    -- | A descriptive name for the analysis that you\'re creating. This name
+    -- displays for the analysis in the Amazon QuickSight console.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'definition', 'createAnalysis_definition' - The definition of an analysis.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'parameters', 'createAnalysis_parameters' - The parameter names and override values that you want to use. An
+-- analysis can have any parameter type, and some parameters might accept
+-- multiple values.
+--
+-- 'permissions', 'createAnalysis_permissions' - A structure that describes the principals and the resource-level
+-- permissions on an analysis. You can use the @Permissions@ structure to
+-- grant permissions by providing a list of Identity and Access Management
+-- (IAM) action information for each principal listed by Amazon Resource
+-- Name (ARN).
+--
+-- To specify no permissions, omit @Permissions@.
+--
+-- 'sourceEntity', 'createAnalysis_sourceEntity' - A source entity to use for the analysis that you\'re creating. This
+-- metadata structure contains details that describe a source template and
+-- one or more datasets.
+--
+-- 'tags', 'createAnalysis_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the analysis.
+--
+-- 'themeArn', 'createAnalysis_themeArn' - The ARN for the theme to apply to the analysis that you\'re creating. To
+-- see the theme in the Amazon QuickSight console, make sure that you have
+-- access to it.
+--
+-- 'awsAccountId', 'createAnalysis_awsAccountId' - The ID of the Amazon Web Services account where you are creating an
+-- analysis.
+--
+-- 'analysisId', 'createAnalysis_analysisId' - The ID for the analysis that you\'re creating. This ID displays in the
+-- URL of the analysis.
+--
+-- 'name', 'createAnalysis_name' - A descriptive name for the analysis that you\'re creating. This name
+-- displays for the analysis in the Amazon QuickSight console.
+newCreateAnalysis ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateAnalysis
+newCreateAnalysis pAwsAccountId_ pAnalysisId_ pName_ =
+  CreateAnalysis'
+    { definition = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      sourceEntity = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      analysisId = pAnalysisId_,
+      name = pName_
+    }
+
+-- | The definition of an analysis.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+createAnalysis_definition :: Lens.Lens' CreateAnalysis (Prelude.Maybe AnalysisDefinition)
+createAnalysis_definition = Lens.lens (\CreateAnalysis' {definition} -> definition) (\s@CreateAnalysis' {} a -> s {definition = a} :: CreateAnalysis)
+
+-- | The parameter names and override values that you want to use. An
+-- analysis can have any parameter type, and some parameters might accept
+-- multiple values.
+createAnalysis_parameters :: Lens.Lens' CreateAnalysis (Prelude.Maybe Parameters)
+createAnalysis_parameters = Lens.lens (\CreateAnalysis' {parameters} -> parameters) (\s@CreateAnalysis' {} a -> s {parameters = a} :: CreateAnalysis)
+
+-- | A structure that describes the principals and the resource-level
+-- permissions on an analysis. You can use the @Permissions@ structure to
+-- grant permissions by providing a list of Identity and Access Management
+-- (IAM) action information for each principal listed by Amazon Resource
+-- Name (ARN).
+--
+-- To specify no permissions, omit @Permissions@.
+createAnalysis_permissions :: Lens.Lens' CreateAnalysis (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createAnalysis_permissions = Lens.lens (\CreateAnalysis' {permissions} -> permissions) (\s@CreateAnalysis' {} a -> s {permissions = a} :: CreateAnalysis) Prelude.. Lens.mapping Lens.coerced
+
+-- | A source entity to use for the analysis that you\'re creating. This
+-- metadata structure contains details that describe a source template and
+-- one or more datasets.
+createAnalysis_sourceEntity :: Lens.Lens' CreateAnalysis (Prelude.Maybe AnalysisSourceEntity)
+createAnalysis_sourceEntity = Lens.lens (\CreateAnalysis' {sourceEntity} -> sourceEntity) (\s@CreateAnalysis' {} a -> s {sourceEntity = a} :: CreateAnalysis)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the analysis.
+createAnalysis_tags :: Lens.Lens' CreateAnalysis (Prelude.Maybe (Prelude.NonEmpty Tag))
+createAnalysis_tags = Lens.lens (\CreateAnalysis' {tags} -> tags) (\s@CreateAnalysis' {} a -> s {tags = a} :: CreateAnalysis) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN for the theme to apply to the analysis that you\'re creating. To
+-- see the theme in the Amazon QuickSight console, make sure that you have
+-- access to it.
+createAnalysis_themeArn :: Lens.Lens' CreateAnalysis (Prelude.Maybe Prelude.Text)
+createAnalysis_themeArn = Lens.lens (\CreateAnalysis' {themeArn} -> themeArn) (\s@CreateAnalysis' {} a -> s {themeArn = a} :: CreateAnalysis)
+
+-- | The ID of the Amazon Web Services account where you are creating an
+-- analysis.
+createAnalysis_awsAccountId :: Lens.Lens' CreateAnalysis Prelude.Text
+createAnalysis_awsAccountId = Lens.lens (\CreateAnalysis' {awsAccountId} -> awsAccountId) (\s@CreateAnalysis' {} a -> s {awsAccountId = a} :: CreateAnalysis)
+
+-- | The ID for the analysis that you\'re creating. This ID displays in the
+-- URL of the analysis.
+createAnalysis_analysisId :: Lens.Lens' CreateAnalysis Prelude.Text
+createAnalysis_analysisId = Lens.lens (\CreateAnalysis' {analysisId} -> analysisId) (\s@CreateAnalysis' {} a -> s {analysisId = a} :: CreateAnalysis)
+
+-- | A descriptive name for the analysis that you\'re creating. This name
+-- displays for the analysis in the Amazon QuickSight console.
+createAnalysis_name :: Lens.Lens' CreateAnalysis Prelude.Text
+createAnalysis_name = Lens.lens (\CreateAnalysis' {name} -> name) (\s@CreateAnalysis' {} a -> s {name = a} :: CreateAnalysis)
+
+instance Core.AWSRequest CreateAnalysis where
+  type
+    AWSResponse CreateAnalysis =
+      CreateAnalysisResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAnalysisResponse'
+            Prelude.<$> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAnalysis where
+  hashWithSalt _salt CreateAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` sourceEntity
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` themeArn
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateAnalysis where
+  rnf CreateAnalysis' {..} =
+    Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf sourceEntity
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAnalysis where
+  toJSON CreateAnalysis' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Definition" Data..=) Prelude.<$> definition,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("Permissions" Data..=) Prelude.<$> permissions,
+            ("SourceEntity" Data..=) Prelude.<$> sourceEntity,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("ThemeArn" Data..=) Prelude.<$> themeArn,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateAnalysis where
+  toPath CreateAnalysis' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId
+      ]
+
+instance Data.ToQuery CreateAnalysis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAnalysisResponse' smart constructor.
+data CreateAnalysisResponse = CreateAnalysisResponse'
+  { -- | The ID of the analysis.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the analysis.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The status of the creation of the analysis.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'createAnalysisResponse_analysisId' - The ID of the analysis.
+--
+-- 'arn', 'createAnalysisResponse_arn' - The ARN for the analysis.
+--
+-- 'creationStatus', 'createAnalysisResponse_creationStatus' - The status of the creation of the analysis.
+--
+-- 'requestId', 'createAnalysisResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createAnalysisResponse_status' - The HTTP status of the request.
+newCreateAnalysisResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateAnalysisResponse
+newCreateAnalysisResponse pStatus_ =
+  CreateAnalysisResponse'
+    { analysisId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the analysis.
+createAnalysisResponse_analysisId :: Lens.Lens' CreateAnalysisResponse (Prelude.Maybe Prelude.Text)
+createAnalysisResponse_analysisId = Lens.lens (\CreateAnalysisResponse' {analysisId} -> analysisId) (\s@CreateAnalysisResponse' {} a -> s {analysisId = a} :: CreateAnalysisResponse)
+
+-- | The ARN for the analysis.
+createAnalysisResponse_arn :: Lens.Lens' CreateAnalysisResponse (Prelude.Maybe Prelude.Text)
+createAnalysisResponse_arn = Lens.lens (\CreateAnalysisResponse' {arn} -> arn) (\s@CreateAnalysisResponse' {} a -> s {arn = a} :: CreateAnalysisResponse)
+
+-- | The status of the creation of the analysis.
+createAnalysisResponse_creationStatus :: Lens.Lens' CreateAnalysisResponse (Prelude.Maybe ResourceStatus)
+createAnalysisResponse_creationStatus = Lens.lens (\CreateAnalysisResponse' {creationStatus} -> creationStatus) (\s@CreateAnalysisResponse' {} a -> s {creationStatus = a} :: CreateAnalysisResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createAnalysisResponse_requestId :: Lens.Lens' CreateAnalysisResponse (Prelude.Maybe Prelude.Text)
+createAnalysisResponse_requestId = Lens.lens (\CreateAnalysisResponse' {requestId} -> requestId) (\s@CreateAnalysisResponse' {} a -> s {requestId = a} :: CreateAnalysisResponse)
+
+-- | The HTTP status of the request.
+createAnalysisResponse_status :: Lens.Lens' CreateAnalysisResponse Prelude.Int
+createAnalysisResponse_status = Lens.lens (\CreateAnalysisResponse' {status} -> status) (\s@CreateAnalysisResponse' {} a -> s {status = a} :: CreateAnalysisResponse)
+
+instance Prelude.NFData CreateAnalysisResponse where
+  rnf CreateAnalysisResponse' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateDashboard.hs b/gen/Amazonka/QuickSight/CreateDashboard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateDashboard.hs
@@ -0,0 +1,498 @@
+{-# 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.QuickSight.CreateDashboard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a dashboard from a template. To first create a template, see the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+-- API operation.
+--
+-- A dashboard is an entity in Amazon QuickSight that identifies Amazon
+-- QuickSight reports, created from analyses. You can share Amazon
+-- QuickSight dashboards. With the right permissions, you can create
+-- scheduled email reports from them. If you have the correct permissions,
+-- you can create a dashboard from a template that exists in a different
+-- Amazon Web Services account.
+module Amazonka.QuickSight.CreateDashboard
+  ( -- * Creating a Request
+    CreateDashboard (..),
+    newCreateDashboard,
+
+    -- * Request Lenses
+    createDashboard_dashboardPublishOptions,
+    createDashboard_definition,
+    createDashboard_parameters,
+    createDashboard_permissions,
+    createDashboard_sourceEntity,
+    createDashboard_tags,
+    createDashboard_themeArn,
+    createDashboard_versionDescription,
+    createDashboard_awsAccountId,
+    createDashboard_dashboardId,
+    createDashboard_name,
+
+    -- * Destructuring the Response
+    CreateDashboardResponse (..),
+    newCreateDashboardResponse,
+
+    -- * Response Lenses
+    createDashboardResponse_arn,
+    createDashboardResponse_creationStatus,
+    createDashboardResponse_dashboardId,
+    createDashboardResponse_requestId,
+    createDashboardResponse_versionArn,
+    createDashboardResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDashboard' smart constructor.
+data CreateDashboard = CreateDashboard'
+  { -- | Options for publishing the dashboard when you create it:
+    --
+    -- -   @AvailabilityStatus@ for @AdHocFilteringOption@ - This status can be
+    --     either @ENABLED@ or @DISABLED@. When this is set to @DISABLED@,
+    --     Amazon QuickSight disables the left filter pane on the published
+    --     dashboard, which can be used for ad hoc (one-time) filtering. This
+    --     option is @ENABLED@ by default.
+    --
+    -- -   @AvailabilityStatus@ for @ExportToCSVOption@ - This status can be
+    --     either @ENABLED@ or @DISABLED@. The visual option to export data to
+    --     .CSV format isn\'t enabled when this is set to @DISABLED@. This
+    --     option is @ENABLED@ by default.
+    --
+    -- -   @VisibilityState@ for @SheetControlsOption@ - This visibility state
+    --     can be either @COLLAPSED@ or @EXPANDED@. This option is @COLLAPSED@
+    --     by default.
+    dashboardPublishOptions :: Prelude.Maybe DashboardPublishOptions,
+    -- | The definition of a dashboard.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe DashboardVersionDefinition,
+    -- | The parameters for the creation of the dashboard, which you want to use
+    -- to override the default settings. A dashboard can have any type of
+    -- parameters, and some parameters might accept multiple values.
+    parameters :: Prelude.Maybe Parameters,
+    -- | A structure that contains the permissions of the dashboard. You can use
+    -- this structure for granting permissions by providing a list of IAM
+    -- action information for each principal ARN.
+    --
+    -- To specify no permissions, omit the permissions list.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The entity that you are using as a source when you create the dashboard.
+    -- In @SourceEntity@, you specify the type of object you\'re using as
+    -- source. You can only create a dashboard from a template, so you use a
+    -- @SourceTemplate@ entity. If you need to create a dashboard from an
+    -- analysis, first convert the analysis to a template by using the
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+    -- API operation. For @SourceTemplate@, specify the Amazon Resource Name
+    -- (ARN) of the source template. The @SourceTemplate@ARN can contain any
+    -- Amazon Web Services account and any Amazon QuickSight-supported Amazon
+    -- Web Services Region.
+    --
+    -- Use the @DataSetReferences@ entity within @SourceTemplate@ to list the
+    -- replacement datasets for the placeholders listed in the original. The
+    -- schema in each dataset must match its placeholder.
+    sourceEntity :: Prelude.Maybe DashboardSourceEntity,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the dashboard.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The Amazon Resource Name (ARN) of the theme that is being used for this
+    -- dashboard. If you add a value for this field, it overrides the value
+    -- that is used in the source entity. The theme ARN must exist in the same
+    -- Amazon Web Services account where you create the dashboard.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | A description for the first version of the dashboard being created.
+    versionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account where you want to create the
+    -- dashboard.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard, also added to the IAM policy.
+    dashboardId :: Prelude.Text,
+    -- | The display name of the dashboard.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDashboard' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardPublishOptions', 'createDashboard_dashboardPublishOptions' - Options for publishing the dashboard when you create it:
+--
+-- -   @AvailabilityStatus@ for @AdHocFilteringOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. When this is set to @DISABLED@,
+--     Amazon QuickSight disables the left filter pane on the published
+--     dashboard, which can be used for ad hoc (one-time) filtering. This
+--     option is @ENABLED@ by default.
+--
+-- -   @AvailabilityStatus@ for @ExportToCSVOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. The visual option to export data to
+--     .CSV format isn\'t enabled when this is set to @DISABLED@. This
+--     option is @ENABLED@ by default.
+--
+-- -   @VisibilityState@ for @SheetControlsOption@ - This visibility state
+--     can be either @COLLAPSED@ or @EXPANDED@. This option is @COLLAPSED@
+--     by default.
+--
+-- 'definition', 'createDashboard_definition' - The definition of a dashboard.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'parameters', 'createDashboard_parameters' - The parameters for the creation of the dashboard, which you want to use
+-- to override the default settings. A dashboard can have any type of
+-- parameters, and some parameters might accept multiple values.
+--
+-- 'permissions', 'createDashboard_permissions' - A structure that contains the permissions of the dashboard. You can use
+-- this structure for granting permissions by providing a list of IAM
+-- action information for each principal ARN.
+--
+-- To specify no permissions, omit the permissions list.
+--
+-- 'sourceEntity', 'createDashboard_sourceEntity' - The entity that you are using as a source when you create the dashboard.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source. You can only create a dashboard from a template, so you use a
+-- @SourceTemplate@ entity. If you need to create a dashboard from an
+-- analysis, first convert the analysis to a template by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+-- API operation. For @SourceTemplate@, specify the Amazon Resource Name
+-- (ARN) of the source template. The @SourceTemplate@ARN can contain any
+-- Amazon Web Services account and any Amazon QuickSight-supported Amazon
+-- Web Services Region.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ to list the
+-- replacement datasets for the placeholders listed in the original. The
+-- schema in each dataset must match its placeholder.
+--
+-- 'tags', 'createDashboard_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the dashboard.
+--
+-- 'themeArn', 'createDashboard_themeArn' - The Amazon Resource Name (ARN) of the theme that is being used for this
+-- dashboard. If you add a value for this field, it overrides the value
+-- that is used in the source entity. The theme ARN must exist in the same
+-- Amazon Web Services account where you create the dashboard.
+--
+-- 'versionDescription', 'createDashboard_versionDescription' - A description for the first version of the dashboard being created.
+--
+-- 'awsAccountId', 'createDashboard_awsAccountId' - The ID of the Amazon Web Services account where you want to create the
+-- dashboard.
+--
+-- 'dashboardId', 'createDashboard_dashboardId' - The ID for the dashboard, also added to the IAM policy.
+--
+-- 'name', 'createDashboard_name' - The display name of the dashboard.
+newCreateDashboard ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateDashboard
+newCreateDashboard
+  pAwsAccountId_
+  pDashboardId_
+  pName_ =
+    CreateDashboard'
+      { dashboardPublishOptions =
+          Prelude.Nothing,
+        definition = Prelude.Nothing,
+        parameters = Prelude.Nothing,
+        permissions = Prelude.Nothing,
+        sourceEntity = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        themeArn = Prelude.Nothing,
+        versionDescription = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dashboardId = pDashboardId_,
+        name = pName_
+      }
+
+-- | Options for publishing the dashboard when you create it:
+--
+-- -   @AvailabilityStatus@ for @AdHocFilteringOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. When this is set to @DISABLED@,
+--     Amazon QuickSight disables the left filter pane on the published
+--     dashboard, which can be used for ad hoc (one-time) filtering. This
+--     option is @ENABLED@ by default.
+--
+-- -   @AvailabilityStatus@ for @ExportToCSVOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. The visual option to export data to
+--     .CSV format isn\'t enabled when this is set to @DISABLED@. This
+--     option is @ENABLED@ by default.
+--
+-- -   @VisibilityState@ for @SheetControlsOption@ - This visibility state
+--     can be either @COLLAPSED@ or @EXPANDED@. This option is @COLLAPSED@
+--     by default.
+createDashboard_dashboardPublishOptions :: Lens.Lens' CreateDashboard (Prelude.Maybe DashboardPublishOptions)
+createDashboard_dashboardPublishOptions = Lens.lens (\CreateDashboard' {dashboardPublishOptions} -> dashboardPublishOptions) (\s@CreateDashboard' {} a -> s {dashboardPublishOptions = a} :: CreateDashboard)
+
+-- | The definition of a dashboard.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+createDashboard_definition :: Lens.Lens' CreateDashboard (Prelude.Maybe DashboardVersionDefinition)
+createDashboard_definition = Lens.lens (\CreateDashboard' {definition} -> definition) (\s@CreateDashboard' {} a -> s {definition = a} :: CreateDashboard)
+
+-- | The parameters for the creation of the dashboard, which you want to use
+-- to override the default settings. A dashboard can have any type of
+-- parameters, and some parameters might accept multiple values.
+createDashboard_parameters :: Lens.Lens' CreateDashboard (Prelude.Maybe Parameters)
+createDashboard_parameters = Lens.lens (\CreateDashboard' {parameters} -> parameters) (\s@CreateDashboard' {} a -> s {parameters = a} :: CreateDashboard)
+
+-- | A structure that contains the permissions of the dashboard. You can use
+-- this structure for granting permissions by providing a list of IAM
+-- action information for each principal ARN.
+--
+-- To specify no permissions, omit the permissions list.
+createDashboard_permissions :: Lens.Lens' CreateDashboard (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createDashboard_permissions = Lens.lens (\CreateDashboard' {permissions} -> permissions) (\s@CreateDashboard' {} a -> s {permissions = a} :: CreateDashboard) Prelude.. Lens.mapping Lens.coerced
+
+-- | The entity that you are using as a source when you create the dashboard.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source. You can only create a dashboard from a template, so you use a
+-- @SourceTemplate@ entity. If you need to create a dashboard from an
+-- analysis, first convert the analysis to a template by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+-- API operation. For @SourceTemplate@, specify the Amazon Resource Name
+-- (ARN) of the source template. The @SourceTemplate@ARN can contain any
+-- Amazon Web Services account and any Amazon QuickSight-supported Amazon
+-- Web Services Region.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ to list the
+-- replacement datasets for the placeholders listed in the original. The
+-- schema in each dataset must match its placeholder.
+createDashboard_sourceEntity :: Lens.Lens' CreateDashboard (Prelude.Maybe DashboardSourceEntity)
+createDashboard_sourceEntity = Lens.lens (\CreateDashboard' {sourceEntity} -> sourceEntity) (\s@CreateDashboard' {} a -> s {sourceEntity = a} :: CreateDashboard)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the dashboard.
+createDashboard_tags :: Lens.Lens' CreateDashboard (Prelude.Maybe (Prelude.NonEmpty Tag))
+createDashboard_tags = Lens.lens (\CreateDashboard' {tags} -> tags) (\s@CreateDashboard' {} a -> s {tags = a} :: CreateDashboard) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the theme that is being used for this
+-- dashboard. If you add a value for this field, it overrides the value
+-- that is used in the source entity. The theme ARN must exist in the same
+-- Amazon Web Services account where you create the dashboard.
+createDashboard_themeArn :: Lens.Lens' CreateDashboard (Prelude.Maybe Prelude.Text)
+createDashboard_themeArn = Lens.lens (\CreateDashboard' {themeArn} -> themeArn) (\s@CreateDashboard' {} a -> s {themeArn = a} :: CreateDashboard)
+
+-- | A description for the first version of the dashboard being created.
+createDashboard_versionDescription :: Lens.Lens' CreateDashboard (Prelude.Maybe Prelude.Text)
+createDashboard_versionDescription = Lens.lens (\CreateDashboard' {versionDescription} -> versionDescription) (\s@CreateDashboard' {} a -> s {versionDescription = a} :: CreateDashboard)
+
+-- | The ID of the Amazon Web Services account where you want to create the
+-- dashboard.
+createDashboard_awsAccountId :: Lens.Lens' CreateDashboard Prelude.Text
+createDashboard_awsAccountId = Lens.lens (\CreateDashboard' {awsAccountId} -> awsAccountId) (\s@CreateDashboard' {} a -> s {awsAccountId = a} :: CreateDashboard)
+
+-- | The ID for the dashboard, also added to the IAM policy.
+createDashboard_dashboardId :: Lens.Lens' CreateDashboard Prelude.Text
+createDashboard_dashboardId = Lens.lens (\CreateDashboard' {dashboardId} -> dashboardId) (\s@CreateDashboard' {} a -> s {dashboardId = a} :: CreateDashboard)
+
+-- | The display name of the dashboard.
+createDashboard_name :: Lens.Lens' CreateDashboard Prelude.Text
+createDashboard_name = Lens.lens (\CreateDashboard' {name} -> name) (\s@CreateDashboard' {} a -> s {name = a} :: CreateDashboard)
+
+instance Core.AWSRequest CreateDashboard where
+  type
+    AWSResponse CreateDashboard =
+      CreateDashboardResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDashboardResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "VersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDashboard where
+  hashWithSalt _salt CreateDashboard' {..} =
+    _salt
+      `Prelude.hashWithSalt` dashboardPublishOptions
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` sourceEntity
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` themeArn
+      `Prelude.hashWithSalt` versionDescription
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateDashboard where
+  rnf CreateDashboard' {..} =
+    Prelude.rnf dashboardPublishOptions
+      `Prelude.seq` Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf sourceEntity
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf versionDescription
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateDashboard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDashboard where
+  toJSON CreateDashboard' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DashboardPublishOptions" Data..=)
+              Prelude.<$> dashboardPublishOptions,
+            ("Definition" Data..=) Prelude.<$> definition,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("Permissions" Data..=) Prelude.<$> permissions,
+            ("SourceEntity" Data..=) Prelude.<$> sourceEntity,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("ThemeArn" Data..=) Prelude.<$> themeArn,
+            ("VersionDescription" Data..=)
+              Prelude.<$> versionDescription,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateDashboard where
+  toPath CreateDashboard' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId
+      ]
+
+instance Data.ToQuery CreateDashboard where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDashboardResponse' smart constructor.
+data CreateDashboardResponse = CreateDashboardResponse'
+  { -- | The ARN of the dashboard.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The status of the dashboard creation request.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the dashboard, including the version number of the first
+    -- version that is created.
+    versionArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDashboardResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createDashboardResponse_arn' - The ARN of the dashboard.
+--
+-- 'creationStatus', 'createDashboardResponse_creationStatus' - The status of the dashboard creation request.
+--
+-- 'dashboardId', 'createDashboardResponse_dashboardId' - The ID for the dashboard.
+--
+-- 'requestId', 'createDashboardResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'versionArn', 'createDashboardResponse_versionArn' - The ARN of the dashboard, including the version number of the first
+-- version that is created.
+--
+-- 'status', 'createDashboardResponse_status' - The HTTP status of the request.
+newCreateDashboardResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateDashboardResponse
+newCreateDashboardResponse pStatus_ =
+  CreateDashboardResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      versionArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ARN of the dashboard.
+createDashboardResponse_arn :: Lens.Lens' CreateDashboardResponse (Prelude.Maybe Prelude.Text)
+createDashboardResponse_arn = Lens.lens (\CreateDashboardResponse' {arn} -> arn) (\s@CreateDashboardResponse' {} a -> s {arn = a} :: CreateDashboardResponse)
+
+-- | The status of the dashboard creation request.
+createDashboardResponse_creationStatus :: Lens.Lens' CreateDashboardResponse (Prelude.Maybe ResourceStatus)
+createDashboardResponse_creationStatus = Lens.lens (\CreateDashboardResponse' {creationStatus} -> creationStatus) (\s@CreateDashboardResponse' {} a -> s {creationStatus = a} :: CreateDashboardResponse)
+
+-- | The ID for the dashboard.
+createDashboardResponse_dashboardId :: Lens.Lens' CreateDashboardResponse (Prelude.Maybe Prelude.Text)
+createDashboardResponse_dashboardId = Lens.lens (\CreateDashboardResponse' {dashboardId} -> dashboardId) (\s@CreateDashboardResponse' {} a -> s {dashboardId = a} :: CreateDashboardResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createDashboardResponse_requestId :: Lens.Lens' CreateDashboardResponse (Prelude.Maybe Prelude.Text)
+createDashboardResponse_requestId = Lens.lens (\CreateDashboardResponse' {requestId} -> requestId) (\s@CreateDashboardResponse' {} a -> s {requestId = a} :: CreateDashboardResponse)
+
+-- | The ARN of the dashboard, including the version number of the first
+-- version that is created.
+createDashboardResponse_versionArn :: Lens.Lens' CreateDashboardResponse (Prelude.Maybe Prelude.Text)
+createDashboardResponse_versionArn = Lens.lens (\CreateDashboardResponse' {versionArn} -> versionArn) (\s@CreateDashboardResponse' {} a -> s {versionArn = a} :: CreateDashboardResponse)
+
+-- | The HTTP status of the request.
+createDashboardResponse_status :: Lens.Lens' CreateDashboardResponse Prelude.Int
+createDashboardResponse_status = Lens.lens (\CreateDashboardResponse' {status} -> status) (\s@CreateDashboardResponse' {} a -> s {status = a} :: CreateDashboardResponse)
+
+instance Prelude.NFData CreateDashboardResponse where
+  rnf CreateDashboardResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf versionArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateDataSet.hs b/gen/Amazonka/QuickSight/CreateDataSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateDataSet.hs
@@ -0,0 +1,438 @@
+{-# 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.QuickSight.CreateDataSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a dataset. This operation doesn\'t support datasets that include
+-- uploaded files as a source.
+module Amazonka.QuickSight.CreateDataSet
+  ( -- * Creating a Request
+    CreateDataSet (..),
+    newCreateDataSet,
+
+    -- * Request Lenses
+    createDataSet_columnGroups,
+    createDataSet_columnLevelPermissionRules,
+    createDataSet_dataSetUsageConfiguration,
+    createDataSet_fieldFolders,
+    createDataSet_logicalTableMap,
+    createDataSet_permissions,
+    createDataSet_rowLevelPermissionDataSet,
+    createDataSet_rowLevelPermissionTagConfiguration,
+    createDataSet_tags,
+    createDataSet_awsAccountId,
+    createDataSet_dataSetId,
+    createDataSet_name,
+    createDataSet_physicalTableMap,
+    createDataSet_importMode,
+
+    -- * Destructuring the Response
+    CreateDataSetResponse (..),
+    newCreateDataSetResponse,
+
+    -- * Response Lenses
+    createDataSetResponse_arn,
+    createDataSetResponse_dataSetId,
+    createDataSetResponse_ingestionArn,
+    createDataSetResponse_ingestionId,
+    createDataSetResponse_requestId,
+    createDataSetResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDataSet' smart constructor.
+data CreateDataSet = CreateDataSet'
+  { -- | Groupings of columns that work together in certain Amazon QuickSight
+    -- features. Currently, only geospatial hierarchy is supported.
+    columnGroups :: Prelude.Maybe (Prelude.NonEmpty ColumnGroup),
+    -- | A set of one or more definitions of a
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+    columnLevelPermissionRules :: Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule),
+    dataSetUsageConfiguration :: Prelude.Maybe DataSetUsageConfiguration,
+    -- | The folder that contains fields and nested subfolders for your dataset.
+    fieldFolders :: Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder),
+    -- | Configures the combination and transformation of the data from the
+    -- physical tables.
+    logicalTableMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable),
+    -- | A list of resource permissions on the dataset.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The row-level security configuration for the data that you want to
+    -- create.
+    rowLevelPermissionDataSet :: Prelude.Maybe RowLevelPermissionDataSet,
+    -- | The configuration of tags on a dataset to set row-level security.
+    -- Row-level security tags are currently supported for anonymous embedding
+    -- only.
+    rowLevelPermissionTagConfiguration :: Prelude.Maybe RowLevelPermissionTagConfiguration,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the dataset.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Text,
+    -- | The display name for the dataset.
+    name :: Prelude.Text,
+    -- | Declares the physical tables that are available in the underlying data
+    -- sources.
+    physicalTableMap :: Prelude.HashMap Prelude.Text PhysicalTable,
+    -- | Indicates whether you want to import the data into SPICE.
+    importMode :: DataSetImportMode
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnGroups', 'createDataSet_columnGroups' - Groupings of columns that work together in certain Amazon QuickSight
+-- features. Currently, only geospatial hierarchy is supported.
+--
+-- 'columnLevelPermissionRules', 'createDataSet_columnLevelPermissionRules' - A set of one or more definitions of a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+--
+-- 'dataSetUsageConfiguration', 'createDataSet_dataSetUsageConfiguration' - Undocumented member.
+--
+-- 'fieldFolders', 'createDataSet_fieldFolders' - The folder that contains fields and nested subfolders for your dataset.
+--
+-- 'logicalTableMap', 'createDataSet_logicalTableMap' - Configures the combination and transformation of the data from the
+-- physical tables.
+--
+-- 'permissions', 'createDataSet_permissions' - A list of resource permissions on the dataset.
+--
+-- 'rowLevelPermissionDataSet', 'createDataSet_rowLevelPermissionDataSet' - The row-level security configuration for the data that you want to
+-- create.
+--
+-- 'rowLevelPermissionTagConfiguration', 'createDataSet_rowLevelPermissionTagConfiguration' - The configuration of tags on a dataset to set row-level security.
+-- Row-level security tags are currently supported for anonymous embedding
+-- only.
+--
+-- 'tags', 'createDataSet_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the dataset.
+--
+-- 'awsAccountId', 'createDataSet_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'createDataSet_dataSetId' - An ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+--
+-- 'name', 'createDataSet_name' - The display name for the dataset.
+--
+-- 'physicalTableMap', 'createDataSet_physicalTableMap' - Declares the physical tables that are available in the underlying data
+-- sources.
+--
+-- 'importMode', 'createDataSet_importMode' - Indicates whether you want to import the data into SPICE.
+newCreateDataSet ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'importMode'
+  DataSetImportMode ->
+  CreateDataSet
+newCreateDataSet
+  pAwsAccountId_
+  pDataSetId_
+  pName_
+  pImportMode_ =
+    CreateDataSet'
+      { columnGroups = Prelude.Nothing,
+        columnLevelPermissionRules = Prelude.Nothing,
+        dataSetUsageConfiguration = Prelude.Nothing,
+        fieldFolders = Prelude.Nothing,
+        logicalTableMap = Prelude.Nothing,
+        permissions = Prelude.Nothing,
+        rowLevelPermissionDataSet = Prelude.Nothing,
+        rowLevelPermissionTagConfiguration = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dataSetId = pDataSetId_,
+        name = pName_,
+        physicalTableMap = Prelude.mempty,
+        importMode = pImportMode_
+      }
+
+-- | Groupings of columns that work together in certain Amazon QuickSight
+-- features. Currently, only geospatial hierarchy is supported.
+createDataSet_columnGroups :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnGroup))
+createDataSet_columnGroups = Lens.lens (\CreateDataSet' {columnGroups} -> columnGroups) (\s@CreateDataSet' {} a -> s {columnGroups = a} :: CreateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | A set of one or more definitions of a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+createDataSet_columnLevelPermissionRules :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule))
+createDataSet_columnLevelPermissionRules = Lens.lens (\CreateDataSet' {columnLevelPermissionRules} -> columnLevelPermissionRules) (\s@CreateDataSet' {} a -> s {columnLevelPermissionRules = a} :: CreateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createDataSet_dataSetUsageConfiguration :: Lens.Lens' CreateDataSet (Prelude.Maybe DataSetUsageConfiguration)
+createDataSet_dataSetUsageConfiguration = Lens.lens (\CreateDataSet' {dataSetUsageConfiguration} -> dataSetUsageConfiguration) (\s@CreateDataSet' {} a -> s {dataSetUsageConfiguration = a} :: CreateDataSet)
+
+-- | The folder that contains fields and nested subfolders for your dataset.
+createDataSet_fieldFolders :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder))
+createDataSet_fieldFolders = Lens.lens (\CreateDataSet' {fieldFolders} -> fieldFolders) (\s@CreateDataSet' {} a -> s {fieldFolders = a} :: CreateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | Configures the combination and transformation of the data from the
+-- physical tables.
+createDataSet_logicalTableMap :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable))
+createDataSet_logicalTableMap = Lens.lens (\CreateDataSet' {logicalTableMap} -> logicalTableMap) (\s@CreateDataSet' {} a -> s {logicalTableMap = a} :: CreateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of resource permissions on the dataset.
+createDataSet_permissions :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createDataSet_permissions = Lens.lens (\CreateDataSet' {permissions} -> permissions) (\s@CreateDataSet' {} a -> s {permissions = a} :: CreateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The row-level security configuration for the data that you want to
+-- create.
+createDataSet_rowLevelPermissionDataSet :: Lens.Lens' CreateDataSet (Prelude.Maybe RowLevelPermissionDataSet)
+createDataSet_rowLevelPermissionDataSet = Lens.lens (\CreateDataSet' {rowLevelPermissionDataSet} -> rowLevelPermissionDataSet) (\s@CreateDataSet' {} a -> s {rowLevelPermissionDataSet = a} :: CreateDataSet)
+
+-- | The configuration of tags on a dataset to set row-level security.
+-- Row-level security tags are currently supported for anonymous embedding
+-- only.
+createDataSet_rowLevelPermissionTagConfiguration :: Lens.Lens' CreateDataSet (Prelude.Maybe RowLevelPermissionTagConfiguration)
+createDataSet_rowLevelPermissionTagConfiguration = Lens.lens (\CreateDataSet' {rowLevelPermissionTagConfiguration} -> rowLevelPermissionTagConfiguration) (\s@CreateDataSet' {} a -> s {rowLevelPermissionTagConfiguration = a} :: CreateDataSet)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the dataset.
+createDataSet_tags :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty Tag))
+createDataSet_tags = Lens.lens (\CreateDataSet' {tags} -> tags) (\s@CreateDataSet' {} a -> s {tags = a} :: CreateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services account ID.
+createDataSet_awsAccountId :: Lens.Lens' CreateDataSet Prelude.Text
+createDataSet_awsAccountId = Lens.lens (\CreateDataSet' {awsAccountId} -> awsAccountId) (\s@CreateDataSet' {} a -> s {awsAccountId = a} :: CreateDataSet)
+
+-- | An ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+createDataSet_dataSetId :: Lens.Lens' CreateDataSet Prelude.Text
+createDataSet_dataSetId = Lens.lens (\CreateDataSet' {dataSetId} -> dataSetId) (\s@CreateDataSet' {} a -> s {dataSetId = a} :: CreateDataSet)
+
+-- | The display name for the dataset.
+createDataSet_name :: Lens.Lens' CreateDataSet Prelude.Text
+createDataSet_name = Lens.lens (\CreateDataSet' {name} -> name) (\s@CreateDataSet' {} a -> s {name = a} :: CreateDataSet)
+
+-- | Declares the physical tables that are available in the underlying data
+-- sources.
+createDataSet_physicalTableMap :: Lens.Lens' CreateDataSet (Prelude.HashMap Prelude.Text PhysicalTable)
+createDataSet_physicalTableMap = Lens.lens (\CreateDataSet' {physicalTableMap} -> physicalTableMap) (\s@CreateDataSet' {} a -> s {physicalTableMap = a} :: CreateDataSet) Prelude.. Lens.coerced
+
+-- | Indicates whether you want to import the data into SPICE.
+createDataSet_importMode :: Lens.Lens' CreateDataSet DataSetImportMode
+createDataSet_importMode = Lens.lens (\CreateDataSet' {importMode} -> importMode) (\s@CreateDataSet' {} a -> s {importMode = a} :: CreateDataSet)
+
+instance Core.AWSRequest CreateDataSet where
+  type
+    AWSResponse CreateDataSet =
+      CreateDataSetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDataSetResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DataSetId")
+            Prelude.<*> (x Data..?> "IngestionArn")
+            Prelude.<*> (x Data..?> "IngestionId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDataSet where
+  hashWithSalt _salt CreateDataSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnGroups
+      `Prelude.hashWithSalt` columnLevelPermissionRules
+      `Prelude.hashWithSalt` dataSetUsageConfiguration
+      `Prelude.hashWithSalt` fieldFolders
+      `Prelude.hashWithSalt` logicalTableMap
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` rowLevelPermissionDataSet
+      `Prelude.hashWithSalt` rowLevelPermissionTagConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` physicalTableMap
+      `Prelude.hashWithSalt` importMode
+
+instance Prelude.NFData CreateDataSet where
+  rnf CreateDataSet' {..} =
+    Prelude.rnf columnGroups
+      `Prelude.seq` Prelude.rnf columnLevelPermissionRules
+      `Prelude.seq` Prelude.rnf dataSetUsageConfiguration
+      `Prelude.seq` Prelude.rnf fieldFolders
+      `Prelude.seq` Prelude.rnf logicalTableMap
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf rowLevelPermissionDataSet
+      `Prelude.seq` Prelude.rnf rowLevelPermissionTagConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf physicalTableMap
+      `Prelude.seq` Prelude.rnf importMode
+
+instance Data.ToHeaders CreateDataSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDataSet where
+  toJSON CreateDataSet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnGroups" Data..=) Prelude.<$> columnGroups,
+            ("ColumnLevelPermissionRules" Data..=)
+              Prelude.<$> columnLevelPermissionRules,
+            ("DataSetUsageConfiguration" Data..=)
+              Prelude.<$> dataSetUsageConfiguration,
+            ("FieldFolders" Data..=) Prelude.<$> fieldFolders,
+            ("LogicalTableMap" Data..=)
+              Prelude.<$> logicalTableMap,
+            ("Permissions" Data..=) Prelude.<$> permissions,
+            ("RowLevelPermissionDataSet" Data..=)
+              Prelude.<$> rowLevelPermissionDataSet,
+            ("RowLevelPermissionTagConfiguration" Data..=)
+              Prelude.<$> rowLevelPermissionTagConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("DataSetId" Data..= dataSetId),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("PhysicalTableMap" Data..= physicalTableMap),
+            Prelude.Just ("ImportMode" Data..= importMode)
+          ]
+      )
+
+instance Data.ToPath CreateDataSet where
+  toPath CreateDataSet' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/data-sets"]
+
+instance Data.ToQuery CreateDataSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDataSetResponse' smart constructor.
+data CreateDataSetResponse = CreateDataSetResponse'
+  { -- | The Amazon Resource Name (ARN) of the dataset.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the ingestion, which is triggered as a result of dataset
+    -- creation if the import mode is SPICE.
+    ingestionArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the ingestion, which is triggered as a result of dataset
+    -- creation if the import mode is SPICE.
+    ingestionId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createDataSetResponse_arn' - The Amazon Resource Name (ARN) of the dataset.
+--
+-- 'dataSetId', 'createDataSetResponse_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+--
+-- 'ingestionArn', 'createDataSetResponse_ingestionArn' - The ARN for the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+--
+-- 'ingestionId', 'createDataSetResponse_ingestionId' - The ID of the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+--
+-- 'requestId', 'createDataSetResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createDataSetResponse_status' - The HTTP status of the request.
+newCreateDataSetResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateDataSetResponse
+newCreateDataSetResponse pStatus_ =
+  CreateDataSetResponse'
+    { arn = Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      ingestionArn = Prelude.Nothing,
+      ingestionId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset.
+createDataSetResponse_arn :: Lens.Lens' CreateDataSetResponse (Prelude.Maybe Prelude.Text)
+createDataSetResponse_arn = Lens.lens (\CreateDataSetResponse' {arn} -> arn) (\s@CreateDataSetResponse' {} a -> s {arn = a} :: CreateDataSetResponse)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+createDataSetResponse_dataSetId :: Lens.Lens' CreateDataSetResponse (Prelude.Maybe Prelude.Text)
+createDataSetResponse_dataSetId = Lens.lens (\CreateDataSetResponse' {dataSetId} -> dataSetId) (\s@CreateDataSetResponse' {} a -> s {dataSetId = a} :: CreateDataSetResponse)
+
+-- | The ARN for the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+createDataSetResponse_ingestionArn :: Lens.Lens' CreateDataSetResponse (Prelude.Maybe Prelude.Text)
+createDataSetResponse_ingestionArn = Lens.lens (\CreateDataSetResponse' {ingestionArn} -> ingestionArn) (\s@CreateDataSetResponse' {} a -> s {ingestionArn = a} :: CreateDataSetResponse)
+
+-- | The ID of the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+createDataSetResponse_ingestionId :: Lens.Lens' CreateDataSetResponse (Prelude.Maybe Prelude.Text)
+createDataSetResponse_ingestionId = Lens.lens (\CreateDataSetResponse' {ingestionId} -> ingestionId) (\s@CreateDataSetResponse' {} a -> s {ingestionId = a} :: CreateDataSetResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createDataSetResponse_requestId :: Lens.Lens' CreateDataSetResponse (Prelude.Maybe Prelude.Text)
+createDataSetResponse_requestId = Lens.lens (\CreateDataSetResponse' {requestId} -> requestId) (\s@CreateDataSetResponse' {} a -> s {requestId = a} :: CreateDataSetResponse)
+
+-- | The HTTP status of the request.
+createDataSetResponse_status :: Lens.Lens' CreateDataSetResponse Prelude.Int
+createDataSetResponse_status = Lens.lens (\CreateDataSetResponse' {status} -> status) (\s@CreateDataSetResponse' {} a -> s {status = a} :: CreateDataSetResponse)
+
+instance Prelude.NFData CreateDataSetResponse where
+  rnf CreateDataSetResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf ingestionArn
+      `Prelude.seq` Prelude.rnf ingestionId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateDataSource.hs b/gen/Amazonka/QuickSight/CreateDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateDataSource.hs
@@ -0,0 +1,370 @@
+{-# 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.QuickSight.CreateDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a data source.
+module Amazonka.QuickSight.CreateDataSource
+  ( -- * Creating a Request
+    CreateDataSource (..),
+    newCreateDataSource,
+
+    -- * Request Lenses
+    createDataSource_credentials,
+    createDataSource_dataSourceParameters,
+    createDataSource_permissions,
+    createDataSource_sslProperties,
+    createDataSource_tags,
+    createDataSource_vpcConnectionProperties,
+    createDataSource_awsAccountId,
+    createDataSource_dataSourceId,
+    createDataSource_name,
+    createDataSource_type,
+
+    -- * Destructuring the Response
+    CreateDataSourceResponse (..),
+    newCreateDataSourceResponse,
+
+    -- * Response Lenses
+    createDataSourceResponse_arn,
+    createDataSourceResponse_creationStatus,
+    createDataSourceResponse_dataSourceId,
+    createDataSourceResponse_requestId,
+    createDataSourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDataSource' smart constructor.
+data CreateDataSource = CreateDataSource'
+  { -- | The credentials Amazon QuickSight that uses to connect to your
+    -- underlying source. Currently, only credentials based on user name and
+    -- password are supported.
+    credentials :: Prelude.Maybe (Data.Sensitive DataSourceCredentials),
+    -- | The parameters that Amazon QuickSight uses to connect to your underlying
+    -- source.
+    dataSourceParameters :: Prelude.Maybe DataSourceParameters,
+    -- | A list of resource permissions on the data source.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+    -- connects to your underlying source.
+    sslProperties :: Prelude.Maybe SslProperties,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the data source.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Use this parameter only when you want Amazon QuickSight to use a VPC
+    -- connection when connecting to your underlying source.
+    vpcConnectionProperties :: Prelude.Maybe VpcConnectionProperties,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Text,
+    -- | A display name for the data source.
+    name :: Prelude.Text,
+    -- | The type of the data source. To return a list of all data sources, use
+    -- @ListDataSources@.
+    --
+    -- Use @AMAZON_ELASTICSEARCH@ for Amazon OpenSearch Service.
+    type' :: DataSourceType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'credentials', 'createDataSource_credentials' - The credentials Amazon QuickSight that uses to connect to your
+-- underlying source. Currently, only credentials based on user name and
+-- password are supported.
+--
+-- 'dataSourceParameters', 'createDataSource_dataSourceParameters' - The parameters that Amazon QuickSight uses to connect to your underlying
+-- source.
+--
+-- 'permissions', 'createDataSource_permissions' - A list of resource permissions on the data source.
+--
+-- 'sslProperties', 'createDataSource_sslProperties' - Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying source.
+--
+-- 'tags', 'createDataSource_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the data source.
+--
+-- 'vpcConnectionProperties', 'createDataSource_vpcConnectionProperties' - Use this parameter only when you want Amazon QuickSight to use a VPC
+-- connection when connecting to your underlying source.
+--
+-- 'awsAccountId', 'createDataSource_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSourceId', 'createDataSource_dataSourceId' - An ID for the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'name', 'createDataSource_name' - A display name for the data source.
+--
+-- 'type'', 'createDataSource_type' - The type of the data source. To return a list of all data sources, use
+-- @ListDataSources@.
+--
+-- Use @AMAZON_ELASTICSEARCH@ for Amazon OpenSearch Service.
+newCreateDataSource ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSourceId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  DataSourceType ->
+  CreateDataSource
+newCreateDataSource
+  pAwsAccountId_
+  pDataSourceId_
+  pName_
+  pType_ =
+    CreateDataSource'
+      { credentials = Prelude.Nothing,
+        dataSourceParameters = Prelude.Nothing,
+        permissions = Prelude.Nothing,
+        sslProperties = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        vpcConnectionProperties = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dataSourceId = pDataSourceId_,
+        name = pName_,
+        type' = pType_
+      }
+
+-- | The credentials Amazon QuickSight that uses to connect to your
+-- underlying source. Currently, only credentials based on user name and
+-- password are supported.
+createDataSource_credentials :: Lens.Lens' CreateDataSource (Prelude.Maybe DataSourceCredentials)
+createDataSource_credentials = Lens.lens (\CreateDataSource' {credentials} -> credentials) (\s@CreateDataSource' {} a -> s {credentials = a} :: CreateDataSource) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The parameters that Amazon QuickSight uses to connect to your underlying
+-- source.
+createDataSource_dataSourceParameters :: Lens.Lens' CreateDataSource (Prelude.Maybe DataSourceParameters)
+createDataSource_dataSourceParameters = Lens.lens (\CreateDataSource' {dataSourceParameters} -> dataSourceParameters) (\s@CreateDataSource' {} a -> s {dataSourceParameters = a} :: CreateDataSource)
+
+-- | A list of resource permissions on the data source.
+createDataSource_permissions :: Lens.Lens' CreateDataSource (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createDataSource_permissions = Lens.lens (\CreateDataSource' {permissions} -> permissions) (\s@CreateDataSource' {} a -> s {permissions = a} :: CreateDataSource) Prelude.. Lens.mapping Lens.coerced
+
+-- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying source.
+createDataSource_sslProperties :: Lens.Lens' CreateDataSource (Prelude.Maybe SslProperties)
+createDataSource_sslProperties = Lens.lens (\CreateDataSource' {sslProperties} -> sslProperties) (\s@CreateDataSource' {} a -> s {sslProperties = a} :: CreateDataSource)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the data source.
+createDataSource_tags :: Lens.Lens' CreateDataSource (Prelude.Maybe (Prelude.NonEmpty Tag))
+createDataSource_tags = Lens.lens (\CreateDataSource' {tags} -> tags) (\s@CreateDataSource' {} a -> s {tags = a} :: CreateDataSource) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this parameter only when you want Amazon QuickSight to use a VPC
+-- connection when connecting to your underlying source.
+createDataSource_vpcConnectionProperties :: Lens.Lens' CreateDataSource (Prelude.Maybe VpcConnectionProperties)
+createDataSource_vpcConnectionProperties = Lens.lens (\CreateDataSource' {vpcConnectionProperties} -> vpcConnectionProperties) (\s@CreateDataSource' {} a -> s {vpcConnectionProperties = a} :: CreateDataSource)
+
+-- | The Amazon Web Services account ID.
+createDataSource_awsAccountId :: Lens.Lens' CreateDataSource Prelude.Text
+createDataSource_awsAccountId = Lens.lens (\CreateDataSource' {awsAccountId} -> awsAccountId) (\s@CreateDataSource' {} a -> s {awsAccountId = a} :: CreateDataSource)
+
+-- | An ID for the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+createDataSource_dataSourceId :: Lens.Lens' CreateDataSource Prelude.Text
+createDataSource_dataSourceId = Lens.lens (\CreateDataSource' {dataSourceId} -> dataSourceId) (\s@CreateDataSource' {} a -> s {dataSourceId = a} :: CreateDataSource)
+
+-- | A display name for the data source.
+createDataSource_name :: Lens.Lens' CreateDataSource Prelude.Text
+createDataSource_name = Lens.lens (\CreateDataSource' {name} -> name) (\s@CreateDataSource' {} a -> s {name = a} :: CreateDataSource)
+
+-- | The type of the data source. To return a list of all data sources, use
+-- @ListDataSources@.
+--
+-- Use @AMAZON_ELASTICSEARCH@ for Amazon OpenSearch Service.
+createDataSource_type :: Lens.Lens' CreateDataSource DataSourceType
+createDataSource_type = Lens.lens (\CreateDataSource' {type'} -> type') (\s@CreateDataSource' {} a -> s {type' = a} :: CreateDataSource)
+
+instance Core.AWSRequest CreateDataSource where
+  type
+    AWSResponse CreateDataSource =
+      CreateDataSourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDataSourceResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "DataSourceId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDataSource where
+  hashWithSalt _salt CreateDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` credentials
+      `Prelude.hashWithSalt` dataSourceParameters
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` sslProperties
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcConnectionProperties
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSourceId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CreateDataSource where
+  rnf CreateDataSource' {..} =
+    Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf dataSourceParameters
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf sslProperties
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcConnectionProperties
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders CreateDataSource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDataSource where
+  toJSON CreateDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Credentials" Data..=) Prelude.<$> credentials,
+            ("DataSourceParameters" Data..=)
+              Prelude.<$> dataSourceParameters,
+            ("Permissions" Data..=) Prelude.<$> permissions,
+            ("SslProperties" Data..=) Prelude.<$> sslProperties,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VpcConnectionProperties" Data..=)
+              Prelude.<$> vpcConnectionProperties,
+            Prelude.Just ("DataSourceId" Data..= dataSourceId),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
+
+instance Data.ToPath CreateDataSource where
+  toPath CreateDataSource' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources"
+      ]
+
+instance Data.ToQuery CreateDataSource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDataSourceResponse' smart constructor.
+data CreateDataSourceResponse = CreateDataSourceResponse'
+  { -- | The Amazon Resource Name (ARN) of the data source.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The status of creating the data source.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createDataSourceResponse_arn' - The Amazon Resource Name (ARN) of the data source.
+--
+-- 'creationStatus', 'createDataSourceResponse_creationStatus' - The status of creating the data source.
+--
+-- 'dataSourceId', 'createDataSourceResponse_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'requestId', 'createDataSourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createDataSourceResponse_status' - The HTTP status of the request.
+newCreateDataSourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateDataSourceResponse
+newCreateDataSourceResponse pStatus_ =
+  CreateDataSourceResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the data source.
+createDataSourceResponse_arn :: Lens.Lens' CreateDataSourceResponse (Prelude.Maybe Prelude.Text)
+createDataSourceResponse_arn = Lens.lens (\CreateDataSourceResponse' {arn} -> arn) (\s@CreateDataSourceResponse' {} a -> s {arn = a} :: CreateDataSourceResponse)
+
+-- | The status of creating the data source.
+createDataSourceResponse_creationStatus :: Lens.Lens' CreateDataSourceResponse (Prelude.Maybe ResourceStatus)
+createDataSourceResponse_creationStatus = Lens.lens (\CreateDataSourceResponse' {creationStatus} -> creationStatus) (\s@CreateDataSourceResponse' {} a -> s {creationStatus = a} :: CreateDataSourceResponse)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+createDataSourceResponse_dataSourceId :: Lens.Lens' CreateDataSourceResponse (Prelude.Maybe Prelude.Text)
+createDataSourceResponse_dataSourceId = Lens.lens (\CreateDataSourceResponse' {dataSourceId} -> dataSourceId) (\s@CreateDataSourceResponse' {} a -> s {dataSourceId = a} :: CreateDataSourceResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createDataSourceResponse_requestId :: Lens.Lens' CreateDataSourceResponse (Prelude.Maybe Prelude.Text)
+createDataSourceResponse_requestId = Lens.lens (\CreateDataSourceResponse' {requestId} -> requestId) (\s@CreateDataSourceResponse' {} a -> s {requestId = a} :: CreateDataSourceResponse)
+
+-- | The HTTP status of the request.
+createDataSourceResponse_status :: Lens.Lens' CreateDataSourceResponse Prelude.Int
+createDataSourceResponse_status = Lens.lens (\CreateDataSourceResponse' {status} -> status) (\s@CreateDataSourceResponse' {} a -> s {status = a} :: CreateDataSourceResponse)
+
+instance Prelude.NFData CreateDataSourceResponse where
+  rnf CreateDataSourceResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateFolder.hs b/gen/Amazonka/QuickSight/CreateFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateFolder.hs
@@ -0,0 +1,296 @@
+{-# 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.QuickSight.CreateFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an empty shared folder.
+module Amazonka.QuickSight.CreateFolder
+  ( -- * Creating a Request
+    CreateFolder (..),
+    newCreateFolder,
+
+    -- * Request Lenses
+    createFolder_folderType,
+    createFolder_name,
+    createFolder_parentFolderArn,
+    createFolder_permissions,
+    createFolder_tags,
+    createFolder_awsAccountId,
+    createFolder_folderId,
+
+    -- * Destructuring the Response
+    CreateFolderResponse (..),
+    newCreateFolderResponse,
+
+    -- * Response Lenses
+    createFolderResponse_arn,
+    createFolderResponse_folderId,
+    createFolderResponse_requestId,
+    createFolderResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateFolder' smart constructor.
+data CreateFolder = CreateFolder'
+  { -- | The type of folder. By default, @folderType@ is @SHARED@.
+    folderType :: Prelude.Maybe FolderType,
+    -- | The name of the folder.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the parent folder.
+    --
+    -- @ParentFolderArn@ can be null. An empty @parentFolderArn@ creates a
+    -- root-level folder.
+    parentFolderArn :: Prelude.Maybe Prelude.Text,
+    -- | A structure that describes the principals and the resource-level
+    -- permissions of a folder.
+    --
+    -- To specify no permissions, omit @Permissions@.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | Tags for the folder.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ID for the Amazon Web Services account where you want to create the
+    -- folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFolder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'folderType', 'createFolder_folderType' - The type of folder. By default, @folderType@ is @SHARED@.
+--
+-- 'name', 'createFolder_name' - The name of the folder.
+--
+-- 'parentFolderArn', 'createFolder_parentFolderArn' - The Amazon Resource Name (ARN) for the parent folder.
+--
+-- @ParentFolderArn@ can be null. An empty @parentFolderArn@ creates a
+-- root-level folder.
+--
+-- 'permissions', 'createFolder_permissions' - A structure that describes the principals and the resource-level
+-- permissions of a folder.
+--
+-- To specify no permissions, omit @Permissions@.
+--
+-- 'tags', 'createFolder_tags' - Tags for the folder.
+--
+-- 'awsAccountId', 'createFolder_awsAccountId' - The ID for the Amazon Web Services account where you want to create the
+-- folder.
+--
+-- 'folderId', 'createFolder_folderId' - The ID of the folder.
+newCreateFolder ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  CreateFolder
+newCreateFolder pAwsAccountId_ pFolderId_ =
+  CreateFolder'
+    { folderType = Prelude.Nothing,
+      name = Prelude.Nothing,
+      parentFolderArn = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      folderId = pFolderId_
+    }
+
+-- | The type of folder. By default, @folderType@ is @SHARED@.
+createFolder_folderType :: Lens.Lens' CreateFolder (Prelude.Maybe FolderType)
+createFolder_folderType = Lens.lens (\CreateFolder' {folderType} -> folderType) (\s@CreateFolder' {} a -> s {folderType = a} :: CreateFolder)
+
+-- | The name of the folder.
+createFolder_name :: Lens.Lens' CreateFolder (Prelude.Maybe Prelude.Text)
+createFolder_name = Lens.lens (\CreateFolder' {name} -> name) (\s@CreateFolder' {} a -> s {name = a} :: CreateFolder)
+
+-- | The Amazon Resource Name (ARN) for the parent folder.
+--
+-- @ParentFolderArn@ can be null. An empty @parentFolderArn@ creates a
+-- root-level folder.
+createFolder_parentFolderArn :: Lens.Lens' CreateFolder (Prelude.Maybe Prelude.Text)
+createFolder_parentFolderArn = Lens.lens (\CreateFolder' {parentFolderArn} -> parentFolderArn) (\s@CreateFolder' {} a -> s {parentFolderArn = a} :: CreateFolder)
+
+-- | A structure that describes the principals and the resource-level
+-- permissions of a folder.
+--
+-- To specify no permissions, omit @Permissions@.
+createFolder_permissions :: Lens.Lens' CreateFolder (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createFolder_permissions = Lens.lens (\CreateFolder' {permissions} -> permissions) (\s@CreateFolder' {} a -> s {permissions = a} :: CreateFolder) Prelude.. Lens.mapping Lens.coerced
+
+-- | Tags for the folder.
+createFolder_tags :: Lens.Lens' CreateFolder (Prelude.Maybe (Prelude.NonEmpty Tag))
+createFolder_tags = Lens.lens (\CreateFolder' {tags} -> tags) (\s@CreateFolder' {} a -> s {tags = a} :: CreateFolder) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID for the Amazon Web Services account where you want to create the
+-- folder.
+createFolder_awsAccountId :: Lens.Lens' CreateFolder Prelude.Text
+createFolder_awsAccountId = Lens.lens (\CreateFolder' {awsAccountId} -> awsAccountId) (\s@CreateFolder' {} a -> s {awsAccountId = a} :: CreateFolder)
+
+-- | The ID of the folder.
+createFolder_folderId :: Lens.Lens' CreateFolder Prelude.Text
+createFolder_folderId = Lens.lens (\CreateFolder' {folderId} -> folderId) (\s@CreateFolder' {} a -> s {folderId = a} :: CreateFolder)
+
+instance Core.AWSRequest CreateFolder where
+  type AWSResponse CreateFolder = CreateFolderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFolderResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "FolderId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFolder where
+  hashWithSalt _salt CreateFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` folderType
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parentFolderArn
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData CreateFolder where
+  rnf CreateFolder' {..} =
+    Prelude.rnf folderType
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parentFolderArn
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders CreateFolder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFolder where
+  toJSON CreateFolder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FolderType" Data..=) Prelude.<$> folderType,
+            ("Name" Data..=) Prelude.<$> name,
+            ("ParentFolderArn" Data..=)
+              Prelude.<$> parentFolderArn,
+            ("Permissions" Data..=) Prelude.<$> permissions,
+            ("Tags" Data..=) Prelude.<$> tags
+          ]
+      )
+
+instance Data.ToPath CreateFolder where
+  toPath CreateFolder' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId
+      ]
+
+instance Data.ToQuery CreateFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFolderResponse' smart constructor.
+data CreateFolderResponse = CreateFolderResponse'
+  { -- | The Amazon Resource Name (ARN) for the newly created folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The folder ID for the newly created folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | The request ID for the newly created folder.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFolderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createFolderResponse_arn' - The Amazon Resource Name (ARN) for the newly created folder.
+--
+-- 'folderId', 'createFolderResponse_folderId' - The folder ID for the newly created folder.
+--
+-- 'requestId', 'createFolderResponse_requestId' - The request ID for the newly created folder.
+--
+-- 'status', 'createFolderResponse_status' - The HTTP status of the request.
+newCreateFolderResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateFolderResponse
+newCreateFolderResponse pStatus_ =
+  CreateFolderResponse'
+    { arn = Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the newly created folder.
+createFolderResponse_arn :: Lens.Lens' CreateFolderResponse (Prelude.Maybe Prelude.Text)
+createFolderResponse_arn = Lens.lens (\CreateFolderResponse' {arn} -> arn) (\s@CreateFolderResponse' {} a -> s {arn = a} :: CreateFolderResponse)
+
+-- | The folder ID for the newly created folder.
+createFolderResponse_folderId :: Lens.Lens' CreateFolderResponse (Prelude.Maybe Prelude.Text)
+createFolderResponse_folderId = Lens.lens (\CreateFolderResponse' {folderId} -> folderId) (\s@CreateFolderResponse' {} a -> s {folderId = a} :: CreateFolderResponse)
+
+-- | The request ID for the newly created folder.
+createFolderResponse_requestId :: Lens.Lens' CreateFolderResponse (Prelude.Maybe Prelude.Text)
+createFolderResponse_requestId = Lens.lens (\CreateFolderResponse' {requestId} -> requestId) (\s@CreateFolderResponse' {} a -> s {requestId = a} :: CreateFolderResponse)
+
+-- | The HTTP status of the request.
+createFolderResponse_status :: Lens.Lens' CreateFolderResponse Prelude.Int
+createFolderResponse_status = Lens.lens (\CreateFolderResponse' {status} -> status) (\s@CreateFolderResponse' {} a -> s {status = a} :: CreateFolderResponse)
+
+instance Prelude.NFData CreateFolderResponse where
+  rnf CreateFolderResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateFolderMembership.hs b/gen/Amazonka/QuickSight/CreateFolderMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateFolderMembership.hs
@@ -0,0 +1,251 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.CreateFolderMembership
+-- 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 an asset, such as a dashboard, analysis, or dataset into a folder.
+module Amazonka.QuickSight.CreateFolderMembership
+  ( -- * Creating a Request
+    CreateFolderMembership (..),
+    newCreateFolderMembership,
+
+    -- * Request Lenses
+    createFolderMembership_awsAccountId,
+    createFolderMembership_folderId,
+    createFolderMembership_memberId,
+    createFolderMembership_memberType,
+
+    -- * Destructuring the Response
+    CreateFolderMembershipResponse (..),
+    newCreateFolderMembershipResponse,
+
+    -- * Response Lenses
+    createFolderMembershipResponse_folderMember,
+    createFolderMembershipResponse_requestId,
+    createFolderMembershipResponse_status,
+    createFolderMembershipResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateFolderMembership' smart constructor.
+data CreateFolderMembership = CreateFolderMembership'
+  { -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text,
+    -- | The ID of the asset (the dashboard, analysis, or dataset).
+    memberId :: Prelude.Text,
+    -- | The type of the member, including @DASHBOARD@, @ANALYSIS@, and
+    -- @DATASET@.
+    memberType :: MemberType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFolderMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'createFolderMembership_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'createFolderMembership_folderId' - The ID of the folder.
+--
+-- 'memberId', 'createFolderMembership_memberId' - The ID of the asset (the dashboard, analysis, or dataset).
+--
+-- 'memberType', 'createFolderMembership_memberType' - The type of the member, including @DASHBOARD@, @ANALYSIS@, and
+-- @DATASET@.
+newCreateFolderMembership ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  -- | 'memberId'
+  Prelude.Text ->
+  -- | 'memberType'
+  MemberType ->
+  CreateFolderMembership
+newCreateFolderMembership
+  pAwsAccountId_
+  pFolderId_
+  pMemberId_
+  pMemberType_ =
+    CreateFolderMembership'
+      { awsAccountId =
+          pAwsAccountId_,
+        folderId = pFolderId_,
+        memberId = pMemberId_,
+        memberType = pMemberType_
+      }
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+createFolderMembership_awsAccountId :: Lens.Lens' CreateFolderMembership Prelude.Text
+createFolderMembership_awsAccountId = Lens.lens (\CreateFolderMembership' {awsAccountId} -> awsAccountId) (\s@CreateFolderMembership' {} a -> s {awsAccountId = a} :: CreateFolderMembership)
+
+-- | The ID of the folder.
+createFolderMembership_folderId :: Lens.Lens' CreateFolderMembership Prelude.Text
+createFolderMembership_folderId = Lens.lens (\CreateFolderMembership' {folderId} -> folderId) (\s@CreateFolderMembership' {} a -> s {folderId = a} :: CreateFolderMembership)
+
+-- | The ID of the asset (the dashboard, analysis, or dataset).
+createFolderMembership_memberId :: Lens.Lens' CreateFolderMembership Prelude.Text
+createFolderMembership_memberId = Lens.lens (\CreateFolderMembership' {memberId} -> memberId) (\s@CreateFolderMembership' {} a -> s {memberId = a} :: CreateFolderMembership)
+
+-- | The type of the member, including @DASHBOARD@, @ANALYSIS@, and
+-- @DATASET@.
+createFolderMembership_memberType :: Lens.Lens' CreateFolderMembership MemberType
+createFolderMembership_memberType = Lens.lens (\CreateFolderMembership' {memberType} -> memberType) (\s@CreateFolderMembership' {} a -> s {memberType = a} :: CreateFolderMembership)
+
+instance Core.AWSRequest CreateFolderMembership where
+  type
+    AWSResponse CreateFolderMembership =
+      CreateFolderMembershipResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFolderMembershipResponse'
+            Prelude.<$> (x Data..?> "FolderMember")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFolderMembership where
+  hashWithSalt _salt CreateFolderMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+      `Prelude.hashWithSalt` memberId
+      `Prelude.hashWithSalt` memberType
+
+instance Prelude.NFData CreateFolderMembership where
+  rnf CreateFolderMembership' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf memberId
+      `Prelude.seq` Prelude.rnf memberType
+
+instance Data.ToHeaders CreateFolderMembership where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFolderMembership where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath CreateFolderMembership where
+  toPath CreateFolderMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId,
+        "/members/",
+        Data.toBS memberType,
+        "/",
+        Data.toBS memberId
+      ]
+
+instance Data.ToQuery CreateFolderMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFolderMembershipResponse' smart constructor.
+data CreateFolderMembershipResponse = CreateFolderMembershipResponse'
+  { -- | Information about the member in the folder.
+    folderMember :: Prelude.Maybe FolderMember,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe Prelude.Int,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFolderMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'folderMember', 'createFolderMembershipResponse_folderMember' - Information about the member in the folder.
+--
+-- 'requestId', 'createFolderMembershipResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createFolderMembershipResponse_status' - The HTTP status of the request.
+--
+-- 'httpStatus', 'createFolderMembershipResponse_httpStatus' - The response's http status code.
+newCreateFolderMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateFolderMembershipResponse
+newCreateFolderMembershipResponse pHttpStatus_ =
+  CreateFolderMembershipResponse'
+    { folderMember =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the member in the folder.
+createFolderMembershipResponse_folderMember :: Lens.Lens' CreateFolderMembershipResponse (Prelude.Maybe FolderMember)
+createFolderMembershipResponse_folderMember = Lens.lens (\CreateFolderMembershipResponse' {folderMember} -> folderMember) (\s@CreateFolderMembershipResponse' {} a -> s {folderMember = a} :: CreateFolderMembershipResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createFolderMembershipResponse_requestId :: Lens.Lens' CreateFolderMembershipResponse (Prelude.Maybe Prelude.Text)
+createFolderMembershipResponse_requestId = Lens.lens (\CreateFolderMembershipResponse' {requestId} -> requestId) (\s@CreateFolderMembershipResponse' {} a -> s {requestId = a} :: CreateFolderMembershipResponse)
+
+-- | The HTTP status of the request.
+createFolderMembershipResponse_status :: Lens.Lens' CreateFolderMembershipResponse (Prelude.Maybe Prelude.Int)
+createFolderMembershipResponse_status = Lens.lens (\CreateFolderMembershipResponse' {status} -> status) (\s@CreateFolderMembershipResponse' {} a -> s {status = a} :: CreateFolderMembershipResponse)
+
+-- | The response's http status code.
+createFolderMembershipResponse_httpStatus :: Lens.Lens' CreateFolderMembershipResponse Prelude.Int
+createFolderMembershipResponse_httpStatus = Lens.lens (\CreateFolderMembershipResponse' {httpStatus} -> httpStatus) (\s@CreateFolderMembershipResponse' {} a -> s {httpStatus = a} :: CreateFolderMembershipResponse)
+
+instance
+  Prelude.NFData
+    CreateFolderMembershipResponse
+  where
+  rnf CreateFolderMembershipResponse' {..} =
+    Prelude.rnf folderMember
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/QuickSight/CreateGroup.hs b/gen/Amazonka/QuickSight/CreateGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateGroup.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.CreateGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @CreateGroup@ operation to create a group in Amazon QuickSight.
+-- You can create up to 10,000 groups in a namespace. If you want to create
+-- more than 10,000 groups in a namespace, contact AWS Support.
+--
+-- The permissions resource is
+-- @arn:aws:quicksight:\<your-region>:@/@\<relevant-aws-account-id>@/@:group\/default\/@/@\<group-name>@/@ @.
+--
+-- The response is a group object.
+module Amazonka.QuickSight.CreateGroup
+  ( -- * Creating a Request
+    CreateGroup (..),
+    newCreateGroup,
+
+    -- * Request Lenses
+    createGroup_description,
+    createGroup_groupName,
+    createGroup_awsAccountId,
+    createGroup_namespace,
+
+    -- * Destructuring the Response
+    CreateGroupResponse (..),
+    newCreateGroupResponse,
+
+    -- * Response Lenses
+    createGroupResponse_group,
+    createGroupResponse_requestId,
+    createGroupResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for this operation.
+--
+-- /See:/ 'newCreateGroup' smart constructor.
+data CreateGroup = CreateGroup'
+  { -- | A description for the group that you want to create.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | A name for the group that you want to create.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that you want the group to be a part of.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createGroup_description' - A description for the group that you want to create.
+--
+-- 'groupName', 'createGroup_groupName' - A name for the group that you want to create.
+--
+-- 'awsAccountId', 'createGroup_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'createGroup_namespace' - The namespace that you want the group to be a part of.
+newCreateGroup ::
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  CreateGroup
+newCreateGroup pGroupName_ pAwsAccountId_ pNamespace_ =
+  CreateGroup'
+    { description = Prelude.Nothing,
+      groupName = pGroupName_,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | A description for the group that you want to create.
+createGroup_description :: Lens.Lens' CreateGroup (Prelude.Maybe Prelude.Text)
+createGroup_description = Lens.lens (\CreateGroup' {description} -> description) (\s@CreateGroup' {} a -> s {description = a} :: CreateGroup)
+
+-- | A name for the group that you want to create.
+createGroup_groupName :: Lens.Lens' CreateGroup Prelude.Text
+createGroup_groupName = Lens.lens (\CreateGroup' {groupName} -> groupName) (\s@CreateGroup' {} a -> s {groupName = a} :: CreateGroup)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+createGroup_awsAccountId :: Lens.Lens' CreateGroup Prelude.Text
+createGroup_awsAccountId = Lens.lens (\CreateGroup' {awsAccountId} -> awsAccountId) (\s@CreateGroup' {} a -> s {awsAccountId = a} :: CreateGroup)
+
+-- | The namespace that you want the group to be a part of.
+createGroup_namespace :: Lens.Lens' CreateGroup Prelude.Text
+createGroup_namespace = Lens.lens (\CreateGroup' {namespace} -> namespace) (\s@CreateGroup' {} a -> s {namespace = a} :: CreateGroup)
+
+instance Core.AWSRequest CreateGroup where
+  type AWSResponse CreateGroup = CreateGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateGroupResponse'
+            Prelude.<$> (x Data..?> "Group")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateGroup where
+  hashWithSalt _salt CreateGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData CreateGroup where
+  rnf CreateGroup' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders CreateGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateGroup where
+  toJSON CreateGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            Prelude.Just ("GroupName" Data..= groupName)
+          ]
+      )
+
+instance Data.ToPath CreateGroup where
+  toPath CreateGroup' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups"
+      ]
+
+instance Data.ToQuery CreateGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for this operation.
+--
+-- /See:/ 'newCreateGroupResponse' smart constructor.
+data CreateGroupResponse = CreateGroupResponse'
+  { -- | The name of the group.
+    group' :: Prelude.Maybe Group,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'group'', 'createGroupResponse_group' - The name of the group.
+--
+-- 'requestId', 'createGroupResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createGroupResponse_status' - The HTTP status of the request.
+newCreateGroupResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateGroupResponse
+newCreateGroupResponse pStatus_ =
+  CreateGroupResponse'
+    { group' = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The name of the group.
+createGroupResponse_group :: Lens.Lens' CreateGroupResponse (Prelude.Maybe Group)
+createGroupResponse_group = Lens.lens (\CreateGroupResponse' {group'} -> group') (\s@CreateGroupResponse' {} a -> s {group' = a} :: CreateGroupResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createGroupResponse_requestId :: Lens.Lens' CreateGroupResponse (Prelude.Maybe Prelude.Text)
+createGroupResponse_requestId = Lens.lens (\CreateGroupResponse' {requestId} -> requestId) (\s@CreateGroupResponse' {} a -> s {requestId = a} :: CreateGroupResponse)
+
+-- | The HTTP status of the request.
+createGroupResponse_status :: Lens.Lens' CreateGroupResponse Prelude.Int
+createGroupResponse_status = Lens.lens (\CreateGroupResponse' {status} -> status) (\s@CreateGroupResponse' {} a -> s {status = a} :: CreateGroupResponse)
+
+instance Prelude.NFData CreateGroupResponse where
+  rnf CreateGroupResponse' {..} =
+    Prelude.rnf group'
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateGroupMembership.hs b/gen/Amazonka/QuickSight/CreateGroupMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateGroupMembership.hs
@@ -0,0 +1,238 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.CreateGroupMembership
+-- 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 an Amazon QuickSight user to an Amazon QuickSight group.
+module Amazonka.QuickSight.CreateGroupMembership
+  ( -- * Creating a Request
+    CreateGroupMembership (..),
+    newCreateGroupMembership,
+
+    -- * Request Lenses
+    createGroupMembership_memberName,
+    createGroupMembership_groupName,
+    createGroupMembership_awsAccountId,
+    createGroupMembership_namespace,
+
+    -- * Destructuring the Response
+    CreateGroupMembershipResponse (..),
+    newCreateGroupMembershipResponse,
+
+    -- * Response Lenses
+    createGroupMembershipResponse_groupMember,
+    createGroupMembershipResponse_requestId,
+    createGroupMembershipResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateGroupMembership' smart constructor.
+data CreateGroupMembership = CreateGroupMembership'
+  { -- | The name of the user that you want to add to the group membership.
+    memberName :: Prelude.Text,
+    -- | The name of the group that you want to add the user to.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that you want the user to be a part of.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGroupMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'memberName', 'createGroupMembership_memberName' - The name of the user that you want to add to the group membership.
+--
+-- 'groupName', 'createGroupMembership_groupName' - The name of the group that you want to add the user to.
+--
+-- 'awsAccountId', 'createGroupMembership_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'createGroupMembership_namespace' - The namespace that you want the user to be a part of.
+newCreateGroupMembership ::
+  -- | 'memberName'
+  Prelude.Text ->
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  CreateGroupMembership
+newCreateGroupMembership
+  pMemberName_
+  pGroupName_
+  pAwsAccountId_
+  pNamespace_ =
+    CreateGroupMembership'
+      { memberName = pMemberName_,
+        groupName = pGroupName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The name of the user that you want to add to the group membership.
+createGroupMembership_memberName :: Lens.Lens' CreateGroupMembership Prelude.Text
+createGroupMembership_memberName = Lens.lens (\CreateGroupMembership' {memberName} -> memberName) (\s@CreateGroupMembership' {} a -> s {memberName = a} :: CreateGroupMembership)
+
+-- | The name of the group that you want to add the user to.
+createGroupMembership_groupName :: Lens.Lens' CreateGroupMembership Prelude.Text
+createGroupMembership_groupName = Lens.lens (\CreateGroupMembership' {groupName} -> groupName) (\s@CreateGroupMembership' {} a -> s {groupName = a} :: CreateGroupMembership)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+createGroupMembership_awsAccountId :: Lens.Lens' CreateGroupMembership Prelude.Text
+createGroupMembership_awsAccountId = Lens.lens (\CreateGroupMembership' {awsAccountId} -> awsAccountId) (\s@CreateGroupMembership' {} a -> s {awsAccountId = a} :: CreateGroupMembership)
+
+-- | The namespace that you want the user to be a part of.
+createGroupMembership_namespace :: Lens.Lens' CreateGroupMembership Prelude.Text
+createGroupMembership_namespace = Lens.lens (\CreateGroupMembership' {namespace} -> namespace) (\s@CreateGroupMembership' {} a -> s {namespace = a} :: CreateGroupMembership)
+
+instance Core.AWSRequest CreateGroupMembership where
+  type
+    AWSResponse CreateGroupMembership =
+      CreateGroupMembershipResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateGroupMembershipResponse'
+            Prelude.<$> (x Data..?> "GroupMember")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateGroupMembership where
+  hashWithSalt _salt CreateGroupMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` memberName
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData CreateGroupMembership where
+  rnf CreateGroupMembership' {..} =
+    Prelude.rnf memberName
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders CreateGroupMembership where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateGroupMembership where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath CreateGroupMembership where
+  toPath CreateGroupMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName,
+        "/members/",
+        Data.toBS memberName
+      ]
+
+instance Data.ToQuery CreateGroupMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateGroupMembershipResponse' smart constructor.
+data CreateGroupMembershipResponse = CreateGroupMembershipResponse'
+  { -- | The group member.
+    groupMember :: Prelude.Maybe GroupMember,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGroupMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupMember', 'createGroupMembershipResponse_groupMember' - The group member.
+--
+-- 'requestId', 'createGroupMembershipResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createGroupMembershipResponse_status' - The HTTP status of the request.
+newCreateGroupMembershipResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateGroupMembershipResponse
+newCreateGroupMembershipResponse pStatus_ =
+  CreateGroupMembershipResponse'
+    { groupMember =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The group member.
+createGroupMembershipResponse_groupMember :: Lens.Lens' CreateGroupMembershipResponse (Prelude.Maybe GroupMember)
+createGroupMembershipResponse_groupMember = Lens.lens (\CreateGroupMembershipResponse' {groupMember} -> groupMember) (\s@CreateGroupMembershipResponse' {} a -> s {groupMember = a} :: CreateGroupMembershipResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createGroupMembershipResponse_requestId :: Lens.Lens' CreateGroupMembershipResponse (Prelude.Maybe Prelude.Text)
+createGroupMembershipResponse_requestId = Lens.lens (\CreateGroupMembershipResponse' {requestId} -> requestId) (\s@CreateGroupMembershipResponse' {} a -> s {requestId = a} :: CreateGroupMembershipResponse)
+
+-- | The HTTP status of the request.
+createGroupMembershipResponse_status :: Lens.Lens' CreateGroupMembershipResponse Prelude.Int
+createGroupMembershipResponse_status = Lens.lens (\CreateGroupMembershipResponse' {status} -> status) (\s@CreateGroupMembershipResponse' {} a -> s {status = a} :: CreateGroupMembershipResponse)
+
+instance Prelude.NFData CreateGroupMembershipResponse where
+  rnf CreateGroupMembershipResponse' {..} =
+    Prelude.rnf groupMember
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateIAMPolicyAssignment.hs b/gen/Amazonka/QuickSight/CreateIAMPolicyAssignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateIAMPolicyAssignment.hs
@@ -0,0 +1,394 @@
+{-# 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.QuickSight.CreateIAMPolicyAssignment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an assignment with one specified IAM policy, identified by its
+-- Amazon Resource Name (ARN). This policy assignment is attached to the
+-- specified groups or users of Amazon QuickSight. Assignment names are
+-- unique per Amazon Web Services account. To avoid overwriting rules in
+-- other namespaces, use assignment names that are unique.
+module Amazonka.QuickSight.CreateIAMPolicyAssignment
+  ( -- * Creating a Request
+    CreateIAMPolicyAssignment (..),
+    newCreateIAMPolicyAssignment,
+
+    -- * Request Lenses
+    createIAMPolicyAssignment_identities,
+    createIAMPolicyAssignment_policyArn,
+    createIAMPolicyAssignment_awsAccountId,
+    createIAMPolicyAssignment_assignmentName,
+    createIAMPolicyAssignment_assignmentStatus,
+    createIAMPolicyAssignment_namespace,
+
+    -- * Destructuring the Response
+    CreateIAMPolicyAssignmentResponse (..),
+    newCreateIAMPolicyAssignmentResponse,
+
+    -- * Response Lenses
+    createIAMPolicyAssignmentResponse_assignmentId,
+    createIAMPolicyAssignmentResponse_assignmentName,
+    createIAMPolicyAssignmentResponse_assignmentStatus,
+    createIAMPolicyAssignmentResponse_identities,
+    createIAMPolicyAssignmentResponse_policyArn,
+    createIAMPolicyAssignmentResponse_requestId,
+    createIAMPolicyAssignmentResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateIAMPolicyAssignment' smart constructor.
+data CreateIAMPolicyAssignment = CreateIAMPolicyAssignment'
+  { -- | The Amazon QuickSight users, groups, or both that you want to assign the
+    -- policy to.
+    identities :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | The ARN for the IAM policy to apply to the Amazon QuickSight users and
+    -- groups specified in this assignment.
+    policyArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account where you want to assign an
+    -- IAM policy to Amazon QuickSight users or groups.
+    awsAccountId :: Prelude.Text,
+    -- | The name of the assignment, also called a rule. It must be unique within
+    -- an Amazon Web Services account.
+    assignmentName :: Prelude.Text,
+    -- | The status of the assignment. Possible values are as follows:
+    --
+    -- -   @ENABLED@ - Anything specified in this assignment is used when
+    --     creating the data source.
+    --
+    -- -   @DISABLED@ - This assignment isn\'t used when creating the data
+    --     source.
+    --
+    -- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+    --     when creating the data source.
+    assignmentStatus :: AssignmentStatus,
+    -- | The namespace that contains the assignment.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateIAMPolicyAssignment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identities', 'createIAMPolicyAssignment_identities' - The Amazon QuickSight users, groups, or both that you want to assign the
+-- policy to.
+--
+-- 'policyArn', 'createIAMPolicyAssignment_policyArn' - The ARN for the IAM policy to apply to the Amazon QuickSight users and
+-- groups specified in this assignment.
+--
+-- 'awsAccountId', 'createIAMPolicyAssignment_awsAccountId' - The ID of the Amazon Web Services account where you want to assign an
+-- IAM policy to Amazon QuickSight users or groups.
+--
+-- 'assignmentName', 'createIAMPolicyAssignment_assignmentName' - The name of the assignment, also called a rule. It must be unique within
+-- an Amazon Web Services account.
+--
+-- 'assignmentStatus', 'createIAMPolicyAssignment_assignmentStatus' - The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+--
+-- 'namespace', 'createIAMPolicyAssignment_namespace' - The namespace that contains the assignment.
+newCreateIAMPolicyAssignment ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'assignmentName'
+  Prelude.Text ->
+  -- | 'assignmentStatus'
+  AssignmentStatus ->
+  -- | 'namespace'
+  Prelude.Text ->
+  CreateIAMPolicyAssignment
+newCreateIAMPolicyAssignment
+  pAwsAccountId_
+  pAssignmentName_
+  pAssignmentStatus_
+  pNamespace_ =
+    CreateIAMPolicyAssignment'
+      { identities =
+          Prelude.Nothing,
+        policyArn = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        assignmentName = pAssignmentName_,
+        assignmentStatus = pAssignmentStatus_,
+        namespace = pNamespace_
+      }
+
+-- | The Amazon QuickSight users, groups, or both that you want to assign the
+-- policy to.
+createIAMPolicyAssignment_identities :: Lens.Lens' CreateIAMPolicyAssignment (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+createIAMPolicyAssignment_identities = Lens.lens (\CreateIAMPolicyAssignment' {identities} -> identities) (\s@CreateIAMPolicyAssignment' {} a -> s {identities = a} :: CreateIAMPolicyAssignment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN for the IAM policy to apply to the Amazon QuickSight users and
+-- groups specified in this assignment.
+createIAMPolicyAssignment_policyArn :: Lens.Lens' CreateIAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+createIAMPolicyAssignment_policyArn = Lens.lens (\CreateIAMPolicyAssignment' {policyArn} -> policyArn) (\s@CreateIAMPolicyAssignment' {} a -> s {policyArn = a} :: CreateIAMPolicyAssignment)
+
+-- | The ID of the Amazon Web Services account where you want to assign an
+-- IAM policy to Amazon QuickSight users or groups.
+createIAMPolicyAssignment_awsAccountId :: Lens.Lens' CreateIAMPolicyAssignment Prelude.Text
+createIAMPolicyAssignment_awsAccountId = Lens.lens (\CreateIAMPolicyAssignment' {awsAccountId} -> awsAccountId) (\s@CreateIAMPolicyAssignment' {} a -> s {awsAccountId = a} :: CreateIAMPolicyAssignment)
+
+-- | The name of the assignment, also called a rule. It must be unique within
+-- an Amazon Web Services account.
+createIAMPolicyAssignment_assignmentName :: Lens.Lens' CreateIAMPolicyAssignment Prelude.Text
+createIAMPolicyAssignment_assignmentName = Lens.lens (\CreateIAMPolicyAssignment' {assignmentName} -> assignmentName) (\s@CreateIAMPolicyAssignment' {} a -> s {assignmentName = a} :: CreateIAMPolicyAssignment)
+
+-- | The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+createIAMPolicyAssignment_assignmentStatus :: Lens.Lens' CreateIAMPolicyAssignment AssignmentStatus
+createIAMPolicyAssignment_assignmentStatus = Lens.lens (\CreateIAMPolicyAssignment' {assignmentStatus} -> assignmentStatus) (\s@CreateIAMPolicyAssignment' {} a -> s {assignmentStatus = a} :: CreateIAMPolicyAssignment)
+
+-- | The namespace that contains the assignment.
+createIAMPolicyAssignment_namespace :: Lens.Lens' CreateIAMPolicyAssignment Prelude.Text
+createIAMPolicyAssignment_namespace = Lens.lens (\CreateIAMPolicyAssignment' {namespace} -> namespace) (\s@CreateIAMPolicyAssignment' {} a -> s {namespace = a} :: CreateIAMPolicyAssignment)
+
+instance Core.AWSRequest CreateIAMPolicyAssignment where
+  type
+    AWSResponse CreateIAMPolicyAssignment =
+      CreateIAMPolicyAssignmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateIAMPolicyAssignmentResponse'
+            Prelude.<$> (x Data..?> "AssignmentId")
+            Prelude.<*> (x Data..?> "AssignmentName")
+            Prelude.<*> (x Data..?> "AssignmentStatus")
+            Prelude.<*> (x Data..?> "Identities" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "PolicyArn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateIAMPolicyAssignment where
+  hashWithSalt _salt CreateIAMPolicyAssignment' {..} =
+    _salt
+      `Prelude.hashWithSalt` identities
+      `Prelude.hashWithSalt` policyArn
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` assignmentStatus
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData CreateIAMPolicyAssignment where
+  rnf CreateIAMPolicyAssignment' {..} =
+    Prelude.rnf identities
+      `Prelude.seq` Prelude.rnf policyArn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf assignmentStatus
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders CreateIAMPolicyAssignment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateIAMPolicyAssignment where
+  toJSON CreateIAMPolicyAssignment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Identities" Data..=) Prelude.<$> identities,
+            ("PolicyArn" Data..=) Prelude.<$> policyArn,
+            Prelude.Just
+              ("AssignmentName" Data..= assignmentName),
+            Prelude.Just
+              ("AssignmentStatus" Data..= assignmentStatus)
+          ]
+      )
+
+instance Data.ToPath CreateIAMPolicyAssignment where
+  toPath CreateIAMPolicyAssignment' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/iam-policy-assignments/"
+      ]
+
+instance Data.ToQuery CreateIAMPolicyAssignment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateIAMPolicyAssignmentResponse' smart constructor.
+data CreateIAMPolicyAssignmentResponse = CreateIAMPolicyAssignmentResponse'
+  { -- | The ID for the assignment.
+    assignmentId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the assignment. This name must be unique within the Amazon
+    -- Web Services account.
+    assignmentName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the assignment. Possible values are as follows:
+    --
+    -- -   @ENABLED@ - Anything specified in this assignment is used when
+    --     creating the data source.
+    --
+    -- -   @DISABLED@ - This assignment isn\'t used when creating the data
+    --     source.
+    --
+    -- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+    --     when creating the data source.
+    assignmentStatus :: Prelude.Maybe AssignmentStatus,
+    -- | The Amazon QuickSight users, groups, or both that the IAM policy is
+    -- assigned to.
+    identities :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | The ARN for the IAM policy that is applied to the Amazon QuickSight
+    -- users and groups specified in this assignment.
+    policyArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateIAMPolicyAssignmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentId', 'createIAMPolicyAssignmentResponse_assignmentId' - The ID for the assignment.
+--
+-- 'assignmentName', 'createIAMPolicyAssignmentResponse_assignmentName' - The name of the assignment. This name must be unique within the Amazon
+-- Web Services account.
+--
+-- 'assignmentStatus', 'createIAMPolicyAssignmentResponse_assignmentStatus' - The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+--
+-- 'identities', 'createIAMPolicyAssignmentResponse_identities' - The Amazon QuickSight users, groups, or both that the IAM policy is
+-- assigned to.
+--
+-- 'policyArn', 'createIAMPolicyAssignmentResponse_policyArn' - The ARN for the IAM policy that is applied to the Amazon QuickSight
+-- users and groups specified in this assignment.
+--
+-- 'requestId', 'createIAMPolicyAssignmentResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createIAMPolicyAssignmentResponse_status' - The HTTP status of the request.
+newCreateIAMPolicyAssignmentResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateIAMPolicyAssignmentResponse
+newCreateIAMPolicyAssignmentResponse pStatus_ =
+  CreateIAMPolicyAssignmentResponse'
+    { assignmentId =
+        Prelude.Nothing,
+      assignmentName = Prelude.Nothing,
+      assignmentStatus = Prelude.Nothing,
+      identities = Prelude.Nothing,
+      policyArn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID for the assignment.
+createIAMPolicyAssignmentResponse_assignmentId :: Lens.Lens' CreateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+createIAMPolicyAssignmentResponse_assignmentId = Lens.lens (\CreateIAMPolicyAssignmentResponse' {assignmentId} -> assignmentId) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {assignmentId = a} :: CreateIAMPolicyAssignmentResponse)
+
+-- | The name of the assignment. This name must be unique within the Amazon
+-- Web Services account.
+createIAMPolicyAssignmentResponse_assignmentName :: Lens.Lens' CreateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+createIAMPolicyAssignmentResponse_assignmentName = Lens.lens (\CreateIAMPolicyAssignmentResponse' {assignmentName} -> assignmentName) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {assignmentName = a} :: CreateIAMPolicyAssignmentResponse)
+
+-- | The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+createIAMPolicyAssignmentResponse_assignmentStatus :: Lens.Lens' CreateIAMPolicyAssignmentResponse (Prelude.Maybe AssignmentStatus)
+createIAMPolicyAssignmentResponse_assignmentStatus = Lens.lens (\CreateIAMPolicyAssignmentResponse' {assignmentStatus} -> assignmentStatus) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {assignmentStatus = a} :: CreateIAMPolicyAssignmentResponse)
+
+-- | The Amazon QuickSight users, groups, or both that the IAM policy is
+-- assigned to.
+createIAMPolicyAssignmentResponse_identities :: Lens.Lens' CreateIAMPolicyAssignmentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+createIAMPolicyAssignmentResponse_identities = Lens.lens (\CreateIAMPolicyAssignmentResponse' {identities} -> identities) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {identities = a} :: CreateIAMPolicyAssignmentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN for the IAM policy that is applied to the Amazon QuickSight
+-- users and groups specified in this assignment.
+createIAMPolicyAssignmentResponse_policyArn :: Lens.Lens' CreateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+createIAMPolicyAssignmentResponse_policyArn = Lens.lens (\CreateIAMPolicyAssignmentResponse' {policyArn} -> policyArn) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {policyArn = a} :: CreateIAMPolicyAssignmentResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createIAMPolicyAssignmentResponse_requestId :: Lens.Lens' CreateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+createIAMPolicyAssignmentResponse_requestId = Lens.lens (\CreateIAMPolicyAssignmentResponse' {requestId} -> requestId) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {requestId = a} :: CreateIAMPolicyAssignmentResponse)
+
+-- | The HTTP status of the request.
+createIAMPolicyAssignmentResponse_status :: Lens.Lens' CreateIAMPolicyAssignmentResponse Prelude.Int
+createIAMPolicyAssignmentResponse_status = Lens.lens (\CreateIAMPolicyAssignmentResponse' {status} -> status) (\s@CreateIAMPolicyAssignmentResponse' {} a -> s {status = a} :: CreateIAMPolicyAssignmentResponse)
+
+instance
+  Prelude.NFData
+    CreateIAMPolicyAssignmentResponse
+  where
+  rnf CreateIAMPolicyAssignmentResponse' {..} =
+    Prelude.rnf assignmentId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf assignmentStatus
+      `Prelude.seq` Prelude.rnf identities
+      `Prelude.seq` Prelude.rnf policyArn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateIngestion.hs b/gen/Amazonka/QuickSight/CreateIngestion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateIngestion.hs
@@ -0,0 +1,266 @@
+{-# 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.QuickSight.CreateIngestion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates and starts a new SPICE ingestion for a dataset. You can manually
+-- refresh datasets in an Enterprise edition account 32 times in a 24-hour
+-- period. You can manually refresh datasets in a Standard edition account
+-- 8 times in a 24-hour period. Each 24-hour period is measured starting 24
+-- hours before the current date and time.
+--
+-- Any ingestions operating on tagged datasets inherit the same tags
+-- automatically for use in access control. For an example, see
+-- <http://aws.amazon.com/premiumsupport/knowledge-center/iam-ec2-resource-tags/ How do I create an IAM policy to control access to Amazon EC2 resources using tags?>
+-- in the Amazon Web Services Knowledge Center. Tags are visible on the
+-- tagged dataset, but not on the ingestion resource.
+module Amazonka.QuickSight.CreateIngestion
+  ( -- * Creating a Request
+    CreateIngestion (..),
+    newCreateIngestion,
+
+    -- * Request Lenses
+    createIngestion_ingestionType,
+    createIngestion_dataSetId,
+    createIngestion_ingestionId,
+    createIngestion_awsAccountId,
+
+    -- * Destructuring the Response
+    CreateIngestionResponse (..),
+    newCreateIngestionResponse,
+
+    -- * Response Lenses
+    createIngestionResponse_arn,
+    createIngestionResponse_ingestionId,
+    createIngestionResponse_ingestionStatus,
+    createIngestionResponse_requestId,
+    createIngestionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateIngestion' smart constructor.
+data CreateIngestion = CreateIngestion'
+  { -- | The type of ingestion that you want to create.
+    ingestionType :: Prelude.Maybe IngestionType,
+    -- | The ID of the dataset used in the ingestion.
+    dataSetId :: Prelude.Text,
+    -- | An ID for the ingestion.
+    ingestionId :: Prelude.Text,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateIngestion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ingestionType', 'createIngestion_ingestionType' - The type of ingestion that you want to create.
+--
+-- 'dataSetId', 'createIngestion_dataSetId' - The ID of the dataset used in the ingestion.
+--
+-- 'ingestionId', 'createIngestion_ingestionId' - An ID for the ingestion.
+--
+-- 'awsAccountId', 'createIngestion_awsAccountId' - The Amazon Web Services account ID.
+newCreateIngestion ::
+  -- | 'dataSetId'
+  Prelude.Text ->
+  -- | 'ingestionId'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  CreateIngestion
+newCreateIngestion
+  pDataSetId_
+  pIngestionId_
+  pAwsAccountId_ =
+    CreateIngestion'
+      { ingestionType = Prelude.Nothing,
+        dataSetId = pDataSetId_,
+        ingestionId = pIngestionId_,
+        awsAccountId = pAwsAccountId_
+      }
+
+-- | The type of ingestion that you want to create.
+createIngestion_ingestionType :: Lens.Lens' CreateIngestion (Prelude.Maybe IngestionType)
+createIngestion_ingestionType = Lens.lens (\CreateIngestion' {ingestionType} -> ingestionType) (\s@CreateIngestion' {} a -> s {ingestionType = a} :: CreateIngestion)
+
+-- | The ID of the dataset used in the ingestion.
+createIngestion_dataSetId :: Lens.Lens' CreateIngestion Prelude.Text
+createIngestion_dataSetId = Lens.lens (\CreateIngestion' {dataSetId} -> dataSetId) (\s@CreateIngestion' {} a -> s {dataSetId = a} :: CreateIngestion)
+
+-- | An ID for the ingestion.
+createIngestion_ingestionId :: Lens.Lens' CreateIngestion Prelude.Text
+createIngestion_ingestionId = Lens.lens (\CreateIngestion' {ingestionId} -> ingestionId) (\s@CreateIngestion' {} a -> s {ingestionId = a} :: CreateIngestion)
+
+-- | The Amazon Web Services account ID.
+createIngestion_awsAccountId :: Lens.Lens' CreateIngestion Prelude.Text
+createIngestion_awsAccountId = Lens.lens (\CreateIngestion' {awsAccountId} -> awsAccountId) (\s@CreateIngestion' {} a -> s {awsAccountId = a} :: CreateIngestion)
+
+instance Core.AWSRequest CreateIngestion where
+  type
+    AWSResponse CreateIngestion =
+      CreateIngestionResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateIngestionResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "IngestionId")
+            Prelude.<*> (x Data..?> "IngestionStatus")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateIngestion where
+  hashWithSalt _salt CreateIngestion' {..} =
+    _salt
+      `Prelude.hashWithSalt` ingestionType
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` ingestionId
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData CreateIngestion where
+  rnf CreateIngestion' {..} =
+    Prelude.rnf ingestionType
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf ingestionId
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders CreateIngestion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateIngestion where
+  toJSON CreateIngestion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IngestionType" Data..=)
+              Prelude.<$> ingestionType
+          ]
+      )
+
+instance Data.ToPath CreateIngestion where
+  toPath CreateIngestion' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId,
+        "/ingestions/",
+        Data.toBS ingestionId
+      ]
+
+instance Data.ToQuery CreateIngestion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateIngestionResponse' smart constructor.
+data CreateIngestionResponse = CreateIngestionResponse'
+  { -- | The Amazon Resource Name (ARN) for the data ingestion.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | An ID for the ingestion.
+    ingestionId :: Prelude.Maybe Prelude.Text,
+    -- | The ingestion status.
+    ingestionStatus :: Prelude.Maybe IngestionStatus,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateIngestionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createIngestionResponse_arn' - The Amazon Resource Name (ARN) for the data ingestion.
+--
+-- 'ingestionId', 'createIngestionResponse_ingestionId' - An ID for the ingestion.
+--
+-- 'ingestionStatus', 'createIngestionResponse_ingestionStatus' - The ingestion status.
+--
+-- 'requestId', 'createIngestionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createIngestionResponse_status' - The HTTP status of the request.
+newCreateIngestionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateIngestionResponse
+newCreateIngestionResponse pStatus_ =
+  CreateIngestionResponse'
+    { arn = Prelude.Nothing,
+      ingestionId = Prelude.Nothing,
+      ingestionStatus = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the data ingestion.
+createIngestionResponse_arn :: Lens.Lens' CreateIngestionResponse (Prelude.Maybe Prelude.Text)
+createIngestionResponse_arn = Lens.lens (\CreateIngestionResponse' {arn} -> arn) (\s@CreateIngestionResponse' {} a -> s {arn = a} :: CreateIngestionResponse)
+
+-- | An ID for the ingestion.
+createIngestionResponse_ingestionId :: Lens.Lens' CreateIngestionResponse (Prelude.Maybe Prelude.Text)
+createIngestionResponse_ingestionId = Lens.lens (\CreateIngestionResponse' {ingestionId} -> ingestionId) (\s@CreateIngestionResponse' {} a -> s {ingestionId = a} :: CreateIngestionResponse)
+
+-- | The ingestion status.
+createIngestionResponse_ingestionStatus :: Lens.Lens' CreateIngestionResponse (Prelude.Maybe IngestionStatus)
+createIngestionResponse_ingestionStatus = Lens.lens (\CreateIngestionResponse' {ingestionStatus} -> ingestionStatus) (\s@CreateIngestionResponse' {} a -> s {ingestionStatus = a} :: CreateIngestionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createIngestionResponse_requestId :: Lens.Lens' CreateIngestionResponse (Prelude.Maybe Prelude.Text)
+createIngestionResponse_requestId = Lens.lens (\CreateIngestionResponse' {requestId} -> requestId) (\s@CreateIngestionResponse' {} a -> s {requestId = a} :: CreateIngestionResponse)
+
+-- | The HTTP status of the request.
+createIngestionResponse_status :: Lens.Lens' CreateIngestionResponse Prelude.Int
+createIngestionResponse_status = Lens.lens (\CreateIngestionResponse' {status} -> status) (\s@CreateIngestionResponse' {} a -> s {status = a} :: CreateIngestionResponse)
+
+instance Prelude.NFData CreateIngestionResponse where
+  rnf CreateIngestionResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf ingestionId
+      `Prelude.seq` Prelude.rnf ingestionStatus
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateNamespace.hs b/gen/Amazonka/QuickSight/CreateNamespace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateNamespace.hs
@@ -0,0 +1,317 @@
+{-# 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.QuickSight.CreateNamespace
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- (Enterprise edition only) Creates a new namespace for you to use with
+-- Amazon QuickSight.
+--
+-- A namespace allows you to isolate the Amazon QuickSight users and groups
+-- that are registered for that namespace. Users that access the namespace
+-- can share assets only with other users or groups in the same namespace.
+-- They can\'t see users and groups in other namespaces. You can create a
+-- namespace after your Amazon Web Services account is subscribed to Amazon
+-- QuickSight. The namespace must be unique within the Amazon Web Services
+-- account. By default, there is a limit of 100 namespaces per Amazon Web
+-- Services account. To increase your limit, create a ticket with Amazon
+-- Web Services Support.
+module Amazonka.QuickSight.CreateNamespace
+  ( -- * Creating a Request
+    CreateNamespace (..),
+    newCreateNamespace,
+
+    -- * Request Lenses
+    createNamespace_tags,
+    createNamespace_awsAccountId,
+    createNamespace_namespace,
+    createNamespace_identityStore,
+
+    -- * Destructuring the Response
+    CreateNamespaceResponse (..),
+    newCreateNamespaceResponse,
+
+    -- * Response Lenses
+    createNamespaceResponse_arn,
+    createNamespaceResponse_capacityRegion,
+    createNamespaceResponse_creationStatus,
+    createNamespaceResponse_identityStore,
+    createNamespaceResponse_name,
+    createNamespaceResponse_requestId,
+    createNamespaceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateNamespace' smart constructor.
+data CreateNamespace = CreateNamespace'
+  { -- | The tags that you want to associate with the namespace that you\'re
+    -- creating.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ID for the Amazon Web Services account that you want to create the
+    -- Amazon QuickSight namespace in.
+    awsAccountId :: Prelude.Text,
+    -- | The name that you want to use to describe the new namespace.
+    namespace :: Prelude.Text,
+    -- | Specifies the type of your user identity directory. Currently, this
+    -- supports users with an identity type of @QUICKSIGHT@.
+    identityStore :: IdentityStore
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNamespace' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createNamespace_tags' - The tags that you want to associate with the namespace that you\'re
+-- creating.
+--
+-- 'awsAccountId', 'createNamespace_awsAccountId' - The ID for the Amazon Web Services account that you want to create the
+-- Amazon QuickSight namespace in.
+--
+-- 'namespace', 'createNamespace_namespace' - The name that you want to use to describe the new namespace.
+--
+-- 'identityStore', 'createNamespace_identityStore' - Specifies the type of your user identity directory. Currently, this
+-- supports users with an identity type of @QUICKSIGHT@.
+newCreateNamespace ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  -- | 'identityStore'
+  IdentityStore ->
+  CreateNamespace
+newCreateNamespace
+  pAwsAccountId_
+  pNamespace_
+  pIdentityStore_ =
+    CreateNamespace'
+      { tags = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_,
+        identityStore = pIdentityStore_
+      }
+
+-- | The tags that you want to associate with the namespace that you\'re
+-- creating.
+createNamespace_tags :: Lens.Lens' CreateNamespace (Prelude.Maybe (Prelude.NonEmpty Tag))
+createNamespace_tags = Lens.lens (\CreateNamespace' {tags} -> tags) (\s@CreateNamespace' {} a -> s {tags = a} :: CreateNamespace) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID for the Amazon Web Services account that you want to create the
+-- Amazon QuickSight namespace in.
+createNamespace_awsAccountId :: Lens.Lens' CreateNamespace Prelude.Text
+createNamespace_awsAccountId = Lens.lens (\CreateNamespace' {awsAccountId} -> awsAccountId) (\s@CreateNamespace' {} a -> s {awsAccountId = a} :: CreateNamespace)
+
+-- | The name that you want to use to describe the new namespace.
+createNamespace_namespace :: Lens.Lens' CreateNamespace Prelude.Text
+createNamespace_namespace = Lens.lens (\CreateNamespace' {namespace} -> namespace) (\s@CreateNamespace' {} a -> s {namespace = a} :: CreateNamespace)
+
+-- | Specifies the type of your user identity directory. Currently, this
+-- supports users with an identity type of @QUICKSIGHT@.
+createNamespace_identityStore :: Lens.Lens' CreateNamespace IdentityStore
+createNamespace_identityStore = Lens.lens (\CreateNamespace' {identityStore} -> identityStore) (\s@CreateNamespace' {} a -> s {identityStore = a} :: CreateNamespace)
+
+instance Core.AWSRequest CreateNamespace where
+  type
+    AWSResponse CreateNamespace =
+      CreateNamespaceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateNamespaceResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CapacityRegion")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "IdentityStore")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateNamespace where
+  hashWithSalt _salt CreateNamespace' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` identityStore
+
+instance Prelude.NFData CreateNamespace where
+  rnf CreateNamespace' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf identityStore
+
+instance Data.ToHeaders CreateNamespace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateNamespace where
+  toJSON CreateNamespace' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Namespace" Data..= namespace),
+            Prelude.Just
+              ("IdentityStore" Data..= identityStore)
+          ]
+      )
+
+instance Data.ToPath CreateNamespace where
+  toPath CreateNamespace' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId]
+
+instance Data.ToQuery CreateNamespace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateNamespaceResponse' smart constructor.
+data CreateNamespaceResponse = CreateNamespaceResponse'
+  { -- | The ARN of the Amazon QuickSight namespace you created.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region; that you want to use for the free SPICE
+    -- capacity for the new namespace. This is set to the region that you run
+    -- CreateNamespace in.
+    capacityRegion :: Prelude.Maybe Prelude.Text,
+    -- | The status of the creation of the namespace. This is an asynchronous
+    -- process. A status of @CREATED@ means that your namespace is ready to
+    -- use. If an error occurs, it indicates if the process is @retryable@ or
+    -- @non-retryable@. In the case of a non-retryable error, refer to the
+    -- error message for follow-up tasks.
+    creationStatus :: Prelude.Maybe NamespaceStatus,
+    -- | Specifies the type of your user identity directory. Currently, this
+    -- supports users with an identity type of @QUICKSIGHT@.
+    identityStore :: Prelude.Maybe IdentityStore,
+    -- | The name of the new namespace that you created.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNamespaceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createNamespaceResponse_arn' - The ARN of the Amazon QuickSight namespace you created.
+--
+-- 'capacityRegion', 'createNamespaceResponse_capacityRegion' - The Amazon Web Services Region; that you want to use for the free SPICE
+-- capacity for the new namespace. This is set to the region that you run
+-- CreateNamespace in.
+--
+-- 'creationStatus', 'createNamespaceResponse_creationStatus' - The status of the creation of the namespace. This is an asynchronous
+-- process. A status of @CREATED@ means that your namespace is ready to
+-- use. If an error occurs, it indicates if the process is @retryable@ or
+-- @non-retryable@. In the case of a non-retryable error, refer to the
+-- error message for follow-up tasks.
+--
+-- 'identityStore', 'createNamespaceResponse_identityStore' - Specifies the type of your user identity directory. Currently, this
+-- supports users with an identity type of @QUICKSIGHT@.
+--
+-- 'name', 'createNamespaceResponse_name' - The name of the new namespace that you created.
+--
+-- 'requestId', 'createNamespaceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'createNamespaceResponse_status' - The HTTP status of the request.
+newCreateNamespaceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateNamespaceResponse
+newCreateNamespaceResponse pStatus_ =
+  CreateNamespaceResponse'
+    { arn = Prelude.Nothing,
+      capacityRegion = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      identityStore = Prelude.Nothing,
+      name = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ARN of the Amazon QuickSight namespace you created.
+createNamespaceResponse_arn :: Lens.Lens' CreateNamespaceResponse (Prelude.Maybe Prelude.Text)
+createNamespaceResponse_arn = Lens.lens (\CreateNamespaceResponse' {arn} -> arn) (\s@CreateNamespaceResponse' {} a -> s {arn = a} :: CreateNamespaceResponse)
+
+-- | The Amazon Web Services Region; that you want to use for the free SPICE
+-- capacity for the new namespace. This is set to the region that you run
+-- CreateNamespace in.
+createNamespaceResponse_capacityRegion :: Lens.Lens' CreateNamespaceResponse (Prelude.Maybe Prelude.Text)
+createNamespaceResponse_capacityRegion = Lens.lens (\CreateNamespaceResponse' {capacityRegion} -> capacityRegion) (\s@CreateNamespaceResponse' {} a -> s {capacityRegion = a} :: CreateNamespaceResponse)
+
+-- | The status of the creation of the namespace. This is an asynchronous
+-- process. A status of @CREATED@ means that your namespace is ready to
+-- use. If an error occurs, it indicates if the process is @retryable@ or
+-- @non-retryable@. In the case of a non-retryable error, refer to the
+-- error message for follow-up tasks.
+createNamespaceResponse_creationStatus :: Lens.Lens' CreateNamespaceResponse (Prelude.Maybe NamespaceStatus)
+createNamespaceResponse_creationStatus = Lens.lens (\CreateNamespaceResponse' {creationStatus} -> creationStatus) (\s@CreateNamespaceResponse' {} a -> s {creationStatus = a} :: CreateNamespaceResponse)
+
+-- | Specifies the type of your user identity directory. Currently, this
+-- supports users with an identity type of @QUICKSIGHT@.
+createNamespaceResponse_identityStore :: Lens.Lens' CreateNamespaceResponse (Prelude.Maybe IdentityStore)
+createNamespaceResponse_identityStore = Lens.lens (\CreateNamespaceResponse' {identityStore} -> identityStore) (\s@CreateNamespaceResponse' {} a -> s {identityStore = a} :: CreateNamespaceResponse)
+
+-- | The name of the new namespace that you created.
+createNamespaceResponse_name :: Lens.Lens' CreateNamespaceResponse (Prelude.Maybe Prelude.Text)
+createNamespaceResponse_name = Lens.lens (\CreateNamespaceResponse' {name} -> name) (\s@CreateNamespaceResponse' {} a -> s {name = a} :: CreateNamespaceResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createNamespaceResponse_requestId :: Lens.Lens' CreateNamespaceResponse (Prelude.Maybe Prelude.Text)
+createNamespaceResponse_requestId = Lens.lens (\CreateNamespaceResponse' {requestId} -> requestId) (\s@CreateNamespaceResponse' {} a -> s {requestId = a} :: CreateNamespaceResponse)
+
+-- | The HTTP status of the request.
+createNamespaceResponse_status :: Lens.Lens' CreateNamespaceResponse Prelude.Int
+createNamespaceResponse_status = Lens.lens (\CreateNamespaceResponse' {status} -> status) (\s@CreateNamespaceResponse' {} a -> s {status = a} :: CreateNamespaceResponse)
+
+instance Prelude.NFData CreateNamespaceResponse where
+  rnf CreateNamespaceResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf capacityRegion
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf identityStore
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateTemplate.hs b/gen/Amazonka/QuickSight/CreateTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateTemplate.hs
@@ -0,0 +1,395 @@
+{-# 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.QuickSight.CreateTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a template from an existing Amazon QuickSight analysis or
+-- template. You can use the resulting template to create a dashboard.
+--
+-- A /template/ is an entity in Amazon QuickSight that encapsulates the
+-- metadata required to create an analysis and that you can use to create s
+-- dashboard. A template adds a layer of abstraction by using placeholders
+-- to replace the dataset associated with the analysis. You can use
+-- templates to create dashboards by replacing dataset placeholders with
+-- datasets that follow the same schema that was used to create the source
+-- analysis and template.
+module Amazonka.QuickSight.CreateTemplate
+  ( -- * Creating a Request
+    CreateTemplate (..),
+    newCreateTemplate,
+
+    -- * Request Lenses
+    createTemplate_definition,
+    createTemplate_name,
+    createTemplate_permissions,
+    createTemplate_sourceEntity,
+    createTemplate_tags,
+    createTemplate_versionDescription,
+    createTemplate_awsAccountId,
+    createTemplate_templateId,
+
+    -- * Destructuring the Response
+    CreateTemplateResponse (..),
+    newCreateTemplateResponse,
+
+    -- * Response Lenses
+    createTemplateResponse_arn,
+    createTemplateResponse_creationStatus,
+    createTemplateResponse_requestId,
+    createTemplateResponse_templateId,
+    createTemplateResponse_versionArn,
+    createTemplateResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateTemplate' smart constructor.
+data CreateTemplate = CreateTemplate'
+  { -- | The definition of a template.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe TemplateVersionDefinition,
+    -- | A display name for the template.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | A list of resource permissions to be set on the template.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The entity that you are using as a source when you create the template.
+    -- In @SourceEntity@, you specify the type of object you\'re using as
+    -- source: @SourceTemplate@ for a template or @SourceAnalysis@ for an
+    -- analysis. Both of these require an Amazon Resource Name (ARN). For
+    -- @SourceTemplate@, specify the ARN of the source template. For
+    -- @SourceAnalysis@, specify the ARN of the source analysis. The
+    -- @SourceTemplate@ ARN can contain any Amazon Web Services account and any
+    -- Amazon QuickSight-supported Amazon Web Services Region.
+    --
+    -- Use the @DataSetReferences@ entity within @SourceTemplate@ or
+    -- @SourceAnalysis@ to list the replacement datasets for the placeholders
+    -- listed in the original. The schema in each dataset must match its
+    -- placeholder.
+    sourceEntity :: Prelude.Maybe TemplateSourceEntity,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the resource.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | A description of the current template version being created. This API
+    -- operation creates the first version of the template. Every time
+    -- @UpdateTemplate@ is called, a new version is created. Each version of
+    -- the template maintains a description of the version in the
+    -- @VersionDescription@ field.
+    versionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in. You use
+    -- the ID for the Amazon Web Services account that contains your Amazon
+    -- QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the template that you want to create. This template is unique
+    -- per Amazon Web Services Region; in each Amazon Web Services account.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'definition', 'createTemplate_definition' - The definition of a template.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'name', 'createTemplate_name' - A display name for the template.
+--
+-- 'permissions', 'createTemplate_permissions' - A list of resource permissions to be set on the template.
+--
+-- 'sourceEntity', 'createTemplate_sourceEntity' - The entity that you are using as a source when you create the template.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source: @SourceTemplate@ for a template or @SourceAnalysis@ for an
+-- analysis. Both of these require an Amazon Resource Name (ARN). For
+-- @SourceTemplate@, specify the ARN of the source template. For
+-- @SourceAnalysis@, specify the ARN of the source analysis. The
+-- @SourceTemplate@ ARN can contain any Amazon Web Services account and any
+-- Amazon QuickSight-supported Amazon Web Services Region.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ or
+-- @SourceAnalysis@ to list the replacement datasets for the placeholders
+-- listed in the original. The schema in each dataset must match its
+-- placeholder.
+--
+-- 'tags', 'createTemplate_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+--
+-- 'versionDescription', 'createTemplate_versionDescription' - A description of the current template version being created. This API
+-- operation creates the first version of the template. Every time
+-- @UpdateTemplate@ is called, a new version is created. Each version of
+-- the template maintains a description of the version in the
+-- @VersionDescription@ field.
+--
+-- 'awsAccountId', 'createTemplate_awsAccountId' - The ID for the Amazon Web Services account that the group is in. You use
+-- the ID for the Amazon Web Services account that contains your Amazon
+-- QuickSight account.
+--
+-- 'templateId', 'createTemplate_templateId' - An ID for the template that you want to create. This template is unique
+-- per Amazon Web Services Region; in each Amazon Web Services account.
+newCreateTemplate ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  CreateTemplate
+newCreateTemplate pAwsAccountId_ pTemplateId_ =
+  CreateTemplate'
+    { definition = Prelude.Nothing,
+      name = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      sourceEntity = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      versionDescription = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      templateId = pTemplateId_
+    }
+
+-- | The definition of a template.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+createTemplate_definition :: Lens.Lens' CreateTemplate (Prelude.Maybe TemplateVersionDefinition)
+createTemplate_definition = Lens.lens (\CreateTemplate' {definition} -> definition) (\s@CreateTemplate' {} a -> s {definition = a} :: CreateTemplate)
+
+-- | A display name for the template.
+createTemplate_name :: Lens.Lens' CreateTemplate (Prelude.Maybe Prelude.Text)
+createTemplate_name = Lens.lens (\CreateTemplate' {name} -> name) (\s@CreateTemplate' {} a -> s {name = a} :: CreateTemplate)
+
+-- | A list of resource permissions to be set on the template.
+createTemplate_permissions :: Lens.Lens' CreateTemplate (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createTemplate_permissions = Lens.lens (\CreateTemplate' {permissions} -> permissions) (\s@CreateTemplate' {} a -> s {permissions = a} :: CreateTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | The entity that you are using as a source when you create the template.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source: @SourceTemplate@ for a template or @SourceAnalysis@ for an
+-- analysis. Both of these require an Amazon Resource Name (ARN). For
+-- @SourceTemplate@, specify the ARN of the source template. For
+-- @SourceAnalysis@, specify the ARN of the source analysis. The
+-- @SourceTemplate@ ARN can contain any Amazon Web Services account and any
+-- Amazon QuickSight-supported Amazon Web Services Region.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ or
+-- @SourceAnalysis@ to list the replacement datasets for the placeholders
+-- listed in the original. The schema in each dataset must match its
+-- placeholder.
+createTemplate_sourceEntity :: Lens.Lens' CreateTemplate (Prelude.Maybe TemplateSourceEntity)
+createTemplate_sourceEntity = Lens.lens (\CreateTemplate' {sourceEntity} -> sourceEntity) (\s@CreateTemplate' {} a -> s {sourceEntity = a} :: CreateTemplate)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+createTemplate_tags :: Lens.Lens' CreateTemplate (Prelude.Maybe (Prelude.NonEmpty Tag))
+createTemplate_tags = Lens.lens (\CreateTemplate' {tags} -> tags) (\s@CreateTemplate' {} a -> s {tags = a} :: CreateTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description of the current template version being created. This API
+-- operation creates the first version of the template. Every time
+-- @UpdateTemplate@ is called, a new version is created. Each version of
+-- the template maintains a description of the version in the
+-- @VersionDescription@ field.
+createTemplate_versionDescription :: Lens.Lens' CreateTemplate (Prelude.Maybe Prelude.Text)
+createTemplate_versionDescription = Lens.lens (\CreateTemplate' {versionDescription} -> versionDescription) (\s@CreateTemplate' {} a -> s {versionDescription = a} :: CreateTemplate)
+
+-- | The ID for the Amazon Web Services account that the group is in. You use
+-- the ID for the Amazon Web Services account that contains your Amazon
+-- QuickSight account.
+createTemplate_awsAccountId :: Lens.Lens' CreateTemplate Prelude.Text
+createTemplate_awsAccountId = Lens.lens (\CreateTemplate' {awsAccountId} -> awsAccountId) (\s@CreateTemplate' {} a -> s {awsAccountId = a} :: CreateTemplate)
+
+-- | An ID for the template that you want to create. This template is unique
+-- per Amazon Web Services Region; in each Amazon Web Services account.
+createTemplate_templateId :: Lens.Lens' CreateTemplate Prelude.Text
+createTemplate_templateId = Lens.lens (\CreateTemplate' {templateId} -> templateId) (\s@CreateTemplate' {} a -> s {templateId = a} :: CreateTemplate)
+
+instance Core.AWSRequest CreateTemplate where
+  type
+    AWSResponse CreateTemplate =
+      CreateTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTemplateResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (x Data..?> "VersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTemplate where
+  hashWithSalt _salt CreateTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` sourceEntity
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` versionDescription
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData CreateTemplate where
+  rnf CreateTemplate' {..} =
+    Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf sourceEntity
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf versionDescription
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders CreateTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTemplate where
+  toJSON CreateTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Definition" Data..=) Prelude.<$> definition,
+            ("Name" Data..=) Prelude.<$> name,
+            ("Permissions" Data..=) Prelude.<$> permissions,
+            ("SourceEntity" Data..=) Prelude.<$> sourceEntity,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VersionDescription" Data..=)
+              Prelude.<$> versionDescription
+          ]
+      )
+
+instance Data.ToPath CreateTemplate where
+  toPath CreateTemplate' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId
+      ]
+
+instance Data.ToQuery CreateTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTemplateResponse' smart constructor.
+data CreateTemplateResponse = CreateTemplateResponse'
+  { -- | The ARN for the template.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The template creation status.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the template.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the template, including the version information of the first
+    -- version.
+    versionArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createTemplateResponse_arn' - The ARN for the template.
+--
+-- 'creationStatus', 'createTemplateResponse_creationStatus' - The template creation status.
+--
+-- 'requestId', 'createTemplateResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateId', 'createTemplateResponse_templateId' - The ID of the template.
+--
+-- 'versionArn', 'createTemplateResponse_versionArn' - The ARN for the template, including the version information of the first
+-- version.
+--
+-- 'status', 'createTemplateResponse_status' - The HTTP status of the request.
+newCreateTemplateResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateTemplateResponse
+newCreateTemplateResponse pStatus_ =
+  CreateTemplateResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      versionArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ARN for the template.
+createTemplateResponse_arn :: Lens.Lens' CreateTemplateResponse (Prelude.Maybe Prelude.Text)
+createTemplateResponse_arn = Lens.lens (\CreateTemplateResponse' {arn} -> arn) (\s@CreateTemplateResponse' {} a -> s {arn = a} :: CreateTemplateResponse)
+
+-- | The template creation status.
+createTemplateResponse_creationStatus :: Lens.Lens' CreateTemplateResponse (Prelude.Maybe ResourceStatus)
+createTemplateResponse_creationStatus = Lens.lens (\CreateTemplateResponse' {creationStatus} -> creationStatus) (\s@CreateTemplateResponse' {} a -> s {creationStatus = a} :: CreateTemplateResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createTemplateResponse_requestId :: Lens.Lens' CreateTemplateResponse (Prelude.Maybe Prelude.Text)
+createTemplateResponse_requestId = Lens.lens (\CreateTemplateResponse' {requestId} -> requestId) (\s@CreateTemplateResponse' {} a -> s {requestId = a} :: CreateTemplateResponse)
+
+-- | The ID of the template.
+createTemplateResponse_templateId :: Lens.Lens' CreateTemplateResponse (Prelude.Maybe Prelude.Text)
+createTemplateResponse_templateId = Lens.lens (\CreateTemplateResponse' {templateId} -> templateId) (\s@CreateTemplateResponse' {} a -> s {templateId = a} :: CreateTemplateResponse)
+
+-- | The ARN for the template, including the version information of the first
+-- version.
+createTemplateResponse_versionArn :: Lens.Lens' CreateTemplateResponse (Prelude.Maybe Prelude.Text)
+createTemplateResponse_versionArn = Lens.lens (\CreateTemplateResponse' {versionArn} -> versionArn) (\s@CreateTemplateResponse' {} a -> s {versionArn = a} :: CreateTemplateResponse)
+
+-- | The HTTP status of the request.
+createTemplateResponse_status :: Lens.Lens' CreateTemplateResponse Prelude.Int
+createTemplateResponse_status = Lens.lens (\CreateTemplateResponse' {status} -> status) (\s@CreateTemplateResponse' {} a -> s {status = a} :: CreateTemplateResponse)
+
+instance Prelude.NFData CreateTemplateResponse where
+  rnf CreateTemplateResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf versionArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateTemplateAlias.hs b/gen/Amazonka/QuickSight/CreateTemplateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateTemplateAlias.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.CreateTemplateAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a template alias for a template.
+module Amazonka.QuickSight.CreateTemplateAlias
+  ( -- * Creating a Request
+    CreateTemplateAlias (..),
+    newCreateTemplateAlias,
+
+    -- * Request Lenses
+    createTemplateAlias_awsAccountId,
+    createTemplateAlias_templateId,
+    createTemplateAlias_aliasName,
+    createTemplateAlias_templateVersionNumber,
+
+    -- * Destructuring the Response
+    CreateTemplateAliasResponse (..),
+    newCreateTemplateAliasResponse,
+
+    -- * Response Lenses
+    createTemplateAliasResponse_requestId,
+    createTemplateAliasResponse_templateAlias,
+    createTemplateAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateTemplateAlias' smart constructor.
+data CreateTemplateAlias = CreateTemplateAlias'
+  { -- | The ID of the Amazon Web Services account that contains the template
+    -- that you creating an alias for.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the template.
+    templateId :: Prelude.Text,
+    -- | The name that you want to give to the template alias that you\'re
+    -- creating. Don\'t start the alias name with the @$@ character. Alias
+    -- names that start with @$@ are reserved by Amazon QuickSight.
+    aliasName :: Prelude.Text,
+    -- | The version number of the template.
+    templateVersionNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTemplateAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'createTemplateAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- that you creating an alias for.
+--
+-- 'templateId', 'createTemplateAlias_templateId' - An ID for the template.
+--
+-- 'aliasName', 'createTemplateAlias_aliasName' - The name that you want to give to the template alias that you\'re
+-- creating. Don\'t start the alias name with the @$@ character. Alias
+-- names that start with @$@ are reserved by Amazon QuickSight.
+--
+-- 'templateVersionNumber', 'createTemplateAlias_templateVersionNumber' - The version number of the template.
+newCreateTemplateAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  -- | 'templateVersionNumber'
+  Prelude.Natural ->
+  CreateTemplateAlias
+newCreateTemplateAlias
+  pAwsAccountId_
+  pTemplateId_
+  pAliasName_
+  pTemplateVersionNumber_ =
+    CreateTemplateAlias'
+      { awsAccountId = pAwsAccountId_,
+        templateId = pTemplateId_,
+        aliasName = pAliasName_,
+        templateVersionNumber = pTemplateVersionNumber_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- that you creating an alias for.
+createTemplateAlias_awsAccountId :: Lens.Lens' CreateTemplateAlias Prelude.Text
+createTemplateAlias_awsAccountId = Lens.lens (\CreateTemplateAlias' {awsAccountId} -> awsAccountId) (\s@CreateTemplateAlias' {} a -> s {awsAccountId = a} :: CreateTemplateAlias)
+
+-- | An ID for the template.
+createTemplateAlias_templateId :: Lens.Lens' CreateTemplateAlias Prelude.Text
+createTemplateAlias_templateId = Lens.lens (\CreateTemplateAlias' {templateId} -> templateId) (\s@CreateTemplateAlias' {} a -> s {templateId = a} :: CreateTemplateAlias)
+
+-- | The name that you want to give to the template alias that you\'re
+-- creating. Don\'t start the alias name with the @$@ character. Alias
+-- names that start with @$@ are reserved by Amazon QuickSight.
+createTemplateAlias_aliasName :: Lens.Lens' CreateTemplateAlias Prelude.Text
+createTemplateAlias_aliasName = Lens.lens (\CreateTemplateAlias' {aliasName} -> aliasName) (\s@CreateTemplateAlias' {} a -> s {aliasName = a} :: CreateTemplateAlias)
+
+-- | The version number of the template.
+createTemplateAlias_templateVersionNumber :: Lens.Lens' CreateTemplateAlias Prelude.Natural
+createTemplateAlias_templateVersionNumber = Lens.lens (\CreateTemplateAlias' {templateVersionNumber} -> templateVersionNumber) (\s@CreateTemplateAlias' {} a -> s {templateVersionNumber = a} :: CreateTemplateAlias)
+
+instance Core.AWSRequest CreateTemplateAlias where
+  type
+    AWSResponse CreateTemplateAlias =
+      CreateTemplateAliasResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTemplateAliasResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateAlias")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTemplateAlias where
+  hashWithSalt _salt CreateTemplateAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` templateVersionNumber
+
+instance Prelude.NFData CreateTemplateAlias where
+  rnf CreateTemplateAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf templateVersionNumber
+
+instance Data.ToHeaders CreateTemplateAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTemplateAlias where
+  toJSON CreateTemplateAlias' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "TemplateVersionNumber"
+                  Data..= templateVersionNumber
+              )
+          ]
+      )
+
+instance Data.ToPath CreateTemplateAlias where
+  toPath CreateTemplateAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery CreateTemplateAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTemplateAliasResponse' smart constructor.
+data CreateTemplateAliasResponse = CreateTemplateAliasResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the template alias.
+    templateAlias :: Prelude.Maybe TemplateAlias,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTemplateAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'createTemplateAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateAlias', 'createTemplateAliasResponse_templateAlias' - Information about the template alias.
+--
+-- 'status', 'createTemplateAliasResponse_status' - The HTTP status of the request.
+newCreateTemplateAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateTemplateAliasResponse
+newCreateTemplateAliasResponse pStatus_ =
+  CreateTemplateAliasResponse'
+    { requestId =
+        Prelude.Nothing,
+      templateAlias = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+createTemplateAliasResponse_requestId :: Lens.Lens' CreateTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+createTemplateAliasResponse_requestId = Lens.lens (\CreateTemplateAliasResponse' {requestId} -> requestId) (\s@CreateTemplateAliasResponse' {} a -> s {requestId = a} :: CreateTemplateAliasResponse)
+
+-- | Information about the template alias.
+createTemplateAliasResponse_templateAlias :: Lens.Lens' CreateTemplateAliasResponse (Prelude.Maybe TemplateAlias)
+createTemplateAliasResponse_templateAlias = Lens.lens (\CreateTemplateAliasResponse' {templateAlias} -> templateAlias) (\s@CreateTemplateAliasResponse' {} a -> s {templateAlias = a} :: CreateTemplateAliasResponse)
+
+-- | The HTTP status of the request.
+createTemplateAliasResponse_status :: Lens.Lens' CreateTemplateAliasResponse Prelude.Int
+createTemplateAliasResponse_status = Lens.lens (\CreateTemplateAliasResponse' {status} -> status) (\s@CreateTemplateAliasResponse' {} a -> s {status = a} :: CreateTemplateAliasResponse)
+
+instance Prelude.NFData CreateTemplateAliasResponse where
+  rnf CreateTemplateAliasResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateAlias
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateTheme.hs b/gen/Amazonka/QuickSight/CreateTheme.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateTheme.hs
@@ -0,0 +1,356 @@
+{-# 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.QuickSight.CreateTheme
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a theme.
+--
+-- A /theme/ is set of configuration options for color and layout. Themes
+-- apply to analyses and dashboards. For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html Using Themes in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+module Amazonka.QuickSight.CreateTheme
+  ( -- * Creating a Request
+    CreateTheme (..),
+    newCreateTheme,
+
+    -- * Request Lenses
+    createTheme_permissions,
+    createTheme_tags,
+    createTheme_versionDescription,
+    createTheme_awsAccountId,
+    createTheme_themeId,
+    createTheme_name,
+    createTheme_baseThemeId,
+    createTheme_configuration,
+
+    -- * Destructuring the Response
+    CreateThemeResponse (..),
+    newCreateThemeResponse,
+
+    -- * Response Lenses
+    createThemeResponse_arn,
+    createThemeResponse_creationStatus,
+    createThemeResponse_requestId,
+    createThemeResponse_themeId,
+    createThemeResponse_versionArn,
+    createThemeResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateTheme' smart constructor.
+data CreateTheme = CreateTheme'
+  { -- | A valid grouping of resource permissions to apply to the new theme.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | A map of the key-value pairs for the resource tag or tags that you want
+    -- to add to the resource.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | A description of the first version of the theme that you\'re creating.
+    -- Every time @UpdateTheme@ is called, a new version is created. Each
+    -- version of the theme has a description of the version in the
+    -- @VersionDescription@ field.
+    versionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account where you want to store the
+    -- new theme.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the theme that you want to create. The theme ID is unique per
+    -- Amazon Web Services Region in each Amazon Web Services account.
+    themeId :: Prelude.Text,
+    -- | A display name for the theme.
+    name :: Prelude.Text,
+    -- | The ID of the theme that a custom theme will inherit from. All themes
+    -- inherit from one of the starting themes defined by Amazon QuickSight.
+    -- For a list of the starting themes, use @ListThemes@ or choose __Themes__
+    -- from within an analysis.
+    baseThemeId :: Prelude.Text,
+    -- | The theme configuration, which contains the theme display properties.
+    configuration :: ThemeConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTheme' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissions', 'createTheme_permissions' - A valid grouping of resource permissions to apply to the new theme.
+--
+-- 'tags', 'createTheme_tags' - A map of the key-value pairs for the resource tag or tags that you want
+-- to add to the resource.
+--
+-- 'versionDescription', 'createTheme_versionDescription' - A description of the first version of the theme that you\'re creating.
+-- Every time @UpdateTheme@ is called, a new version is created. Each
+-- version of the theme has a description of the version in the
+-- @VersionDescription@ field.
+--
+-- 'awsAccountId', 'createTheme_awsAccountId' - The ID of the Amazon Web Services account where you want to store the
+-- new theme.
+--
+-- 'themeId', 'createTheme_themeId' - An ID for the theme that you want to create. The theme ID is unique per
+-- Amazon Web Services Region in each Amazon Web Services account.
+--
+-- 'name', 'createTheme_name' - A display name for the theme.
+--
+-- 'baseThemeId', 'createTheme_baseThemeId' - The ID of the theme that a custom theme will inherit from. All themes
+-- inherit from one of the starting themes defined by Amazon QuickSight.
+-- For a list of the starting themes, use @ListThemes@ or choose __Themes__
+-- from within an analysis.
+--
+-- 'configuration', 'createTheme_configuration' - The theme configuration, which contains the theme display properties.
+newCreateTheme ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'baseThemeId'
+  Prelude.Text ->
+  -- | 'configuration'
+  ThemeConfiguration ->
+  CreateTheme
+newCreateTheme
+  pAwsAccountId_
+  pThemeId_
+  pName_
+  pBaseThemeId_
+  pConfiguration_ =
+    CreateTheme'
+      { permissions = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        versionDescription = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        themeId = pThemeId_,
+        name = pName_,
+        baseThemeId = pBaseThemeId_,
+        configuration = pConfiguration_
+      }
+
+-- | A valid grouping of resource permissions to apply to the new theme.
+createTheme_permissions :: Lens.Lens' CreateTheme (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+createTheme_permissions = Lens.lens (\CreateTheme' {permissions} -> permissions) (\s@CreateTheme' {} a -> s {permissions = a} :: CreateTheme) Prelude.. Lens.mapping Lens.coerced
+
+-- | A map of the key-value pairs for the resource tag or tags that you want
+-- to add to the resource.
+createTheme_tags :: Lens.Lens' CreateTheme (Prelude.Maybe (Prelude.NonEmpty Tag))
+createTheme_tags = Lens.lens (\CreateTheme' {tags} -> tags) (\s@CreateTheme' {} a -> s {tags = a} :: CreateTheme) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description of the first version of the theme that you\'re creating.
+-- Every time @UpdateTheme@ is called, a new version is created. Each
+-- version of the theme has a description of the version in the
+-- @VersionDescription@ field.
+createTheme_versionDescription :: Lens.Lens' CreateTheme (Prelude.Maybe Prelude.Text)
+createTheme_versionDescription = Lens.lens (\CreateTheme' {versionDescription} -> versionDescription) (\s@CreateTheme' {} a -> s {versionDescription = a} :: CreateTheme)
+
+-- | The ID of the Amazon Web Services account where you want to store the
+-- new theme.
+createTheme_awsAccountId :: Lens.Lens' CreateTheme Prelude.Text
+createTheme_awsAccountId = Lens.lens (\CreateTheme' {awsAccountId} -> awsAccountId) (\s@CreateTheme' {} a -> s {awsAccountId = a} :: CreateTheme)
+
+-- | An ID for the theme that you want to create. The theme ID is unique per
+-- Amazon Web Services Region in each Amazon Web Services account.
+createTheme_themeId :: Lens.Lens' CreateTheme Prelude.Text
+createTheme_themeId = Lens.lens (\CreateTheme' {themeId} -> themeId) (\s@CreateTheme' {} a -> s {themeId = a} :: CreateTheme)
+
+-- | A display name for the theme.
+createTheme_name :: Lens.Lens' CreateTheme Prelude.Text
+createTheme_name = Lens.lens (\CreateTheme' {name} -> name) (\s@CreateTheme' {} a -> s {name = a} :: CreateTheme)
+
+-- | The ID of the theme that a custom theme will inherit from. All themes
+-- inherit from one of the starting themes defined by Amazon QuickSight.
+-- For a list of the starting themes, use @ListThemes@ or choose __Themes__
+-- from within an analysis.
+createTheme_baseThemeId :: Lens.Lens' CreateTheme Prelude.Text
+createTheme_baseThemeId = Lens.lens (\CreateTheme' {baseThemeId} -> baseThemeId) (\s@CreateTheme' {} a -> s {baseThemeId = a} :: CreateTheme)
+
+-- | The theme configuration, which contains the theme display properties.
+createTheme_configuration :: Lens.Lens' CreateTheme ThemeConfiguration
+createTheme_configuration = Lens.lens (\CreateTheme' {configuration} -> configuration) (\s@CreateTheme' {} a -> s {configuration = a} :: CreateTheme)
+
+instance Core.AWSRequest CreateTheme where
+  type AWSResponse CreateTheme = CreateThemeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateThemeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeId")
+            Prelude.<*> (x Data..?> "VersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTheme where
+  hashWithSalt _salt CreateTheme' {..} =
+    _salt
+      `Prelude.hashWithSalt` permissions
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` versionDescription
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` baseThemeId
+      `Prelude.hashWithSalt` configuration
+
+instance Prelude.NFData CreateTheme where
+  rnf CreateTheme' {..} =
+    Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf versionDescription
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf baseThemeId
+      `Prelude.seq` Prelude.rnf configuration
+
+instance Data.ToHeaders CreateTheme where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTheme where
+  toJSON CreateTheme' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Permissions" Data..=) Prelude.<$> permissions,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VersionDescription" Data..=)
+              Prelude.<$> versionDescription,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("BaseThemeId" Data..= baseThemeId),
+            Prelude.Just
+              ("Configuration" Data..= configuration)
+          ]
+      )
+
+instance Data.ToPath CreateTheme where
+  toPath CreateTheme' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId
+      ]
+
+instance Data.ToQuery CreateTheme where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateThemeResponse' smart constructor.
+data CreateThemeResponse = CreateThemeResponse'
+  { -- | The Amazon Resource Name (ARN) for the theme.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The theme creation status.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the theme.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the new theme.
+    versionArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateThemeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createThemeResponse_arn' - The Amazon Resource Name (ARN) for the theme.
+--
+-- 'creationStatus', 'createThemeResponse_creationStatus' - The theme creation status.
+--
+-- 'requestId', 'createThemeResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeId', 'createThemeResponse_themeId' - The ID of the theme.
+--
+-- 'versionArn', 'createThemeResponse_versionArn' - The Amazon Resource Name (ARN) for the new theme.
+--
+-- 'status', 'createThemeResponse_status' - The HTTP status of the request.
+newCreateThemeResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateThemeResponse
+newCreateThemeResponse pStatus_ =
+  CreateThemeResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      versionArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the theme.
+createThemeResponse_arn :: Lens.Lens' CreateThemeResponse (Prelude.Maybe Prelude.Text)
+createThemeResponse_arn = Lens.lens (\CreateThemeResponse' {arn} -> arn) (\s@CreateThemeResponse' {} a -> s {arn = a} :: CreateThemeResponse)
+
+-- | The theme creation status.
+createThemeResponse_creationStatus :: Lens.Lens' CreateThemeResponse (Prelude.Maybe ResourceStatus)
+createThemeResponse_creationStatus = Lens.lens (\CreateThemeResponse' {creationStatus} -> creationStatus) (\s@CreateThemeResponse' {} a -> s {creationStatus = a} :: CreateThemeResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+createThemeResponse_requestId :: Lens.Lens' CreateThemeResponse (Prelude.Maybe Prelude.Text)
+createThemeResponse_requestId = Lens.lens (\CreateThemeResponse' {requestId} -> requestId) (\s@CreateThemeResponse' {} a -> s {requestId = a} :: CreateThemeResponse)
+
+-- | The ID of the theme.
+createThemeResponse_themeId :: Lens.Lens' CreateThemeResponse (Prelude.Maybe Prelude.Text)
+createThemeResponse_themeId = Lens.lens (\CreateThemeResponse' {themeId} -> themeId) (\s@CreateThemeResponse' {} a -> s {themeId = a} :: CreateThemeResponse)
+
+-- | The Amazon Resource Name (ARN) for the new theme.
+createThemeResponse_versionArn :: Lens.Lens' CreateThemeResponse (Prelude.Maybe Prelude.Text)
+createThemeResponse_versionArn = Lens.lens (\CreateThemeResponse' {versionArn} -> versionArn) (\s@CreateThemeResponse' {} a -> s {versionArn = a} :: CreateThemeResponse)
+
+-- | The HTTP status of the request.
+createThemeResponse_status :: Lens.Lens' CreateThemeResponse Prelude.Int
+createThemeResponse_status = Lens.lens (\CreateThemeResponse' {status} -> status) (\s@CreateThemeResponse' {} a -> s {status = a} :: CreateThemeResponse)
+
+instance Prelude.NFData CreateThemeResponse where
+  rnf CreateThemeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf versionArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/CreateThemeAlias.hs b/gen/Amazonka/QuickSight/CreateThemeAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/CreateThemeAlias.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.QuickSight.CreateThemeAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a theme alias for a theme.
+module Amazonka.QuickSight.CreateThemeAlias
+  ( -- * Creating a Request
+    CreateThemeAlias (..),
+    newCreateThemeAlias,
+
+    -- * Request Lenses
+    createThemeAlias_awsAccountId,
+    createThemeAlias_themeId,
+    createThemeAlias_aliasName,
+    createThemeAlias_themeVersionNumber,
+
+    -- * Destructuring the Response
+    CreateThemeAliasResponse (..),
+    newCreateThemeAliasResponse,
+
+    -- * Response Lenses
+    createThemeAliasResponse_requestId,
+    createThemeAliasResponse_themeAlias,
+    createThemeAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateThemeAlias' smart constructor.
+data CreateThemeAlias = CreateThemeAlias'
+  { -- | The ID of the Amazon Web Services account that contains the theme for
+    -- the new theme alias.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the theme alias.
+    themeId :: Prelude.Text,
+    -- | The name that you want to give to the theme alias that you are creating.
+    -- The alias name can\'t begin with a @$@. Alias names that start with @$@
+    -- are reserved by Amazon QuickSight.
+    aliasName :: Prelude.Text,
+    -- | The version number of the theme.
+    themeVersionNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateThemeAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'createThemeAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the theme for
+-- the new theme alias.
+--
+-- 'themeId', 'createThemeAlias_themeId' - An ID for the theme alias.
+--
+-- 'aliasName', 'createThemeAlias_aliasName' - The name that you want to give to the theme alias that you are creating.
+-- The alias name can\'t begin with a @$@. Alias names that start with @$@
+-- are reserved by Amazon QuickSight.
+--
+-- 'themeVersionNumber', 'createThemeAlias_themeVersionNumber' - The version number of the theme.
+newCreateThemeAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  -- | 'themeVersionNumber'
+  Prelude.Natural ->
+  CreateThemeAlias
+newCreateThemeAlias
+  pAwsAccountId_
+  pThemeId_
+  pAliasName_
+  pThemeVersionNumber_ =
+    CreateThemeAlias'
+      { awsAccountId = pAwsAccountId_,
+        themeId = pThemeId_,
+        aliasName = pAliasName_,
+        themeVersionNumber = pThemeVersionNumber_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the theme for
+-- the new theme alias.
+createThemeAlias_awsAccountId :: Lens.Lens' CreateThemeAlias Prelude.Text
+createThemeAlias_awsAccountId = Lens.lens (\CreateThemeAlias' {awsAccountId} -> awsAccountId) (\s@CreateThemeAlias' {} a -> s {awsAccountId = a} :: CreateThemeAlias)
+
+-- | An ID for the theme alias.
+createThemeAlias_themeId :: Lens.Lens' CreateThemeAlias Prelude.Text
+createThemeAlias_themeId = Lens.lens (\CreateThemeAlias' {themeId} -> themeId) (\s@CreateThemeAlias' {} a -> s {themeId = a} :: CreateThemeAlias)
+
+-- | The name that you want to give to the theme alias that you are creating.
+-- The alias name can\'t begin with a @$@. Alias names that start with @$@
+-- are reserved by Amazon QuickSight.
+createThemeAlias_aliasName :: Lens.Lens' CreateThemeAlias Prelude.Text
+createThemeAlias_aliasName = Lens.lens (\CreateThemeAlias' {aliasName} -> aliasName) (\s@CreateThemeAlias' {} a -> s {aliasName = a} :: CreateThemeAlias)
+
+-- | The version number of the theme.
+createThemeAlias_themeVersionNumber :: Lens.Lens' CreateThemeAlias Prelude.Natural
+createThemeAlias_themeVersionNumber = Lens.lens (\CreateThemeAlias' {themeVersionNumber} -> themeVersionNumber) (\s@CreateThemeAlias' {} a -> s {themeVersionNumber = a} :: CreateThemeAlias)
+
+instance Core.AWSRequest CreateThemeAlias where
+  type
+    AWSResponse CreateThemeAlias =
+      CreateThemeAliasResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateThemeAliasResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeAlias")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateThemeAlias where
+  hashWithSalt _salt CreateThemeAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` themeVersionNumber
+
+instance Prelude.NFData CreateThemeAlias where
+  rnf CreateThemeAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf themeVersionNumber
+
+instance Data.ToHeaders CreateThemeAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateThemeAlias where
+  toJSON CreateThemeAlias' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ThemeVersionNumber" Data..= themeVersionNumber)
+          ]
+      )
+
+instance Data.ToPath CreateThemeAlias where
+  toPath CreateThemeAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery CreateThemeAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateThemeAliasResponse' smart constructor.
+data CreateThemeAliasResponse = CreateThemeAliasResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the theme alias.
+    themeAlias :: Prelude.Maybe ThemeAlias,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateThemeAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'createThemeAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeAlias', 'createThemeAliasResponse_themeAlias' - Information about the theme alias.
+--
+-- 'status', 'createThemeAliasResponse_status' - The HTTP status of the request.
+newCreateThemeAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  CreateThemeAliasResponse
+newCreateThemeAliasResponse pStatus_ =
+  CreateThemeAliasResponse'
+    { requestId =
+        Prelude.Nothing,
+      themeAlias = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+createThemeAliasResponse_requestId :: Lens.Lens' CreateThemeAliasResponse (Prelude.Maybe Prelude.Text)
+createThemeAliasResponse_requestId = Lens.lens (\CreateThemeAliasResponse' {requestId} -> requestId) (\s@CreateThemeAliasResponse' {} a -> s {requestId = a} :: CreateThemeAliasResponse)
+
+-- | Information about the theme alias.
+createThemeAliasResponse_themeAlias :: Lens.Lens' CreateThemeAliasResponse (Prelude.Maybe ThemeAlias)
+createThemeAliasResponse_themeAlias = Lens.lens (\CreateThemeAliasResponse' {themeAlias} -> themeAlias) (\s@CreateThemeAliasResponse' {} a -> s {themeAlias = a} :: CreateThemeAliasResponse)
+
+-- | The HTTP status of the request.
+createThemeAliasResponse_status :: Lens.Lens' CreateThemeAliasResponse Prelude.Int
+createThemeAliasResponse_status = Lens.lens (\CreateThemeAliasResponse' {status} -> status) (\s@CreateThemeAliasResponse' {} a -> s {status = a} :: CreateThemeAliasResponse)
+
+instance Prelude.NFData CreateThemeAliasResponse where
+  rnf CreateThemeAliasResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeAlias
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteAccountCustomization.hs b/gen/Amazonka/QuickSight/DeleteAccountCustomization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteAccountCustomization.hs
@@ -0,0 +1,194 @@
+{-# 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.QuickSight.DeleteAccountCustomization
+-- 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 all Amazon QuickSight customizations in this Amazon Web Services
+-- Region for the specified Amazon Web Services account and Amazon
+-- QuickSight namespace.
+module Amazonka.QuickSight.DeleteAccountCustomization
+  ( -- * Creating a Request
+    DeleteAccountCustomization (..),
+    newDeleteAccountCustomization,
+
+    -- * Request Lenses
+    deleteAccountCustomization_namespace,
+    deleteAccountCustomization_awsAccountId,
+
+    -- * Destructuring the Response
+    DeleteAccountCustomizationResponse (..),
+    newDeleteAccountCustomizationResponse,
+
+    -- * Response Lenses
+    deleteAccountCustomizationResponse_requestId,
+    deleteAccountCustomizationResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAccountCustomization' smart constructor.
+data DeleteAccountCustomization = DeleteAccountCustomization'
+  { -- | The Amazon QuickSight namespace that you\'re deleting the customizations
+    -- from.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that you want to delete
+    -- Amazon QuickSight customizations from in this Amazon Web Services
+    -- Region.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAccountCustomization' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'namespace', 'deleteAccountCustomization_namespace' - The Amazon QuickSight namespace that you\'re deleting the customizations
+-- from.
+--
+-- 'awsAccountId', 'deleteAccountCustomization_awsAccountId' - The ID for the Amazon Web Services account that you want to delete
+-- Amazon QuickSight customizations from in this Amazon Web Services
+-- Region.
+newDeleteAccountCustomization ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  DeleteAccountCustomization
+newDeleteAccountCustomization pAwsAccountId_ =
+  DeleteAccountCustomization'
+    { namespace =
+        Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The Amazon QuickSight namespace that you\'re deleting the customizations
+-- from.
+deleteAccountCustomization_namespace :: Lens.Lens' DeleteAccountCustomization (Prelude.Maybe Prelude.Text)
+deleteAccountCustomization_namespace = Lens.lens (\DeleteAccountCustomization' {namespace} -> namespace) (\s@DeleteAccountCustomization' {} a -> s {namespace = a} :: DeleteAccountCustomization)
+
+-- | The ID for the Amazon Web Services account that you want to delete
+-- Amazon QuickSight customizations from in this Amazon Web Services
+-- Region.
+deleteAccountCustomization_awsAccountId :: Lens.Lens' DeleteAccountCustomization Prelude.Text
+deleteAccountCustomization_awsAccountId = Lens.lens (\DeleteAccountCustomization' {awsAccountId} -> awsAccountId) (\s@DeleteAccountCustomization' {} a -> s {awsAccountId = a} :: DeleteAccountCustomization)
+
+instance Core.AWSRequest DeleteAccountCustomization where
+  type
+    AWSResponse DeleteAccountCustomization =
+      DeleteAccountCustomizationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteAccountCustomizationResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAccountCustomization where
+  hashWithSalt _salt DeleteAccountCustomization' {..} =
+    _salt
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData DeleteAccountCustomization where
+  rnf DeleteAccountCustomization' {..} =
+    Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders DeleteAccountCustomization where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteAccountCustomization where
+  toPath DeleteAccountCustomization' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/customizations"
+      ]
+
+instance Data.ToQuery DeleteAccountCustomization where
+  toQuery DeleteAccountCustomization' {..} =
+    Prelude.mconcat ["namespace" Data.=: namespace]
+
+-- | /See:/ 'newDeleteAccountCustomizationResponse' smart constructor.
+data DeleteAccountCustomizationResponse = DeleteAccountCustomizationResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAccountCustomizationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteAccountCustomizationResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteAccountCustomizationResponse_status' - The HTTP status of the request.
+newDeleteAccountCustomizationResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteAccountCustomizationResponse
+newDeleteAccountCustomizationResponse pStatus_ =
+  DeleteAccountCustomizationResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteAccountCustomizationResponse_requestId :: Lens.Lens' DeleteAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+deleteAccountCustomizationResponse_requestId = Lens.lens (\DeleteAccountCustomizationResponse' {requestId} -> requestId) (\s@DeleteAccountCustomizationResponse' {} a -> s {requestId = a} :: DeleteAccountCustomizationResponse)
+
+-- | The HTTP status of the request.
+deleteAccountCustomizationResponse_status :: Lens.Lens' DeleteAccountCustomizationResponse Prelude.Int
+deleteAccountCustomizationResponse_status = Lens.lens (\DeleteAccountCustomizationResponse' {status} -> status) (\s@DeleteAccountCustomizationResponse' {} a -> s {status = a} :: DeleteAccountCustomizationResponse)
+
+instance
+  Prelude.NFData
+    DeleteAccountCustomizationResponse
+  where
+  rnf DeleteAccountCustomizationResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteAccountSubscription.hs b/gen/Amazonka/QuickSight/DeleteAccountSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteAccountSubscription.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.QuickSight.DeleteAccountSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @DeleteAccountSubscription@ operation to delete an Amazon
+-- QuickSight account. This operation will result in an error message if
+-- you have configured your account termination protection settings to
+-- @True@. To change this setting and delete your account, call the
+-- @UpdateAccountSettings@ API and set the value of the
+-- @TerminationProtectionEnabled@ parameter to @False@, then make another
+-- call to the @DeleteAccountSubscription@ API.
+module Amazonka.QuickSight.DeleteAccountSubscription
+  ( -- * Creating a Request
+    DeleteAccountSubscription (..),
+    newDeleteAccountSubscription,
+
+    -- * Request Lenses
+    deleteAccountSubscription_awsAccountId,
+
+    -- * Destructuring the Response
+    DeleteAccountSubscriptionResponse (..),
+    newDeleteAccountSubscriptionResponse,
+
+    -- * Response Lenses
+    deleteAccountSubscriptionResponse_requestId,
+    deleteAccountSubscriptionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAccountSubscription' smart constructor.
+data DeleteAccountSubscription = DeleteAccountSubscription'
+  { -- | The Amazon Web Services account ID of the account that you want to
+    -- delete.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAccountSubscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteAccountSubscription_awsAccountId' - The Amazon Web Services account ID of the account that you want to
+-- delete.
+newDeleteAccountSubscription ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  DeleteAccountSubscription
+newDeleteAccountSubscription pAwsAccountId_ =
+  DeleteAccountSubscription'
+    { awsAccountId =
+        pAwsAccountId_
+    }
+
+-- | The Amazon Web Services account ID of the account that you want to
+-- delete.
+deleteAccountSubscription_awsAccountId :: Lens.Lens' DeleteAccountSubscription Prelude.Text
+deleteAccountSubscription_awsAccountId = Lens.lens (\DeleteAccountSubscription' {awsAccountId} -> awsAccountId) (\s@DeleteAccountSubscription' {} a -> s {awsAccountId = a} :: DeleteAccountSubscription)
+
+instance Core.AWSRequest DeleteAccountSubscription where
+  type
+    AWSResponse DeleteAccountSubscription =
+      DeleteAccountSubscriptionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteAccountSubscriptionResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAccountSubscription where
+  hashWithSalt _salt DeleteAccountSubscription' {..} =
+    _salt `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData DeleteAccountSubscription where
+  rnf DeleteAccountSubscription' {..} =
+    Prelude.rnf awsAccountId
+
+instance Data.ToHeaders DeleteAccountSubscription where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteAccountSubscription where
+  toPath DeleteAccountSubscription' {..} =
+    Prelude.mconcat
+      ["/account/", Data.toBS awsAccountId]
+
+instance Data.ToQuery DeleteAccountSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAccountSubscriptionResponse' smart constructor.
+data DeleteAccountSubscriptionResponse = DeleteAccountSubscriptionResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAccountSubscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteAccountSubscriptionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteAccountSubscriptionResponse_status' - The HTTP status of the request.
+newDeleteAccountSubscriptionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteAccountSubscriptionResponse
+newDeleteAccountSubscriptionResponse pStatus_ =
+  DeleteAccountSubscriptionResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteAccountSubscriptionResponse_requestId :: Lens.Lens' DeleteAccountSubscriptionResponse (Prelude.Maybe Prelude.Text)
+deleteAccountSubscriptionResponse_requestId = Lens.lens (\DeleteAccountSubscriptionResponse' {requestId} -> requestId) (\s@DeleteAccountSubscriptionResponse' {} a -> s {requestId = a} :: DeleteAccountSubscriptionResponse)
+
+-- | The HTTP status of the request.
+deleteAccountSubscriptionResponse_status :: Lens.Lens' DeleteAccountSubscriptionResponse Prelude.Int
+deleteAccountSubscriptionResponse_status = Lens.lens (\DeleteAccountSubscriptionResponse' {status} -> status) (\s@DeleteAccountSubscriptionResponse' {} a -> s {status = a} :: DeleteAccountSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    DeleteAccountSubscriptionResponse
+  where
+  rnf DeleteAccountSubscriptionResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteAnalysis.hs b/gen/Amazonka/QuickSight/DeleteAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteAnalysis.hs
@@ -0,0 +1,282 @@
+{-# 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.QuickSight.DeleteAnalysis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an analysis from Amazon QuickSight. You can optionally include a
+-- recovery window during which you can restore the analysis. If you don\'t
+-- specify a recovery window value, the operation defaults to 30 days.
+-- Amazon QuickSight attaches a @DeletionTime@ stamp to the response that
+-- specifies the end of the recovery window. At the end of the recovery
+-- window, Amazon QuickSight deletes the analysis permanently.
+--
+-- At any time before recovery window ends, you can use the
+-- @RestoreAnalysis@ API operation to remove the @DeletionTime@ stamp and
+-- cancel the deletion of the analysis. The analysis remains visible in the
+-- API until it\'s deleted, so you can describe it but you can\'t make a
+-- template from it.
+--
+-- An analysis that\'s scheduled for deletion isn\'t accessible in the
+-- Amazon QuickSight console. To access it in the console, restore it.
+-- Deleting an analysis doesn\'t delete the dashboards that you publish
+-- from it.
+module Amazonka.QuickSight.DeleteAnalysis
+  ( -- * Creating a Request
+    DeleteAnalysis (..),
+    newDeleteAnalysis,
+
+    -- * Request Lenses
+    deleteAnalysis_forceDeleteWithoutRecovery,
+    deleteAnalysis_recoveryWindowInDays,
+    deleteAnalysis_awsAccountId,
+    deleteAnalysis_analysisId,
+
+    -- * Destructuring the Response
+    DeleteAnalysisResponse (..),
+    newDeleteAnalysisResponse,
+
+    -- * Response Lenses
+    deleteAnalysisResponse_analysisId,
+    deleteAnalysisResponse_arn,
+    deleteAnalysisResponse_deletionTime,
+    deleteAnalysisResponse_requestId,
+    deleteAnalysisResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAnalysis' smart constructor.
+data DeleteAnalysis = DeleteAnalysis'
+  { -- | This option defaults to the value @NoForceDeleteWithoutRecovery@. To
+    -- immediately delete the analysis, add the @ForceDeleteWithoutRecovery@
+    -- option. You can\'t restore an analysis after it\'s deleted.
+    forceDeleteWithoutRecovery :: Prelude.Maybe Prelude.Bool,
+    -- | A value that specifies the number of days that Amazon QuickSight waits
+    -- before it deletes the analysis. You can\'t use this parameter with the
+    -- @ForceDeleteWithoutRecovery@ option in the same API call. The default
+    -- value is 30.
+    recoveryWindowInDays :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account where you want to delete an
+    -- analysis.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the analysis that you\'re deleting.
+    analysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forceDeleteWithoutRecovery', 'deleteAnalysis_forceDeleteWithoutRecovery' - This option defaults to the value @NoForceDeleteWithoutRecovery@. To
+-- immediately delete the analysis, add the @ForceDeleteWithoutRecovery@
+-- option. You can\'t restore an analysis after it\'s deleted.
+--
+-- 'recoveryWindowInDays', 'deleteAnalysis_recoveryWindowInDays' - A value that specifies the number of days that Amazon QuickSight waits
+-- before it deletes the analysis. You can\'t use this parameter with the
+-- @ForceDeleteWithoutRecovery@ option in the same API call. The default
+-- value is 30.
+--
+-- 'awsAccountId', 'deleteAnalysis_awsAccountId' - The ID of the Amazon Web Services account where you want to delete an
+-- analysis.
+--
+-- 'analysisId', 'deleteAnalysis_analysisId' - The ID of the analysis that you\'re deleting.
+newDeleteAnalysis ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  DeleteAnalysis
+newDeleteAnalysis pAwsAccountId_ pAnalysisId_ =
+  DeleteAnalysis'
+    { forceDeleteWithoutRecovery =
+        Prelude.Nothing,
+      recoveryWindowInDays = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      analysisId = pAnalysisId_
+    }
+
+-- | This option defaults to the value @NoForceDeleteWithoutRecovery@. To
+-- immediately delete the analysis, add the @ForceDeleteWithoutRecovery@
+-- option. You can\'t restore an analysis after it\'s deleted.
+deleteAnalysis_forceDeleteWithoutRecovery :: Lens.Lens' DeleteAnalysis (Prelude.Maybe Prelude.Bool)
+deleteAnalysis_forceDeleteWithoutRecovery = Lens.lens (\DeleteAnalysis' {forceDeleteWithoutRecovery} -> forceDeleteWithoutRecovery) (\s@DeleteAnalysis' {} a -> s {forceDeleteWithoutRecovery = a} :: DeleteAnalysis)
+
+-- | A value that specifies the number of days that Amazon QuickSight waits
+-- before it deletes the analysis. You can\'t use this parameter with the
+-- @ForceDeleteWithoutRecovery@ option in the same API call. The default
+-- value is 30.
+deleteAnalysis_recoveryWindowInDays :: Lens.Lens' DeleteAnalysis (Prelude.Maybe Prelude.Natural)
+deleteAnalysis_recoveryWindowInDays = Lens.lens (\DeleteAnalysis' {recoveryWindowInDays} -> recoveryWindowInDays) (\s@DeleteAnalysis' {} a -> s {recoveryWindowInDays = a} :: DeleteAnalysis)
+
+-- | The ID of the Amazon Web Services account where you want to delete an
+-- analysis.
+deleteAnalysis_awsAccountId :: Lens.Lens' DeleteAnalysis Prelude.Text
+deleteAnalysis_awsAccountId = Lens.lens (\DeleteAnalysis' {awsAccountId} -> awsAccountId) (\s@DeleteAnalysis' {} a -> s {awsAccountId = a} :: DeleteAnalysis)
+
+-- | The ID of the analysis that you\'re deleting.
+deleteAnalysis_analysisId :: Lens.Lens' DeleteAnalysis Prelude.Text
+deleteAnalysis_analysisId = Lens.lens (\DeleteAnalysis' {analysisId} -> analysisId) (\s@DeleteAnalysis' {} a -> s {analysisId = a} :: DeleteAnalysis)
+
+instance Core.AWSRequest DeleteAnalysis where
+  type
+    AWSResponse DeleteAnalysis =
+      DeleteAnalysisResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteAnalysisResponse'
+            Prelude.<$> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DeletionTime")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAnalysis where
+  hashWithSalt _salt DeleteAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` forceDeleteWithoutRecovery
+      `Prelude.hashWithSalt` recoveryWindowInDays
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+
+instance Prelude.NFData DeleteAnalysis where
+  rnf DeleteAnalysis' {..} =
+    Prelude.rnf forceDeleteWithoutRecovery
+      `Prelude.seq` Prelude.rnf recoveryWindowInDays
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+
+instance Data.ToHeaders DeleteAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteAnalysis where
+  toPath DeleteAnalysis' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId
+      ]
+
+instance Data.ToQuery DeleteAnalysis where
+  toQuery DeleteAnalysis' {..} =
+    Prelude.mconcat
+      [ "force-delete-without-recovery"
+          Data.=: forceDeleteWithoutRecovery,
+        "recovery-window-in-days"
+          Data.=: recoveryWindowInDays
+      ]
+
+-- | /See:/ 'newDeleteAnalysisResponse' smart constructor.
+data DeleteAnalysisResponse = DeleteAnalysisResponse'
+  { -- | The ID of the deleted analysis.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the deleted analysis.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the analysis is scheduled to be deleted.
+    deletionTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'deleteAnalysisResponse_analysisId' - The ID of the deleted analysis.
+--
+-- 'arn', 'deleteAnalysisResponse_arn' - The Amazon Resource Name (ARN) of the deleted analysis.
+--
+-- 'deletionTime', 'deleteAnalysisResponse_deletionTime' - The date and time that the analysis is scheduled to be deleted.
+--
+-- 'requestId', 'deleteAnalysisResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteAnalysisResponse_status' - The HTTP status of the request.
+newDeleteAnalysisResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteAnalysisResponse
+newDeleteAnalysisResponse pStatus_ =
+  DeleteAnalysisResponse'
+    { analysisId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      deletionTime = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the deleted analysis.
+deleteAnalysisResponse_analysisId :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.Text)
+deleteAnalysisResponse_analysisId = Lens.lens (\DeleteAnalysisResponse' {analysisId} -> analysisId) (\s@DeleteAnalysisResponse' {} a -> s {analysisId = a} :: DeleteAnalysisResponse)
+
+-- | The Amazon Resource Name (ARN) of the deleted analysis.
+deleteAnalysisResponse_arn :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.Text)
+deleteAnalysisResponse_arn = Lens.lens (\DeleteAnalysisResponse' {arn} -> arn) (\s@DeleteAnalysisResponse' {} a -> s {arn = a} :: DeleteAnalysisResponse)
+
+-- | The date and time that the analysis is scheduled to be deleted.
+deleteAnalysisResponse_deletionTime :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.UTCTime)
+deleteAnalysisResponse_deletionTime = Lens.lens (\DeleteAnalysisResponse' {deletionTime} -> deletionTime) (\s@DeleteAnalysisResponse' {} a -> s {deletionTime = a} :: DeleteAnalysisResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Web Services request ID for this operation.
+deleteAnalysisResponse_requestId :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.Text)
+deleteAnalysisResponse_requestId = Lens.lens (\DeleteAnalysisResponse' {requestId} -> requestId) (\s@DeleteAnalysisResponse' {} a -> s {requestId = a} :: DeleteAnalysisResponse)
+
+-- | The HTTP status of the request.
+deleteAnalysisResponse_status :: Lens.Lens' DeleteAnalysisResponse Prelude.Int
+deleteAnalysisResponse_status = Lens.lens (\DeleteAnalysisResponse' {status} -> status) (\s@DeleteAnalysisResponse' {} a -> s {status = a} :: DeleteAnalysisResponse)
+
+instance Prelude.NFData DeleteAnalysisResponse where
+  rnf DeleteAnalysisResponse' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf deletionTime
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteDashboard.hs b/gen/Amazonka/QuickSight/DeleteDashboard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteDashboard.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.QuickSight.DeleteDashboard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a dashboard.
+module Amazonka.QuickSight.DeleteDashboard
+  ( -- * Creating a Request
+    DeleteDashboard (..),
+    newDeleteDashboard,
+
+    -- * Request Lenses
+    deleteDashboard_versionNumber,
+    deleteDashboard_awsAccountId,
+    deleteDashboard_dashboardId,
+
+    -- * Destructuring the Response
+    DeleteDashboardResponse (..),
+    newDeleteDashboardResponse,
+
+    -- * Response Lenses
+    deleteDashboardResponse_arn,
+    deleteDashboardResponse_dashboardId,
+    deleteDashboardResponse_requestId,
+    deleteDashboardResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteDashboard' smart constructor.
+data DeleteDashboard = DeleteDashboard'
+  { -- | The version number of the dashboard. If the version number property is
+    -- provided, only the specified version of the dashboard is deleted.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re deleting.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDashboard' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'versionNumber', 'deleteDashboard_versionNumber' - The version number of the dashboard. If the version number property is
+-- provided, only the specified version of the dashboard is deleted.
+--
+-- 'awsAccountId', 'deleteDashboard_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re deleting.
+--
+-- 'dashboardId', 'deleteDashboard_dashboardId' - The ID for the dashboard.
+newDeleteDashboard ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  DeleteDashboard
+newDeleteDashboard pAwsAccountId_ pDashboardId_ =
+  DeleteDashboard'
+    { versionNumber = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      dashboardId = pDashboardId_
+    }
+
+-- | The version number of the dashboard. If the version number property is
+-- provided, only the specified version of the dashboard is deleted.
+deleteDashboard_versionNumber :: Lens.Lens' DeleteDashboard (Prelude.Maybe Prelude.Natural)
+deleteDashboard_versionNumber = Lens.lens (\DeleteDashboard' {versionNumber} -> versionNumber) (\s@DeleteDashboard' {} a -> s {versionNumber = a} :: DeleteDashboard)
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re deleting.
+deleteDashboard_awsAccountId :: Lens.Lens' DeleteDashboard Prelude.Text
+deleteDashboard_awsAccountId = Lens.lens (\DeleteDashboard' {awsAccountId} -> awsAccountId) (\s@DeleteDashboard' {} a -> s {awsAccountId = a} :: DeleteDashboard)
+
+-- | The ID for the dashboard.
+deleteDashboard_dashboardId :: Lens.Lens' DeleteDashboard Prelude.Text
+deleteDashboard_dashboardId = Lens.lens (\DeleteDashboard' {dashboardId} -> dashboardId) (\s@DeleteDashboard' {} a -> s {dashboardId = a} :: DeleteDashboard)
+
+instance Core.AWSRequest DeleteDashboard where
+  type
+    AWSResponse DeleteDashboard =
+      DeleteDashboardResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteDashboardResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDashboard where
+  hashWithSalt _salt DeleteDashboard' {..} =
+    _salt
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+
+instance Prelude.NFData DeleteDashboard where
+  rnf DeleteDashboard' {..} =
+    Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+
+instance Data.ToHeaders DeleteDashboard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteDashboard where
+  toPath DeleteDashboard' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId
+      ]
+
+instance Data.ToQuery DeleteDashboard where
+  toQuery DeleteDashboard' {..} =
+    Prelude.mconcat
+      ["version-number" Data.=: versionNumber]
+
+-- | /See:/ 'newDeleteDashboardResponse' smart constructor.
+data DeleteDashboardResponse = DeleteDashboardResponse'
+  { -- | The Secure Socket Layer (SSL) properties that apply for the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the dashboard.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDashboardResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteDashboardResponse_arn' - The Secure Socket Layer (SSL) properties that apply for the resource.
+--
+-- 'dashboardId', 'deleteDashboardResponse_dashboardId' - The ID of the dashboard.
+--
+-- 'requestId', 'deleteDashboardResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteDashboardResponse_status' - The HTTP status of the request.
+newDeleteDashboardResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteDashboardResponse
+newDeleteDashboardResponse pStatus_ =
+  DeleteDashboardResponse'
+    { arn = Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Secure Socket Layer (SSL) properties that apply for the resource.
+deleteDashboardResponse_arn :: Lens.Lens' DeleteDashboardResponse (Prelude.Maybe Prelude.Text)
+deleteDashboardResponse_arn = Lens.lens (\DeleteDashboardResponse' {arn} -> arn) (\s@DeleteDashboardResponse' {} a -> s {arn = a} :: DeleteDashboardResponse)
+
+-- | The ID of the dashboard.
+deleteDashboardResponse_dashboardId :: Lens.Lens' DeleteDashboardResponse (Prelude.Maybe Prelude.Text)
+deleteDashboardResponse_dashboardId = Lens.lens (\DeleteDashboardResponse' {dashboardId} -> dashboardId) (\s@DeleteDashboardResponse' {} a -> s {dashboardId = a} :: DeleteDashboardResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteDashboardResponse_requestId :: Lens.Lens' DeleteDashboardResponse (Prelude.Maybe Prelude.Text)
+deleteDashboardResponse_requestId = Lens.lens (\DeleteDashboardResponse' {requestId} -> requestId) (\s@DeleteDashboardResponse' {} a -> s {requestId = a} :: DeleteDashboardResponse)
+
+-- | The HTTP status of the request.
+deleteDashboardResponse_status :: Lens.Lens' DeleteDashboardResponse Prelude.Int
+deleteDashboardResponse_status = Lens.lens (\DeleteDashboardResponse' {status} -> status) (\s@DeleteDashboardResponse' {} a -> s {status = a} :: DeleteDashboardResponse)
+
+instance Prelude.NFData DeleteDashboardResponse where
+  rnf DeleteDashboardResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteDataSet.hs b/gen/Amazonka/QuickSight/DeleteDataSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteDataSet.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteDataSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a dataset.
+module Amazonka.QuickSight.DeleteDataSet
+  ( -- * Creating a Request
+    DeleteDataSet (..),
+    newDeleteDataSet,
+
+    -- * Request Lenses
+    deleteDataSet_awsAccountId,
+    deleteDataSet_dataSetId,
+
+    -- * Destructuring the Response
+    DeleteDataSetResponse (..),
+    newDeleteDataSetResponse,
+
+    -- * Response Lenses
+    deleteDataSetResponse_arn,
+    deleteDataSetResponse_dataSetId,
+    deleteDataSetResponse_requestId,
+    deleteDataSetResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteDataSet' smart constructor.
+data DeleteDataSet = DeleteDataSet'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteDataSet_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'deleteDataSet_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+newDeleteDataSet ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  DeleteDataSet
+newDeleteDataSet pAwsAccountId_ pDataSetId_ =
+  DeleteDataSet'
+    { awsAccountId = pAwsAccountId_,
+      dataSetId = pDataSetId_
+    }
+
+-- | The Amazon Web Services account ID.
+deleteDataSet_awsAccountId :: Lens.Lens' DeleteDataSet Prelude.Text
+deleteDataSet_awsAccountId = Lens.lens (\DeleteDataSet' {awsAccountId} -> awsAccountId) (\s@DeleteDataSet' {} a -> s {awsAccountId = a} :: DeleteDataSet)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+deleteDataSet_dataSetId :: Lens.Lens' DeleteDataSet Prelude.Text
+deleteDataSet_dataSetId = Lens.lens (\DeleteDataSet' {dataSetId} -> dataSetId) (\s@DeleteDataSet' {} a -> s {dataSetId = a} :: DeleteDataSet)
+
+instance Core.AWSRequest DeleteDataSet where
+  type
+    AWSResponse DeleteDataSet =
+      DeleteDataSetResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteDataSetResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DataSetId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDataSet where
+  hashWithSalt _salt DeleteDataSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+
+instance Prelude.NFData DeleteDataSet where
+  rnf DeleteDataSet' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+
+instance Data.ToHeaders DeleteDataSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteDataSet where
+  toPath DeleteDataSet' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId
+      ]
+
+instance Data.ToQuery DeleteDataSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDataSetResponse' smart constructor.
+data DeleteDataSetResponse = DeleteDataSetResponse'
+  { -- | The Amazon Resource Name (ARN) of the dataset.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteDataSetResponse_arn' - The Amazon Resource Name (ARN) of the dataset.
+--
+-- 'dataSetId', 'deleteDataSetResponse_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+--
+-- 'requestId', 'deleteDataSetResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteDataSetResponse_status' - The HTTP status of the request.
+newDeleteDataSetResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteDataSetResponse
+newDeleteDataSetResponse pStatus_ =
+  DeleteDataSetResponse'
+    { arn = Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset.
+deleteDataSetResponse_arn :: Lens.Lens' DeleteDataSetResponse (Prelude.Maybe Prelude.Text)
+deleteDataSetResponse_arn = Lens.lens (\DeleteDataSetResponse' {arn} -> arn) (\s@DeleteDataSetResponse' {} a -> s {arn = a} :: DeleteDataSetResponse)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+deleteDataSetResponse_dataSetId :: Lens.Lens' DeleteDataSetResponse (Prelude.Maybe Prelude.Text)
+deleteDataSetResponse_dataSetId = Lens.lens (\DeleteDataSetResponse' {dataSetId} -> dataSetId) (\s@DeleteDataSetResponse' {} a -> s {dataSetId = a} :: DeleteDataSetResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteDataSetResponse_requestId :: Lens.Lens' DeleteDataSetResponse (Prelude.Maybe Prelude.Text)
+deleteDataSetResponse_requestId = Lens.lens (\DeleteDataSetResponse' {requestId} -> requestId) (\s@DeleteDataSetResponse' {} a -> s {requestId = a} :: DeleteDataSetResponse)
+
+-- | The HTTP status of the request.
+deleteDataSetResponse_status :: Lens.Lens' DeleteDataSetResponse Prelude.Int
+deleteDataSetResponse_status = Lens.lens (\DeleteDataSetResponse' {status} -> status) (\s@DeleteDataSetResponse' {} a -> s {status = a} :: DeleteDataSetResponse)
+
+instance Prelude.NFData DeleteDataSetResponse where
+  rnf DeleteDataSetResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteDataSource.hs b/gen/Amazonka/QuickSight/DeleteDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteDataSource.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the data source permanently. This operation breaks all the
+-- datasets that reference the deleted data source.
+module Amazonka.QuickSight.DeleteDataSource
+  ( -- * Creating a Request
+    DeleteDataSource (..),
+    newDeleteDataSource,
+
+    -- * Request Lenses
+    deleteDataSource_awsAccountId,
+    deleteDataSource_dataSourceId,
+
+    -- * Destructuring the Response
+    DeleteDataSourceResponse (..),
+    newDeleteDataSourceResponse,
+
+    -- * Response Lenses
+    deleteDataSourceResponse_arn,
+    deleteDataSourceResponse_dataSourceId,
+    deleteDataSourceResponse_requestId,
+    deleteDataSourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteDataSource' smart constructor.
+data DeleteDataSource = DeleteDataSource'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteDataSource_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSourceId', 'deleteDataSource_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+newDeleteDataSource ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSourceId'
+  Prelude.Text ->
+  DeleteDataSource
+newDeleteDataSource pAwsAccountId_ pDataSourceId_ =
+  DeleteDataSource'
+    { awsAccountId = pAwsAccountId_,
+      dataSourceId = pDataSourceId_
+    }
+
+-- | The Amazon Web Services account ID.
+deleteDataSource_awsAccountId :: Lens.Lens' DeleteDataSource Prelude.Text
+deleteDataSource_awsAccountId = Lens.lens (\DeleteDataSource' {awsAccountId} -> awsAccountId) (\s@DeleteDataSource' {} a -> s {awsAccountId = a} :: DeleteDataSource)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+deleteDataSource_dataSourceId :: Lens.Lens' DeleteDataSource Prelude.Text
+deleteDataSource_dataSourceId = Lens.lens (\DeleteDataSource' {dataSourceId} -> dataSourceId) (\s@DeleteDataSource' {} a -> s {dataSourceId = a} :: DeleteDataSource)
+
+instance Core.AWSRequest DeleteDataSource where
+  type
+    AWSResponse DeleteDataSource =
+      DeleteDataSourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteDataSourceResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DataSourceId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDataSource where
+  hashWithSalt _salt DeleteDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSourceId
+
+instance Prelude.NFData DeleteDataSource where
+  rnf DeleteDataSource' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSourceId
+
+instance Data.ToHeaders DeleteDataSource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteDataSource where
+  toPath DeleteDataSource' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources/",
+        Data.toBS dataSourceId
+      ]
+
+instance Data.ToQuery DeleteDataSource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDataSourceResponse' smart constructor.
+data DeleteDataSourceResponse = DeleteDataSourceResponse'
+  { -- | The Amazon Resource Name (ARN) of the data source that you deleted.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteDataSourceResponse_arn' - The Amazon Resource Name (ARN) of the data source that you deleted.
+--
+-- 'dataSourceId', 'deleteDataSourceResponse_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'requestId', 'deleteDataSourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteDataSourceResponse_status' - The HTTP status of the request.
+newDeleteDataSourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteDataSourceResponse
+newDeleteDataSourceResponse pStatus_ =
+  DeleteDataSourceResponse'
+    { arn = Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the data source that you deleted.
+deleteDataSourceResponse_arn :: Lens.Lens' DeleteDataSourceResponse (Prelude.Maybe Prelude.Text)
+deleteDataSourceResponse_arn = Lens.lens (\DeleteDataSourceResponse' {arn} -> arn) (\s@DeleteDataSourceResponse' {} a -> s {arn = a} :: DeleteDataSourceResponse)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+deleteDataSourceResponse_dataSourceId :: Lens.Lens' DeleteDataSourceResponse (Prelude.Maybe Prelude.Text)
+deleteDataSourceResponse_dataSourceId = Lens.lens (\DeleteDataSourceResponse' {dataSourceId} -> dataSourceId) (\s@DeleteDataSourceResponse' {} a -> s {dataSourceId = a} :: DeleteDataSourceResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteDataSourceResponse_requestId :: Lens.Lens' DeleteDataSourceResponse (Prelude.Maybe Prelude.Text)
+deleteDataSourceResponse_requestId = Lens.lens (\DeleteDataSourceResponse' {requestId} -> requestId) (\s@DeleteDataSourceResponse' {} a -> s {requestId = a} :: DeleteDataSourceResponse)
+
+-- | The HTTP status of the request.
+deleteDataSourceResponse_status :: Lens.Lens' DeleteDataSourceResponse Prelude.Int
+deleteDataSourceResponse_status = Lens.lens (\DeleteDataSourceResponse' {status} -> status) (\s@DeleteDataSourceResponse' {} a -> s {status = a} :: DeleteDataSourceResponse)
+
+instance Prelude.NFData DeleteDataSourceResponse where
+  rnf DeleteDataSourceResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteFolder.hs b/gen/Amazonka/QuickSight/DeleteFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteFolder.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an empty folder.
+module Amazonka.QuickSight.DeleteFolder
+  ( -- * Creating a Request
+    DeleteFolder (..),
+    newDeleteFolder,
+
+    -- * Request Lenses
+    deleteFolder_awsAccountId,
+    deleteFolder_folderId,
+
+    -- * Destructuring the Response
+    DeleteFolderResponse (..),
+    newDeleteFolderResponse,
+
+    -- * Response Lenses
+    deleteFolderResponse_arn,
+    deleteFolderResponse_folderId,
+    deleteFolderResponse_requestId,
+    deleteFolderResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteFolder' smart constructor.
+data DeleteFolder = DeleteFolder'
+  { -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteFolder_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'deleteFolder_folderId' - The ID of the folder.
+newDeleteFolder ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  DeleteFolder
+newDeleteFolder pAwsAccountId_ pFolderId_ =
+  DeleteFolder'
+    { awsAccountId = pAwsAccountId_,
+      folderId = pFolderId_
+    }
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+deleteFolder_awsAccountId :: Lens.Lens' DeleteFolder Prelude.Text
+deleteFolder_awsAccountId = Lens.lens (\DeleteFolder' {awsAccountId} -> awsAccountId) (\s@DeleteFolder' {} a -> s {awsAccountId = a} :: DeleteFolder)
+
+-- | The ID of the folder.
+deleteFolder_folderId :: Lens.Lens' DeleteFolder Prelude.Text
+deleteFolder_folderId = Lens.lens (\DeleteFolder' {folderId} -> folderId) (\s@DeleteFolder' {} a -> s {folderId = a} :: DeleteFolder)
+
+instance Core.AWSRequest DeleteFolder where
+  type AWSResponse DeleteFolder = DeleteFolderResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteFolderResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "FolderId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteFolder where
+  hashWithSalt _salt DeleteFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData DeleteFolder where
+  rnf DeleteFolder' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders DeleteFolder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteFolder where
+  toPath DeleteFolder' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId
+      ]
+
+instance Data.ToQuery DeleteFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFolderResponse' smart constructor.
+data DeleteFolderResponse = DeleteFolderResponse'
+  { -- | The Amazon Resource Name of the deleted folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteFolderResponse_arn' - The Amazon Resource Name of the deleted folder.
+--
+-- 'folderId', 'deleteFolderResponse_folderId' - The ID of the folder.
+--
+-- 'requestId', 'deleteFolderResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteFolderResponse_status' - The HTTP status of the request.
+newDeleteFolderResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteFolderResponse
+newDeleteFolderResponse pStatus_ =
+  DeleteFolderResponse'
+    { arn = Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name of the deleted folder.
+deleteFolderResponse_arn :: Lens.Lens' DeleteFolderResponse (Prelude.Maybe Prelude.Text)
+deleteFolderResponse_arn = Lens.lens (\DeleteFolderResponse' {arn} -> arn) (\s@DeleteFolderResponse' {} a -> s {arn = a} :: DeleteFolderResponse)
+
+-- | The ID of the folder.
+deleteFolderResponse_folderId :: Lens.Lens' DeleteFolderResponse (Prelude.Maybe Prelude.Text)
+deleteFolderResponse_folderId = Lens.lens (\DeleteFolderResponse' {folderId} -> folderId) (\s@DeleteFolderResponse' {} a -> s {folderId = a} :: DeleteFolderResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteFolderResponse_requestId :: Lens.Lens' DeleteFolderResponse (Prelude.Maybe Prelude.Text)
+deleteFolderResponse_requestId = Lens.lens (\DeleteFolderResponse' {requestId} -> requestId) (\s@DeleteFolderResponse' {} a -> s {requestId = a} :: DeleteFolderResponse)
+
+-- | The HTTP status of the request.
+deleteFolderResponse_status :: Lens.Lens' DeleteFolderResponse Prelude.Int
+deleteFolderResponse_status = Lens.lens (\DeleteFolderResponse' {status} -> status) (\s@DeleteFolderResponse' {} a -> s {status = a} :: DeleteFolderResponse)
+
+instance Prelude.NFData DeleteFolderResponse where
+  rnf DeleteFolderResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteFolderMembership.hs b/gen/Amazonka/QuickSight/DeleteFolderMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteFolderMembership.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.QuickSight.DeleteFolderMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes an asset, such as a dashboard, analysis, or dataset, from a
+-- folder.
+module Amazonka.QuickSight.DeleteFolderMembership
+  ( -- * Creating a Request
+    DeleteFolderMembership (..),
+    newDeleteFolderMembership,
+
+    -- * Request Lenses
+    deleteFolderMembership_awsAccountId,
+    deleteFolderMembership_folderId,
+    deleteFolderMembership_memberId,
+    deleteFolderMembership_memberType,
+
+    -- * Destructuring the Response
+    DeleteFolderMembershipResponse (..),
+    newDeleteFolderMembershipResponse,
+
+    -- * Response Lenses
+    deleteFolderMembershipResponse_requestId,
+    deleteFolderMembershipResponse_status,
+    deleteFolderMembershipResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteFolderMembership' smart constructor.
+data DeleteFolderMembership = DeleteFolderMembership'
+  { -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The Folder ID.
+    folderId :: Prelude.Text,
+    -- | The ID of the asset (the dashboard, analysis, or dataset) that you want
+    -- to delete.
+    memberId :: Prelude.Text,
+    -- | The type of the member, including @DASHBOARD@, @ANALYSIS@, and @DATASET@
+    memberType :: MemberType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolderMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteFolderMembership_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'deleteFolderMembership_folderId' - The Folder ID.
+--
+-- 'memberId', 'deleteFolderMembership_memberId' - The ID of the asset (the dashboard, analysis, or dataset) that you want
+-- to delete.
+--
+-- 'memberType', 'deleteFolderMembership_memberType' - The type of the member, including @DASHBOARD@, @ANALYSIS@, and @DATASET@
+newDeleteFolderMembership ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  -- | 'memberId'
+  Prelude.Text ->
+  -- | 'memberType'
+  MemberType ->
+  DeleteFolderMembership
+newDeleteFolderMembership
+  pAwsAccountId_
+  pFolderId_
+  pMemberId_
+  pMemberType_ =
+    DeleteFolderMembership'
+      { awsAccountId =
+          pAwsAccountId_,
+        folderId = pFolderId_,
+        memberId = pMemberId_,
+        memberType = pMemberType_
+      }
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+deleteFolderMembership_awsAccountId :: Lens.Lens' DeleteFolderMembership Prelude.Text
+deleteFolderMembership_awsAccountId = Lens.lens (\DeleteFolderMembership' {awsAccountId} -> awsAccountId) (\s@DeleteFolderMembership' {} a -> s {awsAccountId = a} :: DeleteFolderMembership)
+
+-- | The Folder ID.
+deleteFolderMembership_folderId :: Lens.Lens' DeleteFolderMembership Prelude.Text
+deleteFolderMembership_folderId = Lens.lens (\DeleteFolderMembership' {folderId} -> folderId) (\s@DeleteFolderMembership' {} a -> s {folderId = a} :: DeleteFolderMembership)
+
+-- | The ID of the asset (the dashboard, analysis, or dataset) that you want
+-- to delete.
+deleteFolderMembership_memberId :: Lens.Lens' DeleteFolderMembership Prelude.Text
+deleteFolderMembership_memberId = Lens.lens (\DeleteFolderMembership' {memberId} -> memberId) (\s@DeleteFolderMembership' {} a -> s {memberId = a} :: DeleteFolderMembership)
+
+-- | The type of the member, including @DASHBOARD@, @ANALYSIS@, and @DATASET@
+deleteFolderMembership_memberType :: Lens.Lens' DeleteFolderMembership MemberType
+deleteFolderMembership_memberType = Lens.lens (\DeleteFolderMembership' {memberType} -> memberType) (\s@DeleteFolderMembership' {} a -> s {memberType = a} :: DeleteFolderMembership)
+
+instance Core.AWSRequest DeleteFolderMembership where
+  type
+    AWSResponse DeleteFolderMembership =
+      DeleteFolderMembershipResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteFolderMembershipResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteFolderMembership where
+  hashWithSalt _salt DeleteFolderMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+      `Prelude.hashWithSalt` memberId
+      `Prelude.hashWithSalt` memberType
+
+instance Prelude.NFData DeleteFolderMembership where
+  rnf DeleteFolderMembership' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf memberId
+      `Prelude.seq` Prelude.rnf memberType
+
+instance Data.ToHeaders DeleteFolderMembership where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteFolderMembership where
+  toPath DeleteFolderMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId,
+        "/members/",
+        Data.toBS memberType,
+        "/",
+        Data.toBS memberId
+      ]
+
+instance Data.ToQuery DeleteFolderMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFolderMembershipResponse' smart constructor.
+data DeleteFolderMembershipResponse = DeleteFolderMembershipResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe Prelude.Int,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolderMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteFolderMembershipResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteFolderMembershipResponse_status' - The HTTP status of the request.
+--
+-- 'httpStatus', 'deleteFolderMembershipResponse_httpStatus' - The response's http status code.
+newDeleteFolderMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteFolderMembershipResponse
+newDeleteFolderMembershipResponse pHttpStatus_ =
+  DeleteFolderMembershipResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteFolderMembershipResponse_requestId :: Lens.Lens' DeleteFolderMembershipResponse (Prelude.Maybe Prelude.Text)
+deleteFolderMembershipResponse_requestId = Lens.lens (\DeleteFolderMembershipResponse' {requestId} -> requestId) (\s@DeleteFolderMembershipResponse' {} a -> s {requestId = a} :: DeleteFolderMembershipResponse)
+
+-- | The HTTP status of the request.
+deleteFolderMembershipResponse_status :: Lens.Lens' DeleteFolderMembershipResponse (Prelude.Maybe Prelude.Int)
+deleteFolderMembershipResponse_status = Lens.lens (\DeleteFolderMembershipResponse' {status} -> status) (\s@DeleteFolderMembershipResponse' {} a -> s {status = a} :: DeleteFolderMembershipResponse)
+
+-- | The response's http status code.
+deleteFolderMembershipResponse_httpStatus :: Lens.Lens' DeleteFolderMembershipResponse Prelude.Int
+deleteFolderMembershipResponse_httpStatus = Lens.lens (\DeleteFolderMembershipResponse' {httpStatus} -> httpStatus) (\s@DeleteFolderMembershipResponse' {} a -> s {httpStatus = a} :: DeleteFolderMembershipResponse)
+
+instance
+  Prelude.NFData
+    DeleteFolderMembershipResponse
+  where
+  rnf DeleteFolderMembershipResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/QuickSight/DeleteGroup.hs b/gen/Amazonka/QuickSight/DeleteGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteGroup.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a user group from Amazon QuickSight.
+module Amazonka.QuickSight.DeleteGroup
+  ( -- * Creating a Request
+    DeleteGroup (..),
+    newDeleteGroup,
+
+    -- * Request Lenses
+    deleteGroup_groupName,
+    deleteGroup_awsAccountId,
+    deleteGroup_namespace,
+
+    -- * Destructuring the Response
+    DeleteGroupResponse (..),
+    newDeleteGroupResponse,
+
+    -- * Response Lenses
+    deleteGroupResponse_requestId,
+    deleteGroupResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteGroup' smart constructor.
+data DeleteGroup = DeleteGroup'
+  { -- | The name of the group that you want to delete.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace of the group that you want to delete.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupName', 'deleteGroup_groupName' - The name of the group that you want to delete.
+--
+-- 'awsAccountId', 'deleteGroup_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'deleteGroup_namespace' - The namespace of the group that you want to delete.
+newDeleteGroup ::
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DeleteGroup
+newDeleteGroup pGroupName_ pAwsAccountId_ pNamespace_ =
+  DeleteGroup'
+    { groupName = pGroupName_,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The name of the group that you want to delete.
+deleteGroup_groupName :: Lens.Lens' DeleteGroup Prelude.Text
+deleteGroup_groupName = Lens.lens (\DeleteGroup' {groupName} -> groupName) (\s@DeleteGroup' {} a -> s {groupName = a} :: DeleteGroup)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+deleteGroup_awsAccountId :: Lens.Lens' DeleteGroup Prelude.Text
+deleteGroup_awsAccountId = Lens.lens (\DeleteGroup' {awsAccountId} -> awsAccountId) (\s@DeleteGroup' {} a -> s {awsAccountId = a} :: DeleteGroup)
+
+-- | The namespace of the group that you want to delete.
+deleteGroup_namespace :: Lens.Lens' DeleteGroup Prelude.Text
+deleteGroup_namespace = Lens.lens (\DeleteGroup' {namespace} -> namespace) (\s@DeleteGroup' {} a -> s {namespace = a} :: DeleteGroup)
+
+instance Core.AWSRequest DeleteGroup where
+  type AWSResponse DeleteGroup = DeleteGroupResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteGroupResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteGroup where
+  hashWithSalt _salt DeleteGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DeleteGroup where
+  rnf DeleteGroup' {..} =
+    Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DeleteGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteGroup where
+  toPath DeleteGroup' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName
+      ]
+
+instance Data.ToQuery DeleteGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteGroupResponse' smart constructor.
+data DeleteGroupResponse = DeleteGroupResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteGroupResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteGroupResponse_status' - The HTTP status of the request.
+newDeleteGroupResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteGroupResponse
+newDeleteGroupResponse pStatus_ =
+  DeleteGroupResponse'
+    { requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteGroupResponse_requestId :: Lens.Lens' DeleteGroupResponse (Prelude.Maybe Prelude.Text)
+deleteGroupResponse_requestId = Lens.lens (\DeleteGroupResponse' {requestId} -> requestId) (\s@DeleteGroupResponse' {} a -> s {requestId = a} :: DeleteGroupResponse)
+
+-- | The HTTP status of the request.
+deleteGroupResponse_status :: Lens.Lens' DeleteGroupResponse Prelude.Int
+deleteGroupResponse_status = Lens.lens (\DeleteGroupResponse' {status} -> status) (\s@DeleteGroupResponse' {} a -> s {status = a} :: DeleteGroupResponse)
+
+instance Prelude.NFData DeleteGroupResponse where
+  rnf DeleteGroupResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteGroupMembership.hs b/gen/Amazonka/QuickSight/DeleteGroupMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteGroupMembership.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.QuickSight.DeleteGroupMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a user from a group so that the user is no longer a member of
+-- the group.
+module Amazonka.QuickSight.DeleteGroupMembership
+  ( -- * Creating a Request
+    DeleteGroupMembership (..),
+    newDeleteGroupMembership,
+
+    -- * Request Lenses
+    deleteGroupMembership_memberName,
+    deleteGroupMembership_groupName,
+    deleteGroupMembership_awsAccountId,
+    deleteGroupMembership_namespace,
+
+    -- * Destructuring the Response
+    DeleteGroupMembershipResponse (..),
+    newDeleteGroupMembershipResponse,
+
+    -- * Response Lenses
+    deleteGroupMembershipResponse_requestId,
+    deleteGroupMembershipResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteGroupMembership' smart constructor.
+data DeleteGroupMembership = DeleteGroupMembership'
+  { -- | The name of the user that you want to delete from the group membership.
+    memberName :: Prelude.Text,
+    -- | The name of the group that you want to delete the user from.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace of the group that you want to remove a user from.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGroupMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'memberName', 'deleteGroupMembership_memberName' - The name of the user that you want to delete from the group membership.
+--
+-- 'groupName', 'deleteGroupMembership_groupName' - The name of the group that you want to delete the user from.
+--
+-- 'awsAccountId', 'deleteGroupMembership_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'deleteGroupMembership_namespace' - The namespace of the group that you want to remove a user from.
+newDeleteGroupMembership ::
+  -- | 'memberName'
+  Prelude.Text ->
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DeleteGroupMembership
+newDeleteGroupMembership
+  pMemberName_
+  pGroupName_
+  pAwsAccountId_
+  pNamespace_ =
+    DeleteGroupMembership'
+      { memberName = pMemberName_,
+        groupName = pGroupName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The name of the user that you want to delete from the group membership.
+deleteGroupMembership_memberName :: Lens.Lens' DeleteGroupMembership Prelude.Text
+deleteGroupMembership_memberName = Lens.lens (\DeleteGroupMembership' {memberName} -> memberName) (\s@DeleteGroupMembership' {} a -> s {memberName = a} :: DeleteGroupMembership)
+
+-- | The name of the group that you want to delete the user from.
+deleteGroupMembership_groupName :: Lens.Lens' DeleteGroupMembership Prelude.Text
+deleteGroupMembership_groupName = Lens.lens (\DeleteGroupMembership' {groupName} -> groupName) (\s@DeleteGroupMembership' {} a -> s {groupName = a} :: DeleteGroupMembership)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+deleteGroupMembership_awsAccountId :: Lens.Lens' DeleteGroupMembership Prelude.Text
+deleteGroupMembership_awsAccountId = Lens.lens (\DeleteGroupMembership' {awsAccountId} -> awsAccountId) (\s@DeleteGroupMembership' {} a -> s {awsAccountId = a} :: DeleteGroupMembership)
+
+-- | The namespace of the group that you want to remove a user from.
+deleteGroupMembership_namespace :: Lens.Lens' DeleteGroupMembership Prelude.Text
+deleteGroupMembership_namespace = Lens.lens (\DeleteGroupMembership' {namespace} -> namespace) (\s@DeleteGroupMembership' {} a -> s {namespace = a} :: DeleteGroupMembership)
+
+instance Core.AWSRequest DeleteGroupMembership where
+  type
+    AWSResponse DeleteGroupMembership =
+      DeleteGroupMembershipResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteGroupMembershipResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteGroupMembership where
+  hashWithSalt _salt DeleteGroupMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` memberName
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DeleteGroupMembership where
+  rnf DeleteGroupMembership' {..} =
+    Prelude.rnf memberName
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DeleteGroupMembership where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteGroupMembership where
+  toPath DeleteGroupMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName,
+        "/members/",
+        Data.toBS memberName
+      ]
+
+instance Data.ToQuery DeleteGroupMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteGroupMembershipResponse' smart constructor.
+data DeleteGroupMembershipResponse = DeleteGroupMembershipResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGroupMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteGroupMembershipResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteGroupMembershipResponse_status' - The HTTP status of the request.
+newDeleteGroupMembershipResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteGroupMembershipResponse
+newDeleteGroupMembershipResponse pStatus_ =
+  DeleteGroupMembershipResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteGroupMembershipResponse_requestId :: Lens.Lens' DeleteGroupMembershipResponse (Prelude.Maybe Prelude.Text)
+deleteGroupMembershipResponse_requestId = Lens.lens (\DeleteGroupMembershipResponse' {requestId} -> requestId) (\s@DeleteGroupMembershipResponse' {} a -> s {requestId = a} :: DeleteGroupMembershipResponse)
+
+-- | The HTTP status of the request.
+deleteGroupMembershipResponse_status :: Lens.Lens' DeleteGroupMembershipResponse Prelude.Int
+deleteGroupMembershipResponse_status = Lens.lens (\DeleteGroupMembershipResponse' {status} -> status) (\s@DeleteGroupMembershipResponse' {} a -> s {status = a} :: DeleteGroupMembershipResponse)
+
+instance Prelude.NFData DeleteGroupMembershipResponse where
+  rnf DeleteGroupMembershipResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteIAMPolicyAssignment.hs b/gen/Amazonka/QuickSight/DeleteIAMPolicyAssignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteIAMPolicyAssignment.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.QuickSight.DeleteIAMPolicyAssignment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing IAM policy assignment.
+module Amazonka.QuickSight.DeleteIAMPolicyAssignment
+  ( -- * Creating a Request
+    DeleteIAMPolicyAssignment (..),
+    newDeleteIAMPolicyAssignment,
+
+    -- * Request Lenses
+    deleteIAMPolicyAssignment_awsAccountId,
+    deleteIAMPolicyAssignment_assignmentName,
+    deleteIAMPolicyAssignment_namespace,
+
+    -- * Destructuring the Response
+    DeleteIAMPolicyAssignmentResponse (..),
+    newDeleteIAMPolicyAssignmentResponse,
+
+    -- * Response Lenses
+    deleteIAMPolicyAssignmentResponse_assignmentName,
+    deleteIAMPolicyAssignmentResponse_requestId,
+    deleteIAMPolicyAssignmentResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteIAMPolicyAssignment' smart constructor.
+data DeleteIAMPolicyAssignment = DeleteIAMPolicyAssignment'
+  { -- | The Amazon Web Services account ID where you want to delete the IAM
+    -- policy assignment.
+    awsAccountId :: Prelude.Text,
+    -- | The name of the assignment.
+    assignmentName :: Prelude.Text,
+    -- | The namespace that contains the assignment.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIAMPolicyAssignment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteIAMPolicyAssignment_awsAccountId' - The Amazon Web Services account ID where you want to delete the IAM
+-- policy assignment.
+--
+-- 'assignmentName', 'deleteIAMPolicyAssignment_assignmentName' - The name of the assignment.
+--
+-- 'namespace', 'deleteIAMPolicyAssignment_namespace' - The namespace that contains the assignment.
+newDeleteIAMPolicyAssignment ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'assignmentName'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DeleteIAMPolicyAssignment
+newDeleteIAMPolicyAssignment
+  pAwsAccountId_
+  pAssignmentName_
+  pNamespace_ =
+    DeleteIAMPolicyAssignment'
+      { awsAccountId =
+          pAwsAccountId_,
+        assignmentName = pAssignmentName_,
+        namespace = pNamespace_
+      }
+
+-- | The Amazon Web Services account ID where you want to delete the IAM
+-- policy assignment.
+deleteIAMPolicyAssignment_awsAccountId :: Lens.Lens' DeleteIAMPolicyAssignment Prelude.Text
+deleteIAMPolicyAssignment_awsAccountId = Lens.lens (\DeleteIAMPolicyAssignment' {awsAccountId} -> awsAccountId) (\s@DeleteIAMPolicyAssignment' {} a -> s {awsAccountId = a} :: DeleteIAMPolicyAssignment)
+
+-- | The name of the assignment.
+deleteIAMPolicyAssignment_assignmentName :: Lens.Lens' DeleteIAMPolicyAssignment Prelude.Text
+deleteIAMPolicyAssignment_assignmentName = Lens.lens (\DeleteIAMPolicyAssignment' {assignmentName} -> assignmentName) (\s@DeleteIAMPolicyAssignment' {} a -> s {assignmentName = a} :: DeleteIAMPolicyAssignment)
+
+-- | The namespace that contains the assignment.
+deleteIAMPolicyAssignment_namespace :: Lens.Lens' DeleteIAMPolicyAssignment Prelude.Text
+deleteIAMPolicyAssignment_namespace = Lens.lens (\DeleteIAMPolicyAssignment' {namespace} -> namespace) (\s@DeleteIAMPolicyAssignment' {} a -> s {namespace = a} :: DeleteIAMPolicyAssignment)
+
+instance Core.AWSRequest DeleteIAMPolicyAssignment where
+  type
+    AWSResponse DeleteIAMPolicyAssignment =
+      DeleteIAMPolicyAssignmentResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteIAMPolicyAssignmentResponse'
+            Prelude.<$> (x Data..?> "AssignmentName")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteIAMPolicyAssignment where
+  hashWithSalt _salt DeleteIAMPolicyAssignment' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DeleteIAMPolicyAssignment where
+  rnf DeleteIAMPolicyAssignment' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DeleteIAMPolicyAssignment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteIAMPolicyAssignment where
+  toPath DeleteIAMPolicyAssignment' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespace/",
+        Data.toBS namespace,
+        "/iam-policy-assignments/",
+        Data.toBS assignmentName
+      ]
+
+instance Data.ToQuery DeleteIAMPolicyAssignment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteIAMPolicyAssignmentResponse' smart constructor.
+data DeleteIAMPolicyAssignmentResponse = DeleteIAMPolicyAssignmentResponse'
+  { -- | The name of the assignment.
+    assignmentName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIAMPolicyAssignmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentName', 'deleteIAMPolicyAssignmentResponse_assignmentName' - The name of the assignment.
+--
+-- 'requestId', 'deleteIAMPolicyAssignmentResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteIAMPolicyAssignmentResponse_status' - The HTTP status of the request.
+newDeleteIAMPolicyAssignmentResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteIAMPolicyAssignmentResponse
+newDeleteIAMPolicyAssignmentResponse pStatus_ =
+  DeleteIAMPolicyAssignmentResponse'
+    { assignmentName =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The name of the assignment.
+deleteIAMPolicyAssignmentResponse_assignmentName :: Lens.Lens' DeleteIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+deleteIAMPolicyAssignmentResponse_assignmentName = Lens.lens (\DeleteIAMPolicyAssignmentResponse' {assignmentName} -> assignmentName) (\s@DeleteIAMPolicyAssignmentResponse' {} a -> s {assignmentName = a} :: DeleteIAMPolicyAssignmentResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteIAMPolicyAssignmentResponse_requestId :: Lens.Lens' DeleteIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+deleteIAMPolicyAssignmentResponse_requestId = Lens.lens (\DeleteIAMPolicyAssignmentResponse' {requestId} -> requestId) (\s@DeleteIAMPolicyAssignmentResponse' {} a -> s {requestId = a} :: DeleteIAMPolicyAssignmentResponse)
+
+-- | The HTTP status of the request.
+deleteIAMPolicyAssignmentResponse_status :: Lens.Lens' DeleteIAMPolicyAssignmentResponse Prelude.Int
+deleteIAMPolicyAssignmentResponse_status = Lens.lens (\DeleteIAMPolicyAssignmentResponse' {status} -> status) (\s@DeleteIAMPolicyAssignmentResponse' {} a -> s {status = a} :: DeleteIAMPolicyAssignmentResponse)
+
+instance
+  Prelude.NFData
+    DeleteIAMPolicyAssignmentResponse
+  where
+  rnf DeleteIAMPolicyAssignmentResponse' {..} =
+    Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteNamespace.hs b/gen/Amazonka/QuickSight/DeleteNamespace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteNamespace.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.QuickSight.DeleteNamespace
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a namespace and the users and groups that are associated with
+-- the namespace. This is an asynchronous process. Assets including
+-- dashboards, analyses, datasets and data sources are not deleted. To
+-- delete these assets, you use the API operations for the relevant asset.
+module Amazonka.QuickSight.DeleteNamespace
+  ( -- * Creating a Request
+    DeleteNamespace (..),
+    newDeleteNamespace,
+
+    -- * Request Lenses
+    deleteNamespace_awsAccountId,
+    deleteNamespace_namespace,
+
+    -- * Destructuring the Response
+    DeleteNamespaceResponse (..),
+    newDeleteNamespaceResponse,
+
+    -- * Response Lenses
+    deleteNamespaceResponse_requestId,
+    deleteNamespaceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteNamespace' smart constructor.
+data DeleteNamespace = DeleteNamespace'
+  { -- | The ID for the Amazon Web Services account that you want to delete the
+    -- Amazon QuickSight namespace from.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that you want to delete.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNamespace' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteNamespace_awsAccountId' - The ID for the Amazon Web Services account that you want to delete the
+-- Amazon QuickSight namespace from.
+--
+-- 'namespace', 'deleteNamespace_namespace' - The namespace that you want to delete.
+newDeleteNamespace ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DeleteNamespace
+newDeleteNamespace pAwsAccountId_ pNamespace_ =
+  DeleteNamespace'
+    { awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The ID for the Amazon Web Services account that you want to delete the
+-- Amazon QuickSight namespace from.
+deleteNamespace_awsAccountId :: Lens.Lens' DeleteNamespace Prelude.Text
+deleteNamespace_awsAccountId = Lens.lens (\DeleteNamespace' {awsAccountId} -> awsAccountId) (\s@DeleteNamespace' {} a -> s {awsAccountId = a} :: DeleteNamespace)
+
+-- | The namespace that you want to delete.
+deleteNamespace_namespace :: Lens.Lens' DeleteNamespace Prelude.Text
+deleteNamespace_namespace = Lens.lens (\DeleteNamespace' {namespace} -> namespace) (\s@DeleteNamespace' {} a -> s {namespace = a} :: DeleteNamespace)
+
+instance Core.AWSRequest DeleteNamespace where
+  type
+    AWSResponse DeleteNamespace =
+      DeleteNamespaceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteNamespaceResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteNamespace where
+  hashWithSalt _salt DeleteNamespace' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DeleteNamespace where
+  rnf DeleteNamespace' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DeleteNamespace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteNamespace where
+  toPath DeleteNamespace' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace
+      ]
+
+instance Data.ToQuery DeleteNamespace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteNamespaceResponse' smart constructor.
+data DeleteNamespaceResponse = DeleteNamespaceResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNamespaceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteNamespaceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteNamespaceResponse_status' - The HTTP status of the request.
+newDeleteNamespaceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteNamespaceResponse
+newDeleteNamespaceResponse pStatus_ =
+  DeleteNamespaceResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteNamespaceResponse_requestId :: Lens.Lens' DeleteNamespaceResponse (Prelude.Maybe Prelude.Text)
+deleteNamespaceResponse_requestId = Lens.lens (\DeleteNamespaceResponse' {requestId} -> requestId) (\s@DeleteNamespaceResponse' {} a -> s {requestId = a} :: DeleteNamespaceResponse)
+
+-- | The HTTP status of the request.
+deleteNamespaceResponse_status :: Lens.Lens' DeleteNamespaceResponse Prelude.Int
+deleteNamespaceResponse_status = Lens.lens (\DeleteNamespaceResponse' {status} -> status) (\s@DeleteNamespaceResponse' {} a -> s {status = a} :: DeleteNamespaceResponse)
+
+instance Prelude.NFData DeleteNamespaceResponse where
+  rnf DeleteNamespaceResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteTemplate.hs b/gen/Amazonka/QuickSight/DeleteTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteTemplate.hs
@@ -0,0 +1,227 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a template.
+module Amazonka.QuickSight.DeleteTemplate
+  ( -- * Creating a Request
+    DeleteTemplate (..),
+    newDeleteTemplate,
+
+    -- * Request Lenses
+    deleteTemplate_versionNumber,
+    deleteTemplate_awsAccountId,
+    deleteTemplate_templateId,
+
+    -- * Destructuring the Response
+    DeleteTemplateResponse (..),
+    newDeleteTemplateResponse,
+
+    -- * Response Lenses
+    deleteTemplateResponse_arn,
+    deleteTemplateResponse_requestId,
+    deleteTemplateResponse_templateId,
+    deleteTemplateResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteTemplate' smart constructor.
+data DeleteTemplate = DeleteTemplate'
+  { -- | Specifies the version of the template that you want to delete. If you
+    -- don\'t provide a version number, @DeleteTemplate@ deletes all versions
+    -- of the template.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the template
+    -- that you\'re deleting.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the template you want to delete.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'versionNumber', 'deleteTemplate_versionNumber' - Specifies the version of the template that you want to delete. If you
+-- don\'t provide a version number, @DeleteTemplate@ deletes all versions
+-- of the template.
+--
+-- 'awsAccountId', 'deleteTemplate_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- that you\'re deleting.
+--
+-- 'templateId', 'deleteTemplate_templateId' - An ID for the template you want to delete.
+newDeleteTemplate ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  DeleteTemplate
+newDeleteTemplate pAwsAccountId_ pTemplateId_ =
+  DeleteTemplate'
+    { versionNumber = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      templateId = pTemplateId_
+    }
+
+-- | Specifies the version of the template that you want to delete. If you
+-- don\'t provide a version number, @DeleteTemplate@ deletes all versions
+-- of the template.
+deleteTemplate_versionNumber :: Lens.Lens' DeleteTemplate (Prelude.Maybe Prelude.Natural)
+deleteTemplate_versionNumber = Lens.lens (\DeleteTemplate' {versionNumber} -> versionNumber) (\s@DeleteTemplate' {} a -> s {versionNumber = a} :: DeleteTemplate)
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- that you\'re deleting.
+deleteTemplate_awsAccountId :: Lens.Lens' DeleteTemplate Prelude.Text
+deleteTemplate_awsAccountId = Lens.lens (\DeleteTemplate' {awsAccountId} -> awsAccountId) (\s@DeleteTemplate' {} a -> s {awsAccountId = a} :: DeleteTemplate)
+
+-- | An ID for the template you want to delete.
+deleteTemplate_templateId :: Lens.Lens' DeleteTemplate Prelude.Text
+deleteTemplate_templateId = Lens.lens (\DeleteTemplate' {templateId} -> templateId) (\s@DeleteTemplate' {} a -> s {templateId = a} :: DeleteTemplate)
+
+instance Core.AWSRequest DeleteTemplate where
+  type
+    AWSResponse DeleteTemplate =
+      DeleteTemplateResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteTemplateResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTemplate where
+  hashWithSalt _salt DeleteTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData DeleteTemplate where
+  rnf DeleteTemplate' {..} =
+    Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders DeleteTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteTemplate where
+  toPath DeleteTemplate' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId
+      ]
+
+instance Data.ToQuery DeleteTemplate where
+  toQuery DeleteTemplate' {..} =
+    Prelude.mconcat
+      ["version-number" Data.=: versionNumber]
+
+-- | /See:/ 'newDeleteTemplateResponse' smart constructor.
+data DeleteTemplateResponse = DeleteTemplateResponse'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | An ID for the template.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteTemplateResponse_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'requestId', 'deleteTemplateResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateId', 'deleteTemplateResponse_templateId' - An ID for the template.
+--
+-- 'status', 'deleteTemplateResponse_status' - The HTTP status of the request.
+newDeleteTemplateResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteTemplateResponse
+newDeleteTemplateResponse pStatus_ =
+  DeleteTemplateResponse'
+    { arn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+deleteTemplateResponse_arn :: Lens.Lens' DeleteTemplateResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateResponse_arn = Lens.lens (\DeleteTemplateResponse' {arn} -> arn) (\s@DeleteTemplateResponse' {} a -> s {arn = a} :: DeleteTemplateResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteTemplateResponse_requestId :: Lens.Lens' DeleteTemplateResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateResponse_requestId = Lens.lens (\DeleteTemplateResponse' {requestId} -> requestId) (\s@DeleteTemplateResponse' {} a -> s {requestId = a} :: DeleteTemplateResponse)
+
+-- | An ID for the template.
+deleteTemplateResponse_templateId :: Lens.Lens' DeleteTemplateResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateResponse_templateId = Lens.lens (\DeleteTemplateResponse' {templateId} -> templateId) (\s@DeleteTemplateResponse' {} a -> s {templateId = a} :: DeleteTemplateResponse)
+
+-- | The HTTP status of the request.
+deleteTemplateResponse_status :: Lens.Lens' DeleteTemplateResponse Prelude.Int
+deleteTemplateResponse_status = Lens.lens (\DeleteTemplateResponse' {status} -> status) (\s@DeleteTemplateResponse' {} a -> s {status = a} :: DeleteTemplateResponse)
+
+instance Prelude.NFData DeleteTemplateResponse where
+  rnf DeleteTemplateResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteTemplateAlias.hs b/gen/Amazonka/QuickSight/DeleteTemplateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteTemplateAlias.hs
@@ -0,0 +1,250 @@
+{-# 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.QuickSight.DeleteTemplateAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the item that the specified template alias points to. If you
+-- provide a specific alias, you delete the version of the template that
+-- the alias points to.
+module Amazonka.QuickSight.DeleteTemplateAlias
+  ( -- * Creating a Request
+    DeleteTemplateAlias (..),
+    newDeleteTemplateAlias,
+
+    -- * Request Lenses
+    deleteTemplateAlias_awsAccountId,
+    deleteTemplateAlias_templateId,
+    deleteTemplateAlias_aliasName,
+
+    -- * Destructuring the Response
+    DeleteTemplateAliasResponse (..),
+    newDeleteTemplateAliasResponse,
+
+    -- * Response Lenses
+    deleteTemplateAliasResponse_aliasName,
+    deleteTemplateAliasResponse_arn,
+    deleteTemplateAliasResponse_requestId,
+    deleteTemplateAliasResponse_templateId,
+    deleteTemplateAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteTemplateAlias' smart constructor.
+data DeleteTemplateAlias = DeleteTemplateAlias'
+  { -- | The ID of the Amazon Web Services account that contains the item to
+    -- delete.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template that the specified alias is for.
+    templateId :: Prelude.Text,
+    -- | The name for the template alias. To delete a specific alias, you delete
+    -- the version that the alias points to. You can specify the alias name, or
+    -- specify the latest version of the template by providing the keyword
+    -- @$LATEST@ in the @AliasName@ parameter.
+    aliasName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTemplateAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteTemplateAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the item to
+-- delete.
+--
+-- 'templateId', 'deleteTemplateAlias_templateId' - The ID for the template that the specified alias is for.
+--
+-- 'aliasName', 'deleteTemplateAlias_aliasName' - The name for the template alias. To delete a specific alias, you delete
+-- the version that the alias points to. You can specify the alias name, or
+-- specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter.
+newDeleteTemplateAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  DeleteTemplateAlias
+newDeleteTemplateAlias
+  pAwsAccountId_
+  pTemplateId_
+  pAliasName_ =
+    DeleteTemplateAlias'
+      { awsAccountId = pAwsAccountId_,
+        templateId = pTemplateId_,
+        aliasName = pAliasName_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the item to
+-- delete.
+deleteTemplateAlias_awsAccountId :: Lens.Lens' DeleteTemplateAlias Prelude.Text
+deleteTemplateAlias_awsAccountId = Lens.lens (\DeleteTemplateAlias' {awsAccountId} -> awsAccountId) (\s@DeleteTemplateAlias' {} a -> s {awsAccountId = a} :: DeleteTemplateAlias)
+
+-- | The ID for the template that the specified alias is for.
+deleteTemplateAlias_templateId :: Lens.Lens' DeleteTemplateAlias Prelude.Text
+deleteTemplateAlias_templateId = Lens.lens (\DeleteTemplateAlias' {templateId} -> templateId) (\s@DeleteTemplateAlias' {} a -> s {templateId = a} :: DeleteTemplateAlias)
+
+-- | The name for the template alias. To delete a specific alias, you delete
+-- the version that the alias points to. You can specify the alias name, or
+-- specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter.
+deleteTemplateAlias_aliasName :: Lens.Lens' DeleteTemplateAlias Prelude.Text
+deleteTemplateAlias_aliasName = Lens.lens (\DeleteTemplateAlias' {aliasName} -> aliasName) (\s@DeleteTemplateAlias' {} a -> s {aliasName = a} :: DeleteTemplateAlias)
+
+instance Core.AWSRequest DeleteTemplateAlias where
+  type
+    AWSResponse DeleteTemplateAlias =
+      DeleteTemplateAliasResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteTemplateAliasResponse'
+            Prelude.<$> (x Data..?> "AliasName")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTemplateAlias where
+  hashWithSalt _salt DeleteTemplateAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+      `Prelude.hashWithSalt` aliasName
+
+instance Prelude.NFData DeleteTemplateAlias where
+  rnf DeleteTemplateAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf aliasName
+
+instance Data.ToHeaders DeleteTemplateAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteTemplateAlias where
+  toPath DeleteTemplateAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery DeleteTemplateAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTemplateAliasResponse' smart constructor.
+data DeleteTemplateAliasResponse = DeleteTemplateAliasResponse'
+  { -- | The name for the template alias.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the template you want to delete.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | An ID for the template associated with the deletion.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTemplateAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'deleteTemplateAliasResponse_aliasName' - The name for the template alias.
+--
+-- 'arn', 'deleteTemplateAliasResponse_arn' - The Amazon Resource Name (ARN) of the template you want to delete.
+--
+-- 'requestId', 'deleteTemplateAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateId', 'deleteTemplateAliasResponse_templateId' - An ID for the template associated with the deletion.
+--
+-- 'status', 'deleteTemplateAliasResponse_status' - The HTTP status of the request.
+newDeleteTemplateAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteTemplateAliasResponse
+newDeleteTemplateAliasResponse pStatus_ =
+  DeleteTemplateAliasResponse'
+    { aliasName =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The name for the template alias.
+deleteTemplateAliasResponse_aliasName :: Lens.Lens' DeleteTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateAliasResponse_aliasName = Lens.lens (\DeleteTemplateAliasResponse' {aliasName} -> aliasName) (\s@DeleteTemplateAliasResponse' {} a -> s {aliasName = a} :: DeleteTemplateAliasResponse)
+
+-- | The Amazon Resource Name (ARN) of the template you want to delete.
+deleteTemplateAliasResponse_arn :: Lens.Lens' DeleteTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateAliasResponse_arn = Lens.lens (\DeleteTemplateAliasResponse' {arn} -> arn) (\s@DeleteTemplateAliasResponse' {} a -> s {arn = a} :: DeleteTemplateAliasResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteTemplateAliasResponse_requestId :: Lens.Lens' DeleteTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateAliasResponse_requestId = Lens.lens (\DeleteTemplateAliasResponse' {requestId} -> requestId) (\s@DeleteTemplateAliasResponse' {} a -> s {requestId = a} :: DeleteTemplateAliasResponse)
+
+-- | An ID for the template associated with the deletion.
+deleteTemplateAliasResponse_templateId :: Lens.Lens' DeleteTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+deleteTemplateAliasResponse_templateId = Lens.lens (\DeleteTemplateAliasResponse' {templateId} -> templateId) (\s@DeleteTemplateAliasResponse' {} a -> s {templateId = a} :: DeleteTemplateAliasResponse)
+
+-- | The HTTP status of the request.
+deleteTemplateAliasResponse_status :: Lens.Lens' DeleteTemplateAliasResponse Prelude.Int
+deleteTemplateAliasResponse_status = Lens.lens (\DeleteTemplateAliasResponse' {status} -> status) (\s@DeleteTemplateAliasResponse' {} a -> s {status = a} :: DeleteTemplateAliasResponse)
+
+instance Prelude.NFData DeleteTemplateAliasResponse where
+  rnf DeleteTemplateAliasResponse' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteTheme.hs b/gen/Amazonka/QuickSight/DeleteTheme.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteTheme.hs
@@ -0,0 +1,228 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteTheme
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a theme.
+module Amazonka.QuickSight.DeleteTheme
+  ( -- * Creating a Request
+    DeleteTheme (..),
+    newDeleteTheme,
+
+    -- * Request Lenses
+    deleteTheme_versionNumber,
+    deleteTheme_awsAccountId,
+    deleteTheme_themeId,
+
+    -- * Destructuring the Response
+    DeleteThemeResponse (..),
+    newDeleteThemeResponse,
+
+    -- * Response Lenses
+    deleteThemeResponse_arn,
+    deleteThemeResponse_requestId,
+    deleteThemeResponse_themeId,
+    deleteThemeResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteTheme' smart constructor.
+data DeleteTheme = DeleteTheme'
+  { -- | The version of the theme that you want to delete.
+    --
+    -- __Note:__ If you don\'t provide a version number, you\'re using this
+    -- call to @DeleteTheme@ to delete all versions of the theme.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the theme that
+    -- you\'re deleting.
+    awsAccountId :: Prelude.Text,
+    -- | An ID for the theme that you want to delete.
+    themeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTheme' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'versionNumber', 'deleteTheme_versionNumber' - The version of the theme that you want to delete.
+--
+-- __Note:__ If you don\'t provide a version number, you\'re using this
+-- call to @DeleteTheme@ to delete all versions of the theme.
+--
+-- 'awsAccountId', 'deleteTheme_awsAccountId' - The ID of the Amazon Web Services account that contains the theme that
+-- you\'re deleting.
+--
+-- 'themeId', 'deleteTheme_themeId' - An ID for the theme that you want to delete.
+newDeleteTheme ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  DeleteTheme
+newDeleteTheme pAwsAccountId_ pThemeId_ =
+  DeleteTheme'
+    { versionNumber = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      themeId = pThemeId_
+    }
+
+-- | The version of the theme that you want to delete.
+--
+-- __Note:__ If you don\'t provide a version number, you\'re using this
+-- call to @DeleteTheme@ to delete all versions of the theme.
+deleteTheme_versionNumber :: Lens.Lens' DeleteTheme (Prelude.Maybe Prelude.Natural)
+deleteTheme_versionNumber = Lens.lens (\DeleteTheme' {versionNumber} -> versionNumber) (\s@DeleteTheme' {} a -> s {versionNumber = a} :: DeleteTheme)
+
+-- | The ID of the Amazon Web Services account that contains the theme that
+-- you\'re deleting.
+deleteTheme_awsAccountId :: Lens.Lens' DeleteTheme Prelude.Text
+deleteTheme_awsAccountId = Lens.lens (\DeleteTheme' {awsAccountId} -> awsAccountId) (\s@DeleteTheme' {} a -> s {awsAccountId = a} :: DeleteTheme)
+
+-- | An ID for the theme that you want to delete.
+deleteTheme_themeId :: Lens.Lens' DeleteTheme Prelude.Text
+deleteTheme_themeId = Lens.lens (\DeleteTheme' {themeId} -> themeId) (\s@DeleteTheme' {} a -> s {themeId = a} :: DeleteTheme)
+
+instance Core.AWSRequest DeleteTheme where
+  type AWSResponse DeleteTheme = DeleteThemeResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteThemeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTheme where
+  hashWithSalt _salt DeleteTheme' {..} =
+    _salt
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData DeleteTheme where
+  rnf DeleteTheme' {..} =
+    Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+
+instance Data.ToHeaders DeleteTheme where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteTheme where
+  toPath DeleteTheme' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId
+      ]
+
+instance Data.ToQuery DeleteTheme where
+  toQuery DeleteTheme' {..} =
+    Prelude.mconcat
+      ["version-number" Data.=: versionNumber]
+
+-- | /See:/ 'newDeleteThemeResponse' smart constructor.
+data DeleteThemeResponse = DeleteThemeResponse'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | An ID for the theme.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteThemeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteThemeResponse_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'requestId', 'deleteThemeResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeId', 'deleteThemeResponse_themeId' - An ID for the theme.
+--
+-- 'status', 'deleteThemeResponse_status' - The HTTP status of the request.
+newDeleteThemeResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteThemeResponse
+newDeleteThemeResponse pStatus_ =
+  DeleteThemeResponse'
+    { arn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+deleteThemeResponse_arn :: Lens.Lens' DeleteThemeResponse (Prelude.Maybe Prelude.Text)
+deleteThemeResponse_arn = Lens.lens (\DeleteThemeResponse' {arn} -> arn) (\s@DeleteThemeResponse' {} a -> s {arn = a} :: DeleteThemeResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteThemeResponse_requestId :: Lens.Lens' DeleteThemeResponse (Prelude.Maybe Prelude.Text)
+deleteThemeResponse_requestId = Lens.lens (\DeleteThemeResponse' {requestId} -> requestId) (\s@DeleteThemeResponse' {} a -> s {requestId = a} :: DeleteThemeResponse)
+
+-- | An ID for the theme.
+deleteThemeResponse_themeId :: Lens.Lens' DeleteThemeResponse (Prelude.Maybe Prelude.Text)
+deleteThemeResponse_themeId = Lens.lens (\DeleteThemeResponse' {themeId} -> themeId) (\s@DeleteThemeResponse' {} a -> s {themeId = a} :: DeleteThemeResponse)
+
+-- | The HTTP status of the request.
+deleteThemeResponse_status :: Lens.Lens' DeleteThemeResponse Prelude.Int
+deleteThemeResponse_status = Lens.lens (\DeleteThemeResponse' {status} -> status) (\s@DeleteThemeResponse' {} a -> s {status = a} :: DeleteThemeResponse)
+
+instance Prelude.NFData DeleteThemeResponse where
+  rnf DeleteThemeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteThemeAlias.hs b/gen/Amazonka/QuickSight/DeleteThemeAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteThemeAlias.hs
@@ -0,0 +1,244 @@
+{-# 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.QuickSight.DeleteThemeAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the version of the theme that the specified theme alias points
+-- to. If you provide a specific alias, you delete the version of the theme
+-- that the alias points to.
+module Amazonka.QuickSight.DeleteThemeAlias
+  ( -- * Creating a Request
+    DeleteThemeAlias (..),
+    newDeleteThemeAlias,
+
+    -- * Request Lenses
+    deleteThemeAlias_awsAccountId,
+    deleteThemeAlias_themeId,
+    deleteThemeAlias_aliasName,
+
+    -- * Destructuring the Response
+    DeleteThemeAliasResponse (..),
+    newDeleteThemeAliasResponse,
+
+    -- * Response Lenses
+    deleteThemeAliasResponse_aliasName,
+    deleteThemeAliasResponse_arn,
+    deleteThemeAliasResponse_requestId,
+    deleteThemeAliasResponse_themeId,
+    deleteThemeAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteThemeAlias' smart constructor.
+data DeleteThemeAlias = DeleteThemeAlias'
+  { -- | The ID of the Amazon Web Services account that contains the theme alias
+    -- to delete.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme that the specified alias is for.
+    themeId :: Prelude.Text,
+    -- | The unique name for the theme alias to delete.
+    aliasName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteThemeAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'deleteThemeAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the theme alias
+-- to delete.
+--
+-- 'themeId', 'deleteThemeAlias_themeId' - The ID for the theme that the specified alias is for.
+--
+-- 'aliasName', 'deleteThemeAlias_aliasName' - The unique name for the theme alias to delete.
+newDeleteThemeAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  DeleteThemeAlias
+newDeleteThemeAlias
+  pAwsAccountId_
+  pThemeId_
+  pAliasName_ =
+    DeleteThemeAlias'
+      { awsAccountId = pAwsAccountId_,
+        themeId = pThemeId_,
+        aliasName = pAliasName_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the theme alias
+-- to delete.
+deleteThemeAlias_awsAccountId :: Lens.Lens' DeleteThemeAlias Prelude.Text
+deleteThemeAlias_awsAccountId = Lens.lens (\DeleteThemeAlias' {awsAccountId} -> awsAccountId) (\s@DeleteThemeAlias' {} a -> s {awsAccountId = a} :: DeleteThemeAlias)
+
+-- | The ID for the theme that the specified alias is for.
+deleteThemeAlias_themeId :: Lens.Lens' DeleteThemeAlias Prelude.Text
+deleteThemeAlias_themeId = Lens.lens (\DeleteThemeAlias' {themeId} -> themeId) (\s@DeleteThemeAlias' {} a -> s {themeId = a} :: DeleteThemeAlias)
+
+-- | The unique name for the theme alias to delete.
+deleteThemeAlias_aliasName :: Lens.Lens' DeleteThemeAlias Prelude.Text
+deleteThemeAlias_aliasName = Lens.lens (\DeleteThemeAlias' {aliasName} -> aliasName) (\s@DeleteThemeAlias' {} a -> s {aliasName = a} :: DeleteThemeAlias)
+
+instance Core.AWSRequest DeleteThemeAlias where
+  type
+    AWSResponse DeleteThemeAlias =
+      DeleteThemeAliasResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteThemeAliasResponse'
+            Prelude.<$> (x Data..?> "AliasName")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteThemeAlias where
+  hashWithSalt _salt DeleteThemeAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` aliasName
+
+instance Prelude.NFData DeleteThemeAlias where
+  rnf DeleteThemeAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf aliasName
+
+instance Data.ToHeaders DeleteThemeAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteThemeAlias where
+  toPath DeleteThemeAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery DeleteThemeAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteThemeAliasResponse' smart constructor.
+data DeleteThemeAliasResponse = DeleteThemeAliasResponse'
+  { -- | The name for the theme alias.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the theme resource using the deleted
+    -- alias.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | An ID for the theme associated with the deletion.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteThemeAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'deleteThemeAliasResponse_aliasName' - The name for the theme alias.
+--
+-- 'arn', 'deleteThemeAliasResponse_arn' - The Amazon Resource Name (ARN) of the theme resource using the deleted
+-- alias.
+--
+-- 'requestId', 'deleteThemeAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeId', 'deleteThemeAliasResponse_themeId' - An ID for the theme associated with the deletion.
+--
+-- 'status', 'deleteThemeAliasResponse_status' - The HTTP status of the request.
+newDeleteThemeAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteThemeAliasResponse
+newDeleteThemeAliasResponse pStatus_ =
+  DeleteThemeAliasResponse'
+    { aliasName =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The name for the theme alias.
+deleteThemeAliasResponse_aliasName :: Lens.Lens' DeleteThemeAliasResponse (Prelude.Maybe Prelude.Text)
+deleteThemeAliasResponse_aliasName = Lens.lens (\DeleteThemeAliasResponse' {aliasName} -> aliasName) (\s@DeleteThemeAliasResponse' {} a -> s {aliasName = a} :: DeleteThemeAliasResponse)
+
+-- | The Amazon Resource Name (ARN) of the theme resource using the deleted
+-- alias.
+deleteThemeAliasResponse_arn :: Lens.Lens' DeleteThemeAliasResponse (Prelude.Maybe Prelude.Text)
+deleteThemeAliasResponse_arn = Lens.lens (\DeleteThemeAliasResponse' {arn} -> arn) (\s@DeleteThemeAliasResponse' {} a -> s {arn = a} :: DeleteThemeAliasResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+deleteThemeAliasResponse_requestId :: Lens.Lens' DeleteThemeAliasResponse (Prelude.Maybe Prelude.Text)
+deleteThemeAliasResponse_requestId = Lens.lens (\DeleteThemeAliasResponse' {requestId} -> requestId) (\s@DeleteThemeAliasResponse' {} a -> s {requestId = a} :: DeleteThemeAliasResponse)
+
+-- | An ID for the theme associated with the deletion.
+deleteThemeAliasResponse_themeId :: Lens.Lens' DeleteThemeAliasResponse (Prelude.Maybe Prelude.Text)
+deleteThemeAliasResponse_themeId = Lens.lens (\DeleteThemeAliasResponse' {themeId} -> themeId) (\s@DeleteThemeAliasResponse' {} a -> s {themeId = a} :: DeleteThemeAliasResponse)
+
+-- | The HTTP status of the request.
+deleteThemeAliasResponse_status :: Lens.Lens' DeleteThemeAliasResponse Prelude.Int
+deleteThemeAliasResponse_status = Lens.lens (\DeleteThemeAliasResponse' {status} -> status) (\s@DeleteThemeAliasResponse' {} a -> s {status = a} :: DeleteThemeAliasResponse)
+
+instance Prelude.NFData DeleteThemeAliasResponse where
+  rnf DeleteThemeAliasResponse' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteUser.hs b/gen/Amazonka/QuickSight/DeleteUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteUser.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DeleteUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the Amazon QuickSight user that is associated with the identity
+-- of the Identity and Access Management (IAM) user or role that\'s making
+-- the call. The IAM user isn\'t deleted as a result of this call.
+module Amazonka.QuickSight.DeleteUser
+  ( -- * Creating a Request
+    DeleteUser (..),
+    newDeleteUser,
+
+    -- * Request Lenses
+    deleteUser_userName,
+    deleteUser_awsAccountId,
+    deleteUser_namespace,
+
+    -- * Destructuring the Response
+    DeleteUserResponse (..),
+    newDeleteUserResponse,
+
+    -- * Response Lenses
+    deleteUserResponse_requestId,
+    deleteUserResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteUser' smart constructor.
+data DeleteUser = DeleteUser'
+  { -- | The name of the user that you want to delete.
+    userName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the user is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userName', 'deleteUser_userName' - The name of the user that you want to delete.
+--
+-- 'awsAccountId', 'deleteUser_awsAccountId' - The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'deleteUser_namespace' - The namespace. Currently, you should set this to @default@.
+newDeleteUser ::
+  -- | 'userName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DeleteUser
+newDeleteUser pUserName_ pAwsAccountId_ pNamespace_ =
+  DeleteUser'
+    { userName = pUserName_,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The name of the user that you want to delete.
+deleteUser_userName :: Lens.Lens' DeleteUser Prelude.Text
+deleteUser_userName = Lens.lens (\DeleteUser' {userName} -> userName) (\s@DeleteUser' {} a -> s {userName = a} :: DeleteUser)
+
+-- | The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+deleteUser_awsAccountId :: Lens.Lens' DeleteUser Prelude.Text
+deleteUser_awsAccountId = Lens.lens (\DeleteUser' {awsAccountId} -> awsAccountId) (\s@DeleteUser' {} a -> s {awsAccountId = a} :: DeleteUser)
+
+-- | The namespace. Currently, you should set this to @default@.
+deleteUser_namespace :: Lens.Lens' DeleteUser Prelude.Text
+deleteUser_namespace = Lens.lens (\DeleteUser' {namespace} -> namespace) (\s@DeleteUser' {} a -> s {namespace = a} :: DeleteUser)
+
+instance Core.AWSRequest DeleteUser where
+  type AWSResponse DeleteUser = DeleteUserResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteUserResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteUser where
+  hashWithSalt _salt DeleteUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` userName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DeleteUser where
+  rnf DeleteUser' {..} =
+    Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DeleteUser where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteUser where
+  toPath DeleteUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users/",
+        Data.toBS userName
+      ]
+
+instance Data.ToQuery DeleteUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteUserResponse' smart constructor.
+data DeleteUserResponse = DeleteUserResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteUserResponse_status' - The HTTP status of the request.
+newDeleteUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteUserResponse
+newDeleteUserResponse pStatus_ =
+  DeleteUserResponse'
+    { requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteUserResponse_requestId :: Lens.Lens' DeleteUserResponse (Prelude.Maybe Prelude.Text)
+deleteUserResponse_requestId = Lens.lens (\DeleteUserResponse' {requestId} -> requestId) (\s@DeleteUserResponse' {} a -> s {requestId = a} :: DeleteUserResponse)
+
+-- | The HTTP status of the request.
+deleteUserResponse_status :: Lens.Lens' DeleteUserResponse Prelude.Int
+deleteUserResponse_status = Lens.lens (\DeleteUserResponse' {status} -> status) (\s@DeleteUserResponse' {} a -> s {status = a} :: DeleteUserResponse)
+
+instance Prelude.NFData DeleteUserResponse where
+  rnf DeleteUserResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DeleteUserByPrincipalId.hs b/gen/Amazonka/QuickSight/DeleteUserByPrincipalId.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DeleteUserByPrincipalId.hs
@@ -0,0 +1,212 @@
+{-# 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.QuickSight.DeleteUserByPrincipalId
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a user identified by its principal ID.
+module Amazonka.QuickSight.DeleteUserByPrincipalId
+  ( -- * Creating a Request
+    DeleteUserByPrincipalId (..),
+    newDeleteUserByPrincipalId,
+
+    -- * Request Lenses
+    deleteUserByPrincipalId_principalId,
+    deleteUserByPrincipalId_awsAccountId,
+    deleteUserByPrincipalId_namespace,
+
+    -- * Destructuring the Response
+    DeleteUserByPrincipalIdResponse (..),
+    newDeleteUserByPrincipalIdResponse,
+
+    -- * Response Lenses
+    deleteUserByPrincipalIdResponse_requestId,
+    deleteUserByPrincipalIdResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- |
+--
+-- /See:/ 'newDeleteUserByPrincipalId' smart constructor.
+data DeleteUserByPrincipalId = DeleteUserByPrincipalId'
+  { -- | The principal ID of the user.
+    principalId :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the user is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUserByPrincipalId' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'principalId', 'deleteUserByPrincipalId_principalId' - The principal ID of the user.
+--
+-- 'awsAccountId', 'deleteUserByPrincipalId_awsAccountId' - The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'deleteUserByPrincipalId_namespace' - The namespace. Currently, you should set this to @default@.
+newDeleteUserByPrincipalId ::
+  -- | 'principalId'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DeleteUserByPrincipalId
+newDeleteUserByPrincipalId
+  pPrincipalId_
+  pAwsAccountId_
+  pNamespace_ =
+    DeleteUserByPrincipalId'
+      { principalId =
+          pPrincipalId_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The principal ID of the user.
+deleteUserByPrincipalId_principalId :: Lens.Lens' DeleteUserByPrincipalId Prelude.Text
+deleteUserByPrincipalId_principalId = Lens.lens (\DeleteUserByPrincipalId' {principalId} -> principalId) (\s@DeleteUserByPrincipalId' {} a -> s {principalId = a} :: DeleteUserByPrincipalId)
+
+-- | The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+deleteUserByPrincipalId_awsAccountId :: Lens.Lens' DeleteUserByPrincipalId Prelude.Text
+deleteUserByPrincipalId_awsAccountId = Lens.lens (\DeleteUserByPrincipalId' {awsAccountId} -> awsAccountId) (\s@DeleteUserByPrincipalId' {} a -> s {awsAccountId = a} :: DeleteUserByPrincipalId)
+
+-- | The namespace. Currently, you should set this to @default@.
+deleteUserByPrincipalId_namespace :: Lens.Lens' DeleteUserByPrincipalId Prelude.Text
+deleteUserByPrincipalId_namespace = Lens.lens (\DeleteUserByPrincipalId' {namespace} -> namespace) (\s@DeleteUserByPrincipalId' {} a -> s {namespace = a} :: DeleteUserByPrincipalId)
+
+instance Core.AWSRequest DeleteUserByPrincipalId where
+  type
+    AWSResponse DeleteUserByPrincipalId =
+      DeleteUserByPrincipalIdResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteUserByPrincipalIdResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteUserByPrincipalId where
+  hashWithSalt _salt DeleteUserByPrincipalId' {..} =
+    _salt
+      `Prelude.hashWithSalt` principalId
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DeleteUserByPrincipalId where
+  rnf DeleteUserByPrincipalId' {..} =
+    Prelude.rnf principalId
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DeleteUserByPrincipalId where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteUserByPrincipalId where
+  toPath DeleteUserByPrincipalId' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/user-principals/",
+        Data.toBS principalId
+      ]
+
+instance Data.ToQuery DeleteUserByPrincipalId where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteUserByPrincipalIdResponse' smart constructor.
+data DeleteUserByPrincipalIdResponse = DeleteUserByPrincipalIdResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUserByPrincipalIdResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'deleteUserByPrincipalIdResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'deleteUserByPrincipalIdResponse_status' - The HTTP status of the request.
+newDeleteUserByPrincipalIdResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DeleteUserByPrincipalIdResponse
+newDeleteUserByPrincipalIdResponse pStatus_ =
+  DeleteUserByPrincipalIdResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+deleteUserByPrincipalIdResponse_requestId :: Lens.Lens' DeleteUserByPrincipalIdResponse (Prelude.Maybe Prelude.Text)
+deleteUserByPrincipalIdResponse_requestId = Lens.lens (\DeleteUserByPrincipalIdResponse' {requestId} -> requestId) (\s@DeleteUserByPrincipalIdResponse' {} a -> s {requestId = a} :: DeleteUserByPrincipalIdResponse)
+
+-- | The HTTP status of the request.
+deleteUserByPrincipalIdResponse_status :: Lens.Lens' DeleteUserByPrincipalIdResponse Prelude.Int
+deleteUserByPrincipalIdResponse_status = Lens.lens (\DeleteUserByPrincipalIdResponse' {status} -> status) (\s@DeleteUserByPrincipalIdResponse' {} a -> s {status = a} :: DeleteUserByPrincipalIdResponse)
+
+instance
+  Prelude.NFData
+    DeleteUserByPrincipalIdResponse
+  where
+  rnf DeleteUserByPrincipalIdResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeAccountCustomization.hs b/gen/Amazonka/QuickSight/DescribeAccountCustomization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeAccountCustomization.hs
@@ -0,0 +1,331 @@
+{-# 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.QuickSight.DescribeAccountCustomization
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the customizations associated with the provided Amazon Web
+-- Services account and Amazon Amazon QuickSight namespace in an Amazon Web
+-- Services Region. The Amazon QuickSight console evaluates which
+-- customizations to apply by running this API operation with the
+-- @Resolved@ flag included.
+--
+-- To determine what customizations display when you run this command, it
+-- can help to visualize the relationship of the entities involved.
+--
+-- -   @Amazon Web Services account@ - The Amazon Web Services account
+--     exists at the top of the hierarchy. It has the potential to use all
+--     of the Amazon Web Services Regions and Amazon Web Services Services.
+--     When you subscribe to Amazon QuickSight, you choose one Amazon Web
+--     Services Region to use as your home Region. That\'s where your free
+--     SPICE capacity is located. You can use Amazon QuickSight in any
+--     supported Amazon Web Services Region.
+--
+-- -   @Amazon Web Services Region@ - In each Amazon Web Services Region
+--     where you sign in to Amazon QuickSight at least once, Amazon
+--     QuickSight acts as a separate instance of the same service. If you
+--     have a user directory, it resides in us-east-1, which is the US East
+--     (N. Virginia). Generally speaking, these users have access to Amazon
+--     QuickSight in any Amazon Web Services Region, unless they are
+--     constrained to a namespace.
+--
+--     To run the command in a different Amazon Web Services Region, you
+--     change your Region settings. If you\'re using the CLI, you can use
+--     one of the following options:
+--
+--     -   Use
+--         <https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html command line options>.
+--
+--     -   Use
+--         <https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html named profiles>.
+--
+--     -   Run @aws configure@ to change your default Amazon Web Services
+--         Region. Use Enter to key the same settings for your keys. For
+--         more information, see
+--         <https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html Configuring the CLI>.
+--
+-- -   @Namespace@ - A QuickSight namespace is a partition that contains
+--     users and assets (data sources, datasets, dashboards, and so on). To
+--     access assets that are in a specific namespace, users and groups
+--     must also be part of the same namespace. People who share a
+--     namespace are completely isolated from users and assets in other
+--     namespaces, even if they are in the same Amazon Web Services account
+--     and Amazon Web Services Region.
+--
+-- -   @Applied customizations@ - Within an Amazon Web Services Region, a
+--     set of Amazon QuickSight customizations can apply to an Amazon Web
+--     Services account or to a namespace. Settings that you apply to a
+--     namespace override settings that you apply to an Amazon Web Services
+--     account. All settings are isolated to a single Amazon Web Services
+--     Region. To apply them in other Amazon Web Services Regions, run the
+--     @CreateAccountCustomization@ command in each Amazon Web Services
+--     Region where you want to apply the same customizations.
+module Amazonka.QuickSight.DescribeAccountCustomization
+  ( -- * Creating a Request
+    DescribeAccountCustomization (..),
+    newDescribeAccountCustomization,
+
+    -- * Request Lenses
+    describeAccountCustomization_namespace,
+    describeAccountCustomization_resolved,
+    describeAccountCustomization_awsAccountId,
+
+    -- * Destructuring the Response
+    DescribeAccountCustomizationResponse (..),
+    newDescribeAccountCustomizationResponse,
+
+    -- * Response Lenses
+    describeAccountCustomizationResponse_accountCustomization,
+    describeAccountCustomizationResponse_arn,
+    describeAccountCustomizationResponse_awsAccountId,
+    describeAccountCustomizationResponse_namespace,
+    describeAccountCustomizationResponse_requestId,
+    describeAccountCustomizationResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAccountCustomization' smart constructor.
+data DescribeAccountCustomization = DescribeAccountCustomization'
+  { -- | The Amazon QuickSight namespace that you want to describe Amazon
+    -- QuickSight customizations for.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The @Resolved@ flag works with the other parameters to determine which
+    -- view of Amazon QuickSight customizations is returned. You can add this
+    -- flag to your command to use the same view that Amazon QuickSight uses to
+    -- identify which customizations to apply to the console. Omit this flag,
+    -- or set it to @no-resolved@, to reveal customizations that are configured
+    -- at different levels.
+    resolved :: Prelude.Maybe Prelude.Bool,
+    -- | The ID for the Amazon Web Services account that you want to describe
+    -- Amazon QuickSight customizations for.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAccountCustomization' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'namespace', 'describeAccountCustomization_namespace' - The Amazon QuickSight namespace that you want to describe Amazon
+-- QuickSight customizations for.
+--
+-- 'resolved', 'describeAccountCustomization_resolved' - The @Resolved@ flag works with the other parameters to determine which
+-- view of Amazon QuickSight customizations is returned. You can add this
+-- flag to your command to use the same view that Amazon QuickSight uses to
+-- identify which customizations to apply to the console. Omit this flag,
+-- or set it to @no-resolved@, to reveal customizations that are configured
+-- at different levels.
+--
+-- 'awsAccountId', 'describeAccountCustomization_awsAccountId' - The ID for the Amazon Web Services account that you want to describe
+-- Amazon QuickSight customizations for.
+newDescribeAccountCustomization ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  DescribeAccountCustomization
+newDescribeAccountCustomization pAwsAccountId_ =
+  DescribeAccountCustomization'
+    { namespace =
+        Prelude.Nothing,
+      resolved = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The Amazon QuickSight namespace that you want to describe Amazon
+-- QuickSight customizations for.
+describeAccountCustomization_namespace :: Lens.Lens' DescribeAccountCustomization (Prelude.Maybe Prelude.Text)
+describeAccountCustomization_namespace = Lens.lens (\DescribeAccountCustomization' {namespace} -> namespace) (\s@DescribeAccountCustomization' {} a -> s {namespace = a} :: DescribeAccountCustomization)
+
+-- | The @Resolved@ flag works with the other parameters to determine which
+-- view of Amazon QuickSight customizations is returned. You can add this
+-- flag to your command to use the same view that Amazon QuickSight uses to
+-- identify which customizations to apply to the console. Omit this flag,
+-- or set it to @no-resolved@, to reveal customizations that are configured
+-- at different levels.
+describeAccountCustomization_resolved :: Lens.Lens' DescribeAccountCustomization (Prelude.Maybe Prelude.Bool)
+describeAccountCustomization_resolved = Lens.lens (\DescribeAccountCustomization' {resolved} -> resolved) (\s@DescribeAccountCustomization' {} a -> s {resolved = a} :: DescribeAccountCustomization)
+
+-- | The ID for the Amazon Web Services account that you want to describe
+-- Amazon QuickSight customizations for.
+describeAccountCustomization_awsAccountId :: Lens.Lens' DescribeAccountCustomization Prelude.Text
+describeAccountCustomization_awsAccountId = Lens.lens (\DescribeAccountCustomization' {awsAccountId} -> awsAccountId) (\s@DescribeAccountCustomization' {} a -> s {awsAccountId = a} :: DescribeAccountCustomization)
+
+instance Core.AWSRequest DescribeAccountCustomization where
+  type
+    AWSResponse DescribeAccountCustomization =
+      DescribeAccountCustomizationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAccountCustomizationResponse'
+            Prelude.<$> (x Data..?> "AccountCustomization")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "AwsAccountId")
+            Prelude.<*> (x Data..?> "Namespace")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeAccountCustomization
+  where
+  hashWithSalt _salt DescribeAccountCustomization' {..} =
+    _salt
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` resolved
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData DescribeAccountCustomization where
+  rnf DescribeAccountCustomization' {..} =
+    Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf resolved
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders DescribeAccountCustomization where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeAccountCustomization where
+  toPath DescribeAccountCustomization' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/customizations"
+      ]
+
+instance Data.ToQuery DescribeAccountCustomization where
+  toQuery DescribeAccountCustomization' {..} =
+    Prelude.mconcat
+      [ "namespace" Data.=: namespace,
+        "resolved" Data.=: resolved
+      ]
+
+-- | /See:/ 'newDescribeAccountCustomizationResponse' smart constructor.
+data DescribeAccountCustomizationResponse = DescribeAccountCustomizationResponse'
+  { -- | The Amazon QuickSight customizations that exist in the current Amazon
+    -- Web Services Region.
+    accountCustomization :: Prelude.Maybe AccountCustomization,
+    -- | The Amazon Resource Name (ARN) of the customization that\'s associated
+    -- with this Amazon Web Services account.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that you\'re describing.
+    awsAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon QuickSight namespace that you\'re describing.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAccountCustomizationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountCustomization', 'describeAccountCustomizationResponse_accountCustomization' - The Amazon QuickSight customizations that exist in the current Amazon
+-- Web Services Region.
+--
+-- 'arn', 'describeAccountCustomizationResponse_arn' - The Amazon Resource Name (ARN) of the customization that\'s associated
+-- with this Amazon Web Services account.
+--
+-- 'awsAccountId', 'describeAccountCustomizationResponse_awsAccountId' - The ID for the Amazon Web Services account that you\'re describing.
+--
+-- 'namespace', 'describeAccountCustomizationResponse_namespace' - The Amazon QuickSight namespace that you\'re describing.
+--
+-- 'requestId', 'describeAccountCustomizationResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeAccountCustomizationResponse_status' - The HTTP status of the request.
+newDescribeAccountCustomizationResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeAccountCustomizationResponse
+newDescribeAccountCustomizationResponse pStatus_ =
+  DescribeAccountCustomizationResponse'
+    { accountCustomization =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      awsAccountId = Prelude.Nothing,
+      namespace = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon QuickSight customizations that exist in the current Amazon
+-- Web Services Region.
+describeAccountCustomizationResponse_accountCustomization :: Lens.Lens' DescribeAccountCustomizationResponse (Prelude.Maybe AccountCustomization)
+describeAccountCustomizationResponse_accountCustomization = Lens.lens (\DescribeAccountCustomizationResponse' {accountCustomization} -> accountCustomization) (\s@DescribeAccountCustomizationResponse' {} a -> s {accountCustomization = a} :: DescribeAccountCustomizationResponse)
+
+-- | The Amazon Resource Name (ARN) of the customization that\'s associated
+-- with this Amazon Web Services account.
+describeAccountCustomizationResponse_arn :: Lens.Lens' DescribeAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+describeAccountCustomizationResponse_arn = Lens.lens (\DescribeAccountCustomizationResponse' {arn} -> arn) (\s@DescribeAccountCustomizationResponse' {} a -> s {arn = a} :: DescribeAccountCustomizationResponse)
+
+-- | The ID for the Amazon Web Services account that you\'re describing.
+describeAccountCustomizationResponse_awsAccountId :: Lens.Lens' DescribeAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+describeAccountCustomizationResponse_awsAccountId = Lens.lens (\DescribeAccountCustomizationResponse' {awsAccountId} -> awsAccountId) (\s@DescribeAccountCustomizationResponse' {} a -> s {awsAccountId = a} :: DescribeAccountCustomizationResponse)
+
+-- | The Amazon QuickSight namespace that you\'re describing.
+describeAccountCustomizationResponse_namespace :: Lens.Lens' DescribeAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+describeAccountCustomizationResponse_namespace = Lens.lens (\DescribeAccountCustomizationResponse' {namespace} -> namespace) (\s@DescribeAccountCustomizationResponse' {} a -> s {namespace = a} :: DescribeAccountCustomizationResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeAccountCustomizationResponse_requestId :: Lens.Lens' DescribeAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+describeAccountCustomizationResponse_requestId = Lens.lens (\DescribeAccountCustomizationResponse' {requestId} -> requestId) (\s@DescribeAccountCustomizationResponse' {} a -> s {requestId = a} :: DescribeAccountCustomizationResponse)
+
+-- | The HTTP status of the request.
+describeAccountCustomizationResponse_status :: Lens.Lens' DescribeAccountCustomizationResponse Prelude.Int
+describeAccountCustomizationResponse_status = Lens.lens (\DescribeAccountCustomizationResponse' {status} -> status) (\s@DescribeAccountCustomizationResponse' {} a -> s {status = a} :: DescribeAccountCustomizationResponse)
+
+instance
+  Prelude.NFData
+    DescribeAccountCustomizationResponse
+  where
+  rnf DescribeAccountCustomizationResponse' {..} =
+    Prelude.rnf accountCustomization
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeAccountSettings.hs b/gen/Amazonka/QuickSight/DescribeAccountSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeAccountSettings.hs
@@ -0,0 +1,212 @@
+{-# 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.QuickSight.DescribeAccountSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the settings that were used when your Amazon QuickSight
+-- subscription was first created in this Amazon Web Services account.
+module Amazonka.QuickSight.DescribeAccountSettings
+  ( -- * Creating a Request
+    DescribeAccountSettings (..),
+    newDescribeAccountSettings,
+
+    -- * Request Lenses
+    describeAccountSettings_awsAccountId,
+
+    -- * Destructuring the Response
+    DescribeAccountSettingsResponse (..),
+    newDescribeAccountSettingsResponse,
+
+    -- * Response Lenses
+    describeAccountSettingsResponse_accountSettings,
+    describeAccountSettingsResponse_requestId,
+    describeAccountSettingsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAccountSettings' smart constructor.
+data DescribeAccountSettings = DescribeAccountSettings'
+  { -- | The ID for the Amazon Web Services account that contains the settings
+    -- that you want to list.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAccountSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeAccountSettings_awsAccountId' - The ID for the Amazon Web Services account that contains the settings
+-- that you want to list.
+newDescribeAccountSettings ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  DescribeAccountSettings
+newDescribeAccountSettings pAwsAccountId_ =
+  DescribeAccountSettings'
+    { awsAccountId =
+        pAwsAccountId_
+    }
+
+-- | The ID for the Amazon Web Services account that contains the settings
+-- that you want to list.
+describeAccountSettings_awsAccountId :: Lens.Lens' DescribeAccountSettings Prelude.Text
+describeAccountSettings_awsAccountId = Lens.lens (\DescribeAccountSettings' {awsAccountId} -> awsAccountId) (\s@DescribeAccountSettings' {} a -> s {awsAccountId = a} :: DescribeAccountSettings)
+
+instance Core.AWSRequest DescribeAccountSettings where
+  type
+    AWSResponse DescribeAccountSettings =
+      DescribeAccountSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAccountSettingsResponse'
+            Prelude.<$> (x Data..?> "AccountSettings")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAccountSettings where
+  hashWithSalt _salt DescribeAccountSettings' {..} =
+    _salt `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData DescribeAccountSettings where
+  rnf DescribeAccountSettings' {..} =
+    Prelude.rnf awsAccountId
+
+instance Data.ToHeaders DescribeAccountSettings where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeAccountSettings where
+  toPath DescribeAccountSettings' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/settings"]
+
+instance Data.ToQuery DescribeAccountSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAccountSettingsResponse' smart constructor.
+data DescribeAccountSettingsResponse = DescribeAccountSettingsResponse'
+  { -- | The Amazon QuickSight settings for this Amazon Web Services account.
+    -- This information includes the edition of Amazon Amazon QuickSight that
+    -- you subscribed to (Standard or Enterprise) and the notification email
+    -- for the Amazon QuickSight subscription.
+    --
+    -- In the QuickSight console, the Amazon QuickSight subscription is
+    -- sometimes referred to as a QuickSight \"account\" even though it\'s
+    -- technically not an account by itself. Instead, it\'s a subscription to
+    -- the Amazon QuickSight service for your Amazon Web Services account. The
+    -- edition that you subscribe to applies to Amazon QuickSight in every
+    -- Amazon Web Services Region where you use it.
+    accountSettings :: Prelude.Maybe AccountSettings,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAccountSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountSettings', 'describeAccountSettingsResponse_accountSettings' - The Amazon QuickSight settings for this Amazon Web Services account.
+-- This information includes the edition of Amazon Amazon QuickSight that
+-- you subscribed to (Standard or Enterprise) and the notification email
+-- for the Amazon QuickSight subscription.
+--
+-- In the QuickSight console, the Amazon QuickSight subscription is
+-- sometimes referred to as a QuickSight \"account\" even though it\'s
+-- technically not an account by itself. Instead, it\'s a subscription to
+-- the Amazon QuickSight service for your Amazon Web Services account. The
+-- edition that you subscribe to applies to Amazon QuickSight in every
+-- Amazon Web Services Region where you use it.
+--
+-- 'requestId', 'describeAccountSettingsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeAccountSettingsResponse_status' - The HTTP status of the request.
+newDescribeAccountSettingsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeAccountSettingsResponse
+newDescribeAccountSettingsResponse pStatus_ =
+  DescribeAccountSettingsResponse'
+    { accountSettings =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon QuickSight settings for this Amazon Web Services account.
+-- This information includes the edition of Amazon Amazon QuickSight that
+-- you subscribed to (Standard or Enterprise) and the notification email
+-- for the Amazon QuickSight subscription.
+--
+-- In the QuickSight console, the Amazon QuickSight subscription is
+-- sometimes referred to as a QuickSight \"account\" even though it\'s
+-- technically not an account by itself. Instead, it\'s a subscription to
+-- the Amazon QuickSight service for your Amazon Web Services account. The
+-- edition that you subscribe to applies to Amazon QuickSight in every
+-- Amazon Web Services Region where you use it.
+describeAccountSettingsResponse_accountSettings :: Lens.Lens' DescribeAccountSettingsResponse (Prelude.Maybe AccountSettings)
+describeAccountSettingsResponse_accountSettings = Lens.lens (\DescribeAccountSettingsResponse' {accountSettings} -> accountSettings) (\s@DescribeAccountSettingsResponse' {} a -> s {accountSettings = a} :: DescribeAccountSettingsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeAccountSettingsResponse_requestId :: Lens.Lens' DescribeAccountSettingsResponse (Prelude.Maybe Prelude.Text)
+describeAccountSettingsResponse_requestId = Lens.lens (\DescribeAccountSettingsResponse' {requestId} -> requestId) (\s@DescribeAccountSettingsResponse' {} a -> s {requestId = a} :: DescribeAccountSettingsResponse)
+
+-- | The HTTP status of the request.
+describeAccountSettingsResponse_status :: Lens.Lens' DescribeAccountSettingsResponse Prelude.Int
+describeAccountSettingsResponse_status = Lens.lens (\DescribeAccountSettingsResponse' {status} -> status) (\s@DescribeAccountSettingsResponse' {} a -> s {status = a} :: DescribeAccountSettingsResponse)
+
+instance
+  Prelude.NFData
+    DescribeAccountSettingsResponse
+  where
+  rnf DescribeAccountSettingsResponse' {..} =
+    Prelude.rnf accountSettings
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeAccountSubscription.hs b/gen/Amazonka/QuickSight/DescribeAccountSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeAccountSubscription.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.QuickSight.DescribeAccountSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the DescribeAccountSubscription operation to receive a description
+-- of an Amazon QuickSight account\'s subscription. A successful API call
+-- returns an @AccountInfo@ object that includes an account\'s name,
+-- subscription status, authentication type, edition, and notification
+-- email address.
+module Amazonka.QuickSight.DescribeAccountSubscription
+  ( -- * Creating a Request
+    DescribeAccountSubscription (..),
+    newDescribeAccountSubscription,
+
+    -- * Request Lenses
+    describeAccountSubscription_awsAccountId,
+
+    -- * Destructuring the Response
+    DescribeAccountSubscriptionResponse (..),
+    newDescribeAccountSubscriptionResponse,
+
+    -- * Response Lenses
+    describeAccountSubscriptionResponse_accountInfo,
+    describeAccountSubscriptionResponse_requestId,
+    describeAccountSubscriptionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAccountSubscription' smart constructor.
+data DescribeAccountSubscription = DescribeAccountSubscription'
+  { -- | The Amazon Web Services account ID associated with your Amazon
+    -- QuickSight account.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAccountSubscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeAccountSubscription_awsAccountId' - The Amazon Web Services account ID associated with your Amazon
+-- QuickSight account.
+newDescribeAccountSubscription ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  DescribeAccountSubscription
+newDescribeAccountSubscription pAwsAccountId_ =
+  DescribeAccountSubscription'
+    { awsAccountId =
+        pAwsAccountId_
+    }
+
+-- | The Amazon Web Services account ID associated with your Amazon
+-- QuickSight account.
+describeAccountSubscription_awsAccountId :: Lens.Lens' DescribeAccountSubscription Prelude.Text
+describeAccountSubscription_awsAccountId = Lens.lens (\DescribeAccountSubscription' {awsAccountId} -> awsAccountId) (\s@DescribeAccountSubscription' {} a -> s {awsAccountId = a} :: DescribeAccountSubscription)
+
+instance Core.AWSRequest DescribeAccountSubscription where
+  type
+    AWSResponse DescribeAccountSubscription =
+      DescribeAccountSubscriptionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAccountSubscriptionResponse'
+            Prelude.<$> (x Data..?> "AccountInfo")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAccountSubscription where
+  hashWithSalt _salt DescribeAccountSubscription' {..} =
+    _salt `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData DescribeAccountSubscription where
+  rnf DescribeAccountSubscription' {..} =
+    Prelude.rnf awsAccountId
+
+instance Data.ToHeaders DescribeAccountSubscription where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeAccountSubscription where
+  toPath DescribeAccountSubscription' {..} =
+    Prelude.mconcat
+      ["/account/", Data.toBS awsAccountId]
+
+instance Data.ToQuery DescribeAccountSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAccountSubscriptionResponse' smart constructor.
+data DescribeAccountSubscriptionResponse = DescribeAccountSubscriptionResponse'
+  { -- | A structure that contains the following elements:
+    --
+    -- -   Your Amazon QuickSight account name.
+    --
+    -- -   The edition of Amazon QuickSight that your account is using.
+    --
+    -- -   The notification email address that is associated with the Amazon
+    --     QuickSight account.
+    --
+    -- -   The authentication type of the Amazon QuickSight account.
+    --
+    -- -   The status of the Amazon QuickSight account\'s subscription.
+    accountInfo :: Prelude.Maybe AccountInfo,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAccountSubscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountInfo', 'describeAccountSubscriptionResponse_accountInfo' - A structure that contains the following elements:
+--
+-- -   Your Amazon QuickSight account name.
+--
+-- -   The edition of Amazon QuickSight that your account is using.
+--
+-- -   The notification email address that is associated with the Amazon
+--     QuickSight account.
+--
+-- -   The authentication type of the Amazon QuickSight account.
+--
+-- -   The status of the Amazon QuickSight account\'s subscription.
+--
+-- 'requestId', 'describeAccountSubscriptionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeAccountSubscriptionResponse_status' - The HTTP status of the request.
+newDescribeAccountSubscriptionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeAccountSubscriptionResponse
+newDescribeAccountSubscriptionResponse pStatus_ =
+  DescribeAccountSubscriptionResponse'
+    { accountInfo =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A structure that contains the following elements:
+--
+-- -   Your Amazon QuickSight account name.
+--
+-- -   The edition of Amazon QuickSight that your account is using.
+--
+-- -   The notification email address that is associated with the Amazon
+--     QuickSight account.
+--
+-- -   The authentication type of the Amazon QuickSight account.
+--
+-- -   The status of the Amazon QuickSight account\'s subscription.
+describeAccountSubscriptionResponse_accountInfo :: Lens.Lens' DescribeAccountSubscriptionResponse (Prelude.Maybe AccountInfo)
+describeAccountSubscriptionResponse_accountInfo = Lens.lens (\DescribeAccountSubscriptionResponse' {accountInfo} -> accountInfo) (\s@DescribeAccountSubscriptionResponse' {} a -> s {accountInfo = a} :: DescribeAccountSubscriptionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeAccountSubscriptionResponse_requestId :: Lens.Lens' DescribeAccountSubscriptionResponse (Prelude.Maybe Prelude.Text)
+describeAccountSubscriptionResponse_requestId = Lens.lens (\DescribeAccountSubscriptionResponse' {requestId} -> requestId) (\s@DescribeAccountSubscriptionResponse' {} a -> s {requestId = a} :: DescribeAccountSubscriptionResponse)
+
+-- | The HTTP status of the request.
+describeAccountSubscriptionResponse_status :: Lens.Lens' DescribeAccountSubscriptionResponse Prelude.Int
+describeAccountSubscriptionResponse_status = Lens.lens (\DescribeAccountSubscriptionResponse' {status} -> status) (\s@DescribeAccountSubscriptionResponse' {} a -> s {status = a} :: DescribeAccountSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    DescribeAccountSubscriptionResponse
+  where
+  rnf DescribeAccountSubscriptionResponse' {..} =
+    Prelude.rnf accountInfo
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeAnalysis.hs b/gen/Amazonka/QuickSight/DescribeAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeAnalysis.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.QuickSight.DescribeAnalysis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a summary of the metadata for an analysis.
+module Amazonka.QuickSight.DescribeAnalysis
+  ( -- * Creating a Request
+    DescribeAnalysis (..),
+    newDescribeAnalysis,
+
+    -- * Request Lenses
+    describeAnalysis_awsAccountId,
+    describeAnalysis_analysisId,
+
+    -- * Destructuring the Response
+    DescribeAnalysisResponse (..),
+    newDescribeAnalysisResponse,
+
+    -- * Response Lenses
+    describeAnalysisResponse_analysis,
+    describeAnalysisResponse_requestId,
+    describeAnalysisResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAnalysis' smart constructor.
+data DescribeAnalysis = DescribeAnalysis'
+  { -- | The ID of the Amazon Web Services account that contains the analysis.
+    -- You must be using the Amazon Web Services account that the analysis is
+    -- in.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the analysis that you\'re describing. The ID is part of the
+    -- URL of the analysis.
+    analysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeAnalysis_awsAccountId' - The ID of the Amazon Web Services account that contains the analysis.
+-- You must be using the Amazon Web Services account that the analysis is
+-- in.
+--
+-- 'analysisId', 'describeAnalysis_analysisId' - The ID of the analysis that you\'re describing. The ID is part of the
+-- URL of the analysis.
+newDescribeAnalysis ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  DescribeAnalysis
+newDescribeAnalysis pAwsAccountId_ pAnalysisId_ =
+  DescribeAnalysis'
+    { awsAccountId = pAwsAccountId_,
+      analysisId = pAnalysisId_
+    }
+
+-- | The ID of the Amazon Web Services account that contains the analysis.
+-- You must be using the Amazon Web Services account that the analysis is
+-- in.
+describeAnalysis_awsAccountId :: Lens.Lens' DescribeAnalysis Prelude.Text
+describeAnalysis_awsAccountId = Lens.lens (\DescribeAnalysis' {awsAccountId} -> awsAccountId) (\s@DescribeAnalysis' {} a -> s {awsAccountId = a} :: DescribeAnalysis)
+
+-- | The ID of the analysis that you\'re describing. The ID is part of the
+-- URL of the analysis.
+describeAnalysis_analysisId :: Lens.Lens' DescribeAnalysis Prelude.Text
+describeAnalysis_analysisId = Lens.lens (\DescribeAnalysis' {analysisId} -> analysisId) (\s@DescribeAnalysis' {} a -> s {analysisId = a} :: DescribeAnalysis)
+
+instance Core.AWSRequest DescribeAnalysis where
+  type
+    AWSResponse DescribeAnalysis =
+      DescribeAnalysisResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAnalysisResponse'
+            Prelude.<$> (x Data..?> "Analysis")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAnalysis where
+  hashWithSalt _salt DescribeAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+
+instance Prelude.NFData DescribeAnalysis where
+  rnf DescribeAnalysis' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+
+instance Data.ToHeaders DescribeAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeAnalysis where
+  toPath DescribeAnalysis' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId
+      ]
+
+instance Data.ToQuery DescribeAnalysis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAnalysisResponse' smart constructor.
+data DescribeAnalysisResponse = DescribeAnalysisResponse'
+  { -- | A metadata structure that contains summary information for the analysis
+    -- that you\'re describing.
+    analysis :: Prelude.Maybe Analysis,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysis', 'describeAnalysisResponse_analysis' - A metadata structure that contains summary information for the analysis
+-- that you\'re describing.
+--
+-- 'requestId', 'describeAnalysisResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeAnalysisResponse_status' - The HTTP status of the request.
+newDescribeAnalysisResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeAnalysisResponse
+newDescribeAnalysisResponse pStatus_ =
+  DescribeAnalysisResponse'
+    { analysis =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A metadata structure that contains summary information for the analysis
+-- that you\'re describing.
+describeAnalysisResponse_analysis :: Lens.Lens' DescribeAnalysisResponse (Prelude.Maybe Analysis)
+describeAnalysisResponse_analysis = Lens.lens (\DescribeAnalysisResponse' {analysis} -> analysis) (\s@DescribeAnalysisResponse' {} a -> s {analysis = a} :: DescribeAnalysisResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeAnalysisResponse_requestId :: Lens.Lens' DescribeAnalysisResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisResponse_requestId = Lens.lens (\DescribeAnalysisResponse' {requestId} -> requestId) (\s@DescribeAnalysisResponse' {} a -> s {requestId = a} :: DescribeAnalysisResponse)
+
+-- | The HTTP status of the request.
+describeAnalysisResponse_status :: Lens.Lens' DescribeAnalysisResponse Prelude.Int
+describeAnalysisResponse_status = Lens.lens (\DescribeAnalysisResponse' {status} -> status) (\s@DescribeAnalysisResponse' {} a -> s {status = a} :: DescribeAnalysisResponse)
+
+instance Prelude.NFData DescribeAnalysisResponse where
+  rnf DescribeAnalysisResponse' {..} =
+    Prelude.rnf analysis
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeAnalysisDefinition.hs b/gen/Amazonka/QuickSight/DescribeAnalysisDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeAnalysisDefinition.hs
@@ -0,0 +1,326 @@
+{-# 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.QuickSight.DescribeAnalysisDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a detailed description of the definition of an analysis.
+--
+-- If you do not need to know details about the content of an Analysis, for
+-- instance if you are trying to check the status of a recently created or
+-- updated Analysis, use the
+-- <https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeAnalysis.html DescribeAnalysis>
+-- instead.
+module Amazonka.QuickSight.DescribeAnalysisDefinition
+  ( -- * Creating a Request
+    DescribeAnalysisDefinition (..),
+    newDescribeAnalysisDefinition,
+
+    -- * Request Lenses
+    describeAnalysisDefinition_awsAccountId,
+    describeAnalysisDefinition_analysisId,
+
+    -- * Destructuring the Response
+    DescribeAnalysisDefinitionResponse (..),
+    newDescribeAnalysisDefinitionResponse,
+
+    -- * Response Lenses
+    describeAnalysisDefinitionResponse_analysisId,
+    describeAnalysisDefinitionResponse_definition,
+    describeAnalysisDefinitionResponse_errors,
+    describeAnalysisDefinitionResponse_name,
+    describeAnalysisDefinitionResponse_requestId,
+    describeAnalysisDefinitionResponse_resourceStatus,
+    describeAnalysisDefinitionResponse_themeArn,
+    describeAnalysisDefinitionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAnalysisDefinition' smart constructor.
+data DescribeAnalysisDefinition = DescribeAnalysisDefinition'
+  { -- | The ID of the Amazon Web Services account that contains the analysis.
+    -- You must be using the Amazon Web Services account that the analysis is
+    -- in.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the analysis that you\'re describing. The ID is part of the
+    -- URL of the analysis.
+    analysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAnalysisDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeAnalysisDefinition_awsAccountId' - The ID of the Amazon Web Services account that contains the analysis.
+-- You must be using the Amazon Web Services account that the analysis is
+-- in.
+--
+-- 'analysisId', 'describeAnalysisDefinition_analysisId' - The ID of the analysis that you\'re describing. The ID is part of the
+-- URL of the analysis.
+newDescribeAnalysisDefinition ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  DescribeAnalysisDefinition
+newDescribeAnalysisDefinition
+  pAwsAccountId_
+  pAnalysisId_ =
+    DescribeAnalysisDefinition'
+      { awsAccountId =
+          pAwsAccountId_,
+        analysisId = pAnalysisId_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the analysis.
+-- You must be using the Amazon Web Services account that the analysis is
+-- in.
+describeAnalysisDefinition_awsAccountId :: Lens.Lens' DescribeAnalysisDefinition Prelude.Text
+describeAnalysisDefinition_awsAccountId = Lens.lens (\DescribeAnalysisDefinition' {awsAccountId} -> awsAccountId) (\s@DescribeAnalysisDefinition' {} a -> s {awsAccountId = a} :: DescribeAnalysisDefinition)
+
+-- | The ID of the analysis that you\'re describing. The ID is part of the
+-- URL of the analysis.
+describeAnalysisDefinition_analysisId :: Lens.Lens' DescribeAnalysisDefinition Prelude.Text
+describeAnalysisDefinition_analysisId = Lens.lens (\DescribeAnalysisDefinition' {analysisId} -> analysisId) (\s@DescribeAnalysisDefinition' {} a -> s {analysisId = a} :: DescribeAnalysisDefinition)
+
+instance Core.AWSRequest DescribeAnalysisDefinition where
+  type
+    AWSResponse DescribeAnalysisDefinition =
+      DescribeAnalysisDefinitionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAnalysisDefinitionResponse'
+            Prelude.<$> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Definition")
+            Prelude.<*> (x Data..?> "Errors")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ResourceStatus")
+            Prelude.<*> (x Data..?> "ThemeArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAnalysisDefinition where
+  hashWithSalt _salt DescribeAnalysisDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+
+instance Prelude.NFData DescribeAnalysisDefinition where
+  rnf DescribeAnalysisDefinition' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+
+instance Data.ToHeaders DescribeAnalysisDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeAnalysisDefinition where
+  toPath DescribeAnalysisDefinition' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId,
+        "/definition"
+      ]
+
+instance Data.ToQuery DescribeAnalysisDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAnalysisDefinitionResponse' smart constructor.
+data DescribeAnalysisDefinitionResponse = DescribeAnalysisDefinitionResponse'
+  { -- | The ID of the analysis described.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The definition of an analysis.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe AnalysisDefinition,
+    -- | Errors associated with the analysis.
+    errors :: Prelude.Maybe (Prelude.NonEmpty AnalysisError),
+    -- | The descriptive name of the analysis.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Status associated with the analysis.
+    --
+    -- -   @CREATION_IN_PROGRESS@
+    --
+    -- -   @CREATION_SUCCESSFUL@
+    --
+    -- -   @CREATION_FAILED@
+    --
+    -- -   @UPDATE_IN_PROGRESS@
+    --
+    -- -   @UPDATE_SUCCESSFUL@
+    --
+    -- -   @UPDATE_FAILED@
+    --
+    -- -   @DELETED@
+    resourceStatus :: Prelude.Maybe ResourceStatus,
+    -- | The ARN of the theme of the analysis.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAnalysisDefinitionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'describeAnalysisDefinitionResponse_analysisId' - The ID of the analysis described.
+--
+-- 'definition', 'describeAnalysisDefinitionResponse_definition' - The definition of an analysis.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'errors', 'describeAnalysisDefinitionResponse_errors' - Errors associated with the analysis.
+--
+-- 'name', 'describeAnalysisDefinitionResponse_name' - The descriptive name of the analysis.
+--
+-- 'requestId', 'describeAnalysisDefinitionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'resourceStatus', 'describeAnalysisDefinitionResponse_resourceStatus' - Status associated with the analysis.
+--
+-- -   @CREATION_IN_PROGRESS@
+--
+-- -   @CREATION_SUCCESSFUL@
+--
+-- -   @CREATION_FAILED@
+--
+-- -   @UPDATE_IN_PROGRESS@
+--
+-- -   @UPDATE_SUCCESSFUL@
+--
+-- -   @UPDATE_FAILED@
+--
+-- -   @DELETED@
+--
+-- 'themeArn', 'describeAnalysisDefinitionResponse_themeArn' - The ARN of the theme of the analysis.
+--
+-- 'status', 'describeAnalysisDefinitionResponse_status' - The HTTP status of the request.
+newDescribeAnalysisDefinitionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeAnalysisDefinitionResponse
+newDescribeAnalysisDefinitionResponse pStatus_ =
+  DescribeAnalysisDefinitionResponse'
+    { analysisId =
+        Prelude.Nothing,
+      definition = Prelude.Nothing,
+      errors = Prelude.Nothing,
+      name = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      resourceStatus = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the analysis described.
+describeAnalysisDefinitionResponse_analysisId :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisDefinitionResponse_analysisId = Lens.lens (\DescribeAnalysisDefinitionResponse' {analysisId} -> analysisId) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {analysisId = a} :: DescribeAnalysisDefinitionResponse)
+
+-- | The definition of an analysis.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+describeAnalysisDefinitionResponse_definition :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe AnalysisDefinition)
+describeAnalysisDefinitionResponse_definition = Lens.lens (\DescribeAnalysisDefinitionResponse' {definition} -> definition) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {definition = a} :: DescribeAnalysisDefinitionResponse)
+
+-- | Errors associated with the analysis.
+describeAnalysisDefinitionResponse_errors :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe (Prelude.NonEmpty AnalysisError))
+describeAnalysisDefinitionResponse_errors = Lens.lens (\DescribeAnalysisDefinitionResponse' {errors} -> errors) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {errors = a} :: DescribeAnalysisDefinitionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The descriptive name of the analysis.
+describeAnalysisDefinitionResponse_name :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisDefinitionResponse_name = Lens.lens (\DescribeAnalysisDefinitionResponse' {name} -> name) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {name = a} :: DescribeAnalysisDefinitionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeAnalysisDefinitionResponse_requestId :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisDefinitionResponse_requestId = Lens.lens (\DescribeAnalysisDefinitionResponse' {requestId} -> requestId) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {requestId = a} :: DescribeAnalysisDefinitionResponse)
+
+-- | Status associated with the analysis.
+--
+-- -   @CREATION_IN_PROGRESS@
+--
+-- -   @CREATION_SUCCESSFUL@
+--
+-- -   @CREATION_FAILED@
+--
+-- -   @UPDATE_IN_PROGRESS@
+--
+-- -   @UPDATE_SUCCESSFUL@
+--
+-- -   @UPDATE_FAILED@
+--
+-- -   @DELETED@
+describeAnalysisDefinitionResponse_resourceStatus :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe ResourceStatus)
+describeAnalysisDefinitionResponse_resourceStatus = Lens.lens (\DescribeAnalysisDefinitionResponse' {resourceStatus} -> resourceStatus) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {resourceStatus = a} :: DescribeAnalysisDefinitionResponse)
+
+-- | The ARN of the theme of the analysis.
+describeAnalysisDefinitionResponse_themeArn :: Lens.Lens' DescribeAnalysisDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisDefinitionResponse_themeArn = Lens.lens (\DescribeAnalysisDefinitionResponse' {themeArn} -> themeArn) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {themeArn = a} :: DescribeAnalysisDefinitionResponse)
+
+-- | The HTTP status of the request.
+describeAnalysisDefinitionResponse_status :: Lens.Lens' DescribeAnalysisDefinitionResponse Prelude.Int
+describeAnalysisDefinitionResponse_status = Lens.lens (\DescribeAnalysisDefinitionResponse' {status} -> status) (\s@DescribeAnalysisDefinitionResponse' {} a -> s {status = a} :: DescribeAnalysisDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeAnalysisDefinitionResponse
+  where
+  rnf DescribeAnalysisDefinitionResponse' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf resourceStatus
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeAnalysisPermissions.hs b/gen/Amazonka/QuickSight/DescribeAnalysisPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeAnalysisPermissions.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.QuickSight.DescribeAnalysisPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides the read and write permissions for an analysis.
+module Amazonka.QuickSight.DescribeAnalysisPermissions
+  ( -- * Creating a Request
+    DescribeAnalysisPermissions (..),
+    newDescribeAnalysisPermissions,
+
+    -- * Request Lenses
+    describeAnalysisPermissions_awsAccountId,
+    describeAnalysisPermissions_analysisId,
+
+    -- * Destructuring the Response
+    DescribeAnalysisPermissionsResponse (..),
+    newDescribeAnalysisPermissionsResponse,
+
+    -- * Response Lenses
+    describeAnalysisPermissionsResponse_analysisArn,
+    describeAnalysisPermissionsResponse_analysisId,
+    describeAnalysisPermissionsResponse_permissions,
+    describeAnalysisPermissionsResponse_requestId,
+    describeAnalysisPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAnalysisPermissions' smart constructor.
+data DescribeAnalysisPermissions = DescribeAnalysisPermissions'
+  { -- | The ID of the Amazon Web Services account that contains the analysis
+    -- whose permissions you\'re describing. You must be using the Amazon Web
+    -- Services account that the analysis is in.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the analysis whose permissions you\'re describing. The ID is
+    -- part of the analysis URL.
+    analysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAnalysisPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeAnalysisPermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the analysis
+-- whose permissions you\'re describing. You must be using the Amazon Web
+-- Services account that the analysis is in.
+--
+-- 'analysisId', 'describeAnalysisPermissions_analysisId' - The ID of the analysis whose permissions you\'re describing. The ID is
+-- part of the analysis URL.
+newDescribeAnalysisPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  DescribeAnalysisPermissions
+newDescribeAnalysisPermissions
+  pAwsAccountId_
+  pAnalysisId_ =
+    DescribeAnalysisPermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        analysisId = pAnalysisId_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the analysis
+-- whose permissions you\'re describing. You must be using the Amazon Web
+-- Services account that the analysis is in.
+describeAnalysisPermissions_awsAccountId :: Lens.Lens' DescribeAnalysisPermissions Prelude.Text
+describeAnalysisPermissions_awsAccountId = Lens.lens (\DescribeAnalysisPermissions' {awsAccountId} -> awsAccountId) (\s@DescribeAnalysisPermissions' {} a -> s {awsAccountId = a} :: DescribeAnalysisPermissions)
+
+-- | The ID of the analysis whose permissions you\'re describing. The ID is
+-- part of the analysis URL.
+describeAnalysisPermissions_analysisId :: Lens.Lens' DescribeAnalysisPermissions Prelude.Text
+describeAnalysisPermissions_analysisId = Lens.lens (\DescribeAnalysisPermissions' {analysisId} -> analysisId) (\s@DescribeAnalysisPermissions' {} a -> s {analysisId = a} :: DescribeAnalysisPermissions)
+
+instance Core.AWSRequest DescribeAnalysisPermissions where
+  type
+    AWSResponse DescribeAnalysisPermissions =
+      DescribeAnalysisPermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAnalysisPermissionsResponse'
+            Prelude.<$> (x Data..?> "AnalysisArn")
+            Prelude.<*> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAnalysisPermissions where
+  hashWithSalt _salt DescribeAnalysisPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+
+instance Prelude.NFData DescribeAnalysisPermissions where
+  rnf DescribeAnalysisPermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+
+instance Data.ToHeaders DescribeAnalysisPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeAnalysisPermissions where
+  toPath DescribeAnalysisPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeAnalysisPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAnalysisPermissionsResponse' smart constructor.
+data DescribeAnalysisPermissionsResponse = DescribeAnalysisPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the analysis whose permissions you\'re
+    -- describing.
+    analysisArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the analysis whose permissions you\'re describing.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | A structure that describes the principals and the resource-level
+    -- permissions on an analysis.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAnalysisPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisArn', 'describeAnalysisPermissionsResponse_analysisArn' - The Amazon Resource Name (ARN) of the analysis whose permissions you\'re
+-- describing.
+--
+-- 'analysisId', 'describeAnalysisPermissionsResponse_analysisId' - The ID of the analysis whose permissions you\'re describing.
+--
+-- 'permissions', 'describeAnalysisPermissionsResponse_permissions' - A structure that describes the principals and the resource-level
+-- permissions on an analysis.
+--
+-- 'requestId', 'describeAnalysisPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeAnalysisPermissionsResponse_status' - The HTTP status of the request.
+newDescribeAnalysisPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeAnalysisPermissionsResponse
+newDescribeAnalysisPermissionsResponse pStatus_ =
+  DescribeAnalysisPermissionsResponse'
+    { analysisArn =
+        Prelude.Nothing,
+      analysisId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the analysis whose permissions you\'re
+-- describing.
+describeAnalysisPermissionsResponse_analysisArn :: Lens.Lens' DescribeAnalysisPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisPermissionsResponse_analysisArn = Lens.lens (\DescribeAnalysisPermissionsResponse' {analysisArn} -> analysisArn) (\s@DescribeAnalysisPermissionsResponse' {} a -> s {analysisArn = a} :: DescribeAnalysisPermissionsResponse)
+
+-- | The ID of the analysis whose permissions you\'re describing.
+describeAnalysisPermissionsResponse_analysisId :: Lens.Lens' DescribeAnalysisPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisPermissionsResponse_analysisId = Lens.lens (\DescribeAnalysisPermissionsResponse' {analysisId} -> analysisId) (\s@DescribeAnalysisPermissionsResponse' {} a -> s {analysisId = a} :: DescribeAnalysisPermissionsResponse)
+
+-- | A structure that describes the principals and the resource-level
+-- permissions on an analysis.
+describeAnalysisPermissionsResponse_permissions :: Lens.Lens' DescribeAnalysisPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeAnalysisPermissionsResponse_permissions = Lens.lens (\DescribeAnalysisPermissionsResponse' {permissions} -> permissions) (\s@DescribeAnalysisPermissionsResponse' {} a -> s {permissions = a} :: DescribeAnalysisPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeAnalysisPermissionsResponse_requestId :: Lens.Lens' DescribeAnalysisPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeAnalysisPermissionsResponse_requestId = Lens.lens (\DescribeAnalysisPermissionsResponse' {requestId} -> requestId) (\s@DescribeAnalysisPermissionsResponse' {} a -> s {requestId = a} :: DescribeAnalysisPermissionsResponse)
+
+-- | The HTTP status of the request.
+describeAnalysisPermissionsResponse_status :: Lens.Lens' DescribeAnalysisPermissionsResponse Prelude.Int
+describeAnalysisPermissionsResponse_status = Lens.lens (\DescribeAnalysisPermissionsResponse' {status} -> status) (\s@DescribeAnalysisPermissionsResponse' {} a -> s {status = a} :: DescribeAnalysisPermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeAnalysisPermissionsResponse
+  where
+  rnf DescribeAnalysisPermissionsResponse' {..} =
+    Prelude.rnf analysisArn
+      `Prelude.seq` Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDashboard.hs b/gen/Amazonka/QuickSight/DescribeDashboard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDashboard.hs
@@ -0,0 +1,227 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeDashboard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a summary for a dashboard.
+module Amazonka.QuickSight.DescribeDashboard
+  ( -- * Creating a Request
+    DescribeDashboard (..),
+    newDescribeDashboard,
+
+    -- * Request Lenses
+    describeDashboard_aliasName,
+    describeDashboard_versionNumber,
+    describeDashboard_awsAccountId,
+    describeDashboard_dashboardId,
+
+    -- * Destructuring the Response
+    DescribeDashboardResponse (..),
+    newDescribeDashboardResponse,
+
+    -- * Response Lenses
+    describeDashboardResponse_dashboard,
+    describeDashboardResponse_requestId,
+    describeDashboardResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDashboard' smart constructor.
+data DescribeDashboard = DescribeDashboard'
+  { -- | The alias name.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The version number for the dashboard. If a version number isn\'t passed,
+    -- the latest published dashboard version is described.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDashboard' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'describeDashboard_aliasName' - The alias name.
+--
+-- 'versionNumber', 'describeDashboard_versionNumber' - The version number for the dashboard. If a version number isn\'t passed,
+-- the latest published dashboard version is described.
+--
+-- 'awsAccountId', 'describeDashboard_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re describing.
+--
+-- 'dashboardId', 'describeDashboard_dashboardId' - The ID for the dashboard.
+newDescribeDashboard ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  DescribeDashboard
+newDescribeDashboard pAwsAccountId_ pDashboardId_ =
+  DescribeDashboard'
+    { aliasName = Prelude.Nothing,
+      versionNumber = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      dashboardId = pDashboardId_
+    }
+
+-- | The alias name.
+describeDashboard_aliasName :: Lens.Lens' DescribeDashboard (Prelude.Maybe Prelude.Text)
+describeDashboard_aliasName = Lens.lens (\DescribeDashboard' {aliasName} -> aliasName) (\s@DescribeDashboard' {} a -> s {aliasName = a} :: DescribeDashboard)
+
+-- | The version number for the dashboard. If a version number isn\'t passed,
+-- the latest published dashboard version is described.
+describeDashboard_versionNumber :: Lens.Lens' DescribeDashboard (Prelude.Maybe Prelude.Natural)
+describeDashboard_versionNumber = Lens.lens (\DescribeDashboard' {versionNumber} -> versionNumber) (\s@DescribeDashboard' {} a -> s {versionNumber = a} :: DescribeDashboard)
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re describing.
+describeDashboard_awsAccountId :: Lens.Lens' DescribeDashboard Prelude.Text
+describeDashboard_awsAccountId = Lens.lens (\DescribeDashboard' {awsAccountId} -> awsAccountId) (\s@DescribeDashboard' {} a -> s {awsAccountId = a} :: DescribeDashboard)
+
+-- | The ID for the dashboard.
+describeDashboard_dashboardId :: Lens.Lens' DescribeDashboard Prelude.Text
+describeDashboard_dashboardId = Lens.lens (\DescribeDashboard' {dashboardId} -> dashboardId) (\s@DescribeDashboard' {} a -> s {dashboardId = a} :: DescribeDashboard)
+
+instance Core.AWSRequest DescribeDashboard where
+  type
+    AWSResponse DescribeDashboard =
+      DescribeDashboardResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDashboardResponse'
+            Prelude.<$> (x Data..?> "Dashboard")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDashboard where
+  hashWithSalt _salt DescribeDashboard' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+
+instance Prelude.NFData DescribeDashboard where
+  rnf DescribeDashboard' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+
+instance Data.ToHeaders DescribeDashboard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDashboard where
+  toPath DescribeDashboard' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId
+      ]
+
+instance Data.ToQuery DescribeDashboard where
+  toQuery DescribeDashboard' {..} =
+    Prelude.mconcat
+      [ "alias-name" Data.=: aliasName,
+        "version-number" Data.=: versionNumber
+      ]
+
+-- | /See:/ 'newDescribeDashboardResponse' smart constructor.
+data DescribeDashboardResponse = DescribeDashboardResponse'
+  { -- | Information about the dashboard.
+    dashboard :: Prelude.Maybe Dashboard,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of this request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDashboardResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboard', 'describeDashboardResponse_dashboard' - Information about the dashboard.
+--
+-- 'requestId', 'describeDashboardResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeDashboardResponse_status' - The HTTP status of this request.
+newDescribeDashboardResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDashboardResponse
+newDescribeDashboardResponse pStatus_ =
+  DescribeDashboardResponse'
+    { dashboard =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Information about the dashboard.
+describeDashboardResponse_dashboard :: Lens.Lens' DescribeDashboardResponse (Prelude.Maybe Dashboard)
+describeDashboardResponse_dashboard = Lens.lens (\DescribeDashboardResponse' {dashboard} -> dashboard) (\s@DescribeDashboardResponse' {} a -> s {dashboard = a} :: DescribeDashboardResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeDashboardResponse_requestId :: Lens.Lens' DescribeDashboardResponse (Prelude.Maybe Prelude.Text)
+describeDashboardResponse_requestId = Lens.lens (\DescribeDashboardResponse' {requestId} -> requestId) (\s@DescribeDashboardResponse' {} a -> s {requestId = a} :: DescribeDashboardResponse)
+
+-- | The HTTP status of this request.
+describeDashboardResponse_status :: Lens.Lens' DescribeDashboardResponse Prelude.Int
+describeDashboardResponse_status = Lens.lens (\DescribeDashboardResponse' {status} -> status) (\s@DescribeDashboardResponse' {} a -> s {status = a} :: DescribeDashboardResponse)
+
+instance Prelude.NFData DescribeDashboardResponse where
+  rnf DescribeDashboardResponse' {..} =
+    Prelude.rnf dashboard
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDashboardDefinition.hs b/gen/Amazonka/QuickSight/DescribeDashboardDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDashboardDefinition.hs
@@ -0,0 +1,351 @@
+{-# 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.QuickSight.DescribeDashboardDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a detailed description of the definition of a dashboard.
+--
+-- If you do not need to know details about the content of a dashboard, for
+-- instance if you are trying to check the status of a recently created or
+-- updated dashboard, use the
+-- <https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeDashboard.html DescribeDashboard>
+-- instead.
+module Amazonka.QuickSight.DescribeDashboardDefinition
+  ( -- * Creating a Request
+    DescribeDashboardDefinition (..),
+    newDescribeDashboardDefinition,
+
+    -- * Request Lenses
+    describeDashboardDefinition_aliasName,
+    describeDashboardDefinition_versionNumber,
+    describeDashboardDefinition_awsAccountId,
+    describeDashboardDefinition_dashboardId,
+
+    -- * Destructuring the Response
+    DescribeDashboardDefinitionResponse (..),
+    newDescribeDashboardDefinitionResponse,
+
+    -- * Response Lenses
+    describeDashboardDefinitionResponse_dashboardId,
+    describeDashboardDefinitionResponse_definition,
+    describeDashboardDefinitionResponse_errors,
+    describeDashboardDefinitionResponse_name,
+    describeDashboardDefinitionResponse_requestId,
+    describeDashboardDefinitionResponse_resourceStatus,
+    describeDashboardDefinitionResponse_themeArn,
+    describeDashboardDefinitionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDashboardDefinition' smart constructor.
+data DescribeDashboardDefinition = DescribeDashboardDefinition'
+  { -- | The alias name.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The version number for the dashboard. If a version number isn\'t passed,
+    -- the latest published dashboard version is described.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDashboardDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'describeDashboardDefinition_aliasName' - The alias name.
+--
+-- 'versionNumber', 'describeDashboardDefinition_versionNumber' - The version number for the dashboard. If a version number isn\'t passed,
+-- the latest published dashboard version is described.
+--
+-- 'awsAccountId', 'describeDashboardDefinition_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re describing.
+--
+-- 'dashboardId', 'describeDashboardDefinition_dashboardId' - The ID for the dashboard.
+newDescribeDashboardDefinition ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  DescribeDashboardDefinition
+newDescribeDashboardDefinition
+  pAwsAccountId_
+  pDashboardId_ =
+    DescribeDashboardDefinition'
+      { aliasName =
+          Prelude.Nothing,
+        versionNumber = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dashboardId = pDashboardId_
+      }
+
+-- | The alias name.
+describeDashboardDefinition_aliasName :: Lens.Lens' DescribeDashboardDefinition (Prelude.Maybe Prelude.Text)
+describeDashboardDefinition_aliasName = Lens.lens (\DescribeDashboardDefinition' {aliasName} -> aliasName) (\s@DescribeDashboardDefinition' {} a -> s {aliasName = a} :: DescribeDashboardDefinition)
+
+-- | The version number for the dashboard. If a version number isn\'t passed,
+-- the latest published dashboard version is described.
+describeDashboardDefinition_versionNumber :: Lens.Lens' DescribeDashboardDefinition (Prelude.Maybe Prelude.Natural)
+describeDashboardDefinition_versionNumber = Lens.lens (\DescribeDashboardDefinition' {versionNumber} -> versionNumber) (\s@DescribeDashboardDefinition' {} a -> s {versionNumber = a} :: DescribeDashboardDefinition)
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re describing.
+describeDashboardDefinition_awsAccountId :: Lens.Lens' DescribeDashboardDefinition Prelude.Text
+describeDashboardDefinition_awsAccountId = Lens.lens (\DescribeDashboardDefinition' {awsAccountId} -> awsAccountId) (\s@DescribeDashboardDefinition' {} a -> s {awsAccountId = a} :: DescribeDashboardDefinition)
+
+-- | The ID for the dashboard.
+describeDashboardDefinition_dashboardId :: Lens.Lens' DescribeDashboardDefinition Prelude.Text
+describeDashboardDefinition_dashboardId = Lens.lens (\DescribeDashboardDefinition' {dashboardId} -> dashboardId) (\s@DescribeDashboardDefinition' {} a -> s {dashboardId = a} :: DescribeDashboardDefinition)
+
+instance Core.AWSRequest DescribeDashboardDefinition where
+  type
+    AWSResponse DescribeDashboardDefinition =
+      DescribeDashboardDefinitionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDashboardDefinitionResponse'
+            Prelude.<$> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "Definition")
+            Prelude.<*> (x Data..?> "Errors")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ResourceStatus")
+            Prelude.<*> (x Data..?> "ThemeArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDashboardDefinition where
+  hashWithSalt _salt DescribeDashboardDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+
+instance Prelude.NFData DescribeDashboardDefinition where
+  rnf DescribeDashboardDefinition' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+
+instance Data.ToHeaders DescribeDashboardDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDashboardDefinition where
+  toPath DescribeDashboardDefinition' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId,
+        "/definition"
+      ]
+
+instance Data.ToQuery DescribeDashboardDefinition where
+  toQuery DescribeDashboardDefinition' {..} =
+    Prelude.mconcat
+      [ "alias-name" Data.=: aliasName,
+        "version-number" Data.=: versionNumber
+      ]
+
+-- | /See:/ 'newDescribeDashboardDefinitionResponse' smart constructor.
+data DescribeDashboardDefinitionResponse = DescribeDashboardDefinitionResponse'
+  { -- | The ID of the dashboard described.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The definition of a dashboard.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe DashboardVersionDefinition,
+    -- | Errors associated with this dashboard version.
+    errors :: Prelude.Maybe (Prelude.NonEmpty DashboardError),
+    -- | The display name of the dashboard.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Status associated with the dashboard version.
+    --
+    -- -   @CREATION_IN_PROGRESS@
+    --
+    -- -   @CREATION_SUCCESSFUL@
+    --
+    -- -   @CREATION_FAILED@
+    --
+    -- -   @UPDATE_IN_PROGRESS@
+    --
+    -- -   @UPDATE_SUCCESSFUL@
+    --
+    -- -   @UPDATE_FAILED@
+    --
+    -- -   @DELETED@
+    resourceStatus :: Prelude.Maybe ResourceStatus,
+    -- | The ARN of the theme of the dashboard.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDashboardDefinitionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardId', 'describeDashboardDefinitionResponse_dashboardId' - The ID of the dashboard described.
+--
+-- 'definition', 'describeDashboardDefinitionResponse_definition' - The definition of a dashboard.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'errors', 'describeDashboardDefinitionResponse_errors' - Errors associated with this dashboard version.
+--
+-- 'name', 'describeDashboardDefinitionResponse_name' - The display name of the dashboard.
+--
+-- 'requestId', 'describeDashboardDefinitionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'resourceStatus', 'describeDashboardDefinitionResponse_resourceStatus' - Status associated with the dashboard version.
+--
+-- -   @CREATION_IN_PROGRESS@
+--
+-- -   @CREATION_SUCCESSFUL@
+--
+-- -   @CREATION_FAILED@
+--
+-- -   @UPDATE_IN_PROGRESS@
+--
+-- -   @UPDATE_SUCCESSFUL@
+--
+-- -   @UPDATE_FAILED@
+--
+-- -   @DELETED@
+--
+-- 'themeArn', 'describeDashboardDefinitionResponse_themeArn' - The ARN of the theme of the dashboard.
+--
+-- 'status', 'describeDashboardDefinitionResponse_status' - The HTTP status of the request.
+newDescribeDashboardDefinitionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDashboardDefinitionResponse
+newDescribeDashboardDefinitionResponse pStatus_ =
+  DescribeDashboardDefinitionResponse'
+    { dashboardId =
+        Prelude.Nothing,
+      definition = Prelude.Nothing,
+      errors = Prelude.Nothing,
+      name = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      resourceStatus = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the dashboard described.
+describeDashboardDefinitionResponse_dashboardId :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeDashboardDefinitionResponse_dashboardId = Lens.lens (\DescribeDashboardDefinitionResponse' {dashboardId} -> dashboardId) (\s@DescribeDashboardDefinitionResponse' {} a -> s {dashboardId = a} :: DescribeDashboardDefinitionResponse)
+
+-- | The definition of a dashboard.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+describeDashboardDefinitionResponse_definition :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe DashboardVersionDefinition)
+describeDashboardDefinitionResponse_definition = Lens.lens (\DescribeDashboardDefinitionResponse' {definition} -> definition) (\s@DescribeDashboardDefinitionResponse' {} a -> s {definition = a} :: DescribeDashboardDefinitionResponse)
+
+-- | Errors associated with this dashboard version.
+describeDashboardDefinitionResponse_errors :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe (Prelude.NonEmpty DashboardError))
+describeDashboardDefinitionResponse_errors = Lens.lens (\DescribeDashboardDefinitionResponse' {errors} -> errors) (\s@DescribeDashboardDefinitionResponse' {} a -> s {errors = a} :: DescribeDashboardDefinitionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The display name of the dashboard.
+describeDashboardDefinitionResponse_name :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeDashboardDefinitionResponse_name = Lens.lens (\DescribeDashboardDefinitionResponse' {name} -> name) (\s@DescribeDashboardDefinitionResponse' {} a -> s {name = a} :: DescribeDashboardDefinitionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeDashboardDefinitionResponse_requestId :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeDashboardDefinitionResponse_requestId = Lens.lens (\DescribeDashboardDefinitionResponse' {requestId} -> requestId) (\s@DescribeDashboardDefinitionResponse' {} a -> s {requestId = a} :: DescribeDashboardDefinitionResponse)
+
+-- | Status associated with the dashboard version.
+--
+-- -   @CREATION_IN_PROGRESS@
+--
+-- -   @CREATION_SUCCESSFUL@
+--
+-- -   @CREATION_FAILED@
+--
+-- -   @UPDATE_IN_PROGRESS@
+--
+-- -   @UPDATE_SUCCESSFUL@
+--
+-- -   @UPDATE_FAILED@
+--
+-- -   @DELETED@
+describeDashboardDefinitionResponse_resourceStatus :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe ResourceStatus)
+describeDashboardDefinitionResponse_resourceStatus = Lens.lens (\DescribeDashboardDefinitionResponse' {resourceStatus} -> resourceStatus) (\s@DescribeDashboardDefinitionResponse' {} a -> s {resourceStatus = a} :: DescribeDashboardDefinitionResponse)
+
+-- | The ARN of the theme of the dashboard.
+describeDashboardDefinitionResponse_themeArn :: Lens.Lens' DescribeDashboardDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeDashboardDefinitionResponse_themeArn = Lens.lens (\DescribeDashboardDefinitionResponse' {themeArn} -> themeArn) (\s@DescribeDashboardDefinitionResponse' {} a -> s {themeArn = a} :: DescribeDashboardDefinitionResponse)
+
+-- | The HTTP status of the request.
+describeDashboardDefinitionResponse_status :: Lens.Lens' DescribeDashboardDefinitionResponse Prelude.Int
+describeDashboardDefinitionResponse_status = Lens.lens (\DescribeDashboardDefinitionResponse' {status} -> status) (\s@DescribeDashboardDefinitionResponse' {} a -> s {status = a} :: DescribeDashboardDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeDashboardDefinitionResponse
+  where
+  rnf DescribeDashboardDefinitionResponse' {..} =
+    Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf resourceStatus
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDashboardPermissions.hs b/gen/Amazonka/QuickSight/DescribeDashboardPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDashboardPermissions.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.QuickSight.DescribeDashboardPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes read and write permissions for a dashboard.
+module Amazonka.QuickSight.DescribeDashboardPermissions
+  ( -- * Creating a Request
+    DescribeDashboardPermissions (..),
+    newDescribeDashboardPermissions,
+
+    -- * Request Lenses
+    describeDashboardPermissions_awsAccountId,
+    describeDashboardPermissions_dashboardId,
+
+    -- * Destructuring the Response
+    DescribeDashboardPermissionsResponse (..),
+    newDescribeDashboardPermissionsResponse,
+
+    -- * Response Lenses
+    describeDashboardPermissionsResponse_dashboardArn,
+    describeDashboardPermissionsResponse_dashboardId,
+    describeDashboardPermissionsResponse_linkSharingConfiguration,
+    describeDashboardPermissionsResponse_permissions,
+    describeDashboardPermissionsResponse_requestId,
+    describeDashboardPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDashboardPermissions' smart constructor.
+data DescribeDashboardPermissions = DescribeDashboardPermissions'
+  { -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re describing permissions for.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard, also added to the IAM policy.
+    dashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDashboardPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeDashboardPermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re describing permissions for.
+--
+-- 'dashboardId', 'describeDashboardPermissions_dashboardId' - The ID for the dashboard, also added to the IAM policy.
+newDescribeDashboardPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  DescribeDashboardPermissions
+newDescribeDashboardPermissions
+  pAwsAccountId_
+  pDashboardId_ =
+    DescribeDashboardPermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        dashboardId = pDashboardId_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re describing permissions for.
+describeDashboardPermissions_awsAccountId :: Lens.Lens' DescribeDashboardPermissions Prelude.Text
+describeDashboardPermissions_awsAccountId = Lens.lens (\DescribeDashboardPermissions' {awsAccountId} -> awsAccountId) (\s@DescribeDashboardPermissions' {} a -> s {awsAccountId = a} :: DescribeDashboardPermissions)
+
+-- | The ID for the dashboard, also added to the IAM policy.
+describeDashboardPermissions_dashboardId :: Lens.Lens' DescribeDashboardPermissions Prelude.Text
+describeDashboardPermissions_dashboardId = Lens.lens (\DescribeDashboardPermissions' {dashboardId} -> dashboardId) (\s@DescribeDashboardPermissions' {} a -> s {dashboardId = a} :: DescribeDashboardPermissions)
+
+instance Core.AWSRequest DescribeDashboardPermissions where
+  type
+    AWSResponse DescribeDashboardPermissions =
+      DescribeDashboardPermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDashboardPermissionsResponse'
+            Prelude.<$> (x Data..?> "DashboardArn")
+            Prelude.<*> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "LinkSharingConfiguration")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeDashboardPermissions
+  where
+  hashWithSalt _salt DescribeDashboardPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+
+instance Prelude.NFData DescribeDashboardPermissions where
+  rnf DescribeDashboardPermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+
+instance Data.ToHeaders DescribeDashboardPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDashboardPermissions where
+  toPath DescribeDashboardPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeDashboardPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDashboardPermissionsResponse' smart constructor.
+data DescribeDashboardPermissionsResponse = DescribeDashboardPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the dashboard.
+    dashboardArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | A structure that contains the configuration of a shareable link that
+    -- grants access to the dashboard. Your users can use the link to view and
+    -- interact with the dashboard, if the dashboard has been shared with them.
+    -- For more information about sharing dashboards, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/sharing-a-dashboard.html Sharing Dashboards>.
+    linkSharingConfiguration :: Prelude.Maybe LinkSharingConfiguration,
+    -- | A structure that contains the permissions for the dashboard.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDashboardPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardArn', 'describeDashboardPermissionsResponse_dashboardArn' - The Amazon Resource Name (ARN) of the dashboard.
+--
+-- 'dashboardId', 'describeDashboardPermissionsResponse_dashboardId' - The ID for the dashboard.
+--
+-- 'linkSharingConfiguration', 'describeDashboardPermissionsResponse_linkSharingConfiguration' - A structure that contains the configuration of a shareable link that
+-- grants access to the dashboard. Your users can use the link to view and
+-- interact with the dashboard, if the dashboard has been shared with them.
+-- For more information about sharing dashboards, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/sharing-a-dashboard.html Sharing Dashboards>.
+--
+-- 'permissions', 'describeDashboardPermissionsResponse_permissions' - A structure that contains the permissions for the dashboard.
+--
+-- 'requestId', 'describeDashboardPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeDashboardPermissionsResponse_status' - The HTTP status of the request.
+newDescribeDashboardPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDashboardPermissionsResponse
+newDescribeDashboardPermissionsResponse pStatus_ =
+  DescribeDashboardPermissionsResponse'
+    { dashboardArn =
+        Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      linkSharingConfiguration =
+        Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dashboard.
+describeDashboardPermissionsResponse_dashboardArn :: Lens.Lens' DescribeDashboardPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDashboardPermissionsResponse_dashboardArn = Lens.lens (\DescribeDashboardPermissionsResponse' {dashboardArn} -> dashboardArn) (\s@DescribeDashboardPermissionsResponse' {} a -> s {dashboardArn = a} :: DescribeDashboardPermissionsResponse)
+
+-- | The ID for the dashboard.
+describeDashboardPermissionsResponse_dashboardId :: Lens.Lens' DescribeDashboardPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDashboardPermissionsResponse_dashboardId = Lens.lens (\DescribeDashboardPermissionsResponse' {dashboardId} -> dashboardId) (\s@DescribeDashboardPermissionsResponse' {} a -> s {dashboardId = a} :: DescribeDashboardPermissionsResponse)
+
+-- | A structure that contains the configuration of a shareable link that
+-- grants access to the dashboard. Your users can use the link to view and
+-- interact with the dashboard, if the dashboard has been shared with them.
+-- For more information about sharing dashboards, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/sharing-a-dashboard.html Sharing Dashboards>.
+describeDashboardPermissionsResponse_linkSharingConfiguration :: Lens.Lens' DescribeDashboardPermissionsResponse (Prelude.Maybe LinkSharingConfiguration)
+describeDashboardPermissionsResponse_linkSharingConfiguration = Lens.lens (\DescribeDashboardPermissionsResponse' {linkSharingConfiguration} -> linkSharingConfiguration) (\s@DescribeDashboardPermissionsResponse' {} a -> s {linkSharingConfiguration = a} :: DescribeDashboardPermissionsResponse)
+
+-- | A structure that contains the permissions for the dashboard.
+describeDashboardPermissionsResponse_permissions :: Lens.Lens' DescribeDashboardPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeDashboardPermissionsResponse_permissions = Lens.lens (\DescribeDashboardPermissionsResponse' {permissions} -> permissions) (\s@DescribeDashboardPermissionsResponse' {} a -> s {permissions = a} :: DescribeDashboardPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeDashboardPermissionsResponse_requestId :: Lens.Lens' DescribeDashboardPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDashboardPermissionsResponse_requestId = Lens.lens (\DescribeDashboardPermissionsResponse' {requestId} -> requestId) (\s@DescribeDashboardPermissionsResponse' {} a -> s {requestId = a} :: DescribeDashboardPermissionsResponse)
+
+-- | The HTTP status of the request.
+describeDashboardPermissionsResponse_status :: Lens.Lens' DescribeDashboardPermissionsResponse Prelude.Int
+describeDashboardPermissionsResponse_status = Lens.lens (\DescribeDashboardPermissionsResponse' {status} -> status) (\s@DescribeDashboardPermissionsResponse' {} a -> s {status = a} :: DescribeDashboardPermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDashboardPermissionsResponse
+  where
+  rnf DescribeDashboardPermissionsResponse' {..} =
+    Prelude.rnf dashboardArn
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf linkSharingConfiguration
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDataSet.hs b/gen/Amazonka/QuickSight/DescribeDataSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDataSet.hs
@@ -0,0 +1,196 @@
+{-# 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.QuickSight.DescribeDataSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a dataset. This operation doesn\'t support datasets that
+-- include uploaded files as a source.
+module Amazonka.QuickSight.DescribeDataSet
+  ( -- * Creating a Request
+    DescribeDataSet (..),
+    newDescribeDataSet,
+
+    -- * Request Lenses
+    describeDataSet_awsAccountId,
+    describeDataSet_dataSetId,
+
+    -- * Destructuring the Response
+    DescribeDataSetResponse (..),
+    newDescribeDataSetResponse,
+
+    -- * Response Lenses
+    describeDataSetResponse_dataSet,
+    describeDataSetResponse_requestId,
+    describeDataSetResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataSet' smart constructor.
+data DescribeDataSet = DescribeDataSet'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeDataSet_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'describeDataSet_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+newDescribeDataSet ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  DescribeDataSet
+newDescribeDataSet pAwsAccountId_ pDataSetId_ =
+  DescribeDataSet'
+    { awsAccountId = pAwsAccountId_,
+      dataSetId = pDataSetId_
+    }
+
+-- | The Amazon Web Services account ID.
+describeDataSet_awsAccountId :: Lens.Lens' DescribeDataSet Prelude.Text
+describeDataSet_awsAccountId = Lens.lens (\DescribeDataSet' {awsAccountId} -> awsAccountId) (\s@DescribeDataSet' {} a -> s {awsAccountId = a} :: DescribeDataSet)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+describeDataSet_dataSetId :: Lens.Lens' DescribeDataSet Prelude.Text
+describeDataSet_dataSetId = Lens.lens (\DescribeDataSet' {dataSetId} -> dataSetId) (\s@DescribeDataSet' {} a -> s {dataSetId = a} :: DescribeDataSet)
+
+instance Core.AWSRequest DescribeDataSet where
+  type
+    AWSResponse DescribeDataSet =
+      DescribeDataSetResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataSetResponse'
+            Prelude.<$> (x Data..?> "DataSet")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataSet where
+  hashWithSalt _salt DescribeDataSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+
+instance Prelude.NFData DescribeDataSet where
+  rnf DescribeDataSet' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+
+instance Data.ToHeaders DescribeDataSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDataSet where
+  toPath DescribeDataSet' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId
+      ]
+
+instance Data.ToQuery DescribeDataSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataSetResponse' smart constructor.
+data DescribeDataSetResponse = DescribeDataSetResponse'
+  { -- | Information on the dataset.
+    dataSet :: Prelude.Maybe DataSet,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSet', 'describeDataSetResponse_dataSet' - Information on the dataset.
+--
+-- 'requestId', 'describeDataSetResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeDataSetResponse_status' - The HTTP status of the request.
+newDescribeDataSetResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDataSetResponse
+newDescribeDataSetResponse pStatus_ =
+  DescribeDataSetResponse'
+    { dataSet = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Information on the dataset.
+describeDataSetResponse_dataSet :: Lens.Lens' DescribeDataSetResponse (Prelude.Maybe DataSet)
+describeDataSetResponse_dataSet = Lens.lens (\DescribeDataSetResponse' {dataSet} -> dataSet) (\s@DescribeDataSetResponse' {} a -> s {dataSet = a} :: DescribeDataSetResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeDataSetResponse_requestId :: Lens.Lens' DescribeDataSetResponse (Prelude.Maybe Prelude.Text)
+describeDataSetResponse_requestId = Lens.lens (\DescribeDataSetResponse' {requestId} -> requestId) (\s@DescribeDataSetResponse' {} a -> s {requestId = a} :: DescribeDataSetResponse)
+
+-- | The HTTP status of the request.
+describeDataSetResponse_status :: Lens.Lens' DescribeDataSetResponse Prelude.Int
+describeDataSetResponse_status = Lens.lens (\DescribeDataSetResponse' {status} -> status) (\s@DescribeDataSetResponse' {} a -> s {status = a} :: DescribeDataSetResponse)
+
+instance Prelude.NFData DescribeDataSetResponse where
+  rnf DescribeDataSetResponse' {..} =
+    Prelude.rnf dataSet
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDataSetPermissions.hs b/gen/Amazonka/QuickSight/DescribeDataSetPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDataSetPermissions.hs
@@ -0,0 +1,233 @@
+{-# 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.QuickSight.DescribeDataSetPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the permissions on a dataset.
+--
+-- The permissions resource is
+-- @arn:aws:quicksight:region:aws-account-id:dataset\/data-set-id@.
+module Amazonka.QuickSight.DescribeDataSetPermissions
+  ( -- * Creating a Request
+    DescribeDataSetPermissions (..),
+    newDescribeDataSetPermissions,
+
+    -- * Request Lenses
+    describeDataSetPermissions_awsAccountId,
+    describeDataSetPermissions_dataSetId,
+
+    -- * Destructuring the Response
+    DescribeDataSetPermissionsResponse (..),
+    newDescribeDataSetPermissionsResponse,
+
+    -- * Response Lenses
+    describeDataSetPermissionsResponse_dataSetArn,
+    describeDataSetPermissionsResponse_dataSetId,
+    describeDataSetPermissionsResponse_permissions,
+    describeDataSetPermissionsResponse_requestId,
+    describeDataSetPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataSetPermissions' smart constructor.
+data DescribeDataSetPermissions = DescribeDataSetPermissions'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSetPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeDataSetPermissions_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'describeDataSetPermissions_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+newDescribeDataSetPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  DescribeDataSetPermissions
+newDescribeDataSetPermissions
+  pAwsAccountId_
+  pDataSetId_ =
+    DescribeDataSetPermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        dataSetId = pDataSetId_
+      }
+
+-- | The Amazon Web Services account ID.
+describeDataSetPermissions_awsAccountId :: Lens.Lens' DescribeDataSetPermissions Prelude.Text
+describeDataSetPermissions_awsAccountId = Lens.lens (\DescribeDataSetPermissions' {awsAccountId} -> awsAccountId) (\s@DescribeDataSetPermissions' {} a -> s {awsAccountId = a} :: DescribeDataSetPermissions)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+describeDataSetPermissions_dataSetId :: Lens.Lens' DescribeDataSetPermissions Prelude.Text
+describeDataSetPermissions_dataSetId = Lens.lens (\DescribeDataSetPermissions' {dataSetId} -> dataSetId) (\s@DescribeDataSetPermissions' {} a -> s {dataSetId = a} :: DescribeDataSetPermissions)
+
+instance Core.AWSRequest DescribeDataSetPermissions where
+  type
+    AWSResponse DescribeDataSetPermissions =
+      DescribeDataSetPermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataSetPermissionsResponse'
+            Prelude.<$> (x Data..?> "DataSetArn")
+            Prelude.<*> (x Data..?> "DataSetId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataSetPermissions where
+  hashWithSalt _salt DescribeDataSetPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+
+instance Prelude.NFData DescribeDataSetPermissions where
+  rnf DescribeDataSetPermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+
+instance Data.ToHeaders DescribeDataSetPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDataSetPermissions where
+  toPath DescribeDataSetPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeDataSetPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataSetPermissionsResponse' smart constructor.
+data DescribeDataSetPermissionsResponse = DescribeDataSetPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the dataset.
+    dataSetArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | A list of resource permissions on the dataset.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSetPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetArn', 'describeDataSetPermissionsResponse_dataSetArn' - The Amazon Resource Name (ARN) of the dataset.
+--
+-- 'dataSetId', 'describeDataSetPermissionsResponse_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+--
+-- 'permissions', 'describeDataSetPermissionsResponse_permissions' - A list of resource permissions on the dataset.
+--
+-- 'requestId', 'describeDataSetPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeDataSetPermissionsResponse_status' - The HTTP status of the request.
+newDescribeDataSetPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDataSetPermissionsResponse
+newDescribeDataSetPermissionsResponse pStatus_ =
+  DescribeDataSetPermissionsResponse'
+    { dataSetArn =
+        Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset.
+describeDataSetPermissionsResponse_dataSetArn :: Lens.Lens' DescribeDataSetPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDataSetPermissionsResponse_dataSetArn = Lens.lens (\DescribeDataSetPermissionsResponse' {dataSetArn} -> dataSetArn) (\s@DescribeDataSetPermissionsResponse' {} a -> s {dataSetArn = a} :: DescribeDataSetPermissionsResponse)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+describeDataSetPermissionsResponse_dataSetId :: Lens.Lens' DescribeDataSetPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDataSetPermissionsResponse_dataSetId = Lens.lens (\DescribeDataSetPermissionsResponse' {dataSetId} -> dataSetId) (\s@DescribeDataSetPermissionsResponse' {} a -> s {dataSetId = a} :: DescribeDataSetPermissionsResponse)
+
+-- | A list of resource permissions on the dataset.
+describeDataSetPermissionsResponse_permissions :: Lens.Lens' DescribeDataSetPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeDataSetPermissionsResponse_permissions = Lens.lens (\DescribeDataSetPermissionsResponse' {permissions} -> permissions) (\s@DescribeDataSetPermissionsResponse' {} a -> s {permissions = a} :: DescribeDataSetPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeDataSetPermissionsResponse_requestId :: Lens.Lens' DescribeDataSetPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDataSetPermissionsResponse_requestId = Lens.lens (\DescribeDataSetPermissionsResponse' {requestId} -> requestId) (\s@DescribeDataSetPermissionsResponse' {} a -> s {requestId = a} :: DescribeDataSetPermissionsResponse)
+
+-- | The HTTP status of the request.
+describeDataSetPermissionsResponse_status :: Lens.Lens' DescribeDataSetPermissionsResponse Prelude.Int
+describeDataSetPermissionsResponse_status = Lens.lens (\DescribeDataSetPermissionsResponse' {status} -> status) (\s@DescribeDataSetPermissionsResponse' {} a -> s {status = a} :: DescribeDataSetPermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDataSetPermissionsResponse
+  where
+  rnf DescribeDataSetPermissionsResponse' {..} =
+    Prelude.rnf dataSetArn
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDataSource.hs b/gen/Amazonka/QuickSight/DescribeDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDataSource.hs
@@ -0,0 +1,196 @@
+{-# 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.QuickSight.DescribeDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a data source.
+module Amazonka.QuickSight.DescribeDataSource
+  ( -- * Creating a Request
+    DescribeDataSource (..),
+    newDescribeDataSource,
+
+    -- * Request Lenses
+    describeDataSource_awsAccountId,
+    describeDataSource_dataSourceId,
+
+    -- * Destructuring the Response
+    DescribeDataSourceResponse (..),
+    newDescribeDataSourceResponse,
+
+    -- * Response Lenses
+    describeDataSourceResponse_dataSource,
+    describeDataSourceResponse_requestId,
+    describeDataSourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataSource' smart constructor.
+data DescribeDataSource = DescribeDataSource'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeDataSource_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSourceId', 'describeDataSource_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+newDescribeDataSource ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSourceId'
+  Prelude.Text ->
+  DescribeDataSource
+newDescribeDataSource pAwsAccountId_ pDataSourceId_ =
+  DescribeDataSource'
+    { awsAccountId = pAwsAccountId_,
+      dataSourceId = pDataSourceId_
+    }
+
+-- | The Amazon Web Services account ID.
+describeDataSource_awsAccountId :: Lens.Lens' DescribeDataSource Prelude.Text
+describeDataSource_awsAccountId = Lens.lens (\DescribeDataSource' {awsAccountId} -> awsAccountId) (\s@DescribeDataSource' {} a -> s {awsAccountId = a} :: DescribeDataSource)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+describeDataSource_dataSourceId :: Lens.Lens' DescribeDataSource Prelude.Text
+describeDataSource_dataSourceId = Lens.lens (\DescribeDataSource' {dataSourceId} -> dataSourceId) (\s@DescribeDataSource' {} a -> s {dataSourceId = a} :: DescribeDataSource)
+
+instance Core.AWSRequest DescribeDataSource where
+  type
+    AWSResponse DescribeDataSource =
+      DescribeDataSourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataSourceResponse'
+            Prelude.<$> (x Data..?> "DataSource")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataSource where
+  hashWithSalt _salt DescribeDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSourceId
+
+instance Prelude.NFData DescribeDataSource where
+  rnf DescribeDataSource' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSourceId
+
+instance Data.ToHeaders DescribeDataSource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDataSource where
+  toPath DescribeDataSource' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources/",
+        Data.toBS dataSourceId
+      ]
+
+instance Data.ToQuery DescribeDataSource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataSourceResponse' smart constructor.
+data DescribeDataSourceResponse = DescribeDataSourceResponse'
+  { -- | The information on the data source.
+    dataSource :: Prelude.Maybe DataSource,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSource', 'describeDataSourceResponse_dataSource' - The information on the data source.
+--
+-- 'requestId', 'describeDataSourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeDataSourceResponse_status' - The HTTP status of the request.
+newDescribeDataSourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDataSourceResponse
+newDescribeDataSourceResponse pStatus_ =
+  DescribeDataSourceResponse'
+    { dataSource =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The information on the data source.
+describeDataSourceResponse_dataSource :: Lens.Lens' DescribeDataSourceResponse (Prelude.Maybe DataSource)
+describeDataSourceResponse_dataSource = Lens.lens (\DescribeDataSourceResponse' {dataSource} -> dataSource) (\s@DescribeDataSourceResponse' {} a -> s {dataSource = a} :: DescribeDataSourceResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeDataSourceResponse_requestId :: Lens.Lens' DescribeDataSourceResponse (Prelude.Maybe Prelude.Text)
+describeDataSourceResponse_requestId = Lens.lens (\DescribeDataSourceResponse' {requestId} -> requestId) (\s@DescribeDataSourceResponse' {} a -> s {requestId = a} :: DescribeDataSourceResponse)
+
+-- | The HTTP status of the request.
+describeDataSourceResponse_status :: Lens.Lens' DescribeDataSourceResponse Prelude.Int
+describeDataSourceResponse_status = Lens.lens (\DescribeDataSourceResponse' {status} -> status) (\s@DescribeDataSourceResponse' {} a -> s {status = a} :: DescribeDataSourceResponse)
+
+instance Prelude.NFData DescribeDataSourceResponse where
+  rnf DescribeDataSourceResponse' {..} =
+    Prelude.rnf dataSource
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeDataSourcePermissions.hs b/gen/Amazonka/QuickSight/DescribeDataSourcePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeDataSourcePermissions.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.QuickSight.DescribeDataSourcePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the resource permissions for a data source.
+module Amazonka.QuickSight.DescribeDataSourcePermissions
+  ( -- * Creating a Request
+    DescribeDataSourcePermissions (..),
+    newDescribeDataSourcePermissions,
+
+    -- * Request Lenses
+    describeDataSourcePermissions_awsAccountId,
+    describeDataSourcePermissions_dataSourceId,
+
+    -- * Destructuring the Response
+    DescribeDataSourcePermissionsResponse (..),
+    newDescribeDataSourcePermissionsResponse,
+
+    -- * Response Lenses
+    describeDataSourcePermissionsResponse_dataSourceArn,
+    describeDataSourcePermissionsResponse_dataSourceId,
+    describeDataSourcePermissionsResponse_permissions,
+    describeDataSourcePermissionsResponse_requestId,
+    describeDataSourcePermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataSourcePermissions' smart constructor.
+data DescribeDataSourcePermissions = DescribeDataSourcePermissions'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSourcePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeDataSourcePermissions_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSourceId', 'describeDataSourcePermissions_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+newDescribeDataSourcePermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSourceId'
+  Prelude.Text ->
+  DescribeDataSourcePermissions
+newDescribeDataSourcePermissions
+  pAwsAccountId_
+  pDataSourceId_ =
+    DescribeDataSourcePermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        dataSourceId = pDataSourceId_
+      }
+
+-- | The Amazon Web Services account ID.
+describeDataSourcePermissions_awsAccountId :: Lens.Lens' DescribeDataSourcePermissions Prelude.Text
+describeDataSourcePermissions_awsAccountId = Lens.lens (\DescribeDataSourcePermissions' {awsAccountId} -> awsAccountId) (\s@DescribeDataSourcePermissions' {} a -> s {awsAccountId = a} :: DescribeDataSourcePermissions)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+describeDataSourcePermissions_dataSourceId :: Lens.Lens' DescribeDataSourcePermissions Prelude.Text
+describeDataSourcePermissions_dataSourceId = Lens.lens (\DescribeDataSourcePermissions' {dataSourceId} -> dataSourceId) (\s@DescribeDataSourcePermissions' {} a -> s {dataSourceId = a} :: DescribeDataSourcePermissions)
+
+instance
+  Core.AWSRequest
+    DescribeDataSourcePermissions
+  where
+  type
+    AWSResponse DescribeDataSourcePermissions =
+      DescribeDataSourcePermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataSourcePermissionsResponse'
+            Prelude.<$> (x Data..?> "DataSourceArn")
+            Prelude.<*> (x Data..?> "DataSourceId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeDataSourcePermissions
+  where
+  hashWithSalt _salt DescribeDataSourcePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSourceId
+
+instance Prelude.NFData DescribeDataSourcePermissions where
+  rnf DescribeDataSourcePermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSourceId
+
+instance Data.ToHeaders DescribeDataSourcePermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDataSourcePermissions where
+  toPath DescribeDataSourcePermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources/",
+        Data.toBS dataSourceId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeDataSourcePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataSourcePermissionsResponse' smart constructor.
+data DescribeDataSourcePermissionsResponse = DescribeDataSourcePermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the data source.
+    dataSourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | A list of resource permissions on the data source.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataSourcePermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSourceArn', 'describeDataSourcePermissionsResponse_dataSourceArn' - The Amazon Resource Name (ARN) of the data source.
+--
+-- 'dataSourceId', 'describeDataSourcePermissionsResponse_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'permissions', 'describeDataSourcePermissionsResponse_permissions' - A list of resource permissions on the data source.
+--
+-- 'requestId', 'describeDataSourcePermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeDataSourcePermissionsResponse_status' - The HTTP status of the request.
+newDescribeDataSourcePermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeDataSourcePermissionsResponse
+newDescribeDataSourcePermissionsResponse pStatus_ =
+  DescribeDataSourcePermissionsResponse'
+    { dataSourceArn =
+        Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the data source.
+describeDataSourcePermissionsResponse_dataSourceArn :: Lens.Lens' DescribeDataSourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDataSourcePermissionsResponse_dataSourceArn = Lens.lens (\DescribeDataSourcePermissionsResponse' {dataSourceArn} -> dataSourceArn) (\s@DescribeDataSourcePermissionsResponse' {} a -> s {dataSourceArn = a} :: DescribeDataSourcePermissionsResponse)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+describeDataSourcePermissionsResponse_dataSourceId :: Lens.Lens' DescribeDataSourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDataSourcePermissionsResponse_dataSourceId = Lens.lens (\DescribeDataSourcePermissionsResponse' {dataSourceId} -> dataSourceId) (\s@DescribeDataSourcePermissionsResponse' {} a -> s {dataSourceId = a} :: DescribeDataSourcePermissionsResponse)
+
+-- | A list of resource permissions on the data source.
+describeDataSourcePermissionsResponse_permissions :: Lens.Lens' DescribeDataSourcePermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeDataSourcePermissionsResponse_permissions = Lens.lens (\DescribeDataSourcePermissionsResponse' {permissions} -> permissions) (\s@DescribeDataSourcePermissionsResponse' {} a -> s {permissions = a} :: DescribeDataSourcePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeDataSourcePermissionsResponse_requestId :: Lens.Lens' DescribeDataSourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeDataSourcePermissionsResponse_requestId = Lens.lens (\DescribeDataSourcePermissionsResponse' {requestId} -> requestId) (\s@DescribeDataSourcePermissionsResponse' {} a -> s {requestId = a} :: DescribeDataSourcePermissionsResponse)
+
+-- | The HTTP status of the request.
+describeDataSourcePermissionsResponse_status :: Lens.Lens' DescribeDataSourcePermissionsResponse Prelude.Int
+describeDataSourcePermissionsResponse_status = Lens.lens (\DescribeDataSourcePermissionsResponse' {status} -> status) (\s@DescribeDataSourcePermissionsResponse' {} a -> s {status = a} :: DescribeDataSourcePermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDataSourcePermissionsResponse
+  where
+  rnf DescribeDataSourcePermissionsResponse' {..} =
+    Prelude.rnf dataSourceArn
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeFolder.hs b/gen/Amazonka/QuickSight/DescribeFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeFolder.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a folder.
+module Amazonka.QuickSight.DescribeFolder
+  ( -- * Creating a Request
+    DescribeFolder (..),
+    newDescribeFolder,
+
+    -- * Request Lenses
+    describeFolder_awsAccountId,
+    describeFolder_folderId,
+
+    -- * Destructuring the Response
+    DescribeFolderResponse (..),
+    newDescribeFolderResponse,
+
+    -- * Response Lenses
+    describeFolderResponse_folder,
+    describeFolderResponse_requestId,
+    describeFolderResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeFolder' smart constructor.
+data DescribeFolder = DescribeFolder'
+  { -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeFolder_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'describeFolder_folderId' - The ID of the folder.
+newDescribeFolder ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  DescribeFolder
+newDescribeFolder pAwsAccountId_ pFolderId_ =
+  DescribeFolder'
+    { awsAccountId = pAwsAccountId_,
+      folderId = pFolderId_
+    }
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+describeFolder_awsAccountId :: Lens.Lens' DescribeFolder Prelude.Text
+describeFolder_awsAccountId = Lens.lens (\DescribeFolder' {awsAccountId} -> awsAccountId) (\s@DescribeFolder' {} a -> s {awsAccountId = a} :: DescribeFolder)
+
+-- | The ID of the folder.
+describeFolder_folderId :: Lens.Lens' DescribeFolder Prelude.Text
+describeFolder_folderId = Lens.lens (\DescribeFolder' {folderId} -> folderId) (\s@DescribeFolder' {} a -> s {folderId = a} :: DescribeFolder)
+
+instance Core.AWSRequest DescribeFolder where
+  type
+    AWSResponse DescribeFolder =
+      DescribeFolderResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFolderResponse'
+            Prelude.<$> (x Data..?> "Folder")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFolder where
+  hashWithSalt _salt DescribeFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData DescribeFolder where
+  rnf DescribeFolder' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders DescribeFolder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeFolder where
+  toPath DescribeFolder' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId
+      ]
+
+instance Data.ToQuery DescribeFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFolderResponse' smart constructor.
+data DescribeFolderResponse = DescribeFolderResponse'
+  { -- | Information about the folder.
+    folder :: Prelude.Maybe Folder,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'folder', 'describeFolderResponse_folder' - Information about the folder.
+--
+-- 'requestId', 'describeFolderResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeFolderResponse_status' - The HTTP status of the request.
+newDescribeFolderResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeFolderResponse
+newDescribeFolderResponse pStatus_ =
+  DescribeFolderResponse'
+    { folder = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Information about the folder.
+describeFolderResponse_folder :: Lens.Lens' DescribeFolderResponse (Prelude.Maybe Folder)
+describeFolderResponse_folder = Lens.lens (\DescribeFolderResponse' {folder} -> folder) (\s@DescribeFolderResponse' {} a -> s {folder = a} :: DescribeFolderResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeFolderResponse_requestId :: Lens.Lens' DescribeFolderResponse (Prelude.Maybe Prelude.Text)
+describeFolderResponse_requestId = Lens.lens (\DescribeFolderResponse' {requestId} -> requestId) (\s@DescribeFolderResponse' {} a -> s {requestId = a} :: DescribeFolderResponse)
+
+-- | The HTTP status of the request.
+describeFolderResponse_status :: Lens.Lens' DescribeFolderResponse Prelude.Int
+describeFolderResponse_status = Lens.lens (\DescribeFolderResponse' {status} -> status) (\s@DescribeFolderResponse' {} a -> s {status = a} :: DescribeFolderResponse)
+
+instance Prelude.NFData DescribeFolderResponse where
+  rnf DescribeFolderResponse' {..} =
+    Prelude.rnf folder
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeFolderPermissions.hs b/gen/Amazonka/QuickSight/DescribeFolderPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeFolderPermissions.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.QuickSight.DescribeFolderPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes permissions for a folder.
+module Amazonka.QuickSight.DescribeFolderPermissions
+  ( -- * Creating a Request
+    DescribeFolderPermissions (..),
+    newDescribeFolderPermissions,
+
+    -- * Request Lenses
+    describeFolderPermissions_awsAccountId,
+    describeFolderPermissions_folderId,
+
+    -- * Destructuring the Response
+    DescribeFolderPermissionsResponse (..),
+    newDescribeFolderPermissionsResponse,
+
+    -- * Response Lenses
+    describeFolderPermissionsResponse_arn,
+    describeFolderPermissionsResponse_folderId,
+    describeFolderPermissionsResponse_permissions,
+    describeFolderPermissionsResponse_requestId,
+    describeFolderPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeFolderPermissions' smart constructor.
+data DescribeFolderPermissions = DescribeFolderPermissions'
+  { -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeFolderPermissions_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'describeFolderPermissions_folderId' - The ID of the folder.
+newDescribeFolderPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  DescribeFolderPermissions
+newDescribeFolderPermissions
+  pAwsAccountId_
+  pFolderId_ =
+    DescribeFolderPermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        folderId = pFolderId_
+      }
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+describeFolderPermissions_awsAccountId :: Lens.Lens' DescribeFolderPermissions Prelude.Text
+describeFolderPermissions_awsAccountId = Lens.lens (\DescribeFolderPermissions' {awsAccountId} -> awsAccountId) (\s@DescribeFolderPermissions' {} a -> s {awsAccountId = a} :: DescribeFolderPermissions)
+
+-- | The ID of the folder.
+describeFolderPermissions_folderId :: Lens.Lens' DescribeFolderPermissions Prelude.Text
+describeFolderPermissions_folderId = Lens.lens (\DescribeFolderPermissions' {folderId} -> folderId) (\s@DescribeFolderPermissions' {} a -> s {folderId = a} :: DescribeFolderPermissions)
+
+instance Core.AWSRequest DescribeFolderPermissions where
+  type
+    AWSResponse DescribeFolderPermissions =
+      DescribeFolderPermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFolderPermissionsResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "FolderId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFolderPermissions where
+  hashWithSalt _salt DescribeFolderPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData DescribeFolderPermissions where
+  rnf DescribeFolderPermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders DescribeFolderPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeFolderPermissions where
+  toPath DescribeFolderPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeFolderPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFolderPermissionsResponse' smart constructor.
+data DescribeFolderPermissionsResponse = DescribeFolderPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) for the folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the permissions on the folder.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'describeFolderPermissionsResponse_arn' - The Amazon Resource Name (ARN) for the folder.
+--
+-- 'folderId', 'describeFolderPermissionsResponse_folderId' - The ID of the folder.
+--
+-- 'permissions', 'describeFolderPermissionsResponse_permissions' - Information about the permissions on the folder.
+--
+-- 'requestId', 'describeFolderPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeFolderPermissionsResponse_status' - The HTTP status of the request.
+newDescribeFolderPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeFolderPermissionsResponse
+newDescribeFolderPermissionsResponse pStatus_ =
+  DescribeFolderPermissionsResponse'
+    { arn =
+        Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the folder.
+describeFolderPermissionsResponse_arn :: Lens.Lens' DescribeFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeFolderPermissionsResponse_arn = Lens.lens (\DescribeFolderPermissionsResponse' {arn} -> arn) (\s@DescribeFolderPermissionsResponse' {} a -> s {arn = a} :: DescribeFolderPermissionsResponse)
+
+-- | The ID of the folder.
+describeFolderPermissionsResponse_folderId :: Lens.Lens' DescribeFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeFolderPermissionsResponse_folderId = Lens.lens (\DescribeFolderPermissionsResponse' {folderId} -> folderId) (\s@DescribeFolderPermissionsResponse' {} a -> s {folderId = a} :: DescribeFolderPermissionsResponse)
+
+-- | Information about the permissions on the folder.
+describeFolderPermissionsResponse_permissions :: Lens.Lens' DescribeFolderPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeFolderPermissionsResponse_permissions = Lens.lens (\DescribeFolderPermissionsResponse' {permissions} -> permissions) (\s@DescribeFolderPermissionsResponse' {} a -> s {permissions = a} :: DescribeFolderPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeFolderPermissionsResponse_requestId :: Lens.Lens' DescribeFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeFolderPermissionsResponse_requestId = Lens.lens (\DescribeFolderPermissionsResponse' {requestId} -> requestId) (\s@DescribeFolderPermissionsResponse' {} a -> s {requestId = a} :: DescribeFolderPermissionsResponse)
+
+-- | The HTTP status of the request.
+describeFolderPermissionsResponse_status :: Lens.Lens' DescribeFolderPermissionsResponse Prelude.Int
+describeFolderPermissionsResponse_status = Lens.lens (\DescribeFolderPermissionsResponse' {status} -> status) (\s@DescribeFolderPermissionsResponse' {} a -> s {status = a} :: DescribeFolderPermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeFolderPermissionsResponse
+  where
+  rnf DescribeFolderPermissionsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeFolderResolvedPermissions.hs b/gen/Amazonka/QuickSight/DescribeFolderResolvedPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeFolderResolvedPermissions.hs
@@ -0,0 +1,246 @@
+{-# 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.QuickSight.DescribeFolderResolvedPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the folder resolved permissions. Permissions consists of both
+-- folder direct permissions and the inherited permissions from the
+-- ancestor folders.
+module Amazonka.QuickSight.DescribeFolderResolvedPermissions
+  ( -- * Creating a Request
+    DescribeFolderResolvedPermissions (..),
+    newDescribeFolderResolvedPermissions,
+
+    -- * Request Lenses
+    describeFolderResolvedPermissions_awsAccountId,
+    describeFolderResolvedPermissions_folderId,
+
+    -- * Destructuring the Response
+    DescribeFolderResolvedPermissionsResponse (..),
+    newDescribeFolderResolvedPermissionsResponse,
+
+    -- * Response Lenses
+    describeFolderResolvedPermissionsResponse_arn,
+    describeFolderResolvedPermissionsResponse_folderId,
+    describeFolderResolvedPermissionsResponse_permissions,
+    describeFolderResolvedPermissionsResponse_requestId,
+    describeFolderResolvedPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeFolderResolvedPermissions' smart constructor.
+data DescribeFolderResolvedPermissions = DescribeFolderResolvedPermissions'
+  { -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderResolvedPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeFolderResolvedPermissions_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'describeFolderResolvedPermissions_folderId' - The ID of the folder.
+newDescribeFolderResolvedPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  DescribeFolderResolvedPermissions
+newDescribeFolderResolvedPermissions
+  pAwsAccountId_
+  pFolderId_ =
+    DescribeFolderResolvedPermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        folderId = pFolderId_
+      }
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+describeFolderResolvedPermissions_awsAccountId :: Lens.Lens' DescribeFolderResolvedPermissions Prelude.Text
+describeFolderResolvedPermissions_awsAccountId = Lens.lens (\DescribeFolderResolvedPermissions' {awsAccountId} -> awsAccountId) (\s@DescribeFolderResolvedPermissions' {} a -> s {awsAccountId = a} :: DescribeFolderResolvedPermissions)
+
+-- | The ID of the folder.
+describeFolderResolvedPermissions_folderId :: Lens.Lens' DescribeFolderResolvedPermissions Prelude.Text
+describeFolderResolvedPermissions_folderId = Lens.lens (\DescribeFolderResolvedPermissions' {folderId} -> folderId) (\s@DescribeFolderResolvedPermissions' {} a -> s {folderId = a} :: DescribeFolderResolvedPermissions)
+
+instance
+  Core.AWSRequest
+    DescribeFolderResolvedPermissions
+  where
+  type
+    AWSResponse DescribeFolderResolvedPermissions =
+      DescribeFolderResolvedPermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFolderResolvedPermissionsResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "FolderId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeFolderResolvedPermissions
+  where
+  hashWithSalt
+    _salt
+    DescribeFolderResolvedPermissions' {..} =
+      _salt
+        `Prelude.hashWithSalt` awsAccountId
+        `Prelude.hashWithSalt` folderId
+
+instance
+  Prelude.NFData
+    DescribeFolderResolvedPermissions
+  where
+  rnf DescribeFolderResolvedPermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance
+  Data.ToHeaders
+    DescribeFolderResolvedPermissions
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribeFolderResolvedPermissions
+  where
+  toPath DescribeFolderResolvedPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId,
+        "/resolved-permissions"
+      ]
+
+instance
+  Data.ToQuery
+    DescribeFolderResolvedPermissions
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFolderResolvedPermissionsResponse' smart constructor.
+data DescribeFolderResolvedPermissionsResponse = DescribeFolderResolvedPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the permissions for the folder.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderResolvedPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'describeFolderResolvedPermissionsResponse_arn' - The Amazon Resource Name (ARN) of the folder.
+--
+-- 'folderId', 'describeFolderResolvedPermissionsResponse_folderId' - The ID of the folder.
+--
+-- 'permissions', 'describeFolderResolvedPermissionsResponse_permissions' - Information about the permissions for the folder.
+--
+-- 'requestId', 'describeFolderResolvedPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeFolderResolvedPermissionsResponse_status' - The HTTP status of the request.
+newDescribeFolderResolvedPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeFolderResolvedPermissionsResponse
+newDescribeFolderResolvedPermissionsResponse pStatus_ =
+  DescribeFolderResolvedPermissionsResponse'
+    { arn =
+        Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the folder.
+describeFolderResolvedPermissionsResponse_arn :: Lens.Lens' DescribeFolderResolvedPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeFolderResolvedPermissionsResponse_arn = Lens.lens (\DescribeFolderResolvedPermissionsResponse' {arn} -> arn) (\s@DescribeFolderResolvedPermissionsResponse' {} a -> s {arn = a} :: DescribeFolderResolvedPermissionsResponse)
+
+-- | The ID of the folder.
+describeFolderResolvedPermissionsResponse_folderId :: Lens.Lens' DescribeFolderResolvedPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeFolderResolvedPermissionsResponse_folderId = Lens.lens (\DescribeFolderResolvedPermissionsResponse' {folderId} -> folderId) (\s@DescribeFolderResolvedPermissionsResponse' {} a -> s {folderId = a} :: DescribeFolderResolvedPermissionsResponse)
+
+-- | Information about the permissions for the folder.
+describeFolderResolvedPermissionsResponse_permissions :: Lens.Lens' DescribeFolderResolvedPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeFolderResolvedPermissionsResponse_permissions = Lens.lens (\DescribeFolderResolvedPermissionsResponse' {permissions} -> permissions) (\s@DescribeFolderResolvedPermissionsResponse' {} a -> s {permissions = a} :: DescribeFolderResolvedPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeFolderResolvedPermissionsResponse_requestId :: Lens.Lens' DescribeFolderResolvedPermissionsResponse (Prelude.Maybe Prelude.Text)
+describeFolderResolvedPermissionsResponse_requestId = Lens.lens (\DescribeFolderResolvedPermissionsResponse' {requestId} -> requestId) (\s@DescribeFolderResolvedPermissionsResponse' {} a -> s {requestId = a} :: DescribeFolderResolvedPermissionsResponse)
+
+-- | The HTTP status of the request.
+describeFolderResolvedPermissionsResponse_status :: Lens.Lens' DescribeFolderResolvedPermissionsResponse Prelude.Int
+describeFolderResolvedPermissionsResponse_status = Lens.lens (\DescribeFolderResolvedPermissionsResponse' {status} -> status) (\s@DescribeFolderResolvedPermissionsResponse' {} a -> s {status = a} :: DescribeFolderResolvedPermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeFolderResolvedPermissionsResponse
+  where
+  rnf DescribeFolderResolvedPermissionsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeGroup.hs b/gen/Amazonka/QuickSight/DescribeGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeGroup.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.QuickSight.DescribeGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns an Amazon QuickSight group\'s description and Amazon Resource
+-- Name (ARN).
+module Amazonka.QuickSight.DescribeGroup
+  ( -- * Creating a Request
+    DescribeGroup (..),
+    newDescribeGroup,
+
+    -- * Request Lenses
+    describeGroup_groupName,
+    describeGroup_awsAccountId,
+    describeGroup_namespace,
+
+    -- * Destructuring the Response
+    DescribeGroupResponse (..),
+    newDescribeGroupResponse,
+
+    -- * Response Lenses
+    describeGroupResponse_group,
+    describeGroupResponse_requestId,
+    describeGroupResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeGroup' smart constructor.
+data DescribeGroup = DescribeGroup'
+  { -- | The name of the group that you want to describe.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace of the group that you want described.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupName', 'describeGroup_groupName' - The name of the group that you want to describe.
+--
+-- 'awsAccountId', 'describeGroup_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'describeGroup_namespace' - The namespace of the group that you want described.
+newDescribeGroup ::
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DescribeGroup
+newDescribeGroup
+  pGroupName_
+  pAwsAccountId_
+  pNamespace_ =
+    DescribeGroup'
+      { groupName = pGroupName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The name of the group that you want to describe.
+describeGroup_groupName :: Lens.Lens' DescribeGroup Prelude.Text
+describeGroup_groupName = Lens.lens (\DescribeGroup' {groupName} -> groupName) (\s@DescribeGroup' {} a -> s {groupName = a} :: DescribeGroup)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+describeGroup_awsAccountId :: Lens.Lens' DescribeGroup Prelude.Text
+describeGroup_awsAccountId = Lens.lens (\DescribeGroup' {awsAccountId} -> awsAccountId) (\s@DescribeGroup' {} a -> s {awsAccountId = a} :: DescribeGroup)
+
+-- | The namespace of the group that you want described.
+describeGroup_namespace :: Lens.Lens' DescribeGroup Prelude.Text
+describeGroup_namespace = Lens.lens (\DescribeGroup' {namespace} -> namespace) (\s@DescribeGroup' {} a -> s {namespace = a} :: DescribeGroup)
+
+instance Core.AWSRequest DescribeGroup where
+  type
+    AWSResponse DescribeGroup =
+      DescribeGroupResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeGroupResponse'
+            Prelude.<$> (x Data..?> "Group")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeGroup where
+  hashWithSalt _salt DescribeGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DescribeGroup where
+  rnf DescribeGroup' {..} =
+    Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DescribeGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeGroup where
+  toPath DescribeGroup' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName
+      ]
+
+instance Data.ToQuery DescribeGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeGroupResponse' smart constructor.
+data DescribeGroupResponse = DescribeGroupResponse'
+  { -- | The name of the group.
+    group' :: Prelude.Maybe Group,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'group'', 'describeGroupResponse_group' - The name of the group.
+--
+-- 'requestId', 'describeGroupResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeGroupResponse_status' - The HTTP status of the request.
+newDescribeGroupResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeGroupResponse
+newDescribeGroupResponse pStatus_ =
+  DescribeGroupResponse'
+    { group' = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The name of the group.
+describeGroupResponse_group :: Lens.Lens' DescribeGroupResponse (Prelude.Maybe Group)
+describeGroupResponse_group = Lens.lens (\DescribeGroupResponse' {group'} -> group') (\s@DescribeGroupResponse' {} a -> s {group' = a} :: DescribeGroupResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeGroupResponse_requestId :: Lens.Lens' DescribeGroupResponse (Prelude.Maybe Prelude.Text)
+describeGroupResponse_requestId = Lens.lens (\DescribeGroupResponse' {requestId} -> requestId) (\s@DescribeGroupResponse' {} a -> s {requestId = a} :: DescribeGroupResponse)
+
+-- | The HTTP status of the request.
+describeGroupResponse_status :: Lens.Lens' DescribeGroupResponse Prelude.Int
+describeGroupResponse_status = Lens.lens (\DescribeGroupResponse' {status} -> status) (\s@DescribeGroupResponse' {} a -> s {status = a} :: DescribeGroupResponse)
+
+instance Prelude.NFData DescribeGroupResponse where
+  rnf DescribeGroupResponse' {..} =
+    Prelude.rnf group'
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeGroupMembership.hs b/gen/Amazonka/QuickSight/DescribeGroupMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeGroupMembership.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.QuickSight.DescribeGroupMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @DescribeGroupMembership@ operation to determine if a user is a
+-- member of the specified group. If the user exists and is a member of the
+-- specified group, an associated @GroupMember@ object is returned.
+module Amazonka.QuickSight.DescribeGroupMembership
+  ( -- * Creating a Request
+    DescribeGroupMembership (..),
+    newDescribeGroupMembership,
+
+    -- * Request Lenses
+    describeGroupMembership_memberName,
+    describeGroupMembership_groupName,
+    describeGroupMembership_awsAccountId,
+    describeGroupMembership_namespace,
+
+    -- * Destructuring the Response
+    DescribeGroupMembershipResponse (..),
+    newDescribeGroupMembershipResponse,
+
+    -- * Response Lenses
+    describeGroupMembershipResponse_groupMember,
+    describeGroupMembershipResponse_requestId,
+    describeGroupMembershipResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeGroupMembership' smart constructor.
+data DescribeGroupMembership = DescribeGroupMembership'
+  { -- | The user name of the user that you want to search for.
+    memberName :: Prelude.Text,
+    -- | The name of the group that you want to search.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that includes the group you are searching within.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGroupMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'memberName', 'describeGroupMembership_memberName' - The user name of the user that you want to search for.
+--
+-- 'groupName', 'describeGroupMembership_groupName' - The name of the group that you want to search.
+--
+-- 'awsAccountId', 'describeGroupMembership_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'describeGroupMembership_namespace' - The namespace that includes the group you are searching within.
+newDescribeGroupMembership ::
+  -- | 'memberName'
+  Prelude.Text ->
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DescribeGroupMembership
+newDescribeGroupMembership
+  pMemberName_
+  pGroupName_
+  pAwsAccountId_
+  pNamespace_ =
+    DescribeGroupMembership'
+      { memberName = pMemberName_,
+        groupName = pGroupName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The user name of the user that you want to search for.
+describeGroupMembership_memberName :: Lens.Lens' DescribeGroupMembership Prelude.Text
+describeGroupMembership_memberName = Lens.lens (\DescribeGroupMembership' {memberName} -> memberName) (\s@DescribeGroupMembership' {} a -> s {memberName = a} :: DescribeGroupMembership)
+
+-- | The name of the group that you want to search.
+describeGroupMembership_groupName :: Lens.Lens' DescribeGroupMembership Prelude.Text
+describeGroupMembership_groupName = Lens.lens (\DescribeGroupMembership' {groupName} -> groupName) (\s@DescribeGroupMembership' {} a -> s {groupName = a} :: DescribeGroupMembership)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+describeGroupMembership_awsAccountId :: Lens.Lens' DescribeGroupMembership Prelude.Text
+describeGroupMembership_awsAccountId = Lens.lens (\DescribeGroupMembership' {awsAccountId} -> awsAccountId) (\s@DescribeGroupMembership' {} a -> s {awsAccountId = a} :: DescribeGroupMembership)
+
+-- | The namespace that includes the group you are searching within.
+describeGroupMembership_namespace :: Lens.Lens' DescribeGroupMembership Prelude.Text
+describeGroupMembership_namespace = Lens.lens (\DescribeGroupMembership' {namespace} -> namespace) (\s@DescribeGroupMembership' {} a -> s {namespace = a} :: DescribeGroupMembership)
+
+instance Core.AWSRequest DescribeGroupMembership where
+  type
+    AWSResponse DescribeGroupMembership =
+      DescribeGroupMembershipResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeGroupMembershipResponse'
+            Prelude.<$> (x Data..?> "GroupMember")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeGroupMembership where
+  hashWithSalt _salt DescribeGroupMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` memberName
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DescribeGroupMembership where
+  rnf DescribeGroupMembership' {..} =
+    Prelude.rnf memberName
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DescribeGroupMembership where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeGroupMembership where
+  toPath DescribeGroupMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName,
+        "/members/",
+        Data.toBS memberName
+      ]
+
+instance Data.ToQuery DescribeGroupMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeGroupMembershipResponse' smart constructor.
+data DescribeGroupMembershipResponse = DescribeGroupMembershipResponse'
+  { groupMember :: Prelude.Maybe GroupMember,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGroupMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupMember', 'describeGroupMembershipResponse_groupMember' - Undocumented member.
+--
+-- 'requestId', 'describeGroupMembershipResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeGroupMembershipResponse_status' - The HTTP status of the request.
+newDescribeGroupMembershipResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeGroupMembershipResponse
+newDescribeGroupMembershipResponse pStatus_ =
+  DescribeGroupMembershipResponse'
+    { groupMember =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Undocumented member.
+describeGroupMembershipResponse_groupMember :: Lens.Lens' DescribeGroupMembershipResponse (Prelude.Maybe GroupMember)
+describeGroupMembershipResponse_groupMember = Lens.lens (\DescribeGroupMembershipResponse' {groupMember} -> groupMember) (\s@DescribeGroupMembershipResponse' {} a -> s {groupMember = a} :: DescribeGroupMembershipResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeGroupMembershipResponse_requestId :: Lens.Lens' DescribeGroupMembershipResponse (Prelude.Maybe Prelude.Text)
+describeGroupMembershipResponse_requestId = Lens.lens (\DescribeGroupMembershipResponse' {requestId} -> requestId) (\s@DescribeGroupMembershipResponse' {} a -> s {requestId = a} :: DescribeGroupMembershipResponse)
+
+-- | The HTTP status of the request.
+describeGroupMembershipResponse_status :: Lens.Lens' DescribeGroupMembershipResponse Prelude.Int
+describeGroupMembershipResponse_status = Lens.lens (\DescribeGroupMembershipResponse' {status} -> status) (\s@DescribeGroupMembershipResponse' {} a -> s {status = a} :: DescribeGroupMembershipResponse)
+
+instance
+  Prelude.NFData
+    DescribeGroupMembershipResponse
+  where
+  rnf DescribeGroupMembershipResponse' {..} =
+    Prelude.rnf groupMember
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeIAMPolicyAssignment.hs b/gen/Amazonka/QuickSight/DescribeIAMPolicyAssignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeIAMPolicyAssignment.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeIAMPolicyAssignment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an existing IAM policy assignment, as specified by the
+-- assignment name.
+module Amazonka.QuickSight.DescribeIAMPolicyAssignment
+  ( -- * Creating a Request
+    DescribeIAMPolicyAssignment (..),
+    newDescribeIAMPolicyAssignment,
+
+    -- * Request Lenses
+    describeIAMPolicyAssignment_awsAccountId,
+    describeIAMPolicyAssignment_assignmentName,
+    describeIAMPolicyAssignment_namespace,
+
+    -- * Destructuring the Response
+    DescribeIAMPolicyAssignmentResponse (..),
+    newDescribeIAMPolicyAssignmentResponse,
+
+    -- * Response Lenses
+    describeIAMPolicyAssignmentResponse_iAMPolicyAssignment,
+    describeIAMPolicyAssignmentResponse_requestId,
+    describeIAMPolicyAssignmentResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeIAMPolicyAssignment' smart constructor.
+data DescribeIAMPolicyAssignment = DescribeIAMPolicyAssignment'
+  { -- | The ID of the Amazon Web Services account that contains the assignment
+    -- that you want to describe.
+    awsAccountId :: Prelude.Text,
+    -- | The name of the assignment, also called a rule.
+    assignmentName :: Prelude.Text,
+    -- | The namespace that contains the assignment.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIAMPolicyAssignment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeIAMPolicyAssignment_awsAccountId' - The ID of the Amazon Web Services account that contains the assignment
+-- that you want to describe.
+--
+-- 'assignmentName', 'describeIAMPolicyAssignment_assignmentName' - The name of the assignment, also called a rule.
+--
+-- 'namespace', 'describeIAMPolicyAssignment_namespace' - The namespace that contains the assignment.
+newDescribeIAMPolicyAssignment ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'assignmentName'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DescribeIAMPolicyAssignment
+newDescribeIAMPolicyAssignment
+  pAwsAccountId_
+  pAssignmentName_
+  pNamespace_ =
+    DescribeIAMPolicyAssignment'
+      { awsAccountId =
+          pAwsAccountId_,
+        assignmentName = pAssignmentName_,
+        namespace = pNamespace_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the assignment
+-- that you want to describe.
+describeIAMPolicyAssignment_awsAccountId :: Lens.Lens' DescribeIAMPolicyAssignment Prelude.Text
+describeIAMPolicyAssignment_awsAccountId = Lens.lens (\DescribeIAMPolicyAssignment' {awsAccountId} -> awsAccountId) (\s@DescribeIAMPolicyAssignment' {} a -> s {awsAccountId = a} :: DescribeIAMPolicyAssignment)
+
+-- | The name of the assignment, also called a rule.
+describeIAMPolicyAssignment_assignmentName :: Lens.Lens' DescribeIAMPolicyAssignment Prelude.Text
+describeIAMPolicyAssignment_assignmentName = Lens.lens (\DescribeIAMPolicyAssignment' {assignmentName} -> assignmentName) (\s@DescribeIAMPolicyAssignment' {} a -> s {assignmentName = a} :: DescribeIAMPolicyAssignment)
+
+-- | The namespace that contains the assignment.
+describeIAMPolicyAssignment_namespace :: Lens.Lens' DescribeIAMPolicyAssignment Prelude.Text
+describeIAMPolicyAssignment_namespace = Lens.lens (\DescribeIAMPolicyAssignment' {namespace} -> namespace) (\s@DescribeIAMPolicyAssignment' {} a -> s {namespace = a} :: DescribeIAMPolicyAssignment)
+
+instance Core.AWSRequest DescribeIAMPolicyAssignment where
+  type
+    AWSResponse DescribeIAMPolicyAssignment =
+      DescribeIAMPolicyAssignmentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeIAMPolicyAssignmentResponse'
+            Prelude.<$> (x Data..?> "IAMPolicyAssignment")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeIAMPolicyAssignment where
+  hashWithSalt _salt DescribeIAMPolicyAssignment' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DescribeIAMPolicyAssignment where
+  rnf DescribeIAMPolicyAssignment' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DescribeIAMPolicyAssignment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeIAMPolicyAssignment where
+  toPath DescribeIAMPolicyAssignment' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/iam-policy-assignments/",
+        Data.toBS assignmentName
+      ]
+
+instance Data.ToQuery DescribeIAMPolicyAssignment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeIAMPolicyAssignmentResponse' smart constructor.
+data DescribeIAMPolicyAssignmentResponse = DescribeIAMPolicyAssignmentResponse'
+  { -- | Information describing the IAM policy assignment.
+    iAMPolicyAssignment :: Prelude.Maybe IAMPolicyAssignment,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIAMPolicyAssignmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iAMPolicyAssignment', 'describeIAMPolicyAssignmentResponse_iAMPolicyAssignment' - Information describing the IAM policy assignment.
+--
+-- 'requestId', 'describeIAMPolicyAssignmentResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeIAMPolicyAssignmentResponse_status' - The HTTP status of the request.
+newDescribeIAMPolicyAssignmentResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeIAMPolicyAssignmentResponse
+newDescribeIAMPolicyAssignmentResponse pStatus_ =
+  DescribeIAMPolicyAssignmentResponse'
+    { iAMPolicyAssignment =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Information describing the IAM policy assignment.
+describeIAMPolicyAssignmentResponse_iAMPolicyAssignment :: Lens.Lens' DescribeIAMPolicyAssignmentResponse (Prelude.Maybe IAMPolicyAssignment)
+describeIAMPolicyAssignmentResponse_iAMPolicyAssignment = Lens.lens (\DescribeIAMPolicyAssignmentResponse' {iAMPolicyAssignment} -> iAMPolicyAssignment) (\s@DescribeIAMPolicyAssignmentResponse' {} a -> s {iAMPolicyAssignment = a} :: DescribeIAMPolicyAssignmentResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeIAMPolicyAssignmentResponse_requestId :: Lens.Lens' DescribeIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+describeIAMPolicyAssignmentResponse_requestId = Lens.lens (\DescribeIAMPolicyAssignmentResponse' {requestId} -> requestId) (\s@DescribeIAMPolicyAssignmentResponse' {} a -> s {requestId = a} :: DescribeIAMPolicyAssignmentResponse)
+
+-- | The HTTP status of the request.
+describeIAMPolicyAssignmentResponse_status :: Lens.Lens' DescribeIAMPolicyAssignmentResponse Prelude.Int
+describeIAMPolicyAssignmentResponse_status = Lens.lens (\DescribeIAMPolicyAssignmentResponse' {status} -> status) (\s@DescribeIAMPolicyAssignmentResponse' {} a -> s {status = a} :: DescribeIAMPolicyAssignmentResponse)
+
+instance
+  Prelude.NFData
+    DescribeIAMPolicyAssignmentResponse
+  where
+  rnf DescribeIAMPolicyAssignmentResponse' {..} =
+    Prelude.rnf iAMPolicyAssignment
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeIngestion.hs b/gen/Amazonka/QuickSight/DescribeIngestion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeIngestion.hs
@@ -0,0 +1,212 @@
+{-# 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.QuickSight.DescribeIngestion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a SPICE ingestion.
+module Amazonka.QuickSight.DescribeIngestion
+  ( -- * Creating a Request
+    DescribeIngestion (..),
+    newDescribeIngestion,
+
+    -- * Request Lenses
+    describeIngestion_awsAccountId,
+    describeIngestion_dataSetId,
+    describeIngestion_ingestionId,
+
+    -- * Destructuring the Response
+    DescribeIngestionResponse (..),
+    newDescribeIngestionResponse,
+
+    -- * Response Lenses
+    describeIngestionResponse_ingestion,
+    describeIngestionResponse_requestId,
+    describeIngestionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeIngestion' smart constructor.
+data DescribeIngestion = DescribeIngestion'
+  { -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the dataset used in the ingestion.
+    dataSetId :: Prelude.Text,
+    -- | An ID for the ingestion.
+    ingestionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIngestion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeIngestion_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'describeIngestion_dataSetId' - The ID of the dataset used in the ingestion.
+--
+-- 'ingestionId', 'describeIngestion_ingestionId' - An ID for the ingestion.
+newDescribeIngestion ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  -- | 'ingestionId'
+  Prelude.Text ->
+  DescribeIngestion
+newDescribeIngestion
+  pAwsAccountId_
+  pDataSetId_
+  pIngestionId_ =
+    DescribeIngestion'
+      { awsAccountId = pAwsAccountId_,
+        dataSetId = pDataSetId_,
+        ingestionId = pIngestionId_
+      }
+
+-- | The Amazon Web Services account ID.
+describeIngestion_awsAccountId :: Lens.Lens' DescribeIngestion Prelude.Text
+describeIngestion_awsAccountId = Lens.lens (\DescribeIngestion' {awsAccountId} -> awsAccountId) (\s@DescribeIngestion' {} a -> s {awsAccountId = a} :: DescribeIngestion)
+
+-- | The ID of the dataset used in the ingestion.
+describeIngestion_dataSetId :: Lens.Lens' DescribeIngestion Prelude.Text
+describeIngestion_dataSetId = Lens.lens (\DescribeIngestion' {dataSetId} -> dataSetId) (\s@DescribeIngestion' {} a -> s {dataSetId = a} :: DescribeIngestion)
+
+-- | An ID for the ingestion.
+describeIngestion_ingestionId :: Lens.Lens' DescribeIngestion Prelude.Text
+describeIngestion_ingestionId = Lens.lens (\DescribeIngestion' {ingestionId} -> ingestionId) (\s@DescribeIngestion' {} a -> s {ingestionId = a} :: DescribeIngestion)
+
+instance Core.AWSRequest DescribeIngestion where
+  type
+    AWSResponse DescribeIngestion =
+      DescribeIngestionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeIngestionResponse'
+            Prelude.<$> (x Data..?> "Ingestion")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeIngestion where
+  hashWithSalt _salt DescribeIngestion' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` ingestionId
+
+instance Prelude.NFData DescribeIngestion where
+  rnf DescribeIngestion' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf ingestionId
+
+instance Data.ToHeaders DescribeIngestion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeIngestion where
+  toPath DescribeIngestion' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId,
+        "/ingestions/",
+        Data.toBS ingestionId
+      ]
+
+instance Data.ToQuery DescribeIngestion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeIngestionResponse' smart constructor.
+data DescribeIngestionResponse = DescribeIngestionResponse'
+  { -- | Information about the ingestion.
+    ingestion :: Prelude.Maybe Ingestion,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIngestionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ingestion', 'describeIngestionResponse_ingestion' - Information about the ingestion.
+--
+-- 'requestId', 'describeIngestionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeIngestionResponse_status' - The HTTP status of the request.
+newDescribeIngestionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeIngestionResponse
+newDescribeIngestionResponse pStatus_ =
+  DescribeIngestionResponse'
+    { ingestion =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Information about the ingestion.
+describeIngestionResponse_ingestion :: Lens.Lens' DescribeIngestionResponse (Prelude.Maybe Ingestion)
+describeIngestionResponse_ingestion = Lens.lens (\DescribeIngestionResponse' {ingestion} -> ingestion) (\s@DescribeIngestionResponse' {} a -> s {ingestion = a} :: DescribeIngestionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeIngestionResponse_requestId :: Lens.Lens' DescribeIngestionResponse (Prelude.Maybe Prelude.Text)
+describeIngestionResponse_requestId = Lens.lens (\DescribeIngestionResponse' {requestId} -> requestId) (\s@DescribeIngestionResponse' {} a -> s {requestId = a} :: DescribeIngestionResponse)
+
+-- | The HTTP status of the request.
+describeIngestionResponse_status :: Lens.Lens' DescribeIngestionResponse Prelude.Int
+describeIngestionResponse_status = Lens.lens (\DescribeIngestionResponse' {status} -> status) (\s@DescribeIngestionResponse' {} a -> s {status = a} :: DescribeIngestionResponse)
+
+instance Prelude.NFData DescribeIngestionResponse where
+  rnf DescribeIngestionResponse' {..} =
+    Prelude.rnf ingestion
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeIpRestriction.hs b/gen/Amazonka/QuickSight/DescribeIpRestriction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeIpRestriction.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.QuickSight.DescribeIpRestriction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a summary and status of IP rules.
+module Amazonka.QuickSight.DescribeIpRestriction
+  ( -- * Creating a Request
+    DescribeIpRestriction (..),
+    newDescribeIpRestriction,
+
+    -- * Request Lenses
+    describeIpRestriction_awsAccountId,
+
+    -- * Destructuring the Response
+    DescribeIpRestrictionResponse (..),
+    newDescribeIpRestrictionResponse,
+
+    -- * Response Lenses
+    describeIpRestrictionResponse_awsAccountId,
+    describeIpRestrictionResponse_enabled,
+    describeIpRestrictionResponse_ipRestrictionRuleMap,
+    describeIpRestrictionResponse_requestId,
+    describeIpRestrictionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeIpRestriction' smart constructor.
+data DescribeIpRestriction = DescribeIpRestriction'
+  { -- | The ID of the Amazon Web Services account that contains the IP rules.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIpRestriction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeIpRestriction_awsAccountId' - The ID of the Amazon Web Services account that contains the IP rules.
+newDescribeIpRestriction ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  DescribeIpRestriction
+newDescribeIpRestriction pAwsAccountId_ =
+  DescribeIpRestriction'
+    { awsAccountId =
+        pAwsAccountId_
+    }
+
+-- | The ID of the Amazon Web Services account that contains the IP rules.
+describeIpRestriction_awsAccountId :: Lens.Lens' DescribeIpRestriction Prelude.Text
+describeIpRestriction_awsAccountId = Lens.lens (\DescribeIpRestriction' {awsAccountId} -> awsAccountId) (\s@DescribeIpRestriction' {} a -> s {awsAccountId = a} :: DescribeIpRestriction)
+
+instance Core.AWSRequest DescribeIpRestriction where
+  type
+    AWSResponse DescribeIpRestriction =
+      DescribeIpRestrictionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeIpRestrictionResponse'
+            Prelude.<$> (x Data..?> "AwsAccountId")
+            Prelude.<*> (x Data..?> "Enabled")
+            Prelude.<*> ( x
+                            Data..?> "IpRestrictionRuleMap"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeIpRestriction where
+  hashWithSalt _salt DescribeIpRestriction' {..} =
+    _salt `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData DescribeIpRestriction where
+  rnf DescribeIpRestriction' {..} =
+    Prelude.rnf awsAccountId
+
+instance Data.ToHeaders DescribeIpRestriction where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeIpRestriction where
+  toPath DescribeIpRestriction' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/ip-restriction"
+      ]
+
+instance Data.ToQuery DescribeIpRestriction where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeIpRestrictionResponse' smart constructor.
+data DescribeIpRestrictionResponse = DescribeIpRestrictionResponse'
+  { -- | The ID of the Amazon Web Services account that contains the IP rules.
+    awsAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A value that specifies whether IP rules are turned on.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | A map that describes the IP rules with CIDR range and description.
+    ipRestrictionRuleMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIpRestrictionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeIpRestrictionResponse_awsAccountId' - The ID of the Amazon Web Services account that contains the IP rules.
+--
+-- 'enabled', 'describeIpRestrictionResponse_enabled' - A value that specifies whether IP rules are turned on.
+--
+-- 'ipRestrictionRuleMap', 'describeIpRestrictionResponse_ipRestrictionRuleMap' - A map that describes the IP rules with CIDR range and description.
+--
+-- 'requestId', 'describeIpRestrictionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeIpRestrictionResponse_status' - The HTTP status of the request.
+newDescribeIpRestrictionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeIpRestrictionResponse
+newDescribeIpRestrictionResponse pStatus_ =
+  DescribeIpRestrictionResponse'
+    { awsAccountId =
+        Prelude.Nothing,
+      enabled = Prelude.Nothing,
+      ipRestrictionRuleMap = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the Amazon Web Services account that contains the IP rules.
+describeIpRestrictionResponse_awsAccountId :: Lens.Lens' DescribeIpRestrictionResponse (Prelude.Maybe Prelude.Text)
+describeIpRestrictionResponse_awsAccountId = Lens.lens (\DescribeIpRestrictionResponse' {awsAccountId} -> awsAccountId) (\s@DescribeIpRestrictionResponse' {} a -> s {awsAccountId = a} :: DescribeIpRestrictionResponse)
+
+-- | A value that specifies whether IP rules are turned on.
+describeIpRestrictionResponse_enabled :: Lens.Lens' DescribeIpRestrictionResponse (Prelude.Maybe Prelude.Bool)
+describeIpRestrictionResponse_enabled = Lens.lens (\DescribeIpRestrictionResponse' {enabled} -> enabled) (\s@DescribeIpRestrictionResponse' {} a -> s {enabled = a} :: DescribeIpRestrictionResponse)
+
+-- | A map that describes the IP rules with CIDR range and description.
+describeIpRestrictionResponse_ipRestrictionRuleMap :: Lens.Lens' DescribeIpRestrictionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeIpRestrictionResponse_ipRestrictionRuleMap = Lens.lens (\DescribeIpRestrictionResponse' {ipRestrictionRuleMap} -> ipRestrictionRuleMap) (\s@DescribeIpRestrictionResponse' {} a -> s {ipRestrictionRuleMap = a} :: DescribeIpRestrictionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeIpRestrictionResponse_requestId :: Lens.Lens' DescribeIpRestrictionResponse (Prelude.Maybe Prelude.Text)
+describeIpRestrictionResponse_requestId = Lens.lens (\DescribeIpRestrictionResponse' {requestId} -> requestId) (\s@DescribeIpRestrictionResponse' {} a -> s {requestId = a} :: DescribeIpRestrictionResponse)
+
+-- | The HTTP status of the request.
+describeIpRestrictionResponse_status :: Lens.Lens' DescribeIpRestrictionResponse Prelude.Int
+describeIpRestrictionResponse_status = Lens.lens (\DescribeIpRestrictionResponse' {status} -> status) (\s@DescribeIpRestrictionResponse' {} a -> s {status = a} :: DescribeIpRestrictionResponse)
+
+instance Prelude.NFData DescribeIpRestrictionResponse where
+  rnf DescribeIpRestrictionResponse' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf ipRestrictionRuleMap
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeNamespace.hs b/gen/Amazonka/QuickSight/DescribeNamespace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeNamespace.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeNamespace
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the current namespace.
+module Amazonka.QuickSight.DescribeNamespace
+  ( -- * Creating a Request
+    DescribeNamespace (..),
+    newDescribeNamespace,
+
+    -- * Request Lenses
+    describeNamespace_awsAccountId,
+    describeNamespace_namespace,
+
+    -- * Destructuring the Response
+    DescribeNamespaceResponse (..),
+    newDescribeNamespaceResponse,
+
+    -- * Response Lenses
+    describeNamespaceResponse_namespace,
+    describeNamespaceResponse_requestId,
+    describeNamespaceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeNamespace' smart constructor.
+data DescribeNamespace = DescribeNamespace'
+  { -- | The ID for the Amazon Web Services account that contains the Amazon
+    -- QuickSight namespace that you want to describe.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that you want to describe.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNamespace' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeNamespace_awsAccountId' - The ID for the Amazon Web Services account that contains the Amazon
+-- QuickSight namespace that you want to describe.
+--
+-- 'namespace', 'describeNamespace_namespace' - The namespace that you want to describe.
+newDescribeNamespace ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DescribeNamespace
+newDescribeNamespace pAwsAccountId_ pNamespace_ =
+  DescribeNamespace'
+    { awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The ID for the Amazon Web Services account that contains the Amazon
+-- QuickSight namespace that you want to describe.
+describeNamespace_awsAccountId :: Lens.Lens' DescribeNamespace Prelude.Text
+describeNamespace_awsAccountId = Lens.lens (\DescribeNamespace' {awsAccountId} -> awsAccountId) (\s@DescribeNamespace' {} a -> s {awsAccountId = a} :: DescribeNamespace)
+
+-- | The namespace that you want to describe.
+describeNamespace_namespace :: Lens.Lens' DescribeNamespace Prelude.Text
+describeNamespace_namespace = Lens.lens (\DescribeNamespace' {namespace} -> namespace) (\s@DescribeNamespace' {} a -> s {namespace = a} :: DescribeNamespace)
+
+instance Core.AWSRequest DescribeNamespace where
+  type
+    AWSResponse DescribeNamespace =
+      DescribeNamespaceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeNamespaceResponse'
+            Prelude.<$> (x Data..?> "Namespace")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeNamespace where
+  hashWithSalt _salt DescribeNamespace' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DescribeNamespace where
+  rnf DescribeNamespace' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DescribeNamespace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeNamespace where
+  toPath DescribeNamespace' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace
+      ]
+
+instance Data.ToQuery DescribeNamespace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeNamespaceResponse' smart constructor.
+data DescribeNamespaceResponse = DescribeNamespaceResponse'
+  { -- | The information about the namespace that you\'re describing. The
+    -- response includes the namespace ARN, name, Amazon Web Services Region,
+    -- creation status, and identity store. @DescribeNamespace@ also works for
+    -- namespaces that are in the process of being created. For incomplete
+    -- namespaces, this API operation lists the namespace error types and
+    -- messages associated with the creation process.
+    namespace :: Prelude.Maybe NamespaceInfoV2,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNamespaceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'namespace', 'describeNamespaceResponse_namespace' - The information about the namespace that you\'re describing. The
+-- response includes the namespace ARN, name, Amazon Web Services Region,
+-- creation status, and identity store. @DescribeNamespace@ also works for
+-- namespaces that are in the process of being created. For incomplete
+-- namespaces, this API operation lists the namespace error types and
+-- messages associated with the creation process.
+--
+-- 'requestId', 'describeNamespaceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'describeNamespaceResponse_status' - The HTTP status of the request.
+newDescribeNamespaceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeNamespaceResponse
+newDescribeNamespaceResponse pStatus_ =
+  DescribeNamespaceResponse'
+    { namespace =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The information about the namespace that you\'re describing. The
+-- response includes the namespace ARN, name, Amazon Web Services Region,
+-- creation status, and identity store. @DescribeNamespace@ also works for
+-- namespaces that are in the process of being created. For incomplete
+-- namespaces, this API operation lists the namespace error types and
+-- messages associated with the creation process.
+describeNamespaceResponse_namespace :: Lens.Lens' DescribeNamespaceResponse (Prelude.Maybe NamespaceInfoV2)
+describeNamespaceResponse_namespace = Lens.lens (\DescribeNamespaceResponse' {namespace} -> namespace) (\s@DescribeNamespaceResponse' {} a -> s {namespace = a} :: DescribeNamespaceResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeNamespaceResponse_requestId :: Lens.Lens' DescribeNamespaceResponse (Prelude.Maybe Prelude.Text)
+describeNamespaceResponse_requestId = Lens.lens (\DescribeNamespaceResponse' {requestId} -> requestId) (\s@DescribeNamespaceResponse' {} a -> s {requestId = a} :: DescribeNamespaceResponse)
+
+-- | The HTTP status of the request.
+describeNamespaceResponse_status :: Lens.Lens' DescribeNamespaceResponse Prelude.Int
+describeNamespaceResponse_status = Lens.lens (\DescribeNamespaceResponse' {status} -> status) (\s@DescribeNamespaceResponse' {} a -> s {status = a} :: DescribeNamespaceResponse)
+
+instance Prelude.NFData DescribeNamespaceResponse where
+  rnf DescribeNamespaceResponse' {..} =
+    Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeTemplate.hs b/gen/Amazonka/QuickSight/DescribeTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeTemplate.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a template\'s metadata.
+module Amazonka.QuickSight.DescribeTemplate
+  ( -- * Creating a Request
+    DescribeTemplate (..),
+    newDescribeTemplate,
+
+    -- * Request Lenses
+    describeTemplate_aliasName,
+    describeTemplate_versionNumber,
+    describeTemplate_awsAccountId,
+    describeTemplate_templateId,
+
+    -- * Destructuring the Response
+    DescribeTemplateResponse (..),
+    newDescribeTemplateResponse,
+
+    -- * Response Lenses
+    describeTemplateResponse_requestId,
+    describeTemplateResponse_template,
+    describeTemplateResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeTemplate' smart constructor.
+data DescribeTemplate = DescribeTemplate'
+  { -- | The alias of the template that you want to describe. If you name a
+    -- specific alias, you describe the version that the alias points to. You
+    -- can specify the latest version of the template by providing the keyword
+    -- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+    -- doesn\'t apply to templates.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) The number for the version to describe. If a @VersionNumber@
+    -- parameter value isn\'t provided, the latest version of the template is
+    -- described.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the template
+    -- that you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'describeTemplate_aliasName' - The alias of the template that you want to describe. If you name a
+-- specific alias, you describe the version that the alias points to. You
+-- can specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+--
+-- 'versionNumber', 'describeTemplate_versionNumber' - (Optional) The number for the version to describe. If a @VersionNumber@
+-- parameter value isn\'t provided, the latest version of the template is
+-- described.
+--
+-- 'awsAccountId', 'describeTemplate_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- that you\'re describing.
+--
+-- 'templateId', 'describeTemplate_templateId' - The ID for the template.
+newDescribeTemplate ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  DescribeTemplate
+newDescribeTemplate pAwsAccountId_ pTemplateId_ =
+  DescribeTemplate'
+    { aliasName = Prelude.Nothing,
+      versionNumber = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      templateId = pTemplateId_
+    }
+
+-- | The alias of the template that you want to describe. If you name a
+-- specific alias, you describe the version that the alias points to. You
+-- can specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+describeTemplate_aliasName :: Lens.Lens' DescribeTemplate (Prelude.Maybe Prelude.Text)
+describeTemplate_aliasName = Lens.lens (\DescribeTemplate' {aliasName} -> aliasName) (\s@DescribeTemplate' {} a -> s {aliasName = a} :: DescribeTemplate)
+
+-- | (Optional) The number for the version to describe. If a @VersionNumber@
+-- parameter value isn\'t provided, the latest version of the template is
+-- described.
+describeTemplate_versionNumber :: Lens.Lens' DescribeTemplate (Prelude.Maybe Prelude.Natural)
+describeTemplate_versionNumber = Lens.lens (\DescribeTemplate' {versionNumber} -> versionNumber) (\s@DescribeTemplate' {} a -> s {versionNumber = a} :: DescribeTemplate)
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- that you\'re describing.
+describeTemplate_awsAccountId :: Lens.Lens' DescribeTemplate Prelude.Text
+describeTemplate_awsAccountId = Lens.lens (\DescribeTemplate' {awsAccountId} -> awsAccountId) (\s@DescribeTemplate' {} a -> s {awsAccountId = a} :: DescribeTemplate)
+
+-- | The ID for the template.
+describeTemplate_templateId :: Lens.Lens' DescribeTemplate Prelude.Text
+describeTemplate_templateId = Lens.lens (\DescribeTemplate' {templateId} -> templateId) (\s@DescribeTemplate' {} a -> s {templateId = a} :: DescribeTemplate)
+
+instance Core.AWSRequest DescribeTemplate where
+  type
+    AWSResponse DescribeTemplate =
+      DescribeTemplateResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTemplateResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Template")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTemplate where
+  hashWithSalt _salt DescribeTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData DescribeTemplate where
+  rnf DescribeTemplate' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders DescribeTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeTemplate where
+  toPath DescribeTemplate' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId
+      ]
+
+instance Data.ToQuery DescribeTemplate where
+  toQuery DescribeTemplate' {..} =
+    Prelude.mconcat
+      [ "alias-name" Data.=: aliasName,
+        "version-number" Data.=: versionNumber
+      ]
+
+-- | /See:/ 'newDescribeTemplateResponse' smart constructor.
+data DescribeTemplateResponse = DescribeTemplateResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The template structure for the object you want to describe.
+    template :: Prelude.Maybe Template,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'describeTemplateResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'template', 'describeTemplateResponse_template' - The template structure for the object you want to describe.
+--
+-- 'status', 'describeTemplateResponse_status' - The HTTP status of the request.
+newDescribeTemplateResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeTemplateResponse
+newDescribeTemplateResponse pStatus_ =
+  DescribeTemplateResponse'
+    { requestId =
+        Prelude.Nothing,
+      template = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+describeTemplateResponse_requestId :: Lens.Lens' DescribeTemplateResponse (Prelude.Maybe Prelude.Text)
+describeTemplateResponse_requestId = Lens.lens (\DescribeTemplateResponse' {requestId} -> requestId) (\s@DescribeTemplateResponse' {} a -> s {requestId = a} :: DescribeTemplateResponse)
+
+-- | The template structure for the object you want to describe.
+describeTemplateResponse_template :: Lens.Lens' DescribeTemplateResponse (Prelude.Maybe Template)
+describeTemplateResponse_template = Lens.lens (\DescribeTemplateResponse' {template} -> template) (\s@DescribeTemplateResponse' {} a -> s {template = a} :: DescribeTemplateResponse)
+
+-- | The HTTP status of the request.
+describeTemplateResponse_status :: Lens.Lens' DescribeTemplateResponse Prelude.Int
+describeTemplateResponse_status = Lens.lens (\DescribeTemplateResponse' {status} -> status) (\s@DescribeTemplateResponse' {} a -> s {status = a} :: DescribeTemplateResponse)
+
+instance Prelude.NFData DescribeTemplateResponse where
+  rnf DescribeTemplateResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf template
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeTemplateAlias.hs b/gen/Amazonka/QuickSight/DescribeTemplateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeTemplateAlias.hs
@@ -0,0 +1,228 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeTemplateAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the template alias for a template.
+module Amazonka.QuickSight.DescribeTemplateAlias
+  ( -- * Creating a Request
+    DescribeTemplateAlias (..),
+    newDescribeTemplateAlias,
+
+    -- * Request Lenses
+    describeTemplateAlias_awsAccountId,
+    describeTemplateAlias_templateId,
+    describeTemplateAlias_aliasName,
+
+    -- * Destructuring the Response
+    DescribeTemplateAliasResponse (..),
+    newDescribeTemplateAliasResponse,
+
+    -- * Response Lenses
+    describeTemplateAliasResponse_requestId,
+    describeTemplateAliasResponse_templateAlias,
+    describeTemplateAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeTemplateAlias' smart constructor.
+data DescribeTemplateAlias = DescribeTemplateAlias'
+  { -- | The ID of the Amazon Web Services account that contains the template
+    -- alias that you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text,
+    -- | The name of the template alias that you want to describe. If you name a
+    -- specific alias, you describe the version that the alias points to. You
+    -- can specify the latest version of the template by providing the keyword
+    -- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+    -- doesn\'t apply to templates.
+    aliasName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplateAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeTemplateAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- alias that you\'re describing.
+--
+-- 'templateId', 'describeTemplateAlias_templateId' - The ID for the template.
+--
+-- 'aliasName', 'describeTemplateAlias_aliasName' - The name of the template alias that you want to describe. If you name a
+-- specific alias, you describe the version that the alias points to. You
+-- can specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+newDescribeTemplateAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  DescribeTemplateAlias
+newDescribeTemplateAlias
+  pAwsAccountId_
+  pTemplateId_
+  pAliasName_ =
+    DescribeTemplateAlias'
+      { awsAccountId =
+          pAwsAccountId_,
+        templateId = pTemplateId_,
+        aliasName = pAliasName_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- alias that you\'re describing.
+describeTemplateAlias_awsAccountId :: Lens.Lens' DescribeTemplateAlias Prelude.Text
+describeTemplateAlias_awsAccountId = Lens.lens (\DescribeTemplateAlias' {awsAccountId} -> awsAccountId) (\s@DescribeTemplateAlias' {} a -> s {awsAccountId = a} :: DescribeTemplateAlias)
+
+-- | The ID for the template.
+describeTemplateAlias_templateId :: Lens.Lens' DescribeTemplateAlias Prelude.Text
+describeTemplateAlias_templateId = Lens.lens (\DescribeTemplateAlias' {templateId} -> templateId) (\s@DescribeTemplateAlias' {} a -> s {templateId = a} :: DescribeTemplateAlias)
+
+-- | The name of the template alias that you want to describe. If you name a
+-- specific alias, you describe the version that the alias points to. You
+-- can specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+describeTemplateAlias_aliasName :: Lens.Lens' DescribeTemplateAlias Prelude.Text
+describeTemplateAlias_aliasName = Lens.lens (\DescribeTemplateAlias' {aliasName} -> aliasName) (\s@DescribeTemplateAlias' {} a -> s {aliasName = a} :: DescribeTemplateAlias)
+
+instance Core.AWSRequest DescribeTemplateAlias where
+  type
+    AWSResponse DescribeTemplateAlias =
+      DescribeTemplateAliasResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTemplateAliasResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateAlias")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTemplateAlias where
+  hashWithSalt _salt DescribeTemplateAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+      `Prelude.hashWithSalt` aliasName
+
+instance Prelude.NFData DescribeTemplateAlias where
+  rnf DescribeTemplateAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf aliasName
+
+instance Data.ToHeaders DescribeTemplateAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeTemplateAlias where
+  toPath DescribeTemplateAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery DescribeTemplateAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTemplateAliasResponse' smart constructor.
+data DescribeTemplateAliasResponse = DescribeTemplateAliasResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the template alias.
+    templateAlias :: Prelude.Maybe TemplateAlias,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplateAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'describeTemplateAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateAlias', 'describeTemplateAliasResponse_templateAlias' - Information about the template alias.
+--
+-- 'status', 'describeTemplateAliasResponse_status' - The HTTP status of the request.
+newDescribeTemplateAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeTemplateAliasResponse
+newDescribeTemplateAliasResponse pStatus_ =
+  DescribeTemplateAliasResponse'
+    { requestId =
+        Prelude.Nothing,
+      templateAlias = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+describeTemplateAliasResponse_requestId :: Lens.Lens' DescribeTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+describeTemplateAliasResponse_requestId = Lens.lens (\DescribeTemplateAliasResponse' {requestId} -> requestId) (\s@DescribeTemplateAliasResponse' {} a -> s {requestId = a} :: DescribeTemplateAliasResponse)
+
+-- | Information about the template alias.
+describeTemplateAliasResponse_templateAlias :: Lens.Lens' DescribeTemplateAliasResponse (Prelude.Maybe TemplateAlias)
+describeTemplateAliasResponse_templateAlias = Lens.lens (\DescribeTemplateAliasResponse' {templateAlias} -> templateAlias) (\s@DescribeTemplateAliasResponse' {} a -> s {templateAlias = a} :: DescribeTemplateAliasResponse)
+
+-- | The HTTP status of the request.
+describeTemplateAliasResponse_status :: Lens.Lens' DescribeTemplateAliasResponse Prelude.Int
+describeTemplateAliasResponse_status = Lens.lens (\DescribeTemplateAliasResponse' {status} -> status) (\s@DescribeTemplateAliasResponse' {} a -> s {status = a} :: DescribeTemplateAliasResponse)
+
+instance Prelude.NFData DescribeTemplateAliasResponse where
+  rnf DescribeTemplateAliasResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateAlias
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeTemplateDefinition.hs b/gen/Amazonka/QuickSight/DescribeTemplateDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeTemplateDefinition.hs
@@ -0,0 +1,363 @@
+{-# 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.QuickSight.DescribeTemplateDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a detailed description of the definition of a template.
+--
+-- If you do not need to know details about the content of a template, for
+-- instance if you are trying to check the status of a recently created or
+-- updated template, use the
+-- <https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeTemplate.html DescribeTemplate>
+-- instead.
+module Amazonka.QuickSight.DescribeTemplateDefinition
+  ( -- * Creating a Request
+    DescribeTemplateDefinition (..),
+    newDescribeTemplateDefinition,
+
+    -- * Request Lenses
+    describeTemplateDefinition_aliasName,
+    describeTemplateDefinition_versionNumber,
+    describeTemplateDefinition_awsAccountId,
+    describeTemplateDefinition_templateId,
+
+    -- * Destructuring the Response
+    DescribeTemplateDefinitionResponse (..),
+    newDescribeTemplateDefinitionResponse,
+
+    -- * Response Lenses
+    describeTemplateDefinitionResponse_definition,
+    describeTemplateDefinitionResponse_errors,
+    describeTemplateDefinitionResponse_name,
+    describeTemplateDefinitionResponse_requestId,
+    describeTemplateDefinitionResponse_resourceStatus,
+    describeTemplateDefinitionResponse_templateId,
+    describeTemplateDefinitionResponse_themeArn,
+    describeTemplateDefinitionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeTemplateDefinition' smart constructor.
+data DescribeTemplateDefinition = DescribeTemplateDefinition'
+  { -- | The alias of the template that you want to describe. If you name a
+    -- specific alias, you describe the version that the alias points to. You
+    -- can specify the latest version of the template by providing the keyword
+    -- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+    -- doesn\'t apply to templates.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the template.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the template.
+    -- You must be using the Amazon Web Services account that the template is
+    -- in.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the template that you\'re describing.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplateDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'describeTemplateDefinition_aliasName' - The alias of the template that you want to describe. If you name a
+-- specific alias, you describe the version that the alias points to. You
+-- can specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+--
+-- 'versionNumber', 'describeTemplateDefinition_versionNumber' - The version number of the template.
+--
+-- 'awsAccountId', 'describeTemplateDefinition_awsAccountId' - The ID of the Amazon Web Services account that contains the template.
+-- You must be using the Amazon Web Services account that the template is
+-- in.
+--
+-- 'templateId', 'describeTemplateDefinition_templateId' - The ID of the template that you\'re describing.
+newDescribeTemplateDefinition ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  DescribeTemplateDefinition
+newDescribeTemplateDefinition
+  pAwsAccountId_
+  pTemplateId_ =
+    DescribeTemplateDefinition'
+      { aliasName =
+          Prelude.Nothing,
+        versionNumber = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        templateId = pTemplateId_
+      }
+
+-- | The alias of the template that you want to describe. If you name a
+-- specific alias, you describe the version that the alias points to. You
+-- can specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+describeTemplateDefinition_aliasName :: Lens.Lens' DescribeTemplateDefinition (Prelude.Maybe Prelude.Text)
+describeTemplateDefinition_aliasName = Lens.lens (\DescribeTemplateDefinition' {aliasName} -> aliasName) (\s@DescribeTemplateDefinition' {} a -> s {aliasName = a} :: DescribeTemplateDefinition)
+
+-- | The version number of the template.
+describeTemplateDefinition_versionNumber :: Lens.Lens' DescribeTemplateDefinition (Prelude.Maybe Prelude.Natural)
+describeTemplateDefinition_versionNumber = Lens.lens (\DescribeTemplateDefinition' {versionNumber} -> versionNumber) (\s@DescribeTemplateDefinition' {} a -> s {versionNumber = a} :: DescribeTemplateDefinition)
+
+-- | The ID of the Amazon Web Services account that contains the template.
+-- You must be using the Amazon Web Services account that the template is
+-- in.
+describeTemplateDefinition_awsAccountId :: Lens.Lens' DescribeTemplateDefinition Prelude.Text
+describeTemplateDefinition_awsAccountId = Lens.lens (\DescribeTemplateDefinition' {awsAccountId} -> awsAccountId) (\s@DescribeTemplateDefinition' {} a -> s {awsAccountId = a} :: DescribeTemplateDefinition)
+
+-- | The ID of the template that you\'re describing.
+describeTemplateDefinition_templateId :: Lens.Lens' DescribeTemplateDefinition Prelude.Text
+describeTemplateDefinition_templateId = Lens.lens (\DescribeTemplateDefinition' {templateId} -> templateId) (\s@DescribeTemplateDefinition' {} a -> s {templateId = a} :: DescribeTemplateDefinition)
+
+instance Core.AWSRequest DescribeTemplateDefinition where
+  type
+    AWSResponse DescribeTemplateDefinition =
+      DescribeTemplateDefinitionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTemplateDefinitionResponse'
+            Prelude.<$> (x Data..?> "Definition")
+            Prelude.<*> (x Data..?> "Errors")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ResourceStatus")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (x Data..?> "ThemeArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTemplateDefinition where
+  hashWithSalt _salt DescribeTemplateDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData DescribeTemplateDefinition where
+  rnf DescribeTemplateDefinition' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders DescribeTemplateDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeTemplateDefinition where
+  toPath DescribeTemplateDefinition' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/definition"
+      ]
+
+instance Data.ToQuery DescribeTemplateDefinition where
+  toQuery DescribeTemplateDefinition' {..} =
+    Prelude.mconcat
+      [ "alias-name" Data.=: aliasName,
+        "version-number" Data.=: versionNumber
+      ]
+
+-- | /See:/ 'newDescribeTemplateDefinitionResponse' smart constructor.
+data DescribeTemplateDefinitionResponse = DescribeTemplateDefinitionResponse'
+  { -- | The definition of the template.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe TemplateVersionDefinition,
+    -- | Errors associated with the template version.
+    errors :: Prelude.Maybe (Prelude.NonEmpty TemplateError),
+    -- | The descriptive name of the template.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Status associated with the template.
+    --
+    -- -   @CREATION_IN_PROGRESS@
+    --
+    -- -   @CREATION_SUCCESSFUL@
+    --
+    -- -   @CREATION_FAILED@
+    --
+    -- -   @UPDATE_IN_PROGRESS@
+    --
+    -- -   @UPDATE_SUCCESSFUL@
+    --
+    -- -   @UPDATE_FAILED@
+    --
+    -- -   @DELETED@
+    resourceStatus :: Prelude.Maybe ResourceStatus,
+    -- | The ID of the template described.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the theme of the template.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplateDefinitionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'definition', 'describeTemplateDefinitionResponse_definition' - The definition of the template.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'errors', 'describeTemplateDefinitionResponse_errors' - Errors associated with the template version.
+--
+-- 'name', 'describeTemplateDefinitionResponse_name' - The descriptive name of the template.
+--
+-- 'requestId', 'describeTemplateDefinitionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'resourceStatus', 'describeTemplateDefinitionResponse_resourceStatus' - Status associated with the template.
+--
+-- -   @CREATION_IN_PROGRESS@
+--
+-- -   @CREATION_SUCCESSFUL@
+--
+-- -   @CREATION_FAILED@
+--
+-- -   @UPDATE_IN_PROGRESS@
+--
+-- -   @UPDATE_SUCCESSFUL@
+--
+-- -   @UPDATE_FAILED@
+--
+-- -   @DELETED@
+--
+-- 'templateId', 'describeTemplateDefinitionResponse_templateId' - The ID of the template described.
+--
+-- 'themeArn', 'describeTemplateDefinitionResponse_themeArn' - The ARN of the theme of the template.
+--
+-- 'status', 'describeTemplateDefinitionResponse_status' - The HTTP status of the request.
+newDescribeTemplateDefinitionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeTemplateDefinitionResponse
+newDescribeTemplateDefinitionResponse pStatus_ =
+  DescribeTemplateDefinitionResponse'
+    { definition =
+        Prelude.Nothing,
+      errors = Prelude.Nothing,
+      name = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      resourceStatus = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The definition of the template.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+describeTemplateDefinitionResponse_definition :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe TemplateVersionDefinition)
+describeTemplateDefinitionResponse_definition = Lens.lens (\DescribeTemplateDefinitionResponse' {definition} -> definition) (\s@DescribeTemplateDefinitionResponse' {} a -> s {definition = a} :: DescribeTemplateDefinitionResponse)
+
+-- | Errors associated with the template version.
+describeTemplateDefinitionResponse_errors :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe (Prelude.NonEmpty TemplateError))
+describeTemplateDefinitionResponse_errors = Lens.lens (\DescribeTemplateDefinitionResponse' {errors} -> errors) (\s@DescribeTemplateDefinitionResponse' {} a -> s {errors = a} :: DescribeTemplateDefinitionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The descriptive name of the template.
+describeTemplateDefinitionResponse_name :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeTemplateDefinitionResponse_name = Lens.lens (\DescribeTemplateDefinitionResponse' {name} -> name) (\s@DescribeTemplateDefinitionResponse' {} a -> s {name = a} :: DescribeTemplateDefinitionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+describeTemplateDefinitionResponse_requestId :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeTemplateDefinitionResponse_requestId = Lens.lens (\DescribeTemplateDefinitionResponse' {requestId} -> requestId) (\s@DescribeTemplateDefinitionResponse' {} a -> s {requestId = a} :: DescribeTemplateDefinitionResponse)
+
+-- | Status associated with the template.
+--
+-- -   @CREATION_IN_PROGRESS@
+--
+-- -   @CREATION_SUCCESSFUL@
+--
+-- -   @CREATION_FAILED@
+--
+-- -   @UPDATE_IN_PROGRESS@
+--
+-- -   @UPDATE_SUCCESSFUL@
+--
+-- -   @UPDATE_FAILED@
+--
+-- -   @DELETED@
+describeTemplateDefinitionResponse_resourceStatus :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe ResourceStatus)
+describeTemplateDefinitionResponse_resourceStatus = Lens.lens (\DescribeTemplateDefinitionResponse' {resourceStatus} -> resourceStatus) (\s@DescribeTemplateDefinitionResponse' {} a -> s {resourceStatus = a} :: DescribeTemplateDefinitionResponse)
+
+-- | The ID of the template described.
+describeTemplateDefinitionResponse_templateId :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeTemplateDefinitionResponse_templateId = Lens.lens (\DescribeTemplateDefinitionResponse' {templateId} -> templateId) (\s@DescribeTemplateDefinitionResponse' {} a -> s {templateId = a} :: DescribeTemplateDefinitionResponse)
+
+-- | The ARN of the theme of the template.
+describeTemplateDefinitionResponse_themeArn :: Lens.Lens' DescribeTemplateDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeTemplateDefinitionResponse_themeArn = Lens.lens (\DescribeTemplateDefinitionResponse' {themeArn} -> themeArn) (\s@DescribeTemplateDefinitionResponse' {} a -> s {themeArn = a} :: DescribeTemplateDefinitionResponse)
+
+-- | The HTTP status of the request.
+describeTemplateDefinitionResponse_status :: Lens.Lens' DescribeTemplateDefinitionResponse Prelude.Int
+describeTemplateDefinitionResponse_status = Lens.lens (\DescribeTemplateDefinitionResponse' {status} -> status) (\s@DescribeTemplateDefinitionResponse' {} a -> s {status = a} :: DescribeTemplateDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeTemplateDefinitionResponse
+  where
+  rnf DescribeTemplateDefinitionResponse' {..} =
+    Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf resourceStatus
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeTemplatePermissions.hs b/gen/Amazonka/QuickSight/DescribeTemplatePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeTemplatePermissions.hs
@@ -0,0 +1,227 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeTemplatePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes read and write permissions on a template.
+module Amazonka.QuickSight.DescribeTemplatePermissions
+  ( -- * Creating a Request
+    DescribeTemplatePermissions (..),
+    newDescribeTemplatePermissions,
+
+    -- * Request Lenses
+    describeTemplatePermissions_awsAccountId,
+    describeTemplatePermissions_templateId,
+
+    -- * Destructuring the Response
+    DescribeTemplatePermissionsResponse (..),
+    newDescribeTemplatePermissionsResponse,
+
+    -- * Response Lenses
+    describeTemplatePermissionsResponse_permissions,
+    describeTemplatePermissionsResponse_requestId,
+    describeTemplatePermissionsResponse_templateArn,
+    describeTemplatePermissionsResponse_templateId,
+    describeTemplatePermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeTemplatePermissions' smart constructor.
+data DescribeTemplatePermissions = DescribeTemplatePermissions'
+  { -- | The ID of the Amazon Web Services account that contains the template
+    -- that you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplatePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeTemplatePermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- that you\'re describing.
+--
+-- 'templateId', 'describeTemplatePermissions_templateId' - The ID for the template.
+newDescribeTemplatePermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  DescribeTemplatePermissions
+newDescribeTemplatePermissions
+  pAwsAccountId_
+  pTemplateId_ =
+    DescribeTemplatePermissions'
+      { awsAccountId =
+          pAwsAccountId_,
+        templateId = pTemplateId_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- that you\'re describing.
+describeTemplatePermissions_awsAccountId :: Lens.Lens' DescribeTemplatePermissions Prelude.Text
+describeTemplatePermissions_awsAccountId = Lens.lens (\DescribeTemplatePermissions' {awsAccountId} -> awsAccountId) (\s@DescribeTemplatePermissions' {} a -> s {awsAccountId = a} :: DescribeTemplatePermissions)
+
+-- | The ID for the template.
+describeTemplatePermissions_templateId :: Lens.Lens' DescribeTemplatePermissions Prelude.Text
+describeTemplatePermissions_templateId = Lens.lens (\DescribeTemplatePermissions' {templateId} -> templateId) (\s@DescribeTemplatePermissions' {} a -> s {templateId = a} :: DescribeTemplatePermissions)
+
+instance Core.AWSRequest DescribeTemplatePermissions where
+  type
+    AWSResponse DescribeTemplatePermissions =
+      DescribeTemplatePermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTemplatePermissionsResponse'
+            Prelude.<$> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateArn")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTemplatePermissions where
+  hashWithSalt _salt DescribeTemplatePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData DescribeTemplatePermissions where
+  rnf DescribeTemplatePermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders DescribeTemplatePermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeTemplatePermissions where
+  toPath DescribeTemplatePermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeTemplatePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTemplatePermissionsResponse' smart constructor.
+data DescribeTemplatePermissionsResponse = DescribeTemplatePermissionsResponse'
+  { -- | A list of resource permissions to be set on the template.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the template.
+    templateArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTemplatePermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissions', 'describeTemplatePermissionsResponse_permissions' - A list of resource permissions to be set on the template.
+--
+-- 'requestId', 'describeTemplatePermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateArn', 'describeTemplatePermissionsResponse_templateArn' - The Amazon Resource Name (ARN) of the template.
+--
+-- 'templateId', 'describeTemplatePermissionsResponse_templateId' - The ID for the template.
+--
+-- 'status', 'describeTemplatePermissionsResponse_status' - The HTTP status of the request.
+newDescribeTemplatePermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeTemplatePermissionsResponse
+newDescribeTemplatePermissionsResponse pStatus_ =
+  DescribeTemplatePermissionsResponse'
+    { permissions =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateArn = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A list of resource permissions to be set on the template.
+describeTemplatePermissionsResponse_permissions :: Lens.Lens' DescribeTemplatePermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeTemplatePermissionsResponse_permissions = Lens.lens (\DescribeTemplatePermissionsResponse' {permissions} -> permissions) (\s@DescribeTemplatePermissionsResponse' {} a -> s {permissions = a} :: DescribeTemplatePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeTemplatePermissionsResponse_requestId :: Lens.Lens' DescribeTemplatePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeTemplatePermissionsResponse_requestId = Lens.lens (\DescribeTemplatePermissionsResponse' {requestId} -> requestId) (\s@DescribeTemplatePermissionsResponse' {} a -> s {requestId = a} :: DescribeTemplatePermissionsResponse)
+
+-- | The Amazon Resource Name (ARN) of the template.
+describeTemplatePermissionsResponse_templateArn :: Lens.Lens' DescribeTemplatePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeTemplatePermissionsResponse_templateArn = Lens.lens (\DescribeTemplatePermissionsResponse' {templateArn} -> templateArn) (\s@DescribeTemplatePermissionsResponse' {} a -> s {templateArn = a} :: DescribeTemplatePermissionsResponse)
+
+-- | The ID for the template.
+describeTemplatePermissionsResponse_templateId :: Lens.Lens' DescribeTemplatePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeTemplatePermissionsResponse_templateId = Lens.lens (\DescribeTemplatePermissionsResponse' {templateId} -> templateId) (\s@DescribeTemplatePermissionsResponse' {} a -> s {templateId = a} :: DescribeTemplatePermissionsResponse)
+
+-- | The HTTP status of the request.
+describeTemplatePermissionsResponse_status :: Lens.Lens' DescribeTemplatePermissionsResponse Prelude.Int
+describeTemplatePermissionsResponse_status = Lens.lens (\DescribeTemplatePermissionsResponse' {status} -> status) (\s@DescribeTemplatePermissionsResponse' {} a -> s {status = a} :: DescribeTemplatePermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeTemplatePermissionsResponse
+  where
+  rnf DescribeTemplatePermissionsResponse' {..} =
+    Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateArn
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeTheme.hs b/gen/Amazonka/QuickSight/DescribeTheme.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeTheme.hs
@@ -0,0 +1,241 @@
+{-# 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.QuickSight.DescribeTheme
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a theme.
+module Amazonka.QuickSight.DescribeTheme
+  ( -- * Creating a Request
+    DescribeTheme (..),
+    newDescribeTheme,
+
+    -- * Request Lenses
+    describeTheme_aliasName,
+    describeTheme_versionNumber,
+    describeTheme_awsAccountId,
+    describeTheme_themeId,
+
+    -- * Destructuring the Response
+    DescribeThemeResponse (..),
+    newDescribeThemeResponse,
+
+    -- * Response Lenses
+    describeThemeResponse_requestId,
+    describeThemeResponse_theme,
+    describeThemeResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeTheme' smart constructor.
+data DescribeTheme = DescribeTheme'
+  { -- | The alias of the theme that you want to describe. If you name a specific
+    -- alias, you describe the version that the alias points to. You can
+    -- specify the latest version of the theme by providing the keyword
+    -- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+    -- doesn\'t apply to themes.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The version number for the version to describe. If a @VersionNumber@
+    -- parameter value isn\'t provided, the latest version of the theme is
+    -- described.
+    versionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The ID of the Amazon Web Services account that contains the theme that
+    -- you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTheme' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'describeTheme_aliasName' - The alias of the theme that you want to describe. If you name a specific
+-- alias, you describe the version that the alias points to. You can
+-- specify the latest version of the theme by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to themes.
+--
+-- 'versionNumber', 'describeTheme_versionNumber' - The version number for the version to describe. If a @VersionNumber@
+-- parameter value isn\'t provided, the latest version of the theme is
+-- described.
+--
+-- 'awsAccountId', 'describeTheme_awsAccountId' - The ID of the Amazon Web Services account that contains the theme that
+-- you\'re describing.
+--
+-- 'themeId', 'describeTheme_themeId' - The ID for the theme.
+newDescribeTheme ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  DescribeTheme
+newDescribeTheme pAwsAccountId_ pThemeId_ =
+  DescribeTheme'
+    { aliasName = Prelude.Nothing,
+      versionNumber = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      themeId = pThemeId_
+    }
+
+-- | The alias of the theme that you want to describe. If you name a specific
+-- alias, you describe the version that the alias points to. You can
+-- specify the latest version of the theme by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to themes.
+describeTheme_aliasName :: Lens.Lens' DescribeTheme (Prelude.Maybe Prelude.Text)
+describeTheme_aliasName = Lens.lens (\DescribeTheme' {aliasName} -> aliasName) (\s@DescribeTheme' {} a -> s {aliasName = a} :: DescribeTheme)
+
+-- | The version number for the version to describe. If a @VersionNumber@
+-- parameter value isn\'t provided, the latest version of the theme is
+-- described.
+describeTheme_versionNumber :: Lens.Lens' DescribeTheme (Prelude.Maybe Prelude.Natural)
+describeTheme_versionNumber = Lens.lens (\DescribeTheme' {versionNumber} -> versionNumber) (\s@DescribeTheme' {} a -> s {versionNumber = a} :: DescribeTheme)
+
+-- | The ID of the Amazon Web Services account that contains the theme that
+-- you\'re describing.
+describeTheme_awsAccountId :: Lens.Lens' DescribeTheme Prelude.Text
+describeTheme_awsAccountId = Lens.lens (\DescribeTheme' {awsAccountId} -> awsAccountId) (\s@DescribeTheme' {} a -> s {awsAccountId = a} :: DescribeTheme)
+
+-- | The ID for the theme.
+describeTheme_themeId :: Lens.Lens' DescribeTheme Prelude.Text
+describeTheme_themeId = Lens.lens (\DescribeTheme' {themeId} -> themeId) (\s@DescribeTheme' {} a -> s {themeId = a} :: DescribeTheme)
+
+instance Core.AWSRequest DescribeTheme where
+  type
+    AWSResponse DescribeTheme =
+      DescribeThemeResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeThemeResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Theme")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTheme where
+  hashWithSalt _salt DescribeTheme' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` versionNumber
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData DescribeTheme where
+  rnf DescribeTheme' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf versionNumber
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+
+instance Data.ToHeaders DescribeTheme where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeTheme where
+  toPath DescribeTheme' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId
+      ]
+
+instance Data.ToQuery DescribeTheme where
+  toQuery DescribeTheme' {..} =
+    Prelude.mconcat
+      [ "alias-name" Data.=: aliasName,
+        "version-number" Data.=: versionNumber
+      ]
+
+-- | /See:/ 'newDescribeThemeResponse' smart constructor.
+data DescribeThemeResponse = DescribeThemeResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The information about the theme that you are describing.
+    theme :: Prelude.Maybe Theme,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeThemeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'describeThemeResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'theme', 'describeThemeResponse_theme' - The information about the theme that you are describing.
+--
+-- 'status', 'describeThemeResponse_status' - The HTTP status of the request.
+newDescribeThemeResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeThemeResponse
+newDescribeThemeResponse pStatus_ =
+  DescribeThemeResponse'
+    { requestId = Prelude.Nothing,
+      theme = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+describeThemeResponse_requestId :: Lens.Lens' DescribeThemeResponse (Prelude.Maybe Prelude.Text)
+describeThemeResponse_requestId = Lens.lens (\DescribeThemeResponse' {requestId} -> requestId) (\s@DescribeThemeResponse' {} a -> s {requestId = a} :: DescribeThemeResponse)
+
+-- | The information about the theme that you are describing.
+describeThemeResponse_theme :: Lens.Lens' DescribeThemeResponse (Prelude.Maybe Theme)
+describeThemeResponse_theme = Lens.lens (\DescribeThemeResponse' {theme} -> theme) (\s@DescribeThemeResponse' {} a -> s {theme = a} :: DescribeThemeResponse)
+
+-- | The HTTP status of the request.
+describeThemeResponse_status :: Lens.Lens' DescribeThemeResponse Prelude.Int
+describeThemeResponse_status = Lens.lens (\DescribeThemeResponse' {status} -> status) (\s@DescribeThemeResponse' {} a -> s {status = a} :: DescribeThemeResponse)
+
+instance Prelude.NFData DescribeThemeResponse where
+  rnf DescribeThemeResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf theme
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeThemeAlias.hs b/gen/Amazonka/QuickSight/DescribeThemeAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeThemeAlias.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeThemeAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the alias for a theme.
+module Amazonka.QuickSight.DescribeThemeAlias
+  ( -- * Creating a Request
+    DescribeThemeAlias (..),
+    newDescribeThemeAlias,
+
+    -- * Request Lenses
+    describeThemeAlias_awsAccountId,
+    describeThemeAlias_themeId,
+    describeThemeAlias_aliasName,
+
+    -- * Destructuring the Response
+    DescribeThemeAliasResponse (..),
+    newDescribeThemeAliasResponse,
+
+    -- * Response Lenses
+    describeThemeAliasResponse_requestId,
+    describeThemeAliasResponse_themeAlias,
+    describeThemeAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeThemeAlias' smart constructor.
+data DescribeThemeAlias = DescribeThemeAlias'
+  { -- | The ID of the Amazon Web Services account that contains the theme alias
+    -- that you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text,
+    -- | The name of the theme alias that you want to describe.
+    aliasName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeThemeAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeThemeAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the theme alias
+-- that you\'re describing.
+--
+-- 'themeId', 'describeThemeAlias_themeId' - The ID for the theme.
+--
+-- 'aliasName', 'describeThemeAlias_aliasName' - The name of the theme alias that you want to describe.
+newDescribeThemeAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  DescribeThemeAlias
+newDescribeThemeAlias
+  pAwsAccountId_
+  pThemeId_
+  pAliasName_ =
+    DescribeThemeAlias'
+      { awsAccountId = pAwsAccountId_,
+        themeId = pThemeId_,
+        aliasName = pAliasName_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the theme alias
+-- that you\'re describing.
+describeThemeAlias_awsAccountId :: Lens.Lens' DescribeThemeAlias Prelude.Text
+describeThemeAlias_awsAccountId = Lens.lens (\DescribeThemeAlias' {awsAccountId} -> awsAccountId) (\s@DescribeThemeAlias' {} a -> s {awsAccountId = a} :: DescribeThemeAlias)
+
+-- | The ID for the theme.
+describeThemeAlias_themeId :: Lens.Lens' DescribeThemeAlias Prelude.Text
+describeThemeAlias_themeId = Lens.lens (\DescribeThemeAlias' {themeId} -> themeId) (\s@DescribeThemeAlias' {} a -> s {themeId = a} :: DescribeThemeAlias)
+
+-- | The name of the theme alias that you want to describe.
+describeThemeAlias_aliasName :: Lens.Lens' DescribeThemeAlias Prelude.Text
+describeThemeAlias_aliasName = Lens.lens (\DescribeThemeAlias' {aliasName} -> aliasName) (\s@DescribeThemeAlias' {} a -> s {aliasName = a} :: DescribeThemeAlias)
+
+instance Core.AWSRequest DescribeThemeAlias where
+  type
+    AWSResponse DescribeThemeAlias =
+      DescribeThemeAliasResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeThemeAliasResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeAlias")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeThemeAlias where
+  hashWithSalt _salt DescribeThemeAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` aliasName
+
+instance Prelude.NFData DescribeThemeAlias where
+  rnf DescribeThemeAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf aliasName
+
+instance Data.ToHeaders DescribeThemeAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeThemeAlias where
+  toPath DescribeThemeAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery DescribeThemeAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeThemeAliasResponse' smart constructor.
+data DescribeThemeAliasResponse = DescribeThemeAliasResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the theme alias.
+    themeAlias :: Prelude.Maybe ThemeAlias,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeThemeAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'describeThemeAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeAlias', 'describeThemeAliasResponse_themeAlias' - Information about the theme alias.
+--
+-- 'status', 'describeThemeAliasResponse_status' - The HTTP status of the request.
+newDescribeThemeAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeThemeAliasResponse
+newDescribeThemeAliasResponse pStatus_ =
+  DescribeThemeAliasResponse'
+    { requestId =
+        Prelude.Nothing,
+      themeAlias = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+describeThemeAliasResponse_requestId :: Lens.Lens' DescribeThemeAliasResponse (Prelude.Maybe Prelude.Text)
+describeThemeAliasResponse_requestId = Lens.lens (\DescribeThemeAliasResponse' {requestId} -> requestId) (\s@DescribeThemeAliasResponse' {} a -> s {requestId = a} :: DescribeThemeAliasResponse)
+
+-- | Information about the theme alias.
+describeThemeAliasResponse_themeAlias :: Lens.Lens' DescribeThemeAliasResponse (Prelude.Maybe ThemeAlias)
+describeThemeAliasResponse_themeAlias = Lens.lens (\DescribeThemeAliasResponse' {themeAlias} -> themeAlias) (\s@DescribeThemeAliasResponse' {} a -> s {themeAlias = a} :: DescribeThemeAliasResponse)
+
+-- | The HTTP status of the request.
+describeThemeAliasResponse_status :: Lens.Lens' DescribeThemeAliasResponse Prelude.Int
+describeThemeAliasResponse_status = Lens.lens (\DescribeThemeAliasResponse' {status} -> status) (\s@DescribeThemeAliasResponse' {} a -> s {status = a} :: DescribeThemeAliasResponse)
+
+instance Prelude.NFData DescribeThemeAliasResponse where
+  rnf DescribeThemeAliasResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeAlias
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeThemePermissions.hs b/gen/Amazonka/QuickSight/DescribeThemePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeThemePermissions.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.DescribeThemePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the read and write permissions for a theme.
+module Amazonka.QuickSight.DescribeThemePermissions
+  ( -- * Creating a Request
+    DescribeThemePermissions (..),
+    newDescribeThemePermissions,
+
+    -- * Request Lenses
+    describeThemePermissions_awsAccountId,
+    describeThemePermissions_themeId,
+
+    -- * Destructuring the Response
+    DescribeThemePermissionsResponse (..),
+    newDescribeThemePermissionsResponse,
+
+    -- * Response Lenses
+    describeThemePermissionsResponse_permissions,
+    describeThemePermissionsResponse_requestId,
+    describeThemePermissionsResponse_themeArn,
+    describeThemePermissionsResponse_themeId,
+    describeThemePermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeThemePermissions' smart constructor.
+data DescribeThemePermissions = DescribeThemePermissions'
+  { -- | The ID of the Amazon Web Services account that contains the theme that
+    -- you\'re describing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme that you want to describe permissions for.
+    themeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeThemePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'describeThemePermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the theme that
+-- you\'re describing.
+--
+-- 'themeId', 'describeThemePermissions_themeId' - The ID for the theme that you want to describe permissions for.
+newDescribeThemePermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  DescribeThemePermissions
+newDescribeThemePermissions pAwsAccountId_ pThemeId_ =
+  DescribeThemePermissions'
+    { awsAccountId =
+        pAwsAccountId_,
+      themeId = pThemeId_
+    }
+
+-- | The ID of the Amazon Web Services account that contains the theme that
+-- you\'re describing.
+describeThemePermissions_awsAccountId :: Lens.Lens' DescribeThemePermissions Prelude.Text
+describeThemePermissions_awsAccountId = Lens.lens (\DescribeThemePermissions' {awsAccountId} -> awsAccountId) (\s@DescribeThemePermissions' {} a -> s {awsAccountId = a} :: DescribeThemePermissions)
+
+-- | The ID for the theme that you want to describe permissions for.
+describeThemePermissions_themeId :: Lens.Lens' DescribeThemePermissions Prelude.Text
+describeThemePermissions_themeId = Lens.lens (\DescribeThemePermissions' {themeId} -> themeId) (\s@DescribeThemePermissions' {} a -> s {themeId = a} :: DescribeThemePermissions)
+
+instance Core.AWSRequest DescribeThemePermissions where
+  type
+    AWSResponse DescribeThemePermissions =
+      DescribeThemePermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeThemePermissionsResponse'
+            Prelude.<$> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeArn")
+            Prelude.<*> (x Data..?> "ThemeId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeThemePermissions where
+  hashWithSalt _salt DescribeThemePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData DescribeThemePermissions where
+  rnf DescribeThemePermissions' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+
+instance Data.ToHeaders DescribeThemePermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeThemePermissions where
+  toPath DescribeThemePermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeThemePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeThemePermissionsResponse' smart constructor.
+data DescribeThemePermissionsResponse = DescribeThemePermissionsResponse'
+  { -- | A list of resource permissions set on the theme.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the theme.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeThemePermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissions', 'describeThemePermissionsResponse_permissions' - A list of resource permissions set on the theme.
+--
+-- 'requestId', 'describeThemePermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeArn', 'describeThemePermissionsResponse_themeArn' - The Amazon Resource Name (ARN) of the theme.
+--
+-- 'themeId', 'describeThemePermissionsResponse_themeId' - The ID for the theme.
+--
+-- 'status', 'describeThemePermissionsResponse_status' - The HTTP status of the request.
+newDescribeThemePermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeThemePermissionsResponse
+newDescribeThemePermissionsResponse pStatus_ =
+  DescribeThemePermissionsResponse'
+    { permissions =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A list of resource permissions set on the theme.
+describeThemePermissionsResponse_permissions :: Lens.Lens' DescribeThemePermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+describeThemePermissionsResponse_permissions = Lens.lens (\DescribeThemePermissionsResponse' {permissions} -> permissions) (\s@DescribeThemePermissionsResponse' {} a -> s {permissions = a} :: DescribeThemePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+describeThemePermissionsResponse_requestId :: Lens.Lens' DescribeThemePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeThemePermissionsResponse_requestId = Lens.lens (\DescribeThemePermissionsResponse' {requestId} -> requestId) (\s@DescribeThemePermissionsResponse' {} a -> s {requestId = a} :: DescribeThemePermissionsResponse)
+
+-- | The Amazon Resource Name (ARN) of the theme.
+describeThemePermissionsResponse_themeArn :: Lens.Lens' DescribeThemePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeThemePermissionsResponse_themeArn = Lens.lens (\DescribeThemePermissionsResponse' {themeArn} -> themeArn) (\s@DescribeThemePermissionsResponse' {} a -> s {themeArn = a} :: DescribeThemePermissionsResponse)
+
+-- | The ID for the theme.
+describeThemePermissionsResponse_themeId :: Lens.Lens' DescribeThemePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeThemePermissionsResponse_themeId = Lens.lens (\DescribeThemePermissionsResponse' {themeId} -> themeId) (\s@DescribeThemePermissionsResponse' {} a -> s {themeId = a} :: DescribeThemePermissionsResponse)
+
+-- | The HTTP status of the request.
+describeThemePermissionsResponse_status :: Lens.Lens' DescribeThemePermissionsResponse Prelude.Int
+describeThemePermissionsResponse_status = Lens.lens (\DescribeThemePermissionsResponse' {status} -> status) (\s@DescribeThemePermissionsResponse' {} a -> s {status = a} :: DescribeThemePermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeThemePermissionsResponse
+  where
+  rnf DescribeThemePermissionsResponse' {..} =
+    Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/DescribeUser.hs b/gen/Amazonka/QuickSight/DescribeUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/DescribeUser.hs
@@ -0,0 +1,212 @@
+{-# 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.QuickSight.DescribeUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a user, given the user name.
+module Amazonka.QuickSight.DescribeUser
+  ( -- * Creating a Request
+    DescribeUser (..),
+    newDescribeUser,
+
+    -- * Request Lenses
+    describeUser_userName,
+    describeUser_awsAccountId,
+    describeUser_namespace,
+
+    -- * Destructuring the Response
+    DescribeUserResponse (..),
+    newDescribeUserResponse,
+
+    -- * Response Lenses
+    describeUserResponse_requestId,
+    describeUserResponse_user,
+    describeUserResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeUser' smart constructor.
+data DescribeUser = DescribeUser'
+  { -- | The name of the user that you want to describe.
+    userName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the user is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userName', 'describeUser_userName' - The name of the user that you want to describe.
+--
+-- 'awsAccountId', 'describeUser_awsAccountId' - The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'describeUser_namespace' - The namespace. Currently, you should set this to @default@.
+newDescribeUser ::
+  -- | 'userName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  DescribeUser
+newDescribeUser pUserName_ pAwsAccountId_ pNamespace_ =
+  DescribeUser'
+    { userName = pUserName_,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The name of the user that you want to describe.
+describeUser_userName :: Lens.Lens' DescribeUser Prelude.Text
+describeUser_userName = Lens.lens (\DescribeUser' {userName} -> userName) (\s@DescribeUser' {} a -> s {userName = a} :: DescribeUser)
+
+-- | The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+describeUser_awsAccountId :: Lens.Lens' DescribeUser Prelude.Text
+describeUser_awsAccountId = Lens.lens (\DescribeUser' {awsAccountId} -> awsAccountId) (\s@DescribeUser' {} a -> s {awsAccountId = a} :: DescribeUser)
+
+-- | The namespace. Currently, you should set this to @default@.
+describeUser_namespace :: Lens.Lens' DescribeUser Prelude.Text
+describeUser_namespace = Lens.lens (\DescribeUser' {namespace} -> namespace) (\s@DescribeUser' {} a -> s {namespace = a} :: DescribeUser)
+
+instance Core.AWSRequest DescribeUser where
+  type AWSResponse DescribeUser = DescribeUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeUserResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeUser where
+  hashWithSalt _salt DescribeUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` userName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData DescribeUser where
+  rnf DescribeUser' {..} =
+    Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders DescribeUser where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeUser where
+  toPath DescribeUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users/",
+        Data.toBS userName
+      ]
+
+instance Data.ToQuery DescribeUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeUserResponse' smart constructor.
+data DescribeUserResponse = DescribeUserResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The user name.
+    user :: Prelude.Maybe User,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'describeUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'user', 'describeUserResponse_user' - The user name.
+--
+-- 'status', 'describeUserResponse_status' - The HTTP status of the request.
+newDescribeUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  DescribeUserResponse
+newDescribeUserResponse pStatus_ =
+  DescribeUserResponse'
+    { requestId = Prelude.Nothing,
+      user = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+describeUserResponse_requestId :: Lens.Lens' DescribeUserResponse (Prelude.Maybe Prelude.Text)
+describeUserResponse_requestId = Lens.lens (\DescribeUserResponse' {requestId} -> requestId) (\s@DescribeUserResponse' {} a -> s {requestId = a} :: DescribeUserResponse)
+
+-- | The user name.
+describeUserResponse_user :: Lens.Lens' DescribeUserResponse (Prelude.Maybe User)
+describeUserResponse_user = Lens.lens (\DescribeUserResponse' {user} -> user) (\s@DescribeUserResponse' {} a -> s {user = a} :: DescribeUserResponse)
+
+-- | The HTTP status of the request.
+describeUserResponse_status :: Lens.Lens' DescribeUserResponse Prelude.Int
+describeUserResponse_status = Lens.lens (\DescribeUserResponse' {status} -> status) (\s@DescribeUserResponse' {} a -> s {status = a} :: DescribeUserResponse)
+
+instance Prelude.NFData DescribeUserResponse where
+  rnf DescribeUserResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf user
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/GenerateEmbedUrlForAnonymousUser.hs b/gen/Amazonka/QuickSight/GenerateEmbedUrlForAnonymousUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/GenerateEmbedUrlForAnonymousUser.hs
@@ -0,0 +1,431 @@
+{-# 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.QuickSight.GenerateEmbedUrlForAnonymousUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates an embed URL that you can use to embed an Amazon QuickSight
+-- dashboard or visual in your website, without having to register any
+-- reader users. Before you use this action, make sure that you have
+-- configured the dashboards and permissions.
+--
+-- The following rules apply to the generated URL:
+--
+-- -   It contains a temporary bearer token. It is valid for 5 minutes
+--     after it is generated. Once redeemed within this period, it cannot
+--     be re-used again.
+--
+-- -   The URL validity period should not be confused with the actual
+--     session lifetime that can be customized using the
+--     @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html#QS-GenerateEmbedUrlForAnonymousUser-request-SessionLifetimeInMinutes SessionLifetimeInMinutes>@ @
+--     parameter. The resulting user session is valid for 15 minutes
+--     (minimum) to 10 hours (maximum). The default session duration is 10
+--     hours.
+--
+-- -   You are charged only when the URL is used or there is interaction
+--     with Amazon QuickSight.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html Embedded Analytics>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- For more information about the high-level steps for embedding and for an
+-- interactive demo of the ways you can customize embedding, visit the
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
+module Amazonka.QuickSight.GenerateEmbedUrlForAnonymousUser
+  ( -- * Creating a Request
+    GenerateEmbedUrlForAnonymousUser (..),
+    newGenerateEmbedUrlForAnonymousUser,
+
+    -- * Request Lenses
+    generateEmbedUrlForAnonymousUser_allowedDomains,
+    generateEmbedUrlForAnonymousUser_sessionLifetimeInMinutes,
+    generateEmbedUrlForAnonymousUser_sessionTags,
+    generateEmbedUrlForAnonymousUser_awsAccountId,
+    generateEmbedUrlForAnonymousUser_namespace,
+    generateEmbedUrlForAnonymousUser_authorizedResourceArns,
+    generateEmbedUrlForAnonymousUser_experienceConfiguration,
+
+    -- * Destructuring the Response
+    GenerateEmbedUrlForAnonymousUserResponse (..),
+    newGenerateEmbedUrlForAnonymousUserResponse,
+
+    -- * Response Lenses
+    generateEmbedUrlForAnonymousUserResponse_status,
+    generateEmbedUrlForAnonymousUserResponse_embedUrl,
+    generateEmbedUrlForAnonymousUserResponse_requestId,
+    generateEmbedUrlForAnonymousUserResponse_anonymousUserArn,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGenerateEmbedUrlForAnonymousUser' smart constructor.
+data GenerateEmbedUrlForAnonymousUser = GenerateEmbedUrlForAnonymousUser'
+  { -- | The domains that you want to add to the allow list for access to the
+    -- generated URL that is then embedded. This optional parameter overrides
+    -- the static domains that are configured in the Manage QuickSight menu in
+    -- the Amazon QuickSight console. Instead, it allows only the domains that
+    -- you include in this parameter. You can list up to three domains or
+    -- subdomains in each API call.
+    --
+    -- To include all subdomains under a specific domain to the allow list, use
+    -- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
+    -- under @https:\/\/sapp.amazon.com@.
+    allowedDomains :: Prelude.Maybe [Prelude.Text],
+    -- | How many minutes the session is valid. The session lifetime must be in
+    -- [15-600] minutes range.
+    sessionLifetimeInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | The session tags used for row-level security. Before you use this
+    -- parameter, make sure that you have configured the relevant datasets
+    -- using the @DataSet$RowLevelPermissionTagConfiguration@ parameter so that
+    -- session tags can be used to provide row-level security.
+    --
+    -- These are not the tags used for the Amazon Web Services resource tagging
+    -- feature. For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-rls-tags.html Using Row-Level Security (RLS) with Tags>in
+    -- the /Amazon QuickSight User Guide/.
+    sessionTags :: Prelude.Maybe (Prelude.NonEmpty SessionTag),
+    -- | The ID for the Amazon Web Services account that contains the dashboard
+    -- that you\'re embedding.
+    awsAccountId :: Prelude.Text,
+    -- | The Amazon QuickSight namespace that the anonymous user virtually
+    -- belongs to. If you are not using an Amazon QuickSight custom namespace,
+    -- set this to @default@.
+    namespace :: Prelude.Text,
+    -- | The Amazon Resource Names (ARNs) for the Amazon QuickSight resources
+    -- that the user is authorized to access during the lifetime of the
+    -- session. If you choose @Dashboard@ embedding experience, pass the list
+    -- of dashboard ARNs in the account that you want the user to be able to
+    -- view. Currently, you can pass up to 25 dashboard ARNs in each API call.
+    authorizedResourceArns :: [Prelude.Text],
+    -- | The configuration of the experience that you are embedding.
+    experienceConfiguration :: AnonymousUserEmbeddingExperienceConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GenerateEmbedUrlForAnonymousUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'allowedDomains', 'generateEmbedUrlForAnonymousUser_allowedDomains' - The domains that you want to add to the allow list for access to the
+-- generated URL that is then embedded. This optional parameter overrides
+-- the static domains that are configured in the Manage QuickSight menu in
+-- the Amazon QuickSight console. Instead, it allows only the domains that
+-- you include in this parameter. You can list up to three domains or
+-- subdomains in each API call.
+--
+-- To include all subdomains under a specific domain to the allow list, use
+-- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
+-- under @https:\/\/sapp.amazon.com@.
+--
+-- 'sessionLifetimeInMinutes', 'generateEmbedUrlForAnonymousUser_sessionLifetimeInMinutes' - How many minutes the session is valid. The session lifetime must be in
+-- [15-600] minutes range.
+--
+-- 'sessionTags', 'generateEmbedUrlForAnonymousUser_sessionTags' - The session tags used for row-level security. Before you use this
+-- parameter, make sure that you have configured the relevant datasets
+-- using the @DataSet$RowLevelPermissionTagConfiguration@ parameter so that
+-- session tags can be used to provide row-level security.
+--
+-- These are not the tags used for the Amazon Web Services resource tagging
+-- feature. For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-rls-tags.html Using Row-Level Security (RLS) with Tags>in
+-- the /Amazon QuickSight User Guide/.
+--
+-- 'awsAccountId', 'generateEmbedUrlForAnonymousUser_awsAccountId' - The ID for the Amazon Web Services account that contains the dashboard
+-- that you\'re embedding.
+--
+-- 'namespace', 'generateEmbedUrlForAnonymousUser_namespace' - The Amazon QuickSight namespace that the anonymous user virtually
+-- belongs to. If you are not using an Amazon QuickSight custom namespace,
+-- set this to @default@.
+--
+-- 'authorizedResourceArns', 'generateEmbedUrlForAnonymousUser_authorizedResourceArns' - The Amazon Resource Names (ARNs) for the Amazon QuickSight resources
+-- that the user is authorized to access during the lifetime of the
+-- session. If you choose @Dashboard@ embedding experience, pass the list
+-- of dashboard ARNs in the account that you want the user to be able to
+-- view. Currently, you can pass up to 25 dashboard ARNs in each API call.
+--
+-- 'experienceConfiguration', 'generateEmbedUrlForAnonymousUser_experienceConfiguration' - The configuration of the experience that you are embedding.
+newGenerateEmbedUrlForAnonymousUser ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  -- | 'experienceConfiguration'
+  AnonymousUserEmbeddingExperienceConfiguration ->
+  GenerateEmbedUrlForAnonymousUser
+newGenerateEmbedUrlForAnonymousUser
+  pAwsAccountId_
+  pNamespace_
+  pExperienceConfiguration_ =
+    GenerateEmbedUrlForAnonymousUser'
+      { allowedDomains =
+          Prelude.Nothing,
+        sessionLifetimeInMinutes =
+          Prelude.Nothing,
+        sessionTags = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_,
+        authorizedResourceArns = Prelude.mempty,
+        experienceConfiguration =
+          pExperienceConfiguration_
+      }
+
+-- | The domains that you want to add to the allow list for access to the
+-- generated URL that is then embedded. This optional parameter overrides
+-- the static domains that are configured in the Manage QuickSight menu in
+-- the Amazon QuickSight console. Instead, it allows only the domains that
+-- you include in this parameter. You can list up to three domains or
+-- subdomains in each API call.
+--
+-- To include all subdomains under a specific domain to the allow list, use
+-- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
+-- under @https:\/\/sapp.amazon.com@.
+generateEmbedUrlForAnonymousUser_allowedDomains :: Lens.Lens' GenerateEmbedUrlForAnonymousUser (Prelude.Maybe [Prelude.Text])
+generateEmbedUrlForAnonymousUser_allowedDomains = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {allowedDomains} -> allowedDomains) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {allowedDomains = a} :: GenerateEmbedUrlForAnonymousUser) Prelude.. Lens.mapping Lens.coerced
+
+-- | How many minutes the session is valid. The session lifetime must be in
+-- [15-600] minutes range.
+generateEmbedUrlForAnonymousUser_sessionLifetimeInMinutes :: Lens.Lens' GenerateEmbedUrlForAnonymousUser (Prelude.Maybe Prelude.Natural)
+generateEmbedUrlForAnonymousUser_sessionLifetimeInMinutes = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {sessionLifetimeInMinutes} -> sessionLifetimeInMinutes) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {sessionLifetimeInMinutes = a} :: GenerateEmbedUrlForAnonymousUser)
+
+-- | The session tags used for row-level security. Before you use this
+-- parameter, make sure that you have configured the relevant datasets
+-- using the @DataSet$RowLevelPermissionTagConfiguration@ parameter so that
+-- session tags can be used to provide row-level security.
+--
+-- These are not the tags used for the Amazon Web Services resource tagging
+-- feature. For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-rls-tags.html Using Row-Level Security (RLS) with Tags>in
+-- the /Amazon QuickSight User Guide/.
+generateEmbedUrlForAnonymousUser_sessionTags :: Lens.Lens' GenerateEmbedUrlForAnonymousUser (Prelude.Maybe (Prelude.NonEmpty SessionTag))
+generateEmbedUrlForAnonymousUser_sessionTags = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {sessionTags} -> sessionTags) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {sessionTags = a} :: GenerateEmbedUrlForAnonymousUser) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID for the Amazon Web Services account that contains the dashboard
+-- that you\'re embedding.
+generateEmbedUrlForAnonymousUser_awsAccountId :: Lens.Lens' GenerateEmbedUrlForAnonymousUser Prelude.Text
+generateEmbedUrlForAnonymousUser_awsAccountId = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {awsAccountId} -> awsAccountId) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {awsAccountId = a} :: GenerateEmbedUrlForAnonymousUser)
+
+-- | The Amazon QuickSight namespace that the anonymous user virtually
+-- belongs to. If you are not using an Amazon QuickSight custom namespace,
+-- set this to @default@.
+generateEmbedUrlForAnonymousUser_namespace :: Lens.Lens' GenerateEmbedUrlForAnonymousUser Prelude.Text
+generateEmbedUrlForAnonymousUser_namespace = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {namespace} -> namespace) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {namespace = a} :: GenerateEmbedUrlForAnonymousUser)
+
+-- | The Amazon Resource Names (ARNs) for the Amazon QuickSight resources
+-- that the user is authorized to access during the lifetime of the
+-- session. If you choose @Dashboard@ embedding experience, pass the list
+-- of dashboard ARNs in the account that you want the user to be able to
+-- view. Currently, you can pass up to 25 dashboard ARNs in each API call.
+generateEmbedUrlForAnonymousUser_authorizedResourceArns :: Lens.Lens' GenerateEmbedUrlForAnonymousUser [Prelude.Text]
+generateEmbedUrlForAnonymousUser_authorizedResourceArns = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {authorizedResourceArns} -> authorizedResourceArns) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {authorizedResourceArns = a} :: GenerateEmbedUrlForAnonymousUser) Prelude.. Lens.coerced
+
+-- | The configuration of the experience that you are embedding.
+generateEmbedUrlForAnonymousUser_experienceConfiguration :: Lens.Lens' GenerateEmbedUrlForAnonymousUser AnonymousUserEmbeddingExperienceConfiguration
+generateEmbedUrlForAnonymousUser_experienceConfiguration = Lens.lens (\GenerateEmbedUrlForAnonymousUser' {experienceConfiguration} -> experienceConfiguration) (\s@GenerateEmbedUrlForAnonymousUser' {} a -> s {experienceConfiguration = a} :: GenerateEmbedUrlForAnonymousUser)
+
+instance
+  Core.AWSRequest
+    GenerateEmbedUrlForAnonymousUser
+  where
+  type
+    AWSResponse GenerateEmbedUrlForAnonymousUser =
+      GenerateEmbedUrlForAnonymousUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GenerateEmbedUrlForAnonymousUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EmbedUrl")
+            Prelude.<*> (x Data..:> "RequestId")
+            Prelude.<*> (x Data..:> "AnonymousUserArn")
+      )
+
+instance
+  Prelude.Hashable
+    GenerateEmbedUrlForAnonymousUser
+  where
+  hashWithSalt
+    _salt
+    GenerateEmbedUrlForAnonymousUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` allowedDomains
+        `Prelude.hashWithSalt` sessionLifetimeInMinutes
+        `Prelude.hashWithSalt` sessionTags
+        `Prelude.hashWithSalt` awsAccountId
+        `Prelude.hashWithSalt` namespace
+        `Prelude.hashWithSalt` authorizedResourceArns
+        `Prelude.hashWithSalt` experienceConfiguration
+
+instance
+  Prelude.NFData
+    GenerateEmbedUrlForAnonymousUser
+  where
+  rnf GenerateEmbedUrlForAnonymousUser' {..} =
+    Prelude.rnf allowedDomains
+      `Prelude.seq` Prelude.rnf sessionLifetimeInMinutes
+      `Prelude.seq` Prelude.rnf sessionTags
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf authorizedResourceArns
+      `Prelude.seq` Prelude.rnf experienceConfiguration
+
+instance
+  Data.ToHeaders
+    GenerateEmbedUrlForAnonymousUser
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GenerateEmbedUrlForAnonymousUser where
+  toJSON GenerateEmbedUrlForAnonymousUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AllowedDomains" Data..=)
+              Prelude.<$> allowedDomains,
+            ("SessionLifetimeInMinutes" Data..=)
+              Prelude.<$> sessionLifetimeInMinutes,
+            ("SessionTags" Data..=) Prelude.<$> sessionTags,
+            Prelude.Just ("Namespace" Data..= namespace),
+            Prelude.Just
+              ( "AuthorizedResourceArns"
+                  Data..= authorizedResourceArns
+              ),
+            Prelude.Just
+              ( "ExperienceConfiguration"
+                  Data..= experienceConfiguration
+              )
+          ]
+      )
+
+instance Data.ToPath GenerateEmbedUrlForAnonymousUser where
+  toPath GenerateEmbedUrlForAnonymousUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/embed-url/anonymous-user"
+      ]
+
+instance
+  Data.ToQuery
+    GenerateEmbedUrlForAnonymousUser
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGenerateEmbedUrlForAnonymousUserResponse' smart constructor.
+data GenerateEmbedUrlForAnonymousUserResponse = GenerateEmbedUrlForAnonymousUserResponse'
+  { -- | The HTTP status of the request.
+    status :: Prelude.Int,
+    -- | The embed URL for the dashboard.
+    embedUrl :: Data.Sensitive Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) to use for the anonymous Amazon
+    -- QuickSight user.
+    anonymousUserArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GenerateEmbedUrlForAnonymousUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'generateEmbedUrlForAnonymousUserResponse_status' - The HTTP status of the request.
+--
+-- 'embedUrl', 'generateEmbedUrlForAnonymousUserResponse_embedUrl' - The embed URL for the dashboard.
+--
+-- 'requestId', 'generateEmbedUrlForAnonymousUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'anonymousUserArn', 'generateEmbedUrlForAnonymousUserResponse_anonymousUserArn' - The Amazon Resource Name (ARN) to use for the anonymous Amazon
+-- QuickSight user.
+newGenerateEmbedUrlForAnonymousUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  -- | 'embedUrl'
+  Prelude.Text ->
+  -- | 'requestId'
+  Prelude.Text ->
+  -- | 'anonymousUserArn'
+  Prelude.Text ->
+  GenerateEmbedUrlForAnonymousUserResponse
+newGenerateEmbedUrlForAnonymousUserResponse
+  pStatus_
+  pEmbedUrl_
+  pRequestId_
+  pAnonymousUserArn_ =
+    GenerateEmbedUrlForAnonymousUserResponse'
+      { status =
+          pStatus_,
+        embedUrl =
+          Data._Sensitive
+            Lens.# pEmbedUrl_,
+        requestId = pRequestId_,
+        anonymousUserArn =
+          pAnonymousUserArn_
+      }
+
+-- | The HTTP status of the request.
+generateEmbedUrlForAnonymousUserResponse_status :: Lens.Lens' GenerateEmbedUrlForAnonymousUserResponse Prelude.Int
+generateEmbedUrlForAnonymousUserResponse_status = Lens.lens (\GenerateEmbedUrlForAnonymousUserResponse' {status} -> status) (\s@GenerateEmbedUrlForAnonymousUserResponse' {} a -> s {status = a} :: GenerateEmbedUrlForAnonymousUserResponse)
+
+-- | The embed URL for the dashboard.
+generateEmbedUrlForAnonymousUserResponse_embedUrl :: Lens.Lens' GenerateEmbedUrlForAnonymousUserResponse Prelude.Text
+generateEmbedUrlForAnonymousUserResponse_embedUrl = Lens.lens (\GenerateEmbedUrlForAnonymousUserResponse' {embedUrl} -> embedUrl) (\s@GenerateEmbedUrlForAnonymousUserResponse' {} a -> s {embedUrl = a} :: GenerateEmbedUrlForAnonymousUserResponse) Prelude.. Data._Sensitive
+
+-- | The Amazon Web Services request ID for this operation.
+generateEmbedUrlForAnonymousUserResponse_requestId :: Lens.Lens' GenerateEmbedUrlForAnonymousUserResponse Prelude.Text
+generateEmbedUrlForAnonymousUserResponse_requestId = Lens.lens (\GenerateEmbedUrlForAnonymousUserResponse' {requestId} -> requestId) (\s@GenerateEmbedUrlForAnonymousUserResponse' {} a -> s {requestId = a} :: GenerateEmbedUrlForAnonymousUserResponse)
+
+-- | The Amazon Resource Name (ARN) to use for the anonymous Amazon
+-- QuickSight user.
+generateEmbedUrlForAnonymousUserResponse_anonymousUserArn :: Lens.Lens' GenerateEmbedUrlForAnonymousUserResponse Prelude.Text
+generateEmbedUrlForAnonymousUserResponse_anonymousUserArn = Lens.lens (\GenerateEmbedUrlForAnonymousUserResponse' {anonymousUserArn} -> anonymousUserArn) (\s@GenerateEmbedUrlForAnonymousUserResponse' {} a -> s {anonymousUserArn = a} :: GenerateEmbedUrlForAnonymousUserResponse)
+
+instance
+  Prelude.NFData
+    GenerateEmbedUrlForAnonymousUserResponse
+  where
+  rnf GenerateEmbedUrlForAnonymousUserResponse' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf embedUrl
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf anonymousUserArn
diff --git a/gen/Amazonka/QuickSight/GenerateEmbedUrlForRegisteredUser.hs b/gen/Amazonka/QuickSight/GenerateEmbedUrlForRegisteredUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/GenerateEmbedUrlForRegisteredUser.hs
@@ -0,0 +1,358 @@
+{-# 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.QuickSight.GenerateEmbedUrlForRegisteredUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates an embed URL that you can use to embed an Amazon QuickSight
+-- experience in your website. This action can be used for any type of user
+-- registered in an Amazon QuickSight account. Before you use this action,
+-- make sure that you have configured the relevant Amazon QuickSight
+-- resource and permissions.
+--
+-- The following rules apply to the generated URL:
+--
+-- -   It contains a temporary bearer token. It is valid for 5 minutes
+--     after it is generated. Once redeemed within this period, it cannot
+--     be re-used again.
+--
+-- -   The URL validity period should not be confused with the actual
+--     session lifetime that can be customized using the
+--     @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html#QS-GenerateEmbedUrlForRegisteredUser-request-SessionLifetimeInMinutes SessionLifetimeInMinutes>@ @
+--     parameter.
+--
+--     The resulting user session is valid for 15 minutes (minimum) to 10
+--     hours (maximum). The default session duration is 10 hours.
+--
+-- -   You are charged only when the URL is used or there is interaction
+--     with Amazon QuickSight.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html Embedded Analytics>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- For more information about the high-level steps for embedding and for an
+-- interactive demo of the ways you can customize embedding, visit the
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
+module Amazonka.QuickSight.GenerateEmbedUrlForRegisteredUser
+  ( -- * Creating a Request
+    GenerateEmbedUrlForRegisteredUser (..),
+    newGenerateEmbedUrlForRegisteredUser,
+
+    -- * Request Lenses
+    generateEmbedUrlForRegisteredUser_allowedDomains,
+    generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes,
+    generateEmbedUrlForRegisteredUser_awsAccountId,
+    generateEmbedUrlForRegisteredUser_userArn,
+    generateEmbedUrlForRegisteredUser_experienceConfiguration,
+
+    -- * Destructuring the Response
+    GenerateEmbedUrlForRegisteredUserResponse (..),
+    newGenerateEmbedUrlForRegisteredUserResponse,
+
+    -- * Response Lenses
+    generateEmbedUrlForRegisteredUserResponse_status,
+    generateEmbedUrlForRegisteredUserResponse_embedUrl,
+    generateEmbedUrlForRegisteredUserResponse_requestId,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGenerateEmbedUrlForRegisteredUser' smart constructor.
+data GenerateEmbedUrlForRegisteredUser = GenerateEmbedUrlForRegisteredUser'
+  { -- | The domains that you want to add to the allow list for access to the
+    -- generated URL that is then embedded. This optional parameter overrides
+    -- the static domains that are configured in the Manage QuickSight menu in
+    -- the Amazon QuickSight console. Instead, it allows only the domains that
+    -- you include in this parameter. You can list up to three domains or
+    -- subdomains in each API call.
+    --
+    -- To include all subdomains under a specific domain to the allow list, use
+    -- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
+    -- under @https:\/\/sapp.amazon.com@.
+    allowedDomains :: Prelude.Maybe [Prelude.Text],
+    -- | How many minutes the session is valid. The session lifetime must be in
+    -- [15-600] minutes range.
+    sessionLifetimeInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | The ID for the Amazon Web Services account that contains the dashboard
+    -- that you\'re embedding.
+    awsAccountId :: Prelude.Text,
+    -- | The Amazon Resource Name for the registered user.
+    userArn :: Prelude.Text,
+    -- | The experience you are embedding. For registered users, you can embed
+    -- Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon
+    -- QuickSight Q search bar, or the entire Amazon QuickSight console.
+    experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GenerateEmbedUrlForRegisteredUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'allowedDomains', 'generateEmbedUrlForRegisteredUser_allowedDomains' - The domains that you want to add to the allow list for access to the
+-- generated URL that is then embedded. This optional parameter overrides
+-- the static domains that are configured in the Manage QuickSight menu in
+-- the Amazon QuickSight console. Instead, it allows only the domains that
+-- you include in this parameter. You can list up to three domains or
+-- subdomains in each API call.
+--
+-- To include all subdomains under a specific domain to the allow list, use
+-- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
+-- under @https:\/\/sapp.amazon.com@.
+--
+-- 'sessionLifetimeInMinutes', 'generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes' - How many minutes the session is valid. The session lifetime must be in
+-- [15-600] minutes range.
+--
+-- 'awsAccountId', 'generateEmbedUrlForRegisteredUser_awsAccountId' - The ID for the Amazon Web Services account that contains the dashboard
+-- that you\'re embedding.
+--
+-- 'userArn', 'generateEmbedUrlForRegisteredUser_userArn' - The Amazon Resource Name for the registered user.
+--
+-- 'experienceConfiguration', 'generateEmbedUrlForRegisteredUser_experienceConfiguration' - The experience you are embedding. For registered users, you can embed
+-- Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon
+-- QuickSight Q search bar, or the entire Amazon QuickSight console.
+newGenerateEmbedUrlForRegisteredUser ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'userArn'
+  Prelude.Text ->
+  -- | 'experienceConfiguration'
+  RegisteredUserEmbeddingExperienceConfiguration ->
+  GenerateEmbedUrlForRegisteredUser
+newGenerateEmbedUrlForRegisteredUser
+  pAwsAccountId_
+  pUserArn_
+  pExperienceConfiguration_ =
+    GenerateEmbedUrlForRegisteredUser'
+      { allowedDomains =
+          Prelude.Nothing,
+        sessionLifetimeInMinutes =
+          Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        userArn = pUserArn_,
+        experienceConfiguration =
+          pExperienceConfiguration_
+      }
+
+-- | The domains that you want to add to the allow list for access to the
+-- generated URL that is then embedded. This optional parameter overrides
+-- the static domains that are configured in the Manage QuickSight menu in
+-- the Amazon QuickSight console. Instead, it allows only the domains that
+-- you include in this parameter. You can list up to three domains or
+-- subdomains in each API call.
+--
+-- To include all subdomains under a specific domain to the allow list, use
+-- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
+-- under @https:\/\/sapp.amazon.com@.
+generateEmbedUrlForRegisteredUser_allowedDomains :: Lens.Lens' GenerateEmbedUrlForRegisteredUser (Prelude.Maybe [Prelude.Text])
+generateEmbedUrlForRegisteredUser_allowedDomains = Lens.lens (\GenerateEmbedUrlForRegisteredUser' {allowedDomains} -> allowedDomains) (\s@GenerateEmbedUrlForRegisteredUser' {} a -> s {allowedDomains = a} :: GenerateEmbedUrlForRegisteredUser) Prelude.. Lens.mapping Lens.coerced
+
+-- | How many minutes the session is valid. The session lifetime must be in
+-- [15-600] minutes range.
+generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes :: Lens.Lens' GenerateEmbedUrlForRegisteredUser (Prelude.Maybe Prelude.Natural)
+generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes = Lens.lens (\GenerateEmbedUrlForRegisteredUser' {sessionLifetimeInMinutes} -> sessionLifetimeInMinutes) (\s@GenerateEmbedUrlForRegisteredUser' {} a -> s {sessionLifetimeInMinutes = a} :: GenerateEmbedUrlForRegisteredUser)
+
+-- | The ID for the Amazon Web Services account that contains the dashboard
+-- that you\'re embedding.
+generateEmbedUrlForRegisteredUser_awsAccountId :: Lens.Lens' GenerateEmbedUrlForRegisteredUser Prelude.Text
+generateEmbedUrlForRegisteredUser_awsAccountId = Lens.lens (\GenerateEmbedUrlForRegisteredUser' {awsAccountId} -> awsAccountId) (\s@GenerateEmbedUrlForRegisteredUser' {} a -> s {awsAccountId = a} :: GenerateEmbedUrlForRegisteredUser)
+
+-- | The Amazon Resource Name for the registered user.
+generateEmbedUrlForRegisteredUser_userArn :: Lens.Lens' GenerateEmbedUrlForRegisteredUser Prelude.Text
+generateEmbedUrlForRegisteredUser_userArn = Lens.lens (\GenerateEmbedUrlForRegisteredUser' {userArn} -> userArn) (\s@GenerateEmbedUrlForRegisteredUser' {} a -> s {userArn = a} :: GenerateEmbedUrlForRegisteredUser)
+
+-- | The experience you are embedding. For registered users, you can embed
+-- Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon
+-- QuickSight Q search bar, or the entire Amazon QuickSight console.
+generateEmbedUrlForRegisteredUser_experienceConfiguration :: Lens.Lens' GenerateEmbedUrlForRegisteredUser RegisteredUserEmbeddingExperienceConfiguration
+generateEmbedUrlForRegisteredUser_experienceConfiguration = Lens.lens (\GenerateEmbedUrlForRegisteredUser' {experienceConfiguration} -> experienceConfiguration) (\s@GenerateEmbedUrlForRegisteredUser' {} a -> s {experienceConfiguration = a} :: GenerateEmbedUrlForRegisteredUser)
+
+instance
+  Core.AWSRequest
+    GenerateEmbedUrlForRegisteredUser
+  where
+  type
+    AWSResponse GenerateEmbedUrlForRegisteredUser =
+      GenerateEmbedUrlForRegisteredUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GenerateEmbedUrlForRegisteredUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EmbedUrl")
+            Prelude.<*> (x Data..:> "RequestId")
+      )
+
+instance
+  Prelude.Hashable
+    GenerateEmbedUrlForRegisteredUser
+  where
+  hashWithSalt
+    _salt
+    GenerateEmbedUrlForRegisteredUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` allowedDomains
+        `Prelude.hashWithSalt` sessionLifetimeInMinutes
+        `Prelude.hashWithSalt` awsAccountId
+        `Prelude.hashWithSalt` userArn
+        `Prelude.hashWithSalt` experienceConfiguration
+
+instance
+  Prelude.NFData
+    GenerateEmbedUrlForRegisteredUser
+  where
+  rnf GenerateEmbedUrlForRegisteredUser' {..} =
+    Prelude.rnf allowedDomains
+      `Prelude.seq` Prelude.rnf sessionLifetimeInMinutes
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf userArn
+      `Prelude.seq` Prelude.rnf experienceConfiguration
+
+instance
+  Data.ToHeaders
+    GenerateEmbedUrlForRegisteredUser
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    GenerateEmbedUrlForRegisteredUser
+  where
+  toJSON GenerateEmbedUrlForRegisteredUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AllowedDomains" Data..=)
+              Prelude.<$> allowedDomains,
+            ("SessionLifetimeInMinutes" Data..=)
+              Prelude.<$> sessionLifetimeInMinutes,
+            Prelude.Just ("UserArn" Data..= userArn),
+            Prelude.Just
+              ( "ExperienceConfiguration"
+                  Data..= experienceConfiguration
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    GenerateEmbedUrlForRegisteredUser
+  where
+  toPath GenerateEmbedUrlForRegisteredUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/embed-url/registered-user"
+      ]
+
+instance
+  Data.ToQuery
+    GenerateEmbedUrlForRegisteredUser
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGenerateEmbedUrlForRegisteredUserResponse' smart constructor.
+data GenerateEmbedUrlForRegisteredUserResponse = GenerateEmbedUrlForRegisteredUserResponse'
+  { -- | The HTTP status of the request.
+    status :: Prelude.Int,
+    -- | The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
+    -- or console.
+    embedUrl :: Data.Sensitive Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GenerateEmbedUrlForRegisteredUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'generateEmbedUrlForRegisteredUserResponse_status' - The HTTP status of the request.
+--
+-- 'embedUrl', 'generateEmbedUrlForRegisteredUserResponse_embedUrl' - The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
+-- or console.
+--
+-- 'requestId', 'generateEmbedUrlForRegisteredUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+newGenerateEmbedUrlForRegisteredUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  -- | 'embedUrl'
+  Prelude.Text ->
+  -- | 'requestId'
+  Prelude.Text ->
+  GenerateEmbedUrlForRegisteredUserResponse
+newGenerateEmbedUrlForRegisteredUserResponse
+  pStatus_
+  pEmbedUrl_
+  pRequestId_ =
+    GenerateEmbedUrlForRegisteredUserResponse'
+      { status =
+          pStatus_,
+        embedUrl =
+          Data._Sensitive
+            Lens.# pEmbedUrl_,
+        requestId = pRequestId_
+      }
+
+-- | The HTTP status of the request.
+generateEmbedUrlForRegisteredUserResponse_status :: Lens.Lens' GenerateEmbedUrlForRegisteredUserResponse Prelude.Int
+generateEmbedUrlForRegisteredUserResponse_status = Lens.lens (\GenerateEmbedUrlForRegisteredUserResponse' {status} -> status) (\s@GenerateEmbedUrlForRegisteredUserResponse' {} a -> s {status = a} :: GenerateEmbedUrlForRegisteredUserResponse)
+
+-- | The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
+-- or console.
+generateEmbedUrlForRegisteredUserResponse_embedUrl :: Lens.Lens' GenerateEmbedUrlForRegisteredUserResponse Prelude.Text
+generateEmbedUrlForRegisteredUserResponse_embedUrl = Lens.lens (\GenerateEmbedUrlForRegisteredUserResponse' {embedUrl} -> embedUrl) (\s@GenerateEmbedUrlForRegisteredUserResponse' {} a -> s {embedUrl = a} :: GenerateEmbedUrlForRegisteredUserResponse) Prelude.. Data._Sensitive
+
+-- | The Amazon Web Services request ID for this operation.
+generateEmbedUrlForRegisteredUserResponse_requestId :: Lens.Lens' GenerateEmbedUrlForRegisteredUserResponse Prelude.Text
+generateEmbedUrlForRegisteredUserResponse_requestId = Lens.lens (\GenerateEmbedUrlForRegisteredUserResponse' {requestId} -> requestId) (\s@GenerateEmbedUrlForRegisteredUserResponse' {} a -> s {requestId = a} :: GenerateEmbedUrlForRegisteredUserResponse)
+
+instance
+  Prelude.NFData
+    GenerateEmbedUrlForRegisteredUserResponse
+  where
+  rnf GenerateEmbedUrlForRegisteredUserResponse' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf embedUrl
+      `Prelude.seq` Prelude.rnf requestId
diff --git a/gen/Amazonka/QuickSight/GetDashboardEmbedUrl.hs b/gen/Amazonka/QuickSight/GetDashboardEmbedUrl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/GetDashboardEmbedUrl.hs
@@ -0,0 +1,449 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.GetDashboardEmbedUrl
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates a temporary session URL and authorization code(bearer token)
+-- that you can use to embed an Amazon QuickSight read-only dashboard in
+-- your website or application. Before you use this command, make sure that
+-- you have configured the dashboards and permissions.
+--
+-- Currently, you can use @GetDashboardEmbedURL@ only from the server, not
+-- from the user\'s browser. The following rules apply to the generated
+-- URL:
+--
+-- -   They must be used together.
+--
+-- -   They can be used one time only.
+--
+-- -   They are valid for 5 minutes after you run this command.
+--
+-- -   You are charged only when the URL is used or there is interaction
+--     with Amazon QuickSight.
+--
+-- -   The resulting user session is valid for 15 minutes (default) up to
+--     10 hours (maximum). You can use the optional
+--     @SessionLifetimeInMinutes@ parameter to customize session duration.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html Embedding Analytics Using GetDashboardEmbedUrl>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- For more information about the high-level steps for embedding and for an
+-- interactive demo of the ways you can customize embedding, visit the
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
+module Amazonka.QuickSight.GetDashboardEmbedUrl
+  ( -- * Creating a Request
+    GetDashboardEmbedUrl (..),
+    newGetDashboardEmbedUrl,
+
+    -- * Request Lenses
+    getDashboardEmbedUrl_additionalDashboardIds,
+    getDashboardEmbedUrl_namespace,
+    getDashboardEmbedUrl_resetDisabled,
+    getDashboardEmbedUrl_sessionLifetimeInMinutes,
+    getDashboardEmbedUrl_statePersistenceEnabled,
+    getDashboardEmbedUrl_undoRedoDisabled,
+    getDashboardEmbedUrl_userArn,
+    getDashboardEmbedUrl_awsAccountId,
+    getDashboardEmbedUrl_dashboardId,
+    getDashboardEmbedUrl_identityType,
+
+    -- * Destructuring the Response
+    GetDashboardEmbedUrlResponse (..),
+    newGetDashboardEmbedUrlResponse,
+
+    -- * Response Lenses
+    getDashboardEmbedUrlResponse_embedUrl,
+    getDashboardEmbedUrlResponse_requestId,
+    getDashboardEmbedUrlResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetDashboardEmbedUrl' smart constructor.
+data GetDashboardEmbedUrl = GetDashboardEmbedUrl'
+  { -- | A list of one or more dashboard IDs that you want anonymous users to
+    -- have tempporary access to. Currently, the @IdentityType@ parameter must
+    -- be set to @ANONYMOUS@ because other identity types authenticate as
+    -- Amazon QuickSight or IAM users. For example, if you set
+    -- \"@--dashboard-id dash_id1 --dashboard-id dash_id2 dash_id3 identity-type ANONYMOUS@\",
+    -- the session can access all three dashboards.
+    additionalDashboardIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The Amazon QuickSight namespace that contains the dashboard IDs in this
+    -- request. If you\'re not using a custom namespace, set
+    -- @Namespace = default@.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | Remove the reset button on the embedded dashboard. The default is FALSE,
+    -- which enables the reset button.
+    resetDisabled :: Prelude.Maybe Prelude.Bool,
+    -- | How many minutes the session is valid. The session lifetime must be
+    -- 15-600 minutes.
+    sessionLifetimeInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | Adds persistence of state for the user session in an embedded dashboard.
+    -- Persistence applies to the sheet and the parameter settings. These are
+    -- control settings that the dashboard subscriber (Amazon QuickSight
+    -- reader) chooses while viewing the dashboard. If this is set to @TRUE@,
+    -- the settings are the same when the subscriber reopens the same dashboard
+    -- URL. The state is stored in Amazon QuickSight, not in a browser cookie.
+    -- If this is set to FALSE, the state of the user session is not persisted.
+    -- The default is @FALSE@.
+    statePersistenceEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Remove the undo\/redo button on the embedded dashboard. The default is
+    -- FALSE, which enables the undo\/redo button.
+    undoRedoDisabled :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon QuickSight user\'s Amazon Resource Name (ARN), for use with
+    -- @QUICKSIGHT@ identity type. You can use this for any Amazon QuickSight
+    -- users in your account (readers, authors, or admins) authenticated as one
+    -- of the following:
+    --
+    -- -   Active Directory (AD) users or group members
+    --
+    -- -   Invited nonfederated users
+    --
+    -- -   IAM users and IAM role-based sessions authenticated through
+    --     Federated Single Sign-On using SAML, OpenID Connect, or IAM
+    --     federation.
+    --
+    -- Omit this parameter for users in the third group – IAM users and IAM
+    -- role-based sessions.
+    userArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that contains the dashboard
+    -- that you\'re embedding.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard, also added to the Identity and Access
+    -- Management (IAM) policy.
+    dashboardId :: Prelude.Text,
+    -- | The authentication method that the user uses to sign in.
+    identityType :: EmbeddingIdentityType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDashboardEmbedUrl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'additionalDashboardIds', 'getDashboardEmbedUrl_additionalDashboardIds' - A list of one or more dashboard IDs that you want anonymous users to
+-- have tempporary access to. Currently, the @IdentityType@ parameter must
+-- be set to @ANONYMOUS@ because other identity types authenticate as
+-- Amazon QuickSight or IAM users. For example, if you set
+-- \"@--dashboard-id dash_id1 --dashboard-id dash_id2 dash_id3 identity-type ANONYMOUS@\",
+-- the session can access all three dashboards.
+--
+-- 'namespace', 'getDashboardEmbedUrl_namespace' - The Amazon QuickSight namespace that contains the dashboard IDs in this
+-- request. If you\'re not using a custom namespace, set
+-- @Namespace = default@.
+--
+-- 'resetDisabled', 'getDashboardEmbedUrl_resetDisabled' - Remove the reset button on the embedded dashboard. The default is FALSE,
+-- which enables the reset button.
+--
+-- 'sessionLifetimeInMinutes', 'getDashboardEmbedUrl_sessionLifetimeInMinutes' - How many minutes the session is valid. The session lifetime must be
+-- 15-600 minutes.
+--
+-- 'statePersistenceEnabled', 'getDashboardEmbedUrl_statePersistenceEnabled' - Adds persistence of state for the user session in an embedded dashboard.
+-- Persistence applies to the sheet and the parameter settings. These are
+-- control settings that the dashboard subscriber (Amazon QuickSight
+-- reader) chooses while viewing the dashboard. If this is set to @TRUE@,
+-- the settings are the same when the subscriber reopens the same dashboard
+-- URL. The state is stored in Amazon QuickSight, not in a browser cookie.
+-- If this is set to FALSE, the state of the user session is not persisted.
+-- The default is @FALSE@.
+--
+-- 'undoRedoDisabled', 'getDashboardEmbedUrl_undoRedoDisabled' - Remove the undo\/redo button on the embedded dashboard. The default is
+-- FALSE, which enables the undo\/redo button.
+--
+-- 'userArn', 'getDashboardEmbedUrl_userArn' - The Amazon QuickSight user\'s Amazon Resource Name (ARN), for use with
+-- @QUICKSIGHT@ identity type. You can use this for any Amazon QuickSight
+-- users in your account (readers, authors, or admins) authenticated as one
+-- of the following:
+--
+-- -   Active Directory (AD) users or group members
+--
+-- -   Invited nonfederated users
+--
+-- -   IAM users and IAM role-based sessions authenticated through
+--     Federated Single Sign-On using SAML, OpenID Connect, or IAM
+--     federation.
+--
+-- Omit this parameter for users in the third group – IAM users and IAM
+-- role-based sessions.
+--
+-- 'awsAccountId', 'getDashboardEmbedUrl_awsAccountId' - The ID for the Amazon Web Services account that contains the dashboard
+-- that you\'re embedding.
+--
+-- 'dashboardId', 'getDashboardEmbedUrl_dashboardId' - The ID for the dashboard, also added to the Identity and Access
+-- Management (IAM) policy.
+--
+-- 'identityType', 'getDashboardEmbedUrl_identityType' - The authentication method that the user uses to sign in.
+newGetDashboardEmbedUrl ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  -- | 'identityType'
+  EmbeddingIdentityType ->
+  GetDashboardEmbedUrl
+newGetDashboardEmbedUrl
+  pAwsAccountId_
+  pDashboardId_
+  pIdentityType_ =
+    GetDashboardEmbedUrl'
+      { additionalDashboardIds =
+          Prelude.Nothing,
+        namespace = Prelude.Nothing,
+        resetDisabled = Prelude.Nothing,
+        sessionLifetimeInMinutes = Prelude.Nothing,
+        statePersistenceEnabled = Prelude.Nothing,
+        undoRedoDisabled = Prelude.Nothing,
+        userArn = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dashboardId = pDashboardId_,
+        identityType = pIdentityType_
+      }
+
+-- | A list of one or more dashboard IDs that you want anonymous users to
+-- have tempporary access to. Currently, the @IdentityType@ parameter must
+-- be set to @ANONYMOUS@ because other identity types authenticate as
+-- Amazon QuickSight or IAM users. For example, if you set
+-- \"@--dashboard-id dash_id1 --dashboard-id dash_id2 dash_id3 identity-type ANONYMOUS@\",
+-- the session can access all three dashboards.
+getDashboardEmbedUrl_additionalDashboardIds :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+getDashboardEmbedUrl_additionalDashboardIds = Lens.lens (\GetDashboardEmbedUrl' {additionalDashboardIds} -> additionalDashboardIds) (\s@GetDashboardEmbedUrl' {} a -> s {additionalDashboardIds = a} :: GetDashboardEmbedUrl) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon QuickSight namespace that contains the dashboard IDs in this
+-- request. If you\'re not using a custom namespace, set
+-- @Namespace = default@.
+getDashboardEmbedUrl_namespace :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe Prelude.Text)
+getDashboardEmbedUrl_namespace = Lens.lens (\GetDashboardEmbedUrl' {namespace} -> namespace) (\s@GetDashboardEmbedUrl' {} a -> s {namespace = a} :: GetDashboardEmbedUrl)
+
+-- | Remove the reset button on the embedded dashboard. The default is FALSE,
+-- which enables the reset button.
+getDashboardEmbedUrl_resetDisabled :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe Prelude.Bool)
+getDashboardEmbedUrl_resetDisabled = Lens.lens (\GetDashboardEmbedUrl' {resetDisabled} -> resetDisabled) (\s@GetDashboardEmbedUrl' {} a -> s {resetDisabled = a} :: GetDashboardEmbedUrl)
+
+-- | How many minutes the session is valid. The session lifetime must be
+-- 15-600 minutes.
+getDashboardEmbedUrl_sessionLifetimeInMinutes :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe Prelude.Natural)
+getDashboardEmbedUrl_sessionLifetimeInMinutes = Lens.lens (\GetDashboardEmbedUrl' {sessionLifetimeInMinutes} -> sessionLifetimeInMinutes) (\s@GetDashboardEmbedUrl' {} a -> s {sessionLifetimeInMinutes = a} :: GetDashboardEmbedUrl)
+
+-- | Adds persistence of state for the user session in an embedded dashboard.
+-- Persistence applies to the sheet and the parameter settings. These are
+-- control settings that the dashboard subscriber (Amazon QuickSight
+-- reader) chooses while viewing the dashboard. If this is set to @TRUE@,
+-- the settings are the same when the subscriber reopens the same dashboard
+-- URL. The state is stored in Amazon QuickSight, not in a browser cookie.
+-- If this is set to FALSE, the state of the user session is not persisted.
+-- The default is @FALSE@.
+getDashboardEmbedUrl_statePersistenceEnabled :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe Prelude.Bool)
+getDashboardEmbedUrl_statePersistenceEnabled = Lens.lens (\GetDashboardEmbedUrl' {statePersistenceEnabled} -> statePersistenceEnabled) (\s@GetDashboardEmbedUrl' {} a -> s {statePersistenceEnabled = a} :: GetDashboardEmbedUrl)
+
+-- | Remove the undo\/redo button on the embedded dashboard. The default is
+-- FALSE, which enables the undo\/redo button.
+getDashboardEmbedUrl_undoRedoDisabled :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe Prelude.Bool)
+getDashboardEmbedUrl_undoRedoDisabled = Lens.lens (\GetDashboardEmbedUrl' {undoRedoDisabled} -> undoRedoDisabled) (\s@GetDashboardEmbedUrl' {} a -> s {undoRedoDisabled = a} :: GetDashboardEmbedUrl)
+
+-- | The Amazon QuickSight user\'s Amazon Resource Name (ARN), for use with
+-- @QUICKSIGHT@ identity type. You can use this for any Amazon QuickSight
+-- users in your account (readers, authors, or admins) authenticated as one
+-- of the following:
+--
+-- -   Active Directory (AD) users or group members
+--
+-- -   Invited nonfederated users
+--
+-- -   IAM users and IAM role-based sessions authenticated through
+--     Federated Single Sign-On using SAML, OpenID Connect, or IAM
+--     federation.
+--
+-- Omit this parameter for users in the third group – IAM users and IAM
+-- role-based sessions.
+getDashboardEmbedUrl_userArn :: Lens.Lens' GetDashboardEmbedUrl (Prelude.Maybe Prelude.Text)
+getDashboardEmbedUrl_userArn = Lens.lens (\GetDashboardEmbedUrl' {userArn} -> userArn) (\s@GetDashboardEmbedUrl' {} a -> s {userArn = a} :: GetDashboardEmbedUrl)
+
+-- | The ID for the Amazon Web Services account that contains the dashboard
+-- that you\'re embedding.
+getDashboardEmbedUrl_awsAccountId :: Lens.Lens' GetDashboardEmbedUrl Prelude.Text
+getDashboardEmbedUrl_awsAccountId = Lens.lens (\GetDashboardEmbedUrl' {awsAccountId} -> awsAccountId) (\s@GetDashboardEmbedUrl' {} a -> s {awsAccountId = a} :: GetDashboardEmbedUrl)
+
+-- | The ID for the dashboard, also added to the Identity and Access
+-- Management (IAM) policy.
+getDashboardEmbedUrl_dashboardId :: Lens.Lens' GetDashboardEmbedUrl Prelude.Text
+getDashboardEmbedUrl_dashboardId = Lens.lens (\GetDashboardEmbedUrl' {dashboardId} -> dashboardId) (\s@GetDashboardEmbedUrl' {} a -> s {dashboardId = a} :: GetDashboardEmbedUrl)
+
+-- | The authentication method that the user uses to sign in.
+getDashboardEmbedUrl_identityType :: Lens.Lens' GetDashboardEmbedUrl EmbeddingIdentityType
+getDashboardEmbedUrl_identityType = Lens.lens (\GetDashboardEmbedUrl' {identityType} -> identityType) (\s@GetDashboardEmbedUrl' {} a -> s {identityType = a} :: GetDashboardEmbedUrl)
+
+instance Core.AWSRequest GetDashboardEmbedUrl where
+  type
+    AWSResponse GetDashboardEmbedUrl =
+      GetDashboardEmbedUrlResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDashboardEmbedUrlResponse'
+            Prelude.<$> (x Data..?> "EmbedUrl")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDashboardEmbedUrl where
+  hashWithSalt _salt GetDashboardEmbedUrl' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalDashboardIds
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` resetDisabled
+      `Prelude.hashWithSalt` sessionLifetimeInMinutes
+      `Prelude.hashWithSalt` statePersistenceEnabled
+      `Prelude.hashWithSalt` undoRedoDisabled
+      `Prelude.hashWithSalt` userArn
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+      `Prelude.hashWithSalt` identityType
+
+instance Prelude.NFData GetDashboardEmbedUrl where
+  rnf GetDashboardEmbedUrl' {..} =
+    Prelude.rnf additionalDashboardIds
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf resetDisabled
+      `Prelude.seq` Prelude.rnf sessionLifetimeInMinutes
+      `Prelude.seq` Prelude.rnf statePersistenceEnabled
+      `Prelude.seq` Prelude.rnf undoRedoDisabled
+      `Prelude.seq` Prelude.rnf userArn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf identityType
+
+instance Data.ToHeaders GetDashboardEmbedUrl where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetDashboardEmbedUrl where
+  toPath GetDashboardEmbedUrl' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId,
+        "/embed-url"
+      ]
+
+instance Data.ToQuery GetDashboardEmbedUrl where
+  toQuery GetDashboardEmbedUrl' {..} =
+    Prelude.mconcat
+      [ "additional-dashboard-ids"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> additionalDashboardIds
+            ),
+        "namespace" Data.=: namespace,
+        "reset-disabled" Data.=: resetDisabled,
+        "session-lifetime" Data.=: sessionLifetimeInMinutes,
+        "state-persistence-enabled"
+          Data.=: statePersistenceEnabled,
+        "undo-redo-disabled" Data.=: undoRedoDisabled,
+        "user-arn" Data.=: userArn,
+        "creds-type" Data.=: identityType
+      ]
+
+-- | Output returned from the @GetDashboardEmbedUrl@ operation.
+--
+-- /See:/ 'newGetDashboardEmbedUrlResponse' smart constructor.
+data GetDashboardEmbedUrlResponse = GetDashboardEmbedUrlResponse'
+  { -- | A single-use URL that you can put into your server-side webpage to embed
+    -- your dashboard. This URL is valid for 5 minutes. The API operation
+    -- provides the URL with an @auth_code@ value that enables one (and only
+    -- one) sign-on to a user session that is valid for 10 hours.
+    embedUrl :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDashboardEmbedUrlResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'embedUrl', 'getDashboardEmbedUrlResponse_embedUrl' - A single-use URL that you can put into your server-side webpage to embed
+-- your dashboard. This URL is valid for 5 minutes. The API operation
+-- provides the URL with an @auth_code@ value that enables one (and only
+-- one) sign-on to a user session that is valid for 10 hours.
+--
+-- 'requestId', 'getDashboardEmbedUrlResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'getDashboardEmbedUrlResponse_status' - The HTTP status of the request.
+newGetDashboardEmbedUrlResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  GetDashboardEmbedUrlResponse
+newGetDashboardEmbedUrlResponse pStatus_ =
+  GetDashboardEmbedUrlResponse'
+    { embedUrl =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A single-use URL that you can put into your server-side webpage to embed
+-- your dashboard. This URL is valid for 5 minutes. The API operation
+-- provides the URL with an @auth_code@ value that enables one (and only
+-- one) sign-on to a user session that is valid for 10 hours.
+getDashboardEmbedUrlResponse_embedUrl :: Lens.Lens' GetDashboardEmbedUrlResponse (Prelude.Maybe Prelude.Text)
+getDashboardEmbedUrlResponse_embedUrl = Lens.lens (\GetDashboardEmbedUrlResponse' {embedUrl} -> embedUrl) (\s@GetDashboardEmbedUrlResponse' {} a -> s {embedUrl = a} :: GetDashboardEmbedUrlResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Web Services request ID for this operation.
+getDashboardEmbedUrlResponse_requestId :: Lens.Lens' GetDashboardEmbedUrlResponse (Prelude.Maybe Prelude.Text)
+getDashboardEmbedUrlResponse_requestId = Lens.lens (\GetDashboardEmbedUrlResponse' {requestId} -> requestId) (\s@GetDashboardEmbedUrlResponse' {} a -> s {requestId = a} :: GetDashboardEmbedUrlResponse)
+
+-- | The HTTP status of the request.
+getDashboardEmbedUrlResponse_status :: Lens.Lens' GetDashboardEmbedUrlResponse Prelude.Int
+getDashboardEmbedUrlResponse_status = Lens.lens (\GetDashboardEmbedUrlResponse' {status} -> status) (\s@GetDashboardEmbedUrlResponse' {} a -> s {status = a} :: GetDashboardEmbedUrlResponse)
+
+instance Prelude.NFData GetDashboardEmbedUrlResponse where
+  rnf GetDashboardEmbedUrlResponse' {..} =
+    Prelude.rnf embedUrl
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/GetSessionEmbedUrl.hs b/gen/Amazonka/QuickSight/GetSessionEmbedUrl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/GetSessionEmbedUrl.hs
@@ -0,0 +1,344 @@
+{-# 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.QuickSight.GetSessionEmbedUrl
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates a session URL and authorization code that you can use to embed
+-- the Amazon Amazon QuickSight console in your web server code. Use
+-- @GetSessionEmbedUrl@ where you want to provide an authoring portal that
+-- allows users to create data sources, datasets, analyses, and dashboards.
+-- The users who access an embedded Amazon QuickSight console need belong
+-- to the author or admin security cohort. If you want to restrict
+-- permissions to some of these features, add a custom permissions profile
+-- to the user with the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+-- API operation. Use
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html RegisterUser>@ @
+-- API operation to add a new user with a custom permission profile
+-- attached. For more information, see the following sections in the
+-- /Amazon QuickSight User Guide/:
+--
+-- -   <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html Embedding Analytics>
+--
+-- -   <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+module Amazonka.QuickSight.GetSessionEmbedUrl
+  ( -- * Creating a Request
+    GetSessionEmbedUrl (..),
+    newGetSessionEmbedUrl,
+
+    -- * Request Lenses
+    getSessionEmbedUrl_entryPoint,
+    getSessionEmbedUrl_sessionLifetimeInMinutes,
+    getSessionEmbedUrl_userArn,
+    getSessionEmbedUrl_awsAccountId,
+
+    -- * Destructuring the Response
+    GetSessionEmbedUrlResponse (..),
+    newGetSessionEmbedUrlResponse,
+
+    -- * Response Lenses
+    getSessionEmbedUrlResponse_embedUrl,
+    getSessionEmbedUrlResponse_requestId,
+    getSessionEmbedUrlResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSessionEmbedUrl' smart constructor.
+data GetSessionEmbedUrl = GetSessionEmbedUrl'
+  { -- | The URL you use to access the embedded session. The entry point URL is
+    -- constrained to the following paths:
+    --
+    -- -   @\/start@
+    --
+    -- -   @\/start\/analyses@
+    --
+    -- -   @\/start\/dashboards@
+    --
+    -- -   @\/start\/favorites@
+    --
+    -- -   @\/dashboards\/@/@DashboardId@/@ @ - where @DashboardId@ is the
+    --     actual ID key from the Amazon QuickSight console URL of the
+    --     dashboard
+    --
+    -- -   @\/analyses\/@/@AnalysisId@/@ @ - where @AnalysisId@ is the actual
+    --     ID key from the Amazon QuickSight console URL of the analysis
+    entryPoint :: Prelude.Maybe Prelude.Text,
+    -- | How many minutes the session is valid. The session lifetime must be
+    -- 15-600 minutes.
+    sessionLifetimeInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon QuickSight user\'s Amazon Resource Name (ARN), for use with
+    -- @QUICKSIGHT@ identity type. You can use this for any type of Amazon
+    -- QuickSight users in your account (readers, authors, or admins). They
+    -- need to be authenticated as one of the following:
+    --
+    -- 1.  Active Directory (AD) users or group members
+    --
+    -- 2.  Invited nonfederated users
+    --
+    -- 3.  Identity and Access Management (IAM) users and IAM role-based
+    --     sessions authenticated through Federated Single Sign-On using SAML,
+    --     OpenID Connect, or IAM federation
+    --
+    -- Omit this parameter for users in the third group, IAM users and IAM
+    -- role-based sessions.
+    userArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account associated with your Amazon
+    -- QuickSight subscription.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSessionEmbedUrl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'entryPoint', 'getSessionEmbedUrl_entryPoint' - The URL you use to access the embedded session. The entry point URL is
+-- constrained to the following paths:
+--
+-- -   @\/start@
+--
+-- -   @\/start\/analyses@
+--
+-- -   @\/start\/dashboards@
+--
+-- -   @\/start\/favorites@
+--
+-- -   @\/dashboards\/@/@DashboardId@/@ @ - where @DashboardId@ is the
+--     actual ID key from the Amazon QuickSight console URL of the
+--     dashboard
+--
+-- -   @\/analyses\/@/@AnalysisId@/@ @ - where @AnalysisId@ is the actual
+--     ID key from the Amazon QuickSight console URL of the analysis
+--
+-- 'sessionLifetimeInMinutes', 'getSessionEmbedUrl_sessionLifetimeInMinutes' - How many minutes the session is valid. The session lifetime must be
+-- 15-600 minutes.
+--
+-- 'userArn', 'getSessionEmbedUrl_userArn' - The Amazon QuickSight user\'s Amazon Resource Name (ARN), for use with
+-- @QUICKSIGHT@ identity type. You can use this for any type of Amazon
+-- QuickSight users in your account (readers, authors, or admins). They
+-- need to be authenticated as one of the following:
+--
+-- 1.  Active Directory (AD) users or group members
+--
+-- 2.  Invited nonfederated users
+--
+-- 3.  Identity and Access Management (IAM) users and IAM role-based
+--     sessions authenticated through Federated Single Sign-On using SAML,
+--     OpenID Connect, or IAM federation
+--
+-- Omit this parameter for users in the third group, IAM users and IAM
+-- role-based sessions.
+--
+-- 'awsAccountId', 'getSessionEmbedUrl_awsAccountId' - The ID for the Amazon Web Services account associated with your Amazon
+-- QuickSight subscription.
+newGetSessionEmbedUrl ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  GetSessionEmbedUrl
+newGetSessionEmbedUrl pAwsAccountId_ =
+  GetSessionEmbedUrl'
+    { entryPoint = Prelude.Nothing,
+      sessionLifetimeInMinutes = Prelude.Nothing,
+      userArn = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The URL you use to access the embedded session. The entry point URL is
+-- constrained to the following paths:
+--
+-- -   @\/start@
+--
+-- -   @\/start\/analyses@
+--
+-- -   @\/start\/dashboards@
+--
+-- -   @\/start\/favorites@
+--
+-- -   @\/dashboards\/@/@DashboardId@/@ @ - where @DashboardId@ is the
+--     actual ID key from the Amazon QuickSight console URL of the
+--     dashboard
+--
+-- -   @\/analyses\/@/@AnalysisId@/@ @ - where @AnalysisId@ is the actual
+--     ID key from the Amazon QuickSight console URL of the analysis
+getSessionEmbedUrl_entryPoint :: Lens.Lens' GetSessionEmbedUrl (Prelude.Maybe Prelude.Text)
+getSessionEmbedUrl_entryPoint = Lens.lens (\GetSessionEmbedUrl' {entryPoint} -> entryPoint) (\s@GetSessionEmbedUrl' {} a -> s {entryPoint = a} :: GetSessionEmbedUrl)
+
+-- | How many minutes the session is valid. The session lifetime must be
+-- 15-600 minutes.
+getSessionEmbedUrl_sessionLifetimeInMinutes :: Lens.Lens' GetSessionEmbedUrl (Prelude.Maybe Prelude.Natural)
+getSessionEmbedUrl_sessionLifetimeInMinutes = Lens.lens (\GetSessionEmbedUrl' {sessionLifetimeInMinutes} -> sessionLifetimeInMinutes) (\s@GetSessionEmbedUrl' {} a -> s {sessionLifetimeInMinutes = a} :: GetSessionEmbedUrl)
+
+-- | The Amazon QuickSight user\'s Amazon Resource Name (ARN), for use with
+-- @QUICKSIGHT@ identity type. You can use this for any type of Amazon
+-- QuickSight users in your account (readers, authors, or admins). They
+-- need to be authenticated as one of the following:
+--
+-- 1.  Active Directory (AD) users or group members
+--
+-- 2.  Invited nonfederated users
+--
+-- 3.  Identity and Access Management (IAM) users and IAM role-based
+--     sessions authenticated through Federated Single Sign-On using SAML,
+--     OpenID Connect, or IAM federation
+--
+-- Omit this parameter for users in the third group, IAM users and IAM
+-- role-based sessions.
+getSessionEmbedUrl_userArn :: Lens.Lens' GetSessionEmbedUrl (Prelude.Maybe Prelude.Text)
+getSessionEmbedUrl_userArn = Lens.lens (\GetSessionEmbedUrl' {userArn} -> userArn) (\s@GetSessionEmbedUrl' {} a -> s {userArn = a} :: GetSessionEmbedUrl)
+
+-- | The ID for the Amazon Web Services account associated with your Amazon
+-- QuickSight subscription.
+getSessionEmbedUrl_awsAccountId :: Lens.Lens' GetSessionEmbedUrl Prelude.Text
+getSessionEmbedUrl_awsAccountId = Lens.lens (\GetSessionEmbedUrl' {awsAccountId} -> awsAccountId) (\s@GetSessionEmbedUrl' {} a -> s {awsAccountId = a} :: GetSessionEmbedUrl)
+
+instance Core.AWSRequest GetSessionEmbedUrl where
+  type
+    AWSResponse GetSessionEmbedUrl =
+      GetSessionEmbedUrlResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSessionEmbedUrlResponse'
+            Prelude.<$> (x Data..?> "EmbedUrl")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSessionEmbedUrl where
+  hashWithSalt _salt GetSessionEmbedUrl' {..} =
+    _salt
+      `Prelude.hashWithSalt` entryPoint
+      `Prelude.hashWithSalt` sessionLifetimeInMinutes
+      `Prelude.hashWithSalt` userArn
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData GetSessionEmbedUrl where
+  rnf GetSessionEmbedUrl' {..} =
+    Prelude.rnf entryPoint
+      `Prelude.seq` Prelude.rnf sessionLifetimeInMinutes
+      `Prelude.seq` Prelude.rnf userArn
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders GetSessionEmbedUrl where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetSessionEmbedUrl where
+  toPath GetSessionEmbedUrl' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/session-embed-url"
+      ]
+
+instance Data.ToQuery GetSessionEmbedUrl where
+  toQuery GetSessionEmbedUrl' {..} =
+    Prelude.mconcat
+      [ "entry-point" Data.=: entryPoint,
+        "session-lifetime" Data.=: sessionLifetimeInMinutes,
+        "user-arn" Data.=: userArn
+      ]
+
+-- | /See:/ 'newGetSessionEmbedUrlResponse' smart constructor.
+data GetSessionEmbedUrlResponse = GetSessionEmbedUrlResponse'
+  { -- | A single-use URL that you can put into your server-side web page to
+    -- embed your Amazon QuickSight session. This URL is valid for 5 minutes.
+    -- The API operation provides the URL with an @auth_code@ value that
+    -- enables one (and only one) sign-on to a user session that is valid for
+    -- 10 hours.
+    embedUrl :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSessionEmbedUrlResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'embedUrl', 'getSessionEmbedUrlResponse_embedUrl' - A single-use URL that you can put into your server-side web page to
+-- embed your Amazon QuickSight session. This URL is valid for 5 minutes.
+-- The API operation provides the URL with an @auth_code@ value that
+-- enables one (and only one) sign-on to a user session that is valid for
+-- 10 hours.
+--
+-- 'requestId', 'getSessionEmbedUrlResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'getSessionEmbedUrlResponse_status' - The HTTP status of the request.
+newGetSessionEmbedUrlResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  GetSessionEmbedUrlResponse
+newGetSessionEmbedUrlResponse pStatus_ =
+  GetSessionEmbedUrlResponse'
+    { embedUrl =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A single-use URL that you can put into your server-side web page to
+-- embed your Amazon QuickSight session. This URL is valid for 5 minutes.
+-- The API operation provides the URL with an @auth_code@ value that
+-- enables one (and only one) sign-on to a user session that is valid for
+-- 10 hours.
+getSessionEmbedUrlResponse_embedUrl :: Lens.Lens' GetSessionEmbedUrlResponse (Prelude.Maybe Prelude.Text)
+getSessionEmbedUrlResponse_embedUrl = Lens.lens (\GetSessionEmbedUrlResponse' {embedUrl} -> embedUrl) (\s@GetSessionEmbedUrlResponse' {} a -> s {embedUrl = a} :: GetSessionEmbedUrlResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Web Services request ID for this operation.
+getSessionEmbedUrlResponse_requestId :: Lens.Lens' GetSessionEmbedUrlResponse (Prelude.Maybe Prelude.Text)
+getSessionEmbedUrlResponse_requestId = Lens.lens (\GetSessionEmbedUrlResponse' {requestId} -> requestId) (\s@GetSessionEmbedUrlResponse' {} a -> s {requestId = a} :: GetSessionEmbedUrlResponse)
+
+-- | The HTTP status of the request.
+getSessionEmbedUrlResponse_status :: Lens.Lens' GetSessionEmbedUrlResponse Prelude.Int
+getSessionEmbedUrlResponse_status = Lens.lens (\GetSessionEmbedUrlResponse' {status} -> status) (\s@GetSessionEmbedUrlResponse' {} a -> s {status = a} :: GetSessionEmbedUrlResponse)
+
+instance Prelude.NFData GetSessionEmbedUrlResponse where
+  rnf GetSessionEmbedUrlResponse' {..} =
+    Prelude.rnf embedUrl
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/Lens.hs b/gen/Amazonka/QuickSight/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Lens.hs
@@ -0,0 +1,5169 @@
+{-# 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.QuickSight.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.QuickSight.Lens
+  ( -- * Operations
+
+    -- ** CancelIngestion
+    cancelIngestion_awsAccountId,
+    cancelIngestion_dataSetId,
+    cancelIngestion_ingestionId,
+    cancelIngestionResponse_arn,
+    cancelIngestionResponse_ingestionId,
+    cancelIngestionResponse_requestId,
+    cancelIngestionResponse_status,
+
+    -- ** CreateAccountCustomization
+    createAccountCustomization_namespace,
+    createAccountCustomization_tags,
+    createAccountCustomization_awsAccountId,
+    createAccountCustomization_accountCustomization,
+    createAccountCustomizationResponse_accountCustomization,
+    createAccountCustomizationResponse_arn,
+    createAccountCustomizationResponse_awsAccountId,
+    createAccountCustomizationResponse_namespace,
+    createAccountCustomizationResponse_requestId,
+    createAccountCustomizationResponse_status,
+
+    -- ** CreateAccountSubscription
+    createAccountSubscription_activeDirectoryName,
+    createAccountSubscription_adminGroup,
+    createAccountSubscription_authorGroup,
+    createAccountSubscription_contactNumber,
+    createAccountSubscription_directoryId,
+    createAccountSubscription_emailAddress,
+    createAccountSubscription_firstName,
+    createAccountSubscription_lastName,
+    createAccountSubscription_readerGroup,
+    createAccountSubscription_realm,
+    createAccountSubscription_edition,
+    createAccountSubscription_authenticationMethod,
+    createAccountSubscription_awsAccountId,
+    createAccountSubscription_accountName,
+    createAccountSubscription_notificationEmail,
+    createAccountSubscriptionResponse_requestId,
+    createAccountSubscriptionResponse_signupResponse,
+    createAccountSubscriptionResponse_status,
+
+    -- ** CreateAnalysis
+    createAnalysis_definition,
+    createAnalysis_parameters,
+    createAnalysis_permissions,
+    createAnalysis_sourceEntity,
+    createAnalysis_tags,
+    createAnalysis_themeArn,
+    createAnalysis_awsAccountId,
+    createAnalysis_analysisId,
+    createAnalysis_name,
+    createAnalysisResponse_analysisId,
+    createAnalysisResponse_arn,
+    createAnalysisResponse_creationStatus,
+    createAnalysisResponse_requestId,
+    createAnalysisResponse_status,
+
+    -- ** CreateDashboard
+    createDashboard_dashboardPublishOptions,
+    createDashboard_definition,
+    createDashboard_parameters,
+    createDashboard_permissions,
+    createDashboard_sourceEntity,
+    createDashboard_tags,
+    createDashboard_themeArn,
+    createDashboard_versionDescription,
+    createDashboard_awsAccountId,
+    createDashboard_dashboardId,
+    createDashboard_name,
+    createDashboardResponse_arn,
+    createDashboardResponse_creationStatus,
+    createDashboardResponse_dashboardId,
+    createDashboardResponse_requestId,
+    createDashboardResponse_versionArn,
+    createDashboardResponse_status,
+
+    -- ** CreateDataSet
+    createDataSet_columnGroups,
+    createDataSet_columnLevelPermissionRules,
+    createDataSet_dataSetUsageConfiguration,
+    createDataSet_fieldFolders,
+    createDataSet_logicalTableMap,
+    createDataSet_permissions,
+    createDataSet_rowLevelPermissionDataSet,
+    createDataSet_rowLevelPermissionTagConfiguration,
+    createDataSet_tags,
+    createDataSet_awsAccountId,
+    createDataSet_dataSetId,
+    createDataSet_name,
+    createDataSet_physicalTableMap,
+    createDataSet_importMode,
+    createDataSetResponse_arn,
+    createDataSetResponse_dataSetId,
+    createDataSetResponse_ingestionArn,
+    createDataSetResponse_ingestionId,
+    createDataSetResponse_requestId,
+    createDataSetResponse_status,
+
+    -- ** CreateDataSource
+    createDataSource_credentials,
+    createDataSource_dataSourceParameters,
+    createDataSource_permissions,
+    createDataSource_sslProperties,
+    createDataSource_tags,
+    createDataSource_vpcConnectionProperties,
+    createDataSource_awsAccountId,
+    createDataSource_dataSourceId,
+    createDataSource_name,
+    createDataSource_type,
+    createDataSourceResponse_arn,
+    createDataSourceResponse_creationStatus,
+    createDataSourceResponse_dataSourceId,
+    createDataSourceResponse_requestId,
+    createDataSourceResponse_status,
+
+    -- ** CreateFolder
+    createFolder_folderType,
+    createFolder_name,
+    createFolder_parentFolderArn,
+    createFolder_permissions,
+    createFolder_tags,
+    createFolder_awsAccountId,
+    createFolder_folderId,
+    createFolderResponse_arn,
+    createFolderResponse_folderId,
+    createFolderResponse_requestId,
+    createFolderResponse_status,
+
+    -- ** CreateFolderMembership
+    createFolderMembership_awsAccountId,
+    createFolderMembership_folderId,
+    createFolderMembership_memberId,
+    createFolderMembership_memberType,
+    createFolderMembershipResponse_folderMember,
+    createFolderMembershipResponse_requestId,
+    createFolderMembershipResponse_status,
+    createFolderMembershipResponse_httpStatus,
+
+    -- ** CreateGroup
+    createGroup_description,
+    createGroup_groupName,
+    createGroup_awsAccountId,
+    createGroup_namespace,
+    createGroupResponse_group,
+    createGroupResponse_requestId,
+    createGroupResponse_status,
+
+    -- ** CreateGroupMembership
+    createGroupMembership_memberName,
+    createGroupMembership_groupName,
+    createGroupMembership_awsAccountId,
+    createGroupMembership_namespace,
+    createGroupMembershipResponse_groupMember,
+    createGroupMembershipResponse_requestId,
+    createGroupMembershipResponse_status,
+
+    -- ** CreateIAMPolicyAssignment
+    createIAMPolicyAssignment_identities,
+    createIAMPolicyAssignment_policyArn,
+    createIAMPolicyAssignment_awsAccountId,
+    createIAMPolicyAssignment_assignmentName,
+    createIAMPolicyAssignment_assignmentStatus,
+    createIAMPolicyAssignment_namespace,
+    createIAMPolicyAssignmentResponse_assignmentId,
+    createIAMPolicyAssignmentResponse_assignmentName,
+    createIAMPolicyAssignmentResponse_assignmentStatus,
+    createIAMPolicyAssignmentResponse_identities,
+    createIAMPolicyAssignmentResponse_policyArn,
+    createIAMPolicyAssignmentResponse_requestId,
+    createIAMPolicyAssignmentResponse_status,
+
+    -- ** CreateIngestion
+    createIngestion_ingestionType,
+    createIngestion_dataSetId,
+    createIngestion_ingestionId,
+    createIngestion_awsAccountId,
+    createIngestionResponse_arn,
+    createIngestionResponse_ingestionId,
+    createIngestionResponse_ingestionStatus,
+    createIngestionResponse_requestId,
+    createIngestionResponse_status,
+
+    -- ** CreateNamespace
+    createNamespace_tags,
+    createNamespace_awsAccountId,
+    createNamespace_namespace,
+    createNamespace_identityStore,
+    createNamespaceResponse_arn,
+    createNamespaceResponse_capacityRegion,
+    createNamespaceResponse_creationStatus,
+    createNamespaceResponse_identityStore,
+    createNamespaceResponse_name,
+    createNamespaceResponse_requestId,
+    createNamespaceResponse_status,
+
+    -- ** CreateTemplate
+    createTemplate_definition,
+    createTemplate_name,
+    createTemplate_permissions,
+    createTemplate_sourceEntity,
+    createTemplate_tags,
+    createTemplate_versionDescription,
+    createTemplate_awsAccountId,
+    createTemplate_templateId,
+    createTemplateResponse_arn,
+    createTemplateResponse_creationStatus,
+    createTemplateResponse_requestId,
+    createTemplateResponse_templateId,
+    createTemplateResponse_versionArn,
+    createTemplateResponse_status,
+
+    -- ** CreateTemplateAlias
+    createTemplateAlias_awsAccountId,
+    createTemplateAlias_templateId,
+    createTemplateAlias_aliasName,
+    createTemplateAlias_templateVersionNumber,
+    createTemplateAliasResponse_requestId,
+    createTemplateAliasResponse_templateAlias,
+    createTemplateAliasResponse_status,
+
+    -- ** CreateTheme
+    createTheme_permissions,
+    createTheme_tags,
+    createTheme_versionDescription,
+    createTheme_awsAccountId,
+    createTheme_themeId,
+    createTheme_name,
+    createTheme_baseThemeId,
+    createTheme_configuration,
+    createThemeResponse_arn,
+    createThemeResponse_creationStatus,
+    createThemeResponse_requestId,
+    createThemeResponse_themeId,
+    createThemeResponse_versionArn,
+    createThemeResponse_status,
+
+    -- ** CreateThemeAlias
+    createThemeAlias_awsAccountId,
+    createThemeAlias_themeId,
+    createThemeAlias_aliasName,
+    createThemeAlias_themeVersionNumber,
+    createThemeAliasResponse_requestId,
+    createThemeAliasResponse_themeAlias,
+    createThemeAliasResponse_status,
+
+    -- ** DeleteAccountCustomization
+    deleteAccountCustomization_namespace,
+    deleteAccountCustomization_awsAccountId,
+    deleteAccountCustomizationResponse_requestId,
+    deleteAccountCustomizationResponse_status,
+
+    -- ** DeleteAccountSubscription
+    deleteAccountSubscription_awsAccountId,
+    deleteAccountSubscriptionResponse_requestId,
+    deleteAccountSubscriptionResponse_status,
+
+    -- ** DeleteAnalysis
+    deleteAnalysis_forceDeleteWithoutRecovery,
+    deleteAnalysis_recoveryWindowInDays,
+    deleteAnalysis_awsAccountId,
+    deleteAnalysis_analysisId,
+    deleteAnalysisResponse_analysisId,
+    deleteAnalysisResponse_arn,
+    deleteAnalysisResponse_deletionTime,
+    deleteAnalysisResponse_requestId,
+    deleteAnalysisResponse_status,
+
+    -- ** DeleteDashboard
+    deleteDashboard_versionNumber,
+    deleteDashboard_awsAccountId,
+    deleteDashboard_dashboardId,
+    deleteDashboardResponse_arn,
+    deleteDashboardResponse_dashboardId,
+    deleteDashboardResponse_requestId,
+    deleteDashboardResponse_status,
+
+    -- ** DeleteDataSet
+    deleteDataSet_awsAccountId,
+    deleteDataSet_dataSetId,
+    deleteDataSetResponse_arn,
+    deleteDataSetResponse_dataSetId,
+    deleteDataSetResponse_requestId,
+    deleteDataSetResponse_status,
+
+    -- ** DeleteDataSource
+    deleteDataSource_awsAccountId,
+    deleteDataSource_dataSourceId,
+    deleteDataSourceResponse_arn,
+    deleteDataSourceResponse_dataSourceId,
+    deleteDataSourceResponse_requestId,
+    deleteDataSourceResponse_status,
+
+    -- ** DeleteFolder
+    deleteFolder_awsAccountId,
+    deleteFolder_folderId,
+    deleteFolderResponse_arn,
+    deleteFolderResponse_folderId,
+    deleteFolderResponse_requestId,
+    deleteFolderResponse_status,
+
+    -- ** DeleteFolderMembership
+    deleteFolderMembership_awsAccountId,
+    deleteFolderMembership_folderId,
+    deleteFolderMembership_memberId,
+    deleteFolderMembership_memberType,
+    deleteFolderMembershipResponse_requestId,
+    deleteFolderMembershipResponse_status,
+    deleteFolderMembershipResponse_httpStatus,
+
+    -- ** DeleteGroup
+    deleteGroup_groupName,
+    deleteGroup_awsAccountId,
+    deleteGroup_namespace,
+    deleteGroupResponse_requestId,
+    deleteGroupResponse_status,
+
+    -- ** DeleteGroupMembership
+    deleteGroupMembership_memberName,
+    deleteGroupMembership_groupName,
+    deleteGroupMembership_awsAccountId,
+    deleteGroupMembership_namespace,
+    deleteGroupMembershipResponse_requestId,
+    deleteGroupMembershipResponse_status,
+
+    -- ** DeleteIAMPolicyAssignment
+    deleteIAMPolicyAssignment_awsAccountId,
+    deleteIAMPolicyAssignment_assignmentName,
+    deleteIAMPolicyAssignment_namespace,
+    deleteIAMPolicyAssignmentResponse_assignmentName,
+    deleteIAMPolicyAssignmentResponse_requestId,
+    deleteIAMPolicyAssignmentResponse_status,
+
+    -- ** DeleteNamespace
+    deleteNamespace_awsAccountId,
+    deleteNamespace_namespace,
+    deleteNamespaceResponse_requestId,
+    deleteNamespaceResponse_status,
+
+    -- ** DeleteTemplate
+    deleteTemplate_versionNumber,
+    deleteTemplate_awsAccountId,
+    deleteTemplate_templateId,
+    deleteTemplateResponse_arn,
+    deleteTemplateResponse_requestId,
+    deleteTemplateResponse_templateId,
+    deleteTemplateResponse_status,
+
+    -- ** DeleteTemplateAlias
+    deleteTemplateAlias_awsAccountId,
+    deleteTemplateAlias_templateId,
+    deleteTemplateAlias_aliasName,
+    deleteTemplateAliasResponse_aliasName,
+    deleteTemplateAliasResponse_arn,
+    deleteTemplateAliasResponse_requestId,
+    deleteTemplateAliasResponse_templateId,
+    deleteTemplateAliasResponse_status,
+
+    -- ** DeleteTheme
+    deleteTheme_versionNumber,
+    deleteTheme_awsAccountId,
+    deleteTheme_themeId,
+    deleteThemeResponse_arn,
+    deleteThemeResponse_requestId,
+    deleteThemeResponse_themeId,
+    deleteThemeResponse_status,
+
+    -- ** DeleteThemeAlias
+    deleteThemeAlias_awsAccountId,
+    deleteThemeAlias_themeId,
+    deleteThemeAlias_aliasName,
+    deleteThemeAliasResponse_aliasName,
+    deleteThemeAliasResponse_arn,
+    deleteThemeAliasResponse_requestId,
+    deleteThemeAliasResponse_themeId,
+    deleteThemeAliasResponse_status,
+
+    -- ** DeleteUser
+    deleteUser_userName,
+    deleteUser_awsAccountId,
+    deleteUser_namespace,
+    deleteUserResponse_requestId,
+    deleteUserResponse_status,
+
+    -- ** DeleteUserByPrincipalId
+    deleteUserByPrincipalId_principalId,
+    deleteUserByPrincipalId_awsAccountId,
+    deleteUserByPrincipalId_namespace,
+    deleteUserByPrincipalIdResponse_requestId,
+    deleteUserByPrincipalIdResponse_status,
+
+    -- ** DescribeAccountCustomization
+    describeAccountCustomization_namespace,
+    describeAccountCustomization_resolved,
+    describeAccountCustomization_awsAccountId,
+    describeAccountCustomizationResponse_accountCustomization,
+    describeAccountCustomizationResponse_arn,
+    describeAccountCustomizationResponse_awsAccountId,
+    describeAccountCustomizationResponse_namespace,
+    describeAccountCustomizationResponse_requestId,
+    describeAccountCustomizationResponse_status,
+
+    -- ** DescribeAccountSettings
+    describeAccountSettings_awsAccountId,
+    describeAccountSettingsResponse_accountSettings,
+    describeAccountSettingsResponse_requestId,
+    describeAccountSettingsResponse_status,
+
+    -- ** DescribeAccountSubscription
+    describeAccountSubscription_awsAccountId,
+    describeAccountSubscriptionResponse_accountInfo,
+    describeAccountSubscriptionResponse_requestId,
+    describeAccountSubscriptionResponse_status,
+
+    -- ** DescribeAnalysis
+    describeAnalysis_awsAccountId,
+    describeAnalysis_analysisId,
+    describeAnalysisResponse_analysis,
+    describeAnalysisResponse_requestId,
+    describeAnalysisResponse_status,
+
+    -- ** DescribeAnalysisDefinition
+    describeAnalysisDefinition_awsAccountId,
+    describeAnalysisDefinition_analysisId,
+    describeAnalysisDefinitionResponse_analysisId,
+    describeAnalysisDefinitionResponse_definition,
+    describeAnalysisDefinitionResponse_errors,
+    describeAnalysisDefinitionResponse_name,
+    describeAnalysisDefinitionResponse_requestId,
+    describeAnalysisDefinitionResponse_resourceStatus,
+    describeAnalysisDefinitionResponse_themeArn,
+    describeAnalysisDefinitionResponse_status,
+
+    -- ** DescribeAnalysisPermissions
+    describeAnalysisPermissions_awsAccountId,
+    describeAnalysisPermissions_analysisId,
+    describeAnalysisPermissionsResponse_analysisArn,
+    describeAnalysisPermissionsResponse_analysisId,
+    describeAnalysisPermissionsResponse_permissions,
+    describeAnalysisPermissionsResponse_requestId,
+    describeAnalysisPermissionsResponse_status,
+
+    -- ** DescribeDashboard
+    describeDashboard_aliasName,
+    describeDashboard_versionNumber,
+    describeDashboard_awsAccountId,
+    describeDashboard_dashboardId,
+    describeDashboardResponse_dashboard,
+    describeDashboardResponse_requestId,
+    describeDashboardResponse_status,
+
+    -- ** DescribeDashboardDefinition
+    describeDashboardDefinition_aliasName,
+    describeDashboardDefinition_versionNumber,
+    describeDashboardDefinition_awsAccountId,
+    describeDashboardDefinition_dashboardId,
+    describeDashboardDefinitionResponse_dashboardId,
+    describeDashboardDefinitionResponse_definition,
+    describeDashboardDefinitionResponse_errors,
+    describeDashboardDefinitionResponse_name,
+    describeDashboardDefinitionResponse_requestId,
+    describeDashboardDefinitionResponse_resourceStatus,
+    describeDashboardDefinitionResponse_themeArn,
+    describeDashboardDefinitionResponse_status,
+
+    -- ** DescribeDashboardPermissions
+    describeDashboardPermissions_awsAccountId,
+    describeDashboardPermissions_dashboardId,
+    describeDashboardPermissionsResponse_dashboardArn,
+    describeDashboardPermissionsResponse_dashboardId,
+    describeDashboardPermissionsResponse_linkSharingConfiguration,
+    describeDashboardPermissionsResponse_permissions,
+    describeDashboardPermissionsResponse_requestId,
+    describeDashboardPermissionsResponse_status,
+
+    -- ** DescribeDataSet
+    describeDataSet_awsAccountId,
+    describeDataSet_dataSetId,
+    describeDataSetResponse_dataSet,
+    describeDataSetResponse_requestId,
+    describeDataSetResponse_status,
+
+    -- ** DescribeDataSetPermissions
+    describeDataSetPermissions_awsAccountId,
+    describeDataSetPermissions_dataSetId,
+    describeDataSetPermissionsResponse_dataSetArn,
+    describeDataSetPermissionsResponse_dataSetId,
+    describeDataSetPermissionsResponse_permissions,
+    describeDataSetPermissionsResponse_requestId,
+    describeDataSetPermissionsResponse_status,
+
+    -- ** DescribeDataSource
+    describeDataSource_awsAccountId,
+    describeDataSource_dataSourceId,
+    describeDataSourceResponse_dataSource,
+    describeDataSourceResponse_requestId,
+    describeDataSourceResponse_status,
+
+    -- ** DescribeDataSourcePermissions
+    describeDataSourcePermissions_awsAccountId,
+    describeDataSourcePermissions_dataSourceId,
+    describeDataSourcePermissionsResponse_dataSourceArn,
+    describeDataSourcePermissionsResponse_dataSourceId,
+    describeDataSourcePermissionsResponse_permissions,
+    describeDataSourcePermissionsResponse_requestId,
+    describeDataSourcePermissionsResponse_status,
+
+    -- ** DescribeFolder
+    describeFolder_awsAccountId,
+    describeFolder_folderId,
+    describeFolderResponse_folder,
+    describeFolderResponse_requestId,
+    describeFolderResponse_status,
+
+    -- ** DescribeFolderPermissions
+    describeFolderPermissions_awsAccountId,
+    describeFolderPermissions_folderId,
+    describeFolderPermissionsResponse_arn,
+    describeFolderPermissionsResponse_folderId,
+    describeFolderPermissionsResponse_permissions,
+    describeFolderPermissionsResponse_requestId,
+    describeFolderPermissionsResponse_status,
+
+    -- ** DescribeFolderResolvedPermissions
+    describeFolderResolvedPermissions_awsAccountId,
+    describeFolderResolvedPermissions_folderId,
+    describeFolderResolvedPermissionsResponse_arn,
+    describeFolderResolvedPermissionsResponse_folderId,
+    describeFolderResolvedPermissionsResponse_permissions,
+    describeFolderResolvedPermissionsResponse_requestId,
+    describeFolderResolvedPermissionsResponse_status,
+
+    -- ** DescribeGroup
+    describeGroup_groupName,
+    describeGroup_awsAccountId,
+    describeGroup_namespace,
+    describeGroupResponse_group,
+    describeGroupResponse_requestId,
+    describeGroupResponse_status,
+
+    -- ** DescribeGroupMembership
+    describeGroupMembership_memberName,
+    describeGroupMembership_groupName,
+    describeGroupMembership_awsAccountId,
+    describeGroupMembership_namespace,
+    describeGroupMembershipResponse_groupMember,
+    describeGroupMembershipResponse_requestId,
+    describeGroupMembershipResponse_status,
+
+    -- ** DescribeIAMPolicyAssignment
+    describeIAMPolicyAssignment_awsAccountId,
+    describeIAMPolicyAssignment_assignmentName,
+    describeIAMPolicyAssignment_namespace,
+    describeIAMPolicyAssignmentResponse_iAMPolicyAssignment,
+    describeIAMPolicyAssignmentResponse_requestId,
+    describeIAMPolicyAssignmentResponse_status,
+
+    -- ** DescribeIngestion
+    describeIngestion_awsAccountId,
+    describeIngestion_dataSetId,
+    describeIngestion_ingestionId,
+    describeIngestionResponse_ingestion,
+    describeIngestionResponse_requestId,
+    describeIngestionResponse_status,
+
+    -- ** DescribeIpRestriction
+    describeIpRestriction_awsAccountId,
+    describeIpRestrictionResponse_awsAccountId,
+    describeIpRestrictionResponse_enabled,
+    describeIpRestrictionResponse_ipRestrictionRuleMap,
+    describeIpRestrictionResponse_requestId,
+    describeIpRestrictionResponse_status,
+
+    -- ** DescribeNamespace
+    describeNamespace_awsAccountId,
+    describeNamespace_namespace,
+    describeNamespaceResponse_namespace,
+    describeNamespaceResponse_requestId,
+    describeNamespaceResponse_status,
+
+    -- ** DescribeTemplate
+    describeTemplate_aliasName,
+    describeTemplate_versionNumber,
+    describeTemplate_awsAccountId,
+    describeTemplate_templateId,
+    describeTemplateResponse_requestId,
+    describeTemplateResponse_template,
+    describeTemplateResponse_status,
+
+    -- ** DescribeTemplateAlias
+    describeTemplateAlias_awsAccountId,
+    describeTemplateAlias_templateId,
+    describeTemplateAlias_aliasName,
+    describeTemplateAliasResponse_requestId,
+    describeTemplateAliasResponse_templateAlias,
+    describeTemplateAliasResponse_status,
+
+    -- ** DescribeTemplateDefinition
+    describeTemplateDefinition_aliasName,
+    describeTemplateDefinition_versionNumber,
+    describeTemplateDefinition_awsAccountId,
+    describeTemplateDefinition_templateId,
+    describeTemplateDefinitionResponse_definition,
+    describeTemplateDefinitionResponse_errors,
+    describeTemplateDefinitionResponse_name,
+    describeTemplateDefinitionResponse_requestId,
+    describeTemplateDefinitionResponse_resourceStatus,
+    describeTemplateDefinitionResponse_templateId,
+    describeTemplateDefinitionResponse_themeArn,
+    describeTemplateDefinitionResponse_status,
+
+    -- ** DescribeTemplatePermissions
+    describeTemplatePermissions_awsAccountId,
+    describeTemplatePermissions_templateId,
+    describeTemplatePermissionsResponse_permissions,
+    describeTemplatePermissionsResponse_requestId,
+    describeTemplatePermissionsResponse_templateArn,
+    describeTemplatePermissionsResponse_templateId,
+    describeTemplatePermissionsResponse_status,
+
+    -- ** DescribeTheme
+    describeTheme_aliasName,
+    describeTheme_versionNumber,
+    describeTheme_awsAccountId,
+    describeTheme_themeId,
+    describeThemeResponse_requestId,
+    describeThemeResponse_theme,
+    describeThemeResponse_status,
+
+    -- ** DescribeThemeAlias
+    describeThemeAlias_awsAccountId,
+    describeThemeAlias_themeId,
+    describeThemeAlias_aliasName,
+    describeThemeAliasResponse_requestId,
+    describeThemeAliasResponse_themeAlias,
+    describeThemeAliasResponse_status,
+
+    -- ** DescribeThemePermissions
+    describeThemePermissions_awsAccountId,
+    describeThemePermissions_themeId,
+    describeThemePermissionsResponse_permissions,
+    describeThemePermissionsResponse_requestId,
+    describeThemePermissionsResponse_themeArn,
+    describeThemePermissionsResponse_themeId,
+    describeThemePermissionsResponse_status,
+
+    -- ** DescribeUser
+    describeUser_userName,
+    describeUser_awsAccountId,
+    describeUser_namespace,
+    describeUserResponse_requestId,
+    describeUserResponse_user,
+    describeUserResponse_status,
+
+    -- ** GenerateEmbedUrlForAnonymousUser
+    generateEmbedUrlForAnonymousUser_allowedDomains,
+    generateEmbedUrlForAnonymousUser_sessionLifetimeInMinutes,
+    generateEmbedUrlForAnonymousUser_sessionTags,
+    generateEmbedUrlForAnonymousUser_awsAccountId,
+    generateEmbedUrlForAnonymousUser_namespace,
+    generateEmbedUrlForAnonymousUser_authorizedResourceArns,
+    generateEmbedUrlForAnonymousUser_experienceConfiguration,
+    generateEmbedUrlForAnonymousUserResponse_status,
+    generateEmbedUrlForAnonymousUserResponse_embedUrl,
+    generateEmbedUrlForAnonymousUserResponse_requestId,
+    generateEmbedUrlForAnonymousUserResponse_anonymousUserArn,
+
+    -- ** GenerateEmbedUrlForRegisteredUser
+    generateEmbedUrlForRegisteredUser_allowedDomains,
+    generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes,
+    generateEmbedUrlForRegisteredUser_awsAccountId,
+    generateEmbedUrlForRegisteredUser_userArn,
+    generateEmbedUrlForRegisteredUser_experienceConfiguration,
+    generateEmbedUrlForRegisteredUserResponse_status,
+    generateEmbedUrlForRegisteredUserResponse_embedUrl,
+    generateEmbedUrlForRegisteredUserResponse_requestId,
+
+    -- ** GetDashboardEmbedUrl
+    getDashboardEmbedUrl_additionalDashboardIds,
+    getDashboardEmbedUrl_namespace,
+    getDashboardEmbedUrl_resetDisabled,
+    getDashboardEmbedUrl_sessionLifetimeInMinutes,
+    getDashboardEmbedUrl_statePersistenceEnabled,
+    getDashboardEmbedUrl_undoRedoDisabled,
+    getDashboardEmbedUrl_userArn,
+    getDashboardEmbedUrl_awsAccountId,
+    getDashboardEmbedUrl_dashboardId,
+    getDashboardEmbedUrl_identityType,
+    getDashboardEmbedUrlResponse_embedUrl,
+    getDashboardEmbedUrlResponse_requestId,
+    getDashboardEmbedUrlResponse_status,
+
+    -- ** GetSessionEmbedUrl
+    getSessionEmbedUrl_entryPoint,
+    getSessionEmbedUrl_sessionLifetimeInMinutes,
+    getSessionEmbedUrl_userArn,
+    getSessionEmbedUrl_awsAccountId,
+    getSessionEmbedUrlResponse_embedUrl,
+    getSessionEmbedUrlResponse_requestId,
+    getSessionEmbedUrlResponse_status,
+
+    -- ** ListAnalyses
+    listAnalyses_maxResults,
+    listAnalyses_nextToken,
+    listAnalyses_awsAccountId,
+    listAnalysesResponse_analysisSummaryList,
+    listAnalysesResponse_nextToken,
+    listAnalysesResponse_requestId,
+    listAnalysesResponse_status,
+
+    -- ** ListDashboardVersions
+    listDashboardVersions_maxResults,
+    listDashboardVersions_nextToken,
+    listDashboardVersions_awsAccountId,
+    listDashboardVersions_dashboardId,
+    listDashboardVersionsResponse_dashboardVersionSummaryList,
+    listDashboardVersionsResponse_nextToken,
+    listDashboardVersionsResponse_requestId,
+    listDashboardVersionsResponse_status,
+
+    -- ** ListDashboards
+    listDashboards_maxResults,
+    listDashboards_nextToken,
+    listDashboards_awsAccountId,
+    listDashboardsResponse_dashboardSummaryList,
+    listDashboardsResponse_nextToken,
+    listDashboardsResponse_requestId,
+    listDashboardsResponse_status,
+
+    -- ** ListDataSets
+    listDataSets_maxResults,
+    listDataSets_nextToken,
+    listDataSets_awsAccountId,
+    listDataSetsResponse_dataSetSummaries,
+    listDataSetsResponse_nextToken,
+    listDataSetsResponse_requestId,
+    listDataSetsResponse_status,
+
+    -- ** ListDataSources
+    listDataSources_maxResults,
+    listDataSources_nextToken,
+    listDataSources_awsAccountId,
+    listDataSourcesResponse_dataSources,
+    listDataSourcesResponse_nextToken,
+    listDataSourcesResponse_requestId,
+    listDataSourcesResponse_status,
+
+    -- ** ListFolderMembers
+    listFolderMembers_maxResults,
+    listFolderMembers_nextToken,
+    listFolderMembers_awsAccountId,
+    listFolderMembers_folderId,
+    listFolderMembersResponse_folderMemberList,
+    listFolderMembersResponse_nextToken,
+    listFolderMembersResponse_requestId,
+    listFolderMembersResponse_status,
+
+    -- ** ListFolders
+    listFolders_maxResults,
+    listFolders_nextToken,
+    listFolders_awsAccountId,
+    listFoldersResponse_folderSummaryList,
+    listFoldersResponse_nextToken,
+    listFoldersResponse_requestId,
+    listFoldersResponse_status,
+
+    -- ** ListGroupMemberships
+    listGroupMemberships_maxResults,
+    listGroupMemberships_nextToken,
+    listGroupMemberships_groupName,
+    listGroupMemberships_awsAccountId,
+    listGroupMemberships_namespace,
+    listGroupMembershipsResponse_groupMemberList,
+    listGroupMembershipsResponse_nextToken,
+    listGroupMembershipsResponse_requestId,
+    listGroupMembershipsResponse_status,
+
+    -- ** ListGroups
+    listGroups_maxResults,
+    listGroups_nextToken,
+    listGroups_awsAccountId,
+    listGroups_namespace,
+    listGroupsResponse_groupList,
+    listGroupsResponse_nextToken,
+    listGroupsResponse_requestId,
+    listGroupsResponse_status,
+
+    -- ** ListIAMPolicyAssignments
+    listIAMPolicyAssignments_assignmentStatus,
+    listIAMPolicyAssignments_maxResults,
+    listIAMPolicyAssignments_nextToken,
+    listIAMPolicyAssignments_awsAccountId,
+    listIAMPolicyAssignments_namespace,
+    listIAMPolicyAssignmentsResponse_iAMPolicyAssignments,
+    listIAMPolicyAssignmentsResponse_nextToken,
+    listIAMPolicyAssignmentsResponse_requestId,
+    listIAMPolicyAssignmentsResponse_status,
+
+    -- ** ListIAMPolicyAssignmentsForUser
+    listIAMPolicyAssignmentsForUser_maxResults,
+    listIAMPolicyAssignmentsForUser_nextToken,
+    listIAMPolicyAssignmentsForUser_awsAccountId,
+    listIAMPolicyAssignmentsForUser_userName,
+    listIAMPolicyAssignmentsForUser_namespace,
+    listIAMPolicyAssignmentsForUserResponse_activeAssignments,
+    listIAMPolicyAssignmentsForUserResponse_nextToken,
+    listIAMPolicyAssignmentsForUserResponse_requestId,
+    listIAMPolicyAssignmentsForUserResponse_status,
+
+    -- ** ListIngestions
+    listIngestions_maxResults,
+    listIngestions_nextToken,
+    listIngestions_dataSetId,
+    listIngestions_awsAccountId,
+    listIngestionsResponse_ingestions,
+    listIngestionsResponse_nextToken,
+    listIngestionsResponse_requestId,
+    listIngestionsResponse_status,
+
+    -- ** ListNamespaces
+    listNamespaces_maxResults,
+    listNamespaces_nextToken,
+    listNamespaces_awsAccountId,
+    listNamespacesResponse_namespaces,
+    listNamespacesResponse_nextToken,
+    listNamespacesResponse_requestId,
+    listNamespacesResponse_status,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_requestId,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_status,
+
+    -- ** ListTemplateAliases
+    listTemplateAliases_maxResults,
+    listTemplateAliases_nextToken,
+    listTemplateAliases_awsAccountId,
+    listTemplateAliases_templateId,
+    listTemplateAliasesResponse_nextToken,
+    listTemplateAliasesResponse_requestId,
+    listTemplateAliasesResponse_templateAliasList,
+    listTemplateAliasesResponse_status,
+
+    -- ** ListTemplateVersions
+    listTemplateVersions_maxResults,
+    listTemplateVersions_nextToken,
+    listTemplateVersions_awsAccountId,
+    listTemplateVersions_templateId,
+    listTemplateVersionsResponse_nextToken,
+    listTemplateVersionsResponse_requestId,
+    listTemplateVersionsResponse_templateVersionSummaryList,
+    listTemplateVersionsResponse_status,
+
+    -- ** ListTemplates
+    listTemplates_maxResults,
+    listTemplates_nextToken,
+    listTemplates_awsAccountId,
+    listTemplatesResponse_nextToken,
+    listTemplatesResponse_requestId,
+    listTemplatesResponse_templateSummaryList,
+    listTemplatesResponse_status,
+
+    -- ** ListThemeAliases
+    listThemeAliases_maxResults,
+    listThemeAliases_nextToken,
+    listThemeAliases_awsAccountId,
+    listThemeAliases_themeId,
+    listThemeAliasesResponse_nextToken,
+    listThemeAliasesResponse_requestId,
+    listThemeAliasesResponse_themeAliasList,
+    listThemeAliasesResponse_status,
+
+    -- ** ListThemeVersions
+    listThemeVersions_maxResults,
+    listThemeVersions_nextToken,
+    listThemeVersions_awsAccountId,
+    listThemeVersions_themeId,
+    listThemeVersionsResponse_nextToken,
+    listThemeVersionsResponse_requestId,
+    listThemeVersionsResponse_themeVersionSummaryList,
+    listThemeVersionsResponse_status,
+
+    -- ** ListThemes
+    listThemes_maxResults,
+    listThemes_nextToken,
+    listThemes_type,
+    listThemes_awsAccountId,
+    listThemesResponse_nextToken,
+    listThemesResponse_requestId,
+    listThemesResponse_themeSummaryList,
+    listThemesResponse_status,
+
+    -- ** ListUserGroups
+    listUserGroups_maxResults,
+    listUserGroups_nextToken,
+    listUserGroups_userName,
+    listUserGroups_awsAccountId,
+    listUserGroups_namespace,
+    listUserGroupsResponse_groupList,
+    listUserGroupsResponse_nextToken,
+    listUserGroupsResponse_requestId,
+    listUserGroupsResponse_status,
+
+    -- ** ListUsers
+    listUsers_maxResults,
+    listUsers_nextToken,
+    listUsers_awsAccountId,
+    listUsers_namespace,
+    listUsersResponse_nextToken,
+    listUsersResponse_requestId,
+    listUsersResponse_userList,
+    listUsersResponse_status,
+
+    -- ** RegisterUser
+    registerUser_customFederationProviderUrl,
+    registerUser_customPermissionsName,
+    registerUser_externalLoginFederationProviderType,
+    registerUser_externalLoginId,
+    registerUser_iamArn,
+    registerUser_sessionName,
+    registerUser_userName,
+    registerUser_identityType,
+    registerUser_email,
+    registerUser_userRole,
+    registerUser_awsAccountId,
+    registerUser_namespace,
+    registerUserResponse_requestId,
+    registerUserResponse_user,
+    registerUserResponse_userInvitationUrl,
+    registerUserResponse_status,
+
+    -- ** RestoreAnalysis
+    restoreAnalysis_awsAccountId,
+    restoreAnalysis_analysisId,
+    restoreAnalysisResponse_analysisId,
+    restoreAnalysisResponse_arn,
+    restoreAnalysisResponse_requestId,
+    restoreAnalysisResponse_status,
+
+    -- ** SearchAnalyses
+    searchAnalyses_maxResults,
+    searchAnalyses_nextToken,
+    searchAnalyses_awsAccountId,
+    searchAnalyses_filters,
+    searchAnalysesResponse_analysisSummaryList,
+    searchAnalysesResponse_nextToken,
+    searchAnalysesResponse_requestId,
+    searchAnalysesResponse_status,
+
+    -- ** SearchDashboards
+    searchDashboards_maxResults,
+    searchDashboards_nextToken,
+    searchDashboards_awsAccountId,
+    searchDashboards_filters,
+    searchDashboardsResponse_dashboardSummaryList,
+    searchDashboardsResponse_nextToken,
+    searchDashboardsResponse_requestId,
+    searchDashboardsResponse_status,
+
+    -- ** SearchDataSets
+    searchDataSets_maxResults,
+    searchDataSets_nextToken,
+    searchDataSets_awsAccountId,
+    searchDataSets_filters,
+    searchDataSetsResponse_dataSetSummaries,
+    searchDataSetsResponse_nextToken,
+    searchDataSetsResponse_requestId,
+    searchDataSetsResponse_status,
+
+    -- ** SearchDataSources
+    searchDataSources_maxResults,
+    searchDataSources_nextToken,
+    searchDataSources_awsAccountId,
+    searchDataSources_filters,
+    searchDataSourcesResponse_dataSourceSummaries,
+    searchDataSourcesResponse_nextToken,
+    searchDataSourcesResponse_requestId,
+    searchDataSourcesResponse_status,
+
+    -- ** SearchFolders
+    searchFolders_maxResults,
+    searchFolders_nextToken,
+    searchFolders_awsAccountId,
+    searchFolders_filters,
+    searchFoldersResponse_folderSummaryList,
+    searchFoldersResponse_nextToken,
+    searchFoldersResponse_requestId,
+    searchFoldersResponse_status,
+
+    -- ** SearchGroups
+    searchGroups_maxResults,
+    searchGroups_nextToken,
+    searchGroups_awsAccountId,
+    searchGroups_namespace,
+    searchGroups_filters,
+    searchGroupsResponse_groupList,
+    searchGroupsResponse_nextToken,
+    searchGroupsResponse_requestId,
+    searchGroupsResponse_status,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_requestId,
+    tagResourceResponse_status,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_requestId,
+    untagResourceResponse_status,
+
+    -- ** UpdateAccountCustomization
+    updateAccountCustomization_namespace,
+    updateAccountCustomization_awsAccountId,
+    updateAccountCustomization_accountCustomization,
+    updateAccountCustomizationResponse_accountCustomization,
+    updateAccountCustomizationResponse_arn,
+    updateAccountCustomizationResponse_awsAccountId,
+    updateAccountCustomizationResponse_namespace,
+    updateAccountCustomizationResponse_requestId,
+    updateAccountCustomizationResponse_status,
+
+    -- ** UpdateAccountSettings
+    updateAccountSettings_notificationEmail,
+    updateAccountSettings_terminationProtectionEnabled,
+    updateAccountSettings_awsAccountId,
+    updateAccountSettings_defaultNamespace,
+    updateAccountSettingsResponse_requestId,
+    updateAccountSettingsResponse_status,
+
+    -- ** UpdateAnalysis
+    updateAnalysis_definition,
+    updateAnalysis_parameters,
+    updateAnalysis_sourceEntity,
+    updateAnalysis_themeArn,
+    updateAnalysis_awsAccountId,
+    updateAnalysis_analysisId,
+    updateAnalysis_name,
+    updateAnalysisResponse_analysisId,
+    updateAnalysisResponse_arn,
+    updateAnalysisResponse_requestId,
+    updateAnalysisResponse_updateStatus,
+    updateAnalysisResponse_status,
+
+    -- ** UpdateAnalysisPermissions
+    updateAnalysisPermissions_grantPermissions,
+    updateAnalysisPermissions_revokePermissions,
+    updateAnalysisPermissions_awsAccountId,
+    updateAnalysisPermissions_analysisId,
+    updateAnalysisPermissionsResponse_analysisArn,
+    updateAnalysisPermissionsResponse_analysisId,
+    updateAnalysisPermissionsResponse_permissions,
+    updateAnalysisPermissionsResponse_requestId,
+    updateAnalysisPermissionsResponse_status,
+
+    -- ** UpdateDashboard
+    updateDashboard_dashboardPublishOptions,
+    updateDashboard_definition,
+    updateDashboard_parameters,
+    updateDashboard_sourceEntity,
+    updateDashboard_themeArn,
+    updateDashboard_versionDescription,
+    updateDashboard_awsAccountId,
+    updateDashboard_dashboardId,
+    updateDashboard_name,
+    updateDashboardResponse_arn,
+    updateDashboardResponse_creationStatus,
+    updateDashboardResponse_dashboardId,
+    updateDashboardResponse_requestId,
+    updateDashboardResponse_status,
+    updateDashboardResponse_versionArn,
+    updateDashboardResponse_httpStatus,
+
+    -- ** UpdateDashboardPermissions
+    updateDashboardPermissions_grantLinkPermissions,
+    updateDashboardPermissions_grantPermissions,
+    updateDashboardPermissions_revokeLinkPermissions,
+    updateDashboardPermissions_revokePermissions,
+    updateDashboardPermissions_awsAccountId,
+    updateDashboardPermissions_dashboardId,
+    updateDashboardPermissionsResponse_dashboardArn,
+    updateDashboardPermissionsResponse_dashboardId,
+    updateDashboardPermissionsResponse_linkSharingConfiguration,
+    updateDashboardPermissionsResponse_permissions,
+    updateDashboardPermissionsResponse_requestId,
+    updateDashboardPermissionsResponse_status,
+
+    -- ** UpdateDashboardPublishedVersion
+    updateDashboardPublishedVersion_awsAccountId,
+    updateDashboardPublishedVersion_dashboardId,
+    updateDashboardPublishedVersion_versionNumber,
+    updateDashboardPublishedVersionResponse_dashboardArn,
+    updateDashboardPublishedVersionResponse_dashboardId,
+    updateDashboardPublishedVersionResponse_requestId,
+    updateDashboardPublishedVersionResponse_status,
+
+    -- ** UpdateDataSet
+    updateDataSet_columnGroups,
+    updateDataSet_columnLevelPermissionRules,
+    updateDataSet_dataSetUsageConfiguration,
+    updateDataSet_fieldFolders,
+    updateDataSet_logicalTableMap,
+    updateDataSet_rowLevelPermissionDataSet,
+    updateDataSet_rowLevelPermissionTagConfiguration,
+    updateDataSet_awsAccountId,
+    updateDataSet_dataSetId,
+    updateDataSet_name,
+    updateDataSet_physicalTableMap,
+    updateDataSet_importMode,
+    updateDataSetResponse_arn,
+    updateDataSetResponse_dataSetId,
+    updateDataSetResponse_ingestionArn,
+    updateDataSetResponse_ingestionId,
+    updateDataSetResponse_requestId,
+    updateDataSetResponse_status,
+
+    -- ** UpdateDataSetPermissions
+    updateDataSetPermissions_grantPermissions,
+    updateDataSetPermissions_revokePermissions,
+    updateDataSetPermissions_awsAccountId,
+    updateDataSetPermissions_dataSetId,
+    updateDataSetPermissionsResponse_dataSetArn,
+    updateDataSetPermissionsResponse_dataSetId,
+    updateDataSetPermissionsResponse_requestId,
+    updateDataSetPermissionsResponse_status,
+
+    -- ** UpdateDataSource
+    updateDataSource_credentials,
+    updateDataSource_dataSourceParameters,
+    updateDataSource_sslProperties,
+    updateDataSource_vpcConnectionProperties,
+    updateDataSource_awsAccountId,
+    updateDataSource_dataSourceId,
+    updateDataSource_name,
+    updateDataSourceResponse_arn,
+    updateDataSourceResponse_dataSourceId,
+    updateDataSourceResponse_requestId,
+    updateDataSourceResponse_updateStatus,
+    updateDataSourceResponse_status,
+
+    -- ** UpdateDataSourcePermissions
+    updateDataSourcePermissions_grantPermissions,
+    updateDataSourcePermissions_revokePermissions,
+    updateDataSourcePermissions_awsAccountId,
+    updateDataSourcePermissions_dataSourceId,
+    updateDataSourcePermissionsResponse_dataSourceArn,
+    updateDataSourcePermissionsResponse_dataSourceId,
+    updateDataSourcePermissionsResponse_requestId,
+    updateDataSourcePermissionsResponse_status,
+
+    -- ** UpdateFolder
+    updateFolder_awsAccountId,
+    updateFolder_folderId,
+    updateFolder_name,
+    updateFolderResponse_arn,
+    updateFolderResponse_folderId,
+    updateFolderResponse_requestId,
+    updateFolderResponse_status,
+
+    -- ** UpdateFolderPermissions
+    updateFolderPermissions_grantPermissions,
+    updateFolderPermissions_revokePermissions,
+    updateFolderPermissions_awsAccountId,
+    updateFolderPermissions_folderId,
+    updateFolderPermissionsResponse_arn,
+    updateFolderPermissionsResponse_folderId,
+    updateFolderPermissionsResponse_permissions,
+    updateFolderPermissionsResponse_requestId,
+    updateFolderPermissionsResponse_status,
+    updateFolderPermissionsResponse_httpStatus,
+
+    -- ** UpdateGroup
+    updateGroup_description,
+    updateGroup_groupName,
+    updateGroup_awsAccountId,
+    updateGroup_namespace,
+    updateGroupResponse_group,
+    updateGroupResponse_requestId,
+    updateGroupResponse_status,
+
+    -- ** UpdateIAMPolicyAssignment
+    updateIAMPolicyAssignment_assignmentStatus,
+    updateIAMPolicyAssignment_identities,
+    updateIAMPolicyAssignment_policyArn,
+    updateIAMPolicyAssignment_awsAccountId,
+    updateIAMPolicyAssignment_assignmentName,
+    updateIAMPolicyAssignment_namespace,
+    updateIAMPolicyAssignmentResponse_assignmentId,
+    updateIAMPolicyAssignmentResponse_assignmentName,
+    updateIAMPolicyAssignmentResponse_assignmentStatus,
+    updateIAMPolicyAssignmentResponse_identities,
+    updateIAMPolicyAssignmentResponse_policyArn,
+    updateIAMPolicyAssignmentResponse_requestId,
+    updateIAMPolicyAssignmentResponse_status,
+
+    -- ** UpdateIpRestriction
+    updateIpRestriction_enabled,
+    updateIpRestriction_ipRestrictionRuleMap,
+    updateIpRestriction_awsAccountId,
+    updateIpRestrictionResponse_awsAccountId,
+    updateIpRestrictionResponse_requestId,
+    updateIpRestrictionResponse_status,
+
+    -- ** UpdatePublicSharingSettings
+    updatePublicSharingSettings_publicSharingEnabled,
+    updatePublicSharingSettings_awsAccountId,
+    updatePublicSharingSettingsResponse_requestId,
+    updatePublicSharingSettingsResponse_status,
+
+    -- ** UpdateTemplate
+    updateTemplate_definition,
+    updateTemplate_name,
+    updateTemplate_sourceEntity,
+    updateTemplate_versionDescription,
+    updateTemplate_awsAccountId,
+    updateTemplate_templateId,
+    updateTemplateResponse_arn,
+    updateTemplateResponse_creationStatus,
+    updateTemplateResponse_requestId,
+    updateTemplateResponse_templateId,
+    updateTemplateResponse_versionArn,
+    updateTemplateResponse_status,
+
+    -- ** UpdateTemplateAlias
+    updateTemplateAlias_awsAccountId,
+    updateTemplateAlias_templateId,
+    updateTemplateAlias_aliasName,
+    updateTemplateAlias_templateVersionNumber,
+    updateTemplateAliasResponse_requestId,
+    updateTemplateAliasResponse_templateAlias,
+    updateTemplateAliasResponse_status,
+
+    -- ** UpdateTemplatePermissions
+    updateTemplatePermissions_grantPermissions,
+    updateTemplatePermissions_revokePermissions,
+    updateTemplatePermissions_awsAccountId,
+    updateTemplatePermissions_templateId,
+    updateTemplatePermissionsResponse_permissions,
+    updateTemplatePermissionsResponse_requestId,
+    updateTemplatePermissionsResponse_templateArn,
+    updateTemplatePermissionsResponse_templateId,
+    updateTemplatePermissionsResponse_status,
+
+    -- ** UpdateTheme
+    updateTheme_configuration,
+    updateTheme_name,
+    updateTheme_versionDescription,
+    updateTheme_awsAccountId,
+    updateTheme_themeId,
+    updateTheme_baseThemeId,
+    updateThemeResponse_arn,
+    updateThemeResponse_creationStatus,
+    updateThemeResponse_requestId,
+    updateThemeResponse_themeId,
+    updateThemeResponse_versionArn,
+    updateThemeResponse_status,
+
+    -- ** UpdateThemeAlias
+    updateThemeAlias_awsAccountId,
+    updateThemeAlias_themeId,
+    updateThemeAlias_aliasName,
+    updateThemeAlias_themeVersionNumber,
+    updateThemeAliasResponse_requestId,
+    updateThemeAliasResponse_themeAlias,
+    updateThemeAliasResponse_status,
+
+    -- ** UpdateThemePermissions
+    updateThemePermissions_grantPermissions,
+    updateThemePermissions_revokePermissions,
+    updateThemePermissions_awsAccountId,
+    updateThemePermissions_themeId,
+    updateThemePermissionsResponse_permissions,
+    updateThemePermissionsResponse_requestId,
+    updateThemePermissionsResponse_themeArn,
+    updateThemePermissionsResponse_themeId,
+    updateThemePermissionsResponse_status,
+
+    -- ** UpdateUser
+    updateUser_customFederationProviderUrl,
+    updateUser_customPermissionsName,
+    updateUser_externalLoginFederationProviderType,
+    updateUser_externalLoginId,
+    updateUser_unapplyCustomPermissions,
+    updateUser_userName,
+    updateUser_awsAccountId,
+    updateUser_namespace,
+    updateUser_email,
+    updateUser_role,
+    updateUserResponse_requestId,
+    updateUserResponse_user,
+    updateUserResponse_status,
+
+    -- * Types
+
+    -- ** AccountCustomization
+    accountCustomization_defaultEmailCustomizationTemplate,
+    accountCustomization_defaultTheme,
+
+    -- ** AccountInfo
+    accountInfo_accountName,
+    accountInfo_accountSubscriptionStatus,
+    accountInfo_authenticationType,
+    accountInfo_edition,
+    accountInfo_notificationEmail,
+
+    -- ** AccountSettings
+    accountSettings_accountName,
+    accountSettings_defaultNamespace,
+    accountSettings_edition,
+    accountSettings_notificationEmail,
+    accountSettings_publicSharingEnabled,
+    accountSettings_terminationProtectionEnabled,
+
+    -- ** ActiveIAMPolicyAssignment
+    activeIAMPolicyAssignment_assignmentName,
+    activeIAMPolicyAssignment_policyArn,
+
+    -- ** AdHocFilteringOption
+    adHocFilteringOption_availabilityStatus,
+
+    -- ** AggregationFunction
+    aggregationFunction_categoricalAggregationFunction,
+    aggregationFunction_dateAggregationFunction,
+    aggregationFunction_numericalAggregationFunction,
+
+    -- ** AggregationSortConfiguration
+    aggregationSortConfiguration_column,
+    aggregationSortConfiguration_sortDirection,
+    aggregationSortConfiguration_aggregationFunction,
+
+    -- ** AmazonElasticsearchParameters
+    amazonElasticsearchParameters_domain,
+
+    -- ** AmazonOpenSearchParameters
+    amazonOpenSearchParameters_domain,
+
+    -- ** Analysis
+    analysis_analysisId,
+    analysis_arn,
+    analysis_createdTime,
+    analysis_dataSetArns,
+    analysis_errors,
+    analysis_lastUpdatedTime,
+    analysis_name,
+    analysis_sheets,
+    analysis_status,
+    analysis_themeArn,
+
+    -- ** AnalysisDefaults
+    analysisDefaults_defaultNewSheetConfiguration,
+
+    -- ** AnalysisDefinition
+    analysisDefinition_analysisDefaults,
+    analysisDefinition_calculatedFields,
+    analysisDefinition_columnConfigurations,
+    analysisDefinition_filterGroups,
+    analysisDefinition_parameterDeclarations,
+    analysisDefinition_sheets,
+    analysisDefinition_dataSetIdentifierDeclarations,
+
+    -- ** AnalysisError
+    analysisError_message,
+    analysisError_type,
+    analysisError_violatedEntities,
+
+    -- ** AnalysisSearchFilter
+    analysisSearchFilter_name,
+    analysisSearchFilter_operator,
+    analysisSearchFilter_value,
+
+    -- ** AnalysisSourceEntity
+    analysisSourceEntity_sourceTemplate,
+
+    -- ** AnalysisSourceTemplate
+    analysisSourceTemplate_dataSetReferences,
+    analysisSourceTemplate_arn,
+
+    -- ** AnalysisSummary
+    analysisSummary_analysisId,
+    analysisSummary_arn,
+    analysisSummary_createdTime,
+    analysisSummary_lastUpdatedTime,
+    analysisSummary_name,
+    analysisSummary_status,
+
+    -- ** AnchorDateConfiguration
+    anchorDateConfiguration_anchorOption,
+    anchorDateConfiguration_parameterName,
+
+    -- ** AnonymousUserDashboardEmbeddingConfiguration
+    anonymousUserDashboardEmbeddingConfiguration_initialDashboardId,
+
+    -- ** AnonymousUserDashboardVisualEmbeddingConfiguration
+    anonymousUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId,
+
+    -- ** AnonymousUserEmbeddingExperienceConfiguration
+    anonymousUserEmbeddingExperienceConfiguration_dashboard,
+    anonymousUserEmbeddingExperienceConfiguration_dashboardVisual,
+    anonymousUserEmbeddingExperienceConfiguration_qSearchBar,
+
+    -- ** AnonymousUserQSearchBarEmbeddingConfiguration
+    anonymousUserQSearchBarEmbeddingConfiguration_initialTopicId,
+
+    -- ** ArcAxisConfiguration
+    arcAxisConfiguration_range,
+    arcAxisConfiguration_reserveRange,
+
+    -- ** ArcAxisDisplayRange
+    arcAxisDisplayRange_max,
+    arcAxisDisplayRange_min,
+
+    -- ** ArcConfiguration
+    arcConfiguration_arcAngle,
+    arcConfiguration_arcThickness,
+
+    -- ** ArcOptions
+    arcOptions_arcThickness,
+
+    -- ** AthenaParameters
+    athenaParameters_roleArn,
+    athenaParameters_workGroup,
+
+    -- ** AuroraParameters
+    auroraParameters_host,
+    auroraParameters_port,
+    auroraParameters_database,
+
+    -- ** AuroraPostgreSqlParameters
+    auroraPostgreSqlParameters_host,
+    auroraPostgreSqlParameters_port,
+    auroraPostgreSqlParameters_database,
+
+    -- ** AwsIotAnalyticsParameters
+    awsIotAnalyticsParameters_dataSetName,
+
+    -- ** AxisDataOptions
+    axisDataOptions_dateAxisOptions,
+    axisDataOptions_numericAxisOptions,
+
+    -- ** AxisDisplayDataDrivenRange
+
+    -- ** AxisDisplayMinMaxRange
+    axisDisplayMinMaxRange_maximum,
+    axisDisplayMinMaxRange_minimum,
+
+    -- ** AxisDisplayOptions
+    axisDisplayOptions_axisLineVisibility,
+    axisDisplayOptions_axisOffset,
+    axisDisplayOptions_dataOptions,
+    axisDisplayOptions_gridLineVisibility,
+    axisDisplayOptions_scrollbarOptions,
+    axisDisplayOptions_tickLabelOptions,
+
+    -- ** AxisDisplayRange
+    axisDisplayRange_dataDriven,
+    axisDisplayRange_minMax,
+
+    -- ** AxisLabelOptions
+    axisLabelOptions_applyTo,
+    axisLabelOptions_customLabel,
+    axisLabelOptions_fontConfiguration,
+
+    -- ** AxisLabelReferenceOptions
+    axisLabelReferenceOptions_fieldId,
+    axisLabelReferenceOptions_column,
+
+    -- ** AxisLinearScale
+    axisLinearScale_stepCount,
+    axisLinearScale_stepSize,
+
+    -- ** AxisLogarithmicScale
+    axisLogarithmicScale_base,
+
+    -- ** AxisScale
+    axisScale_linear,
+    axisScale_logarithmic,
+
+    -- ** AxisTickLabelOptions
+    axisTickLabelOptions_labelOptions,
+    axisTickLabelOptions_rotationAngle,
+
+    -- ** BarChartAggregatedFieldWells
+    barChartAggregatedFieldWells_category,
+    barChartAggregatedFieldWells_colors,
+    barChartAggregatedFieldWells_smallMultiples,
+    barChartAggregatedFieldWells_values,
+
+    -- ** BarChartConfiguration
+    barChartConfiguration_barsArrangement,
+    barChartConfiguration_categoryAxis,
+    barChartConfiguration_categoryLabelOptions,
+    barChartConfiguration_colorLabelOptions,
+    barChartConfiguration_contributionAnalysisDefaults,
+    barChartConfiguration_dataLabels,
+    barChartConfiguration_fieldWells,
+    barChartConfiguration_legend,
+    barChartConfiguration_orientation,
+    barChartConfiguration_referenceLines,
+    barChartConfiguration_smallMultiplesOptions,
+    barChartConfiguration_sortConfiguration,
+    barChartConfiguration_tooltip,
+    barChartConfiguration_valueAxis,
+    barChartConfiguration_valueLabelOptions,
+    barChartConfiguration_visualPalette,
+
+    -- ** BarChartFieldWells
+    barChartFieldWells_barChartAggregatedFieldWells,
+
+    -- ** BarChartSortConfiguration
+    barChartSortConfiguration_categoryItemsLimit,
+    barChartSortConfiguration_categorySort,
+    barChartSortConfiguration_colorItemsLimit,
+    barChartSortConfiguration_colorSort,
+    barChartSortConfiguration_smallMultiplesLimitConfiguration,
+    barChartSortConfiguration_smallMultiplesSort,
+
+    -- ** BarChartVisual
+    barChartVisual_actions,
+    barChartVisual_chartConfiguration,
+    barChartVisual_columnHierarchies,
+    barChartVisual_subtitle,
+    barChartVisual_title,
+    barChartVisual_visualId,
+
+    -- ** BinCountOptions
+    binCountOptions_value,
+
+    -- ** BinWidthOptions
+    binWidthOptions_binCountLimit,
+    binWidthOptions_value,
+
+    -- ** BodySectionConfiguration
+    bodySectionConfiguration_pageBreakConfiguration,
+    bodySectionConfiguration_style,
+    bodySectionConfiguration_sectionId,
+    bodySectionConfiguration_content,
+
+    -- ** BodySectionContent
+    bodySectionContent_layout,
+
+    -- ** BorderStyle
+    borderStyle_show,
+
+    -- ** BoxPlotAggregatedFieldWells
+    boxPlotAggregatedFieldWells_groupBy,
+    boxPlotAggregatedFieldWells_values,
+
+    -- ** BoxPlotChartConfiguration
+    boxPlotChartConfiguration_boxPlotOptions,
+    boxPlotChartConfiguration_categoryAxis,
+    boxPlotChartConfiguration_categoryLabelOptions,
+    boxPlotChartConfiguration_fieldWells,
+    boxPlotChartConfiguration_legend,
+    boxPlotChartConfiguration_primaryYAxisDisplayOptions,
+    boxPlotChartConfiguration_primaryYAxisLabelOptions,
+    boxPlotChartConfiguration_referenceLines,
+    boxPlotChartConfiguration_sortConfiguration,
+    boxPlotChartConfiguration_tooltip,
+    boxPlotChartConfiguration_visualPalette,
+
+    -- ** BoxPlotFieldWells
+    boxPlotFieldWells_boxPlotAggregatedFieldWells,
+
+    -- ** BoxPlotOptions
+    boxPlotOptions_allDataPointsVisibility,
+    boxPlotOptions_outlierVisibility,
+    boxPlotOptions_styleOptions,
+
+    -- ** BoxPlotSortConfiguration
+    boxPlotSortConfiguration_categorySort,
+    boxPlotSortConfiguration_paginationConfiguration,
+
+    -- ** BoxPlotStyleOptions
+    boxPlotStyleOptions_fillStyle,
+
+    -- ** BoxPlotVisual
+    boxPlotVisual_actions,
+    boxPlotVisual_chartConfiguration,
+    boxPlotVisual_columnHierarchies,
+    boxPlotVisual_subtitle,
+    boxPlotVisual_title,
+    boxPlotVisual_visualId,
+
+    -- ** CalculatedColumn
+    calculatedColumn_columnName,
+    calculatedColumn_columnId,
+    calculatedColumn_expression,
+
+    -- ** CalculatedField
+    calculatedField_dataSetIdentifier,
+    calculatedField_name,
+    calculatedField_expression,
+
+    -- ** CalculatedMeasureField
+    calculatedMeasureField_fieldId,
+    calculatedMeasureField_expression,
+
+    -- ** CascadingControlConfiguration
+    cascadingControlConfiguration_sourceControls,
+
+    -- ** CascadingControlSource
+    cascadingControlSource_columnToMatch,
+    cascadingControlSource_sourceSheetControlId,
+
+    -- ** CastColumnTypeOperation
+    castColumnTypeOperation_format,
+    castColumnTypeOperation_columnName,
+    castColumnTypeOperation_newColumnType,
+
+    -- ** CategoricalDimensionField
+    categoricalDimensionField_formatConfiguration,
+    categoricalDimensionField_hierarchyId,
+    categoricalDimensionField_fieldId,
+    categoricalDimensionField_column,
+
+    -- ** CategoricalMeasureField
+    categoricalMeasureField_aggregationFunction,
+    categoricalMeasureField_formatConfiguration,
+    categoricalMeasureField_fieldId,
+    categoricalMeasureField_column,
+
+    -- ** CategoryDrillDownFilter
+    categoryDrillDownFilter_column,
+    categoryDrillDownFilter_categoryValues,
+
+    -- ** CategoryFilter
+    categoryFilter_configuration,
+    categoryFilter_filterId,
+    categoryFilter_column,
+
+    -- ** CategoryFilterConfiguration
+    categoryFilterConfiguration_customFilterConfiguration,
+    categoryFilterConfiguration_customFilterListConfiguration,
+    categoryFilterConfiguration_filterListConfiguration,
+
+    -- ** ChartAxisLabelOptions
+    chartAxisLabelOptions_axisLabelOptions,
+    chartAxisLabelOptions_sortIconVisibility,
+    chartAxisLabelOptions_visibility,
+
+    -- ** ClusterMarker
+    clusterMarker_simpleClusterMarker,
+
+    -- ** ClusterMarkerConfiguration
+    clusterMarkerConfiguration_clusterMarker,
+
+    -- ** ColorScale
+    colorScale_nullValueColor,
+    colorScale_colors,
+    colorScale_colorFillType,
+
+    -- ** ColumnConfiguration
+    columnConfiguration_formatConfiguration,
+    columnConfiguration_role,
+    columnConfiguration_column,
+
+    -- ** ColumnDescription
+    columnDescription_text,
+
+    -- ** ColumnGroup
+    columnGroup_geoSpatialColumnGroup,
+
+    -- ** ColumnGroupColumnSchema
+    columnGroupColumnSchema_name,
+
+    -- ** ColumnGroupSchema
+    columnGroupSchema_columnGroupColumnSchemaList,
+    columnGroupSchema_name,
+
+    -- ** ColumnHierarchy
+    columnHierarchy_dateTimeHierarchy,
+    columnHierarchy_explicitHierarchy,
+    columnHierarchy_predefinedHierarchy,
+
+    -- ** ColumnIdentifier
+    columnIdentifier_dataSetIdentifier,
+    columnIdentifier_columnName,
+
+    -- ** ColumnLevelPermissionRule
+    columnLevelPermissionRule_columnNames,
+    columnLevelPermissionRule_principals,
+
+    -- ** ColumnSchema
+    columnSchema_dataType,
+    columnSchema_geographicRole,
+    columnSchema_name,
+
+    -- ** ColumnSort
+    columnSort_aggregationFunction,
+    columnSort_sortBy,
+    columnSort_direction,
+
+    -- ** ColumnTag
+    columnTag_columnDescription,
+    columnTag_columnGeographicRole,
+
+    -- ** ColumnTooltipItem
+    columnTooltipItem_aggregation,
+    columnTooltipItem_label,
+    columnTooltipItem_visibility,
+    columnTooltipItem_column,
+
+    -- ** ComboChartAggregatedFieldWells
+    comboChartAggregatedFieldWells_barValues,
+    comboChartAggregatedFieldWells_category,
+    comboChartAggregatedFieldWells_colors,
+    comboChartAggregatedFieldWells_lineValues,
+
+    -- ** ComboChartConfiguration
+    comboChartConfiguration_barDataLabels,
+    comboChartConfiguration_barsArrangement,
+    comboChartConfiguration_categoryAxis,
+    comboChartConfiguration_categoryLabelOptions,
+    comboChartConfiguration_colorLabelOptions,
+    comboChartConfiguration_fieldWells,
+    comboChartConfiguration_legend,
+    comboChartConfiguration_lineDataLabels,
+    comboChartConfiguration_primaryYAxisDisplayOptions,
+    comboChartConfiguration_primaryYAxisLabelOptions,
+    comboChartConfiguration_referenceLines,
+    comboChartConfiguration_secondaryYAxisDisplayOptions,
+    comboChartConfiguration_secondaryYAxisLabelOptions,
+    comboChartConfiguration_sortConfiguration,
+    comboChartConfiguration_tooltip,
+    comboChartConfiguration_visualPalette,
+
+    -- ** ComboChartFieldWells
+    comboChartFieldWells_comboChartAggregatedFieldWells,
+
+    -- ** ComboChartSortConfiguration
+    comboChartSortConfiguration_categoryItemsLimit,
+    comboChartSortConfiguration_categorySort,
+    comboChartSortConfiguration_colorItemsLimit,
+    comboChartSortConfiguration_colorSort,
+
+    -- ** ComboChartVisual
+    comboChartVisual_actions,
+    comboChartVisual_chartConfiguration,
+    comboChartVisual_columnHierarchies,
+    comboChartVisual_subtitle,
+    comboChartVisual_title,
+    comboChartVisual_visualId,
+
+    -- ** ComparisonConfiguration
+    comparisonConfiguration_comparisonFormat,
+    comparisonConfiguration_comparisonMethod,
+
+    -- ** ComparisonFormatConfiguration
+    comparisonFormatConfiguration_numberDisplayFormatConfiguration,
+    comparisonFormatConfiguration_percentageDisplayFormatConfiguration,
+
+    -- ** Computation
+    computation_forecast,
+    computation_growthRate,
+    computation_maximumMinimum,
+    computation_metricComparison,
+    computation_periodOverPeriod,
+    computation_periodToDate,
+    computation_topBottomMovers,
+    computation_topBottomRanked,
+    computation_totalAggregation,
+    computation_uniqueValues,
+
+    -- ** ConditionalFormattingColor
+    conditionalFormattingColor_gradient,
+    conditionalFormattingColor_solid,
+
+    -- ** ConditionalFormattingCustomIconCondition
+    conditionalFormattingCustomIconCondition_color,
+    conditionalFormattingCustomIconCondition_displayConfiguration,
+    conditionalFormattingCustomIconCondition_expression,
+    conditionalFormattingCustomIconCondition_iconOptions,
+
+    -- ** ConditionalFormattingCustomIconOptions
+    conditionalFormattingCustomIconOptions_icon,
+    conditionalFormattingCustomIconOptions_unicodeIcon,
+
+    -- ** ConditionalFormattingGradientColor
+    conditionalFormattingGradientColor_expression,
+    conditionalFormattingGradientColor_color,
+
+    -- ** ConditionalFormattingIcon
+    conditionalFormattingIcon_customCondition,
+    conditionalFormattingIcon_iconSet,
+
+    -- ** ConditionalFormattingIconDisplayConfiguration
+    conditionalFormattingIconDisplayConfiguration_iconDisplayOption,
+
+    -- ** ConditionalFormattingIconSet
+    conditionalFormattingIconSet_iconSetType,
+    conditionalFormattingIconSet_expression,
+
+    -- ** ConditionalFormattingSolidColor
+    conditionalFormattingSolidColor_color,
+    conditionalFormattingSolidColor_expression,
+
+    -- ** ContributionAnalysisDefault
+    contributionAnalysisDefault_measureFieldId,
+    contributionAnalysisDefault_contributorDimensions,
+
+    -- ** CreateColumnsOperation
+    createColumnsOperation_columns,
+
+    -- ** CredentialPair
+    credentialPair_alternateDataSourceParameters,
+    credentialPair_username,
+    credentialPair_password,
+
+    -- ** CurrencyDisplayFormatConfiguration
+    currencyDisplayFormatConfiguration_decimalPlacesConfiguration,
+    currencyDisplayFormatConfiguration_negativeValueConfiguration,
+    currencyDisplayFormatConfiguration_nullValueFormatConfiguration,
+    currencyDisplayFormatConfiguration_numberScale,
+    currencyDisplayFormatConfiguration_prefix,
+    currencyDisplayFormatConfiguration_separatorConfiguration,
+    currencyDisplayFormatConfiguration_suffix,
+    currencyDisplayFormatConfiguration_symbol,
+
+    -- ** CustomActionFilterOperation
+    customActionFilterOperation_selectedFieldsConfiguration,
+    customActionFilterOperation_targetVisualsConfiguration,
+
+    -- ** CustomActionNavigationOperation
+    customActionNavigationOperation_localNavigationConfiguration,
+
+    -- ** CustomActionSetParametersOperation
+    customActionSetParametersOperation_parameterValueConfigurations,
+
+    -- ** CustomActionURLOperation
+    customActionURLOperation_uRLTemplate,
+    customActionURLOperation_uRLTarget,
+
+    -- ** CustomContentConfiguration
+    customContentConfiguration_contentType,
+    customContentConfiguration_contentUrl,
+    customContentConfiguration_imageScaling,
+
+    -- ** CustomContentVisual
+    customContentVisual_actions,
+    customContentVisual_chartConfiguration,
+    customContentVisual_subtitle,
+    customContentVisual_title,
+    customContentVisual_visualId,
+    customContentVisual_dataSetIdentifier,
+
+    -- ** CustomFilterConfiguration
+    customFilterConfiguration_categoryValue,
+    customFilterConfiguration_parameterName,
+    customFilterConfiguration_selectAllOptions,
+    customFilterConfiguration_matchOperator,
+    customFilterConfiguration_nullOption,
+
+    -- ** CustomFilterListConfiguration
+    customFilterListConfiguration_categoryValues,
+    customFilterListConfiguration_selectAllOptions,
+    customFilterListConfiguration_matchOperator,
+    customFilterListConfiguration_nullOption,
+
+    -- ** CustomNarrativeOptions
+    customNarrativeOptions_narrative,
+
+    -- ** CustomParameterValues
+    customParameterValues_dateTimeValues,
+    customParameterValues_decimalValues,
+    customParameterValues_integerValues,
+    customParameterValues_stringValues,
+
+    -- ** CustomSql
+    customSql_columns,
+    customSql_dataSourceArn,
+    customSql_name,
+    customSql_sqlQuery,
+
+    -- ** CustomValuesConfiguration
+    customValuesConfiguration_includeNullValue,
+    customValuesConfiguration_customValues,
+
+    -- ** Dashboard
+    dashboard_arn,
+    dashboard_createdTime,
+    dashboard_dashboardId,
+    dashboard_lastPublishedTime,
+    dashboard_lastUpdatedTime,
+    dashboard_name,
+    dashboard_version,
+
+    -- ** DashboardError
+    dashboardError_message,
+    dashboardError_type,
+    dashboardError_violatedEntities,
+
+    -- ** DashboardPublishOptions
+    dashboardPublishOptions_adHocFilteringOption,
+    dashboardPublishOptions_exportToCSVOption,
+    dashboardPublishOptions_sheetControlsOption,
+    dashboardPublishOptions_visualPublishOptions,
+
+    -- ** DashboardSearchFilter
+    dashboardSearchFilter_name,
+    dashboardSearchFilter_value,
+    dashboardSearchFilter_operator,
+
+    -- ** DashboardSourceEntity
+    dashboardSourceEntity_sourceTemplate,
+
+    -- ** DashboardSourceTemplate
+    dashboardSourceTemplate_dataSetReferences,
+    dashboardSourceTemplate_arn,
+
+    -- ** DashboardSummary
+    dashboardSummary_arn,
+    dashboardSummary_createdTime,
+    dashboardSummary_dashboardId,
+    dashboardSummary_lastPublishedTime,
+    dashboardSummary_lastUpdatedTime,
+    dashboardSummary_name,
+    dashboardSummary_publishedVersionNumber,
+
+    -- ** DashboardVersion
+    dashboardVersion_arn,
+    dashboardVersion_createdTime,
+    dashboardVersion_dataSetArns,
+    dashboardVersion_description,
+    dashboardVersion_errors,
+    dashboardVersion_sheets,
+    dashboardVersion_sourceEntityArn,
+    dashboardVersion_status,
+    dashboardVersion_themeArn,
+    dashboardVersion_versionNumber,
+
+    -- ** DashboardVersionDefinition
+    dashboardVersionDefinition_analysisDefaults,
+    dashboardVersionDefinition_calculatedFields,
+    dashboardVersionDefinition_columnConfigurations,
+    dashboardVersionDefinition_filterGroups,
+    dashboardVersionDefinition_parameterDeclarations,
+    dashboardVersionDefinition_sheets,
+    dashboardVersionDefinition_dataSetIdentifierDeclarations,
+
+    -- ** DashboardVersionSummary
+    dashboardVersionSummary_arn,
+    dashboardVersionSummary_createdTime,
+    dashboardVersionSummary_description,
+    dashboardVersionSummary_sourceEntityArn,
+    dashboardVersionSummary_status,
+    dashboardVersionSummary_versionNumber,
+
+    -- ** DashboardVisualId
+    dashboardVisualId_dashboardId,
+    dashboardVisualId_sheetId,
+    dashboardVisualId_visualId,
+
+    -- ** DashboardVisualPublishOptions
+    dashboardVisualPublishOptions_exportHiddenFieldsOption,
+
+    -- ** DataColor
+    dataColor_color,
+    dataColor_dataValue,
+
+    -- ** DataColorPalette
+    dataColorPalette_colors,
+    dataColorPalette_emptyFillColor,
+    dataColorPalette_minMaxGradient,
+
+    -- ** DataFieldSeriesItem
+    dataFieldSeriesItem_fieldValue,
+    dataFieldSeriesItem_settings,
+    dataFieldSeriesItem_fieldId,
+    dataFieldSeriesItem_axisBinding,
+
+    -- ** DataLabelOptions
+    dataLabelOptions_categoryLabelVisibility,
+    dataLabelOptions_dataLabelTypes,
+    dataLabelOptions_labelColor,
+    dataLabelOptions_labelContent,
+    dataLabelOptions_labelFontConfiguration,
+    dataLabelOptions_measureLabelVisibility,
+    dataLabelOptions_overlap,
+    dataLabelOptions_position,
+    dataLabelOptions_visibility,
+
+    -- ** DataLabelType
+    dataLabelType_dataPathLabelType,
+    dataLabelType_fieldLabelType,
+    dataLabelType_maximumLabelType,
+    dataLabelType_minimumLabelType,
+    dataLabelType_rangeEndsLabelType,
+
+    -- ** DataPathColor
+    dataPathColor_timeGranularity,
+    dataPathColor_element,
+    dataPathColor_color,
+
+    -- ** DataPathLabelType
+    dataPathLabelType_fieldId,
+    dataPathLabelType_fieldValue,
+    dataPathLabelType_visibility,
+
+    -- ** DataPathSort
+    dataPathSort_direction,
+    dataPathSort_sortPaths,
+
+    -- ** DataPathValue
+    dataPathValue_fieldId,
+    dataPathValue_fieldValue,
+
+    -- ** DataSet
+    dataSet_arn,
+    dataSet_columnGroups,
+    dataSet_columnLevelPermissionRules,
+    dataSet_consumedSpiceCapacityInBytes,
+    dataSet_createdTime,
+    dataSet_dataSetId,
+    dataSet_dataSetUsageConfiguration,
+    dataSet_fieldFolders,
+    dataSet_importMode,
+    dataSet_lastUpdatedTime,
+    dataSet_logicalTableMap,
+    dataSet_name,
+    dataSet_outputColumns,
+    dataSet_physicalTableMap,
+    dataSet_rowLevelPermissionDataSet,
+    dataSet_rowLevelPermissionTagConfiguration,
+
+    -- ** DataSetConfiguration
+    dataSetConfiguration_columnGroupSchemaList,
+    dataSetConfiguration_dataSetSchema,
+    dataSetConfiguration_placeholder,
+
+    -- ** DataSetIdentifierDeclaration
+    dataSetIdentifierDeclaration_identifier,
+    dataSetIdentifierDeclaration_dataSetArn,
+
+    -- ** DataSetReference
+    dataSetReference_dataSetPlaceholder,
+    dataSetReference_dataSetArn,
+
+    -- ** DataSetSchema
+    dataSetSchema_columnSchemaList,
+
+    -- ** DataSetSearchFilter
+    dataSetSearchFilter_operator,
+    dataSetSearchFilter_name,
+    dataSetSearchFilter_value,
+
+    -- ** DataSetSummary
+    dataSetSummary_arn,
+    dataSetSummary_columnLevelPermissionRulesApplied,
+    dataSetSummary_createdTime,
+    dataSetSummary_dataSetId,
+    dataSetSummary_importMode,
+    dataSetSummary_lastUpdatedTime,
+    dataSetSummary_name,
+    dataSetSummary_rowLevelPermissionDataSet,
+    dataSetSummary_rowLevelPermissionTagConfigurationApplied,
+
+    -- ** DataSetUsageConfiguration
+    dataSetUsageConfiguration_disableUseAsDirectQuerySource,
+    dataSetUsageConfiguration_disableUseAsImportedSource,
+
+    -- ** DataSource
+    dataSource_alternateDataSourceParameters,
+    dataSource_arn,
+    dataSource_createdTime,
+    dataSource_dataSourceId,
+    dataSource_dataSourceParameters,
+    dataSource_errorInfo,
+    dataSource_lastUpdatedTime,
+    dataSource_name,
+    dataSource_secretArn,
+    dataSource_sslProperties,
+    dataSource_status,
+    dataSource_type,
+    dataSource_vpcConnectionProperties,
+
+    -- ** DataSourceCredentials
+    dataSourceCredentials_copySourceArn,
+    dataSourceCredentials_credentialPair,
+    dataSourceCredentials_secretArn,
+
+    -- ** DataSourceErrorInfo
+    dataSourceErrorInfo_message,
+    dataSourceErrorInfo_type,
+
+    -- ** DataSourceParameters
+    dataSourceParameters_amazonElasticsearchParameters,
+    dataSourceParameters_amazonOpenSearchParameters,
+    dataSourceParameters_athenaParameters,
+    dataSourceParameters_auroraParameters,
+    dataSourceParameters_auroraPostgreSqlParameters,
+    dataSourceParameters_awsIotAnalyticsParameters,
+    dataSourceParameters_databricksParameters,
+    dataSourceParameters_exasolParameters,
+    dataSourceParameters_jiraParameters,
+    dataSourceParameters_mariaDbParameters,
+    dataSourceParameters_mySqlParameters,
+    dataSourceParameters_oracleParameters,
+    dataSourceParameters_postgreSqlParameters,
+    dataSourceParameters_prestoParameters,
+    dataSourceParameters_rdsParameters,
+    dataSourceParameters_redshiftParameters,
+    dataSourceParameters_s3Parameters,
+    dataSourceParameters_serviceNowParameters,
+    dataSourceParameters_snowflakeParameters,
+    dataSourceParameters_sparkParameters,
+    dataSourceParameters_sqlServerParameters,
+    dataSourceParameters_teradataParameters,
+    dataSourceParameters_twitterParameters,
+
+    -- ** DataSourceSearchFilter
+    dataSourceSearchFilter_operator,
+    dataSourceSearchFilter_name,
+    dataSourceSearchFilter_value,
+
+    -- ** DataSourceSummary
+    dataSourceSummary_arn,
+    dataSourceSummary_createdTime,
+    dataSourceSummary_dataSourceId,
+    dataSourceSummary_lastUpdatedTime,
+    dataSourceSummary_name,
+    dataSourceSummary_type,
+
+    -- ** DatabricksParameters
+    databricksParameters_host,
+    databricksParameters_port,
+    databricksParameters_sqlEndpointPath,
+
+    -- ** DateAxisOptions
+    dateAxisOptions_missingDateVisibility,
+
+    -- ** DateDimensionField
+    dateDimensionField_dateGranularity,
+    dateDimensionField_formatConfiguration,
+    dateDimensionField_hierarchyId,
+    dateDimensionField_fieldId,
+    dateDimensionField_column,
+
+    -- ** DateMeasureField
+    dateMeasureField_aggregationFunction,
+    dateMeasureField_formatConfiguration,
+    dateMeasureField_fieldId,
+    dateMeasureField_column,
+
+    -- ** DateTimeDefaultValues
+    dateTimeDefaultValues_dynamicValue,
+    dateTimeDefaultValues_rollingDate,
+    dateTimeDefaultValues_staticValues,
+
+    -- ** DateTimeFormatConfiguration
+    dateTimeFormatConfiguration_dateTimeFormat,
+    dateTimeFormatConfiguration_nullValueFormatConfiguration,
+    dateTimeFormatConfiguration_numericFormatConfiguration,
+
+    -- ** DateTimeHierarchy
+    dateTimeHierarchy_drillDownFilters,
+    dateTimeHierarchy_hierarchyId,
+
+    -- ** DateTimeParameter
+    dateTimeParameter_name,
+    dateTimeParameter_values,
+
+    -- ** DateTimeParameterDeclaration
+    dateTimeParameterDeclaration_defaultValues,
+    dateTimeParameterDeclaration_timeGranularity,
+    dateTimeParameterDeclaration_valueWhenUnset,
+    dateTimeParameterDeclaration_name,
+
+    -- ** DateTimePickerControlDisplayOptions
+    dateTimePickerControlDisplayOptions_dateTimeFormat,
+    dateTimePickerControlDisplayOptions_titleOptions,
+
+    -- ** DateTimeValueWhenUnsetConfiguration
+    dateTimeValueWhenUnsetConfiguration_customValue,
+    dateTimeValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- ** DecimalDefaultValues
+    decimalDefaultValues_dynamicValue,
+    decimalDefaultValues_staticValues,
+
+    -- ** DecimalParameter
+    decimalParameter_name,
+    decimalParameter_values,
+
+    -- ** DecimalParameterDeclaration
+    decimalParameterDeclaration_defaultValues,
+    decimalParameterDeclaration_valueWhenUnset,
+    decimalParameterDeclaration_parameterValueType,
+    decimalParameterDeclaration_name,
+
+    -- ** DecimalPlacesConfiguration
+    decimalPlacesConfiguration_decimalPlaces,
+
+    -- ** DecimalValueWhenUnsetConfiguration
+    decimalValueWhenUnsetConfiguration_customValue,
+    decimalValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- ** DefaultFreeFormLayoutConfiguration
+    defaultFreeFormLayoutConfiguration_canvasSizeOptions,
+
+    -- ** DefaultGridLayoutConfiguration
+    defaultGridLayoutConfiguration_canvasSizeOptions,
+
+    -- ** DefaultInteractiveLayoutConfiguration
+    defaultInteractiveLayoutConfiguration_freeForm,
+    defaultInteractiveLayoutConfiguration_grid,
+
+    -- ** DefaultNewSheetConfiguration
+    defaultNewSheetConfiguration_interactiveLayoutConfiguration,
+    defaultNewSheetConfiguration_paginatedLayoutConfiguration,
+    defaultNewSheetConfiguration_sheetContentType,
+
+    -- ** DefaultPaginatedLayoutConfiguration
+    defaultPaginatedLayoutConfiguration_sectionBased,
+
+    -- ** DefaultSectionBasedLayoutConfiguration
+    defaultSectionBasedLayoutConfiguration_canvasSizeOptions,
+
+    -- ** DestinationParameterValueConfiguration
+    destinationParameterValueConfiguration_customValuesConfiguration,
+    destinationParameterValueConfiguration_selectAllValueOptions,
+    destinationParameterValueConfiguration_sourceField,
+    destinationParameterValueConfiguration_sourceParameterName,
+
+    -- ** DimensionField
+    dimensionField_categoricalDimensionField,
+    dimensionField_dateDimensionField,
+    dimensionField_numericalDimensionField,
+
+    -- ** DonutCenterOptions
+    donutCenterOptions_labelVisibility,
+
+    -- ** DonutOptions
+    donutOptions_arcOptions,
+    donutOptions_donutCenterOptions,
+
+    -- ** DrillDownFilter
+    drillDownFilter_categoryFilter,
+    drillDownFilter_numericEqualityFilter,
+    drillDownFilter_timeRangeFilter,
+
+    -- ** DropDownControlDisplayOptions
+    dropDownControlDisplayOptions_selectAllOptions,
+    dropDownControlDisplayOptions_titleOptions,
+
+    -- ** DynamicDefaultValue
+    dynamicDefaultValue_groupNameColumn,
+    dynamicDefaultValue_userNameColumn,
+    dynamicDefaultValue_defaultValueColumn,
+
+    -- ** EmptyVisual
+    emptyVisual_actions,
+    emptyVisual_visualId,
+    emptyVisual_dataSetIdentifier,
+
+    -- ** Entity
+    entity_path,
+
+    -- ** ErrorInfo
+    errorInfo_message,
+    errorInfo_type,
+
+    -- ** ExasolParameters
+    exasolParameters_host,
+    exasolParameters_port,
+
+    -- ** ExcludePeriodConfiguration
+    excludePeriodConfiguration_status,
+    excludePeriodConfiguration_amount,
+    excludePeriodConfiguration_granularity,
+
+    -- ** ExplicitHierarchy
+    explicitHierarchy_drillDownFilters,
+    explicitHierarchy_hierarchyId,
+    explicitHierarchy_columns,
+
+    -- ** ExportHiddenFieldsOption
+    exportHiddenFieldsOption_availabilityStatus,
+
+    -- ** ExportToCSVOption
+    exportToCSVOption_availabilityStatus,
+
+    -- ** FieldBasedTooltip
+    fieldBasedTooltip_aggregationVisibility,
+    fieldBasedTooltip_tooltipFields,
+    fieldBasedTooltip_tooltipTitleType,
+
+    -- ** FieldFolder
+    fieldFolder_columns,
+    fieldFolder_description,
+
+    -- ** FieldLabelType
+    fieldLabelType_fieldId,
+    fieldLabelType_visibility,
+
+    -- ** FieldSeriesItem
+    fieldSeriesItem_settings,
+    fieldSeriesItem_fieldId,
+    fieldSeriesItem_axisBinding,
+
+    -- ** FieldSort
+    fieldSort_fieldId,
+    fieldSort_direction,
+
+    -- ** FieldSortOptions
+    fieldSortOptions_columnSort,
+    fieldSortOptions_fieldSort,
+
+    -- ** FieldTooltipItem
+    fieldTooltipItem_label,
+    fieldTooltipItem_visibility,
+    fieldTooltipItem_fieldId,
+
+    -- ** FilledMapAggregatedFieldWells
+    filledMapAggregatedFieldWells_geospatial,
+    filledMapAggregatedFieldWells_values,
+
+    -- ** FilledMapConditionalFormatting
+    filledMapConditionalFormatting_conditionalFormattingOptions,
+
+    -- ** FilledMapConditionalFormattingOption
+    filledMapConditionalFormattingOption_shape,
+
+    -- ** FilledMapConfiguration
+    filledMapConfiguration_fieldWells,
+    filledMapConfiguration_legend,
+    filledMapConfiguration_mapStyleOptions,
+    filledMapConfiguration_sortConfiguration,
+    filledMapConfiguration_tooltip,
+    filledMapConfiguration_windowOptions,
+
+    -- ** FilledMapFieldWells
+    filledMapFieldWells_filledMapAggregatedFieldWells,
+
+    -- ** FilledMapShapeConditionalFormatting
+    filledMapShapeConditionalFormatting_format,
+    filledMapShapeConditionalFormatting_fieldId,
+
+    -- ** FilledMapSortConfiguration
+    filledMapSortConfiguration_categorySort,
+
+    -- ** FilledMapVisual
+    filledMapVisual_actions,
+    filledMapVisual_chartConfiguration,
+    filledMapVisual_columnHierarchies,
+    filledMapVisual_conditionalFormatting,
+    filledMapVisual_subtitle,
+    filledMapVisual_title,
+    filledMapVisual_visualId,
+
+    -- ** Filter
+    filter_categoryFilter,
+    filter_numericEqualityFilter,
+    filter_numericRangeFilter,
+    filter_relativeDatesFilter,
+    filter_timeEqualityFilter,
+    filter_timeRangeFilter,
+    filter_topBottomFilter,
+
+    -- ** FilterControl
+    filterControl_dateTimePicker,
+    filterControl_dropdown,
+    filterControl_list,
+    filterControl_relativeDateTime,
+    filterControl_slider,
+    filterControl_textArea,
+    filterControl_textField,
+
+    -- ** FilterDateTimePickerControl
+    filterDateTimePickerControl_displayOptions,
+    filterDateTimePickerControl_type,
+    filterDateTimePickerControl_filterControlId,
+    filterDateTimePickerControl_title,
+    filterDateTimePickerControl_sourceFilterId,
+
+    -- ** FilterDropDownControl
+    filterDropDownControl_cascadingControlConfiguration,
+    filterDropDownControl_displayOptions,
+    filterDropDownControl_selectableValues,
+    filterDropDownControl_type,
+    filterDropDownControl_filterControlId,
+    filterDropDownControl_title,
+    filterDropDownControl_sourceFilterId,
+
+    -- ** FilterGroup
+    filterGroup_status,
+    filterGroup_filterGroupId,
+    filterGroup_filters,
+    filterGroup_scopeConfiguration,
+    filterGroup_crossDataset,
+
+    -- ** FilterListConfiguration
+    filterListConfiguration_categoryValues,
+    filterListConfiguration_selectAllOptions,
+    filterListConfiguration_matchOperator,
+
+    -- ** FilterListControl
+    filterListControl_cascadingControlConfiguration,
+    filterListControl_displayOptions,
+    filterListControl_selectableValues,
+    filterListControl_type,
+    filterListControl_filterControlId,
+    filterListControl_title,
+    filterListControl_sourceFilterId,
+
+    -- ** FilterOperation
+    filterOperation_conditionExpression,
+
+    -- ** FilterOperationSelectedFieldsConfiguration
+    filterOperationSelectedFieldsConfiguration_selectedFieldOptions,
+    filterOperationSelectedFieldsConfiguration_selectedFields,
+
+    -- ** FilterOperationTargetVisualsConfiguration
+    filterOperationTargetVisualsConfiguration_sameSheetTargetVisualConfiguration,
+
+    -- ** FilterRelativeDateTimeControl
+    filterRelativeDateTimeControl_displayOptions,
+    filterRelativeDateTimeControl_filterControlId,
+    filterRelativeDateTimeControl_title,
+    filterRelativeDateTimeControl_sourceFilterId,
+
+    -- ** FilterScopeConfiguration
+    filterScopeConfiguration_selectedSheets,
+
+    -- ** FilterSelectableValues
+    filterSelectableValues_values,
+
+    -- ** FilterSliderControl
+    filterSliderControl_displayOptions,
+    filterSliderControl_type,
+    filterSliderControl_filterControlId,
+    filterSliderControl_title,
+    filterSliderControl_sourceFilterId,
+    filterSliderControl_maximumValue,
+    filterSliderControl_minimumValue,
+    filterSliderControl_stepSize,
+
+    -- ** FilterTextAreaControl
+    filterTextAreaControl_delimiter,
+    filterTextAreaControl_displayOptions,
+    filterTextAreaControl_filterControlId,
+    filterTextAreaControl_title,
+    filterTextAreaControl_sourceFilterId,
+
+    -- ** FilterTextFieldControl
+    filterTextFieldControl_displayOptions,
+    filterTextFieldControl_filterControlId,
+    filterTextFieldControl_title,
+    filterTextFieldControl_sourceFilterId,
+
+    -- ** Folder
+    folder_arn,
+    folder_createdTime,
+    folder_folderId,
+    folder_folderPath,
+    folder_folderType,
+    folder_lastUpdatedTime,
+    folder_name,
+
+    -- ** FolderMember
+    folderMember_memberId,
+    folderMember_memberType,
+
+    -- ** FolderSearchFilter
+    folderSearchFilter_name,
+    folderSearchFilter_operator,
+    folderSearchFilter_value,
+
+    -- ** FolderSummary
+    folderSummary_arn,
+    folderSummary_createdTime,
+    folderSummary_folderId,
+    folderSummary_folderType,
+    folderSummary_lastUpdatedTime,
+    folderSummary_name,
+
+    -- ** Font
+    font_fontFamily,
+
+    -- ** FontConfiguration
+    fontConfiguration_fontColor,
+    fontConfiguration_fontDecoration,
+    fontConfiguration_fontSize,
+    fontConfiguration_fontStyle,
+    fontConfiguration_fontWeight,
+
+    -- ** FontSize
+    fontSize_relative,
+
+    -- ** FontWeight
+    fontWeight_name,
+
+    -- ** ForecastComputation
+    forecastComputation_customSeasonalityValue,
+    forecastComputation_lowerBoundary,
+    forecastComputation_name,
+    forecastComputation_periodsBackward,
+    forecastComputation_periodsForward,
+    forecastComputation_predictionInterval,
+    forecastComputation_seasonality,
+    forecastComputation_upperBoundary,
+    forecastComputation_value,
+    forecastComputation_computationId,
+    forecastComputation_time,
+
+    -- ** ForecastConfiguration
+    forecastConfiguration_forecastProperties,
+    forecastConfiguration_scenario,
+
+    -- ** ForecastScenario
+    forecastScenario_whatIfPointScenario,
+    forecastScenario_whatIfRangeScenario,
+
+    -- ** FormatConfiguration
+    formatConfiguration_dateTimeFormatConfiguration,
+    formatConfiguration_numberFormatConfiguration,
+    formatConfiguration_stringFormatConfiguration,
+
+    -- ** FreeFormLayoutCanvasSizeOptions
+    freeFormLayoutCanvasSizeOptions_screenCanvasSizeOptions,
+
+    -- ** FreeFormLayoutConfiguration
+    freeFormLayoutConfiguration_canvasSizeOptions,
+    freeFormLayoutConfiguration_elements,
+
+    -- ** FreeFormLayoutElement
+    freeFormLayoutElement_backgroundStyle,
+    freeFormLayoutElement_borderStyle,
+    freeFormLayoutElement_loadingAnimation,
+    freeFormLayoutElement_renderingRules,
+    freeFormLayoutElement_selectedBorderStyle,
+    freeFormLayoutElement_visibility,
+    freeFormLayoutElement_elementId,
+    freeFormLayoutElement_elementType,
+    freeFormLayoutElement_xAxisLocation,
+    freeFormLayoutElement_yAxisLocation,
+    freeFormLayoutElement_width,
+    freeFormLayoutElement_height,
+
+    -- ** FreeFormLayoutElementBackgroundStyle
+    freeFormLayoutElementBackgroundStyle_color,
+    freeFormLayoutElementBackgroundStyle_visibility,
+
+    -- ** FreeFormLayoutElementBorderStyle
+    freeFormLayoutElementBorderStyle_color,
+    freeFormLayoutElementBorderStyle_visibility,
+
+    -- ** FreeFormLayoutScreenCanvasSizeOptions
+    freeFormLayoutScreenCanvasSizeOptions_optimizedViewPortWidth,
+
+    -- ** FreeFormSectionLayoutConfiguration
+    freeFormSectionLayoutConfiguration_elements,
+
+    -- ** FunnelChartAggregatedFieldWells
+    funnelChartAggregatedFieldWells_category,
+    funnelChartAggregatedFieldWells_values,
+
+    -- ** FunnelChartConfiguration
+    funnelChartConfiguration_categoryLabelOptions,
+    funnelChartConfiguration_dataLabelOptions,
+    funnelChartConfiguration_fieldWells,
+    funnelChartConfiguration_sortConfiguration,
+    funnelChartConfiguration_tooltip,
+    funnelChartConfiguration_valueLabelOptions,
+    funnelChartConfiguration_visualPalette,
+
+    -- ** FunnelChartDataLabelOptions
+    funnelChartDataLabelOptions_categoryLabelVisibility,
+    funnelChartDataLabelOptions_labelColor,
+    funnelChartDataLabelOptions_labelFontConfiguration,
+    funnelChartDataLabelOptions_measureDataLabelStyle,
+    funnelChartDataLabelOptions_measureLabelVisibility,
+    funnelChartDataLabelOptions_position,
+    funnelChartDataLabelOptions_visibility,
+
+    -- ** FunnelChartFieldWells
+    funnelChartFieldWells_funnelChartAggregatedFieldWells,
+
+    -- ** FunnelChartSortConfiguration
+    funnelChartSortConfiguration_categoryItemsLimit,
+    funnelChartSortConfiguration_categorySort,
+
+    -- ** FunnelChartVisual
+    funnelChartVisual_actions,
+    funnelChartVisual_chartConfiguration,
+    funnelChartVisual_columnHierarchies,
+    funnelChartVisual_subtitle,
+    funnelChartVisual_title,
+    funnelChartVisual_visualId,
+
+    -- ** GaugeChartArcConditionalFormatting
+    gaugeChartArcConditionalFormatting_foregroundColor,
+
+    -- ** GaugeChartConditionalFormatting
+    gaugeChartConditionalFormatting_conditionalFormattingOptions,
+
+    -- ** GaugeChartConditionalFormattingOption
+    gaugeChartConditionalFormattingOption_arc,
+    gaugeChartConditionalFormattingOption_primaryValue,
+
+    -- ** GaugeChartConfiguration
+    gaugeChartConfiguration_dataLabels,
+    gaugeChartConfiguration_fieldWells,
+    gaugeChartConfiguration_gaugeChartOptions,
+    gaugeChartConfiguration_tooltipOptions,
+    gaugeChartConfiguration_visualPalette,
+
+    -- ** GaugeChartFieldWells
+    gaugeChartFieldWells_targetValues,
+    gaugeChartFieldWells_values,
+
+    -- ** GaugeChartOptions
+    gaugeChartOptions_arc,
+    gaugeChartOptions_arcAxis,
+    gaugeChartOptions_comparison,
+    gaugeChartOptions_primaryValueDisplayType,
+    gaugeChartOptions_primaryValueFontConfiguration,
+
+    -- ** GaugeChartPrimaryValueConditionalFormatting
+    gaugeChartPrimaryValueConditionalFormatting_icon,
+    gaugeChartPrimaryValueConditionalFormatting_textColor,
+
+    -- ** GaugeChartVisual
+    gaugeChartVisual_actions,
+    gaugeChartVisual_chartConfiguration,
+    gaugeChartVisual_conditionalFormatting,
+    gaugeChartVisual_subtitle,
+    gaugeChartVisual_title,
+    gaugeChartVisual_visualId,
+
+    -- ** GeoSpatialColumnGroup
+    geoSpatialColumnGroup_countryCode,
+    geoSpatialColumnGroup_name,
+    geoSpatialColumnGroup_columns,
+
+    -- ** GeospatialCoordinateBounds
+    geospatialCoordinateBounds_north,
+    geospatialCoordinateBounds_south,
+    geospatialCoordinateBounds_west,
+    geospatialCoordinateBounds_east,
+
+    -- ** GeospatialMapAggregatedFieldWells
+    geospatialMapAggregatedFieldWells_colors,
+    geospatialMapAggregatedFieldWells_geospatial,
+    geospatialMapAggregatedFieldWells_values,
+
+    -- ** GeospatialMapConfiguration
+    geospatialMapConfiguration_fieldWells,
+    geospatialMapConfiguration_legend,
+    geospatialMapConfiguration_mapStyleOptions,
+    geospatialMapConfiguration_pointStyleOptions,
+    geospatialMapConfiguration_tooltip,
+    geospatialMapConfiguration_visualPalette,
+    geospatialMapConfiguration_windowOptions,
+
+    -- ** GeospatialMapFieldWells
+    geospatialMapFieldWells_geospatialMapAggregatedFieldWells,
+
+    -- ** GeospatialMapStyleOptions
+    geospatialMapStyleOptions_baseMapStyle,
+
+    -- ** GeospatialMapVisual
+    geospatialMapVisual_actions,
+    geospatialMapVisual_chartConfiguration,
+    geospatialMapVisual_columnHierarchies,
+    geospatialMapVisual_subtitle,
+    geospatialMapVisual_title,
+    geospatialMapVisual_visualId,
+
+    -- ** GeospatialPointStyleOptions
+    geospatialPointStyleOptions_clusterMarkerConfiguration,
+    geospatialPointStyleOptions_selectedPointStyle,
+
+    -- ** GeospatialWindowOptions
+    geospatialWindowOptions_bounds,
+    geospatialWindowOptions_mapZoomMode,
+
+    -- ** GlobalTableBorderOptions
+    globalTableBorderOptions_sideSpecificBorder,
+    globalTableBorderOptions_uniformBorder,
+
+    -- ** GradientColor
+    gradientColor_stops,
+
+    -- ** GradientStop
+    gradientStop_color,
+    gradientStop_dataValue,
+    gradientStop_gradientOffset,
+
+    -- ** GridLayoutCanvasSizeOptions
+    gridLayoutCanvasSizeOptions_screenCanvasSizeOptions,
+
+    -- ** GridLayoutConfiguration
+    gridLayoutConfiguration_canvasSizeOptions,
+    gridLayoutConfiguration_elements,
+
+    -- ** GridLayoutElement
+    gridLayoutElement_columnIndex,
+    gridLayoutElement_rowIndex,
+    gridLayoutElement_elementId,
+    gridLayoutElement_elementType,
+    gridLayoutElement_columnSpan,
+    gridLayoutElement_rowSpan,
+
+    -- ** GridLayoutScreenCanvasSizeOptions
+    gridLayoutScreenCanvasSizeOptions_optimizedViewPortWidth,
+    gridLayoutScreenCanvasSizeOptions_resizeOption,
+
+    -- ** Group
+    group_arn,
+    group_description,
+    group_groupName,
+    group_principalId,
+
+    -- ** GroupMember
+    groupMember_arn,
+    groupMember_memberName,
+
+    -- ** GroupSearchFilter
+    groupSearchFilter_operator,
+    groupSearchFilter_name,
+    groupSearchFilter_value,
+
+    -- ** GrowthRateComputation
+    growthRateComputation_name,
+    growthRateComputation_periodSize,
+    growthRateComputation_value,
+    growthRateComputation_computationId,
+    growthRateComputation_time,
+
+    -- ** GutterStyle
+    gutterStyle_show,
+
+    -- ** HeaderFooterSectionConfiguration
+    headerFooterSectionConfiguration_style,
+    headerFooterSectionConfiguration_sectionId,
+    headerFooterSectionConfiguration_layout,
+
+    -- ** HeatMapAggregatedFieldWells
+    heatMapAggregatedFieldWells_columns,
+    heatMapAggregatedFieldWells_rows,
+    heatMapAggregatedFieldWells_values,
+
+    -- ** HeatMapConfiguration
+    heatMapConfiguration_colorScale,
+    heatMapConfiguration_columnLabelOptions,
+    heatMapConfiguration_dataLabels,
+    heatMapConfiguration_fieldWells,
+    heatMapConfiguration_legend,
+    heatMapConfiguration_rowLabelOptions,
+    heatMapConfiguration_sortConfiguration,
+    heatMapConfiguration_tooltip,
+
+    -- ** HeatMapFieldWells
+    heatMapFieldWells_heatMapAggregatedFieldWells,
+
+    -- ** HeatMapSortConfiguration
+    heatMapSortConfiguration_heatMapColumnItemsLimitConfiguration,
+    heatMapSortConfiguration_heatMapColumnSort,
+    heatMapSortConfiguration_heatMapRowItemsLimitConfiguration,
+    heatMapSortConfiguration_heatMapRowSort,
+
+    -- ** HeatMapVisual
+    heatMapVisual_actions,
+    heatMapVisual_chartConfiguration,
+    heatMapVisual_columnHierarchies,
+    heatMapVisual_subtitle,
+    heatMapVisual_title,
+    heatMapVisual_visualId,
+
+    -- ** HistogramAggregatedFieldWells
+    histogramAggregatedFieldWells_values,
+
+    -- ** HistogramBinOptions
+    histogramBinOptions_binCount,
+    histogramBinOptions_binWidth,
+    histogramBinOptions_selectedBinType,
+    histogramBinOptions_startValue,
+
+    -- ** HistogramConfiguration
+    histogramConfiguration_binOptions,
+    histogramConfiguration_dataLabels,
+    histogramConfiguration_fieldWells,
+    histogramConfiguration_tooltip,
+    histogramConfiguration_visualPalette,
+    histogramConfiguration_xAxisDisplayOptions,
+    histogramConfiguration_xAxisLabelOptions,
+    histogramConfiguration_yAxisDisplayOptions,
+
+    -- ** HistogramFieldWells
+    histogramFieldWells_histogramAggregatedFieldWells,
+
+    -- ** HistogramVisual
+    histogramVisual_actions,
+    histogramVisual_chartConfiguration,
+    histogramVisual_subtitle,
+    histogramVisual_title,
+    histogramVisual_visualId,
+
+    -- ** IAMPolicyAssignment
+    iAMPolicyAssignment_assignmentId,
+    iAMPolicyAssignment_assignmentName,
+    iAMPolicyAssignment_assignmentStatus,
+    iAMPolicyAssignment_awsAccountId,
+    iAMPolicyAssignment_identities,
+    iAMPolicyAssignment_policyArn,
+
+    -- ** IAMPolicyAssignmentSummary
+    iAMPolicyAssignmentSummary_assignmentName,
+    iAMPolicyAssignmentSummary_assignmentStatus,
+
+    -- ** Ingestion
+    ingestion_errorInfo,
+    ingestion_ingestionId,
+    ingestion_ingestionSizeInBytes,
+    ingestion_ingestionTimeInSeconds,
+    ingestion_queueInfo,
+    ingestion_requestSource,
+    ingestion_requestType,
+    ingestion_rowInfo,
+    ingestion_arn,
+    ingestion_ingestionStatus,
+    ingestion_createdTime,
+
+    -- ** InputColumn
+    inputColumn_name,
+    inputColumn_type,
+
+    -- ** InsightConfiguration
+    insightConfiguration_computations,
+    insightConfiguration_customNarrative,
+
+    -- ** InsightVisual
+    insightVisual_actions,
+    insightVisual_insightConfiguration,
+    insightVisual_subtitle,
+    insightVisual_title,
+    insightVisual_visualId,
+    insightVisual_dataSetIdentifier,
+
+    -- ** IntegerDefaultValues
+    integerDefaultValues_dynamicValue,
+    integerDefaultValues_staticValues,
+
+    -- ** IntegerParameter
+    integerParameter_name,
+    integerParameter_values,
+
+    -- ** IntegerParameterDeclaration
+    integerParameterDeclaration_defaultValues,
+    integerParameterDeclaration_valueWhenUnset,
+    integerParameterDeclaration_parameterValueType,
+    integerParameterDeclaration_name,
+
+    -- ** IntegerValueWhenUnsetConfiguration
+    integerValueWhenUnsetConfiguration_customValue,
+    integerValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- ** ItemsLimitConfiguration
+    itemsLimitConfiguration_itemsLimit,
+    itemsLimitConfiguration_otherCategories,
+
+    -- ** JiraParameters
+    jiraParameters_siteBaseUrl,
+
+    -- ** JoinInstruction
+    joinInstruction_leftJoinKeyProperties,
+    joinInstruction_rightJoinKeyProperties,
+    joinInstruction_leftOperand,
+    joinInstruction_rightOperand,
+    joinInstruction_type,
+    joinInstruction_onClause,
+
+    -- ** JoinKeyProperties
+    joinKeyProperties_uniqueKey,
+
+    -- ** KPIConditionalFormatting
+    kPIConditionalFormatting_conditionalFormattingOptions,
+
+    -- ** KPIConditionalFormattingOption
+    kPIConditionalFormattingOption_primaryValue,
+    kPIConditionalFormattingOption_progressBar,
+
+    -- ** KPIConfiguration
+    kPIConfiguration_fieldWells,
+    kPIConfiguration_kPIOptions,
+    kPIConfiguration_sortConfiguration,
+
+    -- ** KPIFieldWells
+    kPIFieldWells_targetValues,
+    kPIFieldWells_trendGroups,
+    kPIFieldWells_values,
+
+    -- ** KPIOptions
+    kPIOptions_comparison,
+    kPIOptions_primaryValueDisplayType,
+    kPIOptions_primaryValueFontConfiguration,
+    kPIOptions_progressBar,
+    kPIOptions_secondaryValue,
+    kPIOptions_secondaryValueFontConfiguration,
+    kPIOptions_trendArrows,
+
+    -- ** KPIPrimaryValueConditionalFormatting
+    kPIPrimaryValueConditionalFormatting_icon,
+    kPIPrimaryValueConditionalFormatting_textColor,
+
+    -- ** KPIProgressBarConditionalFormatting
+    kPIProgressBarConditionalFormatting_foregroundColor,
+
+    -- ** KPISortConfiguration
+    kPISortConfiguration_trendGroupSort,
+
+    -- ** KPIVisual
+    kPIVisual_actions,
+    kPIVisual_chartConfiguration,
+    kPIVisual_columnHierarchies,
+    kPIVisual_conditionalFormatting,
+    kPIVisual_subtitle,
+    kPIVisual_title,
+    kPIVisual_visualId,
+
+    -- ** LabelOptions
+    labelOptions_customLabel,
+    labelOptions_fontConfiguration,
+    labelOptions_visibility,
+
+    -- ** Layout
+    layout_configuration,
+
+    -- ** LayoutConfiguration
+    layoutConfiguration_freeFormLayout,
+    layoutConfiguration_gridLayout,
+    layoutConfiguration_sectionBasedLayout,
+
+    -- ** LegendOptions
+    legendOptions_height,
+    legendOptions_position,
+    legendOptions_title,
+    legendOptions_visibility,
+    legendOptions_width,
+
+    -- ** LineChartAggregatedFieldWells
+    lineChartAggregatedFieldWells_category,
+    lineChartAggregatedFieldWells_colors,
+    lineChartAggregatedFieldWells_smallMultiples,
+    lineChartAggregatedFieldWells_values,
+
+    -- ** LineChartConfiguration
+    lineChartConfiguration_contributionAnalysisDefaults,
+    lineChartConfiguration_dataLabels,
+    lineChartConfiguration_defaultSeriesSettings,
+    lineChartConfiguration_fieldWells,
+    lineChartConfiguration_forecastConfigurations,
+    lineChartConfiguration_legend,
+    lineChartConfiguration_primaryYAxisDisplayOptions,
+    lineChartConfiguration_primaryYAxisLabelOptions,
+    lineChartConfiguration_referenceLines,
+    lineChartConfiguration_secondaryYAxisDisplayOptions,
+    lineChartConfiguration_secondaryYAxisLabelOptions,
+    lineChartConfiguration_series,
+    lineChartConfiguration_smallMultiplesOptions,
+    lineChartConfiguration_sortConfiguration,
+    lineChartConfiguration_tooltip,
+    lineChartConfiguration_type,
+    lineChartConfiguration_visualPalette,
+    lineChartConfiguration_xAxisDisplayOptions,
+    lineChartConfiguration_xAxisLabelOptions,
+
+    -- ** LineChartDefaultSeriesSettings
+    lineChartDefaultSeriesSettings_axisBinding,
+    lineChartDefaultSeriesSettings_lineStyleSettings,
+    lineChartDefaultSeriesSettings_markerStyleSettings,
+
+    -- ** LineChartFieldWells
+    lineChartFieldWells_lineChartAggregatedFieldWells,
+
+    -- ** LineChartLineStyleSettings
+    lineChartLineStyleSettings_lineInterpolation,
+    lineChartLineStyleSettings_lineStyle,
+    lineChartLineStyleSettings_lineVisibility,
+    lineChartLineStyleSettings_lineWidth,
+
+    -- ** LineChartMarkerStyleSettings
+    lineChartMarkerStyleSettings_markerColor,
+    lineChartMarkerStyleSettings_markerShape,
+    lineChartMarkerStyleSettings_markerSize,
+    lineChartMarkerStyleSettings_markerVisibility,
+
+    -- ** LineChartSeriesSettings
+    lineChartSeriesSettings_lineStyleSettings,
+    lineChartSeriesSettings_markerStyleSettings,
+
+    -- ** LineChartSortConfiguration
+    lineChartSortConfiguration_categoryItemsLimitConfiguration,
+    lineChartSortConfiguration_categorySort,
+    lineChartSortConfiguration_colorItemsLimitConfiguration,
+    lineChartSortConfiguration_smallMultiplesLimitConfiguration,
+    lineChartSortConfiguration_smallMultiplesSort,
+
+    -- ** LineChartVisual
+    lineChartVisual_actions,
+    lineChartVisual_chartConfiguration,
+    lineChartVisual_columnHierarchies,
+    lineChartVisual_subtitle,
+    lineChartVisual_title,
+    lineChartVisual_visualId,
+
+    -- ** LineSeriesAxisDisplayOptions
+    lineSeriesAxisDisplayOptions_axisOptions,
+    lineSeriesAxisDisplayOptions_missingDataConfigurations,
+
+    -- ** LinkSharingConfiguration
+    linkSharingConfiguration_permissions,
+
+    -- ** ListControlDisplayOptions
+    listControlDisplayOptions_searchOptions,
+    listControlDisplayOptions_selectAllOptions,
+    listControlDisplayOptions_titleOptions,
+
+    -- ** ListControlSearchOptions
+    listControlSearchOptions_visibility,
+
+    -- ** ListControlSelectAllOptions
+    listControlSelectAllOptions_visibility,
+
+    -- ** LoadingAnimation
+    loadingAnimation_visibility,
+
+    -- ** LocalNavigationConfiguration
+    localNavigationConfiguration_targetSheetId,
+
+    -- ** LogicalTable
+    logicalTable_dataTransforms,
+    logicalTable_alias,
+    logicalTable_source,
+
+    -- ** LogicalTableSource
+    logicalTableSource_dataSetArn,
+    logicalTableSource_joinInstruction,
+    logicalTableSource_physicalTableId,
+
+    -- ** LongFormatText
+    longFormatText_plainText,
+    longFormatText_richText,
+
+    -- ** ManifestFileLocation
+    manifestFileLocation_bucket,
+    manifestFileLocation_key,
+
+    -- ** MarginStyle
+    marginStyle_show,
+
+    -- ** MariaDbParameters
+    mariaDbParameters_host,
+    mariaDbParameters_port,
+    mariaDbParameters_database,
+
+    -- ** MaximumLabelType
+    maximumLabelType_visibility,
+
+    -- ** MaximumMinimumComputation
+    maximumMinimumComputation_name,
+    maximumMinimumComputation_value,
+    maximumMinimumComputation_computationId,
+    maximumMinimumComputation_time,
+    maximumMinimumComputation_type,
+
+    -- ** MeasureField
+    measureField_calculatedMeasureField,
+    measureField_categoricalMeasureField,
+    measureField_dateMeasureField,
+    measureField_numericalMeasureField,
+
+    -- ** MemberIdArnPair
+    memberIdArnPair_memberArn,
+    memberIdArnPair_memberId,
+
+    -- ** MetricComparisonComputation
+    metricComparisonComputation_name,
+    metricComparisonComputation_computationId,
+    metricComparisonComputation_time,
+    metricComparisonComputation_fromValue,
+    metricComparisonComputation_targetValue,
+
+    -- ** MinimumLabelType
+    minimumLabelType_visibility,
+
+    -- ** MissingDataConfiguration
+    missingDataConfiguration_treatmentOption,
+
+    -- ** MySqlParameters
+    mySqlParameters_host,
+    mySqlParameters_port,
+    mySqlParameters_database,
+
+    -- ** NamespaceError
+    namespaceError_message,
+    namespaceError_type,
+
+    -- ** NamespaceInfoV2
+    namespaceInfoV2_arn,
+    namespaceInfoV2_capacityRegion,
+    namespaceInfoV2_creationStatus,
+    namespaceInfoV2_identityStore,
+    namespaceInfoV2_name,
+    namespaceInfoV2_namespaceError,
+
+    -- ** NegativeValueConfiguration
+    negativeValueConfiguration_displayMode,
+
+    -- ** NullValueFormatConfiguration
+    nullValueFormatConfiguration_nullString,
+
+    -- ** NumberDisplayFormatConfiguration
+    numberDisplayFormatConfiguration_decimalPlacesConfiguration,
+    numberDisplayFormatConfiguration_negativeValueConfiguration,
+    numberDisplayFormatConfiguration_nullValueFormatConfiguration,
+    numberDisplayFormatConfiguration_numberScale,
+    numberDisplayFormatConfiguration_prefix,
+    numberDisplayFormatConfiguration_separatorConfiguration,
+    numberDisplayFormatConfiguration_suffix,
+
+    -- ** NumberFormatConfiguration
+    numberFormatConfiguration_formatConfiguration,
+
+    -- ** NumericAxisOptions
+    numericAxisOptions_range,
+    numericAxisOptions_scale,
+
+    -- ** NumericEqualityDrillDownFilter
+    numericEqualityDrillDownFilter_column,
+    numericEqualityDrillDownFilter_value,
+
+    -- ** NumericEqualityFilter
+    numericEqualityFilter_aggregationFunction,
+    numericEqualityFilter_parameterName,
+    numericEqualityFilter_selectAllOptions,
+    numericEqualityFilter_value,
+    numericEqualityFilter_filterId,
+    numericEqualityFilter_column,
+    numericEqualityFilter_matchOperator,
+    numericEqualityFilter_nullOption,
+
+    -- ** NumericFormatConfiguration
+    numericFormatConfiguration_currencyDisplayFormatConfiguration,
+    numericFormatConfiguration_numberDisplayFormatConfiguration,
+    numericFormatConfiguration_percentageDisplayFormatConfiguration,
+
+    -- ** NumericRangeFilter
+    numericRangeFilter_aggregationFunction,
+    numericRangeFilter_includeMaximum,
+    numericRangeFilter_includeMinimum,
+    numericRangeFilter_rangeMaximum,
+    numericRangeFilter_rangeMinimum,
+    numericRangeFilter_selectAllOptions,
+    numericRangeFilter_filterId,
+    numericRangeFilter_column,
+    numericRangeFilter_nullOption,
+
+    -- ** NumericRangeFilterValue
+    numericRangeFilterValue_parameter,
+    numericRangeFilterValue_staticValue,
+
+    -- ** NumericSeparatorConfiguration
+    numericSeparatorConfiguration_decimalSeparator,
+    numericSeparatorConfiguration_thousandsSeparator,
+
+    -- ** NumericalAggregationFunction
+    numericalAggregationFunction_percentileAggregation,
+    numericalAggregationFunction_simpleNumericalAggregation,
+
+    -- ** NumericalDimensionField
+    numericalDimensionField_formatConfiguration,
+    numericalDimensionField_hierarchyId,
+    numericalDimensionField_fieldId,
+    numericalDimensionField_column,
+
+    -- ** NumericalMeasureField
+    numericalMeasureField_aggregationFunction,
+    numericalMeasureField_formatConfiguration,
+    numericalMeasureField_fieldId,
+    numericalMeasureField_column,
+
+    -- ** OracleParameters
+    oracleParameters_host,
+    oracleParameters_port,
+    oracleParameters_database,
+
+    -- ** OutputColumn
+    outputColumn_description,
+    outputColumn_name,
+    outputColumn_type,
+
+    -- ** PaginationConfiguration
+    paginationConfiguration_pageSize,
+    paginationConfiguration_pageNumber,
+
+    -- ** PanelConfiguration
+    panelConfiguration_backgroundColor,
+    panelConfiguration_backgroundVisibility,
+    panelConfiguration_borderColor,
+    panelConfiguration_borderStyle,
+    panelConfiguration_borderThickness,
+    panelConfiguration_borderVisibility,
+    panelConfiguration_gutterSpacing,
+    panelConfiguration_gutterVisibility,
+    panelConfiguration_title,
+
+    -- ** PanelTitleOptions
+    panelTitleOptions_fontConfiguration,
+    panelTitleOptions_horizontalTextAlignment,
+    panelTitleOptions_visibility,
+
+    -- ** ParameterControl
+    parameterControl_dateTimePicker,
+    parameterControl_dropdown,
+    parameterControl_list,
+    parameterControl_slider,
+    parameterControl_textArea,
+    parameterControl_textField,
+
+    -- ** ParameterDateTimePickerControl
+    parameterDateTimePickerControl_displayOptions,
+    parameterDateTimePickerControl_parameterControlId,
+    parameterDateTimePickerControl_title,
+    parameterDateTimePickerControl_sourceParameterName,
+
+    -- ** ParameterDeclaration
+    parameterDeclaration_dateTimeParameterDeclaration,
+    parameterDeclaration_decimalParameterDeclaration,
+    parameterDeclaration_integerParameterDeclaration,
+    parameterDeclaration_stringParameterDeclaration,
+
+    -- ** ParameterDropDownControl
+    parameterDropDownControl_cascadingControlConfiguration,
+    parameterDropDownControl_displayOptions,
+    parameterDropDownControl_selectableValues,
+    parameterDropDownControl_type,
+    parameterDropDownControl_parameterControlId,
+    parameterDropDownControl_title,
+    parameterDropDownControl_sourceParameterName,
+
+    -- ** ParameterListControl
+    parameterListControl_cascadingControlConfiguration,
+    parameterListControl_displayOptions,
+    parameterListControl_selectableValues,
+    parameterListControl_type,
+    parameterListControl_parameterControlId,
+    parameterListControl_title,
+    parameterListControl_sourceParameterName,
+
+    -- ** ParameterSelectableValues
+    parameterSelectableValues_linkToDataSetColumn,
+    parameterSelectableValues_values,
+
+    -- ** ParameterSliderControl
+    parameterSliderControl_displayOptions,
+    parameterSliderControl_parameterControlId,
+    parameterSliderControl_title,
+    parameterSliderControl_sourceParameterName,
+    parameterSliderControl_maximumValue,
+    parameterSliderControl_minimumValue,
+    parameterSliderControl_stepSize,
+
+    -- ** ParameterTextAreaControl
+    parameterTextAreaControl_delimiter,
+    parameterTextAreaControl_displayOptions,
+    parameterTextAreaControl_parameterControlId,
+    parameterTextAreaControl_title,
+    parameterTextAreaControl_sourceParameterName,
+
+    -- ** ParameterTextFieldControl
+    parameterTextFieldControl_displayOptions,
+    parameterTextFieldControl_parameterControlId,
+    parameterTextFieldControl_title,
+    parameterTextFieldControl_sourceParameterName,
+
+    -- ** Parameters
+    parameters_dateTimeParameters,
+    parameters_decimalParameters,
+    parameters_integerParameters,
+    parameters_stringParameters,
+
+    -- ** PercentVisibleRange
+    percentVisibleRange_from,
+    percentVisibleRange_to,
+
+    -- ** PercentageDisplayFormatConfiguration
+    percentageDisplayFormatConfiguration_decimalPlacesConfiguration,
+    percentageDisplayFormatConfiguration_negativeValueConfiguration,
+    percentageDisplayFormatConfiguration_nullValueFormatConfiguration,
+    percentageDisplayFormatConfiguration_prefix,
+    percentageDisplayFormatConfiguration_separatorConfiguration,
+    percentageDisplayFormatConfiguration_suffix,
+
+    -- ** PercentileAggregation
+    percentileAggregation_percentileValue,
+
+    -- ** PeriodOverPeriodComputation
+    periodOverPeriodComputation_name,
+    periodOverPeriodComputation_value,
+    periodOverPeriodComputation_computationId,
+    periodOverPeriodComputation_time,
+
+    -- ** PeriodToDateComputation
+    periodToDateComputation_name,
+    periodToDateComputation_periodTimeGranularity,
+    periodToDateComputation_value,
+    periodToDateComputation_computationId,
+    periodToDateComputation_time,
+
+    -- ** PhysicalTable
+    physicalTable_customSql,
+    physicalTable_relationalTable,
+    physicalTable_s3Source,
+
+    -- ** PieChartAggregatedFieldWells
+    pieChartAggregatedFieldWells_category,
+    pieChartAggregatedFieldWells_smallMultiples,
+    pieChartAggregatedFieldWells_values,
+
+    -- ** PieChartConfiguration
+    pieChartConfiguration_categoryLabelOptions,
+    pieChartConfiguration_contributionAnalysisDefaults,
+    pieChartConfiguration_dataLabels,
+    pieChartConfiguration_donutOptions,
+    pieChartConfiguration_fieldWells,
+    pieChartConfiguration_legend,
+    pieChartConfiguration_smallMultiplesOptions,
+    pieChartConfiguration_sortConfiguration,
+    pieChartConfiguration_tooltip,
+    pieChartConfiguration_valueLabelOptions,
+    pieChartConfiguration_visualPalette,
+
+    -- ** PieChartFieldWells
+    pieChartFieldWells_pieChartAggregatedFieldWells,
+
+    -- ** PieChartSortConfiguration
+    pieChartSortConfiguration_categoryItemsLimit,
+    pieChartSortConfiguration_categorySort,
+    pieChartSortConfiguration_smallMultiplesLimitConfiguration,
+    pieChartSortConfiguration_smallMultiplesSort,
+
+    -- ** PieChartVisual
+    pieChartVisual_actions,
+    pieChartVisual_chartConfiguration,
+    pieChartVisual_columnHierarchies,
+    pieChartVisual_subtitle,
+    pieChartVisual_title,
+    pieChartVisual_visualId,
+
+    -- ** PivotFieldSortOptions
+    pivotFieldSortOptions_fieldId,
+    pivotFieldSortOptions_sortBy,
+
+    -- ** PivotTableAggregatedFieldWells
+    pivotTableAggregatedFieldWells_columns,
+    pivotTableAggregatedFieldWells_rows,
+    pivotTableAggregatedFieldWells_values,
+
+    -- ** PivotTableCellConditionalFormatting
+    pivotTableCellConditionalFormatting_scope,
+    pivotTableCellConditionalFormatting_textFormat,
+    pivotTableCellConditionalFormatting_fieldId,
+
+    -- ** PivotTableConditionalFormatting
+    pivotTableConditionalFormatting_conditionalFormattingOptions,
+
+    -- ** PivotTableConditionalFormattingOption
+    pivotTableConditionalFormattingOption_cell,
+
+    -- ** PivotTableConditionalFormattingScope
+    pivotTableConditionalFormattingScope_role,
+
+    -- ** PivotTableConfiguration
+    pivotTableConfiguration_fieldOptions,
+    pivotTableConfiguration_fieldWells,
+    pivotTableConfiguration_paginatedReportOptions,
+    pivotTableConfiguration_sortConfiguration,
+    pivotTableConfiguration_tableOptions,
+    pivotTableConfiguration_totalOptions,
+
+    -- ** PivotTableDataPathOption
+    pivotTableDataPathOption_width,
+    pivotTableDataPathOption_dataPathList,
+
+    -- ** PivotTableFieldOption
+    pivotTableFieldOption_customLabel,
+    pivotTableFieldOption_visibility,
+    pivotTableFieldOption_fieldId,
+
+    -- ** PivotTableFieldOptions
+    pivotTableFieldOptions_dataPathOptions,
+    pivotTableFieldOptions_selectedFieldOptions,
+
+    -- ** PivotTableFieldSubtotalOptions
+    pivotTableFieldSubtotalOptions_fieldId,
+
+    -- ** PivotTableFieldWells
+    pivotTableFieldWells_pivotTableAggregatedFieldWells,
+
+    -- ** PivotTableOptions
+    pivotTableOptions_cellStyle,
+    pivotTableOptions_columnHeaderStyle,
+    pivotTableOptions_columnNamesVisibility,
+    pivotTableOptions_metricPlacement,
+    pivotTableOptions_rowAlternateColorOptions,
+    pivotTableOptions_rowFieldNamesStyle,
+    pivotTableOptions_rowHeaderStyle,
+    pivotTableOptions_singleMetricVisibility,
+    pivotTableOptions_toggleButtonsVisibility,
+
+    -- ** PivotTablePaginatedReportOptions
+    pivotTablePaginatedReportOptions_overflowColumnHeaderVisibility,
+    pivotTablePaginatedReportOptions_verticalOverflowVisibility,
+
+    -- ** PivotTableSortBy
+    pivotTableSortBy_column,
+    pivotTableSortBy_dataPath,
+    pivotTableSortBy_field,
+
+    -- ** PivotTableSortConfiguration
+    pivotTableSortConfiguration_fieldSortOptions,
+
+    -- ** PivotTableTotalOptions
+    pivotTableTotalOptions_columnSubtotalOptions,
+    pivotTableTotalOptions_columnTotalOptions,
+    pivotTableTotalOptions_rowSubtotalOptions,
+    pivotTableTotalOptions_rowTotalOptions,
+
+    -- ** PivotTableVisual
+    pivotTableVisual_actions,
+    pivotTableVisual_chartConfiguration,
+    pivotTableVisual_conditionalFormatting,
+    pivotTableVisual_subtitle,
+    pivotTableVisual_title,
+    pivotTableVisual_visualId,
+
+    -- ** PivotTotalOptions
+    pivotTotalOptions_customLabel,
+    pivotTotalOptions_metricHeaderCellStyle,
+    pivotTotalOptions_placement,
+    pivotTotalOptions_scrollStatus,
+    pivotTotalOptions_totalCellStyle,
+    pivotTotalOptions_totalsVisibility,
+    pivotTotalOptions_valueCellStyle,
+
+    -- ** PostgreSqlParameters
+    postgreSqlParameters_host,
+    postgreSqlParameters_port,
+    postgreSqlParameters_database,
+
+    -- ** PredefinedHierarchy
+    predefinedHierarchy_drillDownFilters,
+    predefinedHierarchy_hierarchyId,
+    predefinedHierarchy_columns,
+
+    -- ** PrestoParameters
+    prestoParameters_host,
+    prestoParameters_port,
+    prestoParameters_catalog,
+
+    -- ** ProgressBarOptions
+    progressBarOptions_visibility,
+
+    -- ** ProjectOperation
+    projectOperation_projectedColumns,
+
+    -- ** QueueInfo
+    queueInfo_waitingOnIngestion,
+    queueInfo_queuedIngestion,
+
+    -- ** RangeEndsLabelType
+    rangeEndsLabelType_visibility,
+
+    -- ** RdsParameters
+    rdsParameters_instanceId,
+    rdsParameters_database,
+
+    -- ** RedshiftParameters
+    redshiftParameters_clusterId,
+    redshiftParameters_host,
+    redshiftParameters_port,
+    redshiftParameters_database,
+
+    -- ** ReferenceLine
+    referenceLine_labelConfiguration,
+    referenceLine_status,
+    referenceLine_styleConfiguration,
+    referenceLine_dataConfiguration,
+
+    -- ** ReferenceLineCustomLabelConfiguration
+    referenceLineCustomLabelConfiguration_customLabel,
+
+    -- ** ReferenceLineDataConfiguration
+    referenceLineDataConfiguration_axisBinding,
+    referenceLineDataConfiguration_dynamicConfiguration,
+    referenceLineDataConfiguration_staticConfiguration,
+
+    -- ** ReferenceLineDynamicDataConfiguration
+    referenceLineDynamicDataConfiguration_column,
+    referenceLineDynamicDataConfiguration_measureAggregationFunction,
+    referenceLineDynamicDataConfiguration_calculation,
+
+    -- ** ReferenceLineLabelConfiguration
+    referenceLineLabelConfiguration_customLabelConfiguration,
+    referenceLineLabelConfiguration_fontColor,
+    referenceLineLabelConfiguration_fontConfiguration,
+    referenceLineLabelConfiguration_horizontalPosition,
+    referenceLineLabelConfiguration_valueLabelConfiguration,
+    referenceLineLabelConfiguration_verticalPosition,
+
+    -- ** ReferenceLineStaticDataConfiguration
+    referenceLineStaticDataConfiguration_value,
+
+    -- ** ReferenceLineStyleConfiguration
+    referenceLineStyleConfiguration_color,
+    referenceLineStyleConfiguration_pattern,
+
+    -- ** ReferenceLineValueLabelConfiguration
+    referenceLineValueLabelConfiguration_formatConfiguration,
+    referenceLineValueLabelConfiguration_relativePosition,
+
+    -- ** RegisteredUserDashboardEmbeddingConfiguration
+    registeredUserDashboardEmbeddingConfiguration_initialDashboardId,
+
+    -- ** RegisteredUserDashboardVisualEmbeddingConfiguration
+    registeredUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId,
+
+    -- ** RegisteredUserEmbeddingExperienceConfiguration
+    registeredUserEmbeddingExperienceConfiguration_dashboard,
+    registeredUserEmbeddingExperienceConfiguration_dashboardVisual,
+    registeredUserEmbeddingExperienceConfiguration_qSearchBar,
+    registeredUserEmbeddingExperienceConfiguration_quickSightConsole,
+
+    -- ** RegisteredUserQSearchBarEmbeddingConfiguration
+    registeredUserQSearchBarEmbeddingConfiguration_initialTopicId,
+
+    -- ** RegisteredUserQuickSightConsoleEmbeddingConfiguration
+    registeredUserQuickSightConsoleEmbeddingConfiguration_initialPath,
+
+    -- ** RelationalTable
+    relationalTable_catalog,
+    relationalTable_schema,
+    relationalTable_dataSourceArn,
+    relationalTable_name,
+    relationalTable_inputColumns,
+
+    -- ** RelativeDateTimeControlDisplayOptions
+    relativeDateTimeControlDisplayOptions_dateTimeFormat,
+    relativeDateTimeControlDisplayOptions_titleOptions,
+
+    -- ** RelativeDatesFilter
+    relativeDatesFilter_excludePeriodConfiguration,
+    relativeDatesFilter_minimumGranularity,
+    relativeDatesFilter_parameterName,
+    relativeDatesFilter_relativeDateValue,
+    relativeDatesFilter_filterId,
+    relativeDatesFilter_column,
+    relativeDatesFilter_anchorDateConfiguration,
+    relativeDatesFilter_timeGranularity,
+    relativeDatesFilter_relativeDateType,
+    relativeDatesFilter_nullOption,
+
+    -- ** RenameColumnOperation
+    renameColumnOperation_columnName,
+    renameColumnOperation_newColumnName,
+
+    -- ** ResourcePermission
+    resourcePermission_principal,
+    resourcePermission_actions,
+
+    -- ** RollingDateConfiguration
+    rollingDateConfiguration_dataSetIdentifier,
+    rollingDateConfiguration_expression,
+
+    -- ** RowAlternateColorOptions
+    rowAlternateColorOptions_rowAlternateColors,
+    rowAlternateColorOptions_status,
+
+    -- ** RowInfo
+    rowInfo_rowsDropped,
+    rowInfo_rowsIngested,
+    rowInfo_totalRowsInDataset,
+
+    -- ** RowLevelPermissionDataSet
+    rowLevelPermissionDataSet_formatVersion,
+    rowLevelPermissionDataSet_namespace,
+    rowLevelPermissionDataSet_status,
+    rowLevelPermissionDataSet_arn,
+    rowLevelPermissionDataSet_permissionPolicy,
+
+    -- ** RowLevelPermissionTagConfiguration
+    rowLevelPermissionTagConfiguration_status,
+    rowLevelPermissionTagConfiguration_tagRules,
+
+    -- ** RowLevelPermissionTagRule
+    rowLevelPermissionTagRule_matchAllValue,
+    rowLevelPermissionTagRule_tagMultiValueDelimiter,
+    rowLevelPermissionTagRule_tagKey,
+    rowLevelPermissionTagRule_columnName,
+
+    -- ** S3Parameters
+    s3Parameters_manifestFileLocation,
+
+    -- ** S3Source
+    s3Source_uploadSettings,
+    s3Source_dataSourceArn,
+    s3Source_inputColumns,
+
+    -- ** SameSheetTargetVisualConfiguration
+    sameSheetTargetVisualConfiguration_targetVisualOptions,
+    sameSheetTargetVisualConfiguration_targetVisuals,
+
+    -- ** SankeyDiagramAggregatedFieldWells
+    sankeyDiagramAggregatedFieldWells_destination,
+    sankeyDiagramAggregatedFieldWells_source,
+    sankeyDiagramAggregatedFieldWells_weight,
+
+    -- ** SankeyDiagramChartConfiguration
+    sankeyDiagramChartConfiguration_dataLabels,
+    sankeyDiagramChartConfiguration_fieldWells,
+    sankeyDiagramChartConfiguration_sortConfiguration,
+
+    -- ** SankeyDiagramFieldWells
+    sankeyDiagramFieldWells_sankeyDiagramAggregatedFieldWells,
+
+    -- ** SankeyDiagramSortConfiguration
+    sankeyDiagramSortConfiguration_destinationItemsLimit,
+    sankeyDiagramSortConfiguration_sourceItemsLimit,
+    sankeyDiagramSortConfiguration_weightSort,
+
+    -- ** SankeyDiagramVisual
+    sankeyDiagramVisual_actions,
+    sankeyDiagramVisual_chartConfiguration,
+    sankeyDiagramVisual_subtitle,
+    sankeyDiagramVisual_title,
+    sankeyDiagramVisual_visualId,
+
+    -- ** ScatterPlotCategoricallyAggregatedFieldWells
+    scatterPlotCategoricallyAggregatedFieldWells_category,
+    scatterPlotCategoricallyAggregatedFieldWells_size,
+    scatterPlotCategoricallyAggregatedFieldWells_xAxis,
+    scatterPlotCategoricallyAggregatedFieldWells_yAxis,
+
+    -- ** ScatterPlotConfiguration
+    scatterPlotConfiguration_dataLabels,
+    scatterPlotConfiguration_fieldWells,
+    scatterPlotConfiguration_legend,
+    scatterPlotConfiguration_tooltip,
+    scatterPlotConfiguration_visualPalette,
+    scatterPlotConfiguration_xAxisDisplayOptions,
+    scatterPlotConfiguration_xAxisLabelOptions,
+    scatterPlotConfiguration_yAxisDisplayOptions,
+    scatterPlotConfiguration_yAxisLabelOptions,
+
+    -- ** ScatterPlotFieldWells
+    scatterPlotFieldWells_scatterPlotCategoricallyAggregatedFieldWells,
+    scatterPlotFieldWells_scatterPlotUnaggregatedFieldWells,
+
+    -- ** ScatterPlotUnaggregatedFieldWells
+    scatterPlotUnaggregatedFieldWells_size,
+    scatterPlotUnaggregatedFieldWells_xAxis,
+    scatterPlotUnaggregatedFieldWells_yAxis,
+
+    -- ** ScatterPlotVisual
+    scatterPlotVisual_actions,
+    scatterPlotVisual_chartConfiguration,
+    scatterPlotVisual_columnHierarchies,
+    scatterPlotVisual_subtitle,
+    scatterPlotVisual_title,
+    scatterPlotVisual_visualId,
+
+    -- ** ScrollBarOptions
+    scrollBarOptions_visibility,
+    scrollBarOptions_visibleRange,
+
+    -- ** SecondaryValueOptions
+    secondaryValueOptions_visibility,
+
+    -- ** SectionAfterPageBreak
+    sectionAfterPageBreak_status,
+
+    -- ** SectionBasedLayoutCanvasSizeOptions
+    sectionBasedLayoutCanvasSizeOptions_paperCanvasSizeOptions,
+
+    -- ** SectionBasedLayoutConfiguration
+    sectionBasedLayoutConfiguration_headerSections,
+    sectionBasedLayoutConfiguration_bodySections,
+    sectionBasedLayoutConfiguration_footerSections,
+    sectionBasedLayoutConfiguration_canvasSizeOptions,
+
+    -- ** SectionBasedLayoutPaperCanvasSizeOptions
+    sectionBasedLayoutPaperCanvasSizeOptions_paperMargin,
+    sectionBasedLayoutPaperCanvasSizeOptions_paperOrientation,
+    sectionBasedLayoutPaperCanvasSizeOptions_paperSize,
+
+    -- ** SectionLayoutConfiguration
+    sectionLayoutConfiguration_freeFormLayout,
+
+    -- ** SectionPageBreakConfiguration
+    sectionPageBreakConfiguration_after,
+
+    -- ** SectionStyle
+    sectionStyle_height,
+    sectionStyle_padding,
+
+    -- ** SelectedSheetsFilterScopeConfiguration
+    selectedSheetsFilterScopeConfiguration_sheetVisualScopingConfigurations,
+
+    -- ** SeriesItem
+    seriesItem_dataFieldSeriesItem,
+    seriesItem_fieldSeriesItem,
+
+    -- ** ServiceNowParameters
+    serviceNowParameters_siteBaseUrl,
+
+    -- ** SessionTag
+    sessionTag_key,
+    sessionTag_value,
+
+    -- ** SetParameterValueConfiguration
+    setParameterValueConfiguration_destinationParameterName,
+    setParameterValueConfiguration_value,
+
+    -- ** ShapeConditionalFormat
+    shapeConditionalFormat_backgroundColor,
+
+    -- ** Sheet
+    sheet_name,
+    sheet_sheetId,
+
+    -- ** SheetControlLayout
+    sheetControlLayout_configuration,
+
+    -- ** SheetControlLayoutConfiguration
+    sheetControlLayoutConfiguration_gridLayout,
+
+    -- ** SheetControlsOption
+    sheetControlsOption_visibilityState,
+
+    -- ** SheetDefinition
+    sheetDefinition_contentType,
+    sheetDefinition_description,
+    sheetDefinition_filterControls,
+    sheetDefinition_layouts,
+    sheetDefinition_name,
+    sheetDefinition_parameterControls,
+    sheetDefinition_sheetControlLayouts,
+    sheetDefinition_textBoxes,
+    sheetDefinition_title,
+    sheetDefinition_visuals,
+    sheetDefinition_sheetId,
+
+    -- ** SheetElementConfigurationOverrides
+    sheetElementConfigurationOverrides_visibility,
+
+    -- ** SheetElementRenderingRule
+    sheetElementRenderingRule_expression,
+    sheetElementRenderingRule_configurationOverrides,
+
+    -- ** SheetStyle
+    sheetStyle_tile,
+    sheetStyle_tileLayout,
+
+    -- ** SheetTextBox
+    sheetTextBox_content,
+    sheetTextBox_sheetTextBoxId,
+
+    -- ** SheetVisualScopingConfiguration
+    sheetVisualScopingConfiguration_visualIds,
+    sheetVisualScopingConfiguration_sheetId,
+    sheetVisualScopingConfiguration_scope,
+
+    -- ** ShortFormatText
+    shortFormatText_plainText,
+    shortFormatText_richText,
+
+    -- ** SignupResponse
+    signupResponse_iAMUser,
+    signupResponse_accountName,
+    signupResponse_directoryType,
+    signupResponse_userLoginName,
+
+    -- ** SimpleClusterMarker
+    simpleClusterMarker_color,
+
+    -- ** SliderControlDisplayOptions
+    sliderControlDisplayOptions_titleOptions,
+
+    -- ** SmallMultiplesOptions
+    smallMultiplesOptions_maxVisibleColumns,
+    smallMultiplesOptions_maxVisibleRows,
+    smallMultiplesOptions_panelConfiguration,
+
+    -- ** SnowflakeParameters
+    snowflakeParameters_host,
+    snowflakeParameters_database,
+    snowflakeParameters_warehouse,
+
+    -- ** Spacing
+    spacing_bottom,
+    spacing_left,
+    spacing_right,
+    spacing_top,
+
+    -- ** SparkParameters
+    sparkParameters_host,
+    sparkParameters_port,
+
+    -- ** SqlServerParameters
+    sqlServerParameters_host,
+    sqlServerParameters_port,
+    sqlServerParameters_database,
+
+    -- ** SslProperties
+    sslProperties_disableSsl,
+
+    -- ** StringDefaultValues
+    stringDefaultValues_dynamicValue,
+    stringDefaultValues_staticValues,
+
+    -- ** StringFormatConfiguration
+    stringFormatConfiguration_nullValueFormatConfiguration,
+    stringFormatConfiguration_numericFormatConfiguration,
+
+    -- ** StringParameter
+    stringParameter_name,
+    stringParameter_values,
+
+    -- ** StringParameterDeclaration
+    stringParameterDeclaration_defaultValues,
+    stringParameterDeclaration_valueWhenUnset,
+    stringParameterDeclaration_parameterValueType,
+    stringParameterDeclaration_name,
+
+    -- ** StringValueWhenUnsetConfiguration
+    stringValueWhenUnsetConfiguration_customValue,
+    stringValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- ** SubtotalOptions
+    subtotalOptions_customLabel,
+    subtotalOptions_fieldLevel,
+    subtotalOptions_fieldLevelOptions,
+    subtotalOptions_metricHeaderCellStyle,
+    subtotalOptions_totalCellStyle,
+    subtotalOptions_totalsVisibility,
+    subtotalOptions_valueCellStyle,
+
+    -- ** TableAggregatedFieldWells
+    tableAggregatedFieldWells_groupBy,
+    tableAggregatedFieldWells_values,
+
+    -- ** TableBorderOptions
+    tableBorderOptions_color,
+    tableBorderOptions_style,
+    tableBorderOptions_thickness,
+
+    -- ** TableCellConditionalFormatting
+    tableCellConditionalFormatting_textFormat,
+    tableCellConditionalFormatting_fieldId,
+
+    -- ** TableCellImageSizingConfiguration
+    tableCellImageSizingConfiguration_tableCellImageScalingConfiguration,
+
+    -- ** TableCellStyle
+    tableCellStyle_backgroundColor,
+    tableCellStyle_border,
+    tableCellStyle_fontConfiguration,
+    tableCellStyle_height,
+    tableCellStyle_horizontalTextAlignment,
+    tableCellStyle_textWrap,
+    tableCellStyle_verticalTextAlignment,
+    tableCellStyle_visibility,
+
+    -- ** TableConditionalFormatting
+    tableConditionalFormatting_conditionalFormattingOptions,
+
+    -- ** TableConditionalFormattingOption
+    tableConditionalFormattingOption_cell,
+    tableConditionalFormattingOption_row,
+
+    -- ** TableConfiguration
+    tableConfiguration_fieldOptions,
+    tableConfiguration_fieldWells,
+    tableConfiguration_paginatedReportOptions,
+    tableConfiguration_sortConfiguration,
+    tableConfiguration_tableOptions,
+    tableConfiguration_totalOptions,
+
+    -- ** TableFieldCustomIconContent
+    tableFieldCustomIconContent_icon,
+
+    -- ** TableFieldCustomTextContent
+    tableFieldCustomTextContent_value,
+    tableFieldCustomTextContent_fontConfiguration,
+
+    -- ** TableFieldImageConfiguration
+    tableFieldImageConfiguration_sizingOptions,
+
+    -- ** TableFieldLinkConfiguration
+    tableFieldLinkConfiguration_target,
+    tableFieldLinkConfiguration_content,
+
+    -- ** TableFieldLinkContentConfiguration
+    tableFieldLinkContentConfiguration_customIconContent,
+    tableFieldLinkContentConfiguration_customTextContent,
+
+    -- ** TableFieldOption
+    tableFieldOption_customLabel,
+    tableFieldOption_uRLStyling,
+    tableFieldOption_visibility,
+    tableFieldOption_width,
+    tableFieldOption_fieldId,
+
+    -- ** TableFieldOptions
+    tableFieldOptions_order,
+    tableFieldOptions_selectedFieldOptions,
+
+    -- ** TableFieldURLConfiguration
+    tableFieldURLConfiguration_imageConfiguration,
+    tableFieldURLConfiguration_linkConfiguration,
+
+    -- ** TableFieldWells
+    tableFieldWells_tableAggregatedFieldWells,
+    tableFieldWells_tableUnaggregatedFieldWells,
+
+    -- ** TableOptions
+    tableOptions_cellStyle,
+    tableOptions_headerStyle,
+    tableOptions_orientation,
+    tableOptions_rowAlternateColorOptions,
+
+    -- ** TablePaginatedReportOptions
+    tablePaginatedReportOptions_overflowColumnHeaderVisibility,
+    tablePaginatedReportOptions_verticalOverflowVisibility,
+
+    -- ** TableRowConditionalFormatting
+    tableRowConditionalFormatting_backgroundColor,
+    tableRowConditionalFormatting_textColor,
+
+    -- ** TableSideBorderOptions
+    tableSideBorderOptions_bottom,
+    tableSideBorderOptions_innerHorizontal,
+    tableSideBorderOptions_innerVertical,
+    tableSideBorderOptions_left,
+    tableSideBorderOptions_right,
+    tableSideBorderOptions_top,
+
+    -- ** TableSortConfiguration
+    tableSortConfiguration_paginationConfiguration,
+    tableSortConfiguration_rowSort,
+
+    -- ** TableUnaggregatedFieldWells
+    tableUnaggregatedFieldWells_values,
+
+    -- ** TableVisual
+    tableVisual_actions,
+    tableVisual_chartConfiguration,
+    tableVisual_conditionalFormatting,
+    tableVisual_subtitle,
+    tableVisual_title,
+    tableVisual_visualId,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TagColumnOperation
+    tagColumnOperation_columnName,
+    tagColumnOperation_tags,
+
+    -- ** Template
+    template_arn,
+    template_createdTime,
+    template_lastUpdatedTime,
+    template_name,
+    template_templateId,
+    template_version,
+
+    -- ** TemplateAlias
+    templateAlias_aliasName,
+    templateAlias_arn,
+    templateAlias_templateVersionNumber,
+
+    -- ** TemplateError
+    templateError_message,
+    templateError_type,
+    templateError_violatedEntities,
+
+    -- ** TemplateSourceAnalysis
+    templateSourceAnalysis_arn,
+    templateSourceAnalysis_dataSetReferences,
+
+    -- ** TemplateSourceEntity
+    templateSourceEntity_sourceAnalysis,
+    templateSourceEntity_sourceTemplate,
+
+    -- ** TemplateSourceTemplate
+    templateSourceTemplate_arn,
+
+    -- ** TemplateSummary
+    templateSummary_arn,
+    templateSummary_createdTime,
+    templateSummary_lastUpdatedTime,
+    templateSummary_latestVersionNumber,
+    templateSummary_name,
+    templateSummary_templateId,
+
+    -- ** TemplateVersion
+    templateVersion_createdTime,
+    templateVersion_dataSetConfigurations,
+    templateVersion_description,
+    templateVersion_errors,
+    templateVersion_sheets,
+    templateVersion_sourceEntityArn,
+    templateVersion_status,
+    templateVersion_themeArn,
+    templateVersion_versionNumber,
+
+    -- ** TemplateVersionDefinition
+    templateVersionDefinition_analysisDefaults,
+    templateVersionDefinition_calculatedFields,
+    templateVersionDefinition_columnConfigurations,
+    templateVersionDefinition_filterGroups,
+    templateVersionDefinition_parameterDeclarations,
+    templateVersionDefinition_sheets,
+    templateVersionDefinition_dataSetConfigurations,
+
+    -- ** TemplateVersionSummary
+    templateVersionSummary_arn,
+    templateVersionSummary_createdTime,
+    templateVersionSummary_description,
+    templateVersionSummary_status,
+    templateVersionSummary_versionNumber,
+
+    -- ** TeradataParameters
+    teradataParameters_host,
+    teradataParameters_port,
+    teradataParameters_database,
+
+    -- ** TextAreaControlDisplayOptions
+    textAreaControlDisplayOptions_placeholderOptions,
+    textAreaControlDisplayOptions_titleOptions,
+
+    -- ** TextConditionalFormat
+    textConditionalFormat_backgroundColor,
+    textConditionalFormat_icon,
+    textConditionalFormat_textColor,
+
+    -- ** TextControlPlaceholderOptions
+    textControlPlaceholderOptions_visibility,
+
+    -- ** TextFieldControlDisplayOptions
+    textFieldControlDisplayOptions_placeholderOptions,
+    textFieldControlDisplayOptions_titleOptions,
+
+    -- ** Theme
+    theme_arn,
+    theme_createdTime,
+    theme_lastUpdatedTime,
+    theme_name,
+    theme_themeId,
+    theme_type,
+    theme_version,
+
+    -- ** ThemeAlias
+    themeAlias_aliasName,
+    themeAlias_arn,
+    themeAlias_themeVersionNumber,
+
+    -- ** ThemeConfiguration
+    themeConfiguration_dataColorPalette,
+    themeConfiguration_sheet,
+    themeConfiguration_typography,
+    themeConfiguration_uIColorPalette,
+
+    -- ** ThemeError
+    themeError_message,
+    themeError_type,
+
+    -- ** ThemeSummary
+    themeSummary_arn,
+    themeSummary_createdTime,
+    themeSummary_lastUpdatedTime,
+    themeSummary_latestVersionNumber,
+    themeSummary_name,
+    themeSummary_themeId,
+
+    -- ** ThemeVersion
+    themeVersion_arn,
+    themeVersion_baseThemeId,
+    themeVersion_configuration,
+    themeVersion_createdTime,
+    themeVersion_description,
+    themeVersion_errors,
+    themeVersion_status,
+    themeVersion_versionNumber,
+
+    -- ** ThemeVersionSummary
+    themeVersionSummary_arn,
+    themeVersionSummary_createdTime,
+    themeVersionSummary_description,
+    themeVersionSummary_status,
+    themeVersionSummary_versionNumber,
+
+    -- ** ThousandSeparatorOptions
+    thousandSeparatorOptions_symbol,
+    thousandSeparatorOptions_visibility,
+
+    -- ** TileLayoutStyle
+    tileLayoutStyle_gutter,
+    tileLayoutStyle_margin,
+
+    -- ** TileStyle
+    tileStyle_border,
+
+    -- ** TimeBasedForecastProperties
+    timeBasedForecastProperties_lowerBoundary,
+    timeBasedForecastProperties_periodsBackward,
+    timeBasedForecastProperties_periodsForward,
+    timeBasedForecastProperties_predictionInterval,
+    timeBasedForecastProperties_seasonality,
+    timeBasedForecastProperties_upperBoundary,
+
+    -- ** TimeEqualityFilter
+    timeEqualityFilter_parameterName,
+    timeEqualityFilter_timeGranularity,
+    timeEqualityFilter_value,
+    timeEqualityFilter_filterId,
+    timeEqualityFilter_column,
+
+    -- ** TimeRangeDrillDownFilter
+    timeRangeDrillDownFilter_column,
+    timeRangeDrillDownFilter_rangeMinimum,
+    timeRangeDrillDownFilter_rangeMaximum,
+    timeRangeDrillDownFilter_timeGranularity,
+
+    -- ** TimeRangeFilter
+    timeRangeFilter_excludePeriodConfiguration,
+    timeRangeFilter_includeMaximum,
+    timeRangeFilter_includeMinimum,
+    timeRangeFilter_rangeMaximumValue,
+    timeRangeFilter_rangeMinimumValue,
+    timeRangeFilter_timeGranularity,
+    timeRangeFilter_filterId,
+    timeRangeFilter_column,
+    timeRangeFilter_nullOption,
+
+    -- ** TimeRangeFilterValue
+    timeRangeFilterValue_parameter,
+    timeRangeFilterValue_rollingDate,
+    timeRangeFilterValue_staticValue,
+
+    -- ** TooltipItem
+    tooltipItem_columnTooltipItem,
+    tooltipItem_fieldTooltipItem,
+
+    -- ** TooltipOptions
+    tooltipOptions_fieldBasedTooltip,
+    tooltipOptions_selectedTooltipType,
+    tooltipOptions_tooltipVisibility,
+
+    -- ** TopBottomFilter
+    topBottomFilter_limit,
+    topBottomFilter_parameterName,
+    topBottomFilter_timeGranularity,
+    topBottomFilter_filterId,
+    topBottomFilter_column,
+    topBottomFilter_aggregationSortConfigurations,
+
+    -- ** TopBottomMoversComputation
+    topBottomMoversComputation_moverSize,
+    topBottomMoversComputation_name,
+    topBottomMoversComputation_sortOrder,
+    topBottomMoversComputation_value,
+    topBottomMoversComputation_computationId,
+    topBottomMoversComputation_time,
+    topBottomMoversComputation_category,
+    topBottomMoversComputation_type,
+
+    -- ** TopBottomRankedComputation
+    topBottomRankedComputation_name,
+    topBottomRankedComputation_resultSize,
+    topBottomRankedComputation_value,
+    topBottomRankedComputation_computationId,
+    topBottomRankedComputation_category,
+    topBottomRankedComputation_type,
+
+    -- ** TotalAggregationComputation
+    totalAggregationComputation_name,
+    totalAggregationComputation_computationId,
+    totalAggregationComputation_value,
+
+    -- ** TotalOptions
+    totalOptions_customLabel,
+    totalOptions_placement,
+    totalOptions_scrollStatus,
+    totalOptions_totalCellStyle,
+    totalOptions_totalsVisibility,
+
+    -- ** TransformOperation
+    transformOperation_castColumnTypeOperation,
+    transformOperation_createColumnsOperation,
+    transformOperation_filterOperation,
+    transformOperation_projectOperation,
+    transformOperation_renameColumnOperation,
+    transformOperation_tagColumnOperation,
+    transformOperation_untagColumnOperation,
+
+    -- ** TreeMapAggregatedFieldWells
+    treeMapAggregatedFieldWells_colors,
+    treeMapAggregatedFieldWells_groups,
+    treeMapAggregatedFieldWells_sizes,
+
+    -- ** TreeMapConfiguration
+    treeMapConfiguration_colorLabelOptions,
+    treeMapConfiguration_colorScale,
+    treeMapConfiguration_dataLabels,
+    treeMapConfiguration_fieldWells,
+    treeMapConfiguration_groupLabelOptions,
+    treeMapConfiguration_legend,
+    treeMapConfiguration_sizeLabelOptions,
+    treeMapConfiguration_sortConfiguration,
+    treeMapConfiguration_tooltip,
+
+    -- ** TreeMapFieldWells
+    treeMapFieldWells_treeMapAggregatedFieldWells,
+
+    -- ** TreeMapSortConfiguration
+    treeMapSortConfiguration_treeMapGroupItemsLimitConfiguration,
+    treeMapSortConfiguration_treeMapSort,
+
+    -- ** TreeMapVisual
+    treeMapVisual_actions,
+    treeMapVisual_chartConfiguration,
+    treeMapVisual_columnHierarchies,
+    treeMapVisual_subtitle,
+    treeMapVisual_title,
+    treeMapVisual_visualId,
+
+    -- ** TrendArrowOptions
+    trendArrowOptions_visibility,
+
+    -- ** TwitterParameters
+    twitterParameters_query,
+    twitterParameters_maxRows,
+
+    -- ** Typography
+    typography_fontFamilies,
+
+    -- ** UIColorPalette
+    uIColorPalette_accent,
+    uIColorPalette_accentForeground,
+    uIColorPalette_danger,
+    uIColorPalette_dangerForeground,
+    uIColorPalette_dimension,
+    uIColorPalette_dimensionForeground,
+    uIColorPalette_measure,
+    uIColorPalette_measureForeground,
+    uIColorPalette_primaryBackground,
+    uIColorPalette_primaryForeground,
+    uIColorPalette_secondaryBackground,
+    uIColorPalette_secondaryForeground,
+    uIColorPalette_success,
+    uIColorPalette_successForeground,
+    uIColorPalette_warning,
+    uIColorPalette_warningForeground,
+
+    -- ** UnaggregatedField
+    unaggregatedField_formatConfiguration,
+    unaggregatedField_fieldId,
+    unaggregatedField_column,
+
+    -- ** UniqueValuesComputation
+    uniqueValuesComputation_name,
+    uniqueValuesComputation_computationId,
+    uniqueValuesComputation_category,
+
+    -- ** UntagColumnOperation
+    untagColumnOperation_columnName,
+    untagColumnOperation_tagNames,
+
+    -- ** UploadSettings
+    uploadSettings_containsHeader,
+    uploadSettings_delimiter,
+    uploadSettings_format,
+    uploadSettings_startFromRow,
+    uploadSettings_textQualifier,
+
+    -- ** User
+    user_active,
+    user_arn,
+    user_customPermissionsName,
+    user_email,
+    user_externalLoginFederationProviderType,
+    user_externalLoginFederationProviderUrl,
+    user_externalLoginId,
+    user_identityType,
+    user_principalId,
+    user_role,
+    user_userName,
+
+    -- ** VisibleRangeOptions
+    visibleRangeOptions_percentRange,
+
+    -- ** Visual
+    visual_barChartVisual,
+    visual_boxPlotVisual,
+    visual_comboChartVisual,
+    visual_customContentVisual,
+    visual_emptyVisual,
+    visual_filledMapVisual,
+    visual_funnelChartVisual,
+    visual_gaugeChartVisual,
+    visual_geospatialMapVisual,
+    visual_heatMapVisual,
+    visual_histogramVisual,
+    visual_insightVisual,
+    visual_kPIVisual,
+    visual_lineChartVisual,
+    visual_pieChartVisual,
+    visual_pivotTableVisual,
+    visual_sankeyDiagramVisual,
+    visual_scatterPlotVisual,
+    visual_tableVisual,
+    visual_treeMapVisual,
+    visual_waterfallVisual,
+    visual_wordCloudVisual,
+
+    -- ** VisualCustomAction
+    visualCustomAction_status,
+    visualCustomAction_customActionId,
+    visualCustomAction_name,
+    visualCustomAction_trigger,
+    visualCustomAction_actionOperations,
+
+    -- ** VisualCustomActionOperation
+    visualCustomActionOperation_filterOperation,
+    visualCustomActionOperation_navigationOperation,
+    visualCustomActionOperation_setParametersOperation,
+    visualCustomActionOperation_uRLOperation,
+
+    -- ** VisualPalette
+    visualPalette_chartColor,
+    visualPalette_colorMap,
+
+    -- ** VisualSubtitleLabelOptions
+    visualSubtitleLabelOptions_formatText,
+    visualSubtitleLabelOptions_visibility,
+
+    -- ** VisualTitleLabelOptions
+    visualTitleLabelOptions_formatText,
+    visualTitleLabelOptions_visibility,
+
+    -- ** VpcConnectionProperties
+    vpcConnectionProperties_vpcConnectionArn,
+
+    -- ** WaterfallChartAggregatedFieldWells
+    waterfallChartAggregatedFieldWells_breakdowns,
+    waterfallChartAggregatedFieldWells_categories,
+    waterfallChartAggregatedFieldWells_values,
+
+    -- ** WaterfallChartConfiguration
+    waterfallChartConfiguration_categoryAxisDisplayOptions,
+    waterfallChartConfiguration_categoryAxisLabelOptions,
+    waterfallChartConfiguration_dataLabels,
+    waterfallChartConfiguration_fieldWells,
+    waterfallChartConfiguration_legend,
+    waterfallChartConfiguration_primaryYAxisDisplayOptions,
+    waterfallChartConfiguration_primaryYAxisLabelOptions,
+    waterfallChartConfiguration_sortConfiguration,
+    waterfallChartConfiguration_visualPalette,
+    waterfallChartConfiguration_waterfallChartOptions,
+
+    -- ** WaterfallChartFieldWells
+    waterfallChartFieldWells_waterfallChartAggregatedFieldWells,
+
+    -- ** WaterfallChartOptions
+    waterfallChartOptions_totalBarLabel,
+
+    -- ** WaterfallChartSortConfiguration
+    waterfallChartSortConfiguration_breakdownItemsLimit,
+    waterfallChartSortConfiguration_categorySort,
+
+    -- ** WaterfallVisual
+    waterfallVisual_actions,
+    waterfallVisual_chartConfiguration,
+    waterfallVisual_columnHierarchies,
+    waterfallVisual_subtitle,
+    waterfallVisual_title,
+    waterfallVisual_visualId,
+
+    -- ** WhatIfPointScenario
+    whatIfPointScenario_date,
+    whatIfPointScenario_value,
+
+    -- ** WhatIfRangeScenario
+    whatIfRangeScenario_startDate,
+    whatIfRangeScenario_endDate,
+    whatIfRangeScenario_value,
+
+    -- ** WordCloudAggregatedFieldWells
+    wordCloudAggregatedFieldWells_groupBy,
+    wordCloudAggregatedFieldWells_size,
+
+    -- ** WordCloudChartConfiguration
+    wordCloudChartConfiguration_categoryLabelOptions,
+    wordCloudChartConfiguration_fieldWells,
+    wordCloudChartConfiguration_sortConfiguration,
+    wordCloudChartConfiguration_wordCloudOptions,
+
+    -- ** WordCloudFieldWells
+    wordCloudFieldWells_wordCloudAggregatedFieldWells,
+
+    -- ** WordCloudOptions
+    wordCloudOptions_cloudLayout,
+    wordCloudOptions_maximumStringLength,
+    wordCloudOptions_wordCasing,
+    wordCloudOptions_wordOrientation,
+    wordCloudOptions_wordPadding,
+    wordCloudOptions_wordScaling,
+
+    -- ** WordCloudSortConfiguration
+    wordCloudSortConfiguration_categoryItemsLimit,
+    wordCloudSortConfiguration_categorySort,
+
+    -- ** WordCloudVisual
+    wordCloudVisual_actions,
+    wordCloudVisual_chartConfiguration,
+    wordCloudVisual_columnHierarchies,
+    wordCloudVisual_subtitle,
+    wordCloudVisual_title,
+    wordCloudVisual_visualId,
+  )
+where
+
+import Amazonka.QuickSight.CancelIngestion
+import Amazonka.QuickSight.CreateAccountCustomization
+import Amazonka.QuickSight.CreateAccountSubscription
+import Amazonka.QuickSight.CreateAnalysis
+import Amazonka.QuickSight.CreateDashboard
+import Amazonka.QuickSight.CreateDataSet
+import Amazonka.QuickSight.CreateDataSource
+import Amazonka.QuickSight.CreateFolder
+import Amazonka.QuickSight.CreateFolderMembership
+import Amazonka.QuickSight.CreateGroup
+import Amazonka.QuickSight.CreateGroupMembership
+import Amazonka.QuickSight.CreateIAMPolicyAssignment
+import Amazonka.QuickSight.CreateIngestion
+import Amazonka.QuickSight.CreateNamespace
+import Amazonka.QuickSight.CreateTemplate
+import Amazonka.QuickSight.CreateTemplateAlias
+import Amazonka.QuickSight.CreateTheme
+import Amazonka.QuickSight.CreateThemeAlias
+import Amazonka.QuickSight.DeleteAccountCustomization
+import Amazonka.QuickSight.DeleteAccountSubscription
+import Amazonka.QuickSight.DeleteAnalysis
+import Amazonka.QuickSight.DeleteDashboard
+import Amazonka.QuickSight.DeleteDataSet
+import Amazonka.QuickSight.DeleteDataSource
+import Amazonka.QuickSight.DeleteFolder
+import Amazonka.QuickSight.DeleteFolderMembership
+import Amazonka.QuickSight.DeleteGroup
+import Amazonka.QuickSight.DeleteGroupMembership
+import Amazonka.QuickSight.DeleteIAMPolicyAssignment
+import Amazonka.QuickSight.DeleteNamespace
+import Amazonka.QuickSight.DeleteTemplate
+import Amazonka.QuickSight.DeleteTemplateAlias
+import Amazonka.QuickSight.DeleteTheme
+import Amazonka.QuickSight.DeleteThemeAlias
+import Amazonka.QuickSight.DeleteUser
+import Amazonka.QuickSight.DeleteUserByPrincipalId
+import Amazonka.QuickSight.DescribeAccountCustomization
+import Amazonka.QuickSight.DescribeAccountSettings
+import Amazonka.QuickSight.DescribeAccountSubscription
+import Amazonka.QuickSight.DescribeAnalysis
+import Amazonka.QuickSight.DescribeAnalysisDefinition
+import Amazonka.QuickSight.DescribeAnalysisPermissions
+import Amazonka.QuickSight.DescribeDashboard
+import Amazonka.QuickSight.DescribeDashboardDefinition
+import Amazonka.QuickSight.DescribeDashboardPermissions
+import Amazonka.QuickSight.DescribeDataSet
+import Amazonka.QuickSight.DescribeDataSetPermissions
+import Amazonka.QuickSight.DescribeDataSource
+import Amazonka.QuickSight.DescribeDataSourcePermissions
+import Amazonka.QuickSight.DescribeFolder
+import Amazonka.QuickSight.DescribeFolderPermissions
+import Amazonka.QuickSight.DescribeFolderResolvedPermissions
+import Amazonka.QuickSight.DescribeGroup
+import Amazonka.QuickSight.DescribeGroupMembership
+import Amazonka.QuickSight.DescribeIAMPolicyAssignment
+import Amazonka.QuickSight.DescribeIngestion
+import Amazonka.QuickSight.DescribeIpRestriction
+import Amazonka.QuickSight.DescribeNamespace
+import Amazonka.QuickSight.DescribeTemplate
+import Amazonka.QuickSight.DescribeTemplateAlias
+import Amazonka.QuickSight.DescribeTemplateDefinition
+import Amazonka.QuickSight.DescribeTemplatePermissions
+import Amazonka.QuickSight.DescribeTheme
+import Amazonka.QuickSight.DescribeThemeAlias
+import Amazonka.QuickSight.DescribeThemePermissions
+import Amazonka.QuickSight.DescribeUser
+import Amazonka.QuickSight.GenerateEmbedUrlForAnonymousUser
+import Amazonka.QuickSight.GenerateEmbedUrlForRegisteredUser
+import Amazonka.QuickSight.GetDashboardEmbedUrl
+import Amazonka.QuickSight.GetSessionEmbedUrl
+import Amazonka.QuickSight.ListAnalyses
+import Amazonka.QuickSight.ListDashboardVersions
+import Amazonka.QuickSight.ListDashboards
+import Amazonka.QuickSight.ListDataSets
+import Amazonka.QuickSight.ListDataSources
+import Amazonka.QuickSight.ListFolderMembers
+import Amazonka.QuickSight.ListFolders
+import Amazonka.QuickSight.ListGroupMemberships
+import Amazonka.QuickSight.ListGroups
+import Amazonka.QuickSight.ListIAMPolicyAssignments
+import Amazonka.QuickSight.ListIAMPolicyAssignmentsForUser
+import Amazonka.QuickSight.ListIngestions
+import Amazonka.QuickSight.ListNamespaces
+import Amazonka.QuickSight.ListTagsForResource
+import Amazonka.QuickSight.ListTemplateAliases
+import Amazonka.QuickSight.ListTemplateVersions
+import Amazonka.QuickSight.ListTemplates
+import Amazonka.QuickSight.ListThemeAliases
+import Amazonka.QuickSight.ListThemeVersions
+import Amazonka.QuickSight.ListThemes
+import Amazonka.QuickSight.ListUserGroups
+import Amazonka.QuickSight.ListUsers
+import Amazonka.QuickSight.RegisterUser
+import Amazonka.QuickSight.RestoreAnalysis
+import Amazonka.QuickSight.SearchAnalyses
+import Amazonka.QuickSight.SearchDashboards
+import Amazonka.QuickSight.SearchDataSets
+import Amazonka.QuickSight.SearchDataSources
+import Amazonka.QuickSight.SearchFolders
+import Amazonka.QuickSight.SearchGroups
+import Amazonka.QuickSight.TagResource
+import Amazonka.QuickSight.Types.AccountCustomization
+import Amazonka.QuickSight.Types.AccountInfo
+import Amazonka.QuickSight.Types.AccountSettings
+import Amazonka.QuickSight.Types.ActiveIAMPolicyAssignment
+import Amazonka.QuickSight.Types.AdHocFilteringOption
+import Amazonka.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.AggregationSortConfiguration
+import Amazonka.QuickSight.Types.AmazonElasticsearchParameters
+import Amazonka.QuickSight.Types.AmazonOpenSearchParameters
+import Amazonka.QuickSight.Types.Analysis
+import Amazonka.QuickSight.Types.AnalysisDefaults
+import Amazonka.QuickSight.Types.AnalysisDefinition
+import Amazonka.QuickSight.Types.AnalysisError
+import Amazonka.QuickSight.Types.AnalysisSearchFilter
+import Amazonka.QuickSight.Types.AnalysisSourceEntity
+import Amazonka.QuickSight.Types.AnalysisSourceTemplate
+import Amazonka.QuickSight.Types.AnalysisSummary
+import Amazonka.QuickSight.Types.AnchorDateConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserDashboardEmbeddingConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserDashboardVisualEmbeddingConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserEmbeddingExperienceConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserQSearchBarEmbeddingConfiguration
+import Amazonka.QuickSight.Types.ArcAxisConfiguration
+import Amazonka.QuickSight.Types.ArcAxisDisplayRange
+import Amazonka.QuickSight.Types.ArcConfiguration
+import Amazonka.QuickSight.Types.ArcOptions
+import Amazonka.QuickSight.Types.AthenaParameters
+import Amazonka.QuickSight.Types.AuroraParameters
+import Amazonka.QuickSight.Types.AuroraPostgreSqlParameters
+import Amazonka.QuickSight.Types.AwsIotAnalyticsParameters
+import Amazonka.QuickSight.Types.AxisDataOptions
+import Amazonka.QuickSight.Types.AxisDisplayDataDrivenRange
+import Amazonka.QuickSight.Types.AxisDisplayMinMaxRange
+import Amazonka.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.AxisDisplayRange
+import Amazonka.QuickSight.Types.AxisLabelOptions
+import Amazonka.QuickSight.Types.AxisLabelReferenceOptions
+import Amazonka.QuickSight.Types.AxisLinearScale
+import Amazonka.QuickSight.Types.AxisLogarithmicScale
+import Amazonka.QuickSight.Types.AxisScale
+import Amazonka.QuickSight.Types.AxisTickLabelOptions
+import Amazonka.QuickSight.Types.BarChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.BarChartConfiguration
+import Amazonka.QuickSight.Types.BarChartFieldWells
+import Amazonka.QuickSight.Types.BarChartSortConfiguration
+import Amazonka.QuickSight.Types.BarChartVisual
+import Amazonka.QuickSight.Types.BinCountOptions
+import Amazonka.QuickSight.Types.BinWidthOptions
+import Amazonka.QuickSight.Types.BodySectionConfiguration
+import Amazonka.QuickSight.Types.BodySectionContent
+import Amazonka.QuickSight.Types.BorderStyle
+import Amazonka.QuickSight.Types.BoxPlotAggregatedFieldWells
+import Amazonka.QuickSight.Types.BoxPlotChartConfiguration
+import Amazonka.QuickSight.Types.BoxPlotFieldWells
+import Amazonka.QuickSight.Types.BoxPlotOptions
+import Amazonka.QuickSight.Types.BoxPlotSortConfiguration
+import Amazonka.QuickSight.Types.BoxPlotStyleOptions
+import Amazonka.QuickSight.Types.BoxPlotVisual
+import Amazonka.QuickSight.Types.CalculatedColumn
+import Amazonka.QuickSight.Types.CalculatedField
+import Amazonka.QuickSight.Types.CalculatedMeasureField
+import Amazonka.QuickSight.Types.CascadingControlConfiguration
+import Amazonka.QuickSight.Types.CascadingControlSource
+import Amazonka.QuickSight.Types.CastColumnTypeOperation
+import Amazonka.QuickSight.Types.CategoricalDimensionField
+import Amazonka.QuickSight.Types.CategoricalMeasureField
+import Amazonka.QuickSight.Types.CategoryDrillDownFilter
+import Amazonka.QuickSight.Types.CategoryFilter
+import Amazonka.QuickSight.Types.CategoryFilterConfiguration
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ClusterMarker
+import Amazonka.QuickSight.Types.ClusterMarkerConfiguration
+import Amazonka.QuickSight.Types.ColorScale
+import Amazonka.QuickSight.Types.ColumnConfiguration
+import Amazonka.QuickSight.Types.ColumnDescription
+import Amazonka.QuickSight.Types.ColumnGroup
+import Amazonka.QuickSight.Types.ColumnGroupColumnSchema
+import Amazonka.QuickSight.Types.ColumnGroupSchema
+import Amazonka.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.ColumnLevelPermissionRule
+import Amazonka.QuickSight.Types.ColumnSchema
+import Amazonka.QuickSight.Types.ColumnSort
+import Amazonka.QuickSight.Types.ColumnTag
+import Amazonka.QuickSight.Types.ColumnTooltipItem
+import Amazonka.QuickSight.Types.ComboChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.ComboChartConfiguration
+import Amazonka.QuickSight.Types.ComboChartFieldWells
+import Amazonka.QuickSight.Types.ComboChartSortConfiguration
+import Amazonka.QuickSight.Types.ComboChartVisual
+import Amazonka.QuickSight.Types.ComparisonConfiguration
+import Amazonka.QuickSight.Types.ComparisonFormatConfiguration
+import Amazonka.QuickSight.Types.Computation
+import Amazonka.QuickSight.Types.ConditionalFormattingColor
+import Amazonka.QuickSight.Types.ConditionalFormattingCustomIconCondition
+import Amazonka.QuickSight.Types.ConditionalFormattingCustomIconOptions
+import Amazonka.QuickSight.Types.ConditionalFormattingGradientColor
+import Amazonka.QuickSight.Types.ConditionalFormattingIcon
+import Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayConfiguration
+import Amazonka.QuickSight.Types.ConditionalFormattingIconSet
+import Amazonka.QuickSight.Types.ConditionalFormattingSolidColor
+import Amazonka.QuickSight.Types.ContributionAnalysisDefault
+import Amazonka.QuickSight.Types.CreateColumnsOperation
+import Amazonka.QuickSight.Types.CredentialPair
+import Amazonka.QuickSight.Types.CurrencyDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.CustomActionFilterOperation
+import Amazonka.QuickSight.Types.CustomActionNavigationOperation
+import Amazonka.QuickSight.Types.CustomActionSetParametersOperation
+import Amazonka.QuickSight.Types.CustomActionURLOperation
+import Amazonka.QuickSight.Types.CustomContentConfiguration
+import Amazonka.QuickSight.Types.CustomContentVisual
+import Amazonka.QuickSight.Types.CustomFilterConfiguration
+import Amazonka.QuickSight.Types.CustomFilterListConfiguration
+import Amazonka.QuickSight.Types.CustomNarrativeOptions
+import Amazonka.QuickSight.Types.CustomParameterValues
+import Amazonka.QuickSight.Types.CustomSql
+import Amazonka.QuickSight.Types.CustomValuesConfiguration
+import Amazonka.QuickSight.Types.Dashboard
+import Amazonka.QuickSight.Types.DashboardError
+import Amazonka.QuickSight.Types.DashboardPublishOptions
+import Amazonka.QuickSight.Types.DashboardSearchFilter
+import Amazonka.QuickSight.Types.DashboardSourceEntity
+import Amazonka.QuickSight.Types.DashboardSourceTemplate
+import Amazonka.QuickSight.Types.DashboardSummary
+import Amazonka.QuickSight.Types.DashboardVersion
+import Amazonka.QuickSight.Types.DashboardVersionDefinition
+import Amazonka.QuickSight.Types.DashboardVersionSummary
+import Amazonka.QuickSight.Types.DashboardVisualId
+import Amazonka.QuickSight.Types.DashboardVisualPublishOptions
+import Amazonka.QuickSight.Types.DataColor
+import Amazonka.QuickSight.Types.DataColorPalette
+import Amazonka.QuickSight.Types.DataFieldSeriesItem
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.DataLabelType
+import Amazonka.QuickSight.Types.DataPathColor
+import Amazonka.QuickSight.Types.DataPathLabelType
+import Amazonka.QuickSight.Types.DataPathSort
+import Amazonka.QuickSight.Types.DataPathValue
+import Amazonka.QuickSight.Types.DataSet
+import Amazonka.QuickSight.Types.DataSetConfiguration
+import Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
+import Amazonka.QuickSight.Types.DataSetReference
+import Amazonka.QuickSight.Types.DataSetSchema
+import Amazonka.QuickSight.Types.DataSetSearchFilter
+import Amazonka.QuickSight.Types.DataSetSummary
+import Amazonka.QuickSight.Types.DataSetUsageConfiguration
+import Amazonka.QuickSight.Types.DataSource
+import Amazonka.QuickSight.Types.DataSourceCredentials
+import Amazonka.QuickSight.Types.DataSourceErrorInfo
+import Amazonka.QuickSight.Types.DataSourceParameters
+import Amazonka.QuickSight.Types.DataSourceSearchFilter
+import Amazonka.QuickSight.Types.DataSourceSummary
+import Amazonka.QuickSight.Types.DatabricksParameters
+import Amazonka.QuickSight.Types.DateAxisOptions
+import Amazonka.QuickSight.Types.DateDimensionField
+import Amazonka.QuickSight.Types.DateMeasureField
+import Amazonka.QuickSight.Types.DateTimeDefaultValues
+import Amazonka.QuickSight.Types.DateTimeFormatConfiguration
+import Amazonka.QuickSight.Types.DateTimeHierarchy
+import Amazonka.QuickSight.Types.DateTimeParameter
+import Amazonka.QuickSight.Types.DateTimeParameterDeclaration
+import Amazonka.QuickSight.Types.DateTimePickerControlDisplayOptions
+import Amazonka.QuickSight.Types.DateTimeValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.DecimalDefaultValues
+import Amazonka.QuickSight.Types.DecimalParameter
+import Amazonka.QuickSight.Types.DecimalParameterDeclaration
+import Amazonka.QuickSight.Types.DecimalPlacesConfiguration
+import Amazonka.QuickSight.Types.DecimalValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.DefaultFreeFormLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultGridLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultInteractiveLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultNewSheetConfiguration
+import Amazonka.QuickSight.Types.DefaultPaginatedLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultSectionBasedLayoutConfiguration
+import Amazonka.QuickSight.Types.DestinationParameterValueConfiguration
+import Amazonka.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.DonutCenterOptions
+import Amazonka.QuickSight.Types.DonutOptions
+import Amazonka.QuickSight.Types.DrillDownFilter
+import Amazonka.QuickSight.Types.DropDownControlDisplayOptions
+import Amazonka.QuickSight.Types.DynamicDefaultValue
+import Amazonka.QuickSight.Types.EmptyVisual
+import Amazonka.QuickSight.Types.Entity
+import Amazonka.QuickSight.Types.ErrorInfo
+import Amazonka.QuickSight.Types.ExasolParameters
+import Amazonka.QuickSight.Types.ExcludePeriodConfiguration
+import Amazonka.QuickSight.Types.ExplicitHierarchy
+import Amazonka.QuickSight.Types.ExportHiddenFieldsOption
+import Amazonka.QuickSight.Types.ExportToCSVOption
+import Amazonka.QuickSight.Types.FieldBasedTooltip
+import Amazonka.QuickSight.Types.FieldFolder
+import Amazonka.QuickSight.Types.FieldLabelType
+import Amazonka.QuickSight.Types.FieldSeriesItem
+import Amazonka.QuickSight.Types.FieldSort
+import Amazonka.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.FieldTooltipItem
+import Amazonka.QuickSight.Types.FilledMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.FilledMapConditionalFormatting
+import Amazonka.QuickSight.Types.FilledMapConditionalFormattingOption
+import Amazonka.QuickSight.Types.FilledMapConfiguration
+import Amazonka.QuickSight.Types.FilledMapFieldWells
+import Amazonka.QuickSight.Types.FilledMapShapeConditionalFormatting
+import Amazonka.QuickSight.Types.FilledMapSortConfiguration
+import Amazonka.QuickSight.Types.FilledMapVisual
+import Amazonka.QuickSight.Types.Filter
+import Amazonka.QuickSight.Types.FilterControl
+import Amazonka.QuickSight.Types.FilterDateTimePickerControl
+import Amazonka.QuickSight.Types.FilterDropDownControl
+import Amazonka.QuickSight.Types.FilterGroup
+import Amazonka.QuickSight.Types.FilterListConfiguration
+import Amazonka.QuickSight.Types.FilterListControl
+import Amazonka.QuickSight.Types.FilterOperation
+import Amazonka.QuickSight.Types.FilterOperationSelectedFieldsConfiguration
+import Amazonka.QuickSight.Types.FilterOperationTargetVisualsConfiguration
+import Amazonka.QuickSight.Types.FilterRelativeDateTimeControl
+import Amazonka.QuickSight.Types.FilterScopeConfiguration
+import Amazonka.QuickSight.Types.FilterSelectableValues
+import Amazonka.QuickSight.Types.FilterSliderControl
+import Amazonka.QuickSight.Types.FilterTextAreaControl
+import Amazonka.QuickSight.Types.FilterTextFieldControl
+import Amazonka.QuickSight.Types.Folder
+import Amazonka.QuickSight.Types.FolderMember
+import Amazonka.QuickSight.Types.FolderSearchFilter
+import Amazonka.QuickSight.Types.FolderSummary
+import Amazonka.QuickSight.Types.Font
+import Amazonka.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.FontSize
+import Amazonka.QuickSight.Types.FontWeight
+import Amazonka.QuickSight.Types.ForecastComputation
+import Amazonka.QuickSight.Types.ForecastConfiguration
+import Amazonka.QuickSight.Types.ForecastScenario
+import Amazonka.QuickSight.Types.FormatConfiguration
+import Amazonka.QuickSight.Types.FreeFormLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.FreeFormLayoutConfiguration
+import Amazonka.QuickSight.Types.FreeFormLayoutElement
+import Amazonka.QuickSight.Types.FreeFormLayoutElementBackgroundStyle
+import Amazonka.QuickSight.Types.FreeFormLayoutElementBorderStyle
+import Amazonka.QuickSight.Types.FreeFormLayoutScreenCanvasSizeOptions
+import Amazonka.QuickSight.Types.FreeFormSectionLayoutConfiguration
+import Amazonka.QuickSight.Types.FunnelChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.FunnelChartConfiguration
+import Amazonka.QuickSight.Types.FunnelChartDataLabelOptions
+import Amazonka.QuickSight.Types.FunnelChartFieldWells
+import Amazonka.QuickSight.Types.FunnelChartSortConfiguration
+import Amazonka.QuickSight.Types.FunnelChartVisual
+import Amazonka.QuickSight.Types.GaugeChartArcConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartConditionalFormattingOption
+import Amazonka.QuickSight.Types.GaugeChartConfiguration
+import Amazonka.QuickSight.Types.GaugeChartFieldWells
+import Amazonka.QuickSight.Types.GaugeChartOptions
+import Amazonka.QuickSight.Types.GaugeChartPrimaryValueConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartVisual
+import Amazonka.QuickSight.Types.GeoSpatialColumnGroup
+import Amazonka.QuickSight.Types.GeospatialCoordinateBounds
+import Amazonka.QuickSight.Types.GeospatialMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.GeospatialMapConfiguration
+import Amazonka.QuickSight.Types.GeospatialMapFieldWells
+import Amazonka.QuickSight.Types.GeospatialMapStyleOptions
+import Amazonka.QuickSight.Types.GeospatialMapVisual
+import Amazonka.QuickSight.Types.GeospatialPointStyleOptions
+import Amazonka.QuickSight.Types.GeospatialWindowOptions
+import Amazonka.QuickSight.Types.GlobalTableBorderOptions
+import Amazonka.QuickSight.Types.GradientColor
+import Amazonka.QuickSight.Types.GradientStop
+import Amazonka.QuickSight.Types.GridLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.GridLayoutConfiguration
+import Amazonka.QuickSight.Types.GridLayoutElement
+import Amazonka.QuickSight.Types.GridLayoutScreenCanvasSizeOptions
+import Amazonka.QuickSight.Types.Group
+import Amazonka.QuickSight.Types.GroupMember
+import Amazonka.QuickSight.Types.GroupSearchFilter
+import Amazonka.QuickSight.Types.GrowthRateComputation
+import Amazonka.QuickSight.Types.GutterStyle
+import Amazonka.QuickSight.Types.HeaderFooterSectionConfiguration
+import Amazonka.QuickSight.Types.HeatMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.HeatMapConfiguration
+import Amazonka.QuickSight.Types.HeatMapFieldWells
+import Amazonka.QuickSight.Types.HeatMapSortConfiguration
+import Amazonka.QuickSight.Types.HeatMapVisual
+import Amazonka.QuickSight.Types.HistogramAggregatedFieldWells
+import Amazonka.QuickSight.Types.HistogramBinOptions
+import Amazonka.QuickSight.Types.HistogramConfiguration
+import Amazonka.QuickSight.Types.HistogramFieldWells
+import Amazonka.QuickSight.Types.HistogramVisual
+import Amazonka.QuickSight.Types.IAMPolicyAssignment
+import Amazonka.QuickSight.Types.IAMPolicyAssignmentSummary
+import Amazonka.QuickSight.Types.Ingestion
+import Amazonka.QuickSight.Types.InputColumn
+import Amazonka.QuickSight.Types.InsightConfiguration
+import Amazonka.QuickSight.Types.InsightVisual
+import Amazonka.QuickSight.Types.IntegerDefaultValues
+import Amazonka.QuickSight.Types.IntegerParameter
+import Amazonka.QuickSight.Types.IntegerParameterDeclaration
+import Amazonka.QuickSight.Types.IntegerValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+import Amazonka.QuickSight.Types.JiraParameters
+import Amazonka.QuickSight.Types.JoinInstruction
+import Amazonka.QuickSight.Types.JoinKeyProperties
+import Amazonka.QuickSight.Types.KPIConditionalFormatting
+import Amazonka.QuickSight.Types.KPIConditionalFormattingOption
+import Amazonka.QuickSight.Types.KPIConfiguration
+import Amazonka.QuickSight.Types.KPIFieldWells
+import Amazonka.QuickSight.Types.KPIOptions
+import Amazonka.QuickSight.Types.KPIPrimaryValueConditionalFormatting
+import Amazonka.QuickSight.Types.KPIProgressBarConditionalFormatting
+import Amazonka.QuickSight.Types.KPISortConfiguration
+import Amazonka.QuickSight.Types.KPIVisual
+import Amazonka.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.Layout
+import Amazonka.QuickSight.Types.LayoutConfiguration
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.LineChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.LineChartConfiguration
+import Amazonka.QuickSight.Types.LineChartDefaultSeriesSettings
+import Amazonka.QuickSight.Types.LineChartFieldWells
+import Amazonka.QuickSight.Types.LineChartLineStyleSettings
+import Amazonka.QuickSight.Types.LineChartMarkerStyleSettings
+import Amazonka.QuickSight.Types.LineChartSeriesSettings
+import Amazonka.QuickSight.Types.LineChartSortConfiguration
+import Amazonka.QuickSight.Types.LineChartVisual
+import Amazonka.QuickSight.Types.LineSeriesAxisDisplayOptions
+import Amazonka.QuickSight.Types.LinkSharingConfiguration
+import Amazonka.QuickSight.Types.ListControlDisplayOptions
+import Amazonka.QuickSight.Types.ListControlSearchOptions
+import Amazonka.QuickSight.Types.ListControlSelectAllOptions
+import Amazonka.QuickSight.Types.LoadingAnimation
+import Amazonka.QuickSight.Types.LocalNavigationConfiguration
+import Amazonka.QuickSight.Types.LogicalTable
+import Amazonka.QuickSight.Types.LogicalTableSource
+import Amazonka.QuickSight.Types.LongFormatText
+import Amazonka.QuickSight.Types.ManifestFileLocation
+import Amazonka.QuickSight.Types.MarginStyle
+import Amazonka.QuickSight.Types.MariaDbParameters
+import Amazonka.QuickSight.Types.MaximumLabelType
+import Amazonka.QuickSight.Types.MaximumMinimumComputation
+import Amazonka.QuickSight.Types.MeasureField
+import Amazonka.QuickSight.Types.MemberIdArnPair
+import Amazonka.QuickSight.Types.MetricComparisonComputation
+import Amazonka.QuickSight.Types.MinimumLabelType
+import Amazonka.QuickSight.Types.MissingDataConfiguration
+import Amazonka.QuickSight.Types.MySqlParameters
+import Amazonka.QuickSight.Types.NamespaceError
+import Amazonka.QuickSight.Types.NamespaceInfoV2
+import Amazonka.QuickSight.Types.NegativeValueConfiguration
+import Amazonka.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumberDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.NumberFormatConfiguration
+import Amazonka.QuickSight.Types.NumericAxisOptions
+import Amazonka.QuickSight.Types.NumericEqualityDrillDownFilter
+import Amazonka.QuickSight.Types.NumericEqualityFilter
+import Amazonka.QuickSight.Types.NumericFormatConfiguration
+import Amazonka.QuickSight.Types.NumericRangeFilter
+import Amazonka.QuickSight.Types.NumericRangeFilterValue
+import Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+import Amazonka.QuickSight.Types.NumericalAggregationFunction
+import Amazonka.QuickSight.Types.NumericalDimensionField
+import Amazonka.QuickSight.Types.NumericalMeasureField
+import Amazonka.QuickSight.Types.OracleParameters
+import Amazonka.QuickSight.Types.OutputColumn
+import Amazonka.QuickSight.Types.PaginationConfiguration
+import Amazonka.QuickSight.Types.PanelConfiguration
+import Amazonka.QuickSight.Types.PanelTitleOptions
+import Amazonka.QuickSight.Types.ParameterControl
+import Amazonka.QuickSight.Types.ParameterDateTimePickerControl
+import Amazonka.QuickSight.Types.ParameterDeclaration
+import Amazonka.QuickSight.Types.ParameterDropDownControl
+import Amazonka.QuickSight.Types.ParameterListControl
+import Amazonka.QuickSight.Types.ParameterSelectableValues
+import Amazonka.QuickSight.Types.ParameterSliderControl
+import Amazonka.QuickSight.Types.ParameterTextAreaControl
+import Amazonka.QuickSight.Types.ParameterTextFieldControl
+import Amazonka.QuickSight.Types.Parameters
+import Amazonka.QuickSight.Types.PercentVisibleRange
+import Amazonka.QuickSight.Types.PercentageDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.PercentileAggregation
+import Amazonka.QuickSight.Types.PeriodOverPeriodComputation
+import Amazonka.QuickSight.Types.PeriodToDateComputation
+import Amazonka.QuickSight.Types.PhysicalTable
+import Amazonka.QuickSight.Types.PieChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.PieChartConfiguration
+import Amazonka.QuickSight.Types.PieChartFieldWells
+import Amazonka.QuickSight.Types.PieChartSortConfiguration
+import Amazonka.QuickSight.Types.PieChartVisual
+import Amazonka.QuickSight.Types.PivotFieldSortOptions
+import Amazonka.QuickSight.Types.PivotTableAggregatedFieldWells
+import Amazonka.QuickSight.Types.PivotTableCellConditionalFormatting
+import Amazonka.QuickSight.Types.PivotTableConditionalFormatting
+import Amazonka.QuickSight.Types.PivotTableConditionalFormattingOption
+import Amazonka.QuickSight.Types.PivotTableConditionalFormattingScope
+import Amazonka.QuickSight.Types.PivotTableConfiguration
+import Amazonka.QuickSight.Types.PivotTableDataPathOption
+import Amazonka.QuickSight.Types.PivotTableFieldOption
+import Amazonka.QuickSight.Types.PivotTableFieldOptions
+import Amazonka.QuickSight.Types.PivotTableFieldSubtotalOptions
+import Amazonka.QuickSight.Types.PivotTableFieldWells
+import Amazonka.QuickSight.Types.PivotTableOptions
+import Amazonka.QuickSight.Types.PivotTablePaginatedReportOptions
+import Amazonka.QuickSight.Types.PivotTableSortBy
+import Amazonka.QuickSight.Types.PivotTableSortConfiguration
+import Amazonka.QuickSight.Types.PivotTableTotalOptions
+import Amazonka.QuickSight.Types.PivotTableVisual
+import Amazonka.QuickSight.Types.PivotTotalOptions
+import Amazonka.QuickSight.Types.PostgreSqlParameters
+import Amazonka.QuickSight.Types.PredefinedHierarchy
+import Amazonka.QuickSight.Types.PrestoParameters
+import Amazonka.QuickSight.Types.ProgressBarOptions
+import Amazonka.QuickSight.Types.ProjectOperation
+import Amazonka.QuickSight.Types.QueueInfo
+import Amazonka.QuickSight.Types.RangeEndsLabelType
+import Amazonka.QuickSight.Types.RdsParameters
+import Amazonka.QuickSight.Types.RedshiftParameters
+import Amazonka.QuickSight.Types.ReferenceLine
+import Amazonka.QuickSight.Types.ReferenceLineCustomLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineDynamicDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineStaticDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineStyleConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineValueLabelConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserDashboardEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserDashboardVisualEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserEmbeddingExperienceConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserQSearchBarEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserQuickSightConsoleEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RelationalTable
+import Amazonka.QuickSight.Types.RelativeDateTimeControlDisplayOptions
+import Amazonka.QuickSight.Types.RelativeDatesFilter
+import Amazonka.QuickSight.Types.RenameColumnOperation
+import Amazonka.QuickSight.Types.ResourcePermission
+import Amazonka.QuickSight.Types.RollingDateConfiguration
+import Amazonka.QuickSight.Types.RowAlternateColorOptions
+import Amazonka.QuickSight.Types.RowInfo
+import Amazonka.QuickSight.Types.RowLevelPermissionDataSet
+import Amazonka.QuickSight.Types.RowLevelPermissionTagConfiguration
+import Amazonka.QuickSight.Types.RowLevelPermissionTagRule
+import Amazonka.QuickSight.Types.S3Parameters
+import Amazonka.QuickSight.Types.S3Source
+import Amazonka.QuickSight.Types.SameSheetTargetVisualConfiguration
+import Amazonka.QuickSight.Types.SankeyDiagramAggregatedFieldWells
+import Amazonka.QuickSight.Types.SankeyDiagramChartConfiguration
+import Amazonka.QuickSight.Types.SankeyDiagramFieldWells
+import Amazonka.QuickSight.Types.SankeyDiagramSortConfiguration
+import Amazonka.QuickSight.Types.SankeyDiagramVisual
+import Amazonka.QuickSight.Types.ScatterPlotCategoricallyAggregatedFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotConfiguration
+import Amazonka.QuickSight.Types.ScatterPlotFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotUnaggregatedFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotVisual
+import Amazonka.QuickSight.Types.ScrollBarOptions
+import Amazonka.QuickSight.Types.SecondaryValueOptions
+import Amazonka.QuickSight.Types.SectionAfterPageBreak
+import Amazonka.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.SectionBasedLayoutConfiguration
+import Amazonka.QuickSight.Types.SectionBasedLayoutPaperCanvasSizeOptions
+import Amazonka.QuickSight.Types.SectionLayoutConfiguration
+import Amazonka.QuickSight.Types.SectionPageBreakConfiguration
+import Amazonka.QuickSight.Types.SectionStyle
+import Amazonka.QuickSight.Types.SelectedSheetsFilterScopeConfiguration
+import Amazonka.QuickSight.Types.SeriesItem
+import Amazonka.QuickSight.Types.ServiceNowParameters
+import Amazonka.QuickSight.Types.SessionTag
+import Amazonka.QuickSight.Types.SetParameterValueConfiguration
+import Amazonka.QuickSight.Types.ShapeConditionalFormat
+import Amazonka.QuickSight.Types.Sheet
+import Amazonka.QuickSight.Types.SheetControlLayout
+import Amazonka.QuickSight.Types.SheetControlLayoutConfiguration
+import Amazonka.QuickSight.Types.SheetControlsOption
+import Amazonka.QuickSight.Types.SheetDefinition
+import Amazonka.QuickSight.Types.SheetElementConfigurationOverrides
+import Amazonka.QuickSight.Types.SheetElementRenderingRule
+import Amazonka.QuickSight.Types.SheetStyle
+import Amazonka.QuickSight.Types.SheetTextBox
+import Amazonka.QuickSight.Types.SheetVisualScopingConfiguration
+import Amazonka.QuickSight.Types.ShortFormatText
+import Amazonka.QuickSight.Types.SignupResponse
+import Amazonka.QuickSight.Types.SimpleClusterMarker
+import Amazonka.QuickSight.Types.SliderControlDisplayOptions
+import Amazonka.QuickSight.Types.SmallMultiplesOptions
+import Amazonka.QuickSight.Types.SnowflakeParameters
+import Amazonka.QuickSight.Types.Spacing
+import Amazonka.QuickSight.Types.SparkParameters
+import Amazonka.QuickSight.Types.SqlServerParameters
+import Amazonka.QuickSight.Types.SslProperties
+import Amazonka.QuickSight.Types.StringDefaultValues
+import Amazonka.QuickSight.Types.StringFormatConfiguration
+import Amazonka.QuickSight.Types.StringParameter
+import Amazonka.QuickSight.Types.StringParameterDeclaration
+import Amazonka.QuickSight.Types.StringValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.SubtotalOptions
+import Amazonka.QuickSight.Types.TableAggregatedFieldWells
+import Amazonka.QuickSight.Types.TableBorderOptions
+import Amazonka.QuickSight.Types.TableCellConditionalFormatting
+import Amazonka.QuickSight.Types.TableCellImageSizingConfiguration
+import Amazonka.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.TableConditionalFormatting
+import Amazonka.QuickSight.Types.TableConditionalFormattingOption
+import Amazonka.QuickSight.Types.TableConfiguration
+import Amazonka.QuickSight.Types.TableFieldCustomIconContent
+import Amazonka.QuickSight.Types.TableFieldCustomTextContent
+import Amazonka.QuickSight.Types.TableFieldImageConfiguration
+import Amazonka.QuickSight.Types.TableFieldLinkConfiguration
+import Amazonka.QuickSight.Types.TableFieldLinkContentConfiguration
+import Amazonka.QuickSight.Types.TableFieldOption
+import Amazonka.QuickSight.Types.TableFieldOptions
+import Amazonka.QuickSight.Types.TableFieldURLConfiguration
+import Amazonka.QuickSight.Types.TableFieldWells
+import Amazonka.QuickSight.Types.TableOptions
+import Amazonka.QuickSight.Types.TablePaginatedReportOptions
+import Amazonka.QuickSight.Types.TableRowConditionalFormatting
+import Amazonka.QuickSight.Types.TableSideBorderOptions
+import Amazonka.QuickSight.Types.TableSortConfiguration
+import Amazonka.QuickSight.Types.TableUnaggregatedFieldWells
+import Amazonka.QuickSight.Types.TableVisual
+import Amazonka.QuickSight.Types.Tag
+import Amazonka.QuickSight.Types.TagColumnOperation
+import Amazonka.QuickSight.Types.Template
+import Amazonka.QuickSight.Types.TemplateAlias
+import Amazonka.QuickSight.Types.TemplateError
+import Amazonka.QuickSight.Types.TemplateSourceAnalysis
+import Amazonka.QuickSight.Types.TemplateSourceEntity
+import Amazonka.QuickSight.Types.TemplateSourceTemplate
+import Amazonka.QuickSight.Types.TemplateSummary
+import Amazonka.QuickSight.Types.TemplateVersion
+import Amazonka.QuickSight.Types.TemplateVersionDefinition
+import Amazonka.QuickSight.Types.TemplateVersionSummary
+import Amazonka.QuickSight.Types.TeradataParameters
+import Amazonka.QuickSight.Types.TextAreaControlDisplayOptions
+import Amazonka.QuickSight.Types.TextConditionalFormat
+import Amazonka.QuickSight.Types.TextControlPlaceholderOptions
+import Amazonka.QuickSight.Types.TextFieldControlDisplayOptions
+import Amazonka.QuickSight.Types.Theme
+import Amazonka.QuickSight.Types.ThemeAlias
+import Amazonka.QuickSight.Types.ThemeConfiguration
+import Amazonka.QuickSight.Types.ThemeError
+import Amazonka.QuickSight.Types.ThemeSummary
+import Amazonka.QuickSight.Types.ThemeVersion
+import Amazonka.QuickSight.Types.ThemeVersionSummary
+import Amazonka.QuickSight.Types.ThousandSeparatorOptions
+import Amazonka.QuickSight.Types.TileLayoutStyle
+import Amazonka.QuickSight.Types.TileStyle
+import Amazonka.QuickSight.Types.TimeBasedForecastProperties
+import Amazonka.QuickSight.Types.TimeEqualityFilter
+import Amazonka.QuickSight.Types.TimeRangeDrillDownFilter
+import Amazonka.QuickSight.Types.TimeRangeFilter
+import Amazonka.QuickSight.Types.TimeRangeFilterValue
+import Amazonka.QuickSight.Types.TooltipItem
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.TopBottomFilter
+import Amazonka.QuickSight.Types.TopBottomMoversComputation
+import Amazonka.QuickSight.Types.TopBottomRankedComputation
+import Amazonka.QuickSight.Types.TotalAggregationComputation
+import Amazonka.QuickSight.Types.TotalOptions
+import Amazonka.QuickSight.Types.TransformOperation
+import Amazonka.QuickSight.Types.TreeMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.TreeMapConfiguration
+import Amazonka.QuickSight.Types.TreeMapFieldWells
+import Amazonka.QuickSight.Types.TreeMapSortConfiguration
+import Amazonka.QuickSight.Types.TreeMapVisual
+import Amazonka.QuickSight.Types.TrendArrowOptions
+import Amazonka.QuickSight.Types.TwitterParameters
+import Amazonka.QuickSight.Types.Typography
+import Amazonka.QuickSight.Types.UIColorPalette
+import Amazonka.QuickSight.Types.UnaggregatedField
+import Amazonka.QuickSight.Types.UniqueValuesComputation
+import Amazonka.QuickSight.Types.UntagColumnOperation
+import Amazonka.QuickSight.Types.UploadSettings
+import Amazonka.QuickSight.Types.User
+import Amazonka.QuickSight.Types.VisibleRangeOptions
+import Amazonka.QuickSight.Types.Visual
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualCustomActionOperation
+import Amazonka.QuickSight.Types.VisualPalette
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+import Amazonka.QuickSight.Types.VpcConnectionProperties
+import Amazonka.QuickSight.Types.WaterfallChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.WaterfallChartConfiguration
+import Amazonka.QuickSight.Types.WaterfallChartFieldWells
+import Amazonka.QuickSight.Types.WaterfallChartOptions
+import Amazonka.QuickSight.Types.WaterfallChartSortConfiguration
+import Amazonka.QuickSight.Types.WaterfallVisual
+import Amazonka.QuickSight.Types.WhatIfPointScenario
+import Amazonka.QuickSight.Types.WhatIfRangeScenario
+import Amazonka.QuickSight.Types.WordCloudAggregatedFieldWells
+import Amazonka.QuickSight.Types.WordCloudChartConfiguration
+import Amazonka.QuickSight.Types.WordCloudFieldWells
+import Amazonka.QuickSight.Types.WordCloudOptions
+import Amazonka.QuickSight.Types.WordCloudSortConfiguration
+import Amazonka.QuickSight.Types.WordCloudVisual
+import Amazonka.QuickSight.UntagResource
+import Amazonka.QuickSight.UpdateAccountCustomization
+import Amazonka.QuickSight.UpdateAccountSettings
+import Amazonka.QuickSight.UpdateAnalysis
+import Amazonka.QuickSight.UpdateAnalysisPermissions
+import Amazonka.QuickSight.UpdateDashboard
+import Amazonka.QuickSight.UpdateDashboardPermissions
+import Amazonka.QuickSight.UpdateDashboardPublishedVersion
+import Amazonka.QuickSight.UpdateDataSet
+import Amazonka.QuickSight.UpdateDataSetPermissions
+import Amazonka.QuickSight.UpdateDataSource
+import Amazonka.QuickSight.UpdateDataSourcePermissions
+import Amazonka.QuickSight.UpdateFolder
+import Amazonka.QuickSight.UpdateFolderPermissions
+import Amazonka.QuickSight.UpdateGroup
+import Amazonka.QuickSight.UpdateIAMPolicyAssignment
+import Amazonka.QuickSight.UpdateIpRestriction
+import Amazonka.QuickSight.UpdatePublicSharingSettings
+import Amazonka.QuickSight.UpdateTemplate
+import Amazonka.QuickSight.UpdateTemplateAlias
+import Amazonka.QuickSight.UpdateTemplatePermissions
+import Amazonka.QuickSight.UpdateTheme
+import Amazonka.QuickSight.UpdateThemeAlias
+import Amazonka.QuickSight.UpdateThemePermissions
+import Amazonka.QuickSight.UpdateUser
diff --git a/gen/Amazonka/QuickSight/ListAnalyses.hs b/gen/Amazonka/QuickSight/ListAnalyses.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListAnalyses.hs
@@ -0,0 +1,241 @@
+{-# 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.QuickSight.ListAnalyses
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists Amazon QuickSight analyses that exist in the specified Amazon Web
+-- Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListAnalyses
+  ( -- * Creating a Request
+    ListAnalyses (..),
+    newListAnalyses,
+
+    -- * Request Lenses
+    listAnalyses_maxResults,
+    listAnalyses_nextToken,
+    listAnalyses_awsAccountId,
+
+    -- * Destructuring the Response
+    ListAnalysesResponse (..),
+    newListAnalysesResponse,
+
+    -- * Response Lenses
+    listAnalysesResponse_analysisSummaryList,
+    listAnalysesResponse_nextToken,
+    listAnalysesResponse_requestId,
+    listAnalysesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAnalyses' smart constructor.
+data ListAnalyses = ListAnalyses'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the analyses.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAnalyses' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAnalyses_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listAnalyses_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'listAnalyses_awsAccountId' - The ID of the Amazon Web Services account that contains the analyses.
+newListAnalyses ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListAnalyses
+newListAnalyses pAwsAccountId_ =
+  ListAnalyses'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to return.
+listAnalyses_maxResults :: Lens.Lens' ListAnalyses (Prelude.Maybe Prelude.Natural)
+listAnalyses_maxResults = Lens.lens (\ListAnalyses' {maxResults} -> maxResults) (\s@ListAnalyses' {} a -> s {maxResults = a} :: ListAnalyses)
+
+-- | A pagination token that can be used in a subsequent request.
+listAnalyses_nextToken :: Lens.Lens' ListAnalyses (Prelude.Maybe Prelude.Text)
+listAnalyses_nextToken = Lens.lens (\ListAnalyses' {nextToken} -> nextToken) (\s@ListAnalyses' {} a -> s {nextToken = a} :: ListAnalyses)
+
+-- | The ID of the Amazon Web Services account that contains the analyses.
+listAnalyses_awsAccountId :: Lens.Lens' ListAnalyses Prelude.Text
+listAnalyses_awsAccountId = Lens.lens (\ListAnalyses' {awsAccountId} -> awsAccountId) (\s@ListAnalyses' {} a -> s {awsAccountId = a} :: ListAnalyses)
+
+instance Core.AWSPager ListAnalyses where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAnalysesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAnalysesResponse_analysisSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAnalyses_nextToken
+          Lens..~ rs
+          Lens.^? listAnalysesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAnalyses where
+  type AWSResponse ListAnalyses = ListAnalysesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAnalysesResponse'
+            Prelude.<$> ( x
+                            Data..?> "AnalysisSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAnalyses where
+  hashWithSalt _salt ListAnalyses' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListAnalyses where
+  rnf ListAnalyses' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListAnalyses where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListAnalyses where
+  toPath ListAnalyses' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/analyses"]
+
+instance Data.ToQuery ListAnalyses where
+  toQuery ListAnalyses' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListAnalysesResponse' smart constructor.
+data ListAnalysesResponse = ListAnalysesResponse'
+  { -- | Metadata describing each of the analyses that are listed.
+    analysisSummaryList :: Prelude.Maybe [AnalysisSummary],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAnalysesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisSummaryList', 'listAnalysesResponse_analysisSummaryList' - Metadata describing each of the analyses that are listed.
+--
+-- 'nextToken', 'listAnalysesResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'listAnalysesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listAnalysesResponse_status' - The HTTP status of the request.
+newListAnalysesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListAnalysesResponse
+newListAnalysesResponse pStatus_ =
+  ListAnalysesResponse'
+    { analysisSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Metadata describing each of the analyses that are listed.
+listAnalysesResponse_analysisSummaryList :: Lens.Lens' ListAnalysesResponse (Prelude.Maybe [AnalysisSummary])
+listAnalysesResponse_analysisSummaryList = Lens.lens (\ListAnalysesResponse' {analysisSummaryList} -> analysisSummaryList) (\s@ListAnalysesResponse' {} a -> s {analysisSummaryList = a} :: ListAnalysesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+listAnalysesResponse_nextToken :: Lens.Lens' ListAnalysesResponse (Prelude.Maybe Prelude.Text)
+listAnalysesResponse_nextToken = Lens.lens (\ListAnalysesResponse' {nextToken} -> nextToken) (\s@ListAnalysesResponse' {} a -> s {nextToken = a} :: ListAnalysesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listAnalysesResponse_requestId :: Lens.Lens' ListAnalysesResponse (Prelude.Maybe Prelude.Text)
+listAnalysesResponse_requestId = Lens.lens (\ListAnalysesResponse' {requestId} -> requestId) (\s@ListAnalysesResponse' {} a -> s {requestId = a} :: ListAnalysesResponse)
+
+-- | The HTTP status of the request.
+listAnalysesResponse_status :: Lens.Lens' ListAnalysesResponse Prelude.Int
+listAnalysesResponse_status = Lens.lens (\ListAnalysesResponse' {status} -> status) (\s@ListAnalysesResponse' {} a -> s {status = a} :: ListAnalysesResponse)
+
+instance Prelude.NFData ListAnalysesResponse where
+  rnf ListAnalysesResponse' {..} =
+    Prelude.rnf analysisSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListDashboardVersions.hs b/gen/Amazonka/QuickSight/ListDashboardVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListDashboardVersions.hs
@@ -0,0 +1,275 @@
+{-# 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.QuickSight.ListDashboardVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the versions of the dashboards in the Amazon QuickSight
+-- subscription.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListDashboardVersions
+  ( -- * Creating a Request
+    ListDashboardVersions (..),
+    newListDashboardVersions,
+
+    -- * Request Lenses
+    listDashboardVersions_maxResults,
+    listDashboardVersions_nextToken,
+    listDashboardVersions_awsAccountId,
+    listDashboardVersions_dashboardId,
+
+    -- * Destructuring the Response
+    ListDashboardVersionsResponse (..),
+    newListDashboardVersionsResponse,
+
+    -- * Response Lenses
+    listDashboardVersionsResponse_dashboardVersionSummaryList,
+    listDashboardVersionsResponse_nextToken,
+    listDashboardVersionsResponse_requestId,
+    listDashboardVersionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDashboardVersions' smart constructor.
+data ListDashboardVersions = ListDashboardVersions'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re listing versions for.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDashboardVersions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDashboardVersions_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listDashboardVersions_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listDashboardVersions_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re listing versions for.
+--
+-- 'dashboardId', 'listDashboardVersions_dashboardId' - The ID for the dashboard.
+newListDashboardVersions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  ListDashboardVersions
+newListDashboardVersions pAwsAccountId_ pDashboardId_ =
+  ListDashboardVersions'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      dashboardId = pDashboardId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listDashboardVersions_maxResults :: Lens.Lens' ListDashboardVersions (Prelude.Maybe Prelude.Natural)
+listDashboardVersions_maxResults = Lens.lens (\ListDashboardVersions' {maxResults} -> maxResults) (\s@ListDashboardVersions' {} a -> s {maxResults = a} :: ListDashboardVersions)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDashboardVersions_nextToken :: Lens.Lens' ListDashboardVersions (Prelude.Maybe Prelude.Text)
+listDashboardVersions_nextToken = Lens.lens (\ListDashboardVersions' {nextToken} -> nextToken) (\s@ListDashboardVersions' {} a -> s {nextToken = a} :: ListDashboardVersions)
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re listing versions for.
+listDashboardVersions_awsAccountId :: Lens.Lens' ListDashboardVersions Prelude.Text
+listDashboardVersions_awsAccountId = Lens.lens (\ListDashboardVersions' {awsAccountId} -> awsAccountId) (\s@ListDashboardVersions' {} a -> s {awsAccountId = a} :: ListDashboardVersions)
+
+-- | The ID for the dashboard.
+listDashboardVersions_dashboardId :: Lens.Lens' ListDashboardVersions Prelude.Text
+listDashboardVersions_dashboardId = Lens.lens (\ListDashboardVersions' {dashboardId} -> dashboardId) (\s@ListDashboardVersions' {} a -> s {dashboardId = a} :: ListDashboardVersions)
+
+instance Core.AWSPager ListDashboardVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDashboardVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDashboardVersionsResponse_dashboardVersionSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDashboardVersions_nextToken
+          Lens..~ rs
+          Lens.^? listDashboardVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDashboardVersions where
+  type
+    AWSResponse ListDashboardVersions =
+      ListDashboardVersionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDashboardVersionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DashboardVersionSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDashboardVersions where
+  hashWithSalt _salt ListDashboardVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+
+instance Prelude.NFData ListDashboardVersions where
+  rnf ListDashboardVersions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+
+instance Data.ToHeaders ListDashboardVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListDashboardVersions where
+  toPath ListDashboardVersions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId,
+        "/versions"
+      ]
+
+instance Data.ToQuery ListDashboardVersions where
+  toQuery ListDashboardVersions' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListDashboardVersionsResponse' smart constructor.
+data ListDashboardVersionsResponse = ListDashboardVersionsResponse'
+  { -- | A structure that contains information about each version of the
+    -- dashboard.
+    dashboardVersionSummaryList :: Prelude.Maybe [DashboardVersionSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDashboardVersionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardVersionSummaryList', 'listDashboardVersionsResponse_dashboardVersionSummaryList' - A structure that contains information about each version of the
+-- dashboard.
+--
+-- 'nextToken', 'listDashboardVersionsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listDashboardVersionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listDashboardVersionsResponse_status' - The HTTP status of the request.
+newListDashboardVersionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListDashboardVersionsResponse
+newListDashboardVersionsResponse pStatus_ =
+  ListDashboardVersionsResponse'
+    { dashboardVersionSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A structure that contains information about each version of the
+-- dashboard.
+listDashboardVersionsResponse_dashboardVersionSummaryList :: Lens.Lens' ListDashboardVersionsResponse (Prelude.Maybe [DashboardVersionSummary])
+listDashboardVersionsResponse_dashboardVersionSummaryList = Lens.lens (\ListDashboardVersionsResponse' {dashboardVersionSummaryList} -> dashboardVersionSummaryList) (\s@ListDashboardVersionsResponse' {} a -> s {dashboardVersionSummaryList = a} :: ListDashboardVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDashboardVersionsResponse_nextToken :: Lens.Lens' ListDashboardVersionsResponse (Prelude.Maybe Prelude.Text)
+listDashboardVersionsResponse_nextToken = Lens.lens (\ListDashboardVersionsResponse' {nextToken} -> nextToken) (\s@ListDashboardVersionsResponse' {} a -> s {nextToken = a} :: ListDashboardVersionsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listDashboardVersionsResponse_requestId :: Lens.Lens' ListDashboardVersionsResponse (Prelude.Maybe Prelude.Text)
+listDashboardVersionsResponse_requestId = Lens.lens (\ListDashboardVersionsResponse' {requestId} -> requestId) (\s@ListDashboardVersionsResponse' {} a -> s {requestId = a} :: ListDashboardVersionsResponse)
+
+-- | The HTTP status of the request.
+listDashboardVersionsResponse_status :: Lens.Lens' ListDashboardVersionsResponse Prelude.Int
+listDashboardVersionsResponse_status = Lens.lens (\ListDashboardVersionsResponse' {status} -> status) (\s@ListDashboardVersionsResponse' {} a -> s {status = a} :: ListDashboardVersionsResponse)
+
+instance Prelude.NFData ListDashboardVersionsResponse where
+  rnf ListDashboardVersionsResponse' {..} =
+    Prelude.rnf dashboardVersionSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListDashboards.hs b/gen/Amazonka/QuickSight/ListDashboards.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListDashboards.hs
@@ -0,0 +1,257 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListDashboards
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists dashboards in an Amazon Web Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListDashboards
+  ( -- * Creating a Request
+    ListDashboards (..),
+    newListDashboards,
+
+    -- * Request Lenses
+    listDashboards_maxResults,
+    listDashboards_nextToken,
+    listDashboards_awsAccountId,
+
+    -- * Destructuring the Response
+    ListDashboardsResponse (..),
+    newListDashboardsResponse,
+
+    -- * Response Lenses
+    listDashboardsResponse_dashboardSummaryList,
+    listDashboardsResponse_nextToken,
+    listDashboardsResponse_requestId,
+    listDashboardsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDashboards' smart constructor.
+data ListDashboards = ListDashboards'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the dashboards
+    -- that you\'re listing.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDashboards' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDashboards_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listDashboards_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listDashboards_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboards
+-- that you\'re listing.
+newListDashboards ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListDashboards
+newListDashboards pAwsAccountId_ =
+  ListDashboards'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listDashboards_maxResults :: Lens.Lens' ListDashboards (Prelude.Maybe Prelude.Natural)
+listDashboards_maxResults = Lens.lens (\ListDashboards' {maxResults} -> maxResults) (\s@ListDashboards' {} a -> s {maxResults = a} :: ListDashboards)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDashboards_nextToken :: Lens.Lens' ListDashboards (Prelude.Maybe Prelude.Text)
+listDashboards_nextToken = Lens.lens (\ListDashboards' {nextToken} -> nextToken) (\s@ListDashboards' {} a -> s {nextToken = a} :: ListDashboards)
+
+-- | The ID of the Amazon Web Services account that contains the dashboards
+-- that you\'re listing.
+listDashboards_awsAccountId :: Lens.Lens' ListDashboards Prelude.Text
+listDashboards_awsAccountId = Lens.lens (\ListDashboards' {awsAccountId} -> awsAccountId) (\s@ListDashboards' {} a -> s {awsAccountId = a} :: ListDashboards)
+
+instance Core.AWSPager ListDashboards where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDashboardsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDashboardsResponse_dashboardSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDashboards_nextToken
+          Lens..~ rs
+          Lens.^? listDashboardsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDashboards where
+  type
+    AWSResponse ListDashboards =
+      ListDashboardsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDashboardsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DashboardSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDashboards where
+  hashWithSalt _salt ListDashboards' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListDashboards where
+  rnf ListDashboards' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListDashboards where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListDashboards where
+  toPath ListDashboards' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/dashboards"]
+
+instance Data.ToQuery ListDashboards where
+  toQuery ListDashboards' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListDashboardsResponse' smart constructor.
+data ListDashboardsResponse = ListDashboardsResponse'
+  { -- | A structure that contains all of the dashboards in your Amazon Web
+    -- Services account. This structure provides basic information about the
+    -- dashboards.
+    dashboardSummaryList :: Prelude.Maybe [DashboardSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDashboardsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardSummaryList', 'listDashboardsResponse_dashboardSummaryList' - A structure that contains all of the dashboards in your Amazon Web
+-- Services account. This structure provides basic information about the
+-- dashboards.
+--
+-- 'nextToken', 'listDashboardsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listDashboardsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listDashboardsResponse_status' - The HTTP status of the request.
+newListDashboardsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListDashboardsResponse
+newListDashboardsResponse pStatus_ =
+  ListDashboardsResponse'
+    { dashboardSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A structure that contains all of the dashboards in your Amazon Web
+-- Services account. This structure provides basic information about the
+-- dashboards.
+listDashboardsResponse_dashboardSummaryList :: Lens.Lens' ListDashboardsResponse (Prelude.Maybe [DashboardSummary])
+listDashboardsResponse_dashboardSummaryList = Lens.lens (\ListDashboardsResponse' {dashboardSummaryList} -> dashboardSummaryList) (\s@ListDashboardsResponse' {} a -> s {dashboardSummaryList = a} :: ListDashboardsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDashboardsResponse_nextToken :: Lens.Lens' ListDashboardsResponse (Prelude.Maybe Prelude.Text)
+listDashboardsResponse_nextToken = Lens.lens (\ListDashboardsResponse' {nextToken} -> nextToken) (\s@ListDashboardsResponse' {} a -> s {nextToken = a} :: ListDashboardsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listDashboardsResponse_requestId :: Lens.Lens' ListDashboardsResponse (Prelude.Maybe Prelude.Text)
+listDashboardsResponse_requestId = Lens.lens (\ListDashboardsResponse' {requestId} -> requestId) (\s@ListDashboardsResponse' {} a -> s {requestId = a} :: ListDashboardsResponse)
+
+-- | The HTTP status of the request.
+listDashboardsResponse_status :: Lens.Lens' ListDashboardsResponse Prelude.Int
+listDashboardsResponse_status = Lens.lens (\ListDashboardsResponse' {status} -> status) (\s@ListDashboardsResponse' {} a -> s {status = a} :: ListDashboardsResponse)
+
+instance Prelude.NFData ListDashboardsResponse where
+  rnf ListDashboardsResponse' {..} =
+    Prelude.rnf dashboardSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListDataSets.hs b/gen/Amazonka/QuickSight/ListDataSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListDataSets.hs
@@ -0,0 +1,250 @@
+{-# 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.QuickSight.ListDataSets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all of the datasets belonging to the current Amazon Web Services
+-- account in an Amazon Web Services Region.
+--
+-- The permissions resource is
+-- @arn:aws:quicksight:region:aws-account-id:dataset\/*@.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListDataSets
+  ( -- * Creating a Request
+    ListDataSets (..),
+    newListDataSets,
+
+    -- * Request Lenses
+    listDataSets_maxResults,
+    listDataSets_nextToken,
+    listDataSets_awsAccountId,
+
+    -- * Destructuring the Response
+    ListDataSetsResponse (..),
+    newListDataSetsResponse,
+
+    -- * Response Lenses
+    listDataSetsResponse_dataSetSummaries,
+    listDataSetsResponse_nextToken,
+    listDataSetsResponse_requestId,
+    listDataSetsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDataSets' smart constructor.
+data ListDataSets = ListDataSets'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataSets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDataSets_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listDataSets_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listDataSets_awsAccountId' - The Amazon Web Services account ID.
+newListDataSets ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListDataSets
+newListDataSets pAwsAccountId_ =
+  ListDataSets'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listDataSets_maxResults :: Lens.Lens' ListDataSets (Prelude.Maybe Prelude.Natural)
+listDataSets_maxResults = Lens.lens (\ListDataSets' {maxResults} -> maxResults) (\s@ListDataSets' {} a -> s {maxResults = a} :: ListDataSets)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDataSets_nextToken :: Lens.Lens' ListDataSets (Prelude.Maybe Prelude.Text)
+listDataSets_nextToken = Lens.lens (\ListDataSets' {nextToken} -> nextToken) (\s@ListDataSets' {} a -> s {nextToken = a} :: ListDataSets)
+
+-- | The Amazon Web Services account ID.
+listDataSets_awsAccountId :: Lens.Lens' ListDataSets Prelude.Text
+listDataSets_awsAccountId = Lens.lens (\ListDataSets' {awsAccountId} -> awsAccountId) (\s@ListDataSets' {} a -> s {awsAccountId = a} :: ListDataSets)
+
+instance Core.AWSPager ListDataSets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDataSetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDataSetsResponse_dataSetSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDataSets_nextToken
+          Lens..~ rs
+          Lens.^? listDataSetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDataSets where
+  type AWSResponse ListDataSets = ListDataSetsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDataSetsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DataSetSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDataSets where
+  hashWithSalt _salt ListDataSets' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListDataSets where
+  rnf ListDataSets' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListDataSets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListDataSets where
+  toPath ListDataSets' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/data-sets"]
+
+instance Data.ToQuery ListDataSets where
+  toQuery ListDataSets' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListDataSetsResponse' smart constructor.
+data ListDataSetsResponse = ListDataSetsResponse'
+  { -- | The list of dataset summaries.
+    dataSetSummaries :: Prelude.Maybe [DataSetSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataSetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetSummaries', 'listDataSetsResponse_dataSetSummaries' - The list of dataset summaries.
+--
+-- 'nextToken', 'listDataSetsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listDataSetsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listDataSetsResponse_status' - The HTTP status of the request.
+newListDataSetsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListDataSetsResponse
+newListDataSetsResponse pStatus_ =
+  ListDataSetsResponse'
+    { dataSetSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The list of dataset summaries.
+listDataSetsResponse_dataSetSummaries :: Lens.Lens' ListDataSetsResponse (Prelude.Maybe [DataSetSummary])
+listDataSetsResponse_dataSetSummaries = Lens.lens (\ListDataSetsResponse' {dataSetSummaries} -> dataSetSummaries) (\s@ListDataSetsResponse' {} a -> s {dataSetSummaries = a} :: ListDataSetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDataSetsResponse_nextToken :: Lens.Lens' ListDataSetsResponse (Prelude.Maybe Prelude.Text)
+listDataSetsResponse_nextToken = Lens.lens (\ListDataSetsResponse' {nextToken} -> nextToken) (\s@ListDataSetsResponse' {} a -> s {nextToken = a} :: ListDataSetsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listDataSetsResponse_requestId :: Lens.Lens' ListDataSetsResponse (Prelude.Maybe Prelude.Text)
+listDataSetsResponse_requestId = Lens.lens (\ListDataSetsResponse' {requestId} -> requestId) (\s@ListDataSetsResponse' {} a -> s {requestId = a} :: ListDataSetsResponse)
+
+-- | The HTTP status of the request.
+listDataSetsResponse_status :: Lens.Lens' ListDataSetsResponse Prelude.Int
+listDataSetsResponse_status = Lens.lens (\ListDataSetsResponse' {status} -> status) (\s@ListDataSetsResponse' {} a -> s {status = a} :: ListDataSetsResponse)
+
+instance Prelude.NFData ListDataSetsResponse where
+  rnf ListDataSetsResponse' {..} =
+    Prelude.rnf dataSetSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListDataSources.hs b/gen/Amazonka/QuickSight/ListDataSources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListDataSources.hs
@@ -0,0 +1,249 @@
+{-# 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.QuickSight.ListDataSources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists data sources in current Amazon Web Services Region that belong to
+-- this Amazon Web Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListDataSources
+  ( -- * Creating a Request
+    ListDataSources (..),
+    newListDataSources,
+
+    -- * Request Lenses
+    listDataSources_maxResults,
+    listDataSources_nextToken,
+    listDataSources_awsAccountId,
+
+    -- * Destructuring the Response
+    ListDataSourcesResponse (..),
+    newListDataSourcesResponse,
+
+    -- * Response Lenses
+    listDataSourcesResponse_dataSources,
+    listDataSourcesResponse_nextToken,
+    listDataSourcesResponse_requestId,
+    listDataSourcesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDataSources' smart constructor.
+data ListDataSources = ListDataSources'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataSources' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDataSources_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listDataSources_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listDataSources_awsAccountId' - The Amazon Web Services account ID.
+newListDataSources ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListDataSources
+newListDataSources pAwsAccountId_ =
+  ListDataSources'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listDataSources_maxResults :: Lens.Lens' ListDataSources (Prelude.Maybe Prelude.Natural)
+listDataSources_maxResults = Lens.lens (\ListDataSources' {maxResults} -> maxResults) (\s@ListDataSources' {} a -> s {maxResults = a} :: ListDataSources)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDataSources_nextToken :: Lens.Lens' ListDataSources (Prelude.Maybe Prelude.Text)
+listDataSources_nextToken = Lens.lens (\ListDataSources' {nextToken} -> nextToken) (\s@ListDataSources' {} a -> s {nextToken = a} :: ListDataSources)
+
+-- | The Amazon Web Services account ID.
+listDataSources_awsAccountId :: Lens.Lens' ListDataSources Prelude.Text
+listDataSources_awsAccountId = Lens.lens (\ListDataSources' {awsAccountId} -> awsAccountId) (\s@ListDataSources' {} a -> s {awsAccountId = a} :: ListDataSources)
+
+instance Core.AWSPager ListDataSources where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDataSourcesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDataSourcesResponse_dataSources
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDataSources_nextToken
+          Lens..~ rs
+          Lens.^? listDataSourcesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDataSources where
+  type
+    AWSResponse ListDataSources =
+      ListDataSourcesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDataSourcesResponse'
+            Prelude.<$> (x Data..?> "DataSources" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDataSources where
+  hashWithSalt _salt ListDataSources' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListDataSources where
+  rnf ListDataSources' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListDataSources where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListDataSources where
+  toPath ListDataSources' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources"
+      ]
+
+instance Data.ToQuery ListDataSources where
+  toQuery ListDataSources' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListDataSourcesResponse' smart constructor.
+data ListDataSourcesResponse = ListDataSourcesResponse'
+  { -- | A list of data sources.
+    dataSources :: Prelude.Maybe [DataSource],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataSourcesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSources', 'listDataSourcesResponse_dataSources' - A list of data sources.
+--
+-- 'nextToken', 'listDataSourcesResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listDataSourcesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listDataSourcesResponse_status' - The HTTP status of the request.
+newListDataSourcesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListDataSourcesResponse
+newListDataSourcesResponse pStatus_ =
+  ListDataSourcesResponse'
+    { dataSources =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A list of data sources.
+listDataSourcesResponse_dataSources :: Lens.Lens' ListDataSourcesResponse (Prelude.Maybe [DataSource])
+listDataSourcesResponse_dataSources = Lens.lens (\ListDataSourcesResponse' {dataSources} -> dataSources) (\s@ListDataSourcesResponse' {} a -> s {dataSources = a} :: ListDataSourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listDataSourcesResponse_nextToken :: Lens.Lens' ListDataSourcesResponse (Prelude.Maybe Prelude.Text)
+listDataSourcesResponse_nextToken = Lens.lens (\ListDataSourcesResponse' {nextToken} -> nextToken) (\s@ListDataSourcesResponse' {} a -> s {nextToken = a} :: ListDataSourcesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listDataSourcesResponse_requestId :: Lens.Lens' ListDataSourcesResponse (Prelude.Maybe Prelude.Text)
+listDataSourcesResponse_requestId = Lens.lens (\ListDataSourcesResponse' {requestId} -> requestId) (\s@ListDataSourcesResponse' {} a -> s {requestId = a} :: ListDataSourcesResponse)
+
+-- | The HTTP status of the request.
+listDataSourcesResponse_status :: Lens.Lens' ListDataSourcesResponse Prelude.Int
+listDataSourcesResponse_status = Lens.lens (\ListDataSourcesResponse' {status} -> status) (\s@ListDataSourcesResponse' {} a -> s {status = a} :: ListDataSourcesResponse)
+
+instance Prelude.NFData ListDataSourcesResponse where
+  rnf ListDataSourcesResponse' {..} =
+    Prelude.rnf dataSources
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListFolderMembers.hs b/gen/Amazonka/QuickSight/ListFolderMembers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListFolderMembers.hs
@@ -0,0 +1,246 @@
+{-# 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.QuickSight.ListFolderMembers
+-- 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 assets (@DASHBOARD@, @ANALYSIS@, and @DATASET@) in a folder.
+module Amazonka.QuickSight.ListFolderMembers
+  ( -- * Creating a Request
+    ListFolderMembers (..),
+    newListFolderMembers,
+
+    -- * Request Lenses
+    listFolderMembers_maxResults,
+    listFolderMembers_nextToken,
+    listFolderMembers_awsAccountId,
+    listFolderMembers_folderId,
+
+    -- * Destructuring the Response
+    ListFolderMembersResponse (..),
+    newListFolderMembersResponse,
+
+    -- * Response Lenses
+    listFolderMembersResponse_folderMemberList,
+    listFolderMembersResponse_nextToken,
+    listFolderMembersResponse_requestId,
+    listFolderMembersResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListFolderMembers' smart constructor.
+data ListFolderMembers = ListFolderMembers'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFolderMembers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listFolderMembers_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listFolderMembers_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listFolderMembers_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'folderId', 'listFolderMembers_folderId' - The ID of the folder.
+newListFolderMembers ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  ListFolderMembers
+newListFolderMembers pAwsAccountId_ pFolderId_ =
+  ListFolderMembers'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      folderId = pFolderId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listFolderMembers_maxResults :: Lens.Lens' ListFolderMembers (Prelude.Maybe Prelude.Natural)
+listFolderMembers_maxResults = Lens.lens (\ListFolderMembers' {maxResults} -> maxResults) (\s@ListFolderMembers' {} a -> s {maxResults = a} :: ListFolderMembers)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listFolderMembers_nextToken :: Lens.Lens' ListFolderMembers (Prelude.Maybe Prelude.Text)
+listFolderMembers_nextToken = Lens.lens (\ListFolderMembers' {nextToken} -> nextToken) (\s@ListFolderMembers' {} a -> s {nextToken = a} :: ListFolderMembers)
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+listFolderMembers_awsAccountId :: Lens.Lens' ListFolderMembers Prelude.Text
+listFolderMembers_awsAccountId = Lens.lens (\ListFolderMembers' {awsAccountId} -> awsAccountId) (\s@ListFolderMembers' {} a -> s {awsAccountId = a} :: ListFolderMembers)
+
+-- | The ID of the folder.
+listFolderMembers_folderId :: Lens.Lens' ListFolderMembers Prelude.Text
+listFolderMembers_folderId = Lens.lens (\ListFolderMembers' {folderId} -> folderId) (\s@ListFolderMembers' {} a -> s {folderId = a} :: ListFolderMembers)
+
+instance Core.AWSRequest ListFolderMembers where
+  type
+    AWSResponse ListFolderMembers =
+      ListFolderMembersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFolderMembersResponse'
+            Prelude.<$> ( x
+                            Data..?> "FolderMemberList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListFolderMembers where
+  hashWithSalt _salt ListFolderMembers' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData ListFolderMembers where
+  rnf ListFolderMembers' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders ListFolderMembers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListFolderMembers where
+  toPath ListFolderMembers' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId,
+        "/members"
+      ]
+
+instance Data.ToQuery ListFolderMembers where
+  toQuery ListFolderMembers' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListFolderMembersResponse' smart constructor.
+data ListFolderMembersResponse = ListFolderMembersResponse'
+  { -- | A structure that contains all of the folder members (dashboards,
+    -- analyses, and datasets) in the folder.
+    folderMemberList :: Prelude.Maybe [MemberIdArnPair],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFolderMembersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'folderMemberList', 'listFolderMembersResponse_folderMemberList' - A structure that contains all of the folder members (dashboards,
+-- analyses, and datasets) in the folder.
+--
+-- 'nextToken', 'listFolderMembersResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listFolderMembersResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listFolderMembersResponse_status' - The HTTP status of the request.
+newListFolderMembersResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListFolderMembersResponse
+newListFolderMembersResponse pStatus_ =
+  ListFolderMembersResponse'
+    { folderMemberList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A structure that contains all of the folder members (dashboards,
+-- analyses, and datasets) in the folder.
+listFolderMembersResponse_folderMemberList :: Lens.Lens' ListFolderMembersResponse (Prelude.Maybe [MemberIdArnPair])
+listFolderMembersResponse_folderMemberList = Lens.lens (\ListFolderMembersResponse' {folderMemberList} -> folderMemberList) (\s@ListFolderMembersResponse' {} a -> s {folderMemberList = a} :: ListFolderMembersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listFolderMembersResponse_nextToken :: Lens.Lens' ListFolderMembersResponse (Prelude.Maybe Prelude.Text)
+listFolderMembersResponse_nextToken = Lens.lens (\ListFolderMembersResponse' {nextToken} -> nextToken) (\s@ListFolderMembersResponse' {} a -> s {nextToken = a} :: ListFolderMembersResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listFolderMembersResponse_requestId :: Lens.Lens' ListFolderMembersResponse (Prelude.Maybe Prelude.Text)
+listFolderMembersResponse_requestId = Lens.lens (\ListFolderMembersResponse' {requestId} -> requestId) (\s@ListFolderMembersResponse' {} a -> s {requestId = a} :: ListFolderMembersResponse)
+
+-- | The HTTP status of the request.
+listFolderMembersResponse_status :: Lens.Lens' ListFolderMembersResponse Prelude.Int
+listFolderMembersResponse_status = Lens.lens (\ListFolderMembersResponse' {status} -> status) (\s@ListFolderMembersResponse' {} a -> s {status = a} :: ListFolderMembersResponse)
+
+instance Prelude.NFData ListFolderMembersResponse where
+  rnf ListFolderMembersResponse' {..} =
+    Prelude.rnf folderMemberList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListFolders.hs b/gen/Amazonka/QuickSight/ListFolders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListFolders.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListFolders
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all folders in an account.
+module Amazonka.QuickSight.ListFolders
+  ( -- * Creating a Request
+    ListFolders (..),
+    newListFolders,
+
+    -- * Request Lenses
+    listFolders_maxResults,
+    listFolders_nextToken,
+    listFolders_awsAccountId,
+
+    -- * Destructuring the Response
+    ListFoldersResponse (..),
+    newListFoldersResponse,
+
+    -- * Response Lenses
+    listFoldersResponse_folderSummaryList,
+    listFoldersResponse_nextToken,
+    listFoldersResponse_requestId,
+    listFoldersResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListFolders' smart constructor.
+data ListFolders = ListFolders'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFolders' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listFolders_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listFolders_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listFolders_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+newListFolders ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListFolders
+newListFolders pAwsAccountId_ =
+  ListFolders'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listFolders_maxResults :: Lens.Lens' ListFolders (Prelude.Maybe Prelude.Natural)
+listFolders_maxResults = Lens.lens (\ListFolders' {maxResults} -> maxResults) (\s@ListFolders' {} a -> s {maxResults = a} :: ListFolders)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listFolders_nextToken :: Lens.Lens' ListFolders (Prelude.Maybe Prelude.Text)
+listFolders_nextToken = Lens.lens (\ListFolders' {nextToken} -> nextToken) (\s@ListFolders' {} a -> s {nextToken = a} :: ListFolders)
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+listFolders_awsAccountId :: Lens.Lens' ListFolders Prelude.Text
+listFolders_awsAccountId = Lens.lens (\ListFolders' {awsAccountId} -> awsAccountId) (\s@ListFolders' {} a -> s {awsAccountId = a} :: ListFolders)
+
+instance Core.AWSRequest ListFolders where
+  type AWSResponse ListFolders = ListFoldersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFoldersResponse'
+            Prelude.<$> ( x
+                            Data..?> "FolderSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListFolders where
+  hashWithSalt _salt ListFolders' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListFolders where
+  rnf ListFolders' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListFolders where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListFolders where
+  toPath ListFolders' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/folders"]
+
+instance Data.ToQuery ListFolders where
+  toQuery ListFolders' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListFoldersResponse' smart constructor.
+data ListFoldersResponse = ListFoldersResponse'
+  { -- | A structure that contains all of the folders in the Amazon Web Services
+    -- account. This structure provides basic information about the folders.
+    folderSummaryList :: Prelude.Maybe [FolderSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFoldersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'folderSummaryList', 'listFoldersResponse_folderSummaryList' - A structure that contains all of the folders in the Amazon Web Services
+-- account. This structure provides basic information about the folders.
+--
+-- 'nextToken', 'listFoldersResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listFoldersResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listFoldersResponse_status' - The HTTP status of the request.
+newListFoldersResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListFoldersResponse
+newListFoldersResponse pStatus_ =
+  ListFoldersResponse'
+    { folderSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A structure that contains all of the folders in the Amazon Web Services
+-- account. This structure provides basic information about the folders.
+listFoldersResponse_folderSummaryList :: Lens.Lens' ListFoldersResponse (Prelude.Maybe [FolderSummary])
+listFoldersResponse_folderSummaryList = Lens.lens (\ListFoldersResponse' {folderSummaryList} -> folderSummaryList) (\s@ListFoldersResponse' {} a -> s {folderSummaryList = a} :: ListFoldersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listFoldersResponse_nextToken :: Lens.Lens' ListFoldersResponse (Prelude.Maybe Prelude.Text)
+listFoldersResponse_nextToken = Lens.lens (\ListFoldersResponse' {nextToken} -> nextToken) (\s@ListFoldersResponse' {} a -> s {nextToken = a} :: ListFoldersResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listFoldersResponse_requestId :: Lens.Lens' ListFoldersResponse (Prelude.Maybe Prelude.Text)
+listFoldersResponse_requestId = Lens.lens (\ListFoldersResponse' {requestId} -> requestId) (\s@ListFoldersResponse' {} a -> s {requestId = a} :: ListFoldersResponse)
+
+-- | The HTTP status of the request.
+listFoldersResponse_status :: Lens.Lens' ListFoldersResponse Prelude.Int
+listFoldersResponse_status = Lens.lens (\ListFoldersResponse' {status} -> status) (\s@ListFoldersResponse' {} a -> s {status = a} :: ListFoldersResponse)
+
+instance Prelude.NFData ListFoldersResponse where
+  rnf ListFoldersResponse' {..} =
+    Prelude.rnf folderSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListGroupMemberships.hs b/gen/Amazonka/QuickSight/ListGroupMemberships.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListGroupMemberships.hs
@@ -0,0 +1,262 @@
+{-# 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.QuickSight.ListGroupMemberships
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists member users in a group.
+module Amazonka.QuickSight.ListGroupMemberships
+  ( -- * Creating a Request
+    ListGroupMemberships (..),
+    newListGroupMemberships,
+
+    -- * Request Lenses
+    listGroupMemberships_maxResults,
+    listGroupMemberships_nextToken,
+    listGroupMemberships_groupName,
+    listGroupMemberships_awsAccountId,
+    listGroupMemberships_namespace,
+
+    -- * Destructuring the Response
+    ListGroupMembershipsResponse (..),
+    newListGroupMembershipsResponse,
+
+    -- * Response Lenses
+    listGroupMembershipsResponse_groupMemberList,
+    listGroupMembershipsResponse_nextToken,
+    listGroupMembershipsResponse_requestId,
+    listGroupMembershipsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListGroupMemberships' smart constructor.
+data ListGroupMemberships = ListGroupMemberships'
+  { -- | The maximum number of results to return from this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the group that you want to see a membership list of.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace of the group that you want a list of users from.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListGroupMemberships' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGroupMemberships_maxResults' - The maximum number of results to return from this request.
+--
+-- 'nextToken', 'listGroupMemberships_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'groupName', 'listGroupMemberships_groupName' - The name of the group that you want to see a membership list of.
+--
+-- 'awsAccountId', 'listGroupMemberships_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'listGroupMemberships_namespace' - The namespace of the group that you want a list of users from.
+newListGroupMemberships ::
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  ListGroupMemberships
+newListGroupMemberships
+  pGroupName_
+  pAwsAccountId_
+  pNamespace_ =
+    ListGroupMemberships'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        groupName = pGroupName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The maximum number of results to return from this request.
+listGroupMemberships_maxResults :: Lens.Lens' ListGroupMemberships (Prelude.Maybe Prelude.Natural)
+listGroupMemberships_maxResults = Lens.lens (\ListGroupMemberships' {maxResults} -> maxResults) (\s@ListGroupMemberships' {} a -> s {maxResults = a} :: ListGroupMemberships)
+
+-- | A pagination token that can be used in a subsequent request.
+listGroupMemberships_nextToken :: Lens.Lens' ListGroupMemberships (Prelude.Maybe Prelude.Text)
+listGroupMemberships_nextToken = Lens.lens (\ListGroupMemberships' {nextToken} -> nextToken) (\s@ListGroupMemberships' {} a -> s {nextToken = a} :: ListGroupMemberships)
+
+-- | The name of the group that you want to see a membership list of.
+listGroupMemberships_groupName :: Lens.Lens' ListGroupMemberships Prelude.Text
+listGroupMemberships_groupName = Lens.lens (\ListGroupMemberships' {groupName} -> groupName) (\s@ListGroupMemberships' {} a -> s {groupName = a} :: ListGroupMemberships)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+listGroupMemberships_awsAccountId :: Lens.Lens' ListGroupMemberships Prelude.Text
+listGroupMemberships_awsAccountId = Lens.lens (\ListGroupMemberships' {awsAccountId} -> awsAccountId) (\s@ListGroupMemberships' {} a -> s {awsAccountId = a} :: ListGroupMemberships)
+
+-- | The namespace of the group that you want a list of users from.
+listGroupMemberships_namespace :: Lens.Lens' ListGroupMemberships Prelude.Text
+listGroupMemberships_namespace = Lens.lens (\ListGroupMemberships' {namespace} -> namespace) (\s@ListGroupMemberships' {} a -> s {namespace = a} :: ListGroupMemberships)
+
+instance Core.AWSRequest ListGroupMemberships where
+  type
+    AWSResponse ListGroupMemberships =
+      ListGroupMembershipsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListGroupMembershipsResponse'
+            Prelude.<$> ( x
+                            Data..?> "GroupMemberList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListGroupMemberships where
+  hashWithSalt _salt ListGroupMemberships' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData ListGroupMemberships where
+  rnf ListGroupMemberships' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders ListGroupMemberships where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListGroupMemberships where
+  toPath ListGroupMemberships' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName,
+        "/members"
+      ]
+
+instance Data.ToQuery ListGroupMemberships where
+  toQuery ListGroupMemberships' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListGroupMembershipsResponse' smart constructor.
+data ListGroupMembershipsResponse = ListGroupMembershipsResponse'
+  { -- | The list of the members of the group.
+    groupMemberList :: Prelude.Maybe [GroupMember],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListGroupMembershipsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupMemberList', 'listGroupMembershipsResponse_groupMemberList' - The list of the members of the group.
+--
+-- 'nextToken', 'listGroupMembershipsResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'listGroupMembershipsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listGroupMembershipsResponse_status' - The HTTP status of the request.
+newListGroupMembershipsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListGroupMembershipsResponse
+newListGroupMembershipsResponse pStatus_ =
+  ListGroupMembershipsResponse'
+    { groupMemberList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The list of the members of the group.
+listGroupMembershipsResponse_groupMemberList :: Lens.Lens' ListGroupMembershipsResponse (Prelude.Maybe [GroupMember])
+listGroupMembershipsResponse_groupMemberList = Lens.lens (\ListGroupMembershipsResponse' {groupMemberList} -> groupMemberList) (\s@ListGroupMembershipsResponse' {} a -> s {groupMemberList = a} :: ListGroupMembershipsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+listGroupMembershipsResponse_nextToken :: Lens.Lens' ListGroupMembershipsResponse (Prelude.Maybe Prelude.Text)
+listGroupMembershipsResponse_nextToken = Lens.lens (\ListGroupMembershipsResponse' {nextToken} -> nextToken) (\s@ListGroupMembershipsResponse' {} a -> s {nextToken = a} :: ListGroupMembershipsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listGroupMembershipsResponse_requestId :: Lens.Lens' ListGroupMembershipsResponse (Prelude.Maybe Prelude.Text)
+listGroupMembershipsResponse_requestId = Lens.lens (\ListGroupMembershipsResponse' {requestId} -> requestId) (\s@ListGroupMembershipsResponse' {} a -> s {requestId = a} :: ListGroupMembershipsResponse)
+
+-- | The HTTP status of the request.
+listGroupMembershipsResponse_status :: Lens.Lens' ListGroupMembershipsResponse Prelude.Int
+listGroupMembershipsResponse_status = Lens.lens (\ListGroupMembershipsResponse' {status} -> status) (\s@ListGroupMembershipsResponse' {} a -> s {status = a} :: ListGroupMembershipsResponse)
+
+instance Prelude.NFData ListGroupMembershipsResponse where
+  rnf ListGroupMembershipsResponse' {..} =
+    Prelude.rnf groupMemberList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListGroups.hs b/gen/Amazonka/QuickSight/ListGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListGroups.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.QuickSight.ListGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all user groups in Amazon QuickSight.
+module Amazonka.QuickSight.ListGroups
+  ( -- * Creating a Request
+    ListGroups (..),
+    newListGroups,
+
+    -- * Request Lenses
+    listGroups_maxResults,
+    listGroups_nextToken,
+    listGroups_awsAccountId,
+    listGroups_namespace,
+
+    -- * Destructuring the Response
+    ListGroupsResponse (..),
+    newListGroupsResponse,
+
+    -- * Response Lenses
+    listGroupsResponse_groupList,
+    listGroupsResponse_nextToken,
+    listGroupsResponse_requestId,
+    listGroupsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListGroups' smart constructor.
+data ListGroups = ListGroups'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that you want a list of groups from.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListGroups' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGroups_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listGroups_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'listGroups_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'listGroups_namespace' - The namespace that you want a list of groups from.
+newListGroups ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  ListGroups
+newListGroups pAwsAccountId_ pNamespace_ =
+  ListGroups'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The maximum number of results to return.
+listGroups_maxResults :: Lens.Lens' ListGroups (Prelude.Maybe Prelude.Natural)
+listGroups_maxResults = Lens.lens (\ListGroups' {maxResults} -> maxResults) (\s@ListGroups' {} a -> s {maxResults = a} :: ListGroups)
+
+-- | A pagination token that can be used in a subsequent request.
+listGroups_nextToken :: Lens.Lens' ListGroups (Prelude.Maybe Prelude.Text)
+listGroups_nextToken = Lens.lens (\ListGroups' {nextToken} -> nextToken) (\s@ListGroups' {} a -> s {nextToken = a} :: ListGroups)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+listGroups_awsAccountId :: Lens.Lens' ListGroups Prelude.Text
+listGroups_awsAccountId = Lens.lens (\ListGroups' {awsAccountId} -> awsAccountId) (\s@ListGroups' {} a -> s {awsAccountId = a} :: ListGroups)
+
+-- | The namespace that you want a list of groups from.
+listGroups_namespace :: Lens.Lens' ListGroups Prelude.Text
+listGroups_namespace = Lens.lens (\ListGroups' {namespace} -> namespace) (\s@ListGroups' {} a -> s {namespace = a} :: ListGroups)
+
+instance Core.AWSRequest ListGroups where
+  type AWSResponse ListGroups = ListGroupsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListGroupsResponse'
+            Prelude.<$> (x Data..?> "GroupList" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListGroups where
+  hashWithSalt _salt ListGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData ListGroups where
+  rnf ListGroups' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders ListGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListGroups where
+  toPath ListGroups' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups"
+      ]
+
+instance Data.ToQuery ListGroups where
+  toQuery ListGroups' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListGroupsResponse' smart constructor.
+data ListGroupsResponse = ListGroupsResponse'
+  { -- | The list of the groups.
+    groupList :: Prelude.Maybe [Group],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListGroupsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupList', 'listGroupsResponse_groupList' - The list of the groups.
+--
+-- 'nextToken', 'listGroupsResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'listGroupsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listGroupsResponse_status' - The HTTP status of the request.
+newListGroupsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListGroupsResponse
+newListGroupsResponse pStatus_ =
+  ListGroupsResponse'
+    { groupList = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The list of the groups.
+listGroupsResponse_groupList :: Lens.Lens' ListGroupsResponse (Prelude.Maybe [Group])
+listGroupsResponse_groupList = Lens.lens (\ListGroupsResponse' {groupList} -> groupList) (\s@ListGroupsResponse' {} a -> s {groupList = a} :: ListGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+listGroupsResponse_nextToken :: Lens.Lens' ListGroupsResponse (Prelude.Maybe Prelude.Text)
+listGroupsResponse_nextToken = Lens.lens (\ListGroupsResponse' {nextToken} -> nextToken) (\s@ListGroupsResponse' {} a -> s {nextToken = a} :: ListGroupsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listGroupsResponse_requestId :: Lens.Lens' ListGroupsResponse (Prelude.Maybe Prelude.Text)
+listGroupsResponse_requestId = Lens.lens (\ListGroupsResponse' {requestId} -> requestId) (\s@ListGroupsResponse' {} a -> s {requestId = a} :: ListGroupsResponse)
+
+-- | The HTTP status of the request.
+listGroupsResponse_status :: Lens.Lens' ListGroupsResponse Prelude.Int
+listGroupsResponse_status = Lens.lens (\ListGroupsResponse' {status} -> status) (\s@ListGroupsResponse' {} a -> s {status = a} :: ListGroupsResponse)
+
+instance Prelude.NFData ListGroupsResponse where
+  rnf ListGroupsResponse' {..} =
+    Prelude.rnf groupList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListIAMPolicyAssignments.hs b/gen/Amazonka/QuickSight/ListIAMPolicyAssignments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListIAMPolicyAssignments.hs
@@ -0,0 +1,264 @@
+{-# 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.QuickSight.ListIAMPolicyAssignments
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists IAM policy assignments in the current Amazon QuickSight account.
+module Amazonka.QuickSight.ListIAMPolicyAssignments
+  ( -- * Creating a Request
+    ListIAMPolicyAssignments (..),
+    newListIAMPolicyAssignments,
+
+    -- * Request Lenses
+    listIAMPolicyAssignments_assignmentStatus,
+    listIAMPolicyAssignments_maxResults,
+    listIAMPolicyAssignments_nextToken,
+    listIAMPolicyAssignments_awsAccountId,
+    listIAMPolicyAssignments_namespace,
+
+    -- * Destructuring the Response
+    ListIAMPolicyAssignmentsResponse (..),
+    newListIAMPolicyAssignmentsResponse,
+
+    -- * Response Lenses
+    listIAMPolicyAssignmentsResponse_iAMPolicyAssignments,
+    listIAMPolicyAssignmentsResponse_nextToken,
+    listIAMPolicyAssignmentsResponse_requestId,
+    listIAMPolicyAssignmentsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListIAMPolicyAssignments' smart constructor.
+data ListIAMPolicyAssignments = ListIAMPolicyAssignments'
+  { -- | The status of the assignments.
+    assignmentStatus :: Prelude.Maybe AssignmentStatus,
+    -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains these IAM policy
+    -- assignments.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace for the assignments.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIAMPolicyAssignments' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentStatus', 'listIAMPolicyAssignments_assignmentStatus' - The status of the assignments.
+--
+-- 'maxResults', 'listIAMPolicyAssignments_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listIAMPolicyAssignments_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listIAMPolicyAssignments_awsAccountId' - The ID of the Amazon Web Services account that contains these IAM policy
+-- assignments.
+--
+-- 'namespace', 'listIAMPolicyAssignments_namespace' - The namespace for the assignments.
+newListIAMPolicyAssignments ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  ListIAMPolicyAssignments
+newListIAMPolicyAssignments
+  pAwsAccountId_
+  pNamespace_ =
+    ListIAMPolicyAssignments'
+      { assignmentStatus =
+          Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The status of the assignments.
+listIAMPolicyAssignments_assignmentStatus :: Lens.Lens' ListIAMPolicyAssignments (Prelude.Maybe AssignmentStatus)
+listIAMPolicyAssignments_assignmentStatus = Lens.lens (\ListIAMPolicyAssignments' {assignmentStatus} -> assignmentStatus) (\s@ListIAMPolicyAssignments' {} a -> s {assignmentStatus = a} :: ListIAMPolicyAssignments)
+
+-- | The maximum number of results to be returned per request.
+listIAMPolicyAssignments_maxResults :: Lens.Lens' ListIAMPolicyAssignments (Prelude.Maybe Prelude.Natural)
+listIAMPolicyAssignments_maxResults = Lens.lens (\ListIAMPolicyAssignments' {maxResults} -> maxResults) (\s@ListIAMPolicyAssignments' {} a -> s {maxResults = a} :: ListIAMPolicyAssignments)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listIAMPolicyAssignments_nextToken :: Lens.Lens' ListIAMPolicyAssignments (Prelude.Maybe Prelude.Text)
+listIAMPolicyAssignments_nextToken = Lens.lens (\ListIAMPolicyAssignments' {nextToken} -> nextToken) (\s@ListIAMPolicyAssignments' {} a -> s {nextToken = a} :: ListIAMPolicyAssignments)
+
+-- | The ID of the Amazon Web Services account that contains these IAM policy
+-- assignments.
+listIAMPolicyAssignments_awsAccountId :: Lens.Lens' ListIAMPolicyAssignments Prelude.Text
+listIAMPolicyAssignments_awsAccountId = Lens.lens (\ListIAMPolicyAssignments' {awsAccountId} -> awsAccountId) (\s@ListIAMPolicyAssignments' {} a -> s {awsAccountId = a} :: ListIAMPolicyAssignments)
+
+-- | The namespace for the assignments.
+listIAMPolicyAssignments_namespace :: Lens.Lens' ListIAMPolicyAssignments Prelude.Text
+listIAMPolicyAssignments_namespace = Lens.lens (\ListIAMPolicyAssignments' {namespace} -> namespace) (\s@ListIAMPolicyAssignments' {} a -> s {namespace = a} :: ListIAMPolicyAssignments)
+
+instance Core.AWSRequest ListIAMPolicyAssignments where
+  type
+    AWSResponse ListIAMPolicyAssignments =
+      ListIAMPolicyAssignmentsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIAMPolicyAssignmentsResponse'
+            Prelude.<$> ( x
+                            Data..?> "IAMPolicyAssignments"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListIAMPolicyAssignments where
+  hashWithSalt _salt ListIAMPolicyAssignments' {..} =
+    _salt
+      `Prelude.hashWithSalt` assignmentStatus
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData ListIAMPolicyAssignments where
+  rnf ListIAMPolicyAssignments' {..} =
+    Prelude.rnf assignmentStatus
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders ListIAMPolicyAssignments where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListIAMPolicyAssignments where
+  toPath ListIAMPolicyAssignments' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/iam-policy-assignments"
+      ]
+
+instance Data.ToQuery ListIAMPolicyAssignments where
+  toQuery ListIAMPolicyAssignments' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListIAMPolicyAssignmentsResponse' smart constructor.
+data ListIAMPolicyAssignmentsResponse = ListIAMPolicyAssignmentsResponse'
+  { -- | Information describing the IAM policy assignments.
+    iAMPolicyAssignments :: Prelude.Maybe [IAMPolicyAssignmentSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIAMPolicyAssignmentsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iAMPolicyAssignments', 'listIAMPolicyAssignmentsResponse_iAMPolicyAssignments' - Information describing the IAM policy assignments.
+--
+-- 'nextToken', 'listIAMPolicyAssignmentsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listIAMPolicyAssignmentsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listIAMPolicyAssignmentsResponse_status' - The HTTP status of the request.
+newListIAMPolicyAssignmentsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListIAMPolicyAssignmentsResponse
+newListIAMPolicyAssignmentsResponse pStatus_ =
+  ListIAMPolicyAssignmentsResponse'
+    { iAMPolicyAssignments =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Information describing the IAM policy assignments.
+listIAMPolicyAssignmentsResponse_iAMPolicyAssignments :: Lens.Lens' ListIAMPolicyAssignmentsResponse (Prelude.Maybe [IAMPolicyAssignmentSummary])
+listIAMPolicyAssignmentsResponse_iAMPolicyAssignments = Lens.lens (\ListIAMPolicyAssignmentsResponse' {iAMPolicyAssignments} -> iAMPolicyAssignments) (\s@ListIAMPolicyAssignmentsResponse' {} a -> s {iAMPolicyAssignments = a} :: ListIAMPolicyAssignmentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listIAMPolicyAssignmentsResponse_nextToken :: Lens.Lens' ListIAMPolicyAssignmentsResponse (Prelude.Maybe Prelude.Text)
+listIAMPolicyAssignmentsResponse_nextToken = Lens.lens (\ListIAMPolicyAssignmentsResponse' {nextToken} -> nextToken) (\s@ListIAMPolicyAssignmentsResponse' {} a -> s {nextToken = a} :: ListIAMPolicyAssignmentsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listIAMPolicyAssignmentsResponse_requestId :: Lens.Lens' ListIAMPolicyAssignmentsResponse (Prelude.Maybe Prelude.Text)
+listIAMPolicyAssignmentsResponse_requestId = Lens.lens (\ListIAMPolicyAssignmentsResponse' {requestId} -> requestId) (\s@ListIAMPolicyAssignmentsResponse' {} a -> s {requestId = a} :: ListIAMPolicyAssignmentsResponse)
+
+-- | The HTTP status of the request.
+listIAMPolicyAssignmentsResponse_status :: Lens.Lens' ListIAMPolicyAssignmentsResponse Prelude.Int
+listIAMPolicyAssignmentsResponse_status = Lens.lens (\ListIAMPolicyAssignmentsResponse' {status} -> status) (\s@ListIAMPolicyAssignmentsResponse' {} a -> s {status = a} :: ListIAMPolicyAssignmentsResponse)
+
+instance
+  Prelude.NFData
+    ListIAMPolicyAssignmentsResponse
+  where
+  rnf ListIAMPolicyAssignmentsResponse' {..} =
+    Prelude.rnf iAMPolicyAssignments
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListIAMPolicyAssignmentsForUser.hs b/gen/Amazonka/QuickSight/ListIAMPolicyAssignmentsForUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListIAMPolicyAssignmentsForUser.hs
@@ -0,0 +1,282 @@
+{-# 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.QuickSight.ListIAMPolicyAssignmentsForUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the IAM policy assignments, including the Amazon Resource
+-- Names (ARNs) for the IAM policies assigned to the specified user and
+-- group or groups that the user belongs to.
+module Amazonka.QuickSight.ListIAMPolicyAssignmentsForUser
+  ( -- * Creating a Request
+    ListIAMPolicyAssignmentsForUser (..),
+    newListIAMPolicyAssignmentsForUser,
+
+    -- * Request Lenses
+    listIAMPolicyAssignmentsForUser_maxResults,
+    listIAMPolicyAssignmentsForUser_nextToken,
+    listIAMPolicyAssignmentsForUser_awsAccountId,
+    listIAMPolicyAssignmentsForUser_userName,
+    listIAMPolicyAssignmentsForUser_namespace,
+
+    -- * Destructuring the Response
+    ListIAMPolicyAssignmentsForUserResponse (..),
+    newListIAMPolicyAssignmentsForUserResponse,
+
+    -- * Response Lenses
+    listIAMPolicyAssignmentsForUserResponse_activeAssignments,
+    listIAMPolicyAssignmentsForUserResponse_nextToken,
+    listIAMPolicyAssignmentsForUserResponse_requestId,
+    listIAMPolicyAssignmentsForUserResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListIAMPolicyAssignmentsForUser' smart constructor.
+data ListIAMPolicyAssignmentsForUser = ListIAMPolicyAssignmentsForUser'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the assignments.
+    awsAccountId :: Prelude.Text,
+    -- | The name of the user.
+    userName :: Prelude.Text,
+    -- | The namespace of the assignment.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIAMPolicyAssignmentsForUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIAMPolicyAssignmentsForUser_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listIAMPolicyAssignmentsForUser_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listIAMPolicyAssignmentsForUser_awsAccountId' - The ID of the Amazon Web Services account that contains the assignments.
+--
+-- 'userName', 'listIAMPolicyAssignmentsForUser_userName' - The name of the user.
+--
+-- 'namespace', 'listIAMPolicyAssignmentsForUser_namespace' - The namespace of the assignment.
+newListIAMPolicyAssignmentsForUser ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'userName'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  ListIAMPolicyAssignmentsForUser
+newListIAMPolicyAssignmentsForUser
+  pAwsAccountId_
+  pUserName_
+  pNamespace_ =
+    ListIAMPolicyAssignmentsForUser'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        userName = pUserName_,
+        namespace = pNamespace_
+      }
+
+-- | The maximum number of results to be returned per request.
+listIAMPolicyAssignmentsForUser_maxResults :: Lens.Lens' ListIAMPolicyAssignmentsForUser (Prelude.Maybe Prelude.Natural)
+listIAMPolicyAssignmentsForUser_maxResults = Lens.lens (\ListIAMPolicyAssignmentsForUser' {maxResults} -> maxResults) (\s@ListIAMPolicyAssignmentsForUser' {} a -> s {maxResults = a} :: ListIAMPolicyAssignmentsForUser)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listIAMPolicyAssignmentsForUser_nextToken :: Lens.Lens' ListIAMPolicyAssignmentsForUser (Prelude.Maybe Prelude.Text)
+listIAMPolicyAssignmentsForUser_nextToken = Lens.lens (\ListIAMPolicyAssignmentsForUser' {nextToken} -> nextToken) (\s@ListIAMPolicyAssignmentsForUser' {} a -> s {nextToken = a} :: ListIAMPolicyAssignmentsForUser)
+
+-- | The ID of the Amazon Web Services account that contains the assignments.
+listIAMPolicyAssignmentsForUser_awsAccountId :: Lens.Lens' ListIAMPolicyAssignmentsForUser Prelude.Text
+listIAMPolicyAssignmentsForUser_awsAccountId = Lens.lens (\ListIAMPolicyAssignmentsForUser' {awsAccountId} -> awsAccountId) (\s@ListIAMPolicyAssignmentsForUser' {} a -> s {awsAccountId = a} :: ListIAMPolicyAssignmentsForUser)
+
+-- | The name of the user.
+listIAMPolicyAssignmentsForUser_userName :: Lens.Lens' ListIAMPolicyAssignmentsForUser Prelude.Text
+listIAMPolicyAssignmentsForUser_userName = Lens.lens (\ListIAMPolicyAssignmentsForUser' {userName} -> userName) (\s@ListIAMPolicyAssignmentsForUser' {} a -> s {userName = a} :: ListIAMPolicyAssignmentsForUser)
+
+-- | The namespace of the assignment.
+listIAMPolicyAssignmentsForUser_namespace :: Lens.Lens' ListIAMPolicyAssignmentsForUser Prelude.Text
+listIAMPolicyAssignmentsForUser_namespace = Lens.lens (\ListIAMPolicyAssignmentsForUser' {namespace} -> namespace) (\s@ListIAMPolicyAssignmentsForUser' {} a -> s {namespace = a} :: ListIAMPolicyAssignmentsForUser)
+
+instance
+  Core.AWSRequest
+    ListIAMPolicyAssignmentsForUser
+  where
+  type
+    AWSResponse ListIAMPolicyAssignmentsForUser =
+      ListIAMPolicyAssignmentsForUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIAMPolicyAssignmentsForUserResponse'
+            Prelude.<$> ( x
+                            Data..?> "ActiveAssignments"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListIAMPolicyAssignmentsForUser
+  where
+  hashWithSalt
+    _salt
+    ListIAMPolicyAssignmentsForUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` awsAccountId
+        `Prelude.hashWithSalt` userName
+        `Prelude.hashWithSalt` namespace
+
+instance
+  Prelude.NFData
+    ListIAMPolicyAssignmentsForUser
+  where
+  rnf ListIAMPolicyAssignmentsForUser' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf namespace
+
+instance
+  Data.ToHeaders
+    ListIAMPolicyAssignmentsForUser
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListIAMPolicyAssignmentsForUser where
+  toPath ListIAMPolicyAssignmentsForUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users/",
+        Data.toBS userName,
+        "/iam-policy-assignments"
+      ]
+
+instance Data.ToQuery ListIAMPolicyAssignmentsForUser where
+  toQuery ListIAMPolicyAssignmentsForUser' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListIAMPolicyAssignmentsForUserResponse' smart constructor.
+data ListIAMPolicyAssignmentsForUserResponse = ListIAMPolicyAssignmentsForUserResponse'
+  { -- | The active assignments for this user.
+    activeAssignments :: Prelude.Maybe [ActiveIAMPolicyAssignment],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIAMPolicyAssignmentsForUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeAssignments', 'listIAMPolicyAssignmentsForUserResponse_activeAssignments' - The active assignments for this user.
+--
+-- 'nextToken', 'listIAMPolicyAssignmentsForUserResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listIAMPolicyAssignmentsForUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listIAMPolicyAssignmentsForUserResponse_status' - The HTTP status of the request.
+newListIAMPolicyAssignmentsForUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListIAMPolicyAssignmentsForUserResponse
+newListIAMPolicyAssignmentsForUserResponse pStatus_ =
+  ListIAMPolicyAssignmentsForUserResponse'
+    { activeAssignments =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The active assignments for this user.
+listIAMPolicyAssignmentsForUserResponse_activeAssignments :: Lens.Lens' ListIAMPolicyAssignmentsForUserResponse (Prelude.Maybe [ActiveIAMPolicyAssignment])
+listIAMPolicyAssignmentsForUserResponse_activeAssignments = Lens.lens (\ListIAMPolicyAssignmentsForUserResponse' {activeAssignments} -> activeAssignments) (\s@ListIAMPolicyAssignmentsForUserResponse' {} a -> s {activeAssignments = a} :: ListIAMPolicyAssignmentsForUserResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listIAMPolicyAssignmentsForUserResponse_nextToken :: Lens.Lens' ListIAMPolicyAssignmentsForUserResponse (Prelude.Maybe Prelude.Text)
+listIAMPolicyAssignmentsForUserResponse_nextToken = Lens.lens (\ListIAMPolicyAssignmentsForUserResponse' {nextToken} -> nextToken) (\s@ListIAMPolicyAssignmentsForUserResponse' {} a -> s {nextToken = a} :: ListIAMPolicyAssignmentsForUserResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listIAMPolicyAssignmentsForUserResponse_requestId :: Lens.Lens' ListIAMPolicyAssignmentsForUserResponse (Prelude.Maybe Prelude.Text)
+listIAMPolicyAssignmentsForUserResponse_requestId = Lens.lens (\ListIAMPolicyAssignmentsForUserResponse' {requestId} -> requestId) (\s@ListIAMPolicyAssignmentsForUserResponse' {} a -> s {requestId = a} :: ListIAMPolicyAssignmentsForUserResponse)
+
+-- | The HTTP status of the request.
+listIAMPolicyAssignmentsForUserResponse_status :: Lens.Lens' ListIAMPolicyAssignmentsForUserResponse Prelude.Int
+listIAMPolicyAssignmentsForUserResponse_status = Lens.lens (\ListIAMPolicyAssignmentsForUserResponse' {status} -> status) (\s@ListIAMPolicyAssignmentsForUserResponse' {} a -> s {status = a} :: ListIAMPolicyAssignmentsForUserResponse)
+
+instance
+  Prelude.NFData
+    ListIAMPolicyAssignmentsForUserResponse
+  where
+  rnf ListIAMPolicyAssignmentsForUserResponse' {..} =
+    Prelude.rnf activeAssignments
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListIngestions.hs b/gen/Amazonka/QuickSight/ListIngestions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListIngestions.hs
@@ -0,0 +1,264 @@
+{-# 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.QuickSight.ListIngestions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the history of SPICE ingestions for a dataset.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListIngestions
+  ( -- * Creating a Request
+    ListIngestions (..),
+    newListIngestions,
+
+    -- * Request Lenses
+    listIngestions_maxResults,
+    listIngestions_nextToken,
+    listIngestions_dataSetId,
+    listIngestions_awsAccountId,
+
+    -- * Destructuring the Response
+    ListIngestionsResponse (..),
+    newListIngestionsResponse,
+
+    -- * Response Lenses
+    listIngestionsResponse_ingestions,
+    listIngestionsResponse_nextToken,
+    listIngestionsResponse_requestId,
+    listIngestionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListIngestions' smart constructor.
+data ListIngestions = ListIngestions'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the dataset used in the ingestion.
+    dataSetId :: Prelude.Text,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIngestions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIngestions_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listIngestions_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'dataSetId', 'listIngestions_dataSetId' - The ID of the dataset used in the ingestion.
+--
+-- 'awsAccountId', 'listIngestions_awsAccountId' - The Amazon Web Services account ID.
+newListIngestions ::
+  -- | 'dataSetId'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListIngestions
+newListIngestions pDataSetId_ pAwsAccountId_ =
+  ListIngestions'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      dataSetId = pDataSetId_,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listIngestions_maxResults :: Lens.Lens' ListIngestions (Prelude.Maybe Prelude.Natural)
+listIngestions_maxResults = Lens.lens (\ListIngestions' {maxResults} -> maxResults) (\s@ListIngestions' {} a -> s {maxResults = a} :: ListIngestions)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listIngestions_nextToken :: Lens.Lens' ListIngestions (Prelude.Maybe Prelude.Text)
+listIngestions_nextToken = Lens.lens (\ListIngestions' {nextToken} -> nextToken) (\s@ListIngestions' {} a -> s {nextToken = a} :: ListIngestions)
+
+-- | The ID of the dataset used in the ingestion.
+listIngestions_dataSetId :: Lens.Lens' ListIngestions Prelude.Text
+listIngestions_dataSetId = Lens.lens (\ListIngestions' {dataSetId} -> dataSetId) (\s@ListIngestions' {} a -> s {dataSetId = a} :: ListIngestions)
+
+-- | The Amazon Web Services account ID.
+listIngestions_awsAccountId :: Lens.Lens' ListIngestions Prelude.Text
+listIngestions_awsAccountId = Lens.lens (\ListIngestions' {awsAccountId} -> awsAccountId) (\s@ListIngestions' {} a -> s {awsAccountId = a} :: ListIngestions)
+
+instance Core.AWSPager ListIngestions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listIngestionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listIngestionsResponse_ingestions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listIngestions_nextToken
+          Lens..~ rs
+          Lens.^? listIngestionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListIngestions where
+  type
+    AWSResponse ListIngestions =
+      ListIngestionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIngestionsResponse'
+            Prelude.<$> (x Data..?> "Ingestions" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListIngestions where
+  hashWithSalt _salt ListIngestions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListIngestions where
+  rnf ListIngestions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListIngestions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListIngestions where
+  toPath ListIngestions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId,
+        "/ingestions"
+      ]
+
+instance Data.ToQuery ListIngestions where
+  toQuery ListIngestions' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListIngestionsResponse' smart constructor.
+data ListIngestionsResponse = ListIngestionsResponse'
+  { -- | A list of the ingestions.
+    ingestions :: Prelude.Maybe [Ingestion],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIngestionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ingestions', 'listIngestionsResponse_ingestions' - A list of the ingestions.
+--
+-- 'nextToken', 'listIngestionsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listIngestionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listIngestionsResponse_status' - The HTTP status of the request.
+newListIngestionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListIngestionsResponse
+newListIngestionsResponse pStatus_ =
+  ListIngestionsResponse'
+    { ingestions =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A list of the ingestions.
+listIngestionsResponse_ingestions :: Lens.Lens' ListIngestionsResponse (Prelude.Maybe [Ingestion])
+listIngestionsResponse_ingestions = Lens.lens (\ListIngestionsResponse' {ingestions} -> ingestions) (\s@ListIngestionsResponse' {} a -> s {ingestions = a} :: ListIngestionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listIngestionsResponse_nextToken :: Lens.Lens' ListIngestionsResponse (Prelude.Maybe Prelude.Text)
+listIngestionsResponse_nextToken = Lens.lens (\ListIngestionsResponse' {nextToken} -> nextToken) (\s@ListIngestionsResponse' {} a -> s {nextToken = a} :: ListIngestionsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listIngestionsResponse_requestId :: Lens.Lens' ListIngestionsResponse (Prelude.Maybe Prelude.Text)
+listIngestionsResponse_requestId = Lens.lens (\ListIngestionsResponse' {requestId} -> requestId) (\s@ListIngestionsResponse' {} a -> s {requestId = a} :: ListIngestionsResponse)
+
+-- | The HTTP status of the request.
+listIngestionsResponse_status :: Lens.Lens' ListIngestionsResponse Prelude.Int
+listIngestionsResponse_status = Lens.lens (\ListIngestionsResponse' {status} -> status) (\s@ListIngestionsResponse' {} a -> s {status = a} :: ListIngestionsResponse)
+
+instance Prelude.NFData ListIngestionsResponse where
+  rnf ListIngestionsResponse' {..} =
+    Prelude.rnf ingestions
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListNamespaces.hs b/gen/Amazonka/QuickSight/ListNamespaces.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListNamespaces.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.QuickSight.ListNamespaces
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the namespaces for the specified Amazon Web Services account. This
+-- operation doesn\'t list deleted namespaces.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListNamespaces
+  ( -- * Creating a Request
+    ListNamespaces (..),
+    newListNamespaces,
+
+    -- * Request Lenses
+    listNamespaces_maxResults,
+    listNamespaces_nextToken,
+    listNamespaces_awsAccountId,
+
+    -- * Destructuring the Response
+    ListNamespacesResponse (..),
+    newListNamespacesResponse,
+
+    -- * Response Lenses
+    listNamespacesResponse_namespaces,
+    listNamespacesResponse_nextToken,
+    listNamespacesResponse_requestId,
+    listNamespacesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListNamespaces' smart constructor.
+data ListNamespaces = ListNamespaces'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A unique pagination token that can be used in a subsequent request. You
+    -- will receive a pagination token in the response body of a previous
+    -- @ListNameSpaces@ API call if there is more data that can be returned. To
+    -- receive the data, make another @ListNamespaces@ API call with the
+    -- returned token to retrieve the next page of data. Each token is valid
+    -- for 24 hours. If you try to make a @ListNamespaces@ API call with an
+    -- expired token, you will receive a @HTTP 400 InvalidNextTokenException@
+    -- error.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that contains the Amazon
+    -- QuickSight namespaces that you want to list.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNamespaces' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listNamespaces_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listNamespaces_nextToken' - A unique pagination token that can be used in a subsequent request. You
+-- will receive a pagination token in the response body of a previous
+-- @ListNameSpaces@ API call if there is more data that can be returned. To
+-- receive the data, make another @ListNamespaces@ API call with the
+-- returned token to retrieve the next page of data. Each token is valid
+-- for 24 hours. If you try to make a @ListNamespaces@ API call with an
+-- expired token, you will receive a @HTTP 400 InvalidNextTokenException@
+-- error.
+--
+-- 'awsAccountId', 'listNamespaces_awsAccountId' - The ID for the Amazon Web Services account that contains the Amazon
+-- QuickSight namespaces that you want to list.
+newListNamespaces ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListNamespaces
+newListNamespaces pAwsAccountId_ =
+  ListNamespaces'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to return.
+listNamespaces_maxResults :: Lens.Lens' ListNamespaces (Prelude.Maybe Prelude.Natural)
+listNamespaces_maxResults = Lens.lens (\ListNamespaces' {maxResults} -> maxResults) (\s@ListNamespaces' {} a -> s {maxResults = a} :: ListNamespaces)
+
+-- | A unique pagination token that can be used in a subsequent request. You
+-- will receive a pagination token in the response body of a previous
+-- @ListNameSpaces@ API call if there is more data that can be returned. To
+-- receive the data, make another @ListNamespaces@ API call with the
+-- returned token to retrieve the next page of data. Each token is valid
+-- for 24 hours. If you try to make a @ListNamespaces@ API call with an
+-- expired token, you will receive a @HTTP 400 InvalidNextTokenException@
+-- error.
+listNamespaces_nextToken :: Lens.Lens' ListNamespaces (Prelude.Maybe Prelude.Text)
+listNamespaces_nextToken = Lens.lens (\ListNamespaces' {nextToken} -> nextToken) (\s@ListNamespaces' {} a -> s {nextToken = a} :: ListNamespaces)
+
+-- | The ID for the Amazon Web Services account that contains the Amazon
+-- QuickSight namespaces that you want to list.
+listNamespaces_awsAccountId :: Lens.Lens' ListNamespaces Prelude.Text
+listNamespaces_awsAccountId = Lens.lens (\ListNamespaces' {awsAccountId} -> awsAccountId) (\s@ListNamespaces' {} a -> s {awsAccountId = a} :: ListNamespaces)
+
+instance Core.AWSPager ListNamespaces where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listNamespacesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listNamespacesResponse_namespaces
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listNamespaces_nextToken
+          Lens..~ rs
+          Lens.^? listNamespacesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListNamespaces where
+  type
+    AWSResponse ListNamespaces =
+      ListNamespacesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNamespacesResponse'
+            Prelude.<$> (x Data..?> "Namespaces" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListNamespaces where
+  hashWithSalt _salt ListNamespaces' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListNamespaces where
+  rnf ListNamespaces' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListNamespaces where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListNamespaces where
+  toPath ListNamespaces' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/namespaces"]
+
+instance Data.ToQuery ListNamespaces where
+  toQuery ListNamespaces' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListNamespacesResponse' smart constructor.
+data ListNamespacesResponse = ListNamespacesResponse'
+  { -- | The information about the namespaces in this Amazon Web Services
+    -- account. The response includes the namespace ARN, name, Amazon Web
+    -- Services Region, notification email address, creation status, and
+    -- identity store.
+    namespaces :: Prelude.Maybe [NamespaceInfoV2],
+    -- | A unique pagination token that can be used in a subsequent request.
+    -- Receiving @NextToken@ in your response inticates that there is more data
+    -- that can be returned. To receive the data, make another @ListNamespaces@
+    -- API call with the returned token to retrieve the next page of data. Each
+    -- token is valid for 24 hours. If you try to make a @ListNamespaces@ API
+    -- call with an expired token, you will receive a
+    -- @HTTP 400 InvalidNextTokenException@ error.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNamespacesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'namespaces', 'listNamespacesResponse_namespaces' - The information about the namespaces in this Amazon Web Services
+-- account. The response includes the namespace ARN, name, Amazon Web
+-- Services Region, notification email address, creation status, and
+-- identity store.
+--
+-- 'nextToken', 'listNamespacesResponse_nextToken' - A unique pagination token that can be used in a subsequent request.
+-- Receiving @NextToken@ in your response inticates that there is more data
+-- that can be returned. To receive the data, make another @ListNamespaces@
+-- API call with the returned token to retrieve the next page of data. Each
+-- token is valid for 24 hours. If you try to make a @ListNamespaces@ API
+-- call with an expired token, you will receive a
+-- @HTTP 400 InvalidNextTokenException@ error.
+--
+-- 'requestId', 'listNamespacesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listNamespacesResponse_status' - The HTTP status of the request.
+newListNamespacesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListNamespacesResponse
+newListNamespacesResponse pStatus_ =
+  ListNamespacesResponse'
+    { namespaces =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The information about the namespaces in this Amazon Web Services
+-- account. The response includes the namespace ARN, name, Amazon Web
+-- Services Region, notification email address, creation status, and
+-- identity store.
+listNamespacesResponse_namespaces :: Lens.Lens' ListNamespacesResponse (Prelude.Maybe [NamespaceInfoV2])
+listNamespacesResponse_namespaces = Lens.lens (\ListNamespacesResponse' {namespaces} -> namespaces) (\s@ListNamespacesResponse' {} a -> s {namespaces = a} :: ListNamespacesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A unique pagination token that can be used in a subsequent request.
+-- Receiving @NextToken@ in your response inticates that there is more data
+-- that can be returned. To receive the data, make another @ListNamespaces@
+-- API call with the returned token to retrieve the next page of data. Each
+-- token is valid for 24 hours. If you try to make a @ListNamespaces@ API
+-- call with an expired token, you will receive a
+-- @HTTP 400 InvalidNextTokenException@ error.
+listNamespacesResponse_nextToken :: Lens.Lens' ListNamespacesResponse (Prelude.Maybe Prelude.Text)
+listNamespacesResponse_nextToken = Lens.lens (\ListNamespacesResponse' {nextToken} -> nextToken) (\s@ListNamespacesResponse' {} a -> s {nextToken = a} :: ListNamespacesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listNamespacesResponse_requestId :: Lens.Lens' ListNamespacesResponse (Prelude.Maybe Prelude.Text)
+listNamespacesResponse_requestId = Lens.lens (\ListNamespacesResponse' {requestId} -> requestId) (\s@ListNamespacesResponse' {} a -> s {requestId = a} :: ListNamespacesResponse)
+
+-- | The HTTP status of the request.
+listNamespacesResponse_status :: Lens.Lens' ListNamespacesResponse Prelude.Int
+listNamespacesResponse_status = Lens.lens (\ListNamespacesResponse' {status} -> status) (\s@ListNamespacesResponse' {} a -> s {status = a} :: ListNamespacesResponse)
+
+instance Prelude.NFData ListNamespacesResponse where
+  rnf ListNamespacesResponse' {..} =
+    Prelude.rnf namespaces
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListTagsForResource.hs b/gen/Amazonka/QuickSight/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListTagsForResource.hs
@@ -0,0 +1,178 @@
+{-# 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.QuickSight.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags assigned to a resource.
+module Amazonka.QuickSight.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_requestId,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want a list of
+    -- tags for.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want a list of
+-- tags for.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource that you want a list of
+-- tags for.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Tags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat
+      ["/resources/", Data.toBS resourceArn, "/tags"]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the resource.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The HTTP status of the request.
+    status :: 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:
+--
+-- 'requestId', 'listTagsForResourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+--
+-- 'status', 'listTagsForResourceResponse_status' - The HTTP status of the request.
+newListTagsForResourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pStatus_ =
+  ListTagsForResourceResponse'
+    { requestId =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+listTagsForResourceResponse_requestId :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe Prelude.Text)
+listTagsForResourceResponse_requestId = Lens.lens (\ListTagsForResourceResponse' {requestId} -> requestId) (\s@ListTagsForResourceResponse' {} a -> s {requestId = a} :: ListTagsForResourceResponse)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listTagsForResourceResponse_status :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_status = Lens.lens (\ListTagsForResourceResponse' {status} -> status) (\s@ListTagsForResourceResponse' {} a -> s {status = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListTemplateAliases.hs b/gen/Amazonka/QuickSight/ListTemplateAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListTemplateAliases.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.QuickSight.ListTemplateAliases
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the aliases of a template.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListTemplateAliases
+  ( -- * Creating a Request
+    ListTemplateAliases (..),
+    newListTemplateAliases,
+
+    -- * Request Lenses
+    listTemplateAliases_maxResults,
+    listTemplateAliases_nextToken,
+    listTemplateAliases_awsAccountId,
+    listTemplateAliases_templateId,
+
+    -- * Destructuring the Response
+    ListTemplateAliasesResponse (..),
+    newListTemplateAliasesResponse,
+
+    -- * Response Lenses
+    listTemplateAliasesResponse_nextToken,
+    listTemplateAliasesResponse_requestId,
+    listTemplateAliasesResponse_templateAliasList,
+    listTemplateAliasesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTemplateAliases' smart constructor.
+data ListTemplateAliases = ListTemplateAliases'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the template
+    -- aliases that you\'re listing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplateAliases' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTemplateAliases_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listTemplateAliases_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listTemplateAliases_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- aliases that you\'re listing.
+--
+-- 'templateId', 'listTemplateAliases_templateId' - The ID for the template.
+newListTemplateAliases ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  ListTemplateAliases
+newListTemplateAliases pAwsAccountId_ pTemplateId_ =
+  ListTemplateAliases'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      templateId = pTemplateId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listTemplateAliases_maxResults :: Lens.Lens' ListTemplateAliases (Prelude.Maybe Prelude.Natural)
+listTemplateAliases_maxResults = Lens.lens (\ListTemplateAliases' {maxResults} -> maxResults) (\s@ListTemplateAliases' {} a -> s {maxResults = a} :: ListTemplateAliases)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listTemplateAliases_nextToken :: Lens.Lens' ListTemplateAliases (Prelude.Maybe Prelude.Text)
+listTemplateAliases_nextToken = Lens.lens (\ListTemplateAliases' {nextToken} -> nextToken) (\s@ListTemplateAliases' {} a -> s {nextToken = a} :: ListTemplateAliases)
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- aliases that you\'re listing.
+listTemplateAliases_awsAccountId :: Lens.Lens' ListTemplateAliases Prelude.Text
+listTemplateAliases_awsAccountId = Lens.lens (\ListTemplateAliases' {awsAccountId} -> awsAccountId) (\s@ListTemplateAliases' {} a -> s {awsAccountId = a} :: ListTemplateAliases)
+
+-- | The ID for the template.
+listTemplateAliases_templateId :: Lens.Lens' ListTemplateAliases Prelude.Text
+listTemplateAliases_templateId = Lens.lens (\ListTemplateAliases' {templateId} -> templateId) (\s@ListTemplateAliases' {} a -> s {templateId = a} :: ListTemplateAliases)
+
+instance Core.AWSPager ListTemplateAliases where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTemplateAliasesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTemplateAliasesResponse_templateAliasList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTemplateAliases_nextToken
+          Lens..~ rs
+          Lens.^? listTemplateAliasesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTemplateAliases where
+  type
+    AWSResponse ListTemplateAliases =
+      ListTemplateAliasesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTemplateAliasesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> ( x
+                            Data..?> "TemplateAliasList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTemplateAliases where
+  hashWithSalt _salt ListTemplateAliases' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData ListTemplateAliases where
+  rnf ListTemplateAliases' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders ListTemplateAliases where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTemplateAliases where
+  toPath ListTemplateAliases' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/aliases"
+      ]
+
+instance Data.ToQuery ListTemplateAliases where
+  toQuery ListTemplateAliases' {..} =
+    Prelude.mconcat
+      [ "max-result" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListTemplateAliasesResponse' smart constructor.
+data ListTemplateAliasesResponse = ListTemplateAliasesResponse'
+  { -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | A structure containing the list of the template\'s aliases.
+    templateAliasList :: Prelude.Maybe [TemplateAlias],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplateAliasesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTemplateAliasesResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listTemplateAliasesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateAliasList', 'listTemplateAliasesResponse_templateAliasList' - A structure containing the list of the template\'s aliases.
+--
+-- 'status', 'listTemplateAliasesResponse_status' - The HTTP status of the request.
+newListTemplateAliasesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListTemplateAliasesResponse
+newListTemplateAliasesResponse pStatus_ =
+  ListTemplateAliasesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateAliasList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listTemplateAliasesResponse_nextToken :: Lens.Lens' ListTemplateAliasesResponse (Prelude.Maybe Prelude.Text)
+listTemplateAliasesResponse_nextToken = Lens.lens (\ListTemplateAliasesResponse' {nextToken} -> nextToken) (\s@ListTemplateAliasesResponse' {} a -> s {nextToken = a} :: ListTemplateAliasesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listTemplateAliasesResponse_requestId :: Lens.Lens' ListTemplateAliasesResponse (Prelude.Maybe Prelude.Text)
+listTemplateAliasesResponse_requestId = Lens.lens (\ListTemplateAliasesResponse' {requestId} -> requestId) (\s@ListTemplateAliasesResponse' {} a -> s {requestId = a} :: ListTemplateAliasesResponse)
+
+-- | A structure containing the list of the template\'s aliases.
+listTemplateAliasesResponse_templateAliasList :: Lens.Lens' ListTemplateAliasesResponse (Prelude.Maybe [TemplateAlias])
+listTemplateAliasesResponse_templateAliasList = Lens.lens (\ListTemplateAliasesResponse' {templateAliasList} -> templateAliasList) (\s@ListTemplateAliasesResponse' {} a -> s {templateAliasList = a} :: ListTemplateAliasesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listTemplateAliasesResponse_status :: Lens.Lens' ListTemplateAliasesResponse Prelude.Int
+listTemplateAliasesResponse_status = Lens.lens (\ListTemplateAliasesResponse' {status} -> status) (\s@ListTemplateAliasesResponse' {} a -> s {status = a} :: ListTemplateAliasesResponse)
+
+instance Prelude.NFData ListTemplateAliasesResponse where
+  rnf ListTemplateAliasesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateAliasList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListTemplateVersions.hs b/gen/Amazonka/QuickSight/ListTemplateVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListTemplateVersions.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListTemplateVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the versions of the templates in the current Amazon QuickSight
+-- account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListTemplateVersions
+  ( -- * Creating a Request
+    ListTemplateVersions (..),
+    newListTemplateVersions,
+
+    -- * Request Lenses
+    listTemplateVersions_maxResults,
+    listTemplateVersions_nextToken,
+    listTemplateVersions_awsAccountId,
+    listTemplateVersions_templateId,
+
+    -- * Destructuring the Response
+    ListTemplateVersionsResponse (..),
+    newListTemplateVersionsResponse,
+
+    -- * Response Lenses
+    listTemplateVersionsResponse_nextToken,
+    listTemplateVersionsResponse_requestId,
+    listTemplateVersionsResponse_templateVersionSummaryList,
+    listTemplateVersionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTemplateVersions' smart constructor.
+data ListTemplateVersions = ListTemplateVersions'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the templates
+    -- that you\'re listing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplateVersions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTemplateVersions_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listTemplateVersions_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listTemplateVersions_awsAccountId' - The ID of the Amazon Web Services account that contains the templates
+-- that you\'re listing.
+--
+-- 'templateId', 'listTemplateVersions_templateId' - The ID for the template.
+newListTemplateVersions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  ListTemplateVersions
+newListTemplateVersions pAwsAccountId_ pTemplateId_ =
+  ListTemplateVersions'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      templateId = pTemplateId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listTemplateVersions_maxResults :: Lens.Lens' ListTemplateVersions (Prelude.Maybe Prelude.Natural)
+listTemplateVersions_maxResults = Lens.lens (\ListTemplateVersions' {maxResults} -> maxResults) (\s@ListTemplateVersions' {} a -> s {maxResults = a} :: ListTemplateVersions)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listTemplateVersions_nextToken :: Lens.Lens' ListTemplateVersions (Prelude.Maybe Prelude.Text)
+listTemplateVersions_nextToken = Lens.lens (\ListTemplateVersions' {nextToken} -> nextToken) (\s@ListTemplateVersions' {} a -> s {nextToken = a} :: ListTemplateVersions)
+
+-- | The ID of the Amazon Web Services account that contains the templates
+-- that you\'re listing.
+listTemplateVersions_awsAccountId :: Lens.Lens' ListTemplateVersions Prelude.Text
+listTemplateVersions_awsAccountId = Lens.lens (\ListTemplateVersions' {awsAccountId} -> awsAccountId) (\s@ListTemplateVersions' {} a -> s {awsAccountId = a} :: ListTemplateVersions)
+
+-- | The ID for the template.
+listTemplateVersions_templateId :: Lens.Lens' ListTemplateVersions Prelude.Text
+listTemplateVersions_templateId = Lens.lens (\ListTemplateVersions' {templateId} -> templateId) (\s@ListTemplateVersions' {} a -> s {templateId = a} :: ListTemplateVersions)
+
+instance Core.AWSPager ListTemplateVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTemplateVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTemplateVersionsResponse_templateVersionSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTemplateVersions_nextToken
+          Lens..~ rs
+          Lens.^? listTemplateVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTemplateVersions where
+  type
+    AWSResponse ListTemplateVersions =
+      ListTemplateVersionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTemplateVersionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> ( x
+                            Data..?> "TemplateVersionSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTemplateVersions where
+  hashWithSalt _salt ListTemplateVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData ListTemplateVersions where
+  rnf ListTemplateVersions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders ListTemplateVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTemplateVersions where
+  toPath ListTemplateVersions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/versions"
+      ]
+
+instance Data.ToQuery ListTemplateVersions where
+  toQuery ListTemplateVersions' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListTemplateVersionsResponse' smart constructor.
+data ListTemplateVersionsResponse = ListTemplateVersionsResponse'
+  { -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | A structure containing a list of all the versions of the specified
+    -- template.
+    templateVersionSummaryList :: Prelude.Maybe [TemplateVersionSummary],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplateVersionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTemplateVersionsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listTemplateVersionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateVersionSummaryList', 'listTemplateVersionsResponse_templateVersionSummaryList' - A structure containing a list of all the versions of the specified
+-- template.
+--
+-- 'status', 'listTemplateVersionsResponse_status' - The HTTP status of the request.
+newListTemplateVersionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListTemplateVersionsResponse
+newListTemplateVersionsResponse pStatus_ =
+  ListTemplateVersionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateVersionSummaryList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listTemplateVersionsResponse_nextToken :: Lens.Lens' ListTemplateVersionsResponse (Prelude.Maybe Prelude.Text)
+listTemplateVersionsResponse_nextToken = Lens.lens (\ListTemplateVersionsResponse' {nextToken} -> nextToken) (\s@ListTemplateVersionsResponse' {} a -> s {nextToken = a} :: ListTemplateVersionsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listTemplateVersionsResponse_requestId :: Lens.Lens' ListTemplateVersionsResponse (Prelude.Maybe Prelude.Text)
+listTemplateVersionsResponse_requestId = Lens.lens (\ListTemplateVersionsResponse' {requestId} -> requestId) (\s@ListTemplateVersionsResponse' {} a -> s {requestId = a} :: ListTemplateVersionsResponse)
+
+-- | A structure containing a list of all the versions of the specified
+-- template.
+listTemplateVersionsResponse_templateVersionSummaryList :: Lens.Lens' ListTemplateVersionsResponse (Prelude.Maybe [TemplateVersionSummary])
+listTemplateVersionsResponse_templateVersionSummaryList = Lens.lens (\ListTemplateVersionsResponse' {templateVersionSummaryList} -> templateVersionSummaryList) (\s@ListTemplateVersionsResponse' {} a -> s {templateVersionSummaryList = a} :: ListTemplateVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listTemplateVersionsResponse_status :: Lens.Lens' ListTemplateVersionsResponse Prelude.Int
+listTemplateVersionsResponse_status = Lens.lens (\ListTemplateVersionsResponse' {status} -> status) (\s@ListTemplateVersionsResponse' {} a -> s {status = a} :: ListTemplateVersionsResponse)
+
+instance Prelude.NFData ListTemplateVersionsResponse where
+  rnf ListTemplateVersionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateVersionSummaryList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListTemplates.hs b/gen/Amazonka/QuickSight/ListTemplates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListTemplates.hs
@@ -0,0 +1,250 @@
+{-# 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.QuickSight.ListTemplates
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the templates in the current Amazon QuickSight account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListTemplates
+  ( -- * Creating a Request
+    ListTemplates (..),
+    newListTemplates,
+
+    -- * Request Lenses
+    listTemplates_maxResults,
+    listTemplates_nextToken,
+    listTemplates_awsAccountId,
+
+    -- * Destructuring the Response
+    ListTemplatesResponse (..),
+    newListTemplatesResponse,
+
+    -- * Response Lenses
+    listTemplatesResponse_nextToken,
+    listTemplatesResponse_requestId,
+    listTemplatesResponse_templateSummaryList,
+    listTemplatesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTemplates' smart constructor.
+data ListTemplates = ListTemplates'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the templates
+    -- that you\'re listing.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplates' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTemplates_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listTemplates_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listTemplates_awsAccountId' - The ID of the Amazon Web Services account that contains the templates
+-- that you\'re listing.
+newListTemplates ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListTemplates
+newListTemplates pAwsAccountId_ =
+  ListTemplates'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listTemplates_maxResults :: Lens.Lens' ListTemplates (Prelude.Maybe Prelude.Natural)
+listTemplates_maxResults = Lens.lens (\ListTemplates' {maxResults} -> maxResults) (\s@ListTemplates' {} a -> s {maxResults = a} :: ListTemplates)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listTemplates_nextToken :: Lens.Lens' ListTemplates (Prelude.Maybe Prelude.Text)
+listTemplates_nextToken = Lens.lens (\ListTemplates' {nextToken} -> nextToken) (\s@ListTemplates' {} a -> s {nextToken = a} :: ListTemplates)
+
+-- | The ID of the Amazon Web Services account that contains the templates
+-- that you\'re listing.
+listTemplates_awsAccountId :: Lens.Lens' ListTemplates Prelude.Text
+listTemplates_awsAccountId = Lens.lens (\ListTemplates' {awsAccountId} -> awsAccountId) (\s@ListTemplates' {} a -> s {awsAccountId = a} :: ListTemplates)
+
+instance Core.AWSPager ListTemplates where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTemplatesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTemplatesResponse_templateSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTemplates_nextToken
+          Lens..~ rs
+          Lens.^? listTemplatesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTemplates where
+  type
+    AWSResponse ListTemplates =
+      ListTemplatesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTemplatesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> ( x
+                            Data..?> "TemplateSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTemplates where
+  hashWithSalt _salt ListTemplates' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListTemplates where
+  rnf ListTemplates' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListTemplates where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTemplates where
+  toPath ListTemplates' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/templates"]
+
+instance Data.ToQuery ListTemplates where
+  toQuery ListTemplates' {..} =
+    Prelude.mconcat
+      [ "max-result" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListTemplatesResponse' smart constructor.
+data ListTemplatesResponse = ListTemplatesResponse'
+  { -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | A structure containing information about the templates in the list.
+    templateSummaryList :: Prelude.Maybe [TemplateSummary],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplatesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTemplatesResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listTemplatesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateSummaryList', 'listTemplatesResponse_templateSummaryList' - A structure containing information about the templates in the list.
+--
+-- 'status', 'listTemplatesResponse_status' - The HTTP status of the request.
+newListTemplatesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListTemplatesResponse
+newListTemplatesResponse pStatus_ =
+  ListTemplatesResponse'
+    { nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateSummaryList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listTemplatesResponse_nextToken :: Lens.Lens' ListTemplatesResponse (Prelude.Maybe Prelude.Text)
+listTemplatesResponse_nextToken = Lens.lens (\ListTemplatesResponse' {nextToken} -> nextToken) (\s@ListTemplatesResponse' {} a -> s {nextToken = a} :: ListTemplatesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listTemplatesResponse_requestId :: Lens.Lens' ListTemplatesResponse (Prelude.Maybe Prelude.Text)
+listTemplatesResponse_requestId = Lens.lens (\ListTemplatesResponse' {requestId} -> requestId) (\s@ListTemplatesResponse' {} a -> s {requestId = a} :: ListTemplatesResponse)
+
+-- | A structure containing information about the templates in the list.
+listTemplatesResponse_templateSummaryList :: Lens.Lens' ListTemplatesResponse (Prelude.Maybe [TemplateSummary])
+listTemplatesResponse_templateSummaryList = Lens.lens (\ListTemplatesResponse' {templateSummaryList} -> templateSummaryList) (\s@ListTemplatesResponse' {} a -> s {templateSummaryList = a} :: ListTemplatesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listTemplatesResponse_status :: Lens.Lens' ListTemplatesResponse Prelude.Int
+listTemplatesResponse_status = Lens.lens (\ListTemplatesResponse' {status} -> status) (\s@ListTemplatesResponse' {} a -> s {status = a} :: ListTemplatesResponse)
+
+instance Prelude.NFData ListTemplatesResponse where
+  rnf ListTemplatesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateSummaryList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListThemeAliases.hs b/gen/Amazonka/QuickSight/ListThemeAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListThemeAliases.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListThemeAliases
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the aliases of a theme.
+module Amazonka.QuickSight.ListThemeAliases
+  ( -- * Creating a Request
+    ListThemeAliases (..),
+    newListThemeAliases,
+
+    -- * Request Lenses
+    listThemeAliases_maxResults,
+    listThemeAliases_nextToken,
+    listThemeAliases_awsAccountId,
+    listThemeAliases_themeId,
+
+    -- * Destructuring the Response
+    ListThemeAliasesResponse (..),
+    newListThemeAliasesResponse,
+
+    -- * Response Lenses
+    listThemeAliasesResponse_nextToken,
+    listThemeAliasesResponse_requestId,
+    listThemeAliasesResponse_themeAliasList,
+    listThemeAliasesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListThemeAliases' smart constructor.
+data ListThemeAliases = ListThemeAliases'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the theme
+    -- aliases that you\'re listing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListThemeAliases' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listThemeAliases_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listThemeAliases_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listThemeAliases_awsAccountId' - The ID of the Amazon Web Services account that contains the theme
+-- aliases that you\'re listing.
+--
+-- 'themeId', 'listThemeAliases_themeId' - The ID for the theme.
+newListThemeAliases ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  ListThemeAliases
+newListThemeAliases pAwsAccountId_ pThemeId_ =
+  ListThemeAliases'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      themeId = pThemeId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listThemeAliases_maxResults :: Lens.Lens' ListThemeAliases (Prelude.Maybe Prelude.Natural)
+listThemeAliases_maxResults = Lens.lens (\ListThemeAliases' {maxResults} -> maxResults) (\s@ListThemeAliases' {} a -> s {maxResults = a} :: ListThemeAliases)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listThemeAliases_nextToken :: Lens.Lens' ListThemeAliases (Prelude.Maybe Prelude.Text)
+listThemeAliases_nextToken = Lens.lens (\ListThemeAliases' {nextToken} -> nextToken) (\s@ListThemeAliases' {} a -> s {nextToken = a} :: ListThemeAliases)
+
+-- | The ID of the Amazon Web Services account that contains the theme
+-- aliases that you\'re listing.
+listThemeAliases_awsAccountId :: Lens.Lens' ListThemeAliases Prelude.Text
+listThemeAliases_awsAccountId = Lens.lens (\ListThemeAliases' {awsAccountId} -> awsAccountId) (\s@ListThemeAliases' {} a -> s {awsAccountId = a} :: ListThemeAliases)
+
+-- | The ID for the theme.
+listThemeAliases_themeId :: Lens.Lens' ListThemeAliases Prelude.Text
+listThemeAliases_themeId = Lens.lens (\ListThemeAliases' {themeId} -> themeId) (\s@ListThemeAliases' {} a -> s {themeId = a} :: ListThemeAliases)
+
+instance Core.AWSRequest ListThemeAliases where
+  type
+    AWSResponse ListThemeAliases =
+      ListThemeAliasesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListThemeAliasesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeAliasList" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListThemeAliases where
+  hashWithSalt _salt ListThemeAliases' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData ListThemeAliases where
+  rnf ListThemeAliases' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+
+instance Data.ToHeaders ListThemeAliases where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListThemeAliases where
+  toPath ListThemeAliases' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/aliases"
+      ]
+
+instance Data.ToQuery ListThemeAliases where
+  toQuery ListThemeAliases' {..} =
+    Prelude.mconcat
+      [ "max-result" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListThemeAliasesResponse' smart constructor.
+data ListThemeAliasesResponse = ListThemeAliasesResponse'
+  { -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | A structure containing the list of the theme\'s aliases.
+    themeAliasList :: Prelude.Maybe [ThemeAlias],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListThemeAliasesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listThemeAliasesResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listThemeAliasesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeAliasList', 'listThemeAliasesResponse_themeAliasList' - A structure containing the list of the theme\'s aliases.
+--
+-- 'status', 'listThemeAliasesResponse_status' - The HTTP status of the request.
+newListThemeAliasesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListThemeAliasesResponse
+newListThemeAliasesResponse pStatus_ =
+  ListThemeAliasesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeAliasList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listThemeAliasesResponse_nextToken :: Lens.Lens' ListThemeAliasesResponse (Prelude.Maybe Prelude.Text)
+listThemeAliasesResponse_nextToken = Lens.lens (\ListThemeAliasesResponse' {nextToken} -> nextToken) (\s@ListThemeAliasesResponse' {} a -> s {nextToken = a} :: ListThemeAliasesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listThemeAliasesResponse_requestId :: Lens.Lens' ListThemeAliasesResponse (Prelude.Maybe Prelude.Text)
+listThemeAliasesResponse_requestId = Lens.lens (\ListThemeAliasesResponse' {requestId} -> requestId) (\s@ListThemeAliasesResponse' {} a -> s {requestId = a} :: ListThemeAliasesResponse)
+
+-- | A structure containing the list of the theme\'s aliases.
+listThemeAliasesResponse_themeAliasList :: Lens.Lens' ListThemeAliasesResponse (Prelude.Maybe [ThemeAlias])
+listThemeAliasesResponse_themeAliasList = Lens.lens (\ListThemeAliasesResponse' {themeAliasList} -> themeAliasList) (\s@ListThemeAliasesResponse' {} a -> s {themeAliasList = a} :: ListThemeAliasesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listThemeAliasesResponse_status :: Lens.Lens' ListThemeAliasesResponse Prelude.Int
+listThemeAliasesResponse_status = Lens.lens (\ListThemeAliasesResponse' {status} -> status) (\s@ListThemeAliasesResponse' {} a -> s {status = a} :: ListThemeAliasesResponse)
+
+instance Prelude.NFData ListThemeAliasesResponse where
+  rnf ListThemeAliasesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeAliasList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListThemeVersions.hs b/gen/Amazonka/QuickSight/ListThemeVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListThemeVersions.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListThemeVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the versions of the themes in the current Amazon Web Services
+-- account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListThemeVersions
+  ( -- * Creating a Request
+    ListThemeVersions (..),
+    newListThemeVersions,
+
+    -- * Request Lenses
+    listThemeVersions_maxResults,
+    listThemeVersions_nextToken,
+    listThemeVersions_awsAccountId,
+    listThemeVersions_themeId,
+
+    -- * Destructuring the Response
+    ListThemeVersionsResponse (..),
+    newListThemeVersionsResponse,
+
+    -- * Response Lenses
+    listThemeVersionsResponse_nextToken,
+    listThemeVersionsResponse_requestId,
+    listThemeVersionsResponse_themeVersionSummaryList,
+    listThemeVersionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListThemeVersions' smart constructor.
+data ListThemeVersions = ListThemeVersions'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the themes that
+    -- you\'re listing.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListThemeVersions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listThemeVersions_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listThemeVersions_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'listThemeVersions_awsAccountId' - The ID of the Amazon Web Services account that contains the themes that
+-- you\'re listing.
+--
+-- 'themeId', 'listThemeVersions_themeId' - The ID for the theme.
+newListThemeVersions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  ListThemeVersions
+newListThemeVersions pAwsAccountId_ pThemeId_ =
+  ListThemeVersions'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      themeId = pThemeId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listThemeVersions_maxResults :: Lens.Lens' ListThemeVersions (Prelude.Maybe Prelude.Natural)
+listThemeVersions_maxResults = Lens.lens (\ListThemeVersions' {maxResults} -> maxResults) (\s@ListThemeVersions' {} a -> s {maxResults = a} :: ListThemeVersions)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listThemeVersions_nextToken :: Lens.Lens' ListThemeVersions (Prelude.Maybe Prelude.Text)
+listThemeVersions_nextToken = Lens.lens (\ListThemeVersions' {nextToken} -> nextToken) (\s@ListThemeVersions' {} a -> s {nextToken = a} :: ListThemeVersions)
+
+-- | The ID of the Amazon Web Services account that contains the themes that
+-- you\'re listing.
+listThemeVersions_awsAccountId :: Lens.Lens' ListThemeVersions Prelude.Text
+listThemeVersions_awsAccountId = Lens.lens (\ListThemeVersions' {awsAccountId} -> awsAccountId) (\s@ListThemeVersions' {} a -> s {awsAccountId = a} :: ListThemeVersions)
+
+-- | The ID for the theme.
+listThemeVersions_themeId :: Lens.Lens' ListThemeVersions Prelude.Text
+listThemeVersions_themeId = Lens.lens (\ListThemeVersions' {themeId} -> themeId) (\s@ListThemeVersions' {} a -> s {themeId = a} :: ListThemeVersions)
+
+instance Core.AWSPager ListThemeVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listThemeVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listThemeVersionsResponse_themeVersionSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listThemeVersions_nextToken
+          Lens..~ rs
+          Lens.^? listThemeVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListThemeVersions where
+  type
+    AWSResponse ListThemeVersions =
+      ListThemeVersionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListThemeVersionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> ( x
+                            Data..?> "ThemeVersionSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListThemeVersions where
+  hashWithSalt _salt ListThemeVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData ListThemeVersions where
+  rnf ListThemeVersions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+
+instance Data.ToHeaders ListThemeVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListThemeVersions where
+  toPath ListThemeVersions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/versions"
+      ]
+
+instance Data.ToQuery ListThemeVersions where
+  toQuery ListThemeVersions' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListThemeVersionsResponse' smart constructor.
+data ListThemeVersionsResponse = ListThemeVersionsResponse'
+  { -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | A structure containing a list of all the versions of the specified
+    -- theme.
+    themeVersionSummaryList :: Prelude.Maybe [ThemeVersionSummary],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListThemeVersionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listThemeVersionsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listThemeVersionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeVersionSummaryList', 'listThemeVersionsResponse_themeVersionSummaryList' - A structure containing a list of all the versions of the specified
+-- theme.
+--
+-- 'status', 'listThemeVersionsResponse_status' - The HTTP status of the request.
+newListThemeVersionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListThemeVersionsResponse
+newListThemeVersionsResponse pStatus_ =
+  ListThemeVersionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeVersionSummaryList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listThemeVersionsResponse_nextToken :: Lens.Lens' ListThemeVersionsResponse (Prelude.Maybe Prelude.Text)
+listThemeVersionsResponse_nextToken = Lens.lens (\ListThemeVersionsResponse' {nextToken} -> nextToken) (\s@ListThemeVersionsResponse' {} a -> s {nextToken = a} :: ListThemeVersionsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listThemeVersionsResponse_requestId :: Lens.Lens' ListThemeVersionsResponse (Prelude.Maybe Prelude.Text)
+listThemeVersionsResponse_requestId = Lens.lens (\ListThemeVersionsResponse' {requestId} -> requestId) (\s@ListThemeVersionsResponse' {} a -> s {requestId = a} :: ListThemeVersionsResponse)
+
+-- | A structure containing a list of all the versions of the specified
+-- theme.
+listThemeVersionsResponse_themeVersionSummaryList :: Lens.Lens' ListThemeVersionsResponse (Prelude.Maybe [ThemeVersionSummary])
+listThemeVersionsResponse_themeVersionSummaryList = Lens.lens (\ListThemeVersionsResponse' {themeVersionSummaryList} -> themeVersionSummaryList) (\s@ListThemeVersionsResponse' {} a -> s {themeVersionSummaryList = a} :: ListThemeVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listThemeVersionsResponse_status :: Lens.Lens' ListThemeVersionsResponse Prelude.Int
+listThemeVersionsResponse_status = Lens.lens (\ListThemeVersionsResponse' {status} -> status) (\s@ListThemeVersionsResponse' {} a -> s {status = a} :: ListThemeVersionsResponse)
+
+instance Prelude.NFData ListThemeVersionsResponse where
+  rnf ListThemeVersionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeVersionSummaryList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListThemes.hs b/gen/Amazonka/QuickSight/ListThemes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListThemes.hs
@@ -0,0 +1,288 @@
+{-# 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.QuickSight.ListThemes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the themes in the current Amazon Web Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.ListThemes
+  ( -- * Creating a Request
+    ListThemes (..),
+    newListThemes,
+
+    -- * Request Lenses
+    listThemes_maxResults,
+    listThemes_nextToken,
+    listThemes_type,
+    listThemes_awsAccountId,
+
+    -- * Destructuring the Response
+    ListThemesResponse (..),
+    newListThemesResponse,
+
+    -- * Response Lenses
+    listThemesResponse_nextToken,
+    listThemesResponse_requestId,
+    listThemesResponse_themeSummaryList,
+    listThemesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListThemes' smart constructor.
+data ListThemes = ListThemes'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The type of themes that you want to list. Valid options include the
+    -- following:
+    --
+    -- -   @ALL (default)@- Display all existing themes.
+    --
+    -- -   @CUSTOM@ - Display only the themes created by people using Amazon
+    --     QuickSight.
+    --
+    -- -   @QUICKSIGHT@ - Display only the starting themes defined by Amazon
+    --     QuickSight.
+    type' :: Prelude.Maybe ThemeType,
+    -- | The ID of the Amazon Web Services account that contains the themes that
+    -- you\'re listing.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListThemes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listThemes_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'listThemes_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'type'', 'listThemes_type' - The type of themes that you want to list. Valid options include the
+-- following:
+--
+-- -   @ALL (default)@- Display all existing themes.
+--
+-- -   @CUSTOM@ - Display only the themes created by people using Amazon
+--     QuickSight.
+--
+-- -   @QUICKSIGHT@ - Display only the starting themes defined by Amazon
+--     QuickSight.
+--
+-- 'awsAccountId', 'listThemes_awsAccountId' - The ID of the Amazon Web Services account that contains the themes that
+-- you\'re listing.
+newListThemes ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  ListThemes
+newListThemes pAwsAccountId_ =
+  ListThemes'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | The maximum number of results to be returned per request.
+listThemes_maxResults :: Lens.Lens' ListThemes (Prelude.Maybe Prelude.Natural)
+listThemes_maxResults = Lens.lens (\ListThemes' {maxResults} -> maxResults) (\s@ListThemes' {} a -> s {maxResults = a} :: ListThemes)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listThemes_nextToken :: Lens.Lens' ListThemes (Prelude.Maybe Prelude.Text)
+listThemes_nextToken = Lens.lens (\ListThemes' {nextToken} -> nextToken) (\s@ListThemes' {} a -> s {nextToken = a} :: ListThemes)
+
+-- | The type of themes that you want to list. Valid options include the
+-- following:
+--
+-- -   @ALL (default)@- Display all existing themes.
+--
+-- -   @CUSTOM@ - Display only the themes created by people using Amazon
+--     QuickSight.
+--
+-- -   @QUICKSIGHT@ - Display only the starting themes defined by Amazon
+--     QuickSight.
+listThemes_type :: Lens.Lens' ListThemes (Prelude.Maybe ThemeType)
+listThemes_type = Lens.lens (\ListThemes' {type'} -> type') (\s@ListThemes' {} a -> s {type' = a} :: ListThemes)
+
+-- | The ID of the Amazon Web Services account that contains the themes that
+-- you\'re listing.
+listThemes_awsAccountId :: Lens.Lens' ListThemes Prelude.Text
+listThemes_awsAccountId = Lens.lens (\ListThemes' {awsAccountId} -> awsAccountId) (\s@ListThemes' {} a -> s {awsAccountId = a} :: ListThemes)
+
+instance Core.AWSPager ListThemes where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listThemesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listThemesResponse_themeSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listThemes_nextToken
+          Lens..~ rs
+          Lens.^? listThemesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListThemes where
+  type AWSResponse ListThemes = ListThemesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListThemesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> ( x
+                            Data..?> "ThemeSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListThemes where
+  hashWithSalt _salt ListThemes' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData ListThemes where
+  rnf ListThemes' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders ListThemes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListThemes where
+  toPath ListThemes' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/themes"]
+
+instance Data.ToQuery ListThemes where
+  toQuery ListThemes' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "type" Data.=: type'
+      ]
+
+-- | /See:/ 'newListThemesResponse' smart constructor.
+data ListThemesResponse = ListThemesResponse'
+  { -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the themes in the list.
+    themeSummaryList :: Prelude.Maybe [ThemeSummary],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListThemesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listThemesResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'listThemesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeSummaryList', 'listThemesResponse_themeSummaryList' - Information about the themes in the list.
+--
+-- 'status', 'listThemesResponse_status' - The HTTP status of the request.
+newListThemesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListThemesResponse
+newListThemesResponse pStatus_ =
+  ListThemesResponse'
+    { nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeSummaryList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+listThemesResponse_nextToken :: Lens.Lens' ListThemesResponse (Prelude.Maybe Prelude.Text)
+listThemesResponse_nextToken = Lens.lens (\ListThemesResponse' {nextToken} -> nextToken) (\s@ListThemesResponse' {} a -> s {nextToken = a} :: ListThemesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listThemesResponse_requestId :: Lens.Lens' ListThemesResponse (Prelude.Maybe Prelude.Text)
+listThemesResponse_requestId = Lens.lens (\ListThemesResponse' {requestId} -> requestId) (\s@ListThemesResponse' {} a -> s {requestId = a} :: ListThemesResponse)
+
+-- | Information about the themes in the list.
+listThemesResponse_themeSummaryList :: Lens.Lens' ListThemesResponse (Prelude.Maybe [ThemeSummary])
+listThemesResponse_themeSummaryList = Lens.lens (\ListThemesResponse' {themeSummaryList} -> themeSummaryList) (\s@ListThemesResponse' {} a -> s {themeSummaryList = a} :: ListThemesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listThemesResponse_status :: Lens.Lens' ListThemesResponse Prelude.Int
+listThemesResponse_status = Lens.lens (\ListThemesResponse' {status} -> status) (\s@ListThemesResponse' {} a -> s {status = a} :: ListThemesResponse)
+
+instance Prelude.NFData ListThemesResponse where
+  rnf ListThemesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeSummaryList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListUserGroups.hs b/gen/Amazonka/QuickSight/ListUserGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListUserGroups.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListUserGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the Amazon QuickSight groups that an Amazon QuickSight user is a
+-- member of.
+module Amazonka.QuickSight.ListUserGroups
+  ( -- * Creating a Request
+    ListUserGroups (..),
+    newListUserGroups,
+
+    -- * Request Lenses
+    listUserGroups_maxResults,
+    listUserGroups_nextToken,
+    listUserGroups_userName,
+    listUserGroups_awsAccountId,
+    listUserGroups_namespace,
+
+    -- * Destructuring the Response
+    ListUserGroupsResponse (..),
+    newListUserGroupsResponse,
+
+    -- * Response Lenses
+    listUserGroupsResponse_groupList,
+    listUserGroupsResponse_nextToken,
+    listUserGroupsResponse_requestId,
+    listUserGroupsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListUserGroups' smart constructor.
+data ListUserGroups = ListUserGroups'
+  { -- | The maximum number of results to return from this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon QuickSight user name that you want to list group memberships
+    -- for.
+    userName :: Prelude.Text,
+    -- | The Amazon Web Services account ID that the user is in. Currently, you
+    -- use the ID for the Amazon Web Services account that contains your Amazon
+    -- QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUserGroups' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listUserGroups_maxResults' - The maximum number of results to return from this request.
+--
+-- 'nextToken', 'listUserGroups_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'userName', 'listUserGroups_userName' - The Amazon QuickSight user name that you want to list group memberships
+-- for.
+--
+-- 'awsAccountId', 'listUserGroups_awsAccountId' - The Amazon Web Services account ID that the user is in. Currently, you
+-- use the ID for the Amazon Web Services account that contains your Amazon
+-- QuickSight account.
+--
+-- 'namespace', 'listUserGroups_namespace' - The namespace. Currently, you should set this to @default@.
+newListUserGroups ::
+  -- | 'userName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  ListUserGroups
+newListUserGroups
+  pUserName_
+  pAwsAccountId_
+  pNamespace_ =
+    ListUserGroups'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        userName = pUserName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The maximum number of results to return from this request.
+listUserGroups_maxResults :: Lens.Lens' ListUserGroups (Prelude.Maybe Prelude.Natural)
+listUserGroups_maxResults = Lens.lens (\ListUserGroups' {maxResults} -> maxResults) (\s@ListUserGroups' {} a -> s {maxResults = a} :: ListUserGroups)
+
+-- | A pagination token that can be used in a subsequent request.
+listUserGroups_nextToken :: Lens.Lens' ListUserGroups (Prelude.Maybe Prelude.Text)
+listUserGroups_nextToken = Lens.lens (\ListUserGroups' {nextToken} -> nextToken) (\s@ListUserGroups' {} a -> s {nextToken = a} :: ListUserGroups)
+
+-- | The Amazon QuickSight user name that you want to list group memberships
+-- for.
+listUserGroups_userName :: Lens.Lens' ListUserGroups Prelude.Text
+listUserGroups_userName = Lens.lens (\ListUserGroups' {userName} -> userName) (\s@ListUserGroups' {} a -> s {userName = a} :: ListUserGroups)
+
+-- | The Amazon Web Services account ID that the user is in. Currently, you
+-- use the ID for the Amazon Web Services account that contains your Amazon
+-- QuickSight account.
+listUserGroups_awsAccountId :: Lens.Lens' ListUserGroups Prelude.Text
+listUserGroups_awsAccountId = Lens.lens (\ListUserGroups' {awsAccountId} -> awsAccountId) (\s@ListUserGroups' {} a -> s {awsAccountId = a} :: ListUserGroups)
+
+-- | The namespace. Currently, you should set this to @default@.
+listUserGroups_namespace :: Lens.Lens' ListUserGroups Prelude.Text
+listUserGroups_namespace = Lens.lens (\ListUserGroups' {namespace} -> namespace) (\s@ListUserGroups' {} a -> s {namespace = a} :: ListUserGroups)
+
+instance Core.AWSRequest ListUserGroups where
+  type
+    AWSResponse ListUserGroups =
+      ListUserGroupsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListUserGroupsResponse'
+            Prelude.<$> (x Data..?> "GroupList" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListUserGroups where
+  hashWithSalt _salt ListUserGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` userName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData ListUserGroups where
+  rnf ListUserGroups' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders ListUserGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListUserGroups where
+  toPath ListUserGroups' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users/",
+        Data.toBS userName,
+        "/groups"
+      ]
+
+instance Data.ToQuery ListUserGroups where
+  toQuery ListUserGroups' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListUserGroupsResponse' smart constructor.
+data ListUserGroupsResponse = ListUserGroupsResponse'
+  { -- | The list of groups the user is a member of.
+    groupList :: Prelude.Maybe [Group],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUserGroupsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupList', 'listUserGroupsResponse_groupList' - The list of groups the user is a member of.
+--
+-- 'nextToken', 'listUserGroupsResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'listUserGroupsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'listUserGroupsResponse_status' - The HTTP status of the request.
+newListUserGroupsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListUserGroupsResponse
+newListUserGroupsResponse pStatus_ =
+  ListUserGroupsResponse'
+    { groupList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The list of groups the user is a member of.
+listUserGroupsResponse_groupList :: Lens.Lens' ListUserGroupsResponse (Prelude.Maybe [Group])
+listUserGroupsResponse_groupList = Lens.lens (\ListUserGroupsResponse' {groupList} -> groupList) (\s@ListUserGroupsResponse' {} a -> s {groupList = a} :: ListUserGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+listUserGroupsResponse_nextToken :: Lens.Lens' ListUserGroupsResponse (Prelude.Maybe Prelude.Text)
+listUserGroupsResponse_nextToken = Lens.lens (\ListUserGroupsResponse' {nextToken} -> nextToken) (\s@ListUserGroupsResponse' {} a -> s {nextToken = a} :: ListUserGroupsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listUserGroupsResponse_requestId :: Lens.Lens' ListUserGroupsResponse (Prelude.Maybe Prelude.Text)
+listUserGroupsResponse_requestId = Lens.lens (\ListUserGroupsResponse' {requestId} -> requestId) (\s@ListUserGroupsResponse' {} a -> s {requestId = a} :: ListUserGroupsResponse)
+
+-- | The HTTP status of the request.
+listUserGroupsResponse_status :: Lens.Lens' ListUserGroupsResponse Prelude.Int
+listUserGroupsResponse_status = Lens.lens (\ListUserGroupsResponse' {status} -> status) (\s@ListUserGroupsResponse' {} a -> s {status = a} :: ListUserGroupsResponse)
+
+instance Prelude.NFData ListUserGroupsResponse where
+  rnf ListUserGroupsResponse' {..} =
+    Prelude.rnf groupList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/ListUsers.hs b/gen/Amazonka/QuickSight/ListUsers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/ListUsers.hs
@@ -0,0 +1,238 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.ListUsers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of all of the Amazon QuickSight users belonging to this
+-- account.
+module Amazonka.QuickSight.ListUsers
+  ( -- * Creating a Request
+    ListUsers (..),
+    newListUsers,
+
+    -- * Request Lenses
+    listUsers_maxResults,
+    listUsers_nextToken,
+    listUsers_awsAccountId,
+    listUsers_namespace,
+
+    -- * Destructuring the Response
+    ListUsersResponse (..),
+    newListUsersResponse,
+
+    -- * Response Lenses
+    listUsersResponse_nextToken,
+    listUsersResponse_requestId,
+    listUsersResponse_userList,
+    listUsersResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListUsers' smart constructor.
+data ListUsers = ListUsers'
+  { -- | The maximum number of results to return from this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the user is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUsers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listUsers_maxResults' - The maximum number of results to return from this request.
+--
+-- 'nextToken', 'listUsers_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'listUsers_awsAccountId' - The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'listUsers_namespace' - The namespace. Currently, you should set this to @default@.
+newListUsers ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  ListUsers
+newListUsers pAwsAccountId_ pNamespace_ =
+  ListUsers'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The maximum number of results to return from this request.
+listUsers_maxResults :: Lens.Lens' ListUsers (Prelude.Maybe Prelude.Natural)
+listUsers_maxResults = Lens.lens (\ListUsers' {maxResults} -> maxResults) (\s@ListUsers' {} a -> s {maxResults = a} :: ListUsers)
+
+-- | A pagination token that can be used in a subsequent request.
+listUsers_nextToken :: Lens.Lens' ListUsers (Prelude.Maybe Prelude.Text)
+listUsers_nextToken = Lens.lens (\ListUsers' {nextToken} -> nextToken) (\s@ListUsers' {} a -> s {nextToken = a} :: ListUsers)
+
+-- | The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+listUsers_awsAccountId :: Lens.Lens' ListUsers Prelude.Text
+listUsers_awsAccountId = Lens.lens (\ListUsers' {awsAccountId} -> awsAccountId) (\s@ListUsers' {} a -> s {awsAccountId = a} :: ListUsers)
+
+-- | The namespace. Currently, you should set this to @default@.
+listUsers_namespace :: Lens.Lens' ListUsers Prelude.Text
+listUsers_namespace = Lens.lens (\ListUsers' {namespace} -> namespace) (\s@ListUsers' {} a -> s {namespace = a} :: ListUsers)
+
+instance Core.AWSRequest ListUsers where
+  type AWSResponse ListUsers = ListUsersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListUsersResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "UserList" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListUsers where
+  hashWithSalt _salt ListUsers' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData ListUsers where
+  rnf ListUsers' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders ListUsers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListUsers where
+  toPath ListUsers' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users"
+      ]
+
+instance Data.ToQuery ListUsers where
+  toQuery ListUsers' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListUsersResponse' smart constructor.
+data ListUsersResponse = ListUsersResponse'
+  { -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The list of users.
+    userList :: Prelude.Maybe [User],
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUsersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listUsersResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'listUsersResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'userList', 'listUsersResponse_userList' - The list of users.
+--
+-- 'status', 'listUsersResponse_status' - The HTTP status of the request.
+newListUsersResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  ListUsersResponse
+newListUsersResponse pStatus_ =
+  ListUsersResponse'
+    { nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      userList = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A pagination token that can be used in a subsequent request.
+listUsersResponse_nextToken :: Lens.Lens' ListUsersResponse (Prelude.Maybe Prelude.Text)
+listUsersResponse_nextToken = Lens.lens (\ListUsersResponse' {nextToken} -> nextToken) (\s@ListUsersResponse' {} a -> s {nextToken = a} :: ListUsersResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+listUsersResponse_requestId :: Lens.Lens' ListUsersResponse (Prelude.Maybe Prelude.Text)
+listUsersResponse_requestId = Lens.lens (\ListUsersResponse' {requestId} -> requestId) (\s@ListUsersResponse' {} a -> s {requestId = a} :: ListUsersResponse)
+
+-- | The list of users.
+listUsersResponse_userList :: Lens.Lens' ListUsersResponse (Prelude.Maybe [User])
+listUsersResponse_userList = Lens.lens (\ListUsersResponse' {userList} -> userList) (\s@ListUsersResponse' {} a -> s {userList = a} :: ListUsersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HTTP status of the request.
+listUsersResponse_status :: Lens.Lens' ListUsersResponse Prelude.Int
+listUsersResponse_status = Lens.lens (\ListUsersResponse' {status} -> status) (\s@ListUsersResponse' {} a -> s {status = a} :: ListUsersResponse)
+
+instance Prelude.NFData ListUsersResponse where
+  rnf ListUsersResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf userList
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/RegisterUser.hs b/gen/Amazonka/QuickSight/RegisterUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/RegisterUser.hs
@@ -0,0 +1,587 @@
+{-# 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.QuickSight.RegisterUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon QuickSight user, whose identity is associated with the
+-- Identity and Access Management (IAM) identity or role specified in the
+-- request.
+module Amazonka.QuickSight.RegisterUser
+  ( -- * Creating a Request
+    RegisterUser (..),
+    newRegisterUser,
+
+    -- * Request Lenses
+    registerUser_customFederationProviderUrl,
+    registerUser_customPermissionsName,
+    registerUser_externalLoginFederationProviderType,
+    registerUser_externalLoginId,
+    registerUser_iamArn,
+    registerUser_sessionName,
+    registerUser_userName,
+    registerUser_identityType,
+    registerUser_email,
+    registerUser_userRole,
+    registerUser_awsAccountId,
+    registerUser_namespace,
+
+    -- * Destructuring the Response
+    RegisterUserResponse (..),
+    newRegisterUserResponse,
+
+    -- * Response Lenses
+    registerUserResponse_requestId,
+    registerUserResponse_user,
+    registerUserResponse_userInvitationUrl,
+    registerUserResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRegisterUser' smart constructor.
+data RegisterUser = RegisterUser'
+  { -- | The URL of the custom OpenID Connect (OIDC) provider that provides
+    -- identity to let a user federate into Amazon QuickSight with an
+    -- associated Identity and Access Management(IAM) role. This parameter
+    -- should only be used when @ExternalLoginFederationProviderType@ parameter
+    -- is set to @CUSTOM_OIDC@.
+    customFederationProviderUrl :: Prelude.Maybe Prelude.Text,
+    -- | (Enterprise edition only) The name of the custom permissions profile
+    -- that you want to assign to this user. Customized permissions allows you
+    -- to control a user\'s access by restricting access the following
+    -- operations:
+    --
+    -- -   Create and update data sources
+    --
+    -- -   Create and update datasets
+    --
+    -- -   Create and update email reports
+    --
+    -- -   Subscribe to email reports
+    --
+    -- To add custom permissions to an existing user, use
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+    -- instead.
+    --
+    -- A set of custom permissions includes any combination of these
+    -- restrictions. Currently, you need to create the profile names for custom
+    -- permission sets by using the Amazon QuickSight console. Then, you use
+    -- the @RegisterUser@ API operation to assign the named set of permissions
+    -- to a Amazon QuickSight user.
+    --
+    -- Amazon QuickSight custom permissions are applied through IAM policies.
+    -- Therefore, they override the permissions typically granted by assigning
+    -- Amazon QuickSight users to one of the default security cohorts in Amazon
+    -- QuickSight (admin, author, reader).
+    --
+    -- This feature is available only to Amazon QuickSight Enterprise edition
+    -- subscriptions.
+    customPermissionsName :: Prelude.Maybe Prelude.Text,
+    -- | The type of supported external login provider that provides identity to
+    -- let a user federate into Amazon QuickSight with an associated Identity
+    -- and Access Management(IAM) role. The type of supported external login
+    -- provider can be one of the following.
+    --
+    -- -   @COGNITO@: Amazon Cognito. The provider URL is
+    --     cognito-identity.amazonaws.com. When choosing the @COGNITO@ provider
+    --     type, don’t use the \"CustomFederationProviderUrl\" parameter which
+    --     is only needed when the external provider is custom.
+    --
+    -- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider. When choosing
+    --     @CUSTOM_OIDC@ type, use the @CustomFederationProviderUrl@ parameter
+    --     to provide the custom OIDC provider URL.
+    externalLoginFederationProviderType :: Prelude.Maybe Prelude.Text,
+    -- | The identity ID for a user in the external login provider.
+    externalLoginId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the IAM user or role that you are registering with Amazon
+    -- QuickSight.
+    iamArn :: Prelude.Maybe Prelude.Text,
+    -- | You need to use this parameter only when you register one or more users
+    -- using an assumed IAM role. You don\'t need to provide the session name
+    -- for other scenarios, for example when you are registering an IAM user or
+    -- an Amazon QuickSight user. You can register multiple users using the
+    -- same IAM role if each user has a different session name. For more
+    -- information on assuming IAM roles, see
+    -- <https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html assume-role>
+    -- in the /CLI Reference./
+    sessionName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon QuickSight user name that you want to create for the user you
+    -- are registering.
+    userName :: Prelude.Maybe Prelude.Text,
+    -- | Amazon QuickSight supports several ways of managing the identity of
+    -- users. This parameter accepts two values:
+    --
+    -- -   @IAM@: A user whose identity maps to an existing IAM user or role.
+    --
+    -- -   @QUICKSIGHT@: A user whose identity is owned and managed internally
+    --     by Amazon QuickSight.
+    identityType :: IdentityType,
+    -- | The email address of the user that you want to register.
+    email :: Prelude.Text,
+    -- | The Amazon QuickSight role for the user. The user role can be one of the
+    -- following:
+    --
+    -- -   @READER@: A user who has read-only access to dashboards.
+    --
+    -- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+    --     and dashboards.
+    --
+    -- -   @ADMIN@: A user who is an author, who can also manage Amazon
+    --     QuickSight settings.
+    --
+    -- -   @RESTRICTED_READER@: This role isn\'t currently available for use.
+    --
+    -- -   @RESTRICTED_AUTHOR@: This role isn\'t currently available for use.
+    userRole :: UserRole,
+    -- | The ID for the Amazon Web Services account that the user is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customFederationProviderUrl', 'registerUser_customFederationProviderUrl' - The URL of the custom OpenID Connect (OIDC) provider that provides
+-- identity to let a user federate into Amazon QuickSight with an
+-- associated Identity and Access Management(IAM) role. This parameter
+-- should only be used when @ExternalLoginFederationProviderType@ parameter
+-- is set to @CUSTOM_OIDC@.
+--
+-- 'customPermissionsName', 'registerUser_customPermissionsName' - (Enterprise edition only) The name of the custom permissions profile
+-- that you want to assign to this user. Customized permissions allows you
+-- to control a user\'s access by restricting access the following
+-- operations:
+--
+-- -   Create and update data sources
+--
+-- -   Create and update datasets
+--
+-- -   Create and update email reports
+--
+-- -   Subscribe to email reports
+--
+-- To add custom permissions to an existing user, use
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+-- instead.
+--
+-- A set of custom permissions includes any combination of these
+-- restrictions. Currently, you need to create the profile names for custom
+-- permission sets by using the Amazon QuickSight console. Then, you use
+-- the @RegisterUser@ API operation to assign the named set of permissions
+-- to a Amazon QuickSight user.
+--
+-- Amazon QuickSight custom permissions are applied through IAM policies.
+-- Therefore, they override the permissions typically granted by assigning
+-- Amazon QuickSight users to one of the default security cohorts in Amazon
+-- QuickSight (admin, author, reader).
+--
+-- This feature is available only to Amazon QuickSight Enterprise edition
+-- subscriptions.
+--
+-- 'externalLoginFederationProviderType', 'registerUser_externalLoginFederationProviderType' - The type of supported external login provider that provides identity to
+-- let a user federate into Amazon QuickSight with an associated Identity
+-- and Access Management(IAM) role. The type of supported external login
+-- provider can be one of the following.
+--
+-- -   @COGNITO@: Amazon Cognito. The provider URL is
+--     cognito-identity.amazonaws.com. When choosing the @COGNITO@ provider
+--     type, don’t use the \"CustomFederationProviderUrl\" parameter which
+--     is only needed when the external provider is custom.
+--
+-- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider. When choosing
+--     @CUSTOM_OIDC@ type, use the @CustomFederationProviderUrl@ parameter
+--     to provide the custom OIDC provider URL.
+--
+-- 'externalLoginId', 'registerUser_externalLoginId' - The identity ID for a user in the external login provider.
+--
+-- 'iamArn', 'registerUser_iamArn' - The ARN of the IAM user or role that you are registering with Amazon
+-- QuickSight.
+--
+-- 'sessionName', 'registerUser_sessionName' - You need to use this parameter only when you register one or more users
+-- using an assumed IAM role. You don\'t need to provide the session name
+-- for other scenarios, for example when you are registering an IAM user or
+-- an Amazon QuickSight user. You can register multiple users using the
+-- same IAM role if each user has a different session name. For more
+-- information on assuming IAM roles, see
+-- <https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html assume-role>
+-- in the /CLI Reference./
+--
+-- 'userName', 'registerUser_userName' - The Amazon QuickSight user name that you want to create for the user you
+-- are registering.
+--
+-- 'identityType', 'registerUser_identityType' - Amazon QuickSight supports several ways of managing the identity of
+-- users. This parameter accepts two values:
+--
+-- -   @IAM@: A user whose identity maps to an existing IAM user or role.
+--
+-- -   @QUICKSIGHT@: A user whose identity is owned and managed internally
+--     by Amazon QuickSight.
+--
+-- 'email', 'registerUser_email' - The email address of the user that you want to register.
+--
+-- 'userRole', 'registerUser_userRole' - The Amazon QuickSight role for the user. The user role can be one of the
+-- following:
+--
+-- -   @READER@: A user who has read-only access to dashboards.
+--
+-- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+--     and dashboards.
+--
+-- -   @ADMIN@: A user who is an author, who can also manage Amazon
+--     QuickSight settings.
+--
+-- -   @RESTRICTED_READER@: This role isn\'t currently available for use.
+--
+-- -   @RESTRICTED_AUTHOR@: This role isn\'t currently available for use.
+--
+-- 'awsAccountId', 'registerUser_awsAccountId' - The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'registerUser_namespace' - The namespace. Currently, you should set this to @default@.
+newRegisterUser ::
+  -- | 'identityType'
+  IdentityType ->
+  -- | 'email'
+  Prelude.Text ->
+  -- | 'userRole'
+  UserRole ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  RegisterUser
+newRegisterUser
+  pIdentityType_
+  pEmail_
+  pUserRole_
+  pAwsAccountId_
+  pNamespace_ =
+    RegisterUser'
+      { customFederationProviderUrl =
+          Prelude.Nothing,
+        customPermissionsName = Prelude.Nothing,
+        externalLoginFederationProviderType =
+          Prelude.Nothing,
+        externalLoginId = Prelude.Nothing,
+        iamArn = Prelude.Nothing,
+        sessionName = Prelude.Nothing,
+        userName = Prelude.Nothing,
+        identityType = pIdentityType_,
+        email = pEmail_,
+        userRole = pUserRole_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_
+      }
+
+-- | The URL of the custom OpenID Connect (OIDC) provider that provides
+-- identity to let a user federate into Amazon QuickSight with an
+-- associated Identity and Access Management(IAM) role. This parameter
+-- should only be used when @ExternalLoginFederationProviderType@ parameter
+-- is set to @CUSTOM_OIDC@.
+registerUser_customFederationProviderUrl :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_customFederationProviderUrl = Lens.lens (\RegisterUser' {customFederationProviderUrl} -> customFederationProviderUrl) (\s@RegisterUser' {} a -> s {customFederationProviderUrl = a} :: RegisterUser)
+
+-- | (Enterprise edition only) The name of the custom permissions profile
+-- that you want to assign to this user. Customized permissions allows you
+-- to control a user\'s access by restricting access the following
+-- operations:
+--
+-- -   Create and update data sources
+--
+-- -   Create and update datasets
+--
+-- -   Create and update email reports
+--
+-- -   Subscribe to email reports
+--
+-- To add custom permissions to an existing user, use
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+-- instead.
+--
+-- A set of custom permissions includes any combination of these
+-- restrictions. Currently, you need to create the profile names for custom
+-- permission sets by using the Amazon QuickSight console. Then, you use
+-- the @RegisterUser@ API operation to assign the named set of permissions
+-- to a Amazon QuickSight user.
+--
+-- Amazon QuickSight custom permissions are applied through IAM policies.
+-- Therefore, they override the permissions typically granted by assigning
+-- Amazon QuickSight users to one of the default security cohorts in Amazon
+-- QuickSight (admin, author, reader).
+--
+-- This feature is available only to Amazon QuickSight Enterprise edition
+-- subscriptions.
+registerUser_customPermissionsName :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_customPermissionsName = Lens.lens (\RegisterUser' {customPermissionsName} -> customPermissionsName) (\s@RegisterUser' {} a -> s {customPermissionsName = a} :: RegisterUser)
+
+-- | The type of supported external login provider that provides identity to
+-- let a user federate into Amazon QuickSight with an associated Identity
+-- and Access Management(IAM) role. The type of supported external login
+-- provider can be one of the following.
+--
+-- -   @COGNITO@: Amazon Cognito. The provider URL is
+--     cognito-identity.amazonaws.com. When choosing the @COGNITO@ provider
+--     type, don’t use the \"CustomFederationProviderUrl\" parameter which
+--     is only needed when the external provider is custom.
+--
+-- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider. When choosing
+--     @CUSTOM_OIDC@ type, use the @CustomFederationProviderUrl@ parameter
+--     to provide the custom OIDC provider URL.
+registerUser_externalLoginFederationProviderType :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_externalLoginFederationProviderType = Lens.lens (\RegisterUser' {externalLoginFederationProviderType} -> externalLoginFederationProviderType) (\s@RegisterUser' {} a -> s {externalLoginFederationProviderType = a} :: RegisterUser)
+
+-- | The identity ID for a user in the external login provider.
+registerUser_externalLoginId :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_externalLoginId = Lens.lens (\RegisterUser' {externalLoginId} -> externalLoginId) (\s@RegisterUser' {} a -> s {externalLoginId = a} :: RegisterUser)
+
+-- | The ARN of the IAM user or role that you are registering with Amazon
+-- QuickSight.
+registerUser_iamArn :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_iamArn = Lens.lens (\RegisterUser' {iamArn} -> iamArn) (\s@RegisterUser' {} a -> s {iamArn = a} :: RegisterUser)
+
+-- | You need to use this parameter only when you register one or more users
+-- using an assumed IAM role. You don\'t need to provide the session name
+-- for other scenarios, for example when you are registering an IAM user or
+-- an Amazon QuickSight user. You can register multiple users using the
+-- same IAM role if each user has a different session name. For more
+-- information on assuming IAM roles, see
+-- <https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html assume-role>
+-- in the /CLI Reference./
+registerUser_sessionName :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_sessionName = Lens.lens (\RegisterUser' {sessionName} -> sessionName) (\s@RegisterUser' {} a -> s {sessionName = a} :: RegisterUser)
+
+-- | The Amazon QuickSight user name that you want to create for the user you
+-- are registering.
+registerUser_userName :: Lens.Lens' RegisterUser (Prelude.Maybe Prelude.Text)
+registerUser_userName = Lens.lens (\RegisterUser' {userName} -> userName) (\s@RegisterUser' {} a -> s {userName = a} :: RegisterUser)
+
+-- | Amazon QuickSight supports several ways of managing the identity of
+-- users. This parameter accepts two values:
+--
+-- -   @IAM@: A user whose identity maps to an existing IAM user or role.
+--
+-- -   @QUICKSIGHT@: A user whose identity is owned and managed internally
+--     by Amazon QuickSight.
+registerUser_identityType :: Lens.Lens' RegisterUser IdentityType
+registerUser_identityType = Lens.lens (\RegisterUser' {identityType} -> identityType) (\s@RegisterUser' {} a -> s {identityType = a} :: RegisterUser)
+
+-- | The email address of the user that you want to register.
+registerUser_email :: Lens.Lens' RegisterUser Prelude.Text
+registerUser_email = Lens.lens (\RegisterUser' {email} -> email) (\s@RegisterUser' {} a -> s {email = a} :: RegisterUser)
+
+-- | The Amazon QuickSight role for the user. The user role can be one of the
+-- following:
+--
+-- -   @READER@: A user who has read-only access to dashboards.
+--
+-- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+--     and dashboards.
+--
+-- -   @ADMIN@: A user who is an author, who can also manage Amazon
+--     QuickSight settings.
+--
+-- -   @RESTRICTED_READER@: This role isn\'t currently available for use.
+--
+-- -   @RESTRICTED_AUTHOR@: This role isn\'t currently available for use.
+registerUser_userRole :: Lens.Lens' RegisterUser UserRole
+registerUser_userRole = Lens.lens (\RegisterUser' {userRole} -> userRole) (\s@RegisterUser' {} a -> s {userRole = a} :: RegisterUser)
+
+-- | The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+registerUser_awsAccountId :: Lens.Lens' RegisterUser Prelude.Text
+registerUser_awsAccountId = Lens.lens (\RegisterUser' {awsAccountId} -> awsAccountId) (\s@RegisterUser' {} a -> s {awsAccountId = a} :: RegisterUser)
+
+-- | The namespace. Currently, you should set this to @default@.
+registerUser_namespace :: Lens.Lens' RegisterUser Prelude.Text
+registerUser_namespace = Lens.lens (\RegisterUser' {namespace} -> namespace) (\s@RegisterUser' {} a -> s {namespace = a} :: RegisterUser)
+
+instance Core.AWSRequest RegisterUser where
+  type AWSResponse RegisterUser = RegisterUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RegisterUserResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "User")
+            Prelude.<*> (x Data..?> "UserInvitationUrl")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RegisterUser where
+  hashWithSalt _salt RegisterUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` customFederationProviderUrl
+      `Prelude.hashWithSalt` customPermissionsName
+      `Prelude.hashWithSalt` externalLoginFederationProviderType
+      `Prelude.hashWithSalt` externalLoginId
+      `Prelude.hashWithSalt` iamArn
+      `Prelude.hashWithSalt` sessionName
+      `Prelude.hashWithSalt` userName
+      `Prelude.hashWithSalt` identityType
+      `Prelude.hashWithSalt` email
+      `Prelude.hashWithSalt` userRole
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData RegisterUser where
+  rnf RegisterUser' {..} =
+    Prelude.rnf customFederationProviderUrl
+      `Prelude.seq` Prelude.rnf customPermissionsName
+      `Prelude.seq` Prelude.rnf externalLoginFederationProviderType
+      `Prelude.seq` Prelude.rnf externalLoginId
+      `Prelude.seq` Prelude.rnf iamArn
+      `Prelude.seq` Prelude.rnf sessionName
+      `Prelude.seq` Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf identityType
+      `Prelude.seq` Prelude.rnf email
+      `Prelude.seq` Prelude.rnf userRole
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders RegisterUser where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RegisterUser where
+  toJSON RegisterUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomFederationProviderUrl" Data..=)
+              Prelude.<$> customFederationProviderUrl,
+            ("CustomPermissionsName" Data..=)
+              Prelude.<$> customPermissionsName,
+            ("ExternalLoginFederationProviderType" Data..=)
+              Prelude.<$> externalLoginFederationProviderType,
+            ("ExternalLoginId" Data..=)
+              Prelude.<$> externalLoginId,
+            ("IamArn" Data..=) Prelude.<$> iamArn,
+            ("SessionName" Data..=) Prelude.<$> sessionName,
+            ("UserName" Data..=) Prelude.<$> userName,
+            Prelude.Just ("IdentityType" Data..= identityType),
+            Prelude.Just ("Email" Data..= email),
+            Prelude.Just ("UserRole" Data..= userRole)
+          ]
+      )
+
+instance Data.ToPath RegisterUser where
+  toPath RegisterUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users"
+      ]
+
+instance Data.ToQuery RegisterUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRegisterUserResponse' smart constructor.
+data RegisterUserResponse = RegisterUserResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The user\'s user name.
+    user :: Prelude.Maybe User,
+    -- | The URL the user visits to complete registration and provide a password.
+    -- This is returned only for users with an identity type of @QUICKSIGHT@.
+    userInvitationUrl :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'registerUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'user', 'registerUserResponse_user' - The user\'s user name.
+--
+-- 'userInvitationUrl', 'registerUserResponse_userInvitationUrl' - The URL the user visits to complete registration and provide a password.
+-- This is returned only for users with an identity type of @QUICKSIGHT@.
+--
+-- 'status', 'registerUserResponse_status' - The HTTP status of the request.
+newRegisterUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  RegisterUserResponse
+newRegisterUserResponse pStatus_ =
+  RegisterUserResponse'
+    { requestId = Prelude.Nothing,
+      user = Prelude.Nothing,
+      userInvitationUrl = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+registerUserResponse_requestId :: Lens.Lens' RegisterUserResponse (Prelude.Maybe Prelude.Text)
+registerUserResponse_requestId = Lens.lens (\RegisterUserResponse' {requestId} -> requestId) (\s@RegisterUserResponse' {} a -> s {requestId = a} :: RegisterUserResponse)
+
+-- | The user\'s user name.
+registerUserResponse_user :: Lens.Lens' RegisterUserResponse (Prelude.Maybe User)
+registerUserResponse_user = Lens.lens (\RegisterUserResponse' {user} -> user) (\s@RegisterUserResponse' {} a -> s {user = a} :: RegisterUserResponse)
+
+-- | The URL the user visits to complete registration and provide a password.
+-- This is returned only for users with an identity type of @QUICKSIGHT@.
+registerUserResponse_userInvitationUrl :: Lens.Lens' RegisterUserResponse (Prelude.Maybe Prelude.Text)
+registerUserResponse_userInvitationUrl = Lens.lens (\RegisterUserResponse' {userInvitationUrl} -> userInvitationUrl) (\s@RegisterUserResponse' {} a -> s {userInvitationUrl = a} :: RegisterUserResponse)
+
+-- | The HTTP status of the request.
+registerUserResponse_status :: Lens.Lens' RegisterUserResponse Prelude.Int
+registerUserResponse_status = Lens.lens (\RegisterUserResponse' {status} -> status) (\s@RegisterUserResponse' {} a -> s {status = a} :: RegisterUserResponse)
+
+instance Prelude.NFData RegisterUserResponse where
+  rnf RegisterUserResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf user
+      `Prelude.seq` Prelude.rnf userInvitationUrl
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/RestoreAnalysis.hs b/gen/Amazonka/QuickSight/RestoreAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/RestoreAnalysis.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.QuickSight.RestoreAnalysis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Restores an analysis.
+module Amazonka.QuickSight.RestoreAnalysis
+  ( -- * Creating a Request
+    RestoreAnalysis (..),
+    newRestoreAnalysis,
+
+    -- * Request Lenses
+    restoreAnalysis_awsAccountId,
+    restoreAnalysis_analysisId,
+
+    -- * Destructuring the Response
+    RestoreAnalysisResponse (..),
+    newRestoreAnalysisResponse,
+
+    -- * Response Lenses
+    restoreAnalysisResponse_analysisId,
+    restoreAnalysisResponse_arn,
+    restoreAnalysisResponse_requestId,
+    restoreAnalysisResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRestoreAnalysis' smart constructor.
+data RestoreAnalysis = RestoreAnalysis'
+  { -- | The ID of the Amazon Web Services account that contains the analysis.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the analysis that you\'re restoring.
+    analysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'restoreAnalysis_awsAccountId' - The ID of the Amazon Web Services account that contains the analysis.
+--
+-- 'analysisId', 'restoreAnalysis_analysisId' - The ID of the analysis that you\'re restoring.
+newRestoreAnalysis ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  RestoreAnalysis
+newRestoreAnalysis pAwsAccountId_ pAnalysisId_ =
+  RestoreAnalysis'
+    { awsAccountId = pAwsAccountId_,
+      analysisId = pAnalysisId_
+    }
+
+-- | The ID of the Amazon Web Services account that contains the analysis.
+restoreAnalysis_awsAccountId :: Lens.Lens' RestoreAnalysis Prelude.Text
+restoreAnalysis_awsAccountId = Lens.lens (\RestoreAnalysis' {awsAccountId} -> awsAccountId) (\s@RestoreAnalysis' {} a -> s {awsAccountId = a} :: RestoreAnalysis)
+
+-- | The ID of the analysis that you\'re restoring.
+restoreAnalysis_analysisId :: Lens.Lens' RestoreAnalysis Prelude.Text
+restoreAnalysis_analysisId = Lens.lens (\RestoreAnalysis' {analysisId} -> analysisId) (\s@RestoreAnalysis' {} a -> s {analysisId = a} :: RestoreAnalysis)
+
+instance Core.AWSRequest RestoreAnalysis where
+  type
+    AWSResponse RestoreAnalysis =
+      RestoreAnalysisResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RestoreAnalysisResponse'
+            Prelude.<$> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RestoreAnalysis where
+  hashWithSalt _salt RestoreAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+
+instance Prelude.NFData RestoreAnalysis where
+  rnf RestoreAnalysis' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+
+instance Data.ToHeaders RestoreAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RestoreAnalysis where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RestoreAnalysis where
+  toPath RestoreAnalysis' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/restore/analyses/",
+        Data.toBS analysisId
+      ]
+
+instance Data.ToQuery RestoreAnalysis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRestoreAnalysisResponse' smart constructor.
+data RestoreAnalysisResponse = RestoreAnalysisResponse'
+  { -- | The ID of the analysis that you\'re restoring.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the analysis that you\'re restoring.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'restoreAnalysisResponse_analysisId' - The ID of the analysis that you\'re restoring.
+--
+-- 'arn', 'restoreAnalysisResponse_arn' - The Amazon Resource Name (ARN) of the analysis that you\'re restoring.
+--
+-- 'requestId', 'restoreAnalysisResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'restoreAnalysisResponse_status' - The HTTP status of the request.
+newRestoreAnalysisResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  RestoreAnalysisResponse
+newRestoreAnalysisResponse pStatus_ =
+  RestoreAnalysisResponse'
+    { analysisId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the analysis that you\'re restoring.
+restoreAnalysisResponse_analysisId :: Lens.Lens' RestoreAnalysisResponse (Prelude.Maybe Prelude.Text)
+restoreAnalysisResponse_analysisId = Lens.lens (\RestoreAnalysisResponse' {analysisId} -> analysisId) (\s@RestoreAnalysisResponse' {} a -> s {analysisId = a} :: RestoreAnalysisResponse)
+
+-- | The Amazon Resource Name (ARN) of the analysis that you\'re restoring.
+restoreAnalysisResponse_arn :: Lens.Lens' RestoreAnalysisResponse (Prelude.Maybe Prelude.Text)
+restoreAnalysisResponse_arn = Lens.lens (\RestoreAnalysisResponse' {arn} -> arn) (\s@RestoreAnalysisResponse' {} a -> s {arn = a} :: RestoreAnalysisResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+restoreAnalysisResponse_requestId :: Lens.Lens' RestoreAnalysisResponse (Prelude.Maybe Prelude.Text)
+restoreAnalysisResponse_requestId = Lens.lens (\RestoreAnalysisResponse' {requestId} -> requestId) (\s@RestoreAnalysisResponse' {} a -> s {requestId = a} :: RestoreAnalysisResponse)
+
+-- | The HTTP status of the request.
+restoreAnalysisResponse_status :: Lens.Lens' RestoreAnalysisResponse Prelude.Int
+restoreAnalysisResponse_status = Lens.lens (\RestoreAnalysisResponse' {status} -> status) (\s@RestoreAnalysisResponse' {} a -> s {status = a} :: RestoreAnalysisResponse)
+
+instance Prelude.NFData RestoreAnalysisResponse where
+  rnf RestoreAnalysisResponse' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/SearchAnalyses.hs b/gen/Amazonka/QuickSight/SearchAnalyses.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/SearchAnalyses.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.SearchAnalyses
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for analyses that belong to the user specified in the filter.
+--
+-- This operation is eventually consistent. The results are best effort and
+-- may not reflect very recent updates and changes.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.SearchAnalyses
+  ( -- * Creating a Request
+    SearchAnalyses (..),
+    newSearchAnalyses,
+
+    -- * Request Lenses
+    searchAnalyses_maxResults,
+    searchAnalyses_nextToken,
+    searchAnalyses_awsAccountId,
+    searchAnalyses_filters,
+
+    -- * Destructuring the Response
+    SearchAnalysesResponse (..),
+    newSearchAnalysesResponse,
+
+    -- * Response Lenses
+    searchAnalysesResponse_analysisSummaryList,
+    searchAnalysesResponse_nextToken,
+    searchAnalysesResponse_requestId,
+    searchAnalysesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchAnalyses' smart constructor.
+data SearchAnalyses = SearchAnalyses'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the analyses
+    -- that you\'re searching for.
+    awsAccountId :: Prelude.Text,
+    -- | The structure for the search filters that you want to apply to your
+    -- search.
+    filters :: Prelude.NonEmpty AnalysisSearchFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchAnalyses' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchAnalyses_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'searchAnalyses_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'searchAnalyses_awsAccountId' - The ID of the Amazon Web Services account that contains the analyses
+-- that you\'re searching for.
+--
+-- 'filters', 'searchAnalyses_filters' - The structure for the search filters that you want to apply to your
+-- search.
+newSearchAnalyses ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'filters'
+  Prelude.NonEmpty AnalysisSearchFilter ->
+  SearchAnalyses
+newSearchAnalyses pAwsAccountId_ pFilters_ =
+  SearchAnalyses'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      filters = Lens.coerced Lens.# pFilters_
+    }
+
+-- | The maximum number of results to return.
+searchAnalyses_maxResults :: Lens.Lens' SearchAnalyses (Prelude.Maybe Prelude.Natural)
+searchAnalyses_maxResults = Lens.lens (\SearchAnalyses' {maxResults} -> maxResults) (\s@SearchAnalyses' {} a -> s {maxResults = a} :: SearchAnalyses)
+
+-- | A pagination token that can be used in a subsequent request.
+searchAnalyses_nextToken :: Lens.Lens' SearchAnalyses (Prelude.Maybe Prelude.Text)
+searchAnalyses_nextToken = Lens.lens (\SearchAnalyses' {nextToken} -> nextToken) (\s@SearchAnalyses' {} a -> s {nextToken = a} :: SearchAnalyses)
+
+-- | The ID of the Amazon Web Services account that contains the analyses
+-- that you\'re searching for.
+searchAnalyses_awsAccountId :: Lens.Lens' SearchAnalyses Prelude.Text
+searchAnalyses_awsAccountId = Lens.lens (\SearchAnalyses' {awsAccountId} -> awsAccountId) (\s@SearchAnalyses' {} a -> s {awsAccountId = a} :: SearchAnalyses)
+
+-- | The structure for the search filters that you want to apply to your
+-- search.
+searchAnalyses_filters :: Lens.Lens' SearchAnalyses (Prelude.NonEmpty AnalysisSearchFilter)
+searchAnalyses_filters = Lens.lens (\SearchAnalyses' {filters} -> filters) (\s@SearchAnalyses' {} a -> s {filters = a} :: SearchAnalyses) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchAnalyses where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchAnalysesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchAnalysesResponse_analysisSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchAnalyses_nextToken
+          Lens..~ rs
+          Lens.^? searchAnalysesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchAnalyses where
+  type
+    AWSResponse SearchAnalyses =
+      SearchAnalysesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchAnalysesResponse'
+            Prelude.<$> ( x
+                            Data..?> "AnalysisSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchAnalyses where
+  hashWithSalt _salt SearchAnalyses' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchAnalyses where
+  rnf SearchAnalyses' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchAnalyses where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchAnalyses where
+  toJSON SearchAnalyses' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchAnalyses where
+  toPath SearchAnalyses' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/search/analyses"
+      ]
+
+instance Data.ToQuery SearchAnalyses where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchAnalysesResponse' smart constructor.
+data SearchAnalysesResponse = SearchAnalysesResponse'
+  { -- | Metadata describing the analyses that you searched for.
+    analysisSummaryList :: Prelude.Maybe [AnalysisSummary],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchAnalysesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisSummaryList', 'searchAnalysesResponse_analysisSummaryList' - Metadata describing the analyses that you searched for.
+--
+-- 'nextToken', 'searchAnalysesResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'searchAnalysesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'searchAnalysesResponse_status' - The HTTP status of the request.
+newSearchAnalysesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  SearchAnalysesResponse
+newSearchAnalysesResponse pStatus_ =
+  SearchAnalysesResponse'
+    { analysisSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Metadata describing the analyses that you searched for.
+searchAnalysesResponse_analysisSummaryList :: Lens.Lens' SearchAnalysesResponse (Prelude.Maybe [AnalysisSummary])
+searchAnalysesResponse_analysisSummaryList = Lens.lens (\SearchAnalysesResponse' {analysisSummaryList} -> analysisSummaryList) (\s@SearchAnalysesResponse' {} a -> s {analysisSummaryList = a} :: SearchAnalysesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+searchAnalysesResponse_nextToken :: Lens.Lens' SearchAnalysesResponse (Prelude.Maybe Prelude.Text)
+searchAnalysesResponse_nextToken = Lens.lens (\SearchAnalysesResponse' {nextToken} -> nextToken) (\s@SearchAnalysesResponse' {} a -> s {nextToken = a} :: SearchAnalysesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+searchAnalysesResponse_requestId :: Lens.Lens' SearchAnalysesResponse (Prelude.Maybe Prelude.Text)
+searchAnalysesResponse_requestId = Lens.lens (\SearchAnalysesResponse' {requestId} -> requestId) (\s@SearchAnalysesResponse' {} a -> s {requestId = a} :: SearchAnalysesResponse)
+
+-- | The HTTP status of the request.
+searchAnalysesResponse_status :: Lens.Lens' SearchAnalysesResponse Prelude.Int
+searchAnalysesResponse_status = Lens.lens (\SearchAnalysesResponse' {status} -> status) (\s@SearchAnalysesResponse' {} a -> s {status = a} :: SearchAnalysesResponse)
+
+instance Prelude.NFData SearchAnalysesResponse where
+  rnf SearchAnalysesResponse' {..} =
+    Prelude.rnf analysisSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/SearchDashboards.hs b/gen/Amazonka/QuickSight/SearchDashboards.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/SearchDashboards.hs
@@ -0,0 +1,286 @@
+{-# 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.QuickSight.SearchDashboards
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for dashboards that belong to a user.
+--
+-- This operation is eventually consistent. The results are best effort and
+-- may not reflect very recent updates and changes.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.SearchDashboards
+  ( -- * Creating a Request
+    SearchDashboards (..),
+    newSearchDashboards,
+
+    -- * Request Lenses
+    searchDashboards_maxResults,
+    searchDashboards_nextToken,
+    searchDashboards_awsAccountId,
+    searchDashboards_filters,
+
+    -- * Destructuring the Response
+    SearchDashboardsResponse (..),
+    newSearchDashboardsResponse,
+
+    -- * Response Lenses
+    searchDashboardsResponse_dashboardSummaryList,
+    searchDashboardsResponse_nextToken,
+    searchDashboardsResponse_requestId,
+    searchDashboardsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchDashboards' smart constructor.
+data SearchDashboards = SearchDashboards'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the user whose
+    -- dashboards you\'re searching for.
+    awsAccountId :: Prelude.Text,
+    -- | The filters to apply to the search. Currently, you can search only by
+    -- user name, for example,
+    -- @\"Filters\": [ { \"Name\": \"QUICKSIGHT_USER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\" } ]@
+    filters :: Prelude.NonEmpty DashboardSearchFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDashboards' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchDashboards_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'searchDashboards_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'searchDashboards_awsAccountId' - The ID of the Amazon Web Services account that contains the user whose
+-- dashboards you\'re searching for.
+--
+-- 'filters', 'searchDashboards_filters' - The filters to apply to the search. Currently, you can search only by
+-- user name, for example,
+-- @\"Filters\": [ { \"Name\": \"QUICKSIGHT_USER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\" } ]@
+newSearchDashboards ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'filters'
+  Prelude.NonEmpty DashboardSearchFilter ->
+  SearchDashboards
+newSearchDashboards pAwsAccountId_ pFilters_ =
+  SearchDashboards'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      filters = Lens.coerced Lens.# pFilters_
+    }
+
+-- | The maximum number of results to be returned per request.
+searchDashboards_maxResults :: Lens.Lens' SearchDashboards (Prelude.Maybe Prelude.Natural)
+searchDashboards_maxResults = Lens.lens (\SearchDashboards' {maxResults} -> maxResults) (\s@SearchDashboards' {} a -> s {maxResults = a} :: SearchDashboards)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+searchDashboards_nextToken :: Lens.Lens' SearchDashboards (Prelude.Maybe Prelude.Text)
+searchDashboards_nextToken = Lens.lens (\SearchDashboards' {nextToken} -> nextToken) (\s@SearchDashboards' {} a -> s {nextToken = a} :: SearchDashboards)
+
+-- | The ID of the Amazon Web Services account that contains the user whose
+-- dashboards you\'re searching for.
+searchDashboards_awsAccountId :: Lens.Lens' SearchDashboards Prelude.Text
+searchDashboards_awsAccountId = Lens.lens (\SearchDashboards' {awsAccountId} -> awsAccountId) (\s@SearchDashboards' {} a -> s {awsAccountId = a} :: SearchDashboards)
+
+-- | The filters to apply to the search. Currently, you can search only by
+-- user name, for example,
+-- @\"Filters\": [ { \"Name\": \"QUICKSIGHT_USER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\" } ]@
+searchDashboards_filters :: Lens.Lens' SearchDashboards (Prelude.NonEmpty DashboardSearchFilter)
+searchDashboards_filters = Lens.lens (\SearchDashboards' {filters} -> filters) (\s@SearchDashboards' {} a -> s {filters = a} :: SearchDashboards) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchDashboards where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchDashboardsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchDashboardsResponse_dashboardSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchDashboards_nextToken
+          Lens..~ rs
+          Lens.^? searchDashboardsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchDashboards where
+  type
+    AWSResponse SearchDashboards =
+      SearchDashboardsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchDashboardsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DashboardSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchDashboards where
+  hashWithSalt _salt SearchDashboards' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchDashboards where
+  rnf SearchDashboards' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchDashboards where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchDashboards where
+  toJSON SearchDashboards' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchDashboards where
+  toPath SearchDashboards' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/search/dashboards"
+      ]
+
+instance Data.ToQuery SearchDashboards where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchDashboardsResponse' smart constructor.
+data SearchDashboardsResponse = SearchDashboardsResponse'
+  { -- | The list of dashboards owned by the user specified in @Filters@ in your
+    -- request.
+    dashboardSummaryList :: Prelude.Maybe [DashboardSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDashboardsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardSummaryList', 'searchDashboardsResponse_dashboardSummaryList' - The list of dashboards owned by the user specified in @Filters@ in your
+-- request.
+--
+-- 'nextToken', 'searchDashboardsResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'searchDashboardsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'searchDashboardsResponse_status' - The HTTP status of the request.
+newSearchDashboardsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  SearchDashboardsResponse
+newSearchDashboardsResponse pStatus_ =
+  SearchDashboardsResponse'
+    { dashboardSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The list of dashboards owned by the user specified in @Filters@ in your
+-- request.
+searchDashboardsResponse_dashboardSummaryList :: Lens.Lens' SearchDashboardsResponse (Prelude.Maybe [DashboardSummary])
+searchDashboardsResponse_dashboardSummaryList = Lens.lens (\SearchDashboardsResponse' {dashboardSummaryList} -> dashboardSummaryList) (\s@SearchDashboardsResponse' {} a -> s {dashboardSummaryList = a} :: SearchDashboardsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+searchDashboardsResponse_nextToken :: Lens.Lens' SearchDashboardsResponse (Prelude.Maybe Prelude.Text)
+searchDashboardsResponse_nextToken = Lens.lens (\SearchDashboardsResponse' {nextToken} -> nextToken) (\s@SearchDashboardsResponse' {} a -> s {nextToken = a} :: SearchDashboardsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+searchDashboardsResponse_requestId :: Lens.Lens' SearchDashboardsResponse (Prelude.Maybe Prelude.Text)
+searchDashboardsResponse_requestId = Lens.lens (\SearchDashboardsResponse' {requestId} -> requestId) (\s@SearchDashboardsResponse' {} a -> s {requestId = a} :: SearchDashboardsResponse)
+
+-- | The HTTP status of the request.
+searchDashboardsResponse_status :: Lens.Lens' SearchDashboardsResponse Prelude.Int
+searchDashboardsResponse_status = Lens.lens (\SearchDashboardsResponse' {status} -> status) (\s@SearchDashboardsResponse' {} a -> s {status = a} :: SearchDashboardsResponse)
+
+instance Prelude.NFData SearchDashboardsResponse where
+  rnf SearchDashboardsResponse' {..} =
+    Prelude.rnf dashboardSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/SearchDataSets.hs b/gen/Amazonka/QuickSight/SearchDataSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/SearchDataSets.hs
@@ -0,0 +1,266 @@
+{-# 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.QuickSight.SearchDataSets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @SearchDataSets@ operation to search for datasets that belong to
+-- an account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.SearchDataSets
+  ( -- * Creating a Request
+    SearchDataSets (..),
+    newSearchDataSets,
+
+    -- * Request Lenses
+    searchDataSets_maxResults,
+    searchDataSets_nextToken,
+    searchDataSets_awsAccountId,
+    searchDataSets_filters,
+
+    -- * Destructuring the Response
+    SearchDataSetsResponse (..),
+    newSearchDataSetsResponse,
+
+    -- * Response Lenses
+    searchDataSetsResponse_dataSetSummaries,
+    searchDataSetsResponse_nextToken,
+    searchDataSetsResponse_requestId,
+    searchDataSetsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchDataSets' smart constructor.
+data SearchDataSets = SearchDataSets'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The filters to apply to the search.
+    filters :: Prelude.NonEmpty DataSetSearchFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDataSets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchDataSets_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'searchDataSets_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'searchDataSets_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'filters', 'searchDataSets_filters' - The filters to apply to the search.
+newSearchDataSets ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'filters'
+  Prelude.NonEmpty DataSetSearchFilter ->
+  SearchDataSets
+newSearchDataSets pAwsAccountId_ pFilters_ =
+  SearchDataSets'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      filters = Lens.coerced Lens.# pFilters_
+    }
+
+-- | The maximum number of results to be returned per request.
+searchDataSets_maxResults :: Lens.Lens' SearchDataSets (Prelude.Maybe Prelude.Natural)
+searchDataSets_maxResults = Lens.lens (\SearchDataSets' {maxResults} -> maxResults) (\s@SearchDataSets' {} a -> s {maxResults = a} :: SearchDataSets)
+
+-- | A pagination token that can be used in a subsequent request.
+searchDataSets_nextToken :: Lens.Lens' SearchDataSets (Prelude.Maybe Prelude.Text)
+searchDataSets_nextToken = Lens.lens (\SearchDataSets' {nextToken} -> nextToken) (\s@SearchDataSets' {} a -> s {nextToken = a} :: SearchDataSets)
+
+-- | The Amazon Web Services account ID.
+searchDataSets_awsAccountId :: Lens.Lens' SearchDataSets Prelude.Text
+searchDataSets_awsAccountId = Lens.lens (\SearchDataSets' {awsAccountId} -> awsAccountId) (\s@SearchDataSets' {} a -> s {awsAccountId = a} :: SearchDataSets)
+
+-- | The filters to apply to the search.
+searchDataSets_filters :: Lens.Lens' SearchDataSets (Prelude.NonEmpty DataSetSearchFilter)
+searchDataSets_filters = Lens.lens (\SearchDataSets' {filters} -> filters) (\s@SearchDataSets' {} a -> s {filters = a} :: SearchDataSets) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchDataSets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchDataSetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchDataSetsResponse_dataSetSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchDataSets_nextToken
+          Lens..~ rs
+          Lens.^? searchDataSetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchDataSets where
+  type
+    AWSResponse SearchDataSets =
+      SearchDataSetsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchDataSetsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DataSetSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchDataSets where
+  hashWithSalt _salt SearchDataSets' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchDataSets where
+  rnf SearchDataSets' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchDataSets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchDataSets where
+  toJSON SearchDataSets' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchDataSets where
+  toPath SearchDataSets' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/search/data-sets"
+      ]
+
+instance Data.ToQuery SearchDataSets where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchDataSetsResponse' smart constructor.
+data SearchDataSetsResponse = SearchDataSetsResponse'
+  { -- | A @DataSetSummaries@ object that returns a summary of a dataset.
+    dataSetSummaries :: Prelude.Maybe [DataSetSummary],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDataSetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetSummaries', 'searchDataSetsResponse_dataSetSummaries' - A @DataSetSummaries@ object that returns a summary of a dataset.
+--
+-- 'nextToken', 'searchDataSetsResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'searchDataSetsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'searchDataSetsResponse_status' - The HTTP status of the request.
+newSearchDataSetsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  SearchDataSetsResponse
+newSearchDataSetsResponse pStatus_ =
+  SearchDataSetsResponse'
+    { dataSetSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A @DataSetSummaries@ object that returns a summary of a dataset.
+searchDataSetsResponse_dataSetSummaries :: Lens.Lens' SearchDataSetsResponse (Prelude.Maybe [DataSetSummary])
+searchDataSetsResponse_dataSetSummaries = Lens.lens (\SearchDataSetsResponse' {dataSetSummaries} -> dataSetSummaries) (\s@SearchDataSetsResponse' {} a -> s {dataSetSummaries = a} :: SearchDataSetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+searchDataSetsResponse_nextToken :: Lens.Lens' SearchDataSetsResponse (Prelude.Maybe Prelude.Text)
+searchDataSetsResponse_nextToken = Lens.lens (\SearchDataSetsResponse' {nextToken} -> nextToken) (\s@SearchDataSetsResponse' {} a -> s {nextToken = a} :: SearchDataSetsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+searchDataSetsResponse_requestId :: Lens.Lens' SearchDataSetsResponse (Prelude.Maybe Prelude.Text)
+searchDataSetsResponse_requestId = Lens.lens (\SearchDataSetsResponse' {requestId} -> requestId) (\s@SearchDataSetsResponse' {} a -> s {requestId = a} :: SearchDataSetsResponse)
+
+-- | The HTTP status of the request.
+searchDataSetsResponse_status :: Lens.Lens' SearchDataSetsResponse Prelude.Int
+searchDataSetsResponse_status = Lens.lens (\SearchDataSetsResponse' {status} -> status) (\s@SearchDataSetsResponse' {} a -> s {status = a} :: SearchDataSetsResponse)
+
+instance Prelude.NFData SearchDataSetsResponse where
+  rnf SearchDataSetsResponse' {..} =
+    Prelude.rnf dataSetSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/SearchDataSources.hs b/gen/Amazonka/QuickSight/SearchDataSources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/SearchDataSources.hs
@@ -0,0 +1,266 @@
+{-# 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.QuickSight.SearchDataSources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @SearchDataSources@ operation to search for data sources that
+-- belong to an account.
+--
+-- This operation returns paginated results.
+module Amazonka.QuickSight.SearchDataSources
+  ( -- * Creating a Request
+    SearchDataSources (..),
+    newSearchDataSources,
+
+    -- * Request Lenses
+    searchDataSources_maxResults,
+    searchDataSources_nextToken,
+    searchDataSources_awsAccountId,
+    searchDataSources_filters,
+
+    -- * Destructuring the Response
+    SearchDataSourcesResponse (..),
+    newSearchDataSourcesResponse,
+
+    -- * Response Lenses
+    searchDataSourcesResponse_dataSourceSummaries,
+    searchDataSourcesResponse_nextToken,
+    searchDataSourcesResponse_requestId,
+    searchDataSourcesResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchDataSources' smart constructor.
+data SearchDataSources = SearchDataSources'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The filters to apply to the search.
+    filters :: Prelude.NonEmpty DataSourceSearchFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDataSources' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchDataSources_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'searchDataSources_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'searchDataSources_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'filters', 'searchDataSources_filters' - The filters to apply to the search.
+newSearchDataSources ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'filters'
+  Prelude.NonEmpty DataSourceSearchFilter ->
+  SearchDataSources
+newSearchDataSources pAwsAccountId_ pFilters_ =
+  SearchDataSources'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      filters = Lens.coerced Lens.# pFilters_
+    }
+
+-- | The maximum number of results to be returned per request.
+searchDataSources_maxResults :: Lens.Lens' SearchDataSources (Prelude.Maybe Prelude.Natural)
+searchDataSources_maxResults = Lens.lens (\SearchDataSources' {maxResults} -> maxResults) (\s@SearchDataSources' {} a -> s {maxResults = a} :: SearchDataSources)
+
+-- | A pagination token that can be used in a subsequent request.
+searchDataSources_nextToken :: Lens.Lens' SearchDataSources (Prelude.Maybe Prelude.Text)
+searchDataSources_nextToken = Lens.lens (\SearchDataSources' {nextToken} -> nextToken) (\s@SearchDataSources' {} a -> s {nextToken = a} :: SearchDataSources)
+
+-- | The Amazon Web Services account ID.
+searchDataSources_awsAccountId :: Lens.Lens' SearchDataSources Prelude.Text
+searchDataSources_awsAccountId = Lens.lens (\SearchDataSources' {awsAccountId} -> awsAccountId) (\s@SearchDataSources' {} a -> s {awsAccountId = a} :: SearchDataSources)
+
+-- | The filters to apply to the search.
+searchDataSources_filters :: Lens.Lens' SearchDataSources (Prelude.NonEmpty DataSourceSearchFilter)
+searchDataSources_filters = Lens.lens (\SearchDataSources' {filters} -> filters) (\s@SearchDataSources' {} a -> s {filters = a} :: SearchDataSources) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchDataSources where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchDataSourcesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchDataSourcesResponse_dataSourceSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchDataSources_nextToken
+          Lens..~ rs
+          Lens.^? searchDataSourcesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchDataSources where
+  type
+    AWSResponse SearchDataSources =
+      SearchDataSourcesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchDataSourcesResponse'
+            Prelude.<$> ( x
+                            Data..?> "DataSourceSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchDataSources where
+  hashWithSalt _salt SearchDataSources' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchDataSources where
+  rnf SearchDataSources' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchDataSources where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchDataSources where
+  toJSON SearchDataSources' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchDataSources where
+  toPath SearchDataSources' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/search/data-sources"
+      ]
+
+instance Data.ToQuery SearchDataSources where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchDataSourcesResponse' smart constructor.
+data SearchDataSourcesResponse = SearchDataSourcesResponse'
+  { -- | A @DataSourceSummaries@ object that returns a summary of a data source.
+    dataSourceSummaries :: Prelude.Maybe [DataSourceSummary],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDataSourcesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSourceSummaries', 'searchDataSourcesResponse_dataSourceSummaries' - A @DataSourceSummaries@ object that returns a summary of a data source.
+--
+-- 'nextToken', 'searchDataSourcesResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'searchDataSourcesResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'searchDataSourcesResponse_status' - The HTTP status of the request.
+newSearchDataSourcesResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  SearchDataSourcesResponse
+newSearchDataSourcesResponse pStatus_ =
+  SearchDataSourcesResponse'
+    { dataSourceSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A @DataSourceSummaries@ object that returns a summary of a data source.
+searchDataSourcesResponse_dataSourceSummaries :: Lens.Lens' SearchDataSourcesResponse (Prelude.Maybe [DataSourceSummary])
+searchDataSourcesResponse_dataSourceSummaries = Lens.lens (\SearchDataSourcesResponse' {dataSourceSummaries} -> dataSourceSummaries) (\s@SearchDataSourcesResponse' {} a -> s {dataSourceSummaries = a} :: SearchDataSourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+searchDataSourcesResponse_nextToken :: Lens.Lens' SearchDataSourcesResponse (Prelude.Maybe Prelude.Text)
+searchDataSourcesResponse_nextToken = Lens.lens (\SearchDataSourcesResponse' {nextToken} -> nextToken) (\s@SearchDataSourcesResponse' {} a -> s {nextToken = a} :: SearchDataSourcesResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+searchDataSourcesResponse_requestId :: Lens.Lens' SearchDataSourcesResponse (Prelude.Maybe Prelude.Text)
+searchDataSourcesResponse_requestId = Lens.lens (\SearchDataSourcesResponse' {requestId} -> requestId) (\s@SearchDataSourcesResponse' {} a -> s {requestId = a} :: SearchDataSourcesResponse)
+
+-- | The HTTP status of the request.
+searchDataSourcesResponse_status :: Lens.Lens' SearchDataSourcesResponse Prelude.Int
+searchDataSourcesResponse_status = Lens.lens (\SearchDataSourcesResponse' {status} -> status) (\s@SearchDataSourcesResponse' {} a -> s {status = a} :: SearchDataSourcesResponse)
+
+instance Prelude.NFData SearchDataSourcesResponse where
+  rnf SearchDataSourcesResponse' {..} =
+    Prelude.rnf dataSourceSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/SearchFolders.hs b/gen/Amazonka/QuickSight/SearchFolders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/SearchFolders.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.SearchFolders
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches the subfolders in a folder.
+module Amazonka.QuickSight.SearchFolders
+  ( -- * Creating a Request
+    SearchFolders (..),
+    newSearchFolders,
+
+    -- * Request Lenses
+    searchFolders_maxResults,
+    searchFolders_nextToken,
+    searchFolders_awsAccountId,
+    searchFolders_filters,
+
+    -- * Destructuring the Response
+    SearchFoldersResponse (..),
+    newSearchFoldersResponse,
+
+    -- * Response Lenses
+    searchFoldersResponse_folderSummaryList,
+    searchFoldersResponse_nextToken,
+    searchFoldersResponse_requestId,
+    searchFoldersResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchFolders' smart constructor.
+data SearchFolders = SearchFolders'
+  { -- | The maximum number of results to be returned per request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that contains the folder.
+    awsAccountId :: Prelude.Text,
+    -- | The filters to apply to the search. Currently, you can search only by
+    -- the parent folder ARN. For example,
+    -- @\"Filters\": [ { \"Name\": \"PARENT_FOLDER_ARN\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:folder\/folderId\" } ]@.
+    filters :: [FolderSearchFilter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchFolders' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchFolders_maxResults' - The maximum number of results to be returned per request.
+--
+-- 'nextToken', 'searchFolders_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'awsAccountId', 'searchFolders_awsAccountId' - The ID for the Amazon Web Services account that contains the folder.
+--
+-- 'filters', 'searchFolders_filters' - The filters to apply to the search. Currently, you can search only by
+-- the parent folder ARN. For example,
+-- @\"Filters\": [ { \"Name\": \"PARENT_FOLDER_ARN\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:folder\/folderId\" } ]@.
+newSearchFolders ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  SearchFolders
+newSearchFolders pAwsAccountId_ =
+  SearchFolders'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      filters = Prelude.mempty
+    }
+
+-- | The maximum number of results to be returned per request.
+searchFolders_maxResults :: Lens.Lens' SearchFolders (Prelude.Maybe Prelude.Natural)
+searchFolders_maxResults = Lens.lens (\SearchFolders' {maxResults} -> maxResults) (\s@SearchFolders' {} a -> s {maxResults = a} :: SearchFolders)
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+searchFolders_nextToken :: Lens.Lens' SearchFolders (Prelude.Maybe Prelude.Text)
+searchFolders_nextToken = Lens.lens (\SearchFolders' {nextToken} -> nextToken) (\s@SearchFolders' {} a -> s {nextToken = a} :: SearchFolders)
+
+-- | The ID for the Amazon Web Services account that contains the folder.
+searchFolders_awsAccountId :: Lens.Lens' SearchFolders Prelude.Text
+searchFolders_awsAccountId = Lens.lens (\SearchFolders' {awsAccountId} -> awsAccountId) (\s@SearchFolders' {} a -> s {awsAccountId = a} :: SearchFolders)
+
+-- | The filters to apply to the search. Currently, you can search only by
+-- the parent folder ARN. For example,
+-- @\"Filters\": [ { \"Name\": \"PARENT_FOLDER_ARN\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:folder\/folderId\" } ]@.
+searchFolders_filters :: Lens.Lens' SearchFolders [FolderSearchFilter]
+searchFolders_filters = Lens.lens (\SearchFolders' {filters} -> filters) (\s@SearchFolders' {} a -> s {filters = a} :: SearchFolders) Prelude.. Lens.coerced
+
+instance Core.AWSRequest SearchFolders where
+  type
+    AWSResponse SearchFolders =
+      SearchFoldersResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchFoldersResponse'
+            Prelude.<$> ( x
+                            Data..?> "FolderSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchFolders where
+  hashWithSalt _salt SearchFolders' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchFolders where
+  rnf SearchFolders' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchFolders where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchFolders where
+  toJSON SearchFolders' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchFolders where
+  toPath SearchFolders' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/search/folders"
+      ]
+
+instance Data.ToQuery SearchFolders where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchFoldersResponse' smart constructor.
+data SearchFoldersResponse = SearchFoldersResponse'
+  { -- | A structure that contains all of the folders in the Amazon Web Services
+    -- account. This structure provides basic information about the folders.
+    folderSummaryList :: Prelude.Maybe [FolderSummary],
+    -- | The token for the next set of results, or null if there are no more
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchFoldersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'folderSummaryList', 'searchFoldersResponse_folderSummaryList' - A structure that contains all of the folders in the Amazon Web Services
+-- account. This structure provides basic information about the folders.
+--
+-- 'nextToken', 'searchFoldersResponse_nextToken' - The token for the next set of results, or null if there are no more
+-- results.
+--
+-- 'requestId', 'searchFoldersResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'searchFoldersResponse_status' - The HTTP status of the request.
+newSearchFoldersResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  SearchFoldersResponse
+newSearchFoldersResponse pStatus_ =
+  SearchFoldersResponse'
+    { folderSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A structure that contains all of the folders in the Amazon Web Services
+-- account. This structure provides basic information about the folders.
+searchFoldersResponse_folderSummaryList :: Lens.Lens' SearchFoldersResponse (Prelude.Maybe [FolderSummary])
+searchFoldersResponse_folderSummaryList = Lens.lens (\SearchFoldersResponse' {folderSummaryList} -> folderSummaryList) (\s@SearchFoldersResponse' {} a -> s {folderSummaryList = a} :: SearchFoldersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results, or null if there are no more
+-- results.
+searchFoldersResponse_nextToken :: Lens.Lens' SearchFoldersResponse (Prelude.Maybe Prelude.Text)
+searchFoldersResponse_nextToken = Lens.lens (\SearchFoldersResponse' {nextToken} -> nextToken) (\s@SearchFoldersResponse' {} a -> s {nextToken = a} :: SearchFoldersResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+searchFoldersResponse_requestId :: Lens.Lens' SearchFoldersResponse (Prelude.Maybe Prelude.Text)
+searchFoldersResponse_requestId = Lens.lens (\SearchFoldersResponse' {requestId} -> requestId) (\s@SearchFoldersResponse' {} a -> s {requestId = a} :: SearchFoldersResponse)
+
+-- | The HTTP status of the request.
+searchFoldersResponse_status :: Lens.Lens' SearchFoldersResponse Prelude.Int
+searchFoldersResponse_status = Lens.lens (\SearchFoldersResponse' {status} -> status) (\s@SearchFoldersResponse' {} a -> s {status = a} :: SearchFoldersResponse)
+
+instance Prelude.NFData SearchFoldersResponse where
+  rnf SearchFoldersResponse' {..} =
+    Prelude.rnf folderSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/SearchGroups.hs b/gen/Amazonka/QuickSight/SearchGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/SearchGroups.hs
@@ -0,0 +1,265 @@
+{-# 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.QuickSight.SearchGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @SearchGroups@ operation to search groups in a specified Amazon
+-- QuickSight namespace using the supplied filters.
+module Amazonka.QuickSight.SearchGroups
+  ( -- * Creating a Request
+    SearchGroups (..),
+    newSearchGroups,
+
+    -- * Request Lenses
+    searchGroups_maxResults,
+    searchGroups_nextToken,
+    searchGroups_awsAccountId,
+    searchGroups_namespace,
+    searchGroups_filters,
+
+    -- * Destructuring the Response
+    SearchGroupsResponse (..),
+    newSearchGroupsResponse,
+
+    -- * Response Lenses
+    searchGroupsResponse_groupList,
+    searchGroupsResponse_nextToken,
+    searchGroupsResponse_requestId,
+    searchGroupsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchGroups' smart constructor.
+data SearchGroups = SearchGroups'
+  { -- | The maximum number of results to return from this request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace that you want to search.
+    namespace :: Prelude.Text,
+    -- | The structure for the search filters that you want to apply to your
+    -- search.
+    filters :: Prelude.NonEmpty GroupSearchFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchGroups' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchGroups_maxResults' - The maximum number of results to return from this request.
+--
+-- 'nextToken', 'searchGroups_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'awsAccountId', 'searchGroups_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'searchGroups_namespace' - The namespace that you want to search.
+--
+-- 'filters', 'searchGroups_filters' - The structure for the search filters that you want to apply to your
+-- search.
+newSearchGroups ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  -- | 'filters'
+  Prelude.NonEmpty GroupSearchFilter ->
+  SearchGroups
+newSearchGroups pAwsAccountId_ pNamespace_ pFilters_ =
+  SearchGroups'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_,
+      filters = Lens.coerced Lens.# pFilters_
+    }
+
+-- | The maximum number of results to return from this request.
+searchGroups_maxResults :: Lens.Lens' SearchGroups (Prelude.Maybe Prelude.Natural)
+searchGroups_maxResults = Lens.lens (\SearchGroups' {maxResults} -> maxResults) (\s@SearchGroups' {} a -> s {maxResults = a} :: SearchGroups)
+
+-- | A pagination token that can be used in a subsequent request.
+searchGroups_nextToken :: Lens.Lens' SearchGroups (Prelude.Maybe Prelude.Text)
+searchGroups_nextToken = Lens.lens (\SearchGroups' {nextToken} -> nextToken) (\s@SearchGroups' {} a -> s {nextToken = a} :: SearchGroups)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+searchGroups_awsAccountId :: Lens.Lens' SearchGroups Prelude.Text
+searchGroups_awsAccountId = Lens.lens (\SearchGroups' {awsAccountId} -> awsAccountId) (\s@SearchGroups' {} a -> s {awsAccountId = a} :: SearchGroups)
+
+-- | The namespace that you want to search.
+searchGroups_namespace :: Lens.Lens' SearchGroups Prelude.Text
+searchGroups_namespace = Lens.lens (\SearchGroups' {namespace} -> namespace) (\s@SearchGroups' {} a -> s {namespace = a} :: SearchGroups)
+
+-- | The structure for the search filters that you want to apply to your
+-- search.
+searchGroups_filters :: Lens.Lens' SearchGroups (Prelude.NonEmpty GroupSearchFilter)
+searchGroups_filters = Lens.lens (\SearchGroups' {filters} -> filters) (\s@SearchGroups' {} a -> s {filters = a} :: SearchGroups) Prelude.. Lens.coerced
+
+instance Core.AWSRequest SearchGroups where
+  type AWSResponse SearchGroups = SearchGroupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchGroupsResponse'
+            Prelude.<$> (x Data..?> "GroupList" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchGroups where
+  hashWithSalt _salt SearchGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchGroups where
+  rnf SearchGroups' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchGroups where
+  toJSON SearchGroups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Filters" Data..= filters)]
+      )
+
+instance Data.ToPath SearchGroups where
+  toPath SearchGroups' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups-search"
+      ]
+
+instance Data.ToQuery SearchGroups where
+  toQuery SearchGroups' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newSearchGroupsResponse' smart constructor.
+data SearchGroupsResponse = SearchGroupsResponse'
+  { -- | A list of groups in a specified namespace that match the filters you set
+    -- in your @SearchGroups@ request.
+    groupList :: Prelude.Maybe [Group],
+    -- | A pagination token that can be used in a subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchGroupsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupList', 'searchGroupsResponse_groupList' - A list of groups in a specified namespace that match the filters you set
+-- in your @SearchGroups@ request.
+--
+-- 'nextToken', 'searchGroupsResponse_nextToken' - A pagination token that can be used in a subsequent request.
+--
+-- 'requestId', 'searchGroupsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'searchGroupsResponse_status' - The HTTP status of the request.
+newSearchGroupsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  SearchGroupsResponse
+newSearchGroupsResponse pStatus_ =
+  SearchGroupsResponse'
+    { groupList = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A list of groups in a specified namespace that match the filters you set
+-- in your @SearchGroups@ request.
+searchGroupsResponse_groupList :: Lens.Lens' SearchGroupsResponse (Prelude.Maybe [Group])
+searchGroupsResponse_groupList = Lens.lens (\SearchGroupsResponse' {groupList} -> groupList) (\s@SearchGroupsResponse' {} a -> s {groupList = a} :: SearchGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token that can be used in a subsequent request.
+searchGroupsResponse_nextToken :: Lens.Lens' SearchGroupsResponse (Prelude.Maybe Prelude.Text)
+searchGroupsResponse_nextToken = Lens.lens (\SearchGroupsResponse' {nextToken} -> nextToken) (\s@SearchGroupsResponse' {} a -> s {nextToken = a} :: SearchGroupsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+searchGroupsResponse_requestId :: Lens.Lens' SearchGroupsResponse (Prelude.Maybe Prelude.Text)
+searchGroupsResponse_requestId = Lens.lens (\SearchGroupsResponse' {requestId} -> requestId) (\s@SearchGroupsResponse' {} a -> s {requestId = a} :: SearchGroupsResponse)
+
+-- | The HTTP status of the request.
+searchGroupsResponse_status :: Lens.Lens' SearchGroupsResponse Prelude.Int
+searchGroupsResponse_status = Lens.lens (\SearchGroupsResponse' {status} -> status) (\s@SearchGroupsResponse' {} a -> s {status = a} :: SearchGroupsResponse)
+
+instance Prelude.NFData SearchGroupsResponse where
+  rnf SearchGroupsResponse' {..} =
+    Prelude.rnf groupList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/TagResource.hs b/gen/Amazonka/QuickSight/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/TagResource.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.QuickSight.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)
+--
+-- Assigns one or more tags (key-value pairs) to the specified Amazon
+-- QuickSight resource.
+--
+-- Tags can help you organize and categorize your resources. You can also
+-- use them to scope user permissions, by granting a user permission to
+-- access or change only resources with certain tag values. You can use the
+-- @TagResource@ operation with a resource that already has tags. If you
+-- specify a new tag key for the resource, this tag is appended to the list
+-- of tags associated with the resource. If you specify a tag key that is
+-- already associated with the resource, the new tag value that you specify
+-- replaces the previous value for that tag.
+--
+-- You can associate as many as 50 tags with a resource. Amazon QuickSight
+-- supports tagging on data set, data source, dashboard, and template.
+--
+-- Tagging for Amazon QuickSight works in a similar way to tagging for
+-- other Amazon Web Services services, except for the following:
+--
+-- -   You can\'t use tags to track costs for Amazon QuickSight. This
+--     isn\'t possible because you can\'t tag the resources that Amazon
+--     QuickSight costs are based on, for example Amazon QuickSight storage
+--     capacity (SPICE), number of users, type of users, and usage metrics.
+--
+-- -   Amazon QuickSight doesn\'t currently support the tag editor for
+--     Resource Groups.
+module Amazonka.QuickSight.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_requestId,
+    tagResourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to tag.
+    resourceArn :: Prelude.Text,
+    -- | Contains a map of the key-value pairs for the resource tag or tags
+    -- assigned to the resource.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to tag.
+--
+-- 'tags', 'tagResource_tags' - Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagResource
+newTagResource pResourceArn_ pTags_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to tag.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | Contains a map of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.NonEmpty Tag)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          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
+      ["/resources/", Data.toBS resourceArn, "/tags"]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: 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:
+--
+-- 'requestId', 'tagResourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'tagResourceResponse_status' - The HTTP status of the request.
+newTagResourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pStatus_ =
+  TagResourceResponse'
+    { requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+tagResourceResponse_requestId :: Lens.Lens' TagResourceResponse (Prelude.Maybe Prelude.Text)
+tagResourceResponse_requestId = Lens.lens (\TagResourceResponse' {requestId} -> requestId) (\s@TagResourceResponse' {} a -> s {requestId = a} :: TagResourceResponse)
+
+-- | The HTTP status of the request.
+tagResourceResponse_status :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_status = Lens.lens (\TagResourceResponse' {status} -> status) (\s@TagResourceResponse' {} a -> s {status = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/Types.hs b/gen/Amazonka/QuickSight/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types.hs
@@ -0,0 +1,5774 @@
+{-# 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.QuickSight.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.QuickSight.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConcurrentUpdatingException,
+    _ConflictException,
+    _DomainNotWhitelistedException,
+    _IdentityTypeNotSupportedException,
+    _InternalFailureException,
+    _InvalidNextTokenException,
+    _InvalidParameterValueException,
+    _InvalidRequestException,
+    _LimitExceededException,
+    _PreconditionNotMetException,
+    _QuickSightUserNotFoundException,
+    _ResourceExistsException,
+    _ResourceNotFoundException,
+    _ResourceUnavailableException,
+    _SessionLifetimeInMinutesInvalidException,
+    _ThrottlingException,
+    _UnsupportedPricingPlanException,
+    _UnsupportedUserEditionException,
+
+    -- * AnalysisErrorType
+    AnalysisErrorType (..),
+
+    -- * AnalysisFilterAttribute
+    AnalysisFilterAttribute (..),
+
+    -- * AnchorOption
+    AnchorOption (..),
+
+    -- * ArcThickness
+    ArcThickness (..),
+
+    -- * ArcThicknessOptions
+    ArcThicknessOptions (..),
+
+    -- * AssignmentStatus
+    AssignmentStatus (..),
+
+    -- * AuthenticationMethodOption
+    AuthenticationMethodOption (..),
+
+    -- * AxisBinding
+    AxisBinding (..),
+
+    -- * BarChartOrientation
+    BarChartOrientation (..),
+
+    -- * BarsArrangement
+    BarsArrangement (..),
+
+    -- * BaseMapStyleType
+    BaseMapStyleType (..),
+
+    -- * BoxPlotFillStyle
+    BoxPlotFillStyle (..),
+
+    -- * CategoricalAggregationFunction
+    CategoricalAggregationFunction (..),
+
+    -- * CategoryFilterMatchOperator
+    CategoryFilterMatchOperator (..),
+
+    -- * CategoryFilterSelectAllOptions
+    CategoryFilterSelectAllOptions (..),
+
+    -- * ColorFillType
+    ColorFillType (..),
+
+    -- * ColumnDataType
+    ColumnDataType (..),
+
+    -- * ColumnRole
+    ColumnRole (..),
+
+    -- * ColumnTagName
+    ColumnTagName (..),
+
+    -- * ComparisonMethod
+    ComparisonMethod (..),
+
+    -- * ConditionalFormattingIconDisplayOption
+    ConditionalFormattingIconDisplayOption (..),
+
+    -- * ConditionalFormattingIconSetType
+    ConditionalFormattingIconSetType (..),
+
+    -- * CrossDatasetTypes
+    CrossDatasetTypes (..),
+
+    -- * CustomContentImageScalingConfiguration
+    CustomContentImageScalingConfiguration (..),
+
+    -- * CustomContentType
+    CustomContentType (..),
+
+    -- * DashboardBehavior
+    DashboardBehavior (..),
+
+    -- * DashboardErrorType
+    DashboardErrorType (..),
+
+    -- * DashboardFilterAttribute
+    DashboardFilterAttribute (..),
+
+    -- * DashboardUIState
+    DashboardUIState (..),
+
+    -- * DataLabelContent
+    DataLabelContent (..),
+
+    -- * DataLabelOverlap
+    DataLabelOverlap (..),
+
+    -- * DataLabelPosition
+    DataLabelPosition (..),
+
+    -- * DataSetFilterAttribute
+    DataSetFilterAttribute (..),
+
+    -- * DataSetImportMode
+    DataSetImportMode (..),
+
+    -- * DataSourceErrorInfoType
+    DataSourceErrorInfoType (..),
+
+    -- * DataSourceFilterAttribute
+    DataSourceFilterAttribute (..),
+
+    -- * DataSourceType
+    DataSourceType (..),
+
+    -- * DateAggregationFunction
+    DateAggregationFunction (..),
+
+    -- * Edition
+    Edition (..),
+
+    -- * EmbeddingIdentityType
+    EmbeddingIdentityType (..),
+
+    -- * FileFormat
+    FileFormat (..),
+
+    -- * FilterNullOption
+    FilterNullOption (..),
+
+    -- * FilterOperator
+    FilterOperator (..),
+
+    -- * FilterVisualScope
+    FilterVisualScope (..),
+
+    -- * FolderFilterAttribute
+    FolderFilterAttribute (..),
+
+    -- * FolderType
+    FolderType (..),
+
+    -- * FontDecoration
+    FontDecoration (..),
+
+    -- * FontStyle
+    FontStyle (..),
+
+    -- * FontWeightName
+    FontWeightName (..),
+
+    -- * ForecastComputationSeasonality
+    ForecastComputationSeasonality (..),
+
+    -- * FunnelChartMeasureDataLabelStyle
+    FunnelChartMeasureDataLabelStyle (..),
+
+    -- * GeoSpatialCountryCode
+    GeoSpatialCountryCode (..),
+
+    -- * GeoSpatialDataRole
+    GeoSpatialDataRole (..),
+
+    -- * GeospatialSelectedPointStyle
+    GeospatialSelectedPointStyle (..),
+
+    -- * GroupFilterAttribute
+    GroupFilterAttribute (..),
+
+    -- * GroupFilterOperator
+    GroupFilterOperator (..),
+
+    -- * HistogramBinType
+    HistogramBinType (..),
+
+    -- * HorizontalTextAlignment
+    HorizontalTextAlignment (..),
+
+    -- * Icon
+    Icon (..),
+
+    -- * IdentityStore
+    IdentityStore (..),
+
+    -- * IdentityType
+    IdentityType (..),
+
+    -- * IngestionErrorType
+    IngestionErrorType (..),
+
+    -- * IngestionRequestSource
+    IngestionRequestSource (..),
+
+    -- * IngestionRequestType
+    IngestionRequestType (..),
+
+    -- * IngestionStatus
+    IngestionStatus (..),
+
+    -- * IngestionType
+    IngestionType (..),
+
+    -- * InputColumnDataType
+    InputColumnDataType (..),
+
+    -- * JoinType
+    JoinType (..),
+
+    -- * LayoutElementType
+    LayoutElementType (..),
+
+    -- * LegendPosition
+    LegendPosition (..),
+
+    -- * LineChartLineStyle
+    LineChartLineStyle (..),
+
+    -- * LineChartMarkerShape
+    LineChartMarkerShape (..),
+
+    -- * LineChartType
+    LineChartType (..),
+
+    -- * LineInterpolation
+    LineInterpolation (..),
+
+    -- * MapZoomMode
+    MapZoomMode (..),
+
+    -- * MaximumMinimumComputationType
+    MaximumMinimumComputationType (..),
+
+    -- * MemberType
+    MemberType (..),
+
+    -- * MissingDataTreatmentOption
+    MissingDataTreatmentOption (..),
+
+    -- * NamespaceErrorType
+    NamespaceErrorType (..),
+
+    -- * NamespaceStatus
+    NamespaceStatus (..),
+
+    -- * NegativeValueDisplayMode
+    NegativeValueDisplayMode (..),
+
+    -- * NumberScale
+    NumberScale (..),
+
+    -- * NumericEqualityMatchOperator
+    NumericEqualityMatchOperator (..),
+
+    -- * NumericFilterSelectAllOptions
+    NumericFilterSelectAllOptions (..),
+
+    -- * NumericSeparatorSymbol
+    NumericSeparatorSymbol (..),
+
+    -- * OtherCategories
+    OtherCategories (..),
+
+    -- * PanelBorderStyle
+    PanelBorderStyle (..),
+
+    -- * PaperOrientation
+    PaperOrientation (..),
+
+    -- * PaperSize
+    PaperSize (..),
+
+    -- * ParameterValueType
+    ParameterValueType (..),
+
+    -- * PivotTableConditionalFormattingScopeRole
+    PivotTableConditionalFormattingScopeRole (..),
+
+    -- * PivotTableMetricPlacement
+    PivotTableMetricPlacement (..),
+
+    -- * PivotTableSubtotalLevel
+    PivotTableSubtotalLevel (..),
+
+    -- * PrimaryValueDisplayType
+    PrimaryValueDisplayType (..),
+
+    -- * ReferenceLineLabelHorizontalPosition
+    ReferenceLineLabelHorizontalPosition (..),
+
+    -- * ReferenceLineLabelVerticalPosition
+    ReferenceLineLabelVerticalPosition (..),
+
+    -- * ReferenceLinePatternType
+    ReferenceLinePatternType (..),
+
+    -- * ReferenceLineValueLabelRelativePosition
+    ReferenceLineValueLabelRelativePosition (..),
+
+    -- * RelativeDateType
+    RelativeDateType (..),
+
+    -- * RelativeFontSize
+    RelativeFontSize (..),
+
+    -- * ResizeOption
+    ResizeOption (..),
+
+    -- * ResourceStatus
+    ResourceStatus (..),
+
+    -- * RowLevelPermissionFormatVersion
+    RowLevelPermissionFormatVersion (..),
+
+    -- * RowLevelPermissionPolicy
+    RowLevelPermissionPolicy (..),
+
+    -- * SectionPageBreakStatus
+    SectionPageBreakStatus (..),
+
+    -- * SelectAllValueOptions
+    SelectAllValueOptions (..),
+
+    -- * SelectedFieldOptions
+    SelectedFieldOptions (..),
+
+    -- * SelectedTooltipType
+    SelectedTooltipType (..),
+
+    -- * SheetContentType
+    SheetContentType (..),
+
+    -- * SheetControlDateTimePickerType
+    SheetControlDateTimePickerType (..),
+
+    -- * SheetControlListType
+    SheetControlListType (..),
+
+    -- * SheetControlSliderType
+    SheetControlSliderType (..),
+
+    -- * SimpleNumericalAggregationFunction
+    SimpleNumericalAggregationFunction (..),
+
+    -- * SortDirection
+    SortDirection (..),
+
+    -- * Status
+    Status (..),
+
+    -- * TableBorderStyle
+    TableBorderStyle (..),
+
+    -- * TableCellImageScalingConfiguration
+    TableCellImageScalingConfiguration (..),
+
+    -- * TableFieldIconSetType
+    TableFieldIconSetType (..),
+
+    -- * TableOrientation
+    TableOrientation (..),
+
+    -- * TableTotalsPlacement
+    TableTotalsPlacement (..),
+
+    -- * TableTotalsScrollStatus
+    TableTotalsScrollStatus (..),
+
+    -- * TargetVisualOptions
+    TargetVisualOptions (..),
+
+    -- * TemplateErrorType
+    TemplateErrorType (..),
+
+    -- * TextQualifier
+    TextQualifier (..),
+
+    -- * TextWrap
+    TextWrap (..),
+
+    -- * ThemeErrorType
+    ThemeErrorType (..),
+
+    -- * ThemeType
+    ThemeType (..),
+
+    -- * TimeGranularity
+    TimeGranularity (..),
+
+    -- * TooltipTitleType
+    TooltipTitleType (..),
+
+    -- * TopBottomComputationType
+    TopBottomComputationType (..),
+
+    -- * TopBottomSortOrder
+    TopBottomSortOrder (..),
+
+    -- * URLTargetConfiguration
+    URLTargetConfiguration (..),
+
+    -- * UserRole
+    UserRole (..),
+
+    -- * ValueWhenUnsetOption
+    ValueWhenUnsetOption (..),
+
+    -- * VerticalTextAlignment
+    VerticalTextAlignment (..),
+
+    -- * Visibility
+    Visibility (..),
+
+    -- * VisualCustomActionTrigger
+    VisualCustomActionTrigger (..),
+
+    -- * WidgetStatus
+    WidgetStatus (..),
+
+    -- * WordCloudCloudLayout
+    WordCloudCloudLayout (..),
+
+    -- * WordCloudWordCasing
+    WordCloudWordCasing (..),
+
+    -- * WordCloudWordOrientation
+    WordCloudWordOrientation (..),
+
+    -- * WordCloudWordPadding
+    WordCloudWordPadding (..),
+
+    -- * WordCloudWordScaling
+    WordCloudWordScaling (..),
+
+    -- * AccountCustomization
+    AccountCustomization (..),
+    newAccountCustomization,
+    accountCustomization_defaultEmailCustomizationTemplate,
+    accountCustomization_defaultTheme,
+
+    -- * AccountInfo
+    AccountInfo (..),
+    newAccountInfo,
+    accountInfo_accountName,
+    accountInfo_accountSubscriptionStatus,
+    accountInfo_authenticationType,
+    accountInfo_edition,
+    accountInfo_notificationEmail,
+
+    -- * AccountSettings
+    AccountSettings (..),
+    newAccountSettings,
+    accountSettings_accountName,
+    accountSettings_defaultNamespace,
+    accountSettings_edition,
+    accountSettings_notificationEmail,
+    accountSettings_publicSharingEnabled,
+    accountSettings_terminationProtectionEnabled,
+
+    -- * ActiveIAMPolicyAssignment
+    ActiveIAMPolicyAssignment (..),
+    newActiveIAMPolicyAssignment,
+    activeIAMPolicyAssignment_assignmentName,
+    activeIAMPolicyAssignment_policyArn,
+
+    -- * AdHocFilteringOption
+    AdHocFilteringOption (..),
+    newAdHocFilteringOption,
+    adHocFilteringOption_availabilityStatus,
+
+    -- * AggregationFunction
+    AggregationFunction (..),
+    newAggregationFunction,
+    aggregationFunction_categoricalAggregationFunction,
+    aggregationFunction_dateAggregationFunction,
+    aggregationFunction_numericalAggregationFunction,
+
+    -- * AggregationSortConfiguration
+    AggregationSortConfiguration (..),
+    newAggregationSortConfiguration,
+    aggregationSortConfiguration_column,
+    aggregationSortConfiguration_sortDirection,
+    aggregationSortConfiguration_aggregationFunction,
+
+    -- * AmazonElasticsearchParameters
+    AmazonElasticsearchParameters (..),
+    newAmazonElasticsearchParameters,
+    amazonElasticsearchParameters_domain,
+
+    -- * AmazonOpenSearchParameters
+    AmazonOpenSearchParameters (..),
+    newAmazonOpenSearchParameters,
+    amazonOpenSearchParameters_domain,
+
+    -- * Analysis
+    Analysis (..),
+    newAnalysis,
+    analysis_analysisId,
+    analysis_arn,
+    analysis_createdTime,
+    analysis_dataSetArns,
+    analysis_errors,
+    analysis_lastUpdatedTime,
+    analysis_name,
+    analysis_sheets,
+    analysis_status,
+    analysis_themeArn,
+
+    -- * AnalysisDefaults
+    AnalysisDefaults (..),
+    newAnalysisDefaults,
+    analysisDefaults_defaultNewSheetConfiguration,
+
+    -- * AnalysisDefinition
+    AnalysisDefinition (..),
+    newAnalysisDefinition,
+    analysisDefinition_analysisDefaults,
+    analysisDefinition_calculatedFields,
+    analysisDefinition_columnConfigurations,
+    analysisDefinition_filterGroups,
+    analysisDefinition_parameterDeclarations,
+    analysisDefinition_sheets,
+    analysisDefinition_dataSetIdentifierDeclarations,
+
+    -- * AnalysisError
+    AnalysisError (..),
+    newAnalysisError,
+    analysisError_message,
+    analysisError_type,
+    analysisError_violatedEntities,
+
+    -- * AnalysisSearchFilter
+    AnalysisSearchFilter (..),
+    newAnalysisSearchFilter,
+    analysisSearchFilter_name,
+    analysisSearchFilter_operator,
+    analysisSearchFilter_value,
+
+    -- * AnalysisSourceEntity
+    AnalysisSourceEntity (..),
+    newAnalysisSourceEntity,
+    analysisSourceEntity_sourceTemplate,
+
+    -- * AnalysisSourceTemplate
+    AnalysisSourceTemplate (..),
+    newAnalysisSourceTemplate,
+    analysisSourceTemplate_dataSetReferences,
+    analysisSourceTemplate_arn,
+
+    -- * AnalysisSummary
+    AnalysisSummary (..),
+    newAnalysisSummary,
+    analysisSummary_analysisId,
+    analysisSummary_arn,
+    analysisSummary_createdTime,
+    analysisSummary_lastUpdatedTime,
+    analysisSummary_name,
+    analysisSummary_status,
+
+    -- * AnchorDateConfiguration
+    AnchorDateConfiguration (..),
+    newAnchorDateConfiguration,
+    anchorDateConfiguration_anchorOption,
+    anchorDateConfiguration_parameterName,
+
+    -- * AnonymousUserDashboardEmbeddingConfiguration
+    AnonymousUserDashboardEmbeddingConfiguration (..),
+    newAnonymousUserDashboardEmbeddingConfiguration,
+    anonymousUserDashboardEmbeddingConfiguration_initialDashboardId,
+
+    -- * AnonymousUserDashboardVisualEmbeddingConfiguration
+    AnonymousUserDashboardVisualEmbeddingConfiguration (..),
+    newAnonymousUserDashboardVisualEmbeddingConfiguration,
+    anonymousUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId,
+
+    -- * AnonymousUserEmbeddingExperienceConfiguration
+    AnonymousUserEmbeddingExperienceConfiguration (..),
+    newAnonymousUserEmbeddingExperienceConfiguration,
+    anonymousUserEmbeddingExperienceConfiguration_dashboard,
+    anonymousUserEmbeddingExperienceConfiguration_dashboardVisual,
+    anonymousUserEmbeddingExperienceConfiguration_qSearchBar,
+
+    -- * AnonymousUserQSearchBarEmbeddingConfiguration
+    AnonymousUserQSearchBarEmbeddingConfiguration (..),
+    newAnonymousUserQSearchBarEmbeddingConfiguration,
+    anonymousUserQSearchBarEmbeddingConfiguration_initialTopicId,
+
+    -- * ArcAxisConfiguration
+    ArcAxisConfiguration (..),
+    newArcAxisConfiguration,
+    arcAxisConfiguration_range,
+    arcAxisConfiguration_reserveRange,
+
+    -- * ArcAxisDisplayRange
+    ArcAxisDisplayRange (..),
+    newArcAxisDisplayRange,
+    arcAxisDisplayRange_max,
+    arcAxisDisplayRange_min,
+
+    -- * ArcConfiguration
+    ArcConfiguration (..),
+    newArcConfiguration,
+    arcConfiguration_arcAngle,
+    arcConfiguration_arcThickness,
+
+    -- * ArcOptions
+    ArcOptions (..),
+    newArcOptions,
+    arcOptions_arcThickness,
+
+    -- * AthenaParameters
+    AthenaParameters (..),
+    newAthenaParameters,
+    athenaParameters_roleArn,
+    athenaParameters_workGroup,
+
+    -- * AuroraParameters
+    AuroraParameters (..),
+    newAuroraParameters,
+    auroraParameters_host,
+    auroraParameters_port,
+    auroraParameters_database,
+
+    -- * AuroraPostgreSqlParameters
+    AuroraPostgreSqlParameters (..),
+    newAuroraPostgreSqlParameters,
+    auroraPostgreSqlParameters_host,
+    auroraPostgreSqlParameters_port,
+    auroraPostgreSqlParameters_database,
+
+    -- * AwsIotAnalyticsParameters
+    AwsIotAnalyticsParameters (..),
+    newAwsIotAnalyticsParameters,
+    awsIotAnalyticsParameters_dataSetName,
+
+    -- * AxisDataOptions
+    AxisDataOptions (..),
+    newAxisDataOptions,
+    axisDataOptions_dateAxisOptions,
+    axisDataOptions_numericAxisOptions,
+
+    -- * AxisDisplayDataDrivenRange
+    AxisDisplayDataDrivenRange (..),
+    newAxisDisplayDataDrivenRange,
+
+    -- * AxisDisplayMinMaxRange
+    AxisDisplayMinMaxRange (..),
+    newAxisDisplayMinMaxRange,
+    axisDisplayMinMaxRange_maximum,
+    axisDisplayMinMaxRange_minimum,
+
+    -- * AxisDisplayOptions
+    AxisDisplayOptions (..),
+    newAxisDisplayOptions,
+    axisDisplayOptions_axisLineVisibility,
+    axisDisplayOptions_axisOffset,
+    axisDisplayOptions_dataOptions,
+    axisDisplayOptions_gridLineVisibility,
+    axisDisplayOptions_scrollbarOptions,
+    axisDisplayOptions_tickLabelOptions,
+
+    -- * AxisDisplayRange
+    AxisDisplayRange (..),
+    newAxisDisplayRange,
+    axisDisplayRange_dataDriven,
+    axisDisplayRange_minMax,
+
+    -- * AxisLabelOptions
+    AxisLabelOptions (..),
+    newAxisLabelOptions,
+    axisLabelOptions_applyTo,
+    axisLabelOptions_customLabel,
+    axisLabelOptions_fontConfiguration,
+
+    -- * AxisLabelReferenceOptions
+    AxisLabelReferenceOptions (..),
+    newAxisLabelReferenceOptions,
+    axisLabelReferenceOptions_fieldId,
+    axisLabelReferenceOptions_column,
+
+    -- * AxisLinearScale
+    AxisLinearScale (..),
+    newAxisLinearScale,
+    axisLinearScale_stepCount,
+    axisLinearScale_stepSize,
+
+    -- * AxisLogarithmicScale
+    AxisLogarithmicScale (..),
+    newAxisLogarithmicScale,
+    axisLogarithmicScale_base,
+
+    -- * AxisScale
+    AxisScale (..),
+    newAxisScale,
+    axisScale_linear,
+    axisScale_logarithmic,
+
+    -- * AxisTickLabelOptions
+    AxisTickLabelOptions (..),
+    newAxisTickLabelOptions,
+    axisTickLabelOptions_labelOptions,
+    axisTickLabelOptions_rotationAngle,
+
+    -- * BarChartAggregatedFieldWells
+    BarChartAggregatedFieldWells (..),
+    newBarChartAggregatedFieldWells,
+    barChartAggregatedFieldWells_category,
+    barChartAggregatedFieldWells_colors,
+    barChartAggregatedFieldWells_smallMultiples,
+    barChartAggregatedFieldWells_values,
+
+    -- * BarChartConfiguration
+    BarChartConfiguration (..),
+    newBarChartConfiguration,
+    barChartConfiguration_barsArrangement,
+    barChartConfiguration_categoryAxis,
+    barChartConfiguration_categoryLabelOptions,
+    barChartConfiguration_colorLabelOptions,
+    barChartConfiguration_contributionAnalysisDefaults,
+    barChartConfiguration_dataLabels,
+    barChartConfiguration_fieldWells,
+    barChartConfiguration_legend,
+    barChartConfiguration_orientation,
+    barChartConfiguration_referenceLines,
+    barChartConfiguration_smallMultiplesOptions,
+    barChartConfiguration_sortConfiguration,
+    barChartConfiguration_tooltip,
+    barChartConfiguration_valueAxis,
+    barChartConfiguration_valueLabelOptions,
+    barChartConfiguration_visualPalette,
+
+    -- * BarChartFieldWells
+    BarChartFieldWells (..),
+    newBarChartFieldWells,
+    barChartFieldWells_barChartAggregatedFieldWells,
+
+    -- * BarChartSortConfiguration
+    BarChartSortConfiguration (..),
+    newBarChartSortConfiguration,
+    barChartSortConfiguration_categoryItemsLimit,
+    barChartSortConfiguration_categorySort,
+    barChartSortConfiguration_colorItemsLimit,
+    barChartSortConfiguration_colorSort,
+    barChartSortConfiguration_smallMultiplesLimitConfiguration,
+    barChartSortConfiguration_smallMultiplesSort,
+
+    -- * BarChartVisual
+    BarChartVisual (..),
+    newBarChartVisual,
+    barChartVisual_actions,
+    barChartVisual_chartConfiguration,
+    barChartVisual_columnHierarchies,
+    barChartVisual_subtitle,
+    barChartVisual_title,
+    barChartVisual_visualId,
+
+    -- * BinCountOptions
+    BinCountOptions (..),
+    newBinCountOptions,
+    binCountOptions_value,
+
+    -- * BinWidthOptions
+    BinWidthOptions (..),
+    newBinWidthOptions,
+    binWidthOptions_binCountLimit,
+    binWidthOptions_value,
+
+    -- * BodySectionConfiguration
+    BodySectionConfiguration (..),
+    newBodySectionConfiguration,
+    bodySectionConfiguration_pageBreakConfiguration,
+    bodySectionConfiguration_style,
+    bodySectionConfiguration_sectionId,
+    bodySectionConfiguration_content,
+
+    -- * BodySectionContent
+    BodySectionContent (..),
+    newBodySectionContent,
+    bodySectionContent_layout,
+
+    -- * BorderStyle
+    BorderStyle (..),
+    newBorderStyle,
+    borderStyle_show,
+
+    -- * BoxPlotAggregatedFieldWells
+    BoxPlotAggregatedFieldWells (..),
+    newBoxPlotAggregatedFieldWells,
+    boxPlotAggregatedFieldWells_groupBy,
+    boxPlotAggregatedFieldWells_values,
+
+    -- * BoxPlotChartConfiguration
+    BoxPlotChartConfiguration (..),
+    newBoxPlotChartConfiguration,
+    boxPlotChartConfiguration_boxPlotOptions,
+    boxPlotChartConfiguration_categoryAxis,
+    boxPlotChartConfiguration_categoryLabelOptions,
+    boxPlotChartConfiguration_fieldWells,
+    boxPlotChartConfiguration_legend,
+    boxPlotChartConfiguration_primaryYAxisDisplayOptions,
+    boxPlotChartConfiguration_primaryYAxisLabelOptions,
+    boxPlotChartConfiguration_referenceLines,
+    boxPlotChartConfiguration_sortConfiguration,
+    boxPlotChartConfiguration_tooltip,
+    boxPlotChartConfiguration_visualPalette,
+
+    -- * BoxPlotFieldWells
+    BoxPlotFieldWells (..),
+    newBoxPlotFieldWells,
+    boxPlotFieldWells_boxPlotAggregatedFieldWells,
+
+    -- * BoxPlotOptions
+    BoxPlotOptions (..),
+    newBoxPlotOptions,
+    boxPlotOptions_allDataPointsVisibility,
+    boxPlotOptions_outlierVisibility,
+    boxPlotOptions_styleOptions,
+
+    -- * BoxPlotSortConfiguration
+    BoxPlotSortConfiguration (..),
+    newBoxPlotSortConfiguration,
+    boxPlotSortConfiguration_categorySort,
+    boxPlotSortConfiguration_paginationConfiguration,
+
+    -- * BoxPlotStyleOptions
+    BoxPlotStyleOptions (..),
+    newBoxPlotStyleOptions,
+    boxPlotStyleOptions_fillStyle,
+
+    -- * BoxPlotVisual
+    BoxPlotVisual (..),
+    newBoxPlotVisual,
+    boxPlotVisual_actions,
+    boxPlotVisual_chartConfiguration,
+    boxPlotVisual_columnHierarchies,
+    boxPlotVisual_subtitle,
+    boxPlotVisual_title,
+    boxPlotVisual_visualId,
+
+    -- * CalculatedColumn
+    CalculatedColumn (..),
+    newCalculatedColumn,
+    calculatedColumn_columnName,
+    calculatedColumn_columnId,
+    calculatedColumn_expression,
+
+    -- * CalculatedField
+    CalculatedField (..),
+    newCalculatedField,
+    calculatedField_dataSetIdentifier,
+    calculatedField_name,
+    calculatedField_expression,
+
+    -- * CalculatedMeasureField
+    CalculatedMeasureField (..),
+    newCalculatedMeasureField,
+    calculatedMeasureField_fieldId,
+    calculatedMeasureField_expression,
+
+    -- * CascadingControlConfiguration
+    CascadingControlConfiguration (..),
+    newCascadingControlConfiguration,
+    cascadingControlConfiguration_sourceControls,
+
+    -- * CascadingControlSource
+    CascadingControlSource (..),
+    newCascadingControlSource,
+    cascadingControlSource_columnToMatch,
+    cascadingControlSource_sourceSheetControlId,
+
+    -- * CastColumnTypeOperation
+    CastColumnTypeOperation (..),
+    newCastColumnTypeOperation,
+    castColumnTypeOperation_format,
+    castColumnTypeOperation_columnName,
+    castColumnTypeOperation_newColumnType,
+
+    -- * CategoricalDimensionField
+    CategoricalDimensionField (..),
+    newCategoricalDimensionField,
+    categoricalDimensionField_formatConfiguration,
+    categoricalDimensionField_hierarchyId,
+    categoricalDimensionField_fieldId,
+    categoricalDimensionField_column,
+
+    -- * CategoricalMeasureField
+    CategoricalMeasureField (..),
+    newCategoricalMeasureField,
+    categoricalMeasureField_aggregationFunction,
+    categoricalMeasureField_formatConfiguration,
+    categoricalMeasureField_fieldId,
+    categoricalMeasureField_column,
+
+    -- * CategoryDrillDownFilter
+    CategoryDrillDownFilter (..),
+    newCategoryDrillDownFilter,
+    categoryDrillDownFilter_column,
+    categoryDrillDownFilter_categoryValues,
+
+    -- * CategoryFilter
+    CategoryFilter (..),
+    newCategoryFilter,
+    categoryFilter_configuration,
+    categoryFilter_filterId,
+    categoryFilter_column,
+
+    -- * CategoryFilterConfiguration
+    CategoryFilterConfiguration (..),
+    newCategoryFilterConfiguration,
+    categoryFilterConfiguration_customFilterConfiguration,
+    categoryFilterConfiguration_customFilterListConfiguration,
+    categoryFilterConfiguration_filterListConfiguration,
+
+    -- * ChartAxisLabelOptions
+    ChartAxisLabelOptions (..),
+    newChartAxisLabelOptions,
+    chartAxisLabelOptions_axisLabelOptions,
+    chartAxisLabelOptions_sortIconVisibility,
+    chartAxisLabelOptions_visibility,
+
+    -- * ClusterMarker
+    ClusterMarker (..),
+    newClusterMarker,
+    clusterMarker_simpleClusterMarker,
+
+    -- * ClusterMarkerConfiguration
+    ClusterMarkerConfiguration (..),
+    newClusterMarkerConfiguration,
+    clusterMarkerConfiguration_clusterMarker,
+
+    -- * ColorScale
+    ColorScale (..),
+    newColorScale,
+    colorScale_nullValueColor,
+    colorScale_colors,
+    colorScale_colorFillType,
+
+    -- * ColumnConfiguration
+    ColumnConfiguration (..),
+    newColumnConfiguration,
+    columnConfiguration_formatConfiguration,
+    columnConfiguration_role,
+    columnConfiguration_column,
+
+    -- * ColumnDescription
+    ColumnDescription (..),
+    newColumnDescription,
+    columnDescription_text,
+
+    -- * ColumnGroup
+    ColumnGroup (..),
+    newColumnGroup,
+    columnGroup_geoSpatialColumnGroup,
+
+    -- * ColumnGroupColumnSchema
+    ColumnGroupColumnSchema (..),
+    newColumnGroupColumnSchema,
+    columnGroupColumnSchema_name,
+
+    -- * ColumnGroupSchema
+    ColumnGroupSchema (..),
+    newColumnGroupSchema,
+    columnGroupSchema_columnGroupColumnSchemaList,
+    columnGroupSchema_name,
+
+    -- * ColumnHierarchy
+    ColumnHierarchy (..),
+    newColumnHierarchy,
+    columnHierarchy_dateTimeHierarchy,
+    columnHierarchy_explicitHierarchy,
+    columnHierarchy_predefinedHierarchy,
+
+    -- * ColumnIdentifier
+    ColumnIdentifier (..),
+    newColumnIdentifier,
+    columnIdentifier_dataSetIdentifier,
+    columnIdentifier_columnName,
+
+    -- * ColumnLevelPermissionRule
+    ColumnLevelPermissionRule (..),
+    newColumnLevelPermissionRule,
+    columnLevelPermissionRule_columnNames,
+    columnLevelPermissionRule_principals,
+
+    -- * ColumnSchema
+    ColumnSchema (..),
+    newColumnSchema,
+    columnSchema_dataType,
+    columnSchema_geographicRole,
+    columnSchema_name,
+
+    -- * ColumnSort
+    ColumnSort (..),
+    newColumnSort,
+    columnSort_aggregationFunction,
+    columnSort_sortBy,
+    columnSort_direction,
+
+    -- * ColumnTag
+    ColumnTag (..),
+    newColumnTag,
+    columnTag_columnDescription,
+    columnTag_columnGeographicRole,
+
+    -- * ColumnTooltipItem
+    ColumnTooltipItem (..),
+    newColumnTooltipItem,
+    columnTooltipItem_aggregation,
+    columnTooltipItem_label,
+    columnTooltipItem_visibility,
+    columnTooltipItem_column,
+
+    -- * ComboChartAggregatedFieldWells
+    ComboChartAggregatedFieldWells (..),
+    newComboChartAggregatedFieldWells,
+    comboChartAggregatedFieldWells_barValues,
+    comboChartAggregatedFieldWells_category,
+    comboChartAggregatedFieldWells_colors,
+    comboChartAggregatedFieldWells_lineValues,
+
+    -- * ComboChartConfiguration
+    ComboChartConfiguration (..),
+    newComboChartConfiguration,
+    comboChartConfiguration_barDataLabels,
+    comboChartConfiguration_barsArrangement,
+    comboChartConfiguration_categoryAxis,
+    comboChartConfiguration_categoryLabelOptions,
+    comboChartConfiguration_colorLabelOptions,
+    comboChartConfiguration_fieldWells,
+    comboChartConfiguration_legend,
+    comboChartConfiguration_lineDataLabels,
+    comboChartConfiguration_primaryYAxisDisplayOptions,
+    comboChartConfiguration_primaryYAxisLabelOptions,
+    comboChartConfiguration_referenceLines,
+    comboChartConfiguration_secondaryYAxisDisplayOptions,
+    comboChartConfiguration_secondaryYAxisLabelOptions,
+    comboChartConfiguration_sortConfiguration,
+    comboChartConfiguration_tooltip,
+    comboChartConfiguration_visualPalette,
+
+    -- * ComboChartFieldWells
+    ComboChartFieldWells (..),
+    newComboChartFieldWells,
+    comboChartFieldWells_comboChartAggregatedFieldWells,
+
+    -- * ComboChartSortConfiguration
+    ComboChartSortConfiguration (..),
+    newComboChartSortConfiguration,
+    comboChartSortConfiguration_categoryItemsLimit,
+    comboChartSortConfiguration_categorySort,
+    comboChartSortConfiguration_colorItemsLimit,
+    comboChartSortConfiguration_colorSort,
+
+    -- * ComboChartVisual
+    ComboChartVisual (..),
+    newComboChartVisual,
+    comboChartVisual_actions,
+    comboChartVisual_chartConfiguration,
+    comboChartVisual_columnHierarchies,
+    comboChartVisual_subtitle,
+    comboChartVisual_title,
+    comboChartVisual_visualId,
+
+    -- * ComparisonConfiguration
+    ComparisonConfiguration (..),
+    newComparisonConfiguration,
+    comparisonConfiguration_comparisonFormat,
+    comparisonConfiguration_comparisonMethod,
+
+    -- * ComparisonFormatConfiguration
+    ComparisonFormatConfiguration (..),
+    newComparisonFormatConfiguration,
+    comparisonFormatConfiguration_numberDisplayFormatConfiguration,
+    comparisonFormatConfiguration_percentageDisplayFormatConfiguration,
+
+    -- * Computation
+    Computation (..),
+    newComputation,
+    computation_forecast,
+    computation_growthRate,
+    computation_maximumMinimum,
+    computation_metricComparison,
+    computation_periodOverPeriod,
+    computation_periodToDate,
+    computation_topBottomMovers,
+    computation_topBottomRanked,
+    computation_totalAggregation,
+    computation_uniqueValues,
+
+    -- * ConditionalFormattingColor
+    ConditionalFormattingColor (..),
+    newConditionalFormattingColor,
+    conditionalFormattingColor_gradient,
+    conditionalFormattingColor_solid,
+
+    -- * ConditionalFormattingCustomIconCondition
+    ConditionalFormattingCustomIconCondition (..),
+    newConditionalFormattingCustomIconCondition,
+    conditionalFormattingCustomIconCondition_color,
+    conditionalFormattingCustomIconCondition_displayConfiguration,
+    conditionalFormattingCustomIconCondition_expression,
+    conditionalFormattingCustomIconCondition_iconOptions,
+
+    -- * ConditionalFormattingCustomIconOptions
+    ConditionalFormattingCustomIconOptions (..),
+    newConditionalFormattingCustomIconOptions,
+    conditionalFormattingCustomIconOptions_icon,
+    conditionalFormattingCustomIconOptions_unicodeIcon,
+
+    -- * ConditionalFormattingGradientColor
+    ConditionalFormattingGradientColor (..),
+    newConditionalFormattingGradientColor,
+    conditionalFormattingGradientColor_expression,
+    conditionalFormattingGradientColor_color,
+
+    -- * ConditionalFormattingIcon
+    ConditionalFormattingIcon (..),
+    newConditionalFormattingIcon,
+    conditionalFormattingIcon_customCondition,
+    conditionalFormattingIcon_iconSet,
+
+    -- * ConditionalFormattingIconDisplayConfiguration
+    ConditionalFormattingIconDisplayConfiguration (..),
+    newConditionalFormattingIconDisplayConfiguration,
+    conditionalFormattingIconDisplayConfiguration_iconDisplayOption,
+
+    -- * ConditionalFormattingIconSet
+    ConditionalFormattingIconSet (..),
+    newConditionalFormattingIconSet,
+    conditionalFormattingIconSet_iconSetType,
+    conditionalFormattingIconSet_expression,
+
+    -- * ConditionalFormattingSolidColor
+    ConditionalFormattingSolidColor (..),
+    newConditionalFormattingSolidColor,
+    conditionalFormattingSolidColor_color,
+    conditionalFormattingSolidColor_expression,
+
+    -- * ContributionAnalysisDefault
+    ContributionAnalysisDefault (..),
+    newContributionAnalysisDefault,
+    contributionAnalysisDefault_measureFieldId,
+    contributionAnalysisDefault_contributorDimensions,
+
+    -- * CreateColumnsOperation
+    CreateColumnsOperation (..),
+    newCreateColumnsOperation,
+    createColumnsOperation_columns,
+
+    -- * CredentialPair
+    CredentialPair (..),
+    newCredentialPair,
+    credentialPair_alternateDataSourceParameters,
+    credentialPair_username,
+    credentialPair_password,
+
+    -- * CurrencyDisplayFormatConfiguration
+    CurrencyDisplayFormatConfiguration (..),
+    newCurrencyDisplayFormatConfiguration,
+    currencyDisplayFormatConfiguration_decimalPlacesConfiguration,
+    currencyDisplayFormatConfiguration_negativeValueConfiguration,
+    currencyDisplayFormatConfiguration_nullValueFormatConfiguration,
+    currencyDisplayFormatConfiguration_numberScale,
+    currencyDisplayFormatConfiguration_prefix,
+    currencyDisplayFormatConfiguration_separatorConfiguration,
+    currencyDisplayFormatConfiguration_suffix,
+    currencyDisplayFormatConfiguration_symbol,
+
+    -- * CustomActionFilterOperation
+    CustomActionFilterOperation (..),
+    newCustomActionFilterOperation,
+    customActionFilterOperation_selectedFieldsConfiguration,
+    customActionFilterOperation_targetVisualsConfiguration,
+
+    -- * CustomActionNavigationOperation
+    CustomActionNavigationOperation (..),
+    newCustomActionNavigationOperation,
+    customActionNavigationOperation_localNavigationConfiguration,
+
+    -- * CustomActionSetParametersOperation
+    CustomActionSetParametersOperation (..),
+    newCustomActionSetParametersOperation,
+    customActionSetParametersOperation_parameterValueConfigurations,
+
+    -- * CustomActionURLOperation
+    CustomActionURLOperation (..),
+    newCustomActionURLOperation,
+    customActionURLOperation_uRLTemplate,
+    customActionURLOperation_uRLTarget,
+
+    -- * CustomContentConfiguration
+    CustomContentConfiguration (..),
+    newCustomContentConfiguration,
+    customContentConfiguration_contentType,
+    customContentConfiguration_contentUrl,
+    customContentConfiguration_imageScaling,
+
+    -- * CustomContentVisual
+    CustomContentVisual (..),
+    newCustomContentVisual,
+    customContentVisual_actions,
+    customContentVisual_chartConfiguration,
+    customContentVisual_subtitle,
+    customContentVisual_title,
+    customContentVisual_visualId,
+    customContentVisual_dataSetIdentifier,
+
+    -- * CustomFilterConfiguration
+    CustomFilterConfiguration (..),
+    newCustomFilterConfiguration,
+    customFilterConfiguration_categoryValue,
+    customFilterConfiguration_parameterName,
+    customFilterConfiguration_selectAllOptions,
+    customFilterConfiguration_matchOperator,
+    customFilterConfiguration_nullOption,
+
+    -- * CustomFilterListConfiguration
+    CustomFilterListConfiguration (..),
+    newCustomFilterListConfiguration,
+    customFilterListConfiguration_categoryValues,
+    customFilterListConfiguration_selectAllOptions,
+    customFilterListConfiguration_matchOperator,
+    customFilterListConfiguration_nullOption,
+
+    -- * CustomNarrativeOptions
+    CustomNarrativeOptions (..),
+    newCustomNarrativeOptions,
+    customNarrativeOptions_narrative,
+
+    -- * CustomParameterValues
+    CustomParameterValues (..),
+    newCustomParameterValues,
+    customParameterValues_dateTimeValues,
+    customParameterValues_decimalValues,
+    customParameterValues_integerValues,
+    customParameterValues_stringValues,
+
+    -- * CustomSql
+    CustomSql (..),
+    newCustomSql,
+    customSql_columns,
+    customSql_dataSourceArn,
+    customSql_name,
+    customSql_sqlQuery,
+
+    -- * CustomValuesConfiguration
+    CustomValuesConfiguration (..),
+    newCustomValuesConfiguration,
+    customValuesConfiguration_includeNullValue,
+    customValuesConfiguration_customValues,
+
+    -- * Dashboard
+    Dashboard (..),
+    newDashboard,
+    dashboard_arn,
+    dashboard_createdTime,
+    dashboard_dashboardId,
+    dashboard_lastPublishedTime,
+    dashboard_lastUpdatedTime,
+    dashboard_name,
+    dashboard_version,
+
+    -- * DashboardError
+    DashboardError (..),
+    newDashboardError,
+    dashboardError_message,
+    dashboardError_type,
+    dashboardError_violatedEntities,
+
+    -- * DashboardPublishOptions
+    DashboardPublishOptions (..),
+    newDashboardPublishOptions,
+    dashboardPublishOptions_adHocFilteringOption,
+    dashboardPublishOptions_exportToCSVOption,
+    dashboardPublishOptions_sheetControlsOption,
+    dashboardPublishOptions_visualPublishOptions,
+
+    -- * DashboardSearchFilter
+    DashboardSearchFilter (..),
+    newDashboardSearchFilter,
+    dashboardSearchFilter_name,
+    dashboardSearchFilter_value,
+    dashboardSearchFilter_operator,
+
+    -- * DashboardSourceEntity
+    DashboardSourceEntity (..),
+    newDashboardSourceEntity,
+    dashboardSourceEntity_sourceTemplate,
+
+    -- * DashboardSourceTemplate
+    DashboardSourceTemplate (..),
+    newDashboardSourceTemplate,
+    dashboardSourceTemplate_dataSetReferences,
+    dashboardSourceTemplate_arn,
+
+    -- * DashboardSummary
+    DashboardSummary (..),
+    newDashboardSummary,
+    dashboardSummary_arn,
+    dashboardSummary_createdTime,
+    dashboardSummary_dashboardId,
+    dashboardSummary_lastPublishedTime,
+    dashboardSummary_lastUpdatedTime,
+    dashboardSummary_name,
+    dashboardSummary_publishedVersionNumber,
+
+    -- * DashboardVersion
+    DashboardVersion (..),
+    newDashboardVersion,
+    dashboardVersion_arn,
+    dashboardVersion_createdTime,
+    dashboardVersion_dataSetArns,
+    dashboardVersion_description,
+    dashboardVersion_errors,
+    dashboardVersion_sheets,
+    dashboardVersion_sourceEntityArn,
+    dashboardVersion_status,
+    dashboardVersion_themeArn,
+    dashboardVersion_versionNumber,
+
+    -- * DashboardVersionDefinition
+    DashboardVersionDefinition (..),
+    newDashboardVersionDefinition,
+    dashboardVersionDefinition_analysisDefaults,
+    dashboardVersionDefinition_calculatedFields,
+    dashboardVersionDefinition_columnConfigurations,
+    dashboardVersionDefinition_filterGroups,
+    dashboardVersionDefinition_parameterDeclarations,
+    dashboardVersionDefinition_sheets,
+    dashboardVersionDefinition_dataSetIdentifierDeclarations,
+
+    -- * DashboardVersionSummary
+    DashboardVersionSummary (..),
+    newDashboardVersionSummary,
+    dashboardVersionSummary_arn,
+    dashboardVersionSummary_createdTime,
+    dashboardVersionSummary_description,
+    dashboardVersionSummary_sourceEntityArn,
+    dashboardVersionSummary_status,
+    dashboardVersionSummary_versionNumber,
+
+    -- * DashboardVisualId
+    DashboardVisualId (..),
+    newDashboardVisualId,
+    dashboardVisualId_dashboardId,
+    dashboardVisualId_sheetId,
+    dashboardVisualId_visualId,
+
+    -- * DashboardVisualPublishOptions
+    DashboardVisualPublishOptions (..),
+    newDashboardVisualPublishOptions,
+    dashboardVisualPublishOptions_exportHiddenFieldsOption,
+
+    -- * DataColor
+    DataColor (..),
+    newDataColor,
+    dataColor_color,
+    dataColor_dataValue,
+
+    -- * DataColorPalette
+    DataColorPalette (..),
+    newDataColorPalette,
+    dataColorPalette_colors,
+    dataColorPalette_emptyFillColor,
+    dataColorPalette_minMaxGradient,
+
+    -- * DataFieldSeriesItem
+    DataFieldSeriesItem (..),
+    newDataFieldSeriesItem,
+    dataFieldSeriesItem_fieldValue,
+    dataFieldSeriesItem_settings,
+    dataFieldSeriesItem_fieldId,
+    dataFieldSeriesItem_axisBinding,
+
+    -- * DataLabelOptions
+    DataLabelOptions (..),
+    newDataLabelOptions,
+    dataLabelOptions_categoryLabelVisibility,
+    dataLabelOptions_dataLabelTypes,
+    dataLabelOptions_labelColor,
+    dataLabelOptions_labelContent,
+    dataLabelOptions_labelFontConfiguration,
+    dataLabelOptions_measureLabelVisibility,
+    dataLabelOptions_overlap,
+    dataLabelOptions_position,
+    dataLabelOptions_visibility,
+
+    -- * DataLabelType
+    DataLabelType (..),
+    newDataLabelType,
+    dataLabelType_dataPathLabelType,
+    dataLabelType_fieldLabelType,
+    dataLabelType_maximumLabelType,
+    dataLabelType_minimumLabelType,
+    dataLabelType_rangeEndsLabelType,
+
+    -- * DataPathColor
+    DataPathColor (..),
+    newDataPathColor,
+    dataPathColor_timeGranularity,
+    dataPathColor_element,
+    dataPathColor_color,
+
+    -- * DataPathLabelType
+    DataPathLabelType (..),
+    newDataPathLabelType,
+    dataPathLabelType_fieldId,
+    dataPathLabelType_fieldValue,
+    dataPathLabelType_visibility,
+
+    -- * DataPathSort
+    DataPathSort (..),
+    newDataPathSort,
+    dataPathSort_direction,
+    dataPathSort_sortPaths,
+
+    -- * DataPathValue
+    DataPathValue (..),
+    newDataPathValue,
+    dataPathValue_fieldId,
+    dataPathValue_fieldValue,
+
+    -- * DataSet
+    DataSet (..),
+    newDataSet,
+    dataSet_arn,
+    dataSet_columnGroups,
+    dataSet_columnLevelPermissionRules,
+    dataSet_consumedSpiceCapacityInBytes,
+    dataSet_createdTime,
+    dataSet_dataSetId,
+    dataSet_dataSetUsageConfiguration,
+    dataSet_fieldFolders,
+    dataSet_importMode,
+    dataSet_lastUpdatedTime,
+    dataSet_logicalTableMap,
+    dataSet_name,
+    dataSet_outputColumns,
+    dataSet_physicalTableMap,
+    dataSet_rowLevelPermissionDataSet,
+    dataSet_rowLevelPermissionTagConfiguration,
+
+    -- * DataSetConfiguration
+    DataSetConfiguration (..),
+    newDataSetConfiguration,
+    dataSetConfiguration_columnGroupSchemaList,
+    dataSetConfiguration_dataSetSchema,
+    dataSetConfiguration_placeholder,
+
+    -- * DataSetIdentifierDeclaration
+    DataSetIdentifierDeclaration (..),
+    newDataSetIdentifierDeclaration,
+    dataSetIdentifierDeclaration_identifier,
+    dataSetIdentifierDeclaration_dataSetArn,
+
+    -- * DataSetReference
+    DataSetReference (..),
+    newDataSetReference,
+    dataSetReference_dataSetPlaceholder,
+    dataSetReference_dataSetArn,
+
+    -- * DataSetSchema
+    DataSetSchema (..),
+    newDataSetSchema,
+    dataSetSchema_columnSchemaList,
+
+    -- * DataSetSearchFilter
+    DataSetSearchFilter (..),
+    newDataSetSearchFilter,
+    dataSetSearchFilter_operator,
+    dataSetSearchFilter_name,
+    dataSetSearchFilter_value,
+
+    -- * DataSetSummary
+    DataSetSummary (..),
+    newDataSetSummary,
+    dataSetSummary_arn,
+    dataSetSummary_columnLevelPermissionRulesApplied,
+    dataSetSummary_createdTime,
+    dataSetSummary_dataSetId,
+    dataSetSummary_importMode,
+    dataSetSummary_lastUpdatedTime,
+    dataSetSummary_name,
+    dataSetSummary_rowLevelPermissionDataSet,
+    dataSetSummary_rowLevelPermissionTagConfigurationApplied,
+
+    -- * DataSetUsageConfiguration
+    DataSetUsageConfiguration (..),
+    newDataSetUsageConfiguration,
+    dataSetUsageConfiguration_disableUseAsDirectQuerySource,
+    dataSetUsageConfiguration_disableUseAsImportedSource,
+
+    -- * DataSource
+    DataSource (..),
+    newDataSource,
+    dataSource_alternateDataSourceParameters,
+    dataSource_arn,
+    dataSource_createdTime,
+    dataSource_dataSourceId,
+    dataSource_dataSourceParameters,
+    dataSource_errorInfo,
+    dataSource_lastUpdatedTime,
+    dataSource_name,
+    dataSource_secretArn,
+    dataSource_sslProperties,
+    dataSource_status,
+    dataSource_type,
+    dataSource_vpcConnectionProperties,
+
+    -- * DataSourceCredentials
+    DataSourceCredentials (..),
+    newDataSourceCredentials,
+    dataSourceCredentials_copySourceArn,
+    dataSourceCredentials_credentialPair,
+    dataSourceCredentials_secretArn,
+
+    -- * DataSourceErrorInfo
+    DataSourceErrorInfo (..),
+    newDataSourceErrorInfo,
+    dataSourceErrorInfo_message,
+    dataSourceErrorInfo_type,
+
+    -- * DataSourceParameters
+    DataSourceParameters (..),
+    newDataSourceParameters,
+    dataSourceParameters_amazonElasticsearchParameters,
+    dataSourceParameters_amazonOpenSearchParameters,
+    dataSourceParameters_athenaParameters,
+    dataSourceParameters_auroraParameters,
+    dataSourceParameters_auroraPostgreSqlParameters,
+    dataSourceParameters_awsIotAnalyticsParameters,
+    dataSourceParameters_databricksParameters,
+    dataSourceParameters_exasolParameters,
+    dataSourceParameters_jiraParameters,
+    dataSourceParameters_mariaDbParameters,
+    dataSourceParameters_mySqlParameters,
+    dataSourceParameters_oracleParameters,
+    dataSourceParameters_postgreSqlParameters,
+    dataSourceParameters_prestoParameters,
+    dataSourceParameters_rdsParameters,
+    dataSourceParameters_redshiftParameters,
+    dataSourceParameters_s3Parameters,
+    dataSourceParameters_serviceNowParameters,
+    dataSourceParameters_snowflakeParameters,
+    dataSourceParameters_sparkParameters,
+    dataSourceParameters_sqlServerParameters,
+    dataSourceParameters_teradataParameters,
+    dataSourceParameters_twitterParameters,
+
+    -- * DataSourceSearchFilter
+    DataSourceSearchFilter (..),
+    newDataSourceSearchFilter,
+    dataSourceSearchFilter_operator,
+    dataSourceSearchFilter_name,
+    dataSourceSearchFilter_value,
+
+    -- * DataSourceSummary
+    DataSourceSummary (..),
+    newDataSourceSummary,
+    dataSourceSummary_arn,
+    dataSourceSummary_createdTime,
+    dataSourceSummary_dataSourceId,
+    dataSourceSummary_lastUpdatedTime,
+    dataSourceSummary_name,
+    dataSourceSummary_type,
+
+    -- * DatabricksParameters
+    DatabricksParameters (..),
+    newDatabricksParameters,
+    databricksParameters_host,
+    databricksParameters_port,
+    databricksParameters_sqlEndpointPath,
+
+    -- * DateAxisOptions
+    DateAxisOptions (..),
+    newDateAxisOptions,
+    dateAxisOptions_missingDateVisibility,
+
+    -- * DateDimensionField
+    DateDimensionField (..),
+    newDateDimensionField,
+    dateDimensionField_dateGranularity,
+    dateDimensionField_formatConfiguration,
+    dateDimensionField_hierarchyId,
+    dateDimensionField_fieldId,
+    dateDimensionField_column,
+
+    -- * DateMeasureField
+    DateMeasureField (..),
+    newDateMeasureField,
+    dateMeasureField_aggregationFunction,
+    dateMeasureField_formatConfiguration,
+    dateMeasureField_fieldId,
+    dateMeasureField_column,
+
+    -- * DateTimeDefaultValues
+    DateTimeDefaultValues (..),
+    newDateTimeDefaultValues,
+    dateTimeDefaultValues_dynamicValue,
+    dateTimeDefaultValues_rollingDate,
+    dateTimeDefaultValues_staticValues,
+
+    -- * DateTimeFormatConfiguration
+    DateTimeFormatConfiguration (..),
+    newDateTimeFormatConfiguration,
+    dateTimeFormatConfiguration_dateTimeFormat,
+    dateTimeFormatConfiguration_nullValueFormatConfiguration,
+    dateTimeFormatConfiguration_numericFormatConfiguration,
+
+    -- * DateTimeHierarchy
+    DateTimeHierarchy (..),
+    newDateTimeHierarchy,
+    dateTimeHierarchy_drillDownFilters,
+    dateTimeHierarchy_hierarchyId,
+
+    -- * DateTimeParameter
+    DateTimeParameter (..),
+    newDateTimeParameter,
+    dateTimeParameter_name,
+    dateTimeParameter_values,
+
+    -- * DateTimeParameterDeclaration
+    DateTimeParameterDeclaration (..),
+    newDateTimeParameterDeclaration,
+    dateTimeParameterDeclaration_defaultValues,
+    dateTimeParameterDeclaration_timeGranularity,
+    dateTimeParameterDeclaration_valueWhenUnset,
+    dateTimeParameterDeclaration_name,
+
+    -- * DateTimePickerControlDisplayOptions
+    DateTimePickerControlDisplayOptions (..),
+    newDateTimePickerControlDisplayOptions,
+    dateTimePickerControlDisplayOptions_dateTimeFormat,
+    dateTimePickerControlDisplayOptions_titleOptions,
+
+    -- * DateTimeValueWhenUnsetConfiguration
+    DateTimeValueWhenUnsetConfiguration (..),
+    newDateTimeValueWhenUnsetConfiguration,
+    dateTimeValueWhenUnsetConfiguration_customValue,
+    dateTimeValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- * DecimalDefaultValues
+    DecimalDefaultValues (..),
+    newDecimalDefaultValues,
+    decimalDefaultValues_dynamicValue,
+    decimalDefaultValues_staticValues,
+
+    -- * DecimalParameter
+    DecimalParameter (..),
+    newDecimalParameter,
+    decimalParameter_name,
+    decimalParameter_values,
+
+    -- * DecimalParameterDeclaration
+    DecimalParameterDeclaration (..),
+    newDecimalParameterDeclaration,
+    decimalParameterDeclaration_defaultValues,
+    decimalParameterDeclaration_valueWhenUnset,
+    decimalParameterDeclaration_parameterValueType,
+    decimalParameterDeclaration_name,
+
+    -- * DecimalPlacesConfiguration
+    DecimalPlacesConfiguration (..),
+    newDecimalPlacesConfiguration,
+    decimalPlacesConfiguration_decimalPlaces,
+
+    -- * DecimalValueWhenUnsetConfiguration
+    DecimalValueWhenUnsetConfiguration (..),
+    newDecimalValueWhenUnsetConfiguration,
+    decimalValueWhenUnsetConfiguration_customValue,
+    decimalValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- * DefaultFreeFormLayoutConfiguration
+    DefaultFreeFormLayoutConfiguration (..),
+    newDefaultFreeFormLayoutConfiguration,
+    defaultFreeFormLayoutConfiguration_canvasSizeOptions,
+
+    -- * DefaultGridLayoutConfiguration
+    DefaultGridLayoutConfiguration (..),
+    newDefaultGridLayoutConfiguration,
+    defaultGridLayoutConfiguration_canvasSizeOptions,
+
+    -- * DefaultInteractiveLayoutConfiguration
+    DefaultInteractiveLayoutConfiguration (..),
+    newDefaultInteractiveLayoutConfiguration,
+    defaultInteractiveLayoutConfiguration_freeForm,
+    defaultInteractiveLayoutConfiguration_grid,
+
+    -- * DefaultNewSheetConfiguration
+    DefaultNewSheetConfiguration (..),
+    newDefaultNewSheetConfiguration,
+    defaultNewSheetConfiguration_interactiveLayoutConfiguration,
+    defaultNewSheetConfiguration_paginatedLayoutConfiguration,
+    defaultNewSheetConfiguration_sheetContentType,
+
+    -- * DefaultPaginatedLayoutConfiguration
+    DefaultPaginatedLayoutConfiguration (..),
+    newDefaultPaginatedLayoutConfiguration,
+    defaultPaginatedLayoutConfiguration_sectionBased,
+
+    -- * DefaultSectionBasedLayoutConfiguration
+    DefaultSectionBasedLayoutConfiguration (..),
+    newDefaultSectionBasedLayoutConfiguration,
+    defaultSectionBasedLayoutConfiguration_canvasSizeOptions,
+
+    -- * DestinationParameterValueConfiguration
+    DestinationParameterValueConfiguration (..),
+    newDestinationParameterValueConfiguration,
+    destinationParameterValueConfiguration_customValuesConfiguration,
+    destinationParameterValueConfiguration_selectAllValueOptions,
+    destinationParameterValueConfiguration_sourceField,
+    destinationParameterValueConfiguration_sourceParameterName,
+
+    -- * DimensionField
+    DimensionField (..),
+    newDimensionField,
+    dimensionField_categoricalDimensionField,
+    dimensionField_dateDimensionField,
+    dimensionField_numericalDimensionField,
+
+    -- * DonutCenterOptions
+    DonutCenterOptions (..),
+    newDonutCenterOptions,
+    donutCenterOptions_labelVisibility,
+
+    -- * DonutOptions
+    DonutOptions (..),
+    newDonutOptions,
+    donutOptions_arcOptions,
+    donutOptions_donutCenterOptions,
+
+    -- * DrillDownFilter
+    DrillDownFilter (..),
+    newDrillDownFilter,
+    drillDownFilter_categoryFilter,
+    drillDownFilter_numericEqualityFilter,
+    drillDownFilter_timeRangeFilter,
+
+    -- * DropDownControlDisplayOptions
+    DropDownControlDisplayOptions (..),
+    newDropDownControlDisplayOptions,
+    dropDownControlDisplayOptions_selectAllOptions,
+    dropDownControlDisplayOptions_titleOptions,
+
+    -- * DynamicDefaultValue
+    DynamicDefaultValue (..),
+    newDynamicDefaultValue,
+    dynamicDefaultValue_groupNameColumn,
+    dynamicDefaultValue_userNameColumn,
+    dynamicDefaultValue_defaultValueColumn,
+
+    -- * EmptyVisual
+    EmptyVisual (..),
+    newEmptyVisual,
+    emptyVisual_actions,
+    emptyVisual_visualId,
+    emptyVisual_dataSetIdentifier,
+
+    -- * Entity
+    Entity (..),
+    newEntity,
+    entity_path,
+
+    -- * ErrorInfo
+    ErrorInfo (..),
+    newErrorInfo,
+    errorInfo_message,
+    errorInfo_type,
+
+    -- * ExasolParameters
+    ExasolParameters (..),
+    newExasolParameters,
+    exasolParameters_host,
+    exasolParameters_port,
+
+    -- * ExcludePeriodConfiguration
+    ExcludePeriodConfiguration (..),
+    newExcludePeriodConfiguration,
+    excludePeriodConfiguration_status,
+    excludePeriodConfiguration_amount,
+    excludePeriodConfiguration_granularity,
+
+    -- * ExplicitHierarchy
+    ExplicitHierarchy (..),
+    newExplicitHierarchy,
+    explicitHierarchy_drillDownFilters,
+    explicitHierarchy_hierarchyId,
+    explicitHierarchy_columns,
+
+    -- * ExportHiddenFieldsOption
+    ExportHiddenFieldsOption (..),
+    newExportHiddenFieldsOption,
+    exportHiddenFieldsOption_availabilityStatus,
+
+    -- * ExportToCSVOption
+    ExportToCSVOption (..),
+    newExportToCSVOption,
+    exportToCSVOption_availabilityStatus,
+
+    -- * FieldBasedTooltip
+    FieldBasedTooltip (..),
+    newFieldBasedTooltip,
+    fieldBasedTooltip_aggregationVisibility,
+    fieldBasedTooltip_tooltipFields,
+    fieldBasedTooltip_tooltipTitleType,
+
+    -- * FieldFolder
+    FieldFolder (..),
+    newFieldFolder,
+    fieldFolder_columns,
+    fieldFolder_description,
+
+    -- * FieldLabelType
+    FieldLabelType (..),
+    newFieldLabelType,
+    fieldLabelType_fieldId,
+    fieldLabelType_visibility,
+
+    -- * FieldSeriesItem
+    FieldSeriesItem (..),
+    newFieldSeriesItem,
+    fieldSeriesItem_settings,
+    fieldSeriesItem_fieldId,
+    fieldSeriesItem_axisBinding,
+
+    -- * FieldSort
+    FieldSort (..),
+    newFieldSort,
+    fieldSort_fieldId,
+    fieldSort_direction,
+
+    -- * FieldSortOptions
+    FieldSortOptions (..),
+    newFieldSortOptions,
+    fieldSortOptions_columnSort,
+    fieldSortOptions_fieldSort,
+
+    -- * FieldTooltipItem
+    FieldTooltipItem (..),
+    newFieldTooltipItem,
+    fieldTooltipItem_label,
+    fieldTooltipItem_visibility,
+    fieldTooltipItem_fieldId,
+
+    -- * FilledMapAggregatedFieldWells
+    FilledMapAggregatedFieldWells (..),
+    newFilledMapAggregatedFieldWells,
+    filledMapAggregatedFieldWells_geospatial,
+    filledMapAggregatedFieldWells_values,
+
+    -- * FilledMapConditionalFormatting
+    FilledMapConditionalFormatting (..),
+    newFilledMapConditionalFormatting,
+    filledMapConditionalFormatting_conditionalFormattingOptions,
+
+    -- * FilledMapConditionalFormattingOption
+    FilledMapConditionalFormattingOption (..),
+    newFilledMapConditionalFormattingOption,
+    filledMapConditionalFormattingOption_shape,
+
+    -- * FilledMapConfiguration
+    FilledMapConfiguration (..),
+    newFilledMapConfiguration,
+    filledMapConfiguration_fieldWells,
+    filledMapConfiguration_legend,
+    filledMapConfiguration_mapStyleOptions,
+    filledMapConfiguration_sortConfiguration,
+    filledMapConfiguration_tooltip,
+    filledMapConfiguration_windowOptions,
+
+    -- * FilledMapFieldWells
+    FilledMapFieldWells (..),
+    newFilledMapFieldWells,
+    filledMapFieldWells_filledMapAggregatedFieldWells,
+
+    -- * FilledMapShapeConditionalFormatting
+    FilledMapShapeConditionalFormatting (..),
+    newFilledMapShapeConditionalFormatting,
+    filledMapShapeConditionalFormatting_format,
+    filledMapShapeConditionalFormatting_fieldId,
+
+    -- * FilledMapSortConfiguration
+    FilledMapSortConfiguration (..),
+    newFilledMapSortConfiguration,
+    filledMapSortConfiguration_categorySort,
+
+    -- * FilledMapVisual
+    FilledMapVisual (..),
+    newFilledMapVisual,
+    filledMapVisual_actions,
+    filledMapVisual_chartConfiguration,
+    filledMapVisual_columnHierarchies,
+    filledMapVisual_conditionalFormatting,
+    filledMapVisual_subtitle,
+    filledMapVisual_title,
+    filledMapVisual_visualId,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_categoryFilter,
+    filter_numericEqualityFilter,
+    filter_numericRangeFilter,
+    filter_relativeDatesFilter,
+    filter_timeEqualityFilter,
+    filter_timeRangeFilter,
+    filter_topBottomFilter,
+
+    -- * FilterControl
+    FilterControl (..),
+    newFilterControl,
+    filterControl_dateTimePicker,
+    filterControl_dropdown,
+    filterControl_list,
+    filterControl_relativeDateTime,
+    filterControl_slider,
+    filterControl_textArea,
+    filterControl_textField,
+
+    -- * FilterDateTimePickerControl
+    FilterDateTimePickerControl (..),
+    newFilterDateTimePickerControl,
+    filterDateTimePickerControl_displayOptions,
+    filterDateTimePickerControl_type,
+    filterDateTimePickerControl_filterControlId,
+    filterDateTimePickerControl_title,
+    filterDateTimePickerControl_sourceFilterId,
+
+    -- * FilterDropDownControl
+    FilterDropDownControl (..),
+    newFilterDropDownControl,
+    filterDropDownControl_cascadingControlConfiguration,
+    filterDropDownControl_displayOptions,
+    filterDropDownControl_selectableValues,
+    filterDropDownControl_type,
+    filterDropDownControl_filterControlId,
+    filterDropDownControl_title,
+    filterDropDownControl_sourceFilterId,
+
+    -- * FilterGroup
+    FilterGroup (..),
+    newFilterGroup,
+    filterGroup_status,
+    filterGroup_filterGroupId,
+    filterGroup_filters,
+    filterGroup_scopeConfiguration,
+    filterGroup_crossDataset,
+
+    -- * FilterListConfiguration
+    FilterListConfiguration (..),
+    newFilterListConfiguration,
+    filterListConfiguration_categoryValues,
+    filterListConfiguration_selectAllOptions,
+    filterListConfiguration_matchOperator,
+
+    -- * FilterListControl
+    FilterListControl (..),
+    newFilterListControl,
+    filterListControl_cascadingControlConfiguration,
+    filterListControl_displayOptions,
+    filterListControl_selectableValues,
+    filterListControl_type,
+    filterListControl_filterControlId,
+    filterListControl_title,
+    filterListControl_sourceFilterId,
+
+    -- * FilterOperation
+    FilterOperation (..),
+    newFilterOperation,
+    filterOperation_conditionExpression,
+
+    -- * FilterOperationSelectedFieldsConfiguration
+    FilterOperationSelectedFieldsConfiguration (..),
+    newFilterOperationSelectedFieldsConfiguration,
+    filterOperationSelectedFieldsConfiguration_selectedFieldOptions,
+    filterOperationSelectedFieldsConfiguration_selectedFields,
+
+    -- * FilterOperationTargetVisualsConfiguration
+    FilterOperationTargetVisualsConfiguration (..),
+    newFilterOperationTargetVisualsConfiguration,
+    filterOperationTargetVisualsConfiguration_sameSheetTargetVisualConfiguration,
+
+    -- * FilterRelativeDateTimeControl
+    FilterRelativeDateTimeControl (..),
+    newFilterRelativeDateTimeControl,
+    filterRelativeDateTimeControl_displayOptions,
+    filterRelativeDateTimeControl_filterControlId,
+    filterRelativeDateTimeControl_title,
+    filterRelativeDateTimeControl_sourceFilterId,
+
+    -- * FilterScopeConfiguration
+    FilterScopeConfiguration (..),
+    newFilterScopeConfiguration,
+    filterScopeConfiguration_selectedSheets,
+
+    -- * FilterSelectableValues
+    FilterSelectableValues (..),
+    newFilterSelectableValues,
+    filterSelectableValues_values,
+
+    -- * FilterSliderControl
+    FilterSliderControl (..),
+    newFilterSliderControl,
+    filterSliderControl_displayOptions,
+    filterSliderControl_type,
+    filterSliderControl_filterControlId,
+    filterSliderControl_title,
+    filterSliderControl_sourceFilterId,
+    filterSliderControl_maximumValue,
+    filterSliderControl_minimumValue,
+    filterSliderControl_stepSize,
+
+    -- * FilterTextAreaControl
+    FilterTextAreaControl (..),
+    newFilterTextAreaControl,
+    filterTextAreaControl_delimiter,
+    filterTextAreaControl_displayOptions,
+    filterTextAreaControl_filterControlId,
+    filterTextAreaControl_title,
+    filterTextAreaControl_sourceFilterId,
+
+    -- * FilterTextFieldControl
+    FilterTextFieldControl (..),
+    newFilterTextFieldControl,
+    filterTextFieldControl_displayOptions,
+    filterTextFieldControl_filterControlId,
+    filterTextFieldControl_title,
+    filterTextFieldControl_sourceFilterId,
+
+    -- * Folder
+    Folder (..),
+    newFolder,
+    folder_arn,
+    folder_createdTime,
+    folder_folderId,
+    folder_folderPath,
+    folder_folderType,
+    folder_lastUpdatedTime,
+    folder_name,
+
+    -- * FolderMember
+    FolderMember (..),
+    newFolderMember,
+    folderMember_memberId,
+    folderMember_memberType,
+
+    -- * FolderSearchFilter
+    FolderSearchFilter (..),
+    newFolderSearchFilter,
+    folderSearchFilter_name,
+    folderSearchFilter_operator,
+    folderSearchFilter_value,
+
+    -- * FolderSummary
+    FolderSummary (..),
+    newFolderSummary,
+    folderSummary_arn,
+    folderSummary_createdTime,
+    folderSummary_folderId,
+    folderSummary_folderType,
+    folderSummary_lastUpdatedTime,
+    folderSummary_name,
+
+    -- * Font
+    Font (..),
+    newFont,
+    font_fontFamily,
+
+    -- * FontConfiguration
+    FontConfiguration (..),
+    newFontConfiguration,
+    fontConfiguration_fontColor,
+    fontConfiguration_fontDecoration,
+    fontConfiguration_fontSize,
+    fontConfiguration_fontStyle,
+    fontConfiguration_fontWeight,
+
+    -- * FontSize
+    FontSize (..),
+    newFontSize,
+    fontSize_relative,
+
+    -- * FontWeight
+    FontWeight (..),
+    newFontWeight,
+    fontWeight_name,
+
+    -- * ForecastComputation
+    ForecastComputation (..),
+    newForecastComputation,
+    forecastComputation_customSeasonalityValue,
+    forecastComputation_lowerBoundary,
+    forecastComputation_name,
+    forecastComputation_periodsBackward,
+    forecastComputation_periodsForward,
+    forecastComputation_predictionInterval,
+    forecastComputation_seasonality,
+    forecastComputation_upperBoundary,
+    forecastComputation_value,
+    forecastComputation_computationId,
+    forecastComputation_time,
+
+    -- * ForecastConfiguration
+    ForecastConfiguration (..),
+    newForecastConfiguration,
+    forecastConfiguration_forecastProperties,
+    forecastConfiguration_scenario,
+
+    -- * ForecastScenario
+    ForecastScenario (..),
+    newForecastScenario,
+    forecastScenario_whatIfPointScenario,
+    forecastScenario_whatIfRangeScenario,
+
+    -- * FormatConfiguration
+    FormatConfiguration (..),
+    newFormatConfiguration,
+    formatConfiguration_dateTimeFormatConfiguration,
+    formatConfiguration_numberFormatConfiguration,
+    formatConfiguration_stringFormatConfiguration,
+
+    -- * FreeFormLayoutCanvasSizeOptions
+    FreeFormLayoutCanvasSizeOptions (..),
+    newFreeFormLayoutCanvasSizeOptions,
+    freeFormLayoutCanvasSizeOptions_screenCanvasSizeOptions,
+
+    -- * FreeFormLayoutConfiguration
+    FreeFormLayoutConfiguration (..),
+    newFreeFormLayoutConfiguration,
+    freeFormLayoutConfiguration_canvasSizeOptions,
+    freeFormLayoutConfiguration_elements,
+
+    -- * FreeFormLayoutElement
+    FreeFormLayoutElement (..),
+    newFreeFormLayoutElement,
+    freeFormLayoutElement_backgroundStyle,
+    freeFormLayoutElement_borderStyle,
+    freeFormLayoutElement_loadingAnimation,
+    freeFormLayoutElement_renderingRules,
+    freeFormLayoutElement_selectedBorderStyle,
+    freeFormLayoutElement_visibility,
+    freeFormLayoutElement_elementId,
+    freeFormLayoutElement_elementType,
+    freeFormLayoutElement_xAxisLocation,
+    freeFormLayoutElement_yAxisLocation,
+    freeFormLayoutElement_width,
+    freeFormLayoutElement_height,
+
+    -- * FreeFormLayoutElementBackgroundStyle
+    FreeFormLayoutElementBackgroundStyle (..),
+    newFreeFormLayoutElementBackgroundStyle,
+    freeFormLayoutElementBackgroundStyle_color,
+    freeFormLayoutElementBackgroundStyle_visibility,
+
+    -- * FreeFormLayoutElementBorderStyle
+    FreeFormLayoutElementBorderStyle (..),
+    newFreeFormLayoutElementBorderStyle,
+    freeFormLayoutElementBorderStyle_color,
+    freeFormLayoutElementBorderStyle_visibility,
+
+    -- * FreeFormLayoutScreenCanvasSizeOptions
+    FreeFormLayoutScreenCanvasSizeOptions (..),
+    newFreeFormLayoutScreenCanvasSizeOptions,
+    freeFormLayoutScreenCanvasSizeOptions_optimizedViewPortWidth,
+
+    -- * FreeFormSectionLayoutConfiguration
+    FreeFormSectionLayoutConfiguration (..),
+    newFreeFormSectionLayoutConfiguration,
+    freeFormSectionLayoutConfiguration_elements,
+
+    -- * FunnelChartAggregatedFieldWells
+    FunnelChartAggregatedFieldWells (..),
+    newFunnelChartAggregatedFieldWells,
+    funnelChartAggregatedFieldWells_category,
+    funnelChartAggregatedFieldWells_values,
+
+    -- * FunnelChartConfiguration
+    FunnelChartConfiguration (..),
+    newFunnelChartConfiguration,
+    funnelChartConfiguration_categoryLabelOptions,
+    funnelChartConfiguration_dataLabelOptions,
+    funnelChartConfiguration_fieldWells,
+    funnelChartConfiguration_sortConfiguration,
+    funnelChartConfiguration_tooltip,
+    funnelChartConfiguration_valueLabelOptions,
+    funnelChartConfiguration_visualPalette,
+
+    -- * FunnelChartDataLabelOptions
+    FunnelChartDataLabelOptions (..),
+    newFunnelChartDataLabelOptions,
+    funnelChartDataLabelOptions_categoryLabelVisibility,
+    funnelChartDataLabelOptions_labelColor,
+    funnelChartDataLabelOptions_labelFontConfiguration,
+    funnelChartDataLabelOptions_measureDataLabelStyle,
+    funnelChartDataLabelOptions_measureLabelVisibility,
+    funnelChartDataLabelOptions_position,
+    funnelChartDataLabelOptions_visibility,
+
+    -- * FunnelChartFieldWells
+    FunnelChartFieldWells (..),
+    newFunnelChartFieldWells,
+    funnelChartFieldWells_funnelChartAggregatedFieldWells,
+
+    -- * FunnelChartSortConfiguration
+    FunnelChartSortConfiguration (..),
+    newFunnelChartSortConfiguration,
+    funnelChartSortConfiguration_categoryItemsLimit,
+    funnelChartSortConfiguration_categorySort,
+
+    -- * FunnelChartVisual
+    FunnelChartVisual (..),
+    newFunnelChartVisual,
+    funnelChartVisual_actions,
+    funnelChartVisual_chartConfiguration,
+    funnelChartVisual_columnHierarchies,
+    funnelChartVisual_subtitle,
+    funnelChartVisual_title,
+    funnelChartVisual_visualId,
+
+    -- * GaugeChartArcConditionalFormatting
+    GaugeChartArcConditionalFormatting (..),
+    newGaugeChartArcConditionalFormatting,
+    gaugeChartArcConditionalFormatting_foregroundColor,
+
+    -- * GaugeChartConditionalFormatting
+    GaugeChartConditionalFormatting (..),
+    newGaugeChartConditionalFormatting,
+    gaugeChartConditionalFormatting_conditionalFormattingOptions,
+
+    -- * GaugeChartConditionalFormattingOption
+    GaugeChartConditionalFormattingOption (..),
+    newGaugeChartConditionalFormattingOption,
+    gaugeChartConditionalFormattingOption_arc,
+    gaugeChartConditionalFormattingOption_primaryValue,
+
+    -- * GaugeChartConfiguration
+    GaugeChartConfiguration (..),
+    newGaugeChartConfiguration,
+    gaugeChartConfiguration_dataLabels,
+    gaugeChartConfiguration_fieldWells,
+    gaugeChartConfiguration_gaugeChartOptions,
+    gaugeChartConfiguration_tooltipOptions,
+    gaugeChartConfiguration_visualPalette,
+
+    -- * GaugeChartFieldWells
+    GaugeChartFieldWells (..),
+    newGaugeChartFieldWells,
+    gaugeChartFieldWells_targetValues,
+    gaugeChartFieldWells_values,
+
+    -- * GaugeChartOptions
+    GaugeChartOptions (..),
+    newGaugeChartOptions,
+    gaugeChartOptions_arc,
+    gaugeChartOptions_arcAxis,
+    gaugeChartOptions_comparison,
+    gaugeChartOptions_primaryValueDisplayType,
+    gaugeChartOptions_primaryValueFontConfiguration,
+
+    -- * GaugeChartPrimaryValueConditionalFormatting
+    GaugeChartPrimaryValueConditionalFormatting (..),
+    newGaugeChartPrimaryValueConditionalFormatting,
+    gaugeChartPrimaryValueConditionalFormatting_icon,
+    gaugeChartPrimaryValueConditionalFormatting_textColor,
+
+    -- * GaugeChartVisual
+    GaugeChartVisual (..),
+    newGaugeChartVisual,
+    gaugeChartVisual_actions,
+    gaugeChartVisual_chartConfiguration,
+    gaugeChartVisual_conditionalFormatting,
+    gaugeChartVisual_subtitle,
+    gaugeChartVisual_title,
+    gaugeChartVisual_visualId,
+
+    -- * GeoSpatialColumnGroup
+    GeoSpatialColumnGroup (..),
+    newGeoSpatialColumnGroup,
+    geoSpatialColumnGroup_countryCode,
+    geoSpatialColumnGroup_name,
+    geoSpatialColumnGroup_columns,
+
+    -- * GeospatialCoordinateBounds
+    GeospatialCoordinateBounds (..),
+    newGeospatialCoordinateBounds,
+    geospatialCoordinateBounds_north,
+    geospatialCoordinateBounds_south,
+    geospatialCoordinateBounds_west,
+    geospatialCoordinateBounds_east,
+
+    -- * GeospatialMapAggregatedFieldWells
+    GeospatialMapAggregatedFieldWells (..),
+    newGeospatialMapAggregatedFieldWells,
+    geospatialMapAggregatedFieldWells_colors,
+    geospatialMapAggregatedFieldWells_geospatial,
+    geospatialMapAggregatedFieldWells_values,
+
+    -- * GeospatialMapConfiguration
+    GeospatialMapConfiguration (..),
+    newGeospatialMapConfiguration,
+    geospatialMapConfiguration_fieldWells,
+    geospatialMapConfiguration_legend,
+    geospatialMapConfiguration_mapStyleOptions,
+    geospatialMapConfiguration_pointStyleOptions,
+    geospatialMapConfiguration_tooltip,
+    geospatialMapConfiguration_visualPalette,
+    geospatialMapConfiguration_windowOptions,
+
+    -- * GeospatialMapFieldWells
+    GeospatialMapFieldWells (..),
+    newGeospatialMapFieldWells,
+    geospatialMapFieldWells_geospatialMapAggregatedFieldWells,
+
+    -- * GeospatialMapStyleOptions
+    GeospatialMapStyleOptions (..),
+    newGeospatialMapStyleOptions,
+    geospatialMapStyleOptions_baseMapStyle,
+
+    -- * GeospatialMapVisual
+    GeospatialMapVisual (..),
+    newGeospatialMapVisual,
+    geospatialMapVisual_actions,
+    geospatialMapVisual_chartConfiguration,
+    geospatialMapVisual_columnHierarchies,
+    geospatialMapVisual_subtitle,
+    geospatialMapVisual_title,
+    geospatialMapVisual_visualId,
+
+    -- * GeospatialPointStyleOptions
+    GeospatialPointStyleOptions (..),
+    newGeospatialPointStyleOptions,
+    geospatialPointStyleOptions_clusterMarkerConfiguration,
+    geospatialPointStyleOptions_selectedPointStyle,
+
+    -- * GeospatialWindowOptions
+    GeospatialWindowOptions (..),
+    newGeospatialWindowOptions,
+    geospatialWindowOptions_bounds,
+    geospatialWindowOptions_mapZoomMode,
+
+    -- * GlobalTableBorderOptions
+    GlobalTableBorderOptions (..),
+    newGlobalTableBorderOptions,
+    globalTableBorderOptions_sideSpecificBorder,
+    globalTableBorderOptions_uniformBorder,
+
+    -- * GradientColor
+    GradientColor (..),
+    newGradientColor,
+    gradientColor_stops,
+
+    -- * GradientStop
+    GradientStop (..),
+    newGradientStop,
+    gradientStop_color,
+    gradientStop_dataValue,
+    gradientStop_gradientOffset,
+
+    -- * GridLayoutCanvasSizeOptions
+    GridLayoutCanvasSizeOptions (..),
+    newGridLayoutCanvasSizeOptions,
+    gridLayoutCanvasSizeOptions_screenCanvasSizeOptions,
+
+    -- * GridLayoutConfiguration
+    GridLayoutConfiguration (..),
+    newGridLayoutConfiguration,
+    gridLayoutConfiguration_canvasSizeOptions,
+    gridLayoutConfiguration_elements,
+
+    -- * GridLayoutElement
+    GridLayoutElement (..),
+    newGridLayoutElement,
+    gridLayoutElement_columnIndex,
+    gridLayoutElement_rowIndex,
+    gridLayoutElement_elementId,
+    gridLayoutElement_elementType,
+    gridLayoutElement_columnSpan,
+    gridLayoutElement_rowSpan,
+
+    -- * GridLayoutScreenCanvasSizeOptions
+    GridLayoutScreenCanvasSizeOptions (..),
+    newGridLayoutScreenCanvasSizeOptions,
+    gridLayoutScreenCanvasSizeOptions_optimizedViewPortWidth,
+    gridLayoutScreenCanvasSizeOptions_resizeOption,
+
+    -- * Group
+    Group (..),
+    newGroup,
+    group_arn,
+    group_description,
+    group_groupName,
+    group_principalId,
+
+    -- * GroupMember
+    GroupMember (..),
+    newGroupMember,
+    groupMember_arn,
+    groupMember_memberName,
+
+    -- * GroupSearchFilter
+    GroupSearchFilter (..),
+    newGroupSearchFilter,
+    groupSearchFilter_operator,
+    groupSearchFilter_name,
+    groupSearchFilter_value,
+
+    -- * GrowthRateComputation
+    GrowthRateComputation (..),
+    newGrowthRateComputation,
+    growthRateComputation_name,
+    growthRateComputation_periodSize,
+    growthRateComputation_value,
+    growthRateComputation_computationId,
+    growthRateComputation_time,
+
+    -- * GutterStyle
+    GutterStyle (..),
+    newGutterStyle,
+    gutterStyle_show,
+
+    -- * HeaderFooterSectionConfiguration
+    HeaderFooterSectionConfiguration (..),
+    newHeaderFooterSectionConfiguration,
+    headerFooterSectionConfiguration_style,
+    headerFooterSectionConfiguration_sectionId,
+    headerFooterSectionConfiguration_layout,
+
+    -- * HeatMapAggregatedFieldWells
+    HeatMapAggregatedFieldWells (..),
+    newHeatMapAggregatedFieldWells,
+    heatMapAggregatedFieldWells_columns,
+    heatMapAggregatedFieldWells_rows,
+    heatMapAggregatedFieldWells_values,
+
+    -- * HeatMapConfiguration
+    HeatMapConfiguration (..),
+    newHeatMapConfiguration,
+    heatMapConfiguration_colorScale,
+    heatMapConfiguration_columnLabelOptions,
+    heatMapConfiguration_dataLabels,
+    heatMapConfiguration_fieldWells,
+    heatMapConfiguration_legend,
+    heatMapConfiguration_rowLabelOptions,
+    heatMapConfiguration_sortConfiguration,
+    heatMapConfiguration_tooltip,
+
+    -- * HeatMapFieldWells
+    HeatMapFieldWells (..),
+    newHeatMapFieldWells,
+    heatMapFieldWells_heatMapAggregatedFieldWells,
+
+    -- * HeatMapSortConfiguration
+    HeatMapSortConfiguration (..),
+    newHeatMapSortConfiguration,
+    heatMapSortConfiguration_heatMapColumnItemsLimitConfiguration,
+    heatMapSortConfiguration_heatMapColumnSort,
+    heatMapSortConfiguration_heatMapRowItemsLimitConfiguration,
+    heatMapSortConfiguration_heatMapRowSort,
+
+    -- * HeatMapVisual
+    HeatMapVisual (..),
+    newHeatMapVisual,
+    heatMapVisual_actions,
+    heatMapVisual_chartConfiguration,
+    heatMapVisual_columnHierarchies,
+    heatMapVisual_subtitle,
+    heatMapVisual_title,
+    heatMapVisual_visualId,
+
+    -- * HistogramAggregatedFieldWells
+    HistogramAggregatedFieldWells (..),
+    newHistogramAggregatedFieldWells,
+    histogramAggregatedFieldWells_values,
+
+    -- * HistogramBinOptions
+    HistogramBinOptions (..),
+    newHistogramBinOptions,
+    histogramBinOptions_binCount,
+    histogramBinOptions_binWidth,
+    histogramBinOptions_selectedBinType,
+    histogramBinOptions_startValue,
+
+    -- * HistogramConfiguration
+    HistogramConfiguration (..),
+    newHistogramConfiguration,
+    histogramConfiguration_binOptions,
+    histogramConfiguration_dataLabels,
+    histogramConfiguration_fieldWells,
+    histogramConfiguration_tooltip,
+    histogramConfiguration_visualPalette,
+    histogramConfiguration_xAxisDisplayOptions,
+    histogramConfiguration_xAxisLabelOptions,
+    histogramConfiguration_yAxisDisplayOptions,
+
+    -- * HistogramFieldWells
+    HistogramFieldWells (..),
+    newHistogramFieldWells,
+    histogramFieldWells_histogramAggregatedFieldWells,
+
+    -- * HistogramVisual
+    HistogramVisual (..),
+    newHistogramVisual,
+    histogramVisual_actions,
+    histogramVisual_chartConfiguration,
+    histogramVisual_subtitle,
+    histogramVisual_title,
+    histogramVisual_visualId,
+
+    -- * IAMPolicyAssignment
+    IAMPolicyAssignment (..),
+    newIAMPolicyAssignment,
+    iAMPolicyAssignment_assignmentId,
+    iAMPolicyAssignment_assignmentName,
+    iAMPolicyAssignment_assignmentStatus,
+    iAMPolicyAssignment_awsAccountId,
+    iAMPolicyAssignment_identities,
+    iAMPolicyAssignment_policyArn,
+
+    -- * IAMPolicyAssignmentSummary
+    IAMPolicyAssignmentSummary (..),
+    newIAMPolicyAssignmentSummary,
+    iAMPolicyAssignmentSummary_assignmentName,
+    iAMPolicyAssignmentSummary_assignmentStatus,
+
+    -- * Ingestion
+    Ingestion (..),
+    newIngestion,
+    ingestion_errorInfo,
+    ingestion_ingestionId,
+    ingestion_ingestionSizeInBytes,
+    ingestion_ingestionTimeInSeconds,
+    ingestion_queueInfo,
+    ingestion_requestSource,
+    ingestion_requestType,
+    ingestion_rowInfo,
+    ingestion_arn,
+    ingestion_ingestionStatus,
+    ingestion_createdTime,
+
+    -- * InputColumn
+    InputColumn (..),
+    newInputColumn,
+    inputColumn_name,
+    inputColumn_type,
+
+    -- * InsightConfiguration
+    InsightConfiguration (..),
+    newInsightConfiguration,
+    insightConfiguration_computations,
+    insightConfiguration_customNarrative,
+
+    -- * InsightVisual
+    InsightVisual (..),
+    newInsightVisual,
+    insightVisual_actions,
+    insightVisual_insightConfiguration,
+    insightVisual_subtitle,
+    insightVisual_title,
+    insightVisual_visualId,
+    insightVisual_dataSetIdentifier,
+
+    -- * IntegerDefaultValues
+    IntegerDefaultValues (..),
+    newIntegerDefaultValues,
+    integerDefaultValues_dynamicValue,
+    integerDefaultValues_staticValues,
+
+    -- * IntegerParameter
+    IntegerParameter (..),
+    newIntegerParameter,
+    integerParameter_name,
+    integerParameter_values,
+
+    -- * IntegerParameterDeclaration
+    IntegerParameterDeclaration (..),
+    newIntegerParameterDeclaration,
+    integerParameterDeclaration_defaultValues,
+    integerParameterDeclaration_valueWhenUnset,
+    integerParameterDeclaration_parameterValueType,
+    integerParameterDeclaration_name,
+
+    -- * IntegerValueWhenUnsetConfiguration
+    IntegerValueWhenUnsetConfiguration (..),
+    newIntegerValueWhenUnsetConfiguration,
+    integerValueWhenUnsetConfiguration_customValue,
+    integerValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- * ItemsLimitConfiguration
+    ItemsLimitConfiguration (..),
+    newItemsLimitConfiguration,
+    itemsLimitConfiguration_itemsLimit,
+    itemsLimitConfiguration_otherCategories,
+
+    -- * JiraParameters
+    JiraParameters (..),
+    newJiraParameters,
+    jiraParameters_siteBaseUrl,
+
+    -- * JoinInstruction
+    JoinInstruction (..),
+    newJoinInstruction,
+    joinInstruction_leftJoinKeyProperties,
+    joinInstruction_rightJoinKeyProperties,
+    joinInstruction_leftOperand,
+    joinInstruction_rightOperand,
+    joinInstruction_type,
+    joinInstruction_onClause,
+
+    -- * JoinKeyProperties
+    JoinKeyProperties (..),
+    newJoinKeyProperties,
+    joinKeyProperties_uniqueKey,
+
+    -- * KPIConditionalFormatting
+    KPIConditionalFormatting (..),
+    newKPIConditionalFormatting,
+    kPIConditionalFormatting_conditionalFormattingOptions,
+
+    -- * KPIConditionalFormattingOption
+    KPIConditionalFormattingOption (..),
+    newKPIConditionalFormattingOption,
+    kPIConditionalFormattingOption_primaryValue,
+    kPIConditionalFormattingOption_progressBar,
+
+    -- * KPIConfiguration
+    KPIConfiguration (..),
+    newKPIConfiguration,
+    kPIConfiguration_fieldWells,
+    kPIConfiguration_kPIOptions,
+    kPIConfiguration_sortConfiguration,
+
+    -- * KPIFieldWells
+    KPIFieldWells (..),
+    newKPIFieldWells,
+    kPIFieldWells_targetValues,
+    kPIFieldWells_trendGroups,
+    kPIFieldWells_values,
+
+    -- * KPIOptions
+    KPIOptions (..),
+    newKPIOptions,
+    kPIOptions_comparison,
+    kPIOptions_primaryValueDisplayType,
+    kPIOptions_primaryValueFontConfiguration,
+    kPIOptions_progressBar,
+    kPIOptions_secondaryValue,
+    kPIOptions_secondaryValueFontConfiguration,
+    kPIOptions_trendArrows,
+
+    -- * KPIPrimaryValueConditionalFormatting
+    KPIPrimaryValueConditionalFormatting (..),
+    newKPIPrimaryValueConditionalFormatting,
+    kPIPrimaryValueConditionalFormatting_icon,
+    kPIPrimaryValueConditionalFormatting_textColor,
+
+    -- * KPIProgressBarConditionalFormatting
+    KPIProgressBarConditionalFormatting (..),
+    newKPIProgressBarConditionalFormatting,
+    kPIProgressBarConditionalFormatting_foregroundColor,
+
+    -- * KPISortConfiguration
+    KPISortConfiguration (..),
+    newKPISortConfiguration,
+    kPISortConfiguration_trendGroupSort,
+
+    -- * KPIVisual
+    KPIVisual (..),
+    newKPIVisual,
+    kPIVisual_actions,
+    kPIVisual_chartConfiguration,
+    kPIVisual_columnHierarchies,
+    kPIVisual_conditionalFormatting,
+    kPIVisual_subtitle,
+    kPIVisual_title,
+    kPIVisual_visualId,
+
+    -- * LabelOptions
+    LabelOptions (..),
+    newLabelOptions,
+    labelOptions_customLabel,
+    labelOptions_fontConfiguration,
+    labelOptions_visibility,
+
+    -- * Layout
+    Layout (..),
+    newLayout,
+    layout_configuration,
+
+    -- * LayoutConfiguration
+    LayoutConfiguration (..),
+    newLayoutConfiguration,
+    layoutConfiguration_freeFormLayout,
+    layoutConfiguration_gridLayout,
+    layoutConfiguration_sectionBasedLayout,
+
+    -- * LegendOptions
+    LegendOptions (..),
+    newLegendOptions,
+    legendOptions_height,
+    legendOptions_position,
+    legendOptions_title,
+    legendOptions_visibility,
+    legendOptions_width,
+
+    -- * LineChartAggregatedFieldWells
+    LineChartAggregatedFieldWells (..),
+    newLineChartAggregatedFieldWells,
+    lineChartAggregatedFieldWells_category,
+    lineChartAggregatedFieldWells_colors,
+    lineChartAggregatedFieldWells_smallMultiples,
+    lineChartAggregatedFieldWells_values,
+
+    -- * LineChartConfiguration
+    LineChartConfiguration (..),
+    newLineChartConfiguration,
+    lineChartConfiguration_contributionAnalysisDefaults,
+    lineChartConfiguration_dataLabels,
+    lineChartConfiguration_defaultSeriesSettings,
+    lineChartConfiguration_fieldWells,
+    lineChartConfiguration_forecastConfigurations,
+    lineChartConfiguration_legend,
+    lineChartConfiguration_primaryYAxisDisplayOptions,
+    lineChartConfiguration_primaryYAxisLabelOptions,
+    lineChartConfiguration_referenceLines,
+    lineChartConfiguration_secondaryYAxisDisplayOptions,
+    lineChartConfiguration_secondaryYAxisLabelOptions,
+    lineChartConfiguration_series,
+    lineChartConfiguration_smallMultiplesOptions,
+    lineChartConfiguration_sortConfiguration,
+    lineChartConfiguration_tooltip,
+    lineChartConfiguration_type,
+    lineChartConfiguration_visualPalette,
+    lineChartConfiguration_xAxisDisplayOptions,
+    lineChartConfiguration_xAxisLabelOptions,
+
+    -- * LineChartDefaultSeriesSettings
+    LineChartDefaultSeriesSettings (..),
+    newLineChartDefaultSeriesSettings,
+    lineChartDefaultSeriesSettings_axisBinding,
+    lineChartDefaultSeriesSettings_lineStyleSettings,
+    lineChartDefaultSeriesSettings_markerStyleSettings,
+
+    -- * LineChartFieldWells
+    LineChartFieldWells (..),
+    newLineChartFieldWells,
+    lineChartFieldWells_lineChartAggregatedFieldWells,
+
+    -- * LineChartLineStyleSettings
+    LineChartLineStyleSettings (..),
+    newLineChartLineStyleSettings,
+    lineChartLineStyleSettings_lineInterpolation,
+    lineChartLineStyleSettings_lineStyle,
+    lineChartLineStyleSettings_lineVisibility,
+    lineChartLineStyleSettings_lineWidth,
+
+    -- * LineChartMarkerStyleSettings
+    LineChartMarkerStyleSettings (..),
+    newLineChartMarkerStyleSettings,
+    lineChartMarkerStyleSettings_markerColor,
+    lineChartMarkerStyleSettings_markerShape,
+    lineChartMarkerStyleSettings_markerSize,
+    lineChartMarkerStyleSettings_markerVisibility,
+
+    -- * LineChartSeriesSettings
+    LineChartSeriesSettings (..),
+    newLineChartSeriesSettings,
+    lineChartSeriesSettings_lineStyleSettings,
+    lineChartSeriesSettings_markerStyleSettings,
+
+    -- * LineChartSortConfiguration
+    LineChartSortConfiguration (..),
+    newLineChartSortConfiguration,
+    lineChartSortConfiguration_categoryItemsLimitConfiguration,
+    lineChartSortConfiguration_categorySort,
+    lineChartSortConfiguration_colorItemsLimitConfiguration,
+    lineChartSortConfiguration_smallMultiplesLimitConfiguration,
+    lineChartSortConfiguration_smallMultiplesSort,
+
+    -- * LineChartVisual
+    LineChartVisual (..),
+    newLineChartVisual,
+    lineChartVisual_actions,
+    lineChartVisual_chartConfiguration,
+    lineChartVisual_columnHierarchies,
+    lineChartVisual_subtitle,
+    lineChartVisual_title,
+    lineChartVisual_visualId,
+
+    -- * LineSeriesAxisDisplayOptions
+    LineSeriesAxisDisplayOptions (..),
+    newLineSeriesAxisDisplayOptions,
+    lineSeriesAxisDisplayOptions_axisOptions,
+    lineSeriesAxisDisplayOptions_missingDataConfigurations,
+
+    -- * LinkSharingConfiguration
+    LinkSharingConfiguration (..),
+    newLinkSharingConfiguration,
+    linkSharingConfiguration_permissions,
+
+    -- * ListControlDisplayOptions
+    ListControlDisplayOptions (..),
+    newListControlDisplayOptions,
+    listControlDisplayOptions_searchOptions,
+    listControlDisplayOptions_selectAllOptions,
+    listControlDisplayOptions_titleOptions,
+
+    -- * ListControlSearchOptions
+    ListControlSearchOptions (..),
+    newListControlSearchOptions,
+    listControlSearchOptions_visibility,
+
+    -- * ListControlSelectAllOptions
+    ListControlSelectAllOptions (..),
+    newListControlSelectAllOptions,
+    listControlSelectAllOptions_visibility,
+
+    -- * LoadingAnimation
+    LoadingAnimation (..),
+    newLoadingAnimation,
+    loadingAnimation_visibility,
+
+    -- * LocalNavigationConfiguration
+    LocalNavigationConfiguration (..),
+    newLocalNavigationConfiguration,
+    localNavigationConfiguration_targetSheetId,
+
+    -- * LogicalTable
+    LogicalTable (..),
+    newLogicalTable,
+    logicalTable_dataTransforms,
+    logicalTable_alias,
+    logicalTable_source,
+
+    -- * LogicalTableSource
+    LogicalTableSource (..),
+    newLogicalTableSource,
+    logicalTableSource_dataSetArn,
+    logicalTableSource_joinInstruction,
+    logicalTableSource_physicalTableId,
+
+    -- * LongFormatText
+    LongFormatText (..),
+    newLongFormatText,
+    longFormatText_plainText,
+    longFormatText_richText,
+
+    -- * ManifestFileLocation
+    ManifestFileLocation (..),
+    newManifestFileLocation,
+    manifestFileLocation_bucket,
+    manifestFileLocation_key,
+
+    -- * MarginStyle
+    MarginStyle (..),
+    newMarginStyle,
+    marginStyle_show,
+
+    -- * MariaDbParameters
+    MariaDbParameters (..),
+    newMariaDbParameters,
+    mariaDbParameters_host,
+    mariaDbParameters_port,
+    mariaDbParameters_database,
+
+    -- * MaximumLabelType
+    MaximumLabelType (..),
+    newMaximumLabelType,
+    maximumLabelType_visibility,
+
+    -- * MaximumMinimumComputation
+    MaximumMinimumComputation (..),
+    newMaximumMinimumComputation,
+    maximumMinimumComputation_name,
+    maximumMinimumComputation_value,
+    maximumMinimumComputation_computationId,
+    maximumMinimumComputation_time,
+    maximumMinimumComputation_type,
+
+    -- * MeasureField
+    MeasureField (..),
+    newMeasureField,
+    measureField_calculatedMeasureField,
+    measureField_categoricalMeasureField,
+    measureField_dateMeasureField,
+    measureField_numericalMeasureField,
+
+    -- * MemberIdArnPair
+    MemberIdArnPair (..),
+    newMemberIdArnPair,
+    memberIdArnPair_memberArn,
+    memberIdArnPair_memberId,
+
+    -- * MetricComparisonComputation
+    MetricComparisonComputation (..),
+    newMetricComparisonComputation,
+    metricComparisonComputation_name,
+    metricComparisonComputation_computationId,
+    metricComparisonComputation_time,
+    metricComparisonComputation_fromValue,
+    metricComparisonComputation_targetValue,
+
+    -- * MinimumLabelType
+    MinimumLabelType (..),
+    newMinimumLabelType,
+    minimumLabelType_visibility,
+
+    -- * MissingDataConfiguration
+    MissingDataConfiguration (..),
+    newMissingDataConfiguration,
+    missingDataConfiguration_treatmentOption,
+
+    -- * MySqlParameters
+    MySqlParameters (..),
+    newMySqlParameters,
+    mySqlParameters_host,
+    mySqlParameters_port,
+    mySqlParameters_database,
+
+    -- * NamespaceError
+    NamespaceError (..),
+    newNamespaceError,
+    namespaceError_message,
+    namespaceError_type,
+
+    -- * NamespaceInfoV2
+    NamespaceInfoV2 (..),
+    newNamespaceInfoV2,
+    namespaceInfoV2_arn,
+    namespaceInfoV2_capacityRegion,
+    namespaceInfoV2_creationStatus,
+    namespaceInfoV2_identityStore,
+    namespaceInfoV2_name,
+    namespaceInfoV2_namespaceError,
+
+    -- * NegativeValueConfiguration
+    NegativeValueConfiguration (..),
+    newNegativeValueConfiguration,
+    negativeValueConfiguration_displayMode,
+
+    -- * NullValueFormatConfiguration
+    NullValueFormatConfiguration (..),
+    newNullValueFormatConfiguration,
+    nullValueFormatConfiguration_nullString,
+
+    -- * NumberDisplayFormatConfiguration
+    NumberDisplayFormatConfiguration (..),
+    newNumberDisplayFormatConfiguration,
+    numberDisplayFormatConfiguration_decimalPlacesConfiguration,
+    numberDisplayFormatConfiguration_negativeValueConfiguration,
+    numberDisplayFormatConfiguration_nullValueFormatConfiguration,
+    numberDisplayFormatConfiguration_numberScale,
+    numberDisplayFormatConfiguration_prefix,
+    numberDisplayFormatConfiguration_separatorConfiguration,
+    numberDisplayFormatConfiguration_suffix,
+
+    -- * NumberFormatConfiguration
+    NumberFormatConfiguration (..),
+    newNumberFormatConfiguration,
+    numberFormatConfiguration_formatConfiguration,
+
+    -- * NumericAxisOptions
+    NumericAxisOptions (..),
+    newNumericAxisOptions,
+    numericAxisOptions_range,
+    numericAxisOptions_scale,
+
+    -- * NumericEqualityDrillDownFilter
+    NumericEqualityDrillDownFilter (..),
+    newNumericEqualityDrillDownFilter,
+    numericEqualityDrillDownFilter_column,
+    numericEqualityDrillDownFilter_value,
+
+    -- * NumericEqualityFilter
+    NumericEqualityFilter (..),
+    newNumericEqualityFilter,
+    numericEqualityFilter_aggregationFunction,
+    numericEqualityFilter_parameterName,
+    numericEqualityFilter_selectAllOptions,
+    numericEqualityFilter_value,
+    numericEqualityFilter_filterId,
+    numericEqualityFilter_column,
+    numericEqualityFilter_matchOperator,
+    numericEqualityFilter_nullOption,
+
+    -- * NumericFormatConfiguration
+    NumericFormatConfiguration (..),
+    newNumericFormatConfiguration,
+    numericFormatConfiguration_currencyDisplayFormatConfiguration,
+    numericFormatConfiguration_numberDisplayFormatConfiguration,
+    numericFormatConfiguration_percentageDisplayFormatConfiguration,
+
+    -- * NumericRangeFilter
+    NumericRangeFilter (..),
+    newNumericRangeFilter,
+    numericRangeFilter_aggregationFunction,
+    numericRangeFilter_includeMaximum,
+    numericRangeFilter_includeMinimum,
+    numericRangeFilter_rangeMaximum,
+    numericRangeFilter_rangeMinimum,
+    numericRangeFilter_selectAllOptions,
+    numericRangeFilter_filterId,
+    numericRangeFilter_column,
+    numericRangeFilter_nullOption,
+
+    -- * NumericRangeFilterValue
+    NumericRangeFilterValue (..),
+    newNumericRangeFilterValue,
+    numericRangeFilterValue_parameter,
+    numericRangeFilterValue_staticValue,
+
+    -- * NumericSeparatorConfiguration
+    NumericSeparatorConfiguration (..),
+    newNumericSeparatorConfiguration,
+    numericSeparatorConfiguration_decimalSeparator,
+    numericSeparatorConfiguration_thousandsSeparator,
+
+    -- * NumericalAggregationFunction
+    NumericalAggregationFunction (..),
+    newNumericalAggregationFunction,
+    numericalAggregationFunction_percentileAggregation,
+    numericalAggregationFunction_simpleNumericalAggregation,
+
+    -- * NumericalDimensionField
+    NumericalDimensionField (..),
+    newNumericalDimensionField,
+    numericalDimensionField_formatConfiguration,
+    numericalDimensionField_hierarchyId,
+    numericalDimensionField_fieldId,
+    numericalDimensionField_column,
+
+    -- * NumericalMeasureField
+    NumericalMeasureField (..),
+    newNumericalMeasureField,
+    numericalMeasureField_aggregationFunction,
+    numericalMeasureField_formatConfiguration,
+    numericalMeasureField_fieldId,
+    numericalMeasureField_column,
+
+    -- * OracleParameters
+    OracleParameters (..),
+    newOracleParameters,
+    oracleParameters_host,
+    oracleParameters_port,
+    oracleParameters_database,
+
+    -- * OutputColumn
+    OutputColumn (..),
+    newOutputColumn,
+    outputColumn_description,
+    outputColumn_name,
+    outputColumn_type,
+
+    -- * PaginationConfiguration
+    PaginationConfiguration (..),
+    newPaginationConfiguration,
+    paginationConfiguration_pageSize,
+    paginationConfiguration_pageNumber,
+
+    -- * PanelConfiguration
+    PanelConfiguration (..),
+    newPanelConfiguration,
+    panelConfiguration_backgroundColor,
+    panelConfiguration_backgroundVisibility,
+    panelConfiguration_borderColor,
+    panelConfiguration_borderStyle,
+    panelConfiguration_borderThickness,
+    panelConfiguration_borderVisibility,
+    panelConfiguration_gutterSpacing,
+    panelConfiguration_gutterVisibility,
+    panelConfiguration_title,
+
+    -- * PanelTitleOptions
+    PanelTitleOptions (..),
+    newPanelTitleOptions,
+    panelTitleOptions_fontConfiguration,
+    panelTitleOptions_horizontalTextAlignment,
+    panelTitleOptions_visibility,
+
+    -- * ParameterControl
+    ParameterControl (..),
+    newParameterControl,
+    parameterControl_dateTimePicker,
+    parameterControl_dropdown,
+    parameterControl_list,
+    parameterControl_slider,
+    parameterControl_textArea,
+    parameterControl_textField,
+
+    -- * ParameterDateTimePickerControl
+    ParameterDateTimePickerControl (..),
+    newParameterDateTimePickerControl,
+    parameterDateTimePickerControl_displayOptions,
+    parameterDateTimePickerControl_parameterControlId,
+    parameterDateTimePickerControl_title,
+    parameterDateTimePickerControl_sourceParameterName,
+
+    -- * ParameterDeclaration
+    ParameterDeclaration (..),
+    newParameterDeclaration,
+    parameterDeclaration_dateTimeParameterDeclaration,
+    parameterDeclaration_decimalParameterDeclaration,
+    parameterDeclaration_integerParameterDeclaration,
+    parameterDeclaration_stringParameterDeclaration,
+
+    -- * ParameterDropDownControl
+    ParameterDropDownControl (..),
+    newParameterDropDownControl,
+    parameterDropDownControl_cascadingControlConfiguration,
+    parameterDropDownControl_displayOptions,
+    parameterDropDownControl_selectableValues,
+    parameterDropDownControl_type,
+    parameterDropDownControl_parameterControlId,
+    parameterDropDownControl_title,
+    parameterDropDownControl_sourceParameterName,
+
+    -- * ParameterListControl
+    ParameterListControl (..),
+    newParameterListControl,
+    parameterListControl_cascadingControlConfiguration,
+    parameterListControl_displayOptions,
+    parameterListControl_selectableValues,
+    parameterListControl_type,
+    parameterListControl_parameterControlId,
+    parameterListControl_title,
+    parameterListControl_sourceParameterName,
+
+    -- * ParameterSelectableValues
+    ParameterSelectableValues (..),
+    newParameterSelectableValues,
+    parameterSelectableValues_linkToDataSetColumn,
+    parameterSelectableValues_values,
+
+    -- * ParameterSliderControl
+    ParameterSliderControl (..),
+    newParameterSliderControl,
+    parameterSliderControl_displayOptions,
+    parameterSliderControl_parameterControlId,
+    parameterSliderControl_title,
+    parameterSliderControl_sourceParameterName,
+    parameterSliderControl_maximumValue,
+    parameterSliderControl_minimumValue,
+    parameterSliderControl_stepSize,
+
+    -- * ParameterTextAreaControl
+    ParameterTextAreaControl (..),
+    newParameterTextAreaControl,
+    parameterTextAreaControl_delimiter,
+    parameterTextAreaControl_displayOptions,
+    parameterTextAreaControl_parameterControlId,
+    parameterTextAreaControl_title,
+    parameterTextAreaControl_sourceParameterName,
+
+    -- * ParameterTextFieldControl
+    ParameterTextFieldControl (..),
+    newParameterTextFieldControl,
+    parameterTextFieldControl_displayOptions,
+    parameterTextFieldControl_parameterControlId,
+    parameterTextFieldControl_title,
+    parameterTextFieldControl_sourceParameterName,
+
+    -- * Parameters
+    Parameters (..),
+    newParameters,
+    parameters_dateTimeParameters,
+    parameters_decimalParameters,
+    parameters_integerParameters,
+    parameters_stringParameters,
+
+    -- * PercentVisibleRange
+    PercentVisibleRange (..),
+    newPercentVisibleRange,
+    percentVisibleRange_from,
+    percentVisibleRange_to,
+
+    -- * PercentageDisplayFormatConfiguration
+    PercentageDisplayFormatConfiguration (..),
+    newPercentageDisplayFormatConfiguration,
+    percentageDisplayFormatConfiguration_decimalPlacesConfiguration,
+    percentageDisplayFormatConfiguration_negativeValueConfiguration,
+    percentageDisplayFormatConfiguration_nullValueFormatConfiguration,
+    percentageDisplayFormatConfiguration_prefix,
+    percentageDisplayFormatConfiguration_separatorConfiguration,
+    percentageDisplayFormatConfiguration_suffix,
+
+    -- * PercentileAggregation
+    PercentileAggregation (..),
+    newPercentileAggregation,
+    percentileAggregation_percentileValue,
+
+    -- * PeriodOverPeriodComputation
+    PeriodOverPeriodComputation (..),
+    newPeriodOverPeriodComputation,
+    periodOverPeriodComputation_name,
+    periodOverPeriodComputation_value,
+    periodOverPeriodComputation_computationId,
+    periodOverPeriodComputation_time,
+
+    -- * PeriodToDateComputation
+    PeriodToDateComputation (..),
+    newPeriodToDateComputation,
+    periodToDateComputation_name,
+    periodToDateComputation_periodTimeGranularity,
+    periodToDateComputation_value,
+    periodToDateComputation_computationId,
+    periodToDateComputation_time,
+
+    -- * PhysicalTable
+    PhysicalTable (..),
+    newPhysicalTable,
+    physicalTable_customSql,
+    physicalTable_relationalTable,
+    physicalTable_s3Source,
+
+    -- * PieChartAggregatedFieldWells
+    PieChartAggregatedFieldWells (..),
+    newPieChartAggregatedFieldWells,
+    pieChartAggregatedFieldWells_category,
+    pieChartAggregatedFieldWells_smallMultiples,
+    pieChartAggregatedFieldWells_values,
+
+    -- * PieChartConfiguration
+    PieChartConfiguration (..),
+    newPieChartConfiguration,
+    pieChartConfiguration_categoryLabelOptions,
+    pieChartConfiguration_contributionAnalysisDefaults,
+    pieChartConfiguration_dataLabels,
+    pieChartConfiguration_donutOptions,
+    pieChartConfiguration_fieldWells,
+    pieChartConfiguration_legend,
+    pieChartConfiguration_smallMultiplesOptions,
+    pieChartConfiguration_sortConfiguration,
+    pieChartConfiguration_tooltip,
+    pieChartConfiguration_valueLabelOptions,
+    pieChartConfiguration_visualPalette,
+
+    -- * PieChartFieldWells
+    PieChartFieldWells (..),
+    newPieChartFieldWells,
+    pieChartFieldWells_pieChartAggregatedFieldWells,
+
+    -- * PieChartSortConfiguration
+    PieChartSortConfiguration (..),
+    newPieChartSortConfiguration,
+    pieChartSortConfiguration_categoryItemsLimit,
+    pieChartSortConfiguration_categorySort,
+    pieChartSortConfiguration_smallMultiplesLimitConfiguration,
+    pieChartSortConfiguration_smallMultiplesSort,
+
+    -- * PieChartVisual
+    PieChartVisual (..),
+    newPieChartVisual,
+    pieChartVisual_actions,
+    pieChartVisual_chartConfiguration,
+    pieChartVisual_columnHierarchies,
+    pieChartVisual_subtitle,
+    pieChartVisual_title,
+    pieChartVisual_visualId,
+
+    -- * PivotFieldSortOptions
+    PivotFieldSortOptions (..),
+    newPivotFieldSortOptions,
+    pivotFieldSortOptions_fieldId,
+    pivotFieldSortOptions_sortBy,
+
+    -- * PivotTableAggregatedFieldWells
+    PivotTableAggregatedFieldWells (..),
+    newPivotTableAggregatedFieldWells,
+    pivotTableAggregatedFieldWells_columns,
+    pivotTableAggregatedFieldWells_rows,
+    pivotTableAggregatedFieldWells_values,
+
+    -- * PivotTableCellConditionalFormatting
+    PivotTableCellConditionalFormatting (..),
+    newPivotTableCellConditionalFormatting,
+    pivotTableCellConditionalFormatting_scope,
+    pivotTableCellConditionalFormatting_textFormat,
+    pivotTableCellConditionalFormatting_fieldId,
+
+    -- * PivotTableConditionalFormatting
+    PivotTableConditionalFormatting (..),
+    newPivotTableConditionalFormatting,
+    pivotTableConditionalFormatting_conditionalFormattingOptions,
+
+    -- * PivotTableConditionalFormattingOption
+    PivotTableConditionalFormattingOption (..),
+    newPivotTableConditionalFormattingOption,
+    pivotTableConditionalFormattingOption_cell,
+
+    -- * PivotTableConditionalFormattingScope
+    PivotTableConditionalFormattingScope (..),
+    newPivotTableConditionalFormattingScope,
+    pivotTableConditionalFormattingScope_role,
+
+    -- * PivotTableConfiguration
+    PivotTableConfiguration (..),
+    newPivotTableConfiguration,
+    pivotTableConfiguration_fieldOptions,
+    pivotTableConfiguration_fieldWells,
+    pivotTableConfiguration_paginatedReportOptions,
+    pivotTableConfiguration_sortConfiguration,
+    pivotTableConfiguration_tableOptions,
+    pivotTableConfiguration_totalOptions,
+
+    -- * PivotTableDataPathOption
+    PivotTableDataPathOption (..),
+    newPivotTableDataPathOption,
+    pivotTableDataPathOption_width,
+    pivotTableDataPathOption_dataPathList,
+
+    -- * PivotTableFieldOption
+    PivotTableFieldOption (..),
+    newPivotTableFieldOption,
+    pivotTableFieldOption_customLabel,
+    pivotTableFieldOption_visibility,
+    pivotTableFieldOption_fieldId,
+
+    -- * PivotTableFieldOptions
+    PivotTableFieldOptions (..),
+    newPivotTableFieldOptions,
+    pivotTableFieldOptions_dataPathOptions,
+    pivotTableFieldOptions_selectedFieldOptions,
+
+    -- * PivotTableFieldSubtotalOptions
+    PivotTableFieldSubtotalOptions (..),
+    newPivotTableFieldSubtotalOptions,
+    pivotTableFieldSubtotalOptions_fieldId,
+
+    -- * PivotTableFieldWells
+    PivotTableFieldWells (..),
+    newPivotTableFieldWells,
+    pivotTableFieldWells_pivotTableAggregatedFieldWells,
+
+    -- * PivotTableOptions
+    PivotTableOptions (..),
+    newPivotTableOptions,
+    pivotTableOptions_cellStyle,
+    pivotTableOptions_columnHeaderStyle,
+    pivotTableOptions_columnNamesVisibility,
+    pivotTableOptions_metricPlacement,
+    pivotTableOptions_rowAlternateColorOptions,
+    pivotTableOptions_rowFieldNamesStyle,
+    pivotTableOptions_rowHeaderStyle,
+    pivotTableOptions_singleMetricVisibility,
+    pivotTableOptions_toggleButtonsVisibility,
+
+    -- * PivotTablePaginatedReportOptions
+    PivotTablePaginatedReportOptions (..),
+    newPivotTablePaginatedReportOptions,
+    pivotTablePaginatedReportOptions_overflowColumnHeaderVisibility,
+    pivotTablePaginatedReportOptions_verticalOverflowVisibility,
+
+    -- * PivotTableSortBy
+    PivotTableSortBy (..),
+    newPivotTableSortBy,
+    pivotTableSortBy_column,
+    pivotTableSortBy_dataPath,
+    pivotTableSortBy_field,
+
+    -- * PivotTableSortConfiguration
+    PivotTableSortConfiguration (..),
+    newPivotTableSortConfiguration,
+    pivotTableSortConfiguration_fieldSortOptions,
+
+    -- * PivotTableTotalOptions
+    PivotTableTotalOptions (..),
+    newPivotTableTotalOptions,
+    pivotTableTotalOptions_columnSubtotalOptions,
+    pivotTableTotalOptions_columnTotalOptions,
+    pivotTableTotalOptions_rowSubtotalOptions,
+    pivotTableTotalOptions_rowTotalOptions,
+
+    -- * PivotTableVisual
+    PivotTableVisual (..),
+    newPivotTableVisual,
+    pivotTableVisual_actions,
+    pivotTableVisual_chartConfiguration,
+    pivotTableVisual_conditionalFormatting,
+    pivotTableVisual_subtitle,
+    pivotTableVisual_title,
+    pivotTableVisual_visualId,
+
+    -- * PivotTotalOptions
+    PivotTotalOptions (..),
+    newPivotTotalOptions,
+    pivotTotalOptions_customLabel,
+    pivotTotalOptions_metricHeaderCellStyle,
+    pivotTotalOptions_placement,
+    pivotTotalOptions_scrollStatus,
+    pivotTotalOptions_totalCellStyle,
+    pivotTotalOptions_totalsVisibility,
+    pivotTotalOptions_valueCellStyle,
+
+    -- * PostgreSqlParameters
+    PostgreSqlParameters (..),
+    newPostgreSqlParameters,
+    postgreSqlParameters_host,
+    postgreSqlParameters_port,
+    postgreSqlParameters_database,
+
+    -- * PredefinedHierarchy
+    PredefinedHierarchy (..),
+    newPredefinedHierarchy,
+    predefinedHierarchy_drillDownFilters,
+    predefinedHierarchy_hierarchyId,
+    predefinedHierarchy_columns,
+
+    -- * PrestoParameters
+    PrestoParameters (..),
+    newPrestoParameters,
+    prestoParameters_host,
+    prestoParameters_port,
+    prestoParameters_catalog,
+
+    -- * ProgressBarOptions
+    ProgressBarOptions (..),
+    newProgressBarOptions,
+    progressBarOptions_visibility,
+
+    -- * ProjectOperation
+    ProjectOperation (..),
+    newProjectOperation,
+    projectOperation_projectedColumns,
+
+    -- * QueueInfo
+    QueueInfo (..),
+    newQueueInfo,
+    queueInfo_waitingOnIngestion,
+    queueInfo_queuedIngestion,
+
+    -- * RangeEndsLabelType
+    RangeEndsLabelType (..),
+    newRangeEndsLabelType,
+    rangeEndsLabelType_visibility,
+
+    -- * RdsParameters
+    RdsParameters (..),
+    newRdsParameters,
+    rdsParameters_instanceId,
+    rdsParameters_database,
+
+    -- * RedshiftParameters
+    RedshiftParameters (..),
+    newRedshiftParameters,
+    redshiftParameters_clusterId,
+    redshiftParameters_host,
+    redshiftParameters_port,
+    redshiftParameters_database,
+
+    -- * ReferenceLine
+    ReferenceLine (..),
+    newReferenceLine,
+    referenceLine_labelConfiguration,
+    referenceLine_status,
+    referenceLine_styleConfiguration,
+    referenceLine_dataConfiguration,
+
+    -- * ReferenceLineCustomLabelConfiguration
+    ReferenceLineCustomLabelConfiguration (..),
+    newReferenceLineCustomLabelConfiguration,
+    referenceLineCustomLabelConfiguration_customLabel,
+
+    -- * ReferenceLineDataConfiguration
+    ReferenceLineDataConfiguration (..),
+    newReferenceLineDataConfiguration,
+    referenceLineDataConfiguration_axisBinding,
+    referenceLineDataConfiguration_dynamicConfiguration,
+    referenceLineDataConfiguration_staticConfiguration,
+
+    -- * ReferenceLineDynamicDataConfiguration
+    ReferenceLineDynamicDataConfiguration (..),
+    newReferenceLineDynamicDataConfiguration,
+    referenceLineDynamicDataConfiguration_column,
+    referenceLineDynamicDataConfiguration_measureAggregationFunction,
+    referenceLineDynamicDataConfiguration_calculation,
+
+    -- * ReferenceLineLabelConfiguration
+    ReferenceLineLabelConfiguration (..),
+    newReferenceLineLabelConfiguration,
+    referenceLineLabelConfiguration_customLabelConfiguration,
+    referenceLineLabelConfiguration_fontColor,
+    referenceLineLabelConfiguration_fontConfiguration,
+    referenceLineLabelConfiguration_horizontalPosition,
+    referenceLineLabelConfiguration_valueLabelConfiguration,
+    referenceLineLabelConfiguration_verticalPosition,
+
+    -- * ReferenceLineStaticDataConfiguration
+    ReferenceLineStaticDataConfiguration (..),
+    newReferenceLineStaticDataConfiguration,
+    referenceLineStaticDataConfiguration_value,
+
+    -- * ReferenceLineStyleConfiguration
+    ReferenceLineStyleConfiguration (..),
+    newReferenceLineStyleConfiguration,
+    referenceLineStyleConfiguration_color,
+    referenceLineStyleConfiguration_pattern,
+
+    -- * ReferenceLineValueLabelConfiguration
+    ReferenceLineValueLabelConfiguration (..),
+    newReferenceLineValueLabelConfiguration,
+    referenceLineValueLabelConfiguration_formatConfiguration,
+    referenceLineValueLabelConfiguration_relativePosition,
+
+    -- * RegisteredUserDashboardEmbeddingConfiguration
+    RegisteredUserDashboardEmbeddingConfiguration (..),
+    newRegisteredUserDashboardEmbeddingConfiguration,
+    registeredUserDashboardEmbeddingConfiguration_initialDashboardId,
+
+    -- * RegisteredUserDashboardVisualEmbeddingConfiguration
+    RegisteredUserDashboardVisualEmbeddingConfiguration (..),
+    newRegisteredUserDashboardVisualEmbeddingConfiguration,
+    registeredUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId,
+
+    -- * RegisteredUserEmbeddingExperienceConfiguration
+    RegisteredUserEmbeddingExperienceConfiguration (..),
+    newRegisteredUserEmbeddingExperienceConfiguration,
+    registeredUserEmbeddingExperienceConfiguration_dashboard,
+    registeredUserEmbeddingExperienceConfiguration_dashboardVisual,
+    registeredUserEmbeddingExperienceConfiguration_qSearchBar,
+    registeredUserEmbeddingExperienceConfiguration_quickSightConsole,
+
+    -- * RegisteredUserQSearchBarEmbeddingConfiguration
+    RegisteredUserQSearchBarEmbeddingConfiguration (..),
+    newRegisteredUserQSearchBarEmbeddingConfiguration,
+    registeredUserQSearchBarEmbeddingConfiguration_initialTopicId,
+
+    -- * RegisteredUserQuickSightConsoleEmbeddingConfiguration
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration (..),
+    newRegisteredUserQuickSightConsoleEmbeddingConfiguration,
+    registeredUserQuickSightConsoleEmbeddingConfiguration_initialPath,
+
+    -- * RelationalTable
+    RelationalTable (..),
+    newRelationalTable,
+    relationalTable_catalog,
+    relationalTable_schema,
+    relationalTable_dataSourceArn,
+    relationalTable_name,
+    relationalTable_inputColumns,
+
+    -- * RelativeDateTimeControlDisplayOptions
+    RelativeDateTimeControlDisplayOptions (..),
+    newRelativeDateTimeControlDisplayOptions,
+    relativeDateTimeControlDisplayOptions_dateTimeFormat,
+    relativeDateTimeControlDisplayOptions_titleOptions,
+
+    -- * RelativeDatesFilter
+    RelativeDatesFilter (..),
+    newRelativeDatesFilter,
+    relativeDatesFilter_excludePeriodConfiguration,
+    relativeDatesFilter_minimumGranularity,
+    relativeDatesFilter_parameterName,
+    relativeDatesFilter_relativeDateValue,
+    relativeDatesFilter_filterId,
+    relativeDatesFilter_column,
+    relativeDatesFilter_anchorDateConfiguration,
+    relativeDatesFilter_timeGranularity,
+    relativeDatesFilter_relativeDateType,
+    relativeDatesFilter_nullOption,
+
+    -- * RenameColumnOperation
+    RenameColumnOperation (..),
+    newRenameColumnOperation,
+    renameColumnOperation_columnName,
+    renameColumnOperation_newColumnName,
+
+    -- * ResourcePermission
+    ResourcePermission (..),
+    newResourcePermission,
+    resourcePermission_principal,
+    resourcePermission_actions,
+
+    -- * RollingDateConfiguration
+    RollingDateConfiguration (..),
+    newRollingDateConfiguration,
+    rollingDateConfiguration_dataSetIdentifier,
+    rollingDateConfiguration_expression,
+
+    -- * RowAlternateColorOptions
+    RowAlternateColorOptions (..),
+    newRowAlternateColorOptions,
+    rowAlternateColorOptions_rowAlternateColors,
+    rowAlternateColorOptions_status,
+
+    -- * RowInfo
+    RowInfo (..),
+    newRowInfo,
+    rowInfo_rowsDropped,
+    rowInfo_rowsIngested,
+    rowInfo_totalRowsInDataset,
+
+    -- * RowLevelPermissionDataSet
+    RowLevelPermissionDataSet (..),
+    newRowLevelPermissionDataSet,
+    rowLevelPermissionDataSet_formatVersion,
+    rowLevelPermissionDataSet_namespace,
+    rowLevelPermissionDataSet_status,
+    rowLevelPermissionDataSet_arn,
+    rowLevelPermissionDataSet_permissionPolicy,
+
+    -- * RowLevelPermissionTagConfiguration
+    RowLevelPermissionTagConfiguration (..),
+    newRowLevelPermissionTagConfiguration,
+    rowLevelPermissionTagConfiguration_status,
+    rowLevelPermissionTagConfiguration_tagRules,
+
+    -- * RowLevelPermissionTagRule
+    RowLevelPermissionTagRule (..),
+    newRowLevelPermissionTagRule,
+    rowLevelPermissionTagRule_matchAllValue,
+    rowLevelPermissionTagRule_tagMultiValueDelimiter,
+    rowLevelPermissionTagRule_tagKey,
+    rowLevelPermissionTagRule_columnName,
+
+    -- * S3Parameters
+    S3Parameters (..),
+    newS3Parameters,
+    s3Parameters_manifestFileLocation,
+
+    -- * S3Source
+    S3Source (..),
+    newS3Source,
+    s3Source_uploadSettings,
+    s3Source_dataSourceArn,
+    s3Source_inputColumns,
+
+    -- * SameSheetTargetVisualConfiguration
+    SameSheetTargetVisualConfiguration (..),
+    newSameSheetTargetVisualConfiguration,
+    sameSheetTargetVisualConfiguration_targetVisualOptions,
+    sameSheetTargetVisualConfiguration_targetVisuals,
+
+    -- * SankeyDiagramAggregatedFieldWells
+    SankeyDiagramAggregatedFieldWells (..),
+    newSankeyDiagramAggregatedFieldWells,
+    sankeyDiagramAggregatedFieldWells_destination,
+    sankeyDiagramAggregatedFieldWells_source,
+    sankeyDiagramAggregatedFieldWells_weight,
+
+    -- * SankeyDiagramChartConfiguration
+    SankeyDiagramChartConfiguration (..),
+    newSankeyDiagramChartConfiguration,
+    sankeyDiagramChartConfiguration_dataLabels,
+    sankeyDiagramChartConfiguration_fieldWells,
+    sankeyDiagramChartConfiguration_sortConfiguration,
+
+    -- * SankeyDiagramFieldWells
+    SankeyDiagramFieldWells (..),
+    newSankeyDiagramFieldWells,
+    sankeyDiagramFieldWells_sankeyDiagramAggregatedFieldWells,
+
+    -- * SankeyDiagramSortConfiguration
+    SankeyDiagramSortConfiguration (..),
+    newSankeyDiagramSortConfiguration,
+    sankeyDiagramSortConfiguration_destinationItemsLimit,
+    sankeyDiagramSortConfiguration_sourceItemsLimit,
+    sankeyDiagramSortConfiguration_weightSort,
+
+    -- * SankeyDiagramVisual
+    SankeyDiagramVisual (..),
+    newSankeyDiagramVisual,
+    sankeyDiagramVisual_actions,
+    sankeyDiagramVisual_chartConfiguration,
+    sankeyDiagramVisual_subtitle,
+    sankeyDiagramVisual_title,
+    sankeyDiagramVisual_visualId,
+
+    -- * ScatterPlotCategoricallyAggregatedFieldWells
+    ScatterPlotCategoricallyAggregatedFieldWells (..),
+    newScatterPlotCategoricallyAggregatedFieldWells,
+    scatterPlotCategoricallyAggregatedFieldWells_category,
+    scatterPlotCategoricallyAggregatedFieldWells_size,
+    scatterPlotCategoricallyAggregatedFieldWells_xAxis,
+    scatterPlotCategoricallyAggregatedFieldWells_yAxis,
+
+    -- * ScatterPlotConfiguration
+    ScatterPlotConfiguration (..),
+    newScatterPlotConfiguration,
+    scatterPlotConfiguration_dataLabels,
+    scatterPlotConfiguration_fieldWells,
+    scatterPlotConfiguration_legend,
+    scatterPlotConfiguration_tooltip,
+    scatterPlotConfiguration_visualPalette,
+    scatterPlotConfiguration_xAxisDisplayOptions,
+    scatterPlotConfiguration_xAxisLabelOptions,
+    scatterPlotConfiguration_yAxisDisplayOptions,
+    scatterPlotConfiguration_yAxisLabelOptions,
+
+    -- * ScatterPlotFieldWells
+    ScatterPlotFieldWells (..),
+    newScatterPlotFieldWells,
+    scatterPlotFieldWells_scatterPlotCategoricallyAggregatedFieldWells,
+    scatterPlotFieldWells_scatterPlotUnaggregatedFieldWells,
+
+    -- * ScatterPlotUnaggregatedFieldWells
+    ScatterPlotUnaggregatedFieldWells (..),
+    newScatterPlotUnaggregatedFieldWells,
+    scatterPlotUnaggregatedFieldWells_size,
+    scatterPlotUnaggregatedFieldWells_xAxis,
+    scatterPlotUnaggregatedFieldWells_yAxis,
+
+    -- * ScatterPlotVisual
+    ScatterPlotVisual (..),
+    newScatterPlotVisual,
+    scatterPlotVisual_actions,
+    scatterPlotVisual_chartConfiguration,
+    scatterPlotVisual_columnHierarchies,
+    scatterPlotVisual_subtitle,
+    scatterPlotVisual_title,
+    scatterPlotVisual_visualId,
+
+    -- * ScrollBarOptions
+    ScrollBarOptions (..),
+    newScrollBarOptions,
+    scrollBarOptions_visibility,
+    scrollBarOptions_visibleRange,
+
+    -- * SecondaryValueOptions
+    SecondaryValueOptions (..),
+    newSecondaryValueOptions,
+    secondaryValueOptions_visibility,
+
+    -- * SectionAfterPageBreak
+    SectionAfterPageBreak (..),
+    newSectionAfterPageBreak,
+    sectionAfterPageBreak_status,
+
+    -- * SectionBasedLayoutCanvasSizeOptions
+    SectionBasedLayoutCanvasSizeOptions (..),
+    newSectionBasedLayoutCanvasSizeOptions,
+    sectionBasedLayoutCanvasSizeOptions_paperCanvasSizeOptions,
+
+    -- * SectionBasedLayoutConfiguration
+    SectionBasedLayoutConfiguration (..),
+    newSectionBasedLayoutConfiguration,
+    sectionBasedLayoutConfiguration_headerSections,
+    sectionBasedLayoutConfiguration_bodySections,
+    sectionBasedLayoutConfiguration_footerSections,
+    sectionBasedLayoutConfiguration_canvasSizeOptions,
+
+    -- * SectionBasedLayoutPaperCanvasSizeOptions
+    SectionBasedLayoutPaperCanvasSizeOptions (..),
+    newSectionBasedLayoutPaperCanvasSizeOptions,
+    sectionBasedLayoutPaperCanvasSizeOptions_paperMargin,
+    sectionBasedLayoutPaperCanvasSizeOptions_paperOrientation,
+    sectionBasedLayoutPaperCanvasSizeOptions_paperSize,
+
+    -- * SectionLayoutConfiguration
+    SectionLayoutConfiguration (..),
+    newSectionLayoutConfiguration,
+    sectionLayoutConfiguration_freeFormLayout,
+
+    -- * SectionPageBreakConfiguration
+    SectionPageBreakConfiguration (..),
+    newSectionPageBreakConfiguration,
+    sectionPageBreakConfiguration_after,
+
+    -- * SectionStyle
+    SectionStyle (..),
+    newSectionStyle,
+    sectionStyle_height,
+    sectionStyle_padding,
+
+    -- * SelectedSheetsFilterScopeConfiguration
+    SelectedSheetsFilterScopeConfiguration (..),
+    newSelectedSheetsFilterScopeConfiguration,
+    selectedSheetsFilterScopeConfiguration_sheetVisualScopingConfigurations,
+
+    -- * SeriesItem
+    SeriesItem (..),
+    newSeriesItem,
+    seriesItem_dataFieldSeriesItem,
+    seriesItem_fieldSeriesItem,
+
+    -- * ServiceNowParameters
+    ServiceNowParameters (..),
+    newServiceNowParameters,
+    serviceNowParameters_siteBaseUrl,
+
+    -- * SessionTag
+    SessionTag (..),
+    newSessionTag,
+    sessionTag_key,
+    sessionTag_value,
+
+    -- * SetParameterValueConfiguration
+    SetParameterValueConfiguration (..),
+    newSetParameterValueConfiguration,
+    setParameterValueConfiguration_destinationParameterName,
+    setParameterValueConfiguration_value,
+
+    -- * ShapeConditionalFormat
+    ShapeConditionalFormat (..),
+    newShapeConditionalFormat,
+    shapeConditionalFormat_backgroundColor,
+
+    -- * Sheet
+    Sheet (..),
+    newSheet,
+    sheet_name,
+    sheet_sheetId,
+
+    -- * SheetControlLayout
+    SheetControlLayout (..),
+    newSheetControlLayout,
+    sheetControlLayout_configuration,
+
+    -- * SheetControlLayoutConfiguration
+    SheetControlLayoutConfiguration (..),
+    newSheetControlLayoutConfiguration,
+    sheetControlLayoutConfiguration_gridLayout,
+
+    -- * SheetControlsOption
+    SheetControlsOption (..),
+    newSheetControlsOption,
+    sheetControlsOption_visibilityState,
+
+    -- * SheetDefinition
+    SheetDefinition (..),
+    newSheetDefinition,
+    sheetDefinition_contentType,
+    sheetDefinition_description,
+    sheetDefinition_filterControls,
+    sheetDefinition_layouts,
+    sheetDefinition_name,
+    sheetDefinition_parameterControls,
+    sheetDefinition_sheetControlLayouts,
+    sheetDefinition_textBoxes,
+    sheetDefinition_title,
+    sheetDefinition_visuals,
+    sheetDefinition_sheetId,
+
+    -- * SheetElementConfigurationOverrides
+    SheetElementConfigurationOverrides (..),
+    newSheetElementConfigurationOverrides,
+    sheetElementConfigurationOverrides_visibility,
+
+    -- * SheetElementRenderingRule
+    SheetElementRenderingRule (..),
+    newSheetElementRenderingRule,
+    sheetElementRenderingRule_expression,
+    sheetElementRenderingRule_configurationOverrides,
+
+    -- * SheetStyle
+    SheetStyle (..),
+    newSheetStyle,
+    sheetStyle_tile,
+    sheetStyle_tileLayout,
+
+    -- * SheetTextBox
+    SheetTextBox (..),
+    newSheetTextBox,
+    sheetTextBox_content,
+    sheetTextBox_sheetTextBoxId,
+
+    -- * SheetVisualScopingConfiguration
+    SheetVisualScopingConfiguration (..),
+    newSheetVisualScopingConfiguration,
+    sheetVisualScopingConfiguration_visualIds,
+    sheetVisualScopingConfiguration_sheetId,
+    sheetVisualScopingConfiguration_scope,
+
+    -- * ShortFormatText
+    ShortFormatText (..),
+    newShortFormatText,
+    shortFormatText_plainText,
+    shortFormatText_richText,
+
+    -- * SignupResponse
+    SignupResponse (..),
+    newSignupResponse,
+    signupResponse_iAMUser,
+    signupResponse_accountName,
+    signupResponse_directoryType,
+    signupResponse_userLoginName,
+
+    -- * SimpleClusterMarker
+    SimpleClusterMarker (..),
+    newSimpleClusterMarker,
+    simpleClusterMarker_color,
+
+    -- * SliderControlDisplayOptions
+    SliderControlDisplayOptions (..),
+    newSliderControlDisplayOptions,
+    sliderControlDisplayOptions_titleOptions,
+
+    -- * SmallMultiplesOptions
+    SmallMultiplesOptions (..),
+    newSmallMultiplesOptions,
+    smallMultiplesOptions_maxVisibleColumns,
+    smallMultiplesOptions_maxVisibleRows,
+    smallMultiplesOptions_panelConfiguration,
+
+    -- * SnowflakeParameters
+    SnowflakeParameters (..),
+    newSnowflakeParameters,
+    snowflakeParameters_host,
+    snowflakeParameters_database,
+    snowflakeParameters_warehouse,
+
+    -- * Spacing
+    Spacing (..),
+    newSpacing,
+    spacing_bottom,
+    spacing_left,
+    spacing_right,
+    spacing_top,
+
+    -- * SparkParameters
+    SparkParameters (..),
+    newSparkParameters,
+    sparkParameters_host,
+    sparkParameters_port,
+
+    -- * SqlServerParameters
+    SqlServerParameters (..),
+    newSqlServerParameters,
+    sqlServerParameters_host,
+    sqlServerParameters_port,
+    sqlServerParameters_database,
+
+    -- * SslProperties
+    SslProperties (..),
+    newSslProperties,
+    sslProperties_disableSsl,
+
+    -- * StringDefaultValues
+    StringDefaultValues (..),
+    newStringDefaultValues,
+    stringDefaultValues_dynamicValue,
+    stringDefaultValues_staticValues,
+
+    -- * StringFormatConfiguration
+    StringFormatConfiguration (..),
+    newStringFormatConfiguration,
+    stringFormatConfiguration_nullValueFormatConfiguration,
+    stringFormatConfiguration_numericFormatConfiguration,
+
+    -- * StringParameter
+    StringParameter (..),
+    newStringParameter,
+    stringParameter_name,
+    stringParameter_values,
+
+    -- * StringParameterDeclaration
+    StringParameterDeclaration (..),
+    newStringParameterDeclaration,
+    stringParameterDeclaration_defaultValues,
+    stringParameterDeclaration_valueWhenUnset,
+    stringParameterDeclaration_parameterValueType,
+    stringParameterDeclaration_name,
+
+    -- * StringValueWhenUnsetConfiguration
+    StringValueWhenUnsetConfiguration (..),
+    newStringValueWhenUnsetConfiguration,
+    stringValueWhenUnsetConfiguration_customValue,
+    stringValueWhenUnsetConfiguration_valueWhenUnsetOption,
+
+    -- * SubtotalOptions
+    SubtotalOptions (..),
+    newSubtotalOptions,
+    subtotalOptions_customLabel,
+    subtotalOptions_fieldLevel,
+    subtotalOptions_fieldLevelOptions,
+    subtotalOptions_metricHeaderCellStyle,
+    subtotalOptions_totalCellStyle,
+    subtotalOptions_totalsVisibility,
+    subtotalOptions_valueCellStyle,
+
+    -- * TableAggregatedFieldWells
+    TableAggregatedFieldWells (..),
+    newTableAggregatedFieldWells,
+    tableAggregatedFieldWells_groupBy,
+    tableAggregatedFieldWells_values,
+
+    -- * TableBorderOptions
+    TableBorderOptions (..),
+    newTableBorderOptions,
+    tableBorderOptions_color,
+    tableBorderOptions_style,
+    tableBorderOptions_thickness,
+
+    -- * TableCellConditionalFormatting
+    TableCellConditionalFormatting (..),
+    newTableCellConditionalFormatting,
+    tableCellConditionalFormatting_textFormat,
+    tableCellConditionalFormatting_fieldId,
+
+    -- * TableCellImageSizingConfiguration
+    TableCellImageSizingConfiguration (..),
+    newTableCellImageSizingConfiguration,
+    tableCellImageSizingConfiguration_tableCellImageScalingConfiguration,
+
+    -- * TableCellStyle
+    TableCellStyle (..),
+    newTableCellStyle,
+    tableCellStyle_backgroundColor,
+    tableCellStyle_border,
+    tableCellStyle_fontConfiguration,
+    tableCellStyle_height,
+    tableCellStyle_horizontalTextAlignment,
+    tableCellStyle_textWrap,
+    tableCellStyle_verticalTextAlignment,
+    tableCellStyle_visibility,
+
+    -- * TableConditionalFormatting
+    TableConditionalFormatting (..),
+    newTableConditionalFormatting,
+    tableConditionalFormatting_conditionalFormattingOptions,
+
+    -- * TableConditionalFormattingOption
+    TableConditionalFormattingOption (..),
+    newTableConditionalFormattingOption,
+    tableConditionalFormattingOption_cell,
+    tableConditionalFormattingOption_row,
+
+    -- * TableConfiguration
+    TableConfiguration (..),
+    newTableConfiguration,
+    tableConfiguration_fieldOptions,
+    tableConfiguration_fieldWells,
+    tableConfiguration_paginatedReportOptions,
+    tableConfiguration_sortConfiguration,
+    tableConfiguration_tableOptions,
+    tableConfiguration_totalOptions,
+
+    -- * TableFieldCustomIconContent
+    TableFieldCustomIconContent (..),
+    newTableFieldCustomIconContent,
+    tableFieldCustomIconContent_icon,
+
+    -- * TableFieldCustomTextContent
+    TableFieldCustomTextContent (..),
+    newTableFieldCustomTextContent,
+    tableFieldCustomTextContent_value,
+    tableFieldCustomTextContent_fontConfiguration,
+
+    -- * TableFieldImageConfiguration
+    TableFieldImageConfiguration (..),
+    newTableFieldImageConfiguration,
+    tableFieldImageConfiguration_sizingOptions,
+
+    -- * TableFieldLinkConfiguration
+    TableFieldLinkConfiguration (..),
+    newTableFieldLinkConfiguration,
+    tableFieldLinkConfiguration_target,
+    tableFieldLinkConfiguration_content,
+
+    -- * TableFieldLinkContentConfiguration
+    TableFieldLinkContentConfiguration (..),
+    newTableFieldLinkContentConfiguration,
+    tableFieldLinkContentConfiguration_customIconContent,
+    tableFieldLinkContentConfiguration_customTextContent,
+
+    -- * TableFieldOption
+    TableFieldOption (..),
+    newTableFieldOption,
+    tableFieldOption_customLabel,
+    tableFieldOption_uRLStyling,
+    tableFieldOption_visibility,
+    tableFieldOption_width,
+    tableFieldOption_fieldId,
+
+    -- * TableFieldOptions
+    TableFieldOptions (..),
+    newTableFieldOptions,
+    tableFieldOptions_order,
+    tableFieldOptions_selectedFieldOptions,
+
+    -- * TableFieldURLConfiguration
+    TableFieldURLConfiguration (..),
+    newTableFieldURLConfiguration,
+    tableFieldURLConfiguration_imageConfiguration,
+    tableFieldURLConfiguration_linkConfiguration,
+
+    -- * TableFieldWells
+    TableFieldWells (..),
+    newTableFieldWells,
+    tableFieldWells_tableAggregatedFieldWells,
+    tableFieldWells_tableUnaggregatedFieldWells,
+
+    -- * TableOptions
+    TableOptions (..),
+    newTableOptions,
+    tableOptions_cellStyle,
+    tableOptions_headerStyle,
+    tableOptions_orientation,
+    tableOptions_rowAlternateColorOptions,
+
+    -- * TablePaginatedReportOptions
+    TablePaginatedReportOptions (..),
+    newTablePaginatedReportOptions,
+    tablePaginatedReportOptions_overflowColumnHeaderVisibility,
+    tablePaginatedReportOptions_verticalOverflowVisibility,
+
+    -- * TableRowConditionalFormatting
+    TableRowConditionalFormatting (..),
+    newTableRowConditionalFormatting,
+    tableRowConditionalFormatting_backgroundColor,
+    tableRowConditionalFormatting_textColor,
+
+    -- * TableSideBorderOptions
+    TableSideBorderOptions (..),
+    newTableSideBorderOptions,
+    tableSideBorderOptions_bottom,
+    tableSideBorderOptions_innerHorizontal,
+    tableSideBorderOptions_innerVertical,
+    tableSideBorderOptions_left,
+    tableSideBorderOptions_right,
+    tableSideBorderOptions_top,
+
+    -- * TableSortConfiguration
+    TableSortConfiguration (..),
+    newTableSortConfiguration,
+    tableSortConfiguration_paginationConfiguration,
+    tableSortConfiguration_rowSort,
+
+    -- * TableUnaggregatedFieldWells
+    TableUnaggregatedFieldWells (..),
+    newTableUnaggregatedFieldWells,
+    tableUnaggregatedFieldWells_values,
+
+    -- * TableVisual
+    TableVisual (..),
+    newTableVisual,
+    tableVisual_actions,
+    tableVisual_chartConfiguration,
+    tableVisual_conditionalFormatting,
+    tableVisual_subtitle,
+    tableVisual_title,
+    tableVisual_visualId,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TagColumnOperation
+    TagColumnOperation (..),
+    newTagColumnOperation,
+    tagColumnOperation_columnName,
+    tagColumnOperation_tags,
+
+    -- * Template
+    Template (..),
+    newTemplate,
+    template_arn,
+    template_createdTime,
+    template_lastUpdatedTime,
+    template_name,
+    template_templateId,
+    template_version,
+
+    -- * TemplateAlias
+    TemplateAlias (..),
+    newTemplateAlias,
+    templateAlias_aliasName,
+    templateAlias_arn,
+    templateAlias_templateVersionNumber,
+
+    -- * TemplateError
+    TemplateError (..),
+    newTemplateError,
+    templateError_message,
+    templateError_type,
+    templateError_violatedEntities,
+
+    -- * TemplateSourceAnalysis
+    TemplateSourceAnalysis (..),
+    newTemplateSourceAnalysis,
+    templateSourceAnalysis_arn,
+    templateSourceAnalysis_dataSetReferences,
+
+    -- * TemplateSourceEntity
+    TemplateSourceEntity (..),
+    newTemplateSourceEntity,
+    templateSourceEntity_sourceAnalysis,
+    templateSourceEntity_sourceTemplate,
+
+    -- * TemplateSourceTemplate
+    TemplateSourceTemplate (..),
+    newTemplateSourceTemplate,
+    templateSourceTemplate_arn,
+
+    -- * TemplateSummary
+    TemplateSummary (..),
+    newTemplateSummary,
+    templateSummary_arn,
+    templateSummary_createdTime,
+    templateSummary_lastUpdatedTime,
+    templateSummary_latestVersionNumber,
+    templateSummary_name,
+    templateSummary_templateId,
+
+    -- * TemplateVersion
+    TemplateVersion (..),
+    newTemplateVersion,
+    templateVersion_createdTime,
+    templateVersion_dataSetConfigurations,
+    templateVersion_description,
+    templateVersion_errors,
+    templateVersion_sheets,
+    templateVersion_sourceEntityArn,
+    templateVersion_status,
+    templateVersion_themeArn,
+    templateVersion_versionNumber,
+
+    -- * TemplateVersionDefinition
+    TemplateVersionDefinition (..),
+    newTemplateVersionDefinition,
+    templateVersionDefinition_analysisDefaults,
+    templateVersionDefinition_calculatedFields,
+    templateVersionDefinition_columnConfigurations,
+    templateVersionDefinition_filterGroups,
+    templateVersionDefinition_parameterDeclarations,
+    templateVersionDefinition_sheets,
+    templateVersionDefinition_dataSetConfigurations,
+
+    -- * TemplateVersionSummary
+    TemplateVersionSummary (..),
+    newTemplateVersionSummary,
+    templateVersionSummary_arn,
+    templateVersionSummary_createdTime,
+    templateVersionSummary_description,
+    templateVersionSummary_status,
+    templateVersionSummary_versionNumber,
+
+    -- * TeradataParameters
+    TeradataParameters (..),
+    newTeradataParameters,
+    teradataParameters_host,
+    teradataParameters_port,
+    teradataParameters_database,
+
+    -- * TextAreaControlDisplayOptions
+    TextAreaControlDisplayOptions (..),
+    newTextAreaControlDisplayOptions,
+    textAreaControlDisplayOptions_placeholderOptions,
+    textAreaControlDisplayOptions_titleOptions,
+
+    -- * TextConditionalFormat
+    TextConditionalFormat (..),
+    newTextConditionalFormat,
+    textConditionalFormat_backgroundColor,
+    textConditionalFormat_icon,
+    textConditionalFormat_textColor,
+
+    -- * TextControlPlaceholderOptions
+    TextControlPlaceholderOptions (..),
+    newTextControlPlaceholderOptions,
+    textControlPlaceholderOptions_visibility,
+
+    -- * TextFieldControlDisplayOptions
+    TextFieldControlDisplayOptions (..),
+    newTextFieldControlDisplayOptions,
+    textFieldControlDisplayOptions_placeholderOptions,
+    textFieldControlDisplayOptions_titleOptions,
+
+    -- * Theme
+    Theme (..),
+    newTheme,
+    theme_arn,
+    theme_createdTime,
+    theme_lastUpdatedTime,
+    theme_name,
+    theme_themeId,
+    theme_type,
+    theme_version,
+
+    -- * ThemeAlias
+    ThemeAlias (..),
+    newThemeAlias,
+    themeAlias_aliasName,
+    themeAlias_arn,
+    themeAlias_themeVersionNumber,
+
+    -- * ThemeConfiguration
+    ThemeConfiguration (..),
+    newThemeConfiguration,
+    themeConfiguration_dataColorPalette,
+    themeConfiguration_sheet,
+    themeConfiguration_typography,
+    themeConfiguration_uIColorPalette,
+
+    -- * ThemeError
+    ThemeError (..),
+    newThemeError,
+    themeError_message,
+    themeError_type,
+
+    -- * ThemeSummary
+    ThemeSummary (..),
+    newThemeSummary,
+    themeSummary_arn,
+    themeSummary_createdTime,
+    themeSummary_lastUpdatedTime,
+    themeSummary_latestVersionNumber,
+    themeSummary_name,
+    themeSummary_themeId,
+
+    -- * ThemeVersion
+    ThemeVersion (..),
+    newThemeVersion,
+    themeVersion_arn,
+    themeVersion_baseThemeId,
+    themeVersion_configuration,
+    themeVersion_createdTime,
+    themeVersion_description,
+    themeVersion_errors,
+    themeVersion_status,
+    themeVersion_versionNumber,
+
+    -- * ThemeVersionSummary
+    ThemeVersionSummary (..),
+    newThemeVersionSummary,
+    themeVersionSummary_arn,
+    themeVersionSummary_createdTime,
+    themeVersionSummary_description,
+    themeVersionSummary_status,
+    themeVersionSummary_versionNumber,
+
+    -- * ThousandSeparatorOptions
+    ThousandSeparatorOptions (..),
+    newThousandSeparatorOptions,
+    thousandSeparatorOptions_symbol,
+    thousandSeparatorOptions_visibility,
+
+    -- * TileLayoutStyle
+    TileLayoutStyle (..),
+    newTileLayoutStyle,
+    tileLayoutStyle_gutter,
+    tileLayoutStyle_margin,
+
+    -- * TileStyle
+    TileStyle (..),
+    newTileStyle,
+    tileStyle_border,
+
+    -- * TimeBasedForecastProperties
+    TimeBasedForecastProperties (..),
+    newTimeBasedForecastProperties,
+    timeBasedForecastProperties_lowerBoundary,
+    timeBasedForecastProperties_periodsBackward,
+    timeBasedForecastProperties_periodsForward,
+    timeBasedForecastProperties_predictionInterval,
+    timeBasedForecastProperties_seasonality,
+    timeBasedForecastProperties_upperBoundary,
+
+    -- * TimeEqualityFilter
+    TimeEqualityFilter (..),
+    newTimeEqualityFilter,
+    timeEqualityFilter_parameterName,
+    timeEqualityFilter_timeGranularity,
+    timeEqualityFilter_value,
+    timeEqualityFilter_filterId,
+    timeEqualityFilter_column,
+
+    -- * TimeRangeDrillDownFilter
+    TimeRangeDrillDownFilter (..),
+    newTimeRangeDrillDownFilter,
+    timeRangeDrillDownFilter_column,
+    timeRangeDrillDownFilter_rangeMinimum,
+    timeRangeDrillDownFilter_rangeMaximum,
+    timeRangeDrillDownFilter_timeGranularity,
+
+    -- * TimeRangeFilter
+    TimeRangeFilter (..),
+    newTimeRangeFilter,
+    timeRangeFilter_excludePeriodConfiguration,
+    timeRangeFilter_includeMaximum,
+    timeRangeFilter_includeMinimum,
+    timeRangeFilter_rangeMaximumValue,
+    timeRangeFilter_rangeMinimumValue,
+    timeRangeFilter_timeGranularity,
+    timeRangeFilter_filterId,
+    timeRangeFilter_column,
+    timeRangeFilter_nullOption,
+
+    -- * TimeRangeFilterValue
+    TimeRangeFilterValue (..),
+    newTimeRangeFilterValue,
+    timeRangeFilterValue_parameter,
+    timeRangeFilterValue_rollingDate,
+    timeRangeFilterValue_staticValue,
+
+    -- * TooltipItem
+    TooltipItem (..),
+    newTooltipItem,
+    tooltipItem_columnTooltipItem,
+    tooltipItem_fieldTooltipItem,
+
+    -- * TooltipOptions
+    TooltipOptions (..),
+    newTooltipOptions,
+    tooltipOptions_fieldBasedTooltip,
+    tooltipOptions_selectedTooltipType,
+    tooltipOptions_tooltipVisibility,
+
+    -- * TopBottomFilter
+    TopBottomFilter (..),
+    newTopBottomFilter,
+    topBottomFilter_limit,
+    topBottomFilter_parameterName,
+    topBottomFilter_timeGranularity,
+    topBottomFilter_filterId,
+    topBottomFilter_column,
+    topBottomFilter_aggregationSortConfigurations,
+
+    -- * TopBottomMoversComputation
+    TopBottomMoversComputation (..),
+    newTopBottomMoversComputation,
+    topBottomMoversComputation_moverSize,
+    topBottomMoversComputation_name,
+    topBottomMoversComputation_sortOrder,
+    topBottomMoversComputation_value,
+    topBottomMoversComputation_computationId,
+    topBottomMoversComputation_time,
+    topBottomMoversComputation_category,
+    topBottomMoversComputation_type,
+
+    -- * TopBottomRankedComputation
+    TopBottomRankedComputation (..),
+    newTopBottomRankedComputation,
+    topBottomRankedComputation_name,
+    topBottomRankedComputation_resultSize,
+    topBottomRankedComputation_value,
+    topBottomRankedComputation_computationId,
+    topBottomRankedComputation_category,
+    topBottomRankedComputation_type,
+
+    -- * TotalAggregationComputation
+    TotalAggregationComputation (..),
+    newTotalAggregationComputation,
+    totalAggregationComputation_name,
+    totalAggregationComputation_computationId,
+    totalAggregationComputation_value,
+
+    -- * TotalOptions
+    TotalOptions (..),
+    newTotalOptions,
+    totalOptions_customLabel,
+    totalOptions_placement,
+    totalOptions_scrollStatus,
+    totalOptions_totalCellStyle,
+    totalOptions_totalsVisibility,
+
+    -- * TransformOperation
+    TransformOperation (..),
+    newTransformOperation,
+    transformOperation_castColumnTypeOperation,
+    transformOperation_createColumnsOperation,
+    transformOperation_filterOperation,
+    transformOperation_projectOperation,
+    transformOperation_renameColumnOperation,
+    transformOperation_tagColumnOperation,
+    transformOperation_untagColumnOperation,
+
+    -- * TreeMapAggregatedFieldWells
+    TreeMapAggregatedFieldWells (..),
+    newTreeMapAggregatedFieldWells,
+    treeMapAggregatedFieldWells_colors,
+    treeMapAggregatedFieldWells_groups,
+    treeMapAggregatedFieldWells_sizes,
+
+    -- * TreeMapConfiguration
+    TreeMapConfiguration (..),
+    newTreeMapConfiguration,
+    treeMapConfiguration_colorLabelOptions,
+    treeMapConfiguration_colorScale,
+    treeMapConfiguration_dataLabels,
+    treeMapConfiguration_fieldWells,
+    treeMapConfiguration_groupLabelOptions,
+    treeMapConfiguration_legend,
+    treeMapConfiguration_sizeLabelOptions,
+    treeMapConfiguration_sortConfiguration,
+    treeMapConfiguration_tooltip,
+
+    -- * TreeMapFieldWells
+    TreeMapFieldWells (..),
+    newTreeMapFieldWells,
+    treeMapFieldWells_treeMapAggregatedFieldWells,
+
+    -- * TreeMapSortConfiguration
+    TreeMapSortConfiguration (..),
+    newTreeMapSortConfiguration,
+    treeMapSortConfiguration_treeMapGroupItemsLimitConfiguration,
+    treeMapSortConfiguration_treeMapSort,
+
+    -- * TreeMapVisual
+    TreeMapVisual (..),
+    newTreeMapVisual,
+    treeMapVisual_actions,
+    treeMapVisual_chartConfiguration,
+    treeMapVisual_columnHierarchies,
+    treeMapVisual_subtitle,
+    treeMapVisual_title,
+    treeMapVisual_visualId,
+
+    -- * TrendArrowOptions
+    TrendArrowOptions (..),
+    newTrendArrowOptions,
+    trendArrowOptions_visibility,
+
+    -- * TwitterParameters
+    TwitterParameters (..),
+    newTwitterParameters,
+    twitterParameters_query,
+    twitterParameters_maxRows,
+
+    -- * Typography
+    Typography (..),
+    newTypography,
+    typography_fontFamilies,
+
+    -- * UIColorPalette
+    UIColorPalette (..),
+    newUIColorPalette,
+    uIColorPalette_accent,
+    uIColorPalette_accentForeground,
+    uIColorPalette_danger,
+    uIColorPalette_dangerForeground,
+    uIColorPalette_dimension,
+    uIColorPalette_dimensionForeground,
+    uIColorPalette_measure,
+    uIColorPalette_measureForeground,
+    uIColorPalette_primaryBackground,
+    uIColorPalette_primaryForeground,
+    uIColorPalette_secondaryBackground,
+    uIColorPalette_secondaryForeground,
+    uIColorPalette_success,
+    uIColorPalette_successForeground,
+    uIColorPalette_warning,
+    uIColorPalette_warningForeground,
+
+    -- * UnaggregatedField
+    UnaggregatedField (..),
+    newUnaggregatedField,
+    unaggregatedField_formatConfiguration,
+    unaggregatedField_fieldId,
+    unaggregatedField_column,
+
+    -- * UniqueValuesComputation
+    UniqueValuesComputation (..),
+    newUniqueValuesComputation,
+    uniqueValuesComputation_name,
+    uniqueValuesComputation_computationId,
+    uniqueValuesComputation_category,
+
+    -- * UntagColumnOperation
+    UntagColumnOperation (..),
+    newUntagColumnOperation,
+    untagColumnOperation_columnName,
+    untagColumnOperation_tagNames,
+
+    -- * UploadSettings
+    UploadSettings (..),
+    newUploadSettings,
+    uploadSettings_containsHeader,
+    uploadSettings_delimiter,
+    uploadSettings_format,
+    uploadSettings_startFromRow,
+    uploadSettings_textQualifier,
+
+    -- * User
+    User (..),
+    newUser,
+    user_active,
+    user_arn,
+    user_customPermissionsName,
+    user_email,
+    user_externalLoginFederationProviderType,
+    user_externalLoginFederationProviderUrl,
+    user_externalLoginId,
+    user_identityType,
+    user_principalId,
+    user_role,
+    user_userName,
+
+    -- * VisibleRangeOptions
+    VisibleRangeOptions (..),
+    newVisibleRangeOptions,
+    visibleRangeOptions_percentRange,
+
+    -- * Visual
+    Visual (..),
+    newVisual,
+    visual_barChartVisual,
+    visual_boxPlotVisual,
+    visual_comboChartVisual,
+    visual_customContentVisual,
+    visual_emptyVisual,
+    visual_filledMapVisual,
+    visual_funnelChartVisual,
+    visual_gaugeChartVisual,
+    visual_geospatialMapVisual,
+    visual_heatMapVisual,
+    visual_histogramVisual,
+    visual_insightVisual,
+    visual_kPIVisual,
+    visual_lineChartVisual,
+    visual_pieChartVisual,
+    visual_pivotTableVisual,
+    visual_sankeyDiagramVisual,
+    visual_scatterPlotVisual,
+    visual_tableVisual,
+    visual_treeMapVisual,
+    visual_waterfallVisual,
+    visual_wordCloudVisual,
+
+    -- * VisualCustomAction
+    VisualCustomAction (..),
+    newVisualCustomAction,
+    visualCustomAction_status,
+    visualCustomAction_customActionId,
+    visualCustomAction_name,
+    visualCustomAction_trigger,
+    visualCustomAction_actionOperations,
+
+    -- * VisualCustomActionOperation
+    VisualCustomActionOperation (..),
+    newVisualCustomActionOperation,
+    visualCustomActionOperation_filterOperation,
+    visualCustomActionOperation_navigationOperation,
+    visualCustomActionOperation_setParametersOperation,
+    visualCustomActionOperation_uRLOperation,
+
+    -- * VisualPalette
+    VisualPalette (..),
+    newVisualPalette,
+    visualPalette_chartColor,
+    visualPalette_colorMap,
+
+    -- * VisualSubtitleLabelOptions
+    VisualSubtitleLabelOptions (..),
+    newVisualSubtitleLabelOptions,
+    visualSubtitleLabelOptions_formatText,
+    visualSubtitleLabelOptions_visibility,
+
+    -- * VisualTitleLabelOptions
+    VisualTitleLabelOptions (..),
+    newVisualTitleLabelOptions,
+    visualTitleLabelOptions_formatText,
+    visualTitleLabelOptions_visibility,
+
+    -- * VpcConnectionProperties
+    VpcConnectionProperties (..),
+    newVpcConnectionProperties,
+    vpcConnectionProperties_vpcConnectionArn,
+
+    -- * WaterfallChartAggregatedFieldWells
+    WaterfallChartAggregatedFieldWells (..),
+    newWaterfallChartAggregatedFieldWells,
+    waterfallChartAggregatedFieldWells_breakdowns,
+    waterfallChartAggregatedFieldWells_categories,
+    waterfallChartAggregatedFieldWells_values,
+
+    -- * WaterfallChartConfiguration
+    WaterfallChartConfiguration (..),
+    newWaterfallChartConfiguration,
+    waterfallChartConfiguration_categoryAxisDisplayOptions,
+    waterfallChartConfiguration_categoryAxisLabelOptions,
+    waterfallChartConfiguration_dataLabels,
+    waterfallChartConfiguration_fieldWells,
+    waterfallChartConfiguration_legend,
+    waterfallChartConfiguration_primaryYAxisDisplayOptions,
+    waterfallChartConfiguration_primaryYAxisLabelOptions,
+    waterfallChartConfiguration_sortConfiguration,
+    waterfallChartConfiguration_visualPalette,
+    waterfallChartConfiguration_waterfallChartOptions,
+
+    -- * WaterfallChartFieldWells
+    WaterfallChartFieldWells (..),
+    newWaterfallChartFieldWells,
+    waterfallChartFieldWells_waterfallChartAggregatedFieldWells,
+
+    -- * WaterfallChartOptions
+    WaterfallChartOptions (..),
+    newWaterfallChartOptions,
+    waterfallChartOptions_totalBarLabel,
+
+    -- * WaterfallChartSortConfiguration
+    WaterfallChartSortConfiguration (..),
+    newWaterfallChartSortConfiguration,
+    waterfallChartSortConfiguration_breakdownItemsLimit,
+    waterfallChartSortConfiguration_categorySort,
+
+    -- * WaterfallVisual
+    WaterfallVisual (..),
+    newWaterfallVisual,
+    waterfallVisual_actions,
+    waterfallVisual_chartConfiguration,
+    waterfallVisual_columnHierarchies,
+    waterfallVisual_subtitle,
+    waterfallVisual_title,
+    waterfallVisual_visualId,
+
+    -- * WhatIfPointScenario
+    WhatIfPointScenario (..),
+    newWhatIfPointScenario,
+    whatIfPointScenario_date,
+    whatIfPointScenario_value,
+
+    -- * WhatIfRangeScenario
+    WhatIfRangeScenario (..),
+    newWhatIfRangeScenario,
+    whatIfRangeScenario_startDate,
+    whatIfRangeScenario_endDate,
+    whatIfRangeScenario_value,
+
+    -- * WordCloudAggregatedFieldWells
+    WordCloudAggregatedFieldWells (..),
+    newWordCloudAggregatedFieldWells,
+    wordCloudAggregatedFieldWells_groupBy,
+    wordCloudAggregatedFieldWells_size,
+
+    -- * WordCloudChartConfiguration
+    WordCloudChartConfiguration (..),
+    newWordCloudChartConfiguration,
+    wordCloudChartConfiguration_categoryLabelOptions,
+    wordCloudChartConfiguration_fieldWells,
+    wordCloudChartConfiguration_sortConfiguration,
+    wordCloudChartConfiguration_wordCloudOptions,
+
+    -- * WordCloudFieldWells
+    WordCloudFieldWells (..),
+    newWordCloudFieldWells,
+    wordCloudFieldWells_wordCloudAggregatedFieldWells,
+
+    -- * WordCloudOptions
+    WordCloudOptions (..),
+    newWordCloudOptions,
+    wordCloudOptions_cloudLayout,
+    wordCloudOptions_maximumStringLength,
+    wordCloudOptions_wordCasing,
+    wordCloudOptions_wordOrientation,
+    wordCloudOptions_wordPadding,
+    wordCloudOptions_wordScaling,
+
+    -- * WordCloudSortConfiguration
+    WordCloudSortConfiguration (..),
+    newWordCloudSortConfiguration,
+    wordCloudSortConfiguration_categoryItemsLimit,
+    wordCloudSortConfiguration_categorySort,
+
+    -- * WordCloudVisual
+    WordCloudVisual (..),
+    newWordCloudVisual,
+    wordCloudVisual_actions,
+    wordCloudVisual_chartConfiguration,
+    wordCloudVisual_columnHierarchies,
+    wordCloudVisual_subtitle,
+    wordCloudVisual_title,
+    wordCloudVisual_visualId,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.QuickSight.Types.AccountCustomization
+import Amazonka.QuickSight.Types.AccountInfo
+import Amazonka.QuickSight.Types.AccountSettings
+import Amazonka.QuickSight.Types.ActiveIAMPolicyAssignment
+import Amazonka.QuickSight.Types.AdHocFilteringOption
+import Amazonka.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.AggregationSortConfiguration
+import Amazonka.QuickSight.Types.AmazonElasticsearchParameters
+import Amazonka.QuickSight.Types.AmazonOpenSearchParameters
+import Amazonka.QuickSight.Types.Analysis
+import Amazonka.QuickSight.Types.AnalysisDefaults
+import Amazonka.QuickSight.Types.AnalysisDefinition
+import Amazonka.QuickSight.Types.AnalysisError
+import Amazonka.QuickSight.Types.AnalysisErrorType
+import Amazonka.QuickSight.Types.AnalysisFilterAttribute
+import Amazonka.QuickSight.Types.AnalysisSearchFilter
+import Amazonka.QuickSight.Types.AnalysisSourceEntity
+import Amazonka.QuickSight.Types.AnalysisSourceTemplate
+import Amazonka.QuickSight.Types.AnalysisSummary
+import Amazonka.QuickSight.Types.AnchorDateConfiguration
+import Amazonka.QuickSight.Types.AnchorOption
+import Amazonka.QuickSight.Types.AnonymousUserDashboardEmbeddingConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserDashboardVisualEmbeddingConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserEmbeddingExperienceConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserQSearchBarEmbeddingConfiguration
+import Amazonka.QuickSight.Types.ArcAxisConfiguration
+import Amazonka.QuickSight.Types.ArcAxisDisplayRange
+import Amazonka.QuickSight.Types.ArcConfiguration
+import Amazonka.QuickSight.Types.ArcOptions
+import Amazonka.QuickSight.Types.ArcThickness
+import Amazonka.QuickSight.Types.ArcThicknessOptions
+import Amazonka.QuickSight.Types.AssignmentStatus
+import Amazonka.QuickSight.Types.AthenaParameters
+import Amazonka.QuickSight.Types.AuroraParameters
+import Amazonka.QuickSight.Types.AuroraPostgreSqlParameters
+import Amazonka.QuickSight.Types.AuthenticationMethodOption
+import Amazonka.QuickSight.Types.AwsIotAnalyticsParameters
+import Amazonka.QuickSight.Types.AxisBinding
+import Amazonka.QuickSight.Types.AxisDataOptions
+import Amazonka.QuickSight.Types.AxisDisplayDataDrivenRange
+import Amazonka.QuickSight.Types.AxisDisplayMinMaxRange
+import Amazonka.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.AxisDisplayRange
+import Amazonka.QuickSight.Types.AxisLabelOptions
+import Amazonka.QuickSight.Types.AxisLabelReferenceOptions
+import Amazonka.QuickSight.Types.AxisLinearScale
+import Amazonka.QuickSight.Types.AxisLogarithmicScale
+import Amazonka.QuickSight.Types.AxisScale
+import Amazonka.QuickSight.Types.AxisTickLabelOptions
+import Amazonka.QuickSight.Types.BarChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.BarChartConfiguration
+import Amazonka.QuickSight.Types.BarChartFieldWells
+import Amazonka.QuickSight.Types.BarChartOrientation
+import Amazonka.QuickSight.Types.BarChartSortConfiguration
+import Amazonka.QuickSight.Types.BarChartVisual
+import Amazonka.QuickSight.Types.BarsArrangement
+import Amazonka.QuickSight.Types.BaseMapStyleType
+import Amazonka.QuickSight.Types.BinCountOptions
+import Amazonka.QuickSight.Types.BinWidthOptions
+import Amazonka.QuickSight.Types.BodySectionConfiguration
+import Amazonka.QuickSight.Types.BodySectionContent
+import Amazonka.QuickSight.Types.BorderStyle
+import Amazonka.QuickSight.Types.BoxPlotAggregatedFieldWells
+import Amazonka.QuickSight.Types.BoxPlotChartConfiguration
+import Amazonka.QuickSight.Types.BoxPlotFieldWells
+import Amazonka.QuickSight.Types.BoxPlotFillStyle
+import Amazonka.QuickSight.Types.BoxPlotOptions
+import Amazonka.QuickSight.Types.BoxPlotSortConfiguration
+import Amazonka.QuickSight.Types.BoxPlotStyleOptions
+import Amazonka.QuickSight.Types.BoxPlotVisual
+import Amazonka.QuickSight.Types.CalculatedColumn
+import Amazonka.QuickSight.Types.CalculatedField
+import Amazonka.QuickSight.Types.CalculatedMeasureField
+import Amazonka.QuickSight.Types.CascadingControlConfiguration
+import Amazonka.QuickSight.Types.CascadingControlSource
+import Amazonka.QuickSight.Types.CastColumnTypeOperation
+import Amazonka.QuickSight.Types.CategoricalAggregationFunction
+import Amazonka.QuickSight.Types.CategoricalDimensionField
+import Amazonka.QuickSight.Types.CategoricalMeasureField
+import Amazonka.QuickSight.Types.CategoryDrillDownFilter
+import Amazonka.QuickSight.Types.CategoryFilter
+import Amazonka.QuickSight.Types.CategoryFilterConfiguration
+import Amazonka.QuickSight.Types.CategoryFilterMatchOperator
+import Amazonka.QuickSight.Types.CategoryFilterSelectAllOptions
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ClusterMarker
+import Amazonka.QuickSight.Types.ClusterMarkerConfiguration
+import Amazonka.QuickSight.Types.ColorFillType
+import Amazonka.QuickSight.Types.ColorScale
+import Amazonka.QuickSight.Types.ColumnConfiguration
+import Amazonka.QuickSight.Types.ColumnDataType
+import Amazonka.QuickSight.Types.ColumnDescription
+import Amazonka.QuickSight.Types.ColumnGroup
+import Amazonka.QuickSight.Types.ColumnGroupColumnSchema
+import Amazonka.QuickSight.Types.ColumnGroupSchema
+import Amazonka.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.ColumnLevelPermissionRule
+import Amazonka.QuickSight.Types.ColumnRole
+import Amazonka.QuickSight.Types.ColumnSchema
+import Amazonka.QuickSight.Types.ColumnSort
+import Amazonka.QuickSight.Types.ColumnTag
+import Amazonka.QuickSight.Types.ColumnTagName
+import Amazonka.QuickSight.Types.ColumnTooltipItem
+import Amazonka.QuickSight.Types.ComboChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.ComboChartConfiguration
+import Amazonka.QuickSight.Types.ComboChartFieldWells
+import Amazonka.QuickSight.Types.ComboChartSortConfiguration
+import Amazonka.QuickSight.Types.ComboChartVisual
+import Amazonka.QuickSight.Types.ComparisonConfiguration
+import Amazonka.QuickSight.Types.ComparisonFormatConfiguration
+import Amazonka.QuickSight.Types.ComparisonMethod
+import Amazonka.QuickSight.Types.Computation
+import Amazonka.QuickSight.Types.ConditionalFormattingColor
+import Amazonka.QuickSight.Types.ConditionalFormattingCustomIconCondition
+import Amazonka.QuickSight.Types.ConditionalFormattingCustomIconOptions
+import Amazonka.QuickSight.Types.ConditionalFormattingGradientColor
+import Amazonka.QuickSight.Types.ConditionalFormattingIcon
+import Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayConfiguration
+import Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayOption
+import Amazonka.QuickSight.Types.ConditionalFormattingIconSet
+import Amazonka.QuickSight.Types.ConditionalFormattingIconSetType
+import Amazonka.QuickSight.Types.ConditionalFormattingSolidColor
+import Amazonka.QuickSight.Types.ContributionAnalysisDefault
+import Amazonka.QuickSight.Types.CreateColumnsOperation
+import Amazonka.QuickSight.Types.CredentialPair
+import Amazonka.QuickSight.Types.CrossDatasetTypes
+import Amazonka.QuickSight.Types.CurrencyDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.CustomActionFilterOperation
+import Amazonka.QuickSight.Types.CustomActionNavigationOperation
+import Amazonka.QuickSight.Types.CustomActionSetParametersOperation
+import Amazonka.QuickSight.Types.CustomActionURLOperation
+import Amazonka.QuickSight.Types.CustomContentConfiguration
+import Amazonka.QuickSight.Types.CustomContentImageScalingConfiguration
+import Amazonka.QuickSight.Types.CustomContentType
+import Amazonka.QuickSight.Types.CustomContentVisual
+import Amazonka.QuickSight.Types.CustomFilterConfiguration
+import Amazonka.QuickSight.Types.CustomFilterListConfiguration
+import Amazonka.QuickSight.Types.CustomNarrativeOptions
+import Amazonka.QuickSight.Types.CustomParameterValues
+import Amazonka.QuickSight.Types.CustomSql
+import Amazonka.QuickSight.Types.CustomValuesConfiguration
+import Amazonka.QuickSight.Types.Dashboard
+import Amazonka.QuickSight.Types.DashboardBehavior
+import Amazonka.QuickSight.Types.DashboardError
+import Amazonka.QuickSight.Types.DashboardErrorType
+import Amazonka.QuickSight.Types.DashboardFilterAttribute
+import Amazonka.QuickSight.Types.DashboardPublishOptions
+import Amazonka.QuickSight.Types.DashboardSearchFilter
+import Amazonka.QuickSight.Types.DashboardSourceEntity
+import Amazonka.QuickSight.Types.DashboardSourceTemplate
+import Amazonka.QuickSight.Types.DashboardSummary
+import Amazonka.QuickSight.Types.DashboardUIState
+import Amazonka.QuickSight.Types.DashboardVersion
+import Amazonka.QuickSight.Types.DashboardVersionDefinition
+import Amazonka.QuickSight.Types.DashboardVersionSummary
+import Amazonka.QuickSight.Types.DashboardVisualId
+import Amazonka.QuickSight.Types.DashboardVisualPublishOptions
+import Amazonka.QuickSight.Types.DataColor
+import Amazonka.QuickSight.Types.DataColorPalette
+import Amazonka.QuickSight.Types.DataFieldSeriesItem
+import Amazonka.QuickSight.Types.DataLabelContent
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.DataLabelOverlap
+import Amazonka.QuickSight.Types.DataLabelPosition
+import Amazonka.QuickSight.Types.DataLabelType
+import Amazonka.QuickSight.Types.DataPathColor
+import Amazonka.QuickSight.Types.DataPathLabelType
+import Amazonka.QuickSight.Types.DataPathSort
+import Amazonka.QuickSight.Types.DataPathValue
+import Amazonka.QuickSight.Types.DataSet
+import Amazonka.QuickSight.Types.DataSetConfiguration
+import Amazonka.QuickSight.Types.DataSetFilterAttribute
+import Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
+import Amazonka.QuickSight.Types.DataSetImportMode
+import Amazonka.QuickSight.Types.DataSetReference
+import Amazonka.QuickSight.Types.DataSetSchema
+import Amazonka.QuickSight.Types.DataSetSearchFilter
+import Amazonka.QuickSight.Types.DataSetSummary
+import Amazonka.QuickSight.Types.DataSetUsageConfiguration
+import Amazonka.QuickSight.Types.DataSource
+import Amazonka.QuickSight.Types.DataSourceCredentials
+import Amazonka.QuickSight.Types.DataSourceErrorInfo
+import Amazonka.QuickSight.Types.DataSourceErrorInfoType
+import Amazonka.QuickSight.Types.DataSourceFilterAttribute
+import Amazonka.QuickSight.Types.DataSourceParameters
+import Amazonka.QuickSight.Types.DataSourceSearchFilter
+import Amazonka.QuickSight.Types.DataSourceSummary
+import Amazonka.QuickSight.Types.DataSourceType
+import Amazonka.QuickSight.Types.DatabricksParameters
+import Amazonka.QuickSight.Types.DateAggregationFunction
+import Amazonka.QuickSight.Types.DateAxisOptions
+import Amazonka.QuickSight.Types.DateDimensionField
+import Amazonka.QuickSight.Types.DateMeasureField
+import Amazonka.QuickSight.Types.DateTimeDefaultValues
+import Amazonka.QuickSight.Types.DateTimeFormatConfiguration
+import Amazonka.QuickSight.Types.DateTimeHierarchy
+import Amazonka.QuickSight.Types.DateTimeParameter
+import Amazonka.QuickSight.Types.DateTimeParameterDeclaration
+import Amazonka.QuickSight.Types.DateTimePickerControlDisplayOptions
+import Amazonka.QuickSight.Types.DateTimeValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.DecimalDefaultValues
+import Amazonka.QuickSight.Types.DecimalParameter
+import Amazonka.QuickSight.Types.DecimalParameterDeclaration
+import Amazonka.QuickSight.Types.DecimalPlacesConfiguration
+import Amazonka.QuickSight.Types.DecimalValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.DefaultFreeFormLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultGridLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultInteractiveLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultNewSheetConfiguration
+import Amazonka.QuickSight.Types.DefaultPaginatedLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultSectionBasedLayoutConfiguration
+import Amazonka.QuickSight.Types.DestinationParameterValueConfiguration
+import Amazonka.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.DonutCenterOptions
+import Amazonka.QuickSight.Types.DonutOptions
+import Amazonka.QuickSight.Types.DrillDownFilter
+import Amazonka.QuickSight.Types.DropDownControlDisplayOptions
+import Amazonka.QuickSight.Types.DynamicDefaultValue
+import Amazonka.QuickSight.Types.Edition
+import Amazonka.QuickSight.Types.EmbeddingIdentityType
+import Amazonka.QuickSight.Types.EmptyVisual
+import Amazonka.QuickSight.Types.Entity
+import Amazonka.QuickSight.Types.ErrorInfo
+import Amazonka.QuickSight.Types.ExasolParameters
+import Amazonka.QuickSight.Types.ExcludePeriodConfiguration
+import Amazonka.QuickSight.Types.ExplicitHierarchy
+import Amazonka.QuickSight.Types.ExportHiddenFieldsOption
+import Amazonka.QuickSight.Types.ExportToCSVOption
+import Amazonka.QuickSight.Types.FieldBasedTooltip
+import Amazonka.QuickSight.Types.FieldFolder
+import Amazonka.QuickSight.Types.FieldLabelType
+import Amazonka.QuickSight.Types.FieldSeriesItem
+import Amazonka.QuickSight.Types.FieldSort
+import Amazonka.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.FieldTooltipItem
+import Amazonka.QuickSight.Types.FileFormat
+import Amazonka.QuickSight.Types.FilledMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.FilledMapConditionalFormatting
+import Amazonka.QuickSight.Types.FilledMapConditionalFormattingOption
+import Amazonka.QuickSight.Types.FilledMapConfiguration
+import Amazonka.QuickSight.Types.FilledMapFieldWells
+import Amazonka.QuickSight.Types.FilledMapShapeConditionalFormatting
+import Amazonka.QuickSight.Types.FilledMapSortConfiguration
+import Amazonka.QuickSight.Types.FilledMapVisual
+import Amazonka.QuickSight.Types.Filter
+import Amazonka.QuickSight.Types.FilterControl
+import Amazonka.QuickSight.Types.FilterDateTimePickerControl
+import Amazonka.QuickSight.Types.FilterDropDownControl
+import Amazonka.QuickSight.Types.FilterGroup
+import Amazonka.QuickSight.Types.FilterListConfiguration
+import Amazonka.QuickSight.Types.FilterListControl
+import Amazonka.QuickSight.Types.FilterNullOption
+import Amazonka.QuickSight.Types.FilterOperation
+import Amazonka.QuickSight.Types.FilterOperationSelectedFieldsConfiguration
+import Amazonka.QuickSight.Types.FilterOperationTargetVisualsConfiguration
+import Amazonka.QuickSight.Types.FilterOperator
+import Amazonka.QuickSight.Types.FilterRelativeDateTimeControl
+import Amazonka.QuickSight.Types.FilterScopeConfiguration
+import Amazonka.QuickSight.Types.FilterSelectableValues
+import Amazonka.QuickSight.Types.FilterSliderControl
+import Amazonka.QuickSight.Types.FilterTextAreaControl
+import Amazonka.QuickSight.Types.FilterTextFieldControl
+import Amazonka.QuickSight.Types.FilterVisualScope
+import Amazonka.QuickSight.Types.Folder
+import Amazonka.QuickSight.Types.FolderFilterAttribute
+import Amazonka.QuickSight.Types.FolderMember
+import Amazonka.QuickSight.Types.FolderSearchFilter
+import Amazonka.QuickSight.Types.FolderSummary
+import Amazonka.QuickSight.Types.FolderType
+import Amazonka.QuickSight.Types.Font
+import Amazonka.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.FontDecoration
+import Amazonka.QuickSight.Types.FontSize
+import Amazonka.QuickSight.Types.FontStyle
+import Amazonka.QuickSight.Types.FontWeight
+import Amazonka.QuickSight.Types.FontWeightName
+import Amazonka.QuickSight.Types.ForecastComputation
+import Amazonka.QuickSight.Types.ForecastComputationSeasonality
+import Amazonka.QuickSight.Types.ForecastConfiguration
+import Amazonka.QuickSight.Types.ForecastScenario
+import Amazonka.QuickSight.Types.FormatConfiguration
+import Amazonka.QuickSight.Types.FreeFormLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.FreeFormLayoutConfiguration
+import Amazonka.QuickSight.Types.FreeFormLayoutElement
+import Amazonka.QuickSight.Types.FreeFormLayoutElementBackgroundStyle
+import Amazonka.QuickSight.Types.FreeFormLayoutElementBorderStyle
+import Amazonka.QuickSight.Types.FreeFormLayoutScreenCanvasSizeOptions
+import Amazonka.QuickSight.Types.FreeFormSectionLayoutConfiguration
+import Amazonka.QuickSight.Types.FunnelChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.FunnelChartConfiguration
+import Amazonka.QuickSight.Types.FunnelChartDataLabelOptions
+import Amazonka.QuickSight.Types.FunnelChartFieldWells
+import Amazonka.QuickSight.Types.FunnelChartMeasureDataLabelStyle
+import Amazonka.QuickSight.Types.FunnelChartSortConfiguration
+import Amazonka.QuickSight.Types.FunnelChartVisual
+import Amazonka.QuickSight.Types.GaugeChartArcConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartConditionalFormattingOption
+import Amazonka.QuickSight.Types.GaugeChartConfiguration
+import Amazonka.QuickSight.Types.GaugeChartFieldWells
+import Amazonka.QuickSight.Types.GaugeChartOptions
+import Amazonka.QuickSight.Types.GaugeChartPrimaryValueConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartVisual
+import Amazonka.QuickSight.Types.GeoSpatialColumnGroup
+import Amazonka.QuickSight.Types.GeoSpatialCountryCode
+import Amazonka.QuickSight.Types.GeoSpatialDataRole
+import Amazonka.QuickSight.Types.GeospatialCoordinateBounds
+import Amazonka.QuickSight.Types.GeospatialMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.GeospatialMapConfiguration
+import Amazonka.QuickSight.Types.GeospatialMapFieldWells
+import Amazonka.QuickSight.Types.GeospatialMapStyleOptions
+import Amazonka.QuickSight.Types.GeospatialMapVisual
+import Amazonka.QuickSight.Types.GeospatialPointStyleOptions
+import Amazonka.QuickSight.Types.GeospatialSelectedPointStyle
+import Amazonka.QuickSight.Types.GeospatialWindowOptions
+import Amazonka.QuickSight.Types.GlobalTableBorderOptions
+import Amazonka.QuickSight.Types.GradientColor
+import Amazonka.QuickSight.Types.GradientStop
+import Amazonka.QuickSight.Types.GridLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.GridLayoutConfiguration
+import Amazonka.QuickSight.Types.GridLayoutElement
+import Amazonka.QuickSight.Types.GridLayoutScreenCanvasSizeOptions
+import Amazonka.QuickSight.Types.Group
+import Amazonka.QuickSight.Types.GroupFilterAttribute
+import Amazonka.QuickSight.Types.GroupFilterOperator
+import Amazonka.QuickSight.Types.GroupMember
+import Amazonka.QuickSight.Types.GroupSearchFilter
+import Amazonka.QuickSight.Types.GrowthRateComputation
+import Amazonka.QuickSight.Types.GutterStyle
+import Amazonka.QuickSight.Types.HeaderFooterSectionConfiguration
+import Amazonka.QuickSight.Types.HeatMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.HeatMapConfiguration
+import Amazonka.QuickSight.Types.HeatMapFieldWells
+import Amazonka.QuickSight.Types.HeatMapSortConfiguration
+import Amazonka.QuickSight.Types.HeatMapVisual
+import Amazonka.QuickSight.Types.HistogramAggregatedFieldWells
+import Amazonka.QuickSight.Types.HistogramBinOptions
+import Amazonka.QuickSight.Types.HistogramBinType
+import Amazonka.QuickSight.Types.HistogramConfiguration
+import Amazonka.QuickSight.Types.HistogramFieldWells
+import Amazonka.QuickSight.Types.HistogramVisual
+import Amazonka.QuickSight.Types.HorizontalTextAlignment
+import Amazonka.QuickSight.Types.IAMPolicyAssignment
+import Amazonka.QuickSight.Types.IAMPolicyAssignmentSummary
+import Amazonka.QuickSight.Types.Icon
+import Amazonka.QuickSight.Types.IdentityStore
+import Amazonka.QuickSight.Types.IdentityType
+import Amazonka.QuickSight.Types.Ingestion
+import Amazonka.QuickSight.Types.IngestionErrorType
+import Amazonka.QuickSight.Types.IngestionRequestSource
+import Amazonka.QuickSight.Types.IngestionRequestType
+import Amazonka.QuickSight.Types.IngestionStatus
+import Amazonka.QuickSight.Types.IngestionType
+import Amazonka.QuickSight.Types.InputColumn
+import Amazonka.QuickSight.Types.InputColumnDataType
+import Amazonka.QuickSight.Types.InsightConfiguration
+import Amazonka.QuickSight.Types.InsightVisual
+import Amazonka.QuickSight.Types.IntegerDefaultValues
+import Amazonka.QuickSight.Types.IntegerParameter
+import Amazonka.QuickSight.Types.IntegerParameterDeclaration
+import Amazonka.QuickSight.Types.IntegerValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+import Amazonka.QuickSight.Types.JiraParameters
+import Amazonka.QuickSight.Types.JoinInstruction
+import Amazonka.QuickSight.Types.JoinKeyProperties
+import Amazonka.QuickSight.Types.JoinType
+import Amazonka.QuickSight.Types.KPIConditionalFormatting
+import Amazonka.QuickSight.Types.KPIConditionalFormattingOption
+import Amazonka.QuickSight.Types.KPIConfiguration
+import Amazonka.QuickSight.Types.KPIFieldWells
+import Amazonka.QuickSight.Types.KPIOptions
+import Amazonka.QuickSight.Types.KPIPrimaryValueConditionalFormatting
+import Amazonka.QuickSight.Types.KPIProgressBarConditionalFormatting
+import Amazonka.QuickSight.Types.KPISortConfiguration
+import Amazonka.QuickSight.Types.KPIVisual
+import Amazonka.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.Layout
+import Amazonka.QuickSight.Types.LayoutConfiguration
+import Amazonka.QuickSight.Types.LayoutElementType
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.LegendPosition
+import Amazonka.QuickSight.Types.LineChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.LineChartConfiguration
+import Amazonka.QuickSight.Types.LineChartDefaultSeriesSettings
+import Amazonka.QuickSight.Types.LineChartFieldWells
+import Amazonka.QuickSight.Types.LineChartLineStyle
+import Amazonka.QuickSight.Types.LineChartLineStyleSettings
+import Amazonka.QuickSight.Types.LineChartMarkerShape
+import Amazonka.QuickSight.Types.LineChartMarkerStyleSettings
+import Amazonka.QuickSight.Types.LineChartSeriesSettings
+import Amazonka.QuickSight.Types.LineChartSortConfiguration
+import Amazonka.QuickSight.Types.LineChartType
+import Amazonka.QuickSight.Types.LineChartVisual
+import Amazonka.QuickSight.Types.LineInterpolation
+import Amazonka.QuickSight.Types.LineSeriesAxisDisplayOptions
+import Amazonka.QuickSight.Types.LinkSharingConfiguration
+import Amazonka.QuickSight.Types.ListControlDisplayOptions
+import Amazonka.QuickSight.Types.ListControlSearchOptions
+import Amazonka.QuickSight.Types.ListControlSelectAllOptions
+import Amazonka.QuickSight.Types.LoadingAnimation
+import Amazonka.QuickSight.Types.LocalNavigationConfiguration
+import Amazonka.QuickSight.Types.LogicalTable
+import Amazonka.QuickSight.Types.LogicalTableSource
+import Amazonka.QuickSight.Types.LongFormatText
+import Amazonka.QuickSight.Types.ManifestFileLocation
+import Amazonka.QuickSight.Types.MapZoomMode
+import Amazonka.QuickSight.Types.MarginStyle
+import Amazonka.QuickSight.Types.MariaDbParameters
+import Amazonka.QuickSight.Types.MaximumLabelType
+import Amazonka.QuickSight.Types.MaximumMinimumComputation
+import Amazonka.QuickSight.Types.MaximumMinimumComputationType
+import Amazonka.QuickSight.Types.MeasureField
+import Amazonka.QuickSight.Types.MemberIdArnPair
+import Amazonka.QuickSight.Types.MemberType
+import Amazonka.QuickSight.Types.MetricComparisonComputation
+import Amazonka.QuickSight.Types.MinimumLabelType
+import Amazonka.QuickSight.Types.MissingDataConfiguration
+import Amazonka.QuickSight.Types.MissingDataTreatmentOption
+import Amazonka.QuickSight.Types.MySqlParameters
+import Amazonka.QuickSight.Types.NamespaceError
+import Amazonka.QuickSight.Types.NamespaceErrorType
+import Amazonka.QuickSight.Types.NamespaceInfoV2
+import Amazonka.QuickSight.Types.NamespaceStatus
+import Amazonka.QuickSight.Types.NegativeValueConfiguration
+import Amazonka.QuickSight.Types.NegativeValueDisplayMode
+import Amazonka.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumberDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.NumberFormatConfiguration
+import Amazonka.QuickSight.Types.NumberScale
+import Amazonka.QuickSight.Types.NumericAxisOptions
+import Amazonka.QuickSight.Types.NumericEqualityDrillDownFilter
+import Amazonka.QuickSight.Types.NumericEqualityFilter
+import Amazonka.QuickSight.Types.NumericEqualityMatchOperator
+import Amazonka.QuickSight.Types.NumericFilterSelectAllOptions
+import Amazonka.QuickSight.Types.NumericFormatConfiguration
+import Amazonka.QuickSight.Types.NumericRangeFilter
+import Amazonka.QuickSight.Types.NumericRangeFilterValue
+import Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+import Amazonka.QuickSight.Types.NumericSeparatorSymbol
+import Amazonka.QuickSight.Types.NumericalAggregationFunction
+import Amazonka.QuickSight.Types.NumericalDimensionField
+import Amazonka.QuickSight.Types.NumericalMeasureField
+import Amazonka.QuickSight.Types.OracleParameters
+import Amazonka.QuickSight.Types.OtherCategories
+import Amazonka.QuickSight.Types.OutputColumn
+import Amazonka.QuickSight.Types.PaginationConfiguration
+import Amazonka.QuickSight.Types.PanelBorderStyle
+import Amazonka.QuickSight.Types.PanelConfiguration
+import Amazonka.QuickSight.Types.PanelTitleOptions
+import Amazonka.QuickSight.Types.PaperOrientation
+import Amazonka.QuickSight.Types.PaperSize
+import Amazonka.QuickSight.Types.ParameterControl
+import Amazonka.QuickSight.Types.ParameterDateTimePickerControl
+import Amazonka.QuickSight.Types.ParameterDeclaration
+import Amazonka.QuickSight.Types.ParameterDropDownControl
+import Amazonka.QuickSight.Types.ParameterListControl
+import Amazonka.QuickSight.Types.ParameterSelectableValues
+import Amazonka.QuickSight.Types.ParameterSliderControl
+import Amazonka.QuickSight.Types.ParameterTextAreaControl
+import Amazonka.QuickSight.Types.ParameterTextFieldControl
+import Amazonka.QuickSight.Types.ParameterValueType
+import Amazonka.QuickSight.Types.Parameters
+import Amazonka.QuickSight.Types.PercentVisibleRange
+import Amazonka.QuickSight.Types.PercentageDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.PercentileAggregation
+import Amazonka.QuickSight.Types.PeriodOverPeriodComputation
+import Amazonka.QuickSight.Types.PeriodToDateComputation
+import Amazonka.QuickSight.Types.PhysicalTable
+import Amazonka.QuickSight.Types.PieChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.PieChartConfiguration
+import Amazonka.QuickSight.Types.PieChartFieldWells
+import Amazonka.QuickSight.Types.PieChartSortConfiguration
+import Amazonka.QuickSight.Types.PieChartVisual
+import Amazonka.QuickSight.Types.PivotFieldSortOptions
+import Amazonka.QuickSight.Types.PivotTableAggregatedFieldWells
+import Amazonka.QuickSight.Types.PivotTableCellConditionalFormatting
+import Amazonka.QuickSight.Types.PivotTableConditionalFormatting
+import Amazonka.QuickSight.Types.PivotTableConditionalFormattingOption
+import Amazonka.QuickSight.Types.PivotTableConditionalFormattingScope
+import Amazonka.QuickSight.Types.PivotTableConditionalFormattingScopeRole
+import Amazonka.QuickSight.Types.PivotTableConfiguration
+import Amazonka.QuickSight.Types.PivotTableDataPathOption
+import Amazonka.QuickSight.Types.PivotTableFieldOption
+import Amazonka.QuickSight.Types.PivotTableFieldOptions
+import Amazonka.QuickSight.Types.PivotTableFieldSubtotalOptions
+import Amazonka.QuickSight.Types.PivotTableFieldWells
+import Amazonka.QuickSight.Types.PivotTableMetricPlacement
+import Amazonka.QuickSight.Types.PivotTableOptions
+import Amazonka.QuickSight.Types.PivotTablePaginatedReportOptions
+import Amazonka.QuickSight.Types.PivotTableSortBy
+import Amazonka.QuickSight.Types.PivotTableSortConfiguration
+import Amazonka.QuickSight.Types.PivotTableSubtotalLevel
+import Amazonka.QuickSight.Types.PivotTableTotalOptions
+import Amazonka.QuickSight.Types.PivotTableVisual
+import Amazonka.QuickSight.Types.PivotTotalOptions
+import Amazonka.QuickSight.Types.PostgreSqlParameters
+import Amazonka.QuickSight.Types.PredefinedHierarchy
+import Amazonka.QuickSight.Types.PrestoParameters
+import Amazonka.QuickSight.Types.PrimaryValueDisplayType
+import Amazonka.QuickSight.Types.ProgressBarOptions
+import Amazonka.QuickSight.Types.ProjectOperation
+import Amazonka.QuickSight.Types.QueueInfo
+import Amazonka.QuickSight.Types.RangeEndsLabelType
+import Amazonka.QuickSight.Types.RdsParameters
+import Amazonka.QuickSight.Types.RedshiftParameters
+import Amazonka.QuickSight.Types.ReferenceLine
+import Amazonka.QuickSight.Types.ReferenceLineCustomLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineDynamicDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineLabelHorizontalPosition
+import Amazonka.QuickSight.Types.ReferenceLineLabelVerticalPosition
+import Amazonka.QuickSight.Types.ReferenceLinePatternType
+import Amazonka.QuickSight.Types.ReferenceLineStaticDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineStyleConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineValueLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineValueLabelRelativePosition
+import Amazonka.QuickSight.Types.RegisteredUserDashboardEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserDashboardVisualEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserEmbeddingExperienceConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserQSearchBarEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserQuickSightConsoleEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RelationalTable
+import Amazonka.QuickSight.Types.RelativeDateTimeControlDisplayOptions
+import Amazonka.QuickSight.Types.RelativeDateType
+import Amazonka.QuickSight.Types.RelativeDatesFilter
+import Amazonka.QuickSight.Types.RelativeFontSize
+import Amazonka.QuickSight.Types.RenameColumnOperation
+import Amazonka.QuickSight.Types.ResizeOption
+import Amazonka.QuickSight.Types.ResourcePermission
+import Amazonka.QuickSight.Types.ResourceStatus
+import Amazonka.QuickSight.Types.RollingDateConfiguration
+import Amazonka.QuickSight.Types.RowAlternateColorOptions
+import Amazonka.QuickSight.Types.RowInfo
+import Amazonka.QuickSight.Types.RowLevelPermissionDataSet
+import Amazonka.QuickSight.Types.RowLevelPermissionFormatVersion
+import Amazonka.QuickSight.Types.RowLevelPermissionPolicy
+import Amazonka.QuickSight.Types.RowLevelPermissionTagConfiguration
+import Amazonka.QuickSight.Types.RowLevelPermissionTagRule
+import Amazonka.QuickSight.Types.S3Parameters
+import Amazonka.QuickSight.Types.S3Source
+import Amazonka.QuickSight.Types.SameSheetTargetVisualConfiguration
+import Amazonka.QuickSight.Types.SankeyDiagramAggregatedFieldWells
+import Amazonka.QuickSight.Types.SankeyDiagramChartConfiguration
+import Amazonka.QuickSight.Types.SankeyDiagramFieldWells
+import Amazonka.QuickSight.Types.SankeyDiagramSortConfiguration
+import Amazonka.QuickSight.Types.SankeyDiagramVisual
+import Amazonka.QuickSight.Types.ScatterPlotCategoricallyAggregatedFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotConfiguration
+import Amazonka.QuickSight.Types.ScatterPlotFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotUnaggregatedFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotVisual
+import Amazonka.QuickSight.Types.ScrollBarOptions
+import Amazonka.QuickSight.Types.SecondaryValueOptions
+import Amazonka.QuickSight.Types.SectionAfterPageBreak
+import Amazonka.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.SectionBasedLayoutConfiguration
+import Amazonka.QuickSight.Types.SectionBasedLayoutPaperCanvasSizeOptions
+import Amazonka.QuickSight.Types.SectionLayoutConfiguration
+import Amazonka.QuickSight.Types.SectionPageBreakConfiguration
+import Amazonka.QuickSight.Types.SectionPageBreakStatus
+import Amazonka.QuickSight.Types.SectionStyle
+import Amazonka.QuickSight.Types.SelectAllValueOptions
+import Amazonka.QuickSight.Types.SelectedFieldOptions
+import Amazonka.QuickSight.Types.SelectedSheetsFilterScopeConfiguration
+import Amazonka.QuickSight.Types.SelectedTooltipType
+import Amazonka.QuickSight.Types.SeriesItem
+import Amazonka.QuickSight.Types.ServiceNowParameters
+import Amazonka.QuickSight.Types.SessionTag
+import Amazonka.QuickSight.Types.SetParameterValueConfiguration
+import Amazonka.QuickSight.Types.ShapeConditionalFormat
+import Amazonka.QuickSight.Types.Sheet
+import Amazonka.QuickSight.Types.SheetContentType
+import Amazonka.QuickSight.Types.SheetControlDateTimePickerType
+import Amazonka.QuickSight.Types.SheetControlLayout
+import Amazonka.QuickSight.Types.SheetControlLayoutConfiguration
+import Amazonka.QuickSight.Types.SheetControlListType
+import Amazonka.QuickSight.Types.SheetControlSliderType
+import Amazonka.QuickSight.Types.SheetControlsOption
+import Amazonka.QuickSight.Types.SheetDefinition
+import Amazonka.QuickSight.Types.SheetElementConfigurationOverrides
+import Amazonka.QuickSight.Types.SheetElementRenderingRule
+import Amazonka.QuickSight.Types.SheetStyle
+import Amazonka.QuickSight.Types.SheetTextBox
+import Amazonka.QuickSight.Types.SheetVisualScopingConfiguration
+import Amazonka.QuickSight.Types.ShortFormatText
+import Amazonka.QuickSight.Types.SignupResponse
+import Amazonka.QuickSight.Types.SimpleClusterMarker
+import Amazonka.QuickSight.Types.SimpleNumericalAggregationFunction
+import Amazonka.QuickSight.Types.SliderControlDisplayOptions
+import Amazonka.QuickSight.Types.SmallMultiplesOptions
+import Amazonka.QuickSight.Types.SnowflakeParameters
+import Amazonka.QuickSight.Types.SortDirection
+import Amazonka.QuickSight.Types.Spacing
+import Amazonka.QuickSight.Types.SparkParameters
+import Amazonka.QuickSight.Types.SqlServerParameters
+import Amazonka.QuickSight.Types.SslProperties
+import Amazonka.QuickSight.Types.Status
+import Amazonka.QuickSight.Types.StringDefaultValues
+import Amazonka.QuickSight.Types.StringFormatConfiguration
+import Amazonka.QuickSight.Types.StringParameter
+import Amazonka.QuickSight.Types.StringParameterDeclaration
+import Amazonka.QuickSight.Types.StringValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.SubtotalOptions
+import Amazonka.QuickSight.Types.TableAggregatedFieldWells
+import Amazonka.QuickSight.Types.TableBorderOptions
+import Amazonka.QuickSight.Types.TableBorderStyle
+import Amazonka.QuickSight.Types.TableCellConditionalFormatting
+import Amazonka.QuickSight.Types.TableCellImageScalingConfiguration
+import Amazonka.QuickSight.Types.TableCellImageSizingConfiguration
+import Amazonka.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.TableConditionalFormatting
+import Amazonka.QuickSight.Types.TableConditionalFormattingOption
+import Amazonka.QuickSight.Types.TableConfiguration
+import Amazonka.QuickSight.Types.TableFieldCustomIconContent
+import Amazonka.QuickSight.Types.TableFieldCustomTextContent
+import Amazonka.QuickSight.Types.TableFieldIconSetType
+import Amazonka.QuickSight.Types.TableFieldImageConfiguration
+import Amazonka.QuickSight.Types.TableFieldLinkConfiguration
+import Amazonka.QuickSight.Types.TableFieldLinkContentConfiguration
+import Amazonka.QuickSight.Types.TableFieldOption
+import Amazonka.QuickSight.Types.TableFieldOptions
+import Amazonka.QuickSight.Types.TableFieldURLConfiguration
+import Amazonka.QuickSight.Types.TableFieldWells
+import Amazonka.QuickSight.Types.TableOptions
+import Amazonka.QuickSight.Types.TableOrientation
+import Amazonka.QuickSight.Types.TablePaginatedReportOptions
+import Amazonka.QuickSight.Types.TableRowConditionalFormatting
+import Amazonka.QuickSight.Types.TableSideBorderOptions
+import Amazonka.QuickSight.Types.TableSortConfiguration
+import Amazonka.QuickSight.Types.TableTotalsPlacement
+import Amazonka.QuickSight.Types.TableTotalsScrollStatus
+import Amazonka.QuickSight.Types.TableUnaggregatedFieldWells
+import Amazonka.QuickSight.Types.TableVisual
+import Amazonka.QuickSight.Types.Tag
+import Amazonka.QuickSight.Types.TagColumnOperation
+import Amazonka.QuickSight.Types.TargetVisualOptions
+import Amazonka.QuickSight.Types.Template
+import Amazonka.QuickSight.Types.TemplateAlias
+import Amazonka.QuickSight.Types.TemplateError
+import Amazonka.QuickSight.Types.TemplateErrorType
+import Amazonka.QuickSight.Types.TemplateSourceAnalysis
+import Amazonka.QuickSight.Types.TemplateSourceEntity
+import Amazonka.QuickSight.Types.TemplateSourceTemplate
+import Amazonka.QuickSight.Types.TemplateSummary
+import Amazonka.QuickSight.Types.TemplateVersion
+import Amazonka.QuickSight.Types.TemplateVersionDefinition
+import Amazonka.QuickSight.Types.TemplateVersionSummary
+import Amazonka.QuickSight.Types.TeradataParameters
+import Amazonka.QuickSight.Types.TextAreaControlDisplayOptions
+import Amazonka.QuickSight.Types.TextConditionalFormat
+import Amazonka.QuickSight.Types.TextControlPlaceholderOptions
+import Amazonka.QuickSight.Types.TextFieldControlDisplayOptions
+import Amazonka.QuickSight.Types.TextQualifier
+import Amazonka.QuickSight.Types.TextWrap
+import Amazonka.QuickSight.Types.Theme
+import Amazonka.QuickSight.Types.ThemeAlias
+import Amazonka.QuickSight.Types.ThemeConfiguration
+import Amazonka.QuickSight.Types.ThemeError
+import Amazonka.QuickSight.Types.ThemeErrorType
+import Amazonka.QuickSight.Types.ThemeSummary
+import Amazonka.QuickSight.Types.ThemeType
+import Amazonka.QuickSight.Types.ThemeVersion
+import Amazonka.QuickSight.Types.ThemeVersionSummary
+import Amazonka.QuickSight.Types.ThousandSeparatorOptions
+import Amazonka.QuickSight.Types.TileLayoutStyle
+import Amazonka.QuickSight.Types.TileStyle
+import Amazonka.QuickSight.Types.TimeBasedForecastProperties
+import Amazonka.QuickSight.Types.TimeEqualityFilter
+import Amazonka.QuickSight.Types.TimeGranularity
+import Amazonka.QuickSight.Types.TimeRangeDrillDownFilter
+import Amazonka.QuickSight.Types.TimeRangeFilter
+import Amazonka.QuickSight.Types.TimeRangeFilterValue
+import Amazonka.QuickSight.Types.TooltipItem
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.TooltipTitleType
+import Amazonka.QuickSight.Types.TopBottomComputationType
+import Amazonka.QuickSight.Types.TopBottomFilter
+import Amazonka.QuickSight.Types.TopBottomMoversComputation
+import Amazonka.QuickSight.Types.TopBottomRankedComputation
+import Amazonka.QuickSight.Types.TopBottomSortOrder
+import Amazonka.QuickSight.Types.TotalAggregationComputation
+import Amazonka.QuickSight.Types.TotalOptions
+import Amazonka.QuickSight.Types.TransformOperation
+import Amazonka.QuickSight.Types.TreeMapAggregatedFieldWells
+import Amazonka.QuickSight.Types.TreeMapConfiguration
+import Amazonka.QuickSight.Types.TreeMapFieldWells
+import Amazonka.QuickSight.Types.TreeMapSortConfiguration
+import Amazonka.QuickSight.Types.TreeMapVisual
+import Amazonka.QuickSight.Types.TrendArrowOptions
+import Amazonka.QuickSight.Types.TwitterParameters
+import Amazonka.QuickSight.Types.Typography
+import Amazonka.QuickSight.Types.UIColorPalette
+import Amazonka.QuickSight.Types.URLTargetConfiguration
+import Amazonka.QuickSight.Types.UnaggregatedField
+import Amazonka.QuickSight.Types.UniqueValuesComputation
+import Amazonka.QuickSight.Types.UntagColumnOperation
+import Amazonka.QuickSight.Types.UploadSettings
+import Amazonka.QuickSight.Types.User
+import Amazonka.QuickSight.Types.UserRole
+import Amazonka.QuickSight.Types.ValueWhenUnsetOption
+import Amazonka.QuickSight.Types.VerticalTextAlignment
+import Amazonka.QuickSight.Types.Visibility
+import Amazonka.QuickSight.Types.VisibleRangeOptions
+import Amazonka.QuickSight.Types.Visual
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualCustomActionOperation
+import Amazonka.QuickSight.Types.VisualCustomActionTrigger
+import Amazonka.QuickSight.Types.VisualPalette
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+import Amazonka.QuickSight.Types.VpcConnectionProperties
+import Amazonka.QuickSight.Types.WaterfallChartAggregatedFieldWells
+import Amazonka.QuickSight.Types.WaterfallChartConfiguration
+import Amazonka.QuickSight.Types.WaterfallChartFieldWells
+import Amazonka.QuickSight.Types.WaterfallChartOptions
+import Amazonka.QuickSight.Types.WaterfallChartSortConfiguration
+import Amazonka.QuickSight.Types.WaterfallVisual
+import Amazonka.QuickSight.Types.WhatIfPointScenario
+import Amazonka.QuickSight.Types.WhatIfRangeScenario
+import Amazonka.QuickSight.Types.WidgetStatus
+import Amazonka.QuickSight.Types.WordCloudAggregatedFieldWells
+import Amazonka.QuickSight.Types.WordCloudChartConfiguration
+import Amazonka.QuickSight.Types.WordCloudCloudLayout
+import Amazonka.QuickSight.Types.WordCloudFieldWells
+import Amazonka.QuickSight.Types.WordCloudOptions
+import Amazonka.QuickSight.Types.WordCloudSortConfiguration
+import Amazonka.QuickSight.Types.WordCloudVisual
+import Amazonka.QuickSight.Types.WordCloudWordCasing
+import Amazonka.QuickSight.Types.WordCloudWordOrientation
+import Amazonka.QuickSight.Types.WordCloudWordPadding
+import Amazonka.QuickSight.Types.WordCloudWordScaling
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2018-04-01@ of the Amazon QuickSight SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "QuickSight",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "quicksight",
+      Core.signingName = "quicksight",
+      Core.version = "2018-04-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "QuickSight",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | You don\'t have access to this item. The provided credentials couldn\'t
+-- be validated. You might not be authorized to carry out the request. Make
+-- sure that your account is authorized to use the Amazon QuickSight
+-- service, that your policies have the correct permissions, and that you
+-- are using the correct access keys.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 401
+
+-- | A resource is already in a state that indicates an operation is
+-- happening that must complete before a new update can be applied.
+_ConcurrentUpdatingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConcurrentUpdatingException =
+  Core._MatchServiceError
+    defaultService
+    "ConcurrentUpdatingException"
+    Prelude.. Core.hasStatus 500
+
+-- | Updating or deleting a resource can cause an inconsistent state.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The domain specified isn\'t on the allow list. All domains for embedded
+-- dashboards must be added to the approved list by an Amazon QuickSight
+-- admin.
+_DomainNotWhitelistedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DomainNotWhitelistedException =
+  Core._MatchServiceError
+    defaultService
+    "DomainNotWhitelistedException"
+    Prelude.. Core.hasStatus 403
+
+-- | The identity type specified isn\'t supported. Supported identity types
+-- include @IAM@ and @QUICKSIGHT@.
+_IdentityTypeNotSupportedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_IdentityTypeNotSupportedException =
+  Core._MatchServiceError
+    defaultService
+    "IdentityTypeNotSupportedException"
+    Prelude.. Core.hasStatus 403
+
+-- | An internal failure occurred.
+_InternalFailureException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalFailureException =
+  Core._MatchServiceError
+    defaultService
+    "InternalFailureException"
+    Prelude.. Core.hasStatus 500
+
+-- | The @NextToken@ value isn\'t valid.
+_InvalidNextTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidNextTokenException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidNextTokenException"
+    Prelude.. Core.hasStatus 400
+
+-- | One or more parameters has a value that isn\'t valid.
+_InvalidParameterValueException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidParameterValueException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidParameterValueException"
+    Prelude.. Core.hasStatus 400
+
+-- | You don\'t have this feature activated for your account. To fix this
+-- issue, contact Amazon Web Services support.
+_InvalidRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidRequestException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | A limit is exceeded.
+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "LimitExceededException"
+    Prelude.. Core.hasStatus 409
+
+-- | One or more preconditions aren\'t met.
+_PreconditionNotMetException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_PreconditionNotMetException =
+  Core._MatchServiceError
+    defaultService
+    "PreconditionNotMetException"
+    Prelude.. Core.hasStatus 400
+
+-- | The user with the provided name isn\'t found. This error can happen in
+-- any operation that requires finding a user based on a provided user
+-- name, such as @DeleteUser@, @DescribeUser@, and so on.
+_QuickSightUserNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_QuickSightUserNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "QuickSightUserNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The resource specified already exists.
+_ResourceExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceExistsException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceExistsException"
+    Prelude.. Core.hasStatus 409
+
+-- | One or more resources can\'t be found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | This resource is currently unavailable.
+_ResourceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | The number of minutes specified for the lifetime of a session isn\'t
+-- valid. The session lifetime must be 15-600 minutes.
+_SessionLifetimeInMinutesInvalidException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SessionLifetimeInMinutesInvalidException =
+  Core._MatchServiceError
+    defaultService
+    "SessionLifetimeInMinutesInvalidException"
+    Prelude.. Core.hasStatus 400
+
+-- | Access is throttled.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | This error indicates that you are calling an embedding operation in
+-- Amazon QuickSight without the required pricing plan on your Amazon Web
+-- Services account. Before you can use embedding for anonymous users, a
+-- QuickSight administrator needs to add capacity pricing to Amazon
+-- QuickSight. You can do this on the __Manage Amazon QuickSight__ page.
+--
+-- After capacity pricing is added, you can use the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html GetDashboardEmbedUrl>@ @
+-- API operation with the @--identity-type ANONYMOUS@ option.
+_UnsupportedPricingPlanException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnsupportedPricingPlanException =
+  Core._MatchServiceError
+    defaultService
+    "UnsupportedPricingPlanException"
+    Prelude.. Core.hasStatus 403
+
+-- | This error indicates that you are calling an operation on an Amazon
+-- QuickSight subscription where the edition doesn\'t include support for
+-- that operation. Amazon Amazon QuickSight currently has Standard Edition
+-- and Enterprise Edition. Not every operation and capability is available
+-- in every edition.
+_UnsupportedUserEditionException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnsupportedUserEditionException =
+  Core._MatchServiceError
+    defaultService
+    "UnsupportedUserEditionException"
+    Prelude.. Core.hasStatus 403
diff --git a/gen/Amazonka/QuickSight/Types/AccountCustomization.hs b/gen/Amazonka/QuickSight/Types/AccountCustomization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AccountCustomization.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AccountCustomization
+-- 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.QuickSight.Types.AccountCustomization 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 Amazon QuickSight customizations associated with your Amazon Web
+-- Services account or a QuickSight namespace in a specific Amazon Web
+-- Services Region.
+--
+-- /See:/ 'newAccountCustomization' smart constructor.
+data AccountCustomization = AccountCustomization'
+  { -- | The default email customization template.
+    defaultEmailCustomizationTemplate :: Prelude.Maybe Prelude.Text,
+    -- | The default theme for this Amazon QuickSight subscription.
+    defaultTheme :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountCustomization' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultEmailCustomizationTemplate', 'accountCustomization_defaultEmailCustomizationTemplate' - The default email customization template.
+--
+-- 'defaultTheme', 'accountCustomization_defaultTheme' - The default theme for this Amazon QuickSight subscription.
+newAccountCustomization ::
+  AccountCustomization
+newAccountCustomization =
+  AccountCustomization'
+    { defaultEmailCustomizationTemplate =
+        Prelude.Nothing,
+      defaultTheme = Prelude.Nothing
+    }
+
+-- | The default email customization template.
+accountCustomization_defaultEmailCustomizationTemplate :: Lens.Lens' AccountCustomization (Prelude.Maybe Prelude.Text)
+accountCustomization_defaultEmailCustomizationTemplate = Lens.lens (\AccountCustomization' {defaultEmailCustomizationTemplate} -> defaultEmailCustomizationTemplate) (\s@AccountCustomization' {} a -> s {defaultEmailCustomizationTemplate = a} :: AccountCustomization)
+
+-- | The default theme for this Amazon QuickSight subscription.
+accountCustomization_defaultTheme :: Lens.Lens' AccountCustomization (Prelude.Maybe Prelude.Text)
+accountCustomization_defaultTheme = Lens.lens (\AccountCustomization' {defaultTheme} -> defaultTheme) (\s@AccountCustomization' {} a -> s {defaultTheme = a} :: AccountCustomization)
+
+instance Data.FromJSON AccountCustomization where
+  parseJSON =
+    Data.withObject
+      "AccountCustomization"
+      ( \x ->
+          AccountCustomization'
+            Prelude.<$> (x Data..:? "DefaultEmailCustomizationTemplate")
+            Prelude.<*> (x Data..:? "DefaultTheme")
+      )
+
+instance Prelude.Hashable AccountCustomization where
+  hashWithSalt _salt AccountCustomization' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultEmailCustomizationTemplate
+      `Prelude.hashWithSalt` defaultTheme
+
+instance Prelude.NFData AccountCustomization where
+  rnf AccountCustomization' {..} =
+    Prelude.rnf defaultEmailCustomizationTemplate
+      `Prelude.seq` Prelude.rnf defaultTheme
+
+instance Data.ToJSON AccountCustomization where
+  toJSON AccountCustomization' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultEmailCustomizationTemplate" Data..=)
+              Prelude.<$> defaultEmailCustomizationTemplate,
+            ("DefaultTheme" Data..=) Prelude.<$> defaultTheme
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AccountInfo.hs b/gen/Amazonka/QuickSight/Types/AccountInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AccountInfo.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AccountInfo
+-- 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.QuickSight.Types.AccountInfo 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.QuickSight.Types.Edition
+
+-- | A structure that contains the following account information elements:
+--
+-- -   Your Amazon QuickSight account name.
+--
+-- -   The edition of Amazon QuickSight that your account is using.
+--
+-- -   The notification email address that is associated with the Amazon
+--     QuickSight account.
+--
+-- -   The authentication type of the Amazon QuickSight account.
+--
+-- -   The status of the Amazon QuickSight account\'s subscription.
+--
+-- /See:/ 'newAccountInfo' smart constructor.
+data AccountInfo = AccountInfo'
+  { -- | The account name that you provided for the Amazon QuickSight
+    -- subscription in your Amazon Web Services account. You create this name
+    -- when you sign up for Amazon QuickSight. It\'s unique over all of Amazon
+    -- Web Services, and it appears only when users sign in.
+    accountName :: Prelude.Maybe Prelude.Text,
+    -- | The status of your account subscription.
+    accountSubscriptionStatus :: Prelude.Maybe Prelude.Text,
+    -- | The way that your Amazon QuickSight account is authenticated.
+    authenticationType :: Prelude.Maybe Prelude.Text,
+    -- | The edition of your Amazon QuickSight account.
+    edition :: Prelude.Maybe Edition,
+    -- | The email address that will be used for Amazon QuickSight to send
+    -- notifications regarding your Amazon Web Services account or Amazon
+    -- QuickSight subscription.
+    notificationEmail :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountName', 'accountInfo_accountName' - The account name that you provided for the Amazon QuickSight
+-- subscription in your Amazon Web Services account. You create this name
+-- when you sign up for Amazon QuickSight. It\'s unique over all of Amazon
+-- Web Services, and it appears only when users sign in.
+--
+-- 'accountSubscriptionStatus', 'accountInfo_accountSubscriptionStatus' - The status of your account subscription.
+--
+-- 'authenticationType', 'accountInfo_authenticationType' - The way that your Amazon QuickSight account is authenticated.
+--
+-- 'edition', 'accountInfo_edition' - The edition of your Amazon QuickSight account.
+--
+-- 'notificationEmail', 'accountInfo_notificationEmail' - The email address that will be used for Amazon QuickSight to send
+-- notifications regarding your Amazon Web Services account or Amazon
+-- QuickSight subscription.
+newAccountInfo ::
+  AccountInfo
+newAccountInfo =
+  AccountInfo'
+    { accountName = Prelude.Nothing,
+      accountSubscriptionStatus = Prelude.Nothing,
+      authenticationType = Prelude.Nothing,
+      edition = Prelude.Nothing,
+      notificationEmail = Prelude.Nothing
+    }
+
+-- | The account name that you provided for the Amazon QuickSight
+-- subscription in your Amazon Web Services account. You create this name
+-- when you sign up for Amazon QuickSight. It\'s unique over all of Amazon
+-- Web Services, and it appears only when users sign in.
+accountInfo_accountName :: Lens.Lens' AccountInfo (Prelude.Maybe Prelude.Text)
+accountInfo_accountName = Lens.lens (\AccountInfo' {accountName} -> accountName) (\s@AccountInfo' {} a -> s {accountName = a} :: AccountInfo)
+
+-- | The status of your account subscription.
+accountInfo_accountSubscriptionStatus :: Lens.Lens' AccountInfo (Prelude.Maybe Prelude.Text)
+accountInfo_accountSubscriptionStatus = Lens.lens (\AccountInfo' {accountSubscriptionStatus} -> accountSubscriptionStatus) (\s@AccountInfo' {} a -> s {accountSubscriptionStatus = a} :: AccountInfo)
+
+-- | The way that your Amazon QuickSight account is authenticated.
+accountInfo_authenticationType :: Lens.Lens' AccountInfo (Prelude.Maybe Prelude.Text)
+accountInfo_authenticationType = Lens.lens (\AccountInfo' {authenticationType} -> authenticationType) (\s@AccountInfo' {} a -> s {authenticationType = a} :: AccountInfo)
+
+-- | The edition of your Amazon QuickSight account.
+accountInfo_edition :: Lens.Lens' AccountInfo (Prelude.Maybe Edition)
+accountInfo_edition = Lens.lens (\AccountInfo' {edition} -> edition) (\s@AccountInfo' {} a -> s {edition = a} :: AccountInfo)
+
+-- | The email address that will be used for Amazon QuickSight to send
+-- notifications regarding your Amazon Web Services account or Amazon
+-- QuickSight subscription.
+accountInfo_notificationEmail :: Lens.Lens' AccountInfo (Prelude.Maybe Prelude.Text)
+accountInfo_notificationEmail = Lens.lens (\AccountInfo' {notificationEmail} -> notificationEmail) (\s@AccountInfo' {} a -> s {notificationEmail = a} :: AccountInfo)
+
+instance Data.FromJSON AccountInfo where
+  parseJSON =
+    Data.withObject
+      "AccountInfo"
+      ( \x ->
+          AccountInfo'
+            Prelude.<$> (x Data..:? "AccountName")
+            Prelude.<*> (x Data..:? "AccountSubscriptionStatus")
+            Prelude.<*> (x Data..:? "AuthenticationType")
+            Prelude.<*> (x Data..:? "Edition")
+            Prelude.<*> (x Data..:? "NotificationEmail")
+      )
+
+instance Prelude.Hashable AccountInfo where
+  hashWithSalt _salt AccountInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountName
+      `Prelude.hashWithSalt` accountSubscriptionStatus
+      `Prelude.hashWithSalt` authenticationType
+      `Prelude.hashWithSalt` edition
+      `Prelude.hashWithSalt` notificationEmail
+
+instance Prelude.NFData AccountInfo where
+  rnf AccountInfo' {..} =
+    Prelude.rnf accountName
+      `Prelude.seq` Prelude.rnf accountSubscriptionStatus
+      `Prelude.seq` Prelude.rnf authenticationType
+      `Prelude.seq` Prelude.rnf edition
+      `Prelude.seq` Prelude.rnf notificationEmail
diff --git a/gen/Amazonka/QuickSight/Types/AccountSettings.hs b/gen/Amazonka/QuickSight/Types/AccountSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AccountSettings.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AccountSettings
+-- 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.QuickSight.Types.AccountSettings 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.QuickSight.Types.Edition
+
+-- | The Amazon QuickSight settings associated with your Amazon Web Services
+-- account.
+--
+-- /See:/ 'newAccountSettings' smart constructor.
+data AccountSettings = AccountSettings'
+  { -- | The \"account name\" you provided for the Amazon QuickSight subscription
+    -- in your Amazon Web Services account. You create this name when you sign
+    -- up for Amazon QuickSight. It is unique in all of Amazon Web Services and
+    -- it appears only when users sign in.
+    accountName :: Prelude.Maybe Prelude.Text,
+    -- | The default Amazon QuickSight namespace for your Amazon Web Services
+    -- account.
+    defaultNamespace :: Prelude.Maybe Prelude.Text,
+    -- | The edition of Amazon QuickSight that you\'re currently subscribed to:
+    -- Enterprise edition or Standard edition.
+    edition :: Prelude.Maybe Edition,
+    -- | The main notification email for your Amazon QuickSight subscription.
+    notificationEmail :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean value that indicates whether public sharing is turned on for
+    -- an Amazon QuickSight account. For more information about turning on
+    -- public sharing, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdatePublicSharingSettings.html UpdatePublicSharingSettings>.
+    publicSharingEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | A boolean value that determines whether or not an Amazon QuickSight
+    -- account can be deleted. A @True@ value doesn\'t allow the account to be
+    -- deleted and results in an error message if a user tries to make a
+    -- @DeleteAccountSubsctiption@ request. A @False@ value will allow the
+    -- ccount to be deleted.
+    terminationProtectionEnabled :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountName', 'accountSettings_accountName' - The \"account name\" you provided for the Amazon QuickSight subscription
+-- in your Amazon Web Services account. You create this name when you sign
+-- up for Amazon QuickSight. It is unique in all of Amazon Web Services and
+-- it appears only when users sign in.
+--
+-- 'defaultNamespace', 'accountSettings_defaultNamespace' - The default Amazon QuickSight namespace for your Amazon Web Services
+-- account.
+--
+-- 'edition', 'accountSettings_edition' - The edition of Amazon QuickSight that you\'re currently subscribed to:
+-- Enterprise edition or Standard edition.
+--
+-- 'notificationEmail', 'accountSettings_notificationEmail' - The main notification email for your Amazon QuickSight subscription.
+--
+-- 'publicSharingEnabled', 'accountSettings_publicSharingEnabled' - A Boolean value that indicates whether public sharing is turned on for
+-- an Amazon QuickSight account. For more information about turning on
+-- public sharing, see
+-- <https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdatePublicSharingSettings.html UpdatePublicSharingSettings>.
+--
+-- 'terminationProtectionEnabled', 'accountSettings_terminationProtectionEnabled' - A boolean value that determines whether or not an Amazon QuickSight
+-- account can be deleted. A @True@ value doesn\'t allow the account to be
+-- deleted and results in an error message if a user tries to make a
+-- @DeleteAccountSubsctiption@ request. A @False@ value will allow the
+-- ccount to be deleted.
+newAccountSettings ::
+  AccountSettings
+newAccountSettings =
+  AccountSettings'
+    { accountName = Prelude.Nothing,
+      defaultNamespace = Prelude.Nothing,
+      edition = Prelude.Nothing,
+      notificationEmail = Prelude.Nothing,
+      publicSharingEnabled = Prelude.Nothing,
+      terminationProtectionEnabled = Prelude.Nothing
+    }
+
+-- | The \"account name\" you provided for the Amazon QuickSight subscription
+-- in your Amazon Web Services account. You create this name when you sign
+-- up for Amazon QuickSight. It is unique in all of Amazon Web Services and
+-- it appears only when users sign in.
+accountSettings_accountName :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Text)
+accountSettings_accountName = Lens.lens (\AccountSettings' {accountName} -> accountName) (\s@AccountSettings' {} a -> s {accountName = a} :: AccountSettings)
+
+-- | The default Amazon QuickSight namespace for your Amazon Web Services
+-- account.
+accountSettings_defaultNamespace :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Text)
+accountSettings_defaultNamespace = Lens.lens (\AccountSettings' {defaultNamespace} -> defaultNamespace) (\s@AccountSettings' {} a -> s {defaultNamespace = a} :: AccountSettings)
+
+-- | The edition of Amazon QuickSight that you\'re currently subscribed to:
+-- Enterprise edition or Standard edition.
+accountSettings_edition :: Lens.Lens' AccountSettings (Prelude.Maybe Edition)
+accountSettings_edition = Lens.lens (\AccountSettings' {edition} -> edition) (\s@AccountSettings' {} a -> s {edition = a} :: AccountSettings)
+
+-- | The main notification email for your Amazon QuickSight subscription.
+accountSettings_notificationEmail :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Text)
+accountSettings_notificationEmail = Lens.lens (\AccountSettings' {notificationEmail} -> notificationEmail) (\s@AccountSettings' {} a -> s {notificationEmail = a} :: AccountSettings)
+
+-- | A Boolean value that indicates whether public sharing is turned on for
+-- an Amazon QuickSight account. For more information about turning on
+-- public sharing, see
+-- <https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdatePublicSharingSettings.html UpdatePublicSharingSettings>.
+accountSettings_publicSharingEnabled :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Bool)
+accountSettings_publicSharingEnabled = Lens.lens (\AccountSettings' {publicSharingEnabled} -> publicSharingEnabled) (\s@AccountSettings' {} a -> s {publicSharingEnabled = a} :: AccountSettings)
+
+-- | A boolean value that determines whether or not an Amazon QuickSight
+-- account can be deleted. A @True@ value doesn\'t allow the account to be
+-- deleted and results in an error message if a user tries to make a
+-- @DeleteAccountSubsctiption@ request. A @False@ value will allow the
+-- ccount to be deleted.
+accountSettings_terminationProtectionEnabled :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Bool)
+accountSettings_terminationProtectionEnabled = Lens.lens (\AccountSettings' {terminationProtectionEnabled} -> terminationProtectionEnabled) (\s@AccountSettings' {} a -> s {terminationProtectionEnabled = a} :: AccountSettings)
+
+instance Data.FromJSON AccountSettings where
+  parseJSON =
+    Data.withObject
+      "AccountSettings"
+      ( \x ->
+          AccountSettings'
+            Prelude.<$> (x Data..:? "AccountName")
+            Prelude.<*> (x Data..:? "DefaultNamespace")
+            Prelude.<*> (x Data..:? "Edition")
+            Prelude.<*> (x Data..:? "NotificationEmail")
+            Prelude.<*> (x Data..:? "PublicSharingEnabled")
+            Prelude.<*> (x Data..:? "TerminationProtectionEnabled")
+      )
+
+instance Prelude.Hashable AccountSettings where
+  hashWithSalt _salt AccountSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountName
+      `Prelude.hashWithSalt` defaultNamespace
+      `Prelude.hashWithSalt` edition
+      `Prelude.hashWithSalt` notificationEmail
+      `Prelude.hashWithSalt` publicSharingEnabled
+      `Prelude.hashWithSalt` terminationProtectionEnabled
+
+instance Prelude.NFData AccountSettings where
+  rnf AccountSettings' {..} =
+    Prelude.rnf accountName
+      `Prelude.seq` Prelude.rnf defaultNamespace
+      `Prelude.seq` Prelude.rnf edition
+      `Prelude.seq` Prelude.rnf notificationEmail
+      `Prelude.seq` Prelude.rnf publicSharingEnabled
+      `Prelude.seq` Prelude.rnf terminationProtectionEnabled
diff --git a/gen/Amazonka/QuickSight/Types/ActiveIAMPolicyAssignment.hs b/gen/Amazonka/QuickSight/Types/ActiveIAMPolicyAssignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ActiveIAMPolicyAssignment.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ActiveIAMPolicyAssignment
+-- 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.QuickSight.Types.ActiveIAMPolicyAssignment 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 active Identity and Access Management (IAM) policy assignment.
+--
+-- /See:/ 'newActiveIAMPolicyAssignment' smart constructor.
+data ActiveIAMPolicyAssignment = ActiveIAMPolicyAssignment'
+  { -- | A name for the IAM policy assignment.
+    assignmentName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the resource.
+    policyArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActiveIAMPolicyAssignment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentName', 'activeIAMPolicyAssignment_assignmentName' - A name for the IAM policy assignment.
+--
+-- 'policyArn', 'activeIAMPolicyAssignment_policyArn' - The Amazon Resource Name (ARN) of the resource.
+newActiveIAMPolicyAssignment ::
+  ActiveIAMPolicyAssignment
+newActiveIAMPolicyAssignment =
+  ActiveIAMPolicyAssignment'
+    { assignmentName =
+        Prelude.Nothing,
+      policyArn = Prelude.Nothing
+    }
+
+-- | A name for the IAM policy assignment.
+activeIAMPolicyAssignment_assignmentName :: Lens.Lens' ActiveIAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+activeIAMPolicyAssignment_assignmentName = Lens.lens (\ActiveIAMPolicyAssignment' {assignmentName} -> assignmentName) (\s@ActiveIAMPolicyAssignment' {} a -> s {assignmentName = a} :: ActiveIAMPolicyAssignment)
+
+-- | The Amazon Resource Name (ARN) of the resource.
+activeIAMPolicyAssignment_policyArn :: Lens.Lens' ActiveIAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+activeIAMPolicyAssignment_policyArn = Lens.lens (\ActiveIAMPolicyAssignment' {policyArn} -> policyArn) (\s@ActiveIAMPolicyAssignment' {} a -> s {policyArn = a} :: ActiveIAMPolicyAssignment)
+
+instance Data.FromJSON ActiveIAMPolicyAssignment where
+  parseJSON =
+    Data.withObject
+      "ActiveIAMPolicyAssignment"
+      ( \x ->
+          ActiveIAMPolicyAssignment'
+            Prelude.<$> (x Data..:? "AssignmentName")
+            Prelude.<*> (x Data..:? "PolicyArn")
+      )
+
+instance Prelude.Hashable ActiveIAMPolicyAssignment where
+  hashWithSalt _salt ActiveIAMPolicyAssignment' {..} =
+    _salt
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` policyArn
+
+instance Prelude.NFData ActiveIAMPolicyAssignment where
+  rnf ActiveIAMPolicyAssignment' {..} =
+    Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf policyArn
diff --git a/gen/Amazonka/QuickSight/Types/AdHocFilteringOption.hs b/gen/Amazonka/QuickSight/Types/AdHocFilteringOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AdHocFilteringOption.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.AdHocFilteringOption
+-- 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.QuickSight.Types.AdHocFilteringOption 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.QuickSight.Types.DashboardBehavior
+
+-- | An ad hoc (one-time) filtering option.
+--
+-- /See:/ 'newAdHocFilteringOption' smart constructor.
+data AdHocFilteringOption = AdHocFilteringOption'
+  { -- | Availability status.
+    availabilityStatus :: Prelude.Maybe DashboardBehavior
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AdHocFilteringOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'availabilityStatus', 'adHocFilteringOption_availabilityStatus' - Availability status.
+newAdHocFilteringOption ::
+  AdHocFilteringOption
+newAdHocFilteringOption =
+  AdHocFilteringOption'
+    { availabilityStatus =
+        Prelude.Nothing
+    }
+
+-- | Availability status.
+adHocFilteringOption_availabilityStatus :: Lens.Lens' AdHocFilteringOption (Prelude.Maybe DashboardBehavior)
+adHocFilteringOption_availabilityStatus = Lens.lens (\AdHocFilteringOption' {availabilityStatus} -> availabilityStatus) (\s@AdHocFilteringOption' {} a -> s {availabilityStatus = a} :: AdHocFilteringOption)
+
+instance Prelude.Hashable AdHocFilteringOption where
+  hashWithSalt _salt AdHocFilteringOption' {..} =
+    _salt `Prelude.hashWithSalt` availabilityStatus
+
+instance Prelude.NFData AdHocFilteringOption where
+  rnf AdHocFilteringOption' {..} =
+    Prelude.rnf availabilityStatus
+
+instance Data.ToJSON AdHocFilteringOption where
+  toJSON AdHocFilteringOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AvailabilityStatus" Data..=)
+              Prelude.<$> availabilityStatus
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AggregationFunction.hs b/gen/Amazonka/QuickSight/Types/AggregationFunction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AggregationFunction.hs
@@ -0,0 +1,158 @@
+{-# 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.QuickSight.Types.AggregationFunction
+-- 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.QuickSight.Types.AggregationFunction 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.QuickSight.Types.CategoricalAggregationFunction
+import Amazonka.QuickSight.Types.DateAggregationFunction
+import Amazonka.QuickSight.Types.NumericalAggregationFunction
+
+-- | An aggregation function aggregates values from a dimension or measure.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newAggregationFunction' smart constructor.
+data AggregationFunction = AggregationFunction'
+  { -- | Aggregation for categorical values.
+    --
+    -- -   @COUNT@: Aggregate by the total number of values, including
+    --     duplicates.
+    --
+    -- -   @DISTINCT_COUNT@: Aggregate by the total number of distinct values.
+    categoricalAggregationFunction :: Prelude.Maybe CategoricalAggregationFunction,
+    -- | Aggregation for date values.
+    --
+    -- -   @COUNT@: Aggregate by the total number of values, including
+    --     duplicates.
+    --
+    -- -   @DISTINCT_COUNT@: Aggregate by the total number of distinct values.
+    --
+    -- -   @MIN@: Select the smallest date value.
+    --
+    -- -   @MAX@: Select the largest date value.
+    dateAggregationFunction :: Prelude.Maybe DateAggregationFunction,
+    -- | Aggregation for numerical values.
+    numericalAggregationFunction :: Prelude.Maybe NumericalAggregationFunction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AggregationFunction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoricalAggregationFunction', 'aggregationFunction_categoricalAggregationFunction' - Aggregation for categorical values.
+--
+-- -   @COUNT@: Aggregate by the total number of values, including
+--     duplicates.
+--
+-- -   @DISTINCT_COUNT@: Aggregate by the total number of distinct values.
+--
+-- 'dateAggregationFunction', 'aggregationFunction_dateAggregationFunction' - Aggregation for date values.
+--
+-- -   @COUNT@: Aggregate by the total number of values, including
+--     duplicates.
+--
+-- -   @DISTINCT_COUNT@: Aggregate by the total number of distinct values.
+--
+-- -   @MIN@: Select the smallest date value.
+--
+-- -   @MAX@: Select the largest date value.
+--
+-- 'numericalAggregationFunction', 'aggregationFunction_numericalAggregationFunction' - Aggregation for numerical values.
+newAggregationFunction ::
+  AggregationFunction
+newAggregationFunction =
+  AggregationFunction'
+    { categoricalAggregationFunction =
+        Prelude.Nothing,
+      dateAggregationFunction = Prelude.Nothing,
+      numericalAggregationFunction = Prelude.Nothing
+    }
+
+-- | Aggregation for categorical values.
+--
+-- -   @COUNT@: Aggregate by the total number of values, including
+--     duplicates.
+--
+-- -   @DISTINCT_COUNT@: Aggregate by the total number of distinct values.
+aggregationFunction_categoricalAggregationFunction :: Lens.Lens' AggregationFunction (Prelude.Maybe CategoricalAggregationFunction)
+aggregationFunction_categoricalAggregationFunction = Lens.lens (\AggregationFunction' {categoricalAggregationFunction} -> categoricalAggregationFunction) (\s@AggregationFunction' {} a -> s {categoricalAggregationFunction = a} :: AggregationFunction)
+
+-- | Aggregation for date values.
+--
+-- -   @COUNT@: Aggregate by the total number of values, including
+--     duplicates.
+--
+-- -   @DISTINCT_COUNT@: Aggregate by the total number of distinct values.
+--
+-- -   @MIN@: Select the smallest date value.
+--
+-- -   @MAX@: Select the largest date value.
+aggregationFunction_dateAggregationFunction :: Lens.Lens' AggregationFunction (Prelude.Maybe DateAggregationFunction)
+aggregationFunction_dateAggregationFunction = Lens.lens (\AggregationFunction' {dateAggregationFunction} -> dateAggregationFunction) (\s@AggregationFunction' {} a -> s {dateAggregationFunction = a} :: AggregationFunction)
+
+-- | Aggregation for numerical values.
+aggregationFunction_numericalAggregationFunction :: Lens.Lens' AggregationFunction (Prelude.Maybe NumericalAggregationFunction)
+aggregationFunction_numericalAggregationFunction = Lens.lens (\AggregationFunction' {numericalAggregationFunction} -> numericalAggregationFunction) (\s@AggregationFunction' {} a -> s {numericalAggregationFunction = a} :: AggregationFunction)
+
+instance Data.FromJSON AggregationFunction where
+  parseJSON =
+    Data.withObject
+      "AggregationFunction"
+      ( \x ->
+          AggregationFunction'
+            Prelude.<$> (x Data..:? "CategoricalAggregationFunction")
+            Prelude.<*> (x Data..:? "DateAggregationFunction")
+            Prelude.<*> (x Data..:? "NumericalAggregationFunction")
+      )
+
+instance Prelude.Hashable AggregationFunction where
+  hashWithSalt _salt AggregationFunction' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoricalAggregationFunction
+      `Prelude.hashWithSalt` dateAggregationFunction
+      `Prelude.hashWithSalt` numericalAggregationFunction
+
+instance Prelude.NFData AggregationFunction where
+  rnf AggregationFunction' {..} =
+    Prelude.rnf categoricalAggregationFunction
+      `Prelude.seq` Prelude.rnf dateAggregationFunction
+      `Prelude.seq` Prelude.rnf numericalAggregationFunction
+
+instance Data.ToJSON AggregationFunction where
+  toJSON AggregationFunction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoricalAggregationFunction" Data..=)
+              Prelude.<$> categoricalAggregationFunction,
+            ("DateAggregationFunction" Data..=)
+              Prelude.<$> dateAggregationFunction,
+            ("NumericalAggregationFunction" Data..=)
+              Prelude.<$> numericalAggregationFunction
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AggregationSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/AggregationSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AggregationSortConfiguration.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AggregationSortConfiguration
+-- 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.QuickSight.Types.AggregationSortConfiguration 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.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.SortDirection
+
+-- | The configuration options to sort aggregated values.
+--
+-- /See:/ 'newAggregationSortConfiguration' smart constructor.
+data AggregationSortConfiguration = AggregationSortConfiguration'
+  { -- | The column that determines the sort order of aggregated values.
+    column :: ColumnIdentifier,
+    -- | The sort direction of values.
+    --
+    -- -   @ASC@: Sort in ascending order.
+    --
+    -- -   @DESC@: Sort in descending order.
+    sortDirection :: SortDirection,
+    -- | The function that aggregates the values in @Column@.
+    aggregationFunction :: AggregationFunction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AggregationSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'column', 'aggregationSortConfiguration_column' - The column that determines the sort order of aggregated values.
+--
+-- 'sortDirection', 'aggregationSortConfiguration_sortDirection' - The sort direction of values.
+--
+-- -   @ASC@: Sort in ascending order.
+--
+-- -   @DESC@: Sort in descending order.
+--
+-- 'aggregationFunction', 'aggregationSortConfiguration_aggregationFunction' - The function that aggregates the values in @Column@.
+newAggregationSortConfiguration ::
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'sortDirection'
+  SortDirection ->
+  -- | 'aggregationFunction'
+  AggregationFunction ->
+  AggregationSortConfiguration
+newAggregationSortConfiguration
+  pColumn_
+  pSortDirection_
+  pAggregationFunction_ =
+    AggregationSortConfiguration'
+      { column = pColumn_,
+        sortDirection = pSortDirection_,
+        aggregationFunction = pAggregationFunction_
+      }
+
+-- | The column that determines the sort order of aggregated values.
+aggregationSortConfiguration_column :: Lens.Lens' AggregationSortConfiguration ColumnIdentifier
+aggregationSortConfiguration_column = Lens.lens (\AggregationSortConfiguration' {column} -> column) (\s@AggregationSortConfiguration' {} a -> s {column = a} :: AggregationSortConfiguration)
+
+-- | The sort direction of values.
+--
+-- -   @ASC@: Sort in ascending order.
+--
+-- -   @DESC@: Sort in descending order.
+aggregationSortConfiguration_sortDirection :: Lens.Lens' AggregationSortConfiguration SortDirection
+aggregationSortConfiguration_sortDirection = Lens.lens (\AggregationSortConfiguration' {sortDirection} -> sortDirection) (\s@AggregationSortConfiguration' {} a -> s {sortDirection = a} :: AggregationSortConfiguration)
+
+-- | The function that aggregates the values in @Column@.
+aggregationSortConfiguration_aggregationFunction :: Lens.Lens' AggregationSortConfiguration AggregationFunction
+aggregationSortConfiguration_aggregationFunction = Lens.lens (\AggregationSortConfiguration' {aggregationFunction} -> aggregationFunction) (\s@AggregationSortConfiguration' {} a -> s {aggregationFunction = a} :: AggregationSortConfiguration)
+
+instance Data.FromJSON AggregationSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "AggregationSortConfiguration"
+      ( \x ->
+          AggregationSortConfiguration'
+            Prelude.<$> (x Data..: "Column")
+            Prelude.<*> (x Data..: "SortDirection")
+            Prelude.<*> (x Data..: "AggregationFunction")
+      )
+
+instance
+  Prelude.Hashable
+    AggregationSortConfiguration
+  where
+  hashWithSalt _salt AggregationSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` sortDirection
+      `Prelude.hashWithSalt` aggregationFunction
+
+instance Prelude.NFData AggregationSortConfiguration where
+  rnf AggregationSortConfiguration' {..} =
+    Prelude.rnf column
+      `Prelude.seq` Prelude.rnf sortDirection
+      `Prelude.seq` Prelude.rnf aggregationFunction
+
+instance Data.ToJSON AggregationSortConfiguration where
+  toJSON AggregationSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Column" Data..= column),
+            Prelude.Just ("SortDirection" Data..= sortDirection),
+            Prelude.Just
+              ("AggregationFunction" Data..= aggregationFunction)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AmazonElasticsearchParameters.hs b/gen/Amazonka/QuickSight/Types/AmazonElasticsearchParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AmazonElasticsearchParameters.hs
@@ -0,0 +1,81 @@
+{-# 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.QuickSight.Types.AmazonElasticsearchParameters
+-- 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.QuickSight.Types.AmazonElasticsearchParameters 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 parameters for OpenSearch.
+--
+-- /See:/ 'newAmazonElasticsearchParameters' smart constructor.
+data AmazonElasticsearchParameters = AmazonElasticsearchParameters'
+  { -- | The OpenSearch domain.
+    domain :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AmazonElasticsearchParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'amazonElasticsearchParameters_domain' - The OpenSearch domain.
+newAmazonElasticsearchParameters ::
+  -- | 'domain'
+  Prelude.Text ->
+  AmazonElasticsearchParameters
+newAmazonElasticsearchParameters pDomain_ =
+  AmazonElasticsearchParameters' {domain = pDomain_}
+
+-- | The OpenSearch domain.
+amazonElasticsearchParameters_domain :: Lens.Lens' AmazonElasticsearchParameters Prelude.Text
+amazonElasticsearchParameters_domain = Lens.lens (\AmazonElasticsearchParameters' {domain} -> domain) (\s@AmazonElasticsearchParameters' {} a -> s {domain = a} :: AmazonElasticsearchParameters)
+
+instance Data.FromJSON AmazonElasticsearchParameters where
+  parseJSON =
+    Data.withObject
+      "AmazonElasticsearchParameters"
+      ( \x ->
+          AmazonElasticsearchParameters'
+            Prelude.<$> (x Data..: "Domain")
+      )
+
+instance
+  Prelude.Hashable
+    AmazonElasticsearchParameters
+  where
+  hashWithSalt _salt AmazonElasticsearchParameters' {..} =
+    _salt `Prelude.hashWithSalt` domain
+
+instance Prelude.NFData AmazonElasticsearchParameters where
+  rnf AmazonElasticsearchParameters' {..} =
+    Prelude.rnf domain
+
+instance Data.ToJSON AmazonElasticsearchParameters where
+  toJSON AmazonElasticsearchParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Domain" Data..= domain)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AmazonOpenSearchParameters.hs b/gen/Amazonka/QuickSight/Types/AmazonOpenSearchParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AmazonOpenSearchParameters.hs
@@ -0,0 +1,78 @@
+{-# 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.QuickSight.Types.AmazonOpenSearchParameters
+-- 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.QuickSight.Types.AmazonOpenSearchParameters 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 parameters for OpenSearch.
+--
+-- /See:/ 'newAmazonOpenSearchParameters' smart constructor.
+data AmazonOpenSearchParameters = AmazonOpenSearchParameters'
+  { -- | The OpenSearch domain.
+    domain :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AmazonOpenSearchParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'amazonOpenSearchParameters_domain' - The OpenSearch domain.
+newAmazonOpenSearchParameters ::
+  -- | 'domain'
+  Prelude.Text ->
+  AmazonOpenSearchParameters
+newAmazonOpenSearchParameters pDomain_ =
+  AmazonOpenSearchParameters' {domain = pDomain_}
+
+-- | The OpenSearch domain.
+amazonOpenSearchParameters_domain :: Lens.Lens' AmazonOpenSearchParameters Prelude.Text
+amazonOpenSearchParameters_domain = Lens.lens (\AmazonOpenSearchParameters' {domain} -> domain) (\s@AmazonOpenSearchParameters' {} a -> s {domain = a} :: AmazonOpenSearchParameters)
+
+instance Data.FromJSON AmazonOpenSearchParameters where
+  parseJSON =
+    Data.withObject
+      "AmazonOpenSearchParameters"
+      ( \x ->
+          AmazonOpenSearchParameters'
+            Prelude.<$> (x Data..: "Domain")
+      )
+
+instance Prelude.Hashable AmazonOpenSearchParameters where
+  hashWithSalt _salt AmazonOpenSearchParameters' {..} =
+    _salt `Prelude.hashWithSalt` domain
+
+instance Prelude.NFData AmazonOpenSearchParameters where
+  rnf AmazonOpenSearchParameters' {..} =
+    Prelude.rnf domain
+
+instance Data.ToJSON AmazonOpenSearchParameters where
+  toJSON AmazonOpenSearchParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Domain" Data..= domain)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Analysis.hs b/gen/Amazonka/QuickSight/Types/Analysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Analysis.hs
@@ -0,0 +1,186 @@
+{-# 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.QuickSight.Types.Analysis
+-- 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.QuickSight.Types.Analysis 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.QuickSight.Types.AnalysisError
+import Amazonka.QuickSight.Types.ResourceStatus
+import Amazonka.QuickSight.Types.Sheet
+
+-- | Metadata structure for an analysis in Amazon QuickSight
+--
+-- /See:/ 'newAnalysis' smart constructor.
+data Analysis = Analysis'
+  { -- | The ID of the analysis.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the analysis.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that the analysis was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARNs of the datasets of the analysis.
+    dataSetArns :: Prelude.Maybe [Prelude.Text],
+    -- | Errors associated with the analysis.
+    errors :: Prelude.Maybe (Prelude.NonEmpty AnalysisError),
+    -- | The time that the analysis was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The descriptive name of the analysis.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | A list of the associated sheets with the unique identifier and name of
+    -- each sheet.
+    sheets :: Prelude.Maybe [Sheet],
+    -- | Status associated with the analysis.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The ARN of the theme of the analysis.
+    themeArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Analysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'analysis_analysisId' - The ID of the analysis.
+--
+-- 'arn', 'analysis_arn' - The Amazon Resource Name (ARN) of the analysis.
+--
+-- 'createdTime', 'analysis_createdTime' - The time that the analysis was created.
+--
+-- 'dataSetArns', 'analysis_dataSetArns' - The ARNs of the datasets of the analysis.
+--
+-- 'errors', 'analysis_errors' - Errors associated with the analysis.
+--
+-- 'lastUpdatedTime', 'analysis_lastUpdatedTime' - The time that the analysis was last updated.
+--
+-- 'name', 'analysis_name' - The descriptive name of the analysis.
+--
+-- 'sheets', 'analysis_sheets' - A list of the associated sheets with the unique identifier and name of
+-- each sheet.
+--
+-- 'status', 'analysis_status' - Status associated with the analysis.
+--
+-- 'themeArn', 'analysis_themeArn' - The ARN of the theme of the analysis.
+newAnalysis ::
+  Analysis
+newAnalysis =
+  Analysis'
+    { analysisId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dataSetArns = Prelude.Nothing,
+      errors = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      sheets = Prelude.Nothing,
+      status = Prelude.Nothing,
+      themeArn = Prelude.Nothing
+    }
+
+-- | The ID of the analysis.
+analysis_analysisId :: Lens.Lens' Analysis (Prelude.Maybe Prelude.Text)
+analysis_analysisId = Lens.lens (\Analysis' {analysisId} -> analysisId) (\s@Analysis' {} a -> s {analysisId = a} :: Analysis)
+
+-- | The Amazon Resource Name (ARN) of the analysis.
+analysis_arn :: Lens.Lens' Analysis (Prelude.Maybe Prelude.Text)
+analysis_arn = Lens.lens (\Analysis' {arn} -> arn) (\s@Analysis' {} a -> s {arn = a} :: Analysis)
+
+-- | The time that the analysis was created.
+analysis_createdTime :: Lens.Lens' Analysis (Prelude.Maybe Prelude.UTCTime)
+analysis_createdTime = Lens.lens (\Analysis' {createdTime} -> createdTime) (\s@Analysis' {} a -> s {createdTime = a} :: Analysis) Prelude.. Lens.mapping Data._Time
+
+-- | The ARNs of the datasets of the analysis.
+analysis_dataSetArns :: Lens.Lens' Analysis (Prelude.Maybe [Prelude.Text])
+analysis_dataSetArns = Lens.lens (\Analysis' {dataSetArns} -> dataSetArns) (\s@Analysis' {} a -> s {dataSetArns = a} :: Analysis) Prelude.. Lens.mapping Lens.coerced
+
+-- | Errors associated with the analysis.
+analysis_errors :: Lens.Lens' Analysis (Prelude.Maybe (Prelude.NonEmpty AnalysisError))
+analysis_errors = Lens.lens (\Analysis' {errors} -> errors) (\s@Analysis' {} a -> s {errors = a} :: Analysis) Prelude.. Lens.mapping Lens.coerced
+
+-- | The time that the analysis was last updated.
+analysis_lastUpdatedTime :: Lens.Lens' Analysis (Prelude.Maybe Prelude.UTCTime)
+analysis_lastUpdatedTime = Lens.lens (\Analysis' {lastUpdatedTime} -> lastUpdatedTime) (\s@Analysis' {} a -> s {lastUpdatedTime = a} :: Analysis) Prelude.. Lens.mapping Data._Time
+
+-- | The descriptive name of the analysis.
+analysis_name :: Lens.Lens' Analysis (Prelude.Maybe Prelude.Text)
+analysis_name = Lens.lens (\Analysis' {name} -> name) (\s@Analysis' {} a -> s {name = a} :: Analysis)
+
+-- | A list of the associated sheets with the unique identifier and name of
+-- each sheet.
+analysis_sheets :: Lens.Lens' Analysis (Prelude.Maybe [Sheet])
+analysis_sheets = Lens.lens (\Analysis' {sheets} -> sheets) (\s@Analysis' {} a -> s {sheets = a} :: Analysis) Prelude.. Lens.mapping Lens.coerced
+
+-- | Status associated with the analysis.
+analysis_status :: Lens.Lens' Analysis (Prelude.Maybe ResourceStatus)
+analysis_status = Lens.lens (\Analysis' {status} -> status) (\s@Analysis' {} a -> s {status = a} :: Analysis)
+
+-- | The ARN of the theme of the analysis.
+analysis_themeArn :: Lens.Lens' Analysis (Prelude.Maybe Prelude.Text)
+analysis_themeArn = Lens.lens (\Analysis' {themeArn} -> themeArn) (\s@Analysis' {} a -> s {themeArn = a} :: Analysis)
+
+instance Data.FromJSON Analysis where
+  parseJSON =
+    Data.withObject
+      "Analysis"
+      ( \x ->
+          Analysis'
+            Prelude.<$> (x Data..:? "AnalysisId")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DataSetArns" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Errors")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "ThemeArn")
+      )
+
+instance Prelude.Hashable Analysis where
+  hashWithSalt _salt Analysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisId
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSetArns
+      `Prelude.hashWithSalt` errors
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sheets
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` themeArn
+
+instance Prelude.NFData Analysis where
+  rnf Analysis' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSetArns
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sheets
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf themeArn
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisDefaults.hs b/gen/Amazonka/QuickSight/Types/AnalysisDefaults.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisDefaults.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.QuickSight.Types.AnalysisDefaults
+-- 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.QuickSight.Types.AnalysisDefaults 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.QuickSight.Types.DefaultNewSheetConfiguration
+
+-- | The configuration for default analysis settings.
+--
+-- /See:/ 'newAnalysisDefaults' smart constructor.
+data AnalysisDefaults = AnalysisDefaults'
+  { -- | The configuration for default new sheet settings.
+    defaultNewSheetConfiguration :: DefaultNewSheetConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisDefaults' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultNewSheetConfiguration', 'analysisDefaults_defaultNewSheetConfiguration' - The configuration for default new sheet settings.
+newAnalysisDefaults ::
+  -- | 'defaultNewSheetConfiguration'
+  DefaultNewSheetConfiguration ->
+  AnalysisDefaults
+newAnalysisDefaults pDefaultNewSheetConfiguration_ =
+  AnalysisDefaults'
+    { defaultNewSheetConfiguration =
+        pDefaultNewSheetConfiguration_
+    }
+
+-- | The configuration for default new sheet settings.
+analysisDefaults_defaultNewSheetConfiguration :: Lens.Lens' AnalysisDefaults DefaultNewSheetConfiguration
+analysisDefaults_defaultNewSheetConfiguration = Lens.lens (\AnalysisDefaults' {defaultNewSheetConfiguration} -> defaultNewSheetConfiguration) (\s@AnalysisDefaults' {} a -> s {defaultNewSheetConfiguration = a} :: AnalysisDefaults)
+
+instance Data.FromJSON AnalysisDefaults where
+  parseJSON =
+    Data.withObject
+      "AnalysisDefaults"
+      ( \x ->
+          AnalysisDefaults'
+            Prelude.<$> (x Data..: "DefaultNewSheetConfiguration")
+      )
+
+instance Prelude.Hashable AnalysisDefaults where
+  hashWithSalt _salt AnalysisDefaults' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultNewSheetConfiguration
+
+instance Prelude.NFData AnalysisDefaults where
+  rnf AnalysisDefaults' {..} =
+    Prelude.rnf defaultNewSheetConfiguration
+
+instance Data.ToJSON AnalysisDefaults where
+  toJSON AnalysisDefaults' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "DefaultNewSheetConfiguration"
+                  Data..= defaultNewSheetConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisDefinition.hs b/gen/Amazonka/QuickSight/Types/AnalysisDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisDefinition.hs
@@ -0,0 +1,232 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnalysisDefinition
+-- 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.QuickSight.Types.AnalysisDefinition 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.QuickSight.Types.AnalysisDefaults
+import Amazonka.QuickSight.Types.CalculatedField
+import Amazonka.QuickSight.Types.ColumnConfiguration
+import Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
+import Amazonka.QuickSight.Types.FilterGroup
+import Amazonka.QuickSight.Types.ParameterDeclaration
+import Amazonka.QuickSight.Types.SheetDefinition
+
+-- | The definition of an analysis.
+--
+-- /See:/ 'newAnalysisDefinition' smart constructor.
+data AnalysisDefinition = AnalysisDefinition'
+  { analysisDefaults :: Prelude.Maybe AnalysisDefaults,
+    -- | An array of calculated field definitions for the analysis.
+    calculatedFields :: Prelude.Maybe [CalculatedField],
+    -- | An array of analysis-level column configurations. Column configurations
+    -- can be used to set default formatting for a column to be used throughout
+    -- an analysis.
+    columnConfigurations :: Prelude.Maybe [ColumnConfiguration],
+    -- | Filter definitions for an analysis.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
+    -- in the /Amazon QuickSight User Guide/.
+    filterGroups :: Prelude.Maybe [FilterGroup],
+    -- | An array of parameter declarations for an analysis.
+    --
+    -- Parameters are named variables that can transfer a value for use by an
+    -- action or an object.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+    -- in the /Amazon QuickSight User Guide/.
+    parameterDeclarations :: Prelude.Maybe [ParameterDeclaration],
+    -- | An array of sheet definitions for an analysis. Each @SheetDefinition@
+    -- provides detailed information about a sheet within this analysis.
+    sheets :: Prelude.Maybe [SheetDefinition],
+    -- | An array of dataset identifier declarations. This mapping allows the
+    -- usage of dataset identifiers instead of dataset ARNs throughout analysis
+    -- sub-structures.
+    dataSetIdentifierDeclarations :: Prelude.NonEmpty DataSetIdentifierDeclaration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisDefaults', 'analysisDefinition_analysisDefaults' - Undocumented member.
+--
+-- 'calculatedFields', 'analysisDefinition_calculatedFields' - An array of calculated field definitions for the analysis.
+--
+-- 'columnConfigurations', 'analysisDefinition_columnConfigurations' - An array of analysis-level column configurations. Column configurations
+-- can be used to set default formatting for a column to be used throughout
+-- an analysis.
+--
+-- 'filterGroups', 'analysisDefinition_filterGroups' - Filter definitions for an analysis.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'parameterDeclarations', 'analysisDefinition_parameterDeclarations' - An array of parameter declarations for an analysis.
+--
+-- Parameters are named variables that can transfer a value for use by an
+-- action or an object.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'sheets', 'analysisDefinition_sheets' - An array of sheet definitions for an analysis. Each @SheetDefinition@
+-- provides detailed information about a sheet within this analysis.
+--
+-- 'dataSetIdentifierDeclarations', 'analysisDefinition_dataSetIdentifierDeclarations' - An array of dataset identifier declarations. This mapping allows the
+-- usage of dataset identifiers instead of dataset ARNs throughout analysis
+-- sub-structures.
+newAnalysisDefinition ::
+  -- | 'dataSetIdentifierDeclarations'
+  Prelude.NonEmpty DataSetIdentifierDeclaration ->
+  AnalysisDefinition
+newAnalysisDefinition pDataSetIdentifierDeclarations_ =
+  AnalysisDefinition'
+    { analysisDefaults =
+        Prelude.Nothing,
+      calculatedFields = Prelude.Nothing,
+      columnConfigurations = Prelude.Nothing,
+      filterGroups = Prelude.Nothing,
+      parameterDeclarations = Prelude.Nothing,
+      sheets = Prelude.Nothing,
+      dataSetIdentifierDeclarations =
+        Lens.coerced Lens.# pDataSetIdentifierDeclarations_
+    }
+
+-- | Undocumented member.
+analysisDefinition_analysisDefaults :: Lens.Lens' AnalysisDefinition (Prelude.Maybe AnalysisDefaults)
+analysisDefinition_analysisDefaults = Lens.lens (\AnalysisDefinition' {analysisDefaults} -> analysisDefaults) (\s@AnalysisDefinition' {} a -> s {analysisDefaults = a} :: AnalysisDefinition)
+
+-- | An array of calculated field definitions for the analysis.
+analysisDefinition_calculatedFields :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [CalculatedField])
+analysisDefinition_calculatedFields = Lens.lens (\AnalysisDefinition' {calculatedFields} -> calculatedFields) (\s@AnalysisDefinition' {} a -> s {calculatedFields = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of analysis-level column configurations. Column configurations
+-- can be used to set default formatting for a column to be used throughout
+-- an analysis.
+analysisDefinition_columnConfigurations :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [ColumnConfiguration])
+analysisDefinition_columnConfigurations = Lens.lens (\AnalysisDefinition' {columnConfigurations} -> columnConfigurations) (\s@AnalysisDefinition' {} a -> s {columnConfigurations = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filter definitions for an analysis.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+analysisDefinition_filterGroups :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [FilterGroup])
+analysisDefinition_filterGroups = Lens.lens (\AnalysisDefinition' {filterGroups} -> filterGroups) (\s@AnalysisDefinition' {} a -> s {filterGroups = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of parameter declarations for an analysis.
+--
+-- Parameters are named variables that can transfer a value for use by an
+-- action or an object.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+analysisDefinition_parameterDeclarations :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [ParameterDeclaration])
+analysisDefinition_parameterDeclarations = Lens.lens (\AnalysisDefinition' {parameterDeclarations} -> parameterDeclarations) (\s@AnalysisDefinition' {} a -> s {parameterDeclarations = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of sheet definitions for an analysis. Each @SheetDefinition@
+-- provides detailed information about a sheet within this analysis.
+analysisDefinition_sheets :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [SheetDefinition])
+analysisDefinition_sheets = Lens.lens (\AnalysisDefinition' {sheets} -> sheets) (\s@AnalysisDefinition' {} a -> s {sheets = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of dataset identifier declarations. This mapping allows the
+-- usage of dataset identifiers instead of dataset ARNs throughout analysis
+-- sub-structures.
+analysisDefinition_dataSetIdentifierDeclarations :: Lens.Lens' AnalysisDefinition (Prelude.NonEmpty DataSetIdentifierDeclaration)
+analysisDefinition_dataSetIdentifierDeclarations = Lens.lens (\AnalysisDefinition' {dataSetIdentifierDeclarations} -> dataSetIdentifierDeclarations) (\s@AnalysisDefinition' {} a -> s {dataSetIdentifierDeclarations = a} :: AnalysisDefinition) Prelude.. Lens.coerced
+
+instance Data.FromJSON AnalysisDefinition where
+  parseJSON =
+    Data.withObject
+      "AnalysisDefinition"
+      ( \x ->
+          AnalysisDefinition'
+            Prelude.<$> (x Data..:? "AnalysisDefaults")
+            Prelude.<*> ( x
+                            Data..:? "CalculatedFields"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ColumnConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "FilterGroups" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "ParameterDeclarations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "DataSetIdentifierDeclarations")
+      )
+
+instance Prelude.Hashable AnalysisDefinition where
+  hashWithSalt _salt AnalysisDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisDefaults
+      `Prelude.hashWithSalt` calculatedFields
+      `Prelude.hashWithSalt` columnConfigurations
+      `Prelude.hashWithSalt` filterGroups
+      `Prelude.hashWithSalt` parameterDeclarations
+      `Prelude.hashWithSalt` sheets
+      `Prelude.hashWithSalt` dataSetIdentifierDeclarations
+
+instance Prelude.NFData AnalysisDefinition where
+  rnf AnalysisDefinition' {..} =
+    Prelude.rnf analysisDefaults
+      `Prelude.seq` Prelude.rnf calculatedFields
+      `Prelude.seq` Prelude.rnf columnConfigurations
+      `Prelude.seq` Prelude.rnf filterGroups
+      `Prelude.seq` Prelude.rnf parameterDeclarations
+      `Prelude.seq` Prelude.rnf sheets
+      `Prelude.seq` Prelude.rnf dataSetIdentifierDeclarations
+
+instance Data.ToJSON AnalysisDefinition where
+  toJSON AnalysisDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AnalysisDefaults" Data..=)
+              Prelude.<$> analysisDefaults,
+            ("CalculatedFields" Data..=)
+              Prelude.<$> calculatedFields,
+            ("ColumnConfigurations" Data..=)
+              Prelude.<$> columnConfigurations,
+            ("FilterGroups" Data..=) Prelude.<$> filterGroups,
+            ("ParameterDeclarations" Data..=)
+              Prelude.<$> parameterDeclarations,
+            ("Sheets" Data..=) Prelude.<$> sheets,
+            Prelude.Just
+              ( "DataSetIdentifierDeclarations"
+                  Data..= dataSetIdentifierDeclarations
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisError.hs b/gen/Amazonka/QuickSight/Types/AnalysisError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisError.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnalysisError
+-- 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.QuickSight.Types.AnalysisError 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.QuickSight.Types.AnalysisErrorType
+import Amazonka.QuickSight.Types.Entity
+
+-- | Analysis error.
+--
+-- /See:/ 'newAnalysisError' smart constructor.
+data AnalysisError = AnalysisError'
+  { -- | The message associated with the analysis error.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The type of the analysis error.
+    type' :: Prelude.Maybe AnalysisErrorType,
+    violatedEntities :: Prelude.Maybe [Entity]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'analysisError_message' - The message associated with the analysis error.
+--
+-- 'type'', 'analysisError_type' - The type of the analysis error.
+--
+-- 'violatedEntities', 'analysisError_violatedEntities' -
+newAnalysisError ::
+  AnalysisError
+newAnalysisError =
+  AnalysisError'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      violatedEntities = Prelude.Nothing
+    }
+
+-- | The message associated with the analysis error.
+analysisError_message :: Lens.Lens' AnalysisError (Prelude.Maybe Prelude.Text)
+analysisError_message = Lens.lens (\AnalysisError' {message} -> message) (\s@AnalysisError' {} a -> s {message = a} :: AnalysisError)
+
+-- | The type of the analysis error.
+analysisError_type :: Lens.Lens' AnalysisError (Prelude.Maybe AnalysisErrorType)
+analysisError_type = Lens.lens (\AnalysisError' {type'} -> type') (\s@AnalysisError' {} a -> s {type' = a} :: AnalysisError)
+
+analysisError_violatedEntities :: Lens.Lens' AnalysisError (Prelude.Maybe [Entity])
+analysisError_violatedEntities = Lens.lens (\AnalysisError' {violatedEntities} -> violatedEntities) (\s@AnalysisError' {} a -> s {violatedEntities = a} :: AnalysisError) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AnalysisError where
+  parseJSON =
+    Data.withObject
+      "AnalysisError"
+      ( \x ->
+          AnalysisError'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> ( x
+                            Data..:? "ViolatedEntities"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable AnalysisError where
+  hashWithSalt _salt AnalysisError' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` violatedEntities
+
+instance Prelude.NFData AnalysisError where
+  rnf AnalysisError' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf violatedEntities
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisErrorType.hs b/gen/Amazonka/QuickSight/Types/AnalysisErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisErrorType.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnalysisErrorType
+-- 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.QuickSight.Types.AnalysisErrorType
+  ( AnalysisErrorType
+      ( ..,
+        AnalysisErrorType_ACCESS_DENIED,
+        AnalysisErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH,
+        AnalysisErrorType_COLUMN_REPLACEMENT_MISSING,
+        AnalysisErrorType_COLUMN_TYPE_MISMATCH,
+        AnalysisErrorType_DATA_SET_NOT_FOUND,
+        AnalysisErrorType_INTERNAL_FAILURE,
+        AnalysisErrorType_PARAMETER_NOT_FOUND,
+        AnalysisErrorType_PARAMETER_TYPE_INVALID,
+        AnalysisErrorType_PARAMETER_VALUE_INCOMPATIBLE,
+        AnalysisErrorType_SOURCE_NOT_FOUND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AnalysisErrorType = AnalysisErrorType'
+  { fromAnalysisErrorType ::
+      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 AnalysisErrorType_ACCESS_DENIED :: AnalysisErrorType
+pattern AnalysisErrorType_ACCESS_DENIED = AnalysisErrorType' "ACCESS_DENIED"
+
+pattern AnalysisErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH :: AnalysisErrorType
+pattern AnalysisErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH = AnalysisErrorType' "COLUMN_GEOGRAPHIC_ROLE_MISMATCH"
+
+pattern AnalysisErrorType_COLUMN_REPLACEMENT_MISSING :: AnalysisErrorType
+pattern AnalysisErrorType_COLUMN_REPLACEMENT_MISSING = AnalysisErrorType' "COLUMN_REPLACEMENT_MISSING"
+
+pattern AnalysisErrorType_COLUMN_TYPE_MISMATCH :: AnalysisErrorType
+pattern AnalysisErrorType_COLUMN_TYPE_MISMATCH = AnalysisErrorType' "COLUMN_TYPE_MISMATCH"
+
+pattern AnalysisErrorType_DATA_SET_NOT_FOUND :: AnalysisErrorType
+pattern AnalysisErrorType_DATA_SET_NOT_FOUND = AnalysisErrorType' "DATA_SET_NOT_FOUND"
+
+pattern AnalysisErrorType_INTERNAL_FAILURE :: AnalysisErrorType
+pattern AnalysisErrorType_INTERNAL_FAILURE = AnalysisErrorType' "INTERNAL_FAILURE"
+
+pattern AnalysisErrorType_PARAMETER_NOT_FOUND :: AnalysisErrorType
+pattern AnalysisErrorType_PARAMETER_NOT_FOUND = AnalysisErrorType' "PARAMETER_NOT_FOUND"
+
+pattern AnalysisErrorType_PARAMETER_TYPE_INVALID :: AnalysisErrorType
+pattern AnalysisErrorType_PARAMETER_TYPE_INVALID = AnalysisErrorType' "PARAMETER_TYPE_INVALID"
+
+pattern AnalysisErrorType_PARAMETER_VALUE_INCOMPATIBLE :: AnalysisErrorType
+pattern AnalysisErrorType_PARAMETER_VALUE_INCOMPATIBLE = AnalysisErrorType' "PARAMETER_VALUE_INCOMPATIBLE"
+
+pattern AnalysisErrorType_SOURCE_NOT_FOUND :: AnalysisErrorType
+pattern AnalysisErrorType_SOURCE_NOT_FOUND = AnalysisErrorType' "SOURCE_NOT_FOUND"
+
+{-# COMPLETE
+  AnalysisErrorType_ACCESS_DENIED,
+  AnalysisErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH,
+  AnalysisErrorType_COLUMN_REPLACEMENT_MISSING,
+  AnalysisErrorType_COLUMN_TYPE_MISMATCH,
+  AnalysisErrorType_DATA_SET_NOT_FOUND,
+  AnalysisErrorType_INTERNAL_FAILURE,
+  AnalysisErrorType_PARAMETER_NOT_FOUND,
+  AnalysisErrorType_PARAMETER_TYPE_INVALID,
+  AnalysisErrorType_PARAMETER_VALUE_INCOMPATIBLE,
+  AnalysisErrorType_SOURCE_NOT_FOUND,
+  AnalysisErrorType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisFilterAttribute.hs b/gen/Amazonka/QuickSight/Types/AnalysisFilterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisFilterAttribute.hs
@@ -0,0 +1,96 @@
+{-# 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.QuickSight.Types.AnalysisFilterAttribute
+-- 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.QuickSight.Types.AnalysisFilterAttribute
+  ( AnalysisFilterAttribute
+      ( ..,
+        AnalysisFilterAttribute_ANALYSIS_NAME,
+        AnalysisFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+        AnalysisFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+        AnalysisFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+        AnalysisFilterAttribute_QUICKSIGHT_OWNER,
+        AnalysisFilterAttribute_QUICKSIGHT_USER,
+        AnalysisFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AnalysisFilterAttribute = AnalysisFilterAttribute'
+  { fromAnalysisFilterAttribute ::
+      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 AnalysisFilterAttribute_ANALYSIS_NAME :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_ANALYSIS_NAME = AnalysisFilterAttribute' "ANALYSIS_NAME"
+
+pattern AnalysisFilterAttribute_DIRECT_QUICKSIGHT_OWNER :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_DIRECT_QUICKSIGHT_OWNER = AnalysisFilterAttribute' "DIRECT_QUICKSIGHT_OWNER"
+
+pattern AnalysisFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER = AnalysisFilterAttribute' "DIRECT_QUICKSIGHT_SOLE_OWNER"
+
+pattern AnalysisFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER = AnalysisFilterAttribute' "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"
+
+pattern AnalysisFilterAttribute_QUICKSIGHT_OWNER :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_QUICKSIGHT_OWNER = AnalysisFilterAttribute' "QUICKSIGHT_OWNER"
+
+pattern AnalysisFilterAttribute_QUICKSIGHT_USER :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_QUICKSIGHT_USER = AnalysisFilterAttribute' "QUICKSIGHT_USER"
+
+pattern AnalysisFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER :: AnalysisFilterAttribute
+pattern AnalysisFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER = AnalysisFilterAttribute' "QUICKSIGHT_VIEWER_OR_OWNER"
+
+{-# COMPLETE
+  AnalysisFilterAttribute_ANALYSIS_NAME,
+  AnalysisFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+  AnalysisFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+  AnalysisFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+  AnalysisFilterAttribute_QUICKSIGHT_OWNER,
+  AnalysisFilterAttribute_QUICKSIGHT_USER,
+  AnalysisFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER,
+  AnalysisFilterAttribute'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisSearchFilter.hs b/gen/Amazonka/QuickSight/Types/AnalysisSearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisSearchFilter.hs
@@ -0,0 +1,238 @@
+{-# 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.QuickSight.Types.AnalysisSearchFilter
+-- 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.QuickSight.Types.AnalysisSearchFilter 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.QuickSight.Types.AnalysisFilterAttribute
+import Amazonka.QuickSight.Types.FilterOperator
+
+-- | A filter that you apply when searching for one or more analyses.
+--
+-- /See:/ 'newAnalysisSearchFilter' smart constructor.
+data AnalysisSearchFilter = AnalysisSearchFilter'
+  { -- | The name of the value that you want to use as a filter, for example
+    -- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+    --     any analyses with that ARN listed as one of the analysis\' owners or
+    --     viewers are returned. Implicit permissions from folders or groups
+    --     are considered.
+    --
+    -- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+    --     analyses with that ARN listed as one of the owners of the analyses
+    --     are returned. Implicit permissions from folders or groups are
+    --     considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+    --     and any analyses with that ARN listed as the only owner of the
+    --     analysis are returned. Implicit permissions from folders or groups
+    --     are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+    --     any analyses with that ARN listed as one of the owners of the
+    --     analyses are returned. Implicit permissions from folders or groups
+    --     are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+    --     group, and any analyses with that ARN listed as one of the owners or
+    --     viewers of the analyses are returned. Implicit permissions from
+    --     folders or groups are not considered.
+    --
+    -- -   @ANALYSIS_NAME@: Any analyses whose names have a substring match to
+    --     this value will be returned.
+    name :: Prelude.Maybe AnalysisFilterAttribute,
+    -- | The comparison operator that you want to use as a filter, for example
+    -- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+    -- and @\"StringLike\"@.
+    --
+    -- If you set the operator value to @\"StringEquals\"@, you need to provide
+    -- an ownership related filter in the @\"NAME\"@ field and the arn of the
+    -- user or group whose folders you want to search in the @\"Value\"@ field.
+    -- For example,
+    -- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    --
+    -- If you set the value to @\"StringLike\"@, you need to provide the name
+    -- of the folders you are searching for. For example,
+    -- @\"Name\":\"ANALYSIS_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+    -- The @\"StringLike\"@ operator only supports the @NAME@ value
+    -- @ANALYSIS_NAME@.
+    operator :: Prelude.Maybe FilterOperator,
+    -- | The value of the named item, in this case @QUICKSIGHT_USER@, that you
+    -- want to use as a filter, for example @\"Value\"@. An example is
+    -- @\"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisSearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'analysisSearchFilter_name' - The name of the value that you want to use as a filter, for example
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any analyses with that ARN listed as one of the analysis\' owners or
+--     viewers are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     analyses with that ARN listed as one of the owners of the analyses
+--     are returned. Implicit permissions from folders or groups are
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any analyses with that ARN listed as the only owner of the
+--     analysis are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any analyses with that ARN listed as one of the owners of the
+--     analyses are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any analyses with that ARN listed as one of the owners or
+--     viewers of the analyses are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @ANALYSIS_NAME@: Any analyses whose names have a substring match to
+--     this value will be returned.
+--
+-- 'operator', 'analysisSearchFilter_operator' - The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose folders you want to search in the @\"Value\"@ field.
+-- For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the folders you are searching for. For example,
+-- @\"Name\":\"ANALYSIS_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @ANALYSIS_NAME@.
+--
+-- 'value', 'analysisSearchFilter_value' - The value of the named item, in this case @QUICKSIGHT_USER@, that you
+-- want to use as a filter, for example @\"Value\"@. An example is
+-- @\"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+newAnalysisSearchFilter ::
+  AnalysisSearchFilter
+newAnalysisSearchFilter =
+  AnalysisSearchFilter'
+    { name = Prelude.Nothing,
+      operator = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of the value that you want to use as a filter, for example
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any analyses with that ARN listed as one of the analysis\' owners or
+--     viewers are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     analyses with that ARN listed as one of the owners of the analyses
+--     are returned. Implicit permissions from folders or groups are
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any analyses with that ARN listed as the only owner of the
+--     analysis are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any analyses with that ARN listed as one of the owners of the
+--     analyses are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any analyses with that ARN listed as one of the owners or
+--     viewers of the analyses are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @ANALYSIS_NAME@: Any analyses whose names have a substring match to
+--     this value will be returned.
+analysisSearchFilter_name :: Lens.Lens' AnalysisSearchFilter (Prelude.Maybe AnalysisFilterAttribute)
+analysisSearchFilter_name = Lens.lens (\AnalysisSearchFilter' {name} -> name) (\s@AnalysisSearchFilter' {} a -> s {name = a} :: AnalysisSearchFilter)
+
+-- | The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose folders you want to search in the @\"Value\"@ field.
+-- For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the folders you are searching for. For example,
+-- @\"Name\":\"ANALYSIS_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @ANALYSIS_NAME@.
+analysisSearchFilter_operator :: Lens.Lens' AnalysisSearchFilter (Prelude.Maybe FilterOperator)
+analysisSearchFilter_operator = Lens.lens (\AnalysisSearchFilter' {operator} -> operator) (\s@AnalysisSearchFilter' {} a -> s {operator = a} :: AnalysisSearchFilter)
+
+-- | The value of the named item, in this case @QUICKSIGHT_USER@, that you
+-- want to use as a filter, for example @\"Value\"@. An example is
+-- @\"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+analysisSearchFilter_value :: Lens.Lens' AnalysisSearchFilter (Prelude.Maybe Prelude.Text)
+analysisSearchFilter_value = Lens.lens (\AnalysisSearchFilter' {value} -> value) (\s@AnalysisSearchFilter' {} a -> s {value = a} :: AnalysisSearchFilter)
+
+instance Prelude.Hashable AnalysisSearchFilter where
+  hashWithSalt _salt AnalysisSearchFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData AnalysisSearchFilter where
+  rnf AnalysisSearchFilter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON AnalysisSearchFilter where
+  toJSON AnalysisSearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Operator" Data..=) Prelude.<$> operator,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisSourceEntity.hs b/gen/Amazonka/QuickSight/Types/AnalysisSourceEntity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisSourceEntity.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.AnalysisSourceEntity
+-- 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.QuickSight.Types.AnalysisSourceEntity 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.QuickSight.Types.AnalysisSourceTemplate
+
+-- | The source entity of an analysis.
+--
+-- /See:/ 'newAnalysisSourceEntity' smart constructor.
+data AnalysisSourceEntity = AnalysisSourceEntity'
+  { -- | The source template for the source entity of the analysis.
+    sourceTemplate :: Prelude.Maybe AnalysisSourceTemplate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisSourceEntity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sourceTemplate', 'analysisSourceEntity_sourceTemplate' - The source template for the source entity of the analysis.
+newAnalysisSourceEntity ::
+  AnalysisSourceEntity
+newAnalysisSourceEntity =
+  AnalysisSourceEntity'
+    { sourceTemplate =
+        Prelude.Nothing
+    }
+
+-- | The source template for the source entity of the analysis.
+analysisSourceEntity_sourceTemplate :: Lens.Lens' AnalysisSourceEntity (Prelude.Maybe AnalysisSourceTemplate)
+analysisSourceEntity_sourceTemplate = Lens.lens (\AnalysisSourceEntity' {sourceTemplate} -> sourceTemplate) (\s@AnalysisSourceEntity' {} a -> s {sourceTemplate = a} :: AnalysisSourceEntity)
+
+instance Prelude.Hashable AnalysisSourceEntity where
+  hashWithSalt _salt AnalysisSourceEntity' {..} =
+    _salt `Prelude.hashWithSalt` sourceTemplate
+
+instance Prelude.NFData AnalysisSourceEntity where
+  rnf AnalysisSourceEntity' {..} =
+    Prelude.rnf sourceTemplate
+
+instance Data.ToJSON AnalysisSourceEntity where
+  toJSON AnalysisSourceEntity' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceTemplate" Data..=)
+              Prelude.<$> sourceTemplate
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisSourceTemplate.hs b/gen/Amazonka/QuickSight/Types/AnalysisSourceTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisSourceTemplate.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnalysisSourceTemplate
+-- 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.QuickSight.Types.AnalysisSourceTemplate 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.QuickSight.Types.DataSetReference
+
+-- | The source template of an analysis.
+--
+-- /See:/ 'newAnalysisSourceTemplate' smart constructor.
+data AnalysisSourceTemplate = AnalysisSourceTemplate'
+  { -- | The dataset references of the source template of an analysis.
+    dataSetReferences :: Prelude.NonEmpty DataSetReference,
+    -- | The Amazon Resource Name (ARN) of the source template of an analysis.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisSourceTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetReferences', 'analysisSourceTemplate_dataSetReferences' - The dataset references of the source template of an analysis.
+--
+-- 'arn', 'analysisSourceTemplate_arn' - The Amazon Resource Name (ARN) of the source template of an analysis.
+newAnalysisSourceTemplate ::
+  -- | 'dataSetReferences'
+  Prelude.NonEmpty DataSetReference ->
+  -- | 'arn'
+  Prelude.Text ->
+  AnalysisSourceTemplate
+newAnalysisSourceTemplate pDataSetReferences_ pArn_ =
+  AnalysisSourceTemplate'
+    { dataSetReferences =
+        Lens.coerced Lens.# pDataSetReferences_,
+      arn = pArn_
+    }
+
+-- | The dataset references of the source template of an analysis.
+analysisSourceTemplate_dataSetReferences :: Lens.Lens' AnalysisSourceTemplate (Prelude.NonEmpty DataSetReference)
+analysisSourceTemplate_dataSetReferences = Lens.lens (\AnalysisSourceTemplate' {dataSetReferences} -> dataSetReferences) (\s@AnalysisSourceTemplate' {} a -> s {dataSetReferences = a} :: AnalysisSourceTemplate) Prelude.. Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the source template of an analysis.
+analysisSourceTemplate_arn :: Lens.Lens' AnalysisSourceTemplate Prelude.Text
+analysisSourceTemplate_arn = Lens.lens (\AnalysisSourceTemplate' {arn} -> arn) (\s@AnalysisSourceTemplate' {} a -> s {arn = a} :: AnalysisSourceTemplate)
+
+instance Prelude.Hashable AnalysisSourceTemplate where
+  hashWithSalt _salt AnalysisSourceTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetReferences
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData AnalysisSourceTemplate where
+  rnf AnalysisSourceTemplate' {..} =
+    Prelude.rnf dataSetReferences
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToJSON AnalysisSourceTemplate where
+  toJSON AnalysisSourceTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataSetReferences" Data..= dataSetReferences),
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AnalysisSummary.hs b/gen/Amazonka/QuickSight/Types/AnalysisSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnalysisSummary.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnalysisSummary
+-- 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.QuickSight.Types.AnalysisSummary 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.QuickSight.Types.ResourceStatus
+
+-- | The summary metadata that describes an analysis.
+--
+-- /See:/ 'newAnalysisSummary' smart constructor.
+data AnalysisSummary = AnalysisSummary'
+  { -- | The ID of the analysis. This ID displays in the URL.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the analysis.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that the analysis was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The time that the analysis was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the analysis. This name is displayed in the Amazon
+    -- QuickSight console.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The last known status for the analysis.
+    status :: Prelude.Maybe ResourceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnalysisSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'analysisSummary_analysisId' - The ID of the analysis. This ID displays in the URL.
+--
+-- 'arn', 'analysisSummary_arn' - The Amazon Resource Name (ARN) for the analysis.
+--
+-- 'createdTime', 'analysisSummary_createdTime' - The time that the analysis was created.
+--
+-- 'lastUpdatedTime', 'analysisSummary_lastUpdatedTime' - The time that the analysis was last updated.
+--
+-- 'name', 'analysisSummary_name' - The name of the analysis. This name is displayed in the Amazon
+-- QuickSight console.
+--
+-- 'status', 'analysisSummary_status' - The last known status for the analysis.
+newAnalysisSummary ::
+  AnalysisSummary
+newAnalysisSummary =
+  AnalysisSummary'
+    { analysisId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The ID of the analysis. This ID displays in the URL.
+analysisSummary_analysisId :: Lens.Lens' AnalysisSummary (Prelude.Maybe Prelude.Text)
+analysisSummary_analysisId = Lens.lens (\AnalysisSummary' {analysisId} -> analysisId) (\s@AnalysisSummary' {} a -> s {analysisId = a} :: AnalysisSummary)
+
+-- | The Amazon Resource Name (ARN) for the analysis.
+analysisSummary_arn :: Lens.Lens' AnalysisSummary (Prelude.Maybe Prelude.Text)
+analysisSummary_arn = Lens.lens (\AnalysisSummary' {arn} -> arn) (\s@AnalysisSummary' {} a -> s {arn = a} :: AnalysisSummary)
+
+-- | The time that the analysis was created.
+analysisSummary_createdTime :: Lens.Lens' AnalysisSummary (Prelude.Maybe Prelude.UTCTime)
+analysisSummary_createdTime = Lens.lens (\AnalysisSummary' {createdTime} -> createdTime) (\s@AnalysisSummary' {} a -> s {createdTime = a} :: AnalysisSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time that the analysis was last updated.
+analysisSummary_lastUpdatedTime :: Lens.Lens' AnalysisSummary (Prelude.Maybe Prelude.UTCTime)
+analysisSummary_lastUpdatedTime = Lens.lens (\AnalysisSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@AnalysisSummary' {} a -> s {lastUpdatedTime = a} :: AnalysisSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the analysis. This name is displayed in the Amazon
+-- QuickSight console.
+analysisSummary_name :: Lens.Lens' AnalysisSummary (Prelude.Maybe Prelude.Text)
+analysisSummary_name = Lens.lens (\AnalysisSummary' {name} -> name) (\s@AnalysisSummary' {} a -> s {name = a} :: AnalysisSummary)
+
+-- | The last known status for the analysis.
+analysisSummary_status :: Lens.Lens' AnalysisSummary (Prelude.Maybe ResourceStatus)
+analysisSummary_status = Lens.lens (\AnalysisSummary' {status} -> status) (\s@AnalysisSummary' {} a -> s {status = a} :: AnalysisSummary)
+
+instance Data.FromJSON AnalysisSummary where
+  parseJSON =
+    Data.withObject
+      "AnalysisSummary"
+      ( \x ->
+          AnalysisSummary'
+            Prelude.<$> (x Data..:? "AnalysisId")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable AnalysisSummary where
+  hashWithSalt _salt AnalysisSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisId
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData AnalysisSummary where
+  rnf AnalysisSummary' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/Types/AnchorDateConfiguration.hs b/gen/Amazonka/QuickSight/Types/AnchorDateConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnchorDateConfiguration.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnchorDateConfiguration
+-- 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.QuickSight.Types.AnchorDateConfiguration 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.QuickSight.Types.AnchorOption
+
+-- | The date configuration of the filter.
+--
+-- /See:/ 'newAnchorDateConfiguration' smart constructor.
+data AnchorDateConfiguration = AnchorDateConfiguration'
+  { -- | The options for the date configuration. Choose one of the options below:
+    --
+    -- -   @NOW@
+    anchorOption :: Prelude.Maybe AnchorOption,
+    -- | The name of the parameter that is used for the anchor date
+    -- configuration.
+    parameterName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnchorDateConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'anchorOption', 'anchorDateConfiguration_anchorOption' - The options for the date configuration. Choose one of the options below:
+--
+-- -   @NOW@
+--
+-- 'parameterName', 'anchorDateConfiguration_parameterName' - The name of the parameter that is used for the anchor date
+-- configuration.
+newAnchorDateConfiguration ::
+  AnchorDateConfiguration
+newAnchorDateConfiguration =
+  AnchorDateConfiguration'
+    { anchorOption =
+        Prelude.Nothing,
+      parameterName = Prelude.Nothing
+    }
+
+-- | The options for the date configuration. Choose one of the options below:
+--
+-- -   @NOW@
+anchorDateConfiguration_anchorOption :: Lens.Lens' AnchorDateConfiguration (Prelude.Maybe AnchorOption)
+anchorDateConfiguration_anchorOption = Lens.lens (\AnchorDateConfiguration' {anchorOption} -> anchorOption) (\s@AnchorDateConfiguration' {} a -> s {anchorOption = a} :: AnchorDateConfiguration)
+
+-- | The name of the parameter that is used for the anchor date
+-- configuration.
+anchorDateConfiguration_parameterName :: Lens.Lens' AnchorDateConfiguration (Prelude.Maybe Prelude.Text)
+anchorDateConfiguration_parameterName = Lens.lens (\AnchorDateConfiguration' {parameterName} -> parameterName) (\s@AnchorDateConfiguration' {} a -> s {parameterName = a} :: AnchorDateConfiguration)
+
+instance Data.FromJSON AnchorDateConfiguration where
+  parseJSON =
+    Data.withObject
+      "AnchorDateConfiguration"
+      ( \x ->
+          AnchorDateConfiguration'
+            Prelude.<$> (x Data..:? "AnchorOption")
+            Prelude.<*> (x Data..:? "ParameterName")
+      )
+
+instance Prelude.Hashable AnchorDateConfiguration where
+  hashWithSalt _salt AnchorDateConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` anchorOption
+      `Prelude.hashWithSalt` parameterName
+
+instance Prelude.NFData AnchorDateConfiguration where
+  rnf AnchorDateConfiguration' {..} =
+    Prelude.rnf anchorOption
+      `Prelude.seq` Prelude.rnf parameterName
+
+instance Data.ToJSON AnchorDateConfiguration where
+  toJSON AnchorDateConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AnchorOption" Data..=) Prelude.<$> anchorOption,
+            ("ParameterName" Data..=) Prelude.<$> parameterName
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AnchorOption.hs b/gen/Amazonka/QuickSight/Types/AnchorOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnchorOption.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.QuickSight.Types.AnchorOption
+-- 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.QuickSight.Types.AnchorOption
+  ( AnchorOption
+      ( ..,
+        AnchorOption_NOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AnchorOption = AnchorOption'
+  { fromAnchorOption ::
+      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 AnchorOption_NOW :: AnchorOption
+pattern AnchorOption_NOW = AnchorOption' "NOW"
+
+{-# COMPLETE
+  AnchorOption_NOW,
+  AnchorOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AnonymousUserDashboardEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/AnonymousUserDashboardEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnonymousUserDashboardEmbeddingConfiguration.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.QuickSight.Types.AnonymousUserDashboardEmbeddingConfiguration
+-- 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.QuickSight.Types.AnonymousUserDashboardEmbeddingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the dashboard that you want to embed.
+--
+-- /See:/ 'newAnonymousUserDashboardEmbeddingConfiguration' smart constructor.
+data AnonymousUserDashboardEmbeddingConfiguration = AnonymousUserDashboardEmbeddingConfiguration'
+  { -- | The dashboard ID for the dashboard that you want the user to see first.
+    -- This ID is included in the output URL. When the URL in response is
+    -- accessed, Amazon QuickSight renders this dashboard.
+    --
+    -- The Amazon Resource Name (ARN) of this dashboard must be included in the
+    -- @AuthorizedResourceArns@ parameter. Otherwise, the request will fail
+    -- with @InvalidParameterValueException@.
+    initialDashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnonymousUserDashboardEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialDashboardId', 'anonymousUserDashboardEmbeddingConfiguration_initialDashboardId' - The dashboard ID for the dashboard that you want the user to see first.
+-- This ID is included in the output URL. When the URL in response is
+-- accessed, Amazon QuickSight renders this dashboard.
+--
+-- The Amazon Resource Name (ARN) of this dashboard must be included in the
+-- @AuthorizedResourceArns@ parameter. Otherwise, the request will fail
+-- with @InvalidParameterValueException@.
+newAnonymousUserDashboardEmbeddingConfiguration ::
+  -- | 'initialDashboardId'
+  Prelude.Text ->
+  AnonymousUserDashboardEmbeddingConfiguration
+newAnonymousUserDashboardEmbeddingConfiguration
+  pInitialDashboardId_ =
+    AnonymousUserDashboardEmbeddingConfiguration'
+      { initialDashboardId =
+          pInitialDashboardId_
+      }
+
+-- | The dashboard ID for the dashboard that you want the user to see first.
+-- This ID is included in the output URL. When the URL in response is
+-- accessed, Amazon QuickSight renders this dashboard.
+--
+-- The Amazon Resource Name (ARN) of this dashboard must be included in the
+-- @AuthorizedResourceArns@ parameter. Otherwise, the request will fail
+-- with @InvalidParameterValueException@.
+anonymousUserDashboardEmbeddingConfiguration_initialDashboardId :: Lens.Lens' AnonymousUserDashboardEmbeddingConfiguration Prelude.Text
+anonymousUserDashboardEmbeddingConfiguration_initialDashboardId = Lens.lens (\AnonymousUserDashboardEmbeddingConfiguration' {initialDashboardId} -> initialDashboardId) (\s@AnonymousUserDashboardEmbeddingConfiguration' {} a -> s {initialDashboardId = a} :: AnonymousUserDashboardEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    AnonymousUserDashboardEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    AnonymousUserDashboardEmbeddingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` initialDashboardId
+
+instance
+  Prelude.NFData
+    AnonymousUserDashboardEmbeddingConfiguration
+  where
+  rnf AnonymousUserDashboardEmbeddingConfiguration' {..} =
+    Prelude.rnf initialDashboardId
+
+instance
+  Data.ToJSON
+    AnonymousUserDashboardEmbeddingConfiguration
+  where
+  toJSON
+    AnonymousUserDashboardEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("InitialDashboardId" Data..= initialDashboardId)
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/AnonymousUserDashboardVisualEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/AnonymousUserDashboardVisualEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnonymousUserDashboardVisualEmbeddingConfiguration.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.AnonymousUserDashboardVisualEmbeddingConfiguration
+-- 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.QuickSight.Types.AnonymousUserDashboardVisualEmbeddingConfiguration 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.QuickSight.Types.DashboardVisualId
+
+-- | The experience that you are embedding. You can use this object to
+-- generate a url that embeds a visual into your application.
+--
+-- /See:/ 'newAnonymousUserDashboardVisualEmbeddingConfiguration' smart constructor.
+data AnonymousUserDashboardVisualEmbeddingConfiguration = AnonymousUserDashboardVisualEmbeddingConfiguration'
+  { -- | The visual ID for the visual that you want the user to see. This ID is
+    -- included in the output URL. When the URL in response is accessed, Amazon
+    -- QuickSight renders this visual.
+    --
+    -- The Amazon Resource Name (ARN) of the dashboard that the visual belongs
+    -- to must be included in the @AuthorizedResourceArns@ parameter.
+    -- Otherwise, the request will fail with @InvalidParameterValueException@.
+    initialDashboardVisualId :: DashboardVisualId
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnonymousUserDashboardVisualEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialDashboardVisualId', 'anonymousUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId' - The visual ID for the visual that you want the user to see. This ID is
+-- included in the output URL. When the URL in response is accessed, Amazon
+-- QuickSight renders this visual.
+--
+-- The Amazon Resource Name (ARN) of the dashboard that the visual belongs
+-- to must be included in the @AuthorizedResourceArns@ parameter.
+-- Otherwise, the request will fail with @InvalidParameterValueException@.
+newAnonymousUserDashboardVisualEmbeddingConfiguration ::
+  -- | 'initialDashboardVisualId'
+  DashboardVisualId ->
+  AnonymousUserDashboardVisualEmbeddingConfiguration
+newAnonymousUserDashboardVisualEmbeddingConfiguration
+  pInitialDashboardVisualId_ =
+    AnonymousUserDashboardVisualEmbeddingConfiguration'
+      { initialDashboardVisualId =
+          pInitialDashboardVisualId_
+      }
+
+-- | The visual ID for the visual that you want the user to see. This ID is
+-- included in the output URL. When the URL in response is accessed, Amazon
+-- QuickSight renders this visual.
+--
+-- The Amazon Resource Name (ARN) of the dashboard that the visual belongs
+-- to must be included in the @AuthorizedResourceArns@ parameter.
+-- Otherwise, the request will fail with @InvalidParameterValueException@.
+anonymousUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId :: Lens.Lens' AnonymousUserDashboardVisualEmbeddingConfiguration DashboardVisualId
+anonymousUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId = Lens.lens (\AnonymousUserDashboardVisualEmbeddingConfiguration' {initialDashboardVisualId} -> initialDashboardVisualId) (\s@AnonymousUserDashboardVisualEmbeddingConfiguration' {} a -> s {initialDashboardVisualId = a} :: AnonymousUserDashboardVisualEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    AnonymousUserDashboardVisualEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    AnonymousUserDashboardVisualEmbeddingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` initialDashboardVisualId
+
+instance
+  Prelude.NFData
+    AnonymousUserDashboardVisualEmbeddingConfiguration
+  where
+  rnf
+    AnonymousUserDashboardVisualEmbeddingConfiguration' {..} =
+      Prelude.rnf initialDashboardVisualId
+
+instance
+  Data.ToJSON
+    AnonymousUserDashboardVisualEmbeddingConfiguration
+  where
+  toJSON
+    AnonymousUserDashboardVisualEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ( "InitialDashboardVisualId"
+                    Data..= initialDashboardVisualId
+                )
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/AnonymousUserEmbeddingExperienceConfiguration.hs b/gen/Amazonka/QuickSight/Types/AnonymousUserEmbeddingExperienceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnonymousUserEmbeddingExperienceConfiguration.hs
@@ -0,0 +1,121 @@
+{-# 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.QuickSight.Types.AnonymousUserEmbeddingExperienceConfiguration
+-- 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.QuickSight.Types.AnonymousUserEmbeddingExperienceConfiguration 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.QuickSight.Types.AnonymousUserDashboardEmbeddingConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserDashboardVisualEmbeddingConfiguration
+import Amazonka.QuickSight.Types.AnonymousUserQSearchBarEmbeddingConfiguration
+
+-- | The type of experience you want to embed. For anonymous users, you can
+-- embed Amazon QuickSight dashboards.
+--
+-- /See:/ 'newAnonymousUserEmbeddingExperienceConfiguration' smart constructor.
+data AnonymousUserEmbeddingExperienceConfiguration = AnonymousUserEmbeddingExperienceConfiguration'
+  { -- | The type of embedding experience. In this case, Amazon QuickSight
+    -- dashboards.
+    dashboard :: Prelude.Maybe AnonymousUserDashboardEmbeddingConfiguration,
+    -- | The type of embedding experience. In this case, Amazon QuickSight
+    -- visuals.
+    dashboardVisual :: Prelude.Maybe AnonymousUserDashboardVisualEmbeddingConfiguration,
+    -- | The Q search bar that you want to use for anonymous user embedding.
+    qSearchBar :: Prelude.Maybe AnonymousUserQSearchBarEmbeddingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnonymousUserEmbeddingExperienceConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboard', 'anonymousUserEmbeddingExperienceConfiguration_dashboard' - The type of embedding experience. In this case, Amazon QuickSight
+-- dashboards.
+--
+-- 'dashboardVisual', 'anonymousUserEmbeddingExperienceConfiguration_dashboardVisual' - The type of embedding experience. In this case, Amazon QuickSight
+-- visuals.
+--
+-- 'qSearchBar', 'anonymousUserEmbeddingExperienceConfiguration_qSearchBar' - The Q search bar that you want to use for anonymous user embedding.
+newAnonymousUserEmbeddingExperienceConfiguration ::
+  AnonymousUserEmbeddingExperienceConfiguration
+newAnonymousUserEmbeddingExperienceConfiguration =
+  AnonymousUserEmbeddingExperienceConfiguration'
+    { dashboard =
+        Prelude.Nothing,
+      dashboardVisual =
+        Prelude.Nothing,
+      qSearchBar = Prelude.Nothing
+    }
+
+-- | The type of embedding experience. In this case, Amazon QuickSight
+-- dashboards.
+anonymousUserEmbeddingExperienceConfiguration_dashboard :: Lens.Lens' AnonymousUserEmbeddingExperienceConfiguration (Prelude.Maybe AnonymousUserDashboardEmbeddingConfiguration)
+anonymousUserEmbeddingExperienceConfiguration_dashboard = Lens.lens (\AnonymousUserEmbeddingExperienceConfiguration' {dashboard} -> dashboard) (\s@AnonymousUserEmbeddingExperienceConfiguration' {} a -> s {dashboard = a} :: AnonymousUserEmbeddingExperienceConfiguration)
+
+-- | The type of embedding experience. In this case, Amazon QuickSight
+-- visuals.
+anonymousUserEmbeddingExperienceConfiguration_dashboardVisual :: Lens.Lens' AnonymousUserEmbeddingExperienceConfiguration (Prelude.Maybe AnonymousUserDashboardVisualEmbeddingConfiguration)
+anonymousUserEmbeddingExperienceConfiguration_dashboardVisual = Lens.lens (\AnonymousUserEmbeddingExperienceConfiguration' {dashboardVisual} -> dashboardVisual) (\s@AnonymousUserEmbeddingExperienceConfiguration' {} a -> s {dashboardVisual = a} :: AnonymousUserEmbeddingExperienceConfiguration)
+
+-- | The Q search bar that you want to use for anonymous user embedding.
+anonymousUserEmbeddingExperienceConfiguration_qSearchBar :: Lens.Lens' AnonymousUserEmbeddingExperienceConfiguration (Prelude.Maybe AnonymousUserQSearchBarEmbeddingConfiguration)
+anonymousUserEmbeddingExperienceConfiguration_qSearchBar = Lens.lens (\AnonymousUserEmbeddingExperienceConfiguration' {qSearchBar} -> qSearchBar) (\s@AnonymousUserEmbeddingExperienceConfiguration' {} a -> s {qSearchBar = a} :: AnonymousUserEmbeddingExperienceConfiguration)
+
+instance
+  Prelude.Hashable
+    AnonymousUserEmbeddingExperienceConfiguration
+  where
+  hashWithSalt
+    _salt
+    AnonymousUserEmbeddingExperienceConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` dashboard
+        `Prelude.hashWithSalt` dashboardVisual
+        `Prelude.hashWithSalt` qSearchBar
+
+instance
+  Prelude.NFData
+    AnonymousUserEmbeddingExperienceConfiguration
+  where
+  rnf
+    AnonymousUserEmbeddingExperienceConfiguration' {..} =
+      Prelude.rnf dashboard
+        `Prelude.seq` Prelude.rnf dashboardVisual
+        `Prelude.seq` Prelude.rnf qSearchBar
+
+instance
+  Data.ToJSON
+    AnonymousUserEmbeddingExperienceConfiguration
+  where
+  toJSON
+    AnonymousUserEmbeddingExperienceConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("Dashboard" Data..=) Prelude.<$> dashboard,
+              ("DashboardVisual" Data..=)
+                Prelude.<$> dashboardVisual,
+              ("QSearchBar" Data..=) Prelude.<$> qSearchBar
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/AnonymousUserQSearchBarEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/AnonymousUserQSearchBarEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AnonymousUserQSearchBarEmbeddingConfiguration.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AnonymousUserQSearchBarEmbeddingConfiguration
+-- 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.QuickSight.Types.AnonymousUserQSearchBarEmbeddingConfiguration 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 settings that you want to use with the Q search bar.
+--
+-- /See:/ 'newAnonymousUserQSearchBarEmbeddingConfiguration' smart constructor.
+data AnonymousUserQSearchBarEmbeddingConfiguration = AnonymousUserQSearchBarEmbeddingConfiguration'
+  { -- | The QuickSight Q topic ID of the topic that you want the anonymous user
+    -- to see first. This ID is included in the output URL. When the URL in
+    -- response is accessed, Amazon QuickSight renders the Q search bar with
+    -- this topic pre-selected.
+    --
+    -- The Amazon Resource Name (ARN) of this Q topic must be included in the
+    -- @AuthorizedResourceArns@ parameter. Otherwise, the request will fail
+    -- with @InvalidParameterValueException@.
+    initialTopicId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnonymousUserQSearchBarEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialTopicId', 'anonymousUserQSearchBarEmbeddingConfiguration_initialTopicId' - The QuickSight Q topic ID of the topic that you want the anonymous user
+-- to see first. This ID is included in the output URL. When the URL in
+-- response is accessed, Amazon QuickSight renders the Q search bar with
+-- this topic pre-selected.
+--
+-- The Amazon Resource Name (ARN) of this Q topic must be included in the
+-- @AuthorizedResourceArns@ parameter. Otherwise, the request will fail
+-- with @InvalidParameterValueException@.
+newAnonymousUserQSearchBarEmbeddingConfiguration ::
+  -- | 'initialTopicId'
+  Prelude.Text ->
+  AnonymousUserQSearchBarEmbeddingConfiguration
+newAnonymousUserQSearchBarEmbeddingConfiguration
+  pInitialTopicId_ =
+    AnonymousUserQSearchBarEmbeddingConfiguration'
+      { initialTopicId =
+          pInitialTopicId_
+      }
+
+-- | The QuickSight Q topic ID of the topic that you want the anonymous user
+-- to see first. This ID is included in the output URL. When the URL in
+-- response is accessed, Amazon QuickSight renders the Q search bar with
+-- this topic pre-selected.
+--
+-- The Amazon Resource Name (ARN) of this Q topic must be included in the
+-- @AuthorizedResourceArns@ parameter. Otherwise, the request will fail
+-- with @InvalidParameterValueException@.
+anonymousUserQSearchBarEmbeddingConfiguration_initialTopicId :: Lens.Lens' AnonymousUserQSearchBarEmbeddingConfiguration Prelude.Text
+anonymousUserQSearchBarEmbeddingConfiguration_initialTopicId = Lens.lens (\AnonymousUserQSearchBarEmbeddingConfiguration' {initialTopicId} -> initialTopicId) (\s@AnonymousUserQSearchBarEmbeddingConfiguration' {} a -> s {initialTopicId = a} :: AnonymousUserQSearchBarEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    AnonymousUserQSearchBarEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    AnonymousUserQSearchBarEmbeddingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` initialTopicId
+
+instance
+  Prelude.NFData
+    AnonymousUserQSearchBarEmbeddingConfiguration
+  where
+  rnf
+    AnonymousUserQSearchBarEmbeddingConfiguration' {..} =
+      Prelude.rnf initialTopicId
+
+instance
+  Data.ToJSON
+    AnonymousUserQSearchBarEmbeddingConfiguration
+  where
+  toJSON
+    AnonymousUserQSearchBarEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("InitialTopicId" Data..= initialTopicId)
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/ArcAxisConfiguration.hs b/gen/Amazonka/QuickSight/Types/ArcAxisConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ArcAxisConfiguration.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.QuickSight.Types.ArcAxisConfiguration
+-- 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.QuickSight.Types.ArcAxisConfiguration 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.QuickSight.Types.ArcAxisDisplayRange
+
+-- | The arc axis configuration of a @GaugeChartVisual@.
+--
+-- /See:/ 'newArcAxisConfiguration' smart constructor.
+data ArcAxisConfiguration = ArcAxisConfiguration'
+  { -- | The arc axis range of a @GaugeChartVisual@.
+    range :: Prelude.Maybe ArcAxisDisplayRange,
+    -- | The reserved range of the arc axis.
+    reserveRange :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArcAxisConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'range', 'arcAxisConfiguration_range' - The arc axis range of a @GaugeChartVisual@.
+--
+-- 'reserveRange', 'arcAxisConfiguration_reserveRange' - The reserved range of the arc axis.
+newArcAxisConfiguration ::
+  ArcAxisConfiguration
+newArcAxisConfiguration =
+  ArcAxisConfiguration'
+    { range = Prelude.Nothing,
+      reserveRange = Prelude.Nothing
+    }
+
+-- | The arc axis range of a @GaugeChartVisual@.
+arcAxisConfiguration_range :: Lens.Lens' ArcAxisConfiguration (Prelude.Maybe ArcAxisDisplayRange)
+arcAxisConfiguration_range = Lens.lens (\ArcAxisConfiguration' {range} -> range) (\s@ArcAxisConfiguration' {} a -> s {range = a} :: ArcAxisConfiguration)
+
+-- | The reserved range of the arc axis.
+arcAxisConfiguration_reserveRange :: Lens.Lens' ArcAxisConfiguration (Prelude.Maybe Prelude.Int)
+arcAxisConfiguration_reserveRange = Lens.lens (\ArcAxisConfiguration' {reserveRange} -> reserveRange) (\s@ArcAxisConfiguration' {} a -> s {reserveRange = a} :: ArcAxisConfiguration)
+
+instance Data.FromJSON ArcAxisConfiguration where
+  parseJSON =
+    Data.withObject
+      "ArcAxisConfiguration"
+      ( \x ->
+          ArcAxisConfiguration'
+            Prelude.<$> (x Data..:? "Range")
+            Prelude.<*> (x Data..:? "ReserveRange")
+      )
+
+instance Prelude.Hashable ArcAxisConfiguration where
+  hashWithSalt _salt ArcAxisConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` range
+      `Prelude.hashWithSalt` reserveRange
+
+instance Prelude.NFData ArcAxisConfiguration where
+  rnf ArcAxisConfiguration' {..} =
+    Prelude.rnf range
+      `Prelude.seq` Prelude.rnf reserveRange
+
+instance Data.ToJSON ArcAxisConfiguration where
+  toJSON ArcAxisConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Range" Data..=) Prelude.<$> range,
+            ("ReserveRange" Data..=) Prelude.<$> reserveRange
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ArcAxisDisplayRange.hs b/gen/Amazonka/QuickSight/Types/ArcAxisDisplayRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ArcAxisDisplayRange.hs
@@ -0,0 +1,92 @@
+{-# 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.QuickSight.Types.ArcAxisDisplayRange
+-- 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.QuickSight.Types.ArcAxisDisplayRange 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 arc axis range of a @GaugeChartVisual@.
+--
+-- /See:/ 'newArcAxisDisplayRange' smart constructor.
+data ArcAxisDisplayRange = ArcAxisDisplayRange'
+  { -- | The maximum value of the arc axis range.
+    max :: Prelude.Maybe Prelude.Double,
+    -- | The minimum value of the arc axis range.
+    min :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArcAxisDisplayRange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'max', 'arcAxisDisplayRange_max' - The maximum value of the arc axis range.
+--
+-- 'min', 'arcAxisDisplayRange_min' - The minimum value of the arc axis range.
+newArcAxisDisplayRange ::
+  ArcAxisDisplayRange
+newArcAxisDisplayRange =
+  ArcAxisDisplayRange'
+    { max = Prelude.Nothing,
+      min = Prelude.Nothing
+    }
+
+-- | The maximum value of the arc axis range.
+arcAxisDisplayRange_max :: Lens.Lens' ArcAxisDisplayRange (Prelude.Maybe Prelude.Double)
+arcAxisDisplayRange_max = Lens.lens (\ArcAxisDisplayRange' {max} -> max) (\s@ArcAxisDisplayRange' {} a -> s {max = a} :: ArcAxisDisplayRange)
+
+-- | The minimum value of the arc axis range.
+arcAxisDisplayRange_min :: Lens.Lens' ArcAxisDisplayRange (Prelude.Maybe Prelude.Double)
+arcAxisDisplayRange_min = Lens.lens (\ArcAxisDisplayRange' {min} -> min) (\s@ArcAxisDisplayRange' {} a -> s {min = a} :: ArcAxisDisplayRange)
+
+instance Data.FromJSON ArcAxisDisplayRange where
+  parseJSON =
+    Data.withObject
+      "ArcAxisDisplayRange"
+      ( \x ->
+          ArcAxisDisplayRange'
+            Prelude.<$> (x Data..:? "Max")
+            Prelude.<*> (x Data..:? "Min")
+      )
+
+instance Prelude.Hashable ArcAxisDisplayRange where
+  hashWithSalt _salt ArcAxisDisplayRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` max
+      `Prelude.hashWithSalt` min
+
+instance Prelude.NFData ArcAxisDisplayRange where
+  rnf ArcAxisDisplayRange' {..} =
+    Prelude.rnf max `Prelude.seq` Prelude.rnf min
+
+instance Data.ToJSON ArcAxisDisplayRange where
+  toJSON ArcAxisDisplayRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Max" Data..=) Prelude.<$> max,
+            ("Min" Data..=) Prelude.<$> min
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ArcConfiguration.hs b/gen/Amazonka/QuickSight/Types/ArcConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ArcConfiguration.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.QuickSight.Types.ArcConfiguration
+-- 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.QuickSight.Types.ArcConfiguration 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.QuickSight.Types.ArcThicknessOptions
+
+-- | The arc configuration of a @GaugeChartVisual@.
+--
+-- /See:/ 'newArcConfiguration' smart constructor.
+data ArcConfiguration = ArcConfiguration'
+  { -- | The option that determines the arc angle of a @GaugeChartVisual@.
+    arcAngle :: Prelude.Maybe Prelude.Double,
+    -- | The options that determine the arc thickness of a @GaugeChartVisual@.
+    arcThickness :: Prelude.Maybe ArcThicknessOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArcConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arcAngle', 'arcConfiguration_arcAngle' - The option that determines the arc angle of a @GaugeChartVisual@.
+--
+-- 'arcThickness', 'arcConfiguration_arcThickness' - The options that determine the arc thickness of a @GaugeChartVisual@.
+newArcConfiguration ::
+  ArcConfiguration
+newArcConfiguration =
+  ArcConfiguration'
+    { arcAngle = Prelude.Nothing,
+      arcThickness = Prelude.Nothing
+    }
+
+-- | The option that determines the arc angle of a @GaugeChartVisual@.
+arcConfiguration_arcAngle :: Lens.Lens' ArcConfiguration (Prelude.Maybe Prelude.Double)
+arcConfiguration_arcAngle = Lens.lens (\ArcConfiguration' {arcAngle} -> arcAngle) (\s@ArcConfiguration' {} a -> s {arcAngle = a} :: ArcConfiguration)
+
+-- | The options that determine the arc thickness of a @GaugeChartVisual@.
+arcConfiguration_arcThickness :: Lens.Lens' ArcConfiguration (Prelude.Maybe ArcThicknessOptions)
+arcConfiguration_arcThickness = Lens.lens (\ArcConfiguration' {arcThickness} -> arcThickness) (\s@ArcConfiguration' {} a -> s {arcThickness = a} :: ArcConfiguration)
+
+instance Data.FromJSON ArcConfiguration where
+  parseJSON =
+    Data.withObject
+      "ArcConfiguration"
+      ( \x ->
+          ArcConfiguration'
+            Prelude.<$> (x Data..:? "ArcAngle")
+            Prelude.<*> (x Data..:? "ArcThickness")
+      )
+
+instance Prelude.Hashable ArcConfiguration where
+  hashWithSalt _salt ArcConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` arcAngle
+      `Prelude.hashWithSalt` arcThickness
+
+instance Prelude.NFData ArcConfiguration where
+  rnf ArcConfiguration' {..} =
+    Prelude.rnf arcAngle
+      `Prelude.seq` Prelude.rnf arcThickness
+
+instance Data.ToJSON ArcConfiguration where
+  toJSON ArcConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArcAngle" Data..=) Prelude.<$> arcAngle,
+            ("ArcThickness" Data..=) Prelude.<$> arcThickness
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ArcOptions.hs b/gen/Amazonka/QuickSight/Types/ArcOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ArcOptions.hs
@@ -0,0 +1,75 @@
+{-# 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.QuickSight.Types.ArcOptions
+-- 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.QuickSight.Types.ArcOptions 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.QuickSight.Types.ArcThickness
+
+-- | The options that determine the arc thickness of a @GaugeChartVisual@.
+--
+-- /See:/ 'newArcOptions' smart constructor.
+data ArcOptions = ArcOptions'
+  { -- | The arc thickness of a @GaugeChartVisual@.
+    arcThickness :: Prelude.Maybe ArcThickness
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArcOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arcThickness', 'arcOptions_arcThickness' - The arc thickness of a @GaugeChartVisual@.
+newArcOptions ::
+  ArcOptions
+newArcOptions =
+  ArcOptions' {arcThickness = Prelude.Nothing}
+
+-- | The arc thickness of a @GaugeChartVisual@.
+arcOptions_arcThickness :: Lens.Lens' ArcOptions (Prelude.Maybe ArcThickness)
+arcOptions_arcThickness = Lens.lens (\ArcOptions' {arcThickness} -> arcThickness) (\s@ArcOptions' {} a -> s {arcThickness = a} :: ArcOptions)
+
+instance Data.FromJSON ArcOptions where
+  parseJSON =
+    Data.withObject
+      "ArcOptions"
+      ( \x ->
+          ArcOptions' Prelude.<$> (x Data..:? "ArcThickness")
+      )
+
+instance Prelude.Hashable ArcOptions where
+  hashWithSalt _salt ArcOptions' {..} =
+    _salt `Prelude.hashWithSalt` arcThickness
+
+instance Prelude.NFData ArcOptions where
+  rnf ArcOptions' {..} = Prelude.rnf arcThickness
+
+instance Data.ToJSON ArcOptions where
+  toJSON ArcOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("ArcThickness" Data..=) Prelude.<$> arcThickness]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ArcThickness.hs b/gen/Amazonka/QuickSight/Types/ArcThickness.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ArcThickness.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.QuickSight.Types.ArcThickness
+-- 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.QuickSight.Types.ArcThickness
+  ( ArcThickness
+      ( ..,
+        ArcThickness_LARGE,
+        ArcThickness_MEDIUM,
+        ArcThickness_SMALL,
+        ArcThickness_WHOLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ArcThickness = ArcThickness'
+  { fromArcThickness ::
+      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 ArcThickness_LARGE :: ArcThickness
+pattern ArcThickness_LARGE = ArcThickness' "LARGE"
+
+pattern ArcThickness_MEDIUM :: ArcThickness
+pattern ArcThickness_MEDIUM = ArcThickness' "MEDIUM"
+
+pattern ArcThickness_SMALL :: ArcThickness
+pattern ArcThickness_SMALL = ArcThickness' "SMALL"
+
+pattern ArcThickness_WHOLE :: ArcThickness
+pattern ArcThickness_WHOLE = ArcThickness' "WHOLE"
+
+{-# COMPLETE
+  ArcThickness_LARGE,
+  ArcThickness_MEDIUM,
+  ArcThickness_SMALL,
+  ArcThickness_WHOLE,
+  ArcThickness'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ArcThicknessOptions.hs b/gen/Amazonka/QuickSight/Types/ArcThicknessOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ArcThicknessOptions.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.QuickSight.Types.ArcThicknessOptions
+-- 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.QuickSight.Types.ArcThicknessOptions
+  ( ArcThicknessOptions
+      ( ..,
+        ArcThicknessOptions_LARGE,
+        ArcThicknessOptions_MEDIUM,
+        ArcThicknessOptions_SMALL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ArcThicknessOptions = ArcThicknessOptions'
+  { fromArcThicknessOptions ::
+      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 ArcThicknessOptions_LARGE :: ArcThicknessOptions
+pattern ArcThicknessOptions_LARGE = ArcThicknessOptions' "LARGE"
+
+pattern ArcThicknessOptions_MEDIUM :: ArcThicknessOptions
+pattern ArcThicknessOptions_MEDIUM = ArcThicknessOptions' "MEDIUM"
+
+pattern ArcThicknessOptions_SMALL :: ArcThicknessOptions
+pattern ArcThicknessOptions_SMALL = ArcThicknessOptions' "SMALL"
+
+{-# COMPLETE
+  ArcThicknessOptions_LARGE,
+  ArcThicknessOptions_MEDIUM,
+  ArcThicknessOptions_SMALL,
+  ArcThicknessOptions'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AssignmentStatus.hs b/gen/Amazonka/QuickSight/Types/AssignmentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AssignmentStatus.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.QuickSight.Types.AssignmentStatus
+-- 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.QuickSight.Types.AssignmentStatus
+  ( AssignmentStatus
+      ( ..,
+        AssignmentStatus_DISABLED,
+        AssignmentStatus_DRAFT,
+        AssignmentStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssignmentStatus = AssignmentStatus'
+  { fromAssignmentStatus ::
+      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 AssignmentStatus_DISABLED :: AssignmentStatus
+pattern AssignmentStatus_DISABLED = AssignmentStatus' "DISABLED"
+
+pattern AssignmentStatus_DRAFT :: AssignmentStatus
+pattern AssignmentStatus_DRAFT = AssignmentStatus' "DRAFT"
+
+pattern AssignmentStatus_ENABLED :: AssignmentStatus
+pattern AssignmentStatus_ENABLED = AssignmentStatus' "ENABLED"
+
+{-# COMPLETE
+  AssignmentStatus_DISABLED,
+  AssignmentStatus_DRAFT,
+  AssignmentStatus_ENABLED,
+  AssignmentStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AthenaParameters.hs b/gen/Amazonka/QuickSight/Types/AthenaParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AthenaParameters.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.AthenaParameters
+-- 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.QuickSight.Types.AthenaParameters 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
+
+-- | Parameters for Amazon Athena.
+--
+-- /See:/ 'newAthenaParameters' smart constructor.
+data AthenaParameters = AthenaParameters'
+  { -- | Use the @RoleArn@ structure to override an account-wide role for a
+    -- specific Athena data source. For example, say an account administrator
+    -- has turned off all Athena access with an account-wide role. The
+    -- administrator can then use @RoleArn@ to bypass the account-wide role and
+    -- allow Athena access for the single Athena data source that is specified
+    -- in the structure, even if the account-wide role forbidding Athena access
+    -- is still active.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The workgroup that Amazon Athena uses.
+    workGroup :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AthenaParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'roleArn', 'athenaParameters_roleArn' - Use the @RoleArn@ structure to override an account-wide role for a
+-- specific Athena data source. For example, say an account administrator
+-- has turned off all Athena access with an account-wide role. The
+-- administrator can then use @RoleArn@ to bypass the account-wide role and
+-- allow Athena access for the single Athena data source that is specified
+-- in the structure, even if the account-wide role forbidding Athena access
+-- is still active.
+--
+-- 'workGroup', 'athenaParameters_workGroup' - The workgroup that Amazon Athena uses.
+newAthenaParameters ::
+  AthenaParameters
+newAthenaParameters =
+  AthenaParameters'
+    { roleArn = Prelude.Nothing,
+      workGroup = Prelude.Nothing
+    }
+
+-- | Use the @RoleArn@ structure to override an account-wide role for a
+-- specific Athena data source. For example, say an account administrator
+-- has turned off all Athena access with an account-wide role. The
+-- administrator can then use @RoleArn@ to bypass the account-wide role and
+-- allow Athena access for the single Athena data source that is specified
+-- in the structure, even if the account-wide role forbidding Athena access
+-- is still active.
+athenaParameters_roleArn :: Lens.Lens' AthenaParameters (Prelude.Maybe Prelude.Text)
+athenaParameters_roleArn = Lens.lens (\AthenaParameters' {roleArn} -> roleArn) (\s@AthenaParameters' {} a -> s {roleArn = a} :: AthenaParameters)
+
+-- | The workgroup that Amazon Athena uses.
+athenaParameters_workGroup :: Lens.Lens' AthenaParameters (Prelude.Maybe Prelude.Text)
+athenaParameters_workGroup = Lens.lens (\AthenaParameters' {workGroup} -> workGroup) (\s@AthenaParameters' {} a -> s {workGroup = a} :: AthenaParameters)
+
+instance Data.FromJSON AthenaParameters where
+  parseJSON =
+    Data.withObject
+      "AthenaParameters"
+      ( \x ->
+          AthenaParameters'
+            Prelude.<$> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "WorkGroup")
+      )
+
+instance Prelude.Hashable AthenaParameters where
+  hashWithSalt _salt AthenaParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` workGroup
+
+instance Prelude.NFData AthenaParameters where
+  rnf AthenaParameters' {..} =
+    Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf workGroup
+
+instance Data.ToJSON AthenaParameters where
+  toJSON AthenaParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RoleArn" Data..=) Prelude.<$> roleArn,
+            ("WorkGroup" Data..=) Prelude.<$> workGroup
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AuroraParameters.hs b/gen/Amazonka/QuickSight/Types/AuroraParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AuroraParameters.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.QuickSight.Types.AuroraParameters
+-- 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.QuickSight.Types.AuroraParameters 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
+
+-- | Parameters for Amazon Aurora.
+--
+-- /See:/ 'newAuroraParameters' smart constructor.
+data AuroraParameters = AuroraParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AuroraParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'auroraParameters_host' - Host.
+--
+-- 'port', 'auroraParameters_port' - Port.
+--
+-- 'database', 'auroraParameters_database' - Database.
+newAuroraParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  AuroraParameters
+newAuroraParameters pHost_ pPort_ pDatabase_ =
+  AuroraParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | Host.
+auroraParameters_host :: Lens.Lens' AuroraParameters Prelude.Text
+auroraParameters_host = Lens.lens (\AuroraParameters' {host} -> host) (\s@AuroraParameters' {} a -> s {host = a} :: AuroraParameters)
+
+-- | Port.
+auroraParameters_port :: Lens.Lens' AuroraParameters Prelude.Natural
+auroraParameters_port = Lens.lens (\AuroraParameters' {port} -> port) (\s@AuroraParameters' {} a -> s {port = a} :: AuroraParameters)
+
+-- | Database.
+auroraParameters_database :: Lens.Lens' AuroraParameters Prelude.Text
+auroraParameters_database = Lens.lens (\AuroraParameters' {database} -> database) (\s@AuroraParameters' {} a -> s {database = a} :: AuroraParameters)
+
+instance Data.FromJSON AuroraParameters where
+  parseJSON =
+    Data.withObject
+      "AuroraParameters"
+      ( \x ->
+          AuroraParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable AuroraParameters where
+  hashWithSalt _salt AuroraParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData AuroraParameters where
+  rnf AuroraParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON AuroraParameters where
+  toJSON AuroraParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AuroraPostgreSqlParameters.hs b/gen/Amazonka/QuickSight/Types/AuroraPostgreSqlParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AuroraPostgreSqlParameters.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AuroraPostgreSqlParameters
+-- 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.QuickSight.Types.AuroraPostgreSqlParameters 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
+
+-- | Parameters for Amazon Aurora PostgreSQL-Compatible Edition.
+--
+-- /See:/ 'newAuroraPostgreSqlParameters' smart constructor.
+data AuroraPostgreSqlParameters = AuroraPostgreSqlParameters'
+  { -- | The Amazon Aurora PostgreSQL-Compatible host to connect to.
+    host :: Prelude.Text,
+    -- | The port that Amazon Aurora PostgreSQL is listening on.
+    port :: Prelude.Natural,
+    -- | The Amazon Aurora PostgreSQL database to connect to.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AuroraPostgreSqlParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'auroraPostgreSqlParameters_host' - The Amazon Aurora PostgreSQL-Compatible host to connect to.
+--
+-- 'port', 'auroraPostgreSqlParameters_port' - The port that Amazon Aurora PostgreSQL is listening on.
+--
+-- 'database', 'auroraPostgreSqlParameters_database' - The Amazon Aurora PostgreSQL database to connect to.
+newAuroraPostgreSqlParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  AuroraPostgreSqlParameters
+newAuroraPostgreSqlParameters
+  pHost_
+  pPort_
+  pDatabase_ =
+    AuroraPostgreSqlParameters'
+      { host = pHost_,
+        port = pPort_,
+        database = pDatabase_
+      }
+
+-- | The Amazon Aurora PostgreSQL-Compatible host to connect to.
+auroraPostgreSqlParameters_host :: Lens.Lens' AuroraPostgreSqlParameters Prelude.Text
+auroraPostgreSqlParameters_host = Lens.lens (\AuroraPostgreSqlParameters' {host} -> host) (\s@AuroraPostgreSqlParameters' {} a -> s {host = a} :: AuroraPostgreSqlParameters)
+
+-- | The port that Amazon Aurora PostgreSQL is listening on.
+auroraPostgreSqlParameters_port :: Lens.Lens' AuroraPostgreSqlParameters Prelude.Natural
+auroraPostgreSqlParameters_port = Lens.lens (\AuroraPostgreSqlParameters' {port} -> port) (\s@AuroraPostgreSqlParameters' {} a -> s {port = a} :: AuroraPostgreSqlParameters)
+
+-- | The Amazon Aurora PostgreSQL database to connect to.
+auroraPostgreSqlParameters_database :: Lens.Lens' AuroraPostgreSqlParameters Prelude.Text
+auroraPostgreSqlParameters_database = Lens.lens (\AuroraPostgreSqlParameters' {database} -> database) (\s@AuroraPostgreSqlParameters' {} a -> s {database = a} :: AuroraPostgreSqlParameters)
+
+instance Data.FromJSON AuroraPostgreSqlParameters where
+  parseJSON =
+    Data.withObject
+      "AuroraPostgreSqlParameters"
+      ( \x ->
+          AuroraPostgreSqlParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable AuroraPostgreSqlParameters where
+  hashWithSalt _salt AuroraPostgreSqlParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData AuroraPostgreSqlParameters where
+  rnf AuroraPostgreSqlParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON AuroraPostgreSqlParameters where
+  toJSON AuroraPostgreSqlParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AuthenticationMethodOption.hs b/gen/Amazonka/QuickSight/Types/AuthenticationMethodOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AuthenticationMethodOption.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.QuickSight.Types.AuthenticationMethodOption
+-- 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.QuickSight.Types.AuthenticationMethodOption
+  ( AuthenticationMethodOption
+      ( ..,
+        AuthenticationMethodOption_ACTIVE_DIRECTORY,
+        AuthenticationMethodOption_IAM_AND_QUICKSIGHT,
+        AuthenticationMethodOption_IAM_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AuthenticationMethodOption = AuthenticationMethodOption'
+  { fromAuthenticationMethodOption ::
+      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 AuthenticationMethodOption_ACTIVE_DIRECTORY :: AuthenticationMethodOption
+pattern AuthenticationMethodOption_ACTIVE_DIRECTORY = AuthenticationMethodOption' "ACTIVE_DIRECTORY"
+
+pattern AuthenticationMethodOption_IAM_AND_QUICKSIGHT :: AuthenticationMethodOption
+pattern AuthenticationMethodOption_IAM_AND_QUICKSIGHT = AuthenticationMethodOption' "IAM_AND_QUICKSIGHT"
+
+pattern AuthenticationMethodOption_IAM_ONLY :: AuthenticationMethodOption
+pattern AuthenticationMethodOption_IAM_ONLY = AuthenticationMethodOption' "IAM_ONLY"
+
+{-# COMPLETE
+  AuthenticationMethodOption_ACTIVE_DIRECTORY,
+  AuthenticationMethodOption_IAM_AND_QUICKSIGHT,
+  AuthenticationMethodOption_IAM_ONLY,
+  AuthenticationMethodOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AwsIotAnalyticsParameters.hs b/gen/Amazonka/QuickSight/Types/AwsIotAnalyticsParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AwsIotAnalyticsParameters.hs
@@ -0,0 +1,81 @@
+{-# 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.QuickSight.Types.AwsIotAnalyticsParameters
+-- 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.QuickSight.Types.AwsIotAnalyticsParameters 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 parameters for IoT Analytics.
+--
+-- /See:/ 'newAwsIotAnalyticsParameters' smart constructor.
+data AwsIotAnalyticsParameters = AwsIotAnalyticsParameters'
+  { -- | Dataset name.
+    dataSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AwsIotAnalyticsParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetName', 'awsIotAnalyticsParameters_dataSetName' - Dataset name.
+newAwsIotAnalyticsParameters ::
+  -- | 'dataSetName'
+  Prelude.Text ->
+  AwsIotAnalyticsParameters
+newAwsIotAnalyticsParameters pDataSetName_ =
+  AwsIotAnalyticsParameters'
+    { dataSetName =
+        pDataSetName_
+    }
+
+-- | Dataset name.
+awsIotAnalyticsParameters_dataSetName :: Lens.Lens' AwsIotAnalyticsParameters Prelude.Text
+awsIotAnalyticsParameters_dataSetName = Lens.lens (\AwsIotAnalyticsParameters' {dataSetName} -> dataSetName) (\s@AwsIotAnalyticsParameters' {} a -> s {dataSetName = a} :: AwsIotAnalyticsParameters)
+
+instance Data.FromJSON AwsIotAnalyticsParameters where
+  parseJSON =
+    Data.withObject
+      "AwsIotAnalyticsParameters"
+      ( \x ->
+          AwsIotAnalyticsParameters'
+            Prelude.<$> (x Data..: "DataSetName")
+      )
+
+instance Prelude.Hashable AwsIotAnalyticsParameters where
+  hashWithSalt _salt AwsIotAnalyticsParameters' {..} =
+    _salt `Prelude.hashWithSalt` dataSetName
+
+instance Prelude.NFData AwsIotAnalyticsParameters where
+  rnf AwsIotAnalyticsParameters' {..} =
+    Prelude.rnf dataSetName
+
+instance Data.ToJSON AwsIotAnalyticsParameters where
+  toJSON AwsIotAnalyticsParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("DataSetName" Data..= dataSetName)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisBinding.hs b/gen/Amazonka/QuickSight/Types/AxisBinding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisBinding.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.QuickSight.Types.AxisBinding
+-- 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.QuickSight.Types.AxisBinding
+  ( AxisBinding
+      ( ..,
+        AxisBinding_PRIMARY_YAXIS,
+        AxisBinding_SECONDARY_YAXIS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AxisBinding = AxisBinding'
+  { fromAxisBinding ::
+      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 AxisBinding_PRIMARY_YAXIS :: AxisBinding
+pattern AxisBinding_PRIMARY_YAXIS = AxisBinding' "PRIMARY_YAXIS"
+
+pattern AxisBinding_SECONDARY_YAXIS :: AxisBinding
+pattern AxisBinding_SECONDARY_YAXIS = AxisBinding' "SECONDARY_YAXIS"
+
+{-# COMPLETE
+  AxisBinding_PRIMARY_YAXIS,
+  AxisBinding_SECONDARY_YAXIS,
+  AxisBinding'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/AxisDataOptions.hs b/gen/Amazonka/QuickSight/Types/AxisDataOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisDataOptions.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.QuickSight.Types.AxisDataOptions
+-- 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.QuickSight.Types.AxisDataOptions 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.QuickSight.Types.DateAxisOptions
+import Amazonka.QuickSight.Types.NumericAxisOptions
+
+-- | The data options for an axis.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newAxisDataOptions' smart constructor.
+data AxisDataOptions = AxisDataOptions'
+  { -- | The options for an axis with a date field.
+    dateAxisOptions :: Prelude.Maybe DateAxisOptions,
+    -- | The options for an axis with a numeric field.
+    numericAxisOptions :: Prelude.Maybe NumericAxisOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisDataOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateAxisOptions', 'axisDataOptions_dateAxisOptions' - The options for an axis with a date field.
+--
+-- 'numericAxisOptions', 'axisDataOptions_numericAxisOptions' - The options for an axis with a numeric field.
+newAxisDataOptions ::
+  AxisDataOptions
+newAxisDataOptions =
+  AxisDataOptions'
+    { dateAxisOptions = Prelude.Nothing,
+      numericAxisOptions = Prelude.Nothing
+    }
+
+-- | The options for an axis with a date field.
+axisDataOptions_dateAxisOptions :: Lens.Lens' AxisDataOptions (Prelude.Maybe DateAxisOptions)
+axisDataOptions_dateAxisOptions = Lens.lens (\AxisDataOptions' {dateAxisOptions} -> dateAxisOptions) (\s@AxisDataOptions' {} a -> s {dateAxisOptions = a} :: AxisDataOptions)
+
+-- | The options for an axis with a numeric field.
+axisDataOptions_numericAxisOptions :: Lens.Lens' AxisDataOptions (Prelude.Maybe NumericAxisOptions)
+axisDataOptions_numericAxisOptions = Lens.lens (\AxisDataOptions' {numericAxisOptions} -> numericAxisOptions) (\s@AxisDataOptions' {} a -> s {numericAxisOptions = a} :: AxisDataOptions)
+
+instance Data.FromJSON AxisDataOptions where
+  parseJSON =
+    Data.withObject
+      "AxisDataOptions"
+      ( \x ->
+          AxisDataOptions'
+            Prelude.<$> (x Data..:? "DateAxisOptions")
+            Prelude.<*> (x Data..:? "NumericAxisOptions")
+      )
+
+instance Prelude.Hashable AxisDataOptions where
+  hashWithSalt _salt AxisDataOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateAxisOptions
+      `Prelude.hashWithSalt` numericAxisOptions
+
+instance Prelude.NFData AxisDataOptions where
+  rnf AxisDataOptions' {..} =
+    Prelude.rnf dateAxisOptions
+      `Prelude.seq` Prelude.rnf numericAxisOptions
+
+instance Data.ToJSON AxisDataOptions where
+  toJSON AxisDataOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateAxisOptions" Data..=)
+              Prelude.<$> dateAxisOptions,
+            ("NumericAxisOptions" Data..=)
+              Prelude.<$> numericAxisOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisDisplayDataDrivenRange.hs b/gen/Amazonka/QuickSight/Types/AxisDisplayDataDrivenRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisDisplayDataDrivenRange.hs
@@ -0,0 +1,58 @@
+{-# 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.QuickSight.Types.AxisDisplayDataDrivenRange
+-- 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.QuickSight.Types.AxisDisplayDataDrivenRange 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 options that are saved for future extension.
+--
+-- /See:/ 'newAxisDisplayDataDrivenRange' smart constructor.
+data AxisDisplayDataDrivenRange = AxisDisplayDataDrivenRange'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisDisplayDataDrivenRange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newAxisDisplayDataDrivenRange ::
+  AxisDisplayDataDrivenRange
+newAxisDisplayDataDrivenRange =
+  AxisDisplayDataDrivenRange'
+
+instance Data.FromJSON AxisDisplayDataDrivenRange where
+  parseJSON =
+    Data.withObject
+      "AxisDisplayDataDrivenRange"
+      (\x -> Prelude.pure AxisDisplayDataDrivenRange')
+
+instance Prelude.Hashable AxisDisplayDataDrivenRange where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData AxisDisplayDataDrivenRange where
+  rnf _ = ()
+
+instance Data.ToJSON AxisDisplayDataDrivenRange where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/QuickSight/Types/AxisDisplayMinMaxRange.hs b/gen/Amazonka/QuickSight/Types/AxisDisplayMinMaxRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisDisplayMinMaxRange.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AxisDisplayMinMaxRange
+-- 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.QuickSight.Types.AxisDisplayMinMaxRange 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 minimum and maximum setup for an axis display range.
+--
+-- /See:/ 'newAxisDisplayMinMaxRange' smart constructor.
+data AxisDisplayMinMaxRange = AxisDisplayMinMaxRange'
+  { -- | The maximum setup for an axis display range.
+    maximum :: Prelude.Maybe Prelude.Double,
+    -- | The minimum setup for an axis display range.
+    minimum :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisDisplayMinMaxRange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maximum', 'axisDisplayMinMaxRange_maximum' - The maximum setup for an axis display range.
+--
+-- 'minimum', 'axisDisplayMinMaxRange_minimum' - The minimum setup for an axis display range.
+newAxisDisplayMinMaxRange ::
+  AxisDisplayMinMaxRange
+newAxisDisplayMinMaxRange =
+  AxisDisplayMinMaxRange'
+    { maximum = Prelude.Nothing,
+      minimum = Prelude.Nothing
+    }
+
+-- | The maximum setup for an axis display range.
+axisDisplayMinMaxRange_maximum :: Lens.Lens' AxisDisplayMinMaxRange (Prelude.Maybe Prelude.Double)
+axisDisplayMinMaxRange_maximum = Lens.lens (\AxisDisplayMinMaxRange' {maximum} -> maximum) (\s@AxisDisplayMinMaxRange' {} a -> s {maximum = a} :: AxisDisplayMinMaxRange)
+
+-- | The minimum setup for an axis display range.
+axisDisplayMinMaxRange_minimum :: Lens.Lens' AxisDisplayMinMaxRange (Prelude.Maybe Prelude.Double)
+axisDisplayMinMaxRange_minimum = Lens.lens (\AxisDisplayMinMaxRange' {minimum} -> minimum) (\s@AxisDisplayMinMaxRange' {} a -> s {minimum = a} :: AxisDisplayMinMaxRange)
+
+instance Data.FromJSON AxisDisplayMinMaxRange where
+  parseJSON =
+    Data.withObject
+      "AxisDisplayMinMaxRange"
+      ( \x ->
+          AxisDisplayMinMaxRange'
+            Prelude.<$> (x Data..:? "Maximum")
+            Prelude.<*> (x Data..:? "Minimum")
+      )
+
+instance Prelude.Hashable AxisDisplayMinMaxRange where
+  hashWithSalt _salt AxisDisplayMinMaxRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` maximum
+      `Prelude.hashWithSalt` minimum
+
+instance Prelude.NFData AxisDisplayMinMaxRange where
+  rnf AxisDisplayMinMaxRange' {..} =
+    Prelude.rnf maximum
+      `Prelude.seq` Prelude.rnf minimum
+
+instance Data.ToJSON AxisDisplayMinMaxRange where
+  toJSON AxisDisplayMinMaxRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Maximum" Data..=) Prelude.<$> maximum,
+            ("Minimum" Data..=) Prelude.<$> minimum
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/AxisDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisDisplayOptions.hs
@@ -0,0 +1,157 @@
+{-# 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.QuickSight.Types.AxisDisplayOptions
+-- 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.QuickSight.Types.AxisDisplayOptions 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.QuickSight.Types.AxisDataOptions
+import Amazonka.QuickSight.Types.AxisTickLabelOptions
+import Amazonka.QuickSight.Types.ScrollBarOptions
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The display options for the axis label.
+--
+-- /See:/ 'newAxisDisplayOptions' smart constructor.
+data AxisDisplayOptions = AxisDisplayOptions'
+  { -- | Determines whether or not the axis line is visible.
+    axisLineVisibility :: Prelude.Maybe Visibility,
+    -- | The offset value that determines the starting placement of the axis
+    -- within a visual\'s bounds.
+    axisOffset :: Prelude.Maybe Prelude.Text,
+    -- | The data options for an axis.
+    dataOptions :: Prelude.Maybe AxisDataOptions,
+    -- | Determines whether or not the grid line is visible.
+    gridLineVisibility :: Prelude.Maybe Visibility,
+    -- | The scroll bar options for an axis.
+    scrollbarOptions :: Prelude.Maybe ScrollBarOptions,
+    -- | The tick label options of an axis.
+    tickLabelOptions :: Prelude.Maybe AxisTickLabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'axisLineVisibility', 'axisDisplayOptions_axisLineVisibility' - Determines whether or not the axis line is visible.
+--
+-- 'axisOffset', 'axisDisplayOptions_axisOffset' - The offset value that determines the starting placement of the axis
+-- within a visual\'s bounds.
+--
+-- 'dataOptions', 'axisDisplayOptions_dataOptions' - The data options for an axis.
+--
+-- 'gridLineVisibility', 'axisDisplayOptions_gridLineVisibility' - Determines whether or not the grid line is visible.
+--
+-- 'scrollbarOptions', 'axisDisplayOptions_scrollbarOptions' - The scroll bar options for an axis.
+--
+-- 'tickLabelOptions', 'axisDisplayOptions_tickLabelOptions' - The tick label options of an axis.
+newAxisDisplayOptions ::
+  AxisDisplayOptions
+newAxisDisplayOptions =
+  AxisDisplayOptions'
+    { axisLineVisibility =
+        Prelude.Nothing,
+      axisOffset = Prelude.Nothing,
+      dataOptions = Prelude.Nothing,
+      gridLineVisibility = Prelude.Nothing,
+      scrollbarOptions = Prelude.Nothing,
+      tickLabelOptions = Prelude.Nothing
+    }
+
+-- | Determines whether or not the axis line is visible.
+axisDisplayOptions_axisLineVisibility :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe Visibility)
+axisDisplayOptions_axisLineVisibility = Lens.lens (\AxisDisplayOptions' {axisLineVisibility} -> axisLineVisibility) (\s@AxisDisplayOptions' {} a -> s {axisLineVisibility = a} :: AxisDisplayOptions)
+
+-- | The offset value that determines the starting placement of the axis
+-- within a visual\'s bounds.
+axisDisplayOptions_axisOffset :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe Prelude.Text)
+axisDisplayOptions_axisOffset = Lens.lens (\AxisDisplayOptions' {axisOffset} -> axisOffset) (\s@AxisDisplayOptions' {} a -> s {axisOffset = a} :: AxisDisplayOptions)
+
+-- | The data options for an axis.
+axisDisplayOptions_dataOptions :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe AxisDataOptions)
+axisDisplayOptions_dataOptions = Lens.lens (\AxisDisplayOptions' {dataOptions} -> dataOptions) (\s@AxisDisplayOptions' {} a -> s {dataOptions = a} :: AxisDisplayOptions)
+
+-- | Determines whether or not the grid line is visible.
+axisDisplayOptions_gridLineVisibility :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe Visibility)
+axisDisplayOptions_gridLineVisibility = Lens.lens (\AxisDisplayOptions' {gridLineVisibility} -> gridLineVisibility) (\s@AxisDisplayOptions' {} a -> s {gridLineVisibility = a} :: AxisDisplayOptions)
+
+-- | The scroll bar options for an axis.
+axisDisplayOptions_scrollbarOptions :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe ScrollBarOptions)
+axisDisplayOptions_scrollbarOptions = Lens.lens (\AxisDisplayOptions' {scrollbarOptions} -> scrollbarOptions) (\s@AxisDisplayOptions' {} a -> s {scrollbarOptions = a} :: AxisDisplayOptions)
+
+-- | The tick label options of an axis.
+axisDisplayOptions_tickLabelOptions :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe AxisTickLabelOptions)
+axisDisplayOptions_tickLabelOptions = Lens.lens (\AxisDisplayOptions' {tickLabelOptions} -> tickLabelOptions) (\s@AxisDisplayOptions' {} a -> s {tickLabelOptions = a} :: AxisDisplayOptions)
+
+instance Data.FromJSON AxisDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "AxisDisplayOptions"
+      ( \x ->
+          AxisDisplayOptions'
+            Prelude.<$> (x Data..:? "AxisLineVisibility")
+            Prelude.<*> (x Data..:? "AxisOffset")
+            Prelude.<*> (x Data..:? "DataOptions")
+            Prelude.<*> (x Data..:? "GridLineVisibility")
+            Prelude.<*> (x Data..:? "ScrollbarOptions")
+            Prelude.<*> (x Data..:? "TickLabelOptions")
+      )
+
+instance Prelude.Hashable AxisDisplayOptions where
+  hashWithSalt _salt AxisDisplayOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` axisLineVisibility
+      `Prelude.hashWithSalt` axisOffset
+      `Prelude.hashWithSalt` dataOptions
+      `Prelude.hashWithSalt` gridLineVisibility
+      `Prelude.hashWithSalt` scrollbarOptions
+      `Prelude.hashWithSalt` tickLabelOptions
+
+instance Prelude.NFData AxisDisplayOptions where
+  rnf AxisDisplayOptions' {..} =
+    Prelude.rnf axisLineVisibility
+      `Prelude.seq` Prelude.rnf axisOffset
+      `Prelude.seq` Prelude.rnf dataOptions
+      `Prelude.seq` Prelude.rnf gridLineVisibility
+      `Prelude.seq` Prelude.rnf scrollbarOptions
+      `Prelude.seq` Prelude.rnf tickLabelOptions
+
+instance Data.ToJSON AxisDisplayOptions where
+  toJSON AxisDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AxisLineVisibility" Data..=)
+              Prelude.<$> axisLineVisibility,
+            ("AxisOffset" Data..=) Prelude.<$> axisOffset,
+            ("DataOptions" Data..=) Prelude.<$> dataOptions,
+            ("GridLineVisibility" Data..=)
+              Prelude.<$> gridLineVisibility,
+            ("ScrollbarOptions" Data..=)
+              Prelude.<$> scrollbarOptions,
+            ("TickLabelOptions" Data..=)
+              Prelude.<$> tickLabelOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisDisplayRange.hs b/gen/Amazonka/QuickSight/Types/AxisDisplayRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisDisplayRange.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AxisDisplayRange
+-- 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.QuickSight.Types.AxisDisplayRange 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.QuickSight.Types.AxisDisplayDataDrivenRange
+import Amazonka.QuickSight.Types.AxisDisplayMinMaxRange
+
+-- | The range setup of a numeric axis display range.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newAxisDisplayRange' smart constructor.
+data AxisDisplayRange = AxisDisplayRange'
+  { -- | The data-driven setup of an axis display range.
+    dataDriven :: Prelude.Maybe AxisDisplayDataDrivenRange,
+    -- | The minimum and maximum setup of an axis display range.
+    minMax :: Prelude.Maybe AxisDisplayMinMaxRange
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisDisplayRange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataDriven', 'axisDisplayRange_dataDriven' - The data-driven setup of an axis display range.
+--
+-- 'minMax', 'axisDisplayRange_minMax' - The minimum and maximum setup of an axis display range.
+newAxisDisplayRange ::
+  AxisDisplayRange
+newAxisDisplayRange =
+  AxisDisplayRange'
+    { dataDriven = Prelude.Nothing,
+      minMax = Prelude.Nothing
+    }
+
+-- | The data-driven setup of an axis display range.
+axisDisplayRange_dataDriven :: Lens.Lens' AxisDisplayRange (Prelude.Maybe AxisDisplayDataDrivenRange)
+axisDisplayRange_dataDriven = Lens.lens (\AxisDisplayRange' {dataDriven} -> dataDriven) (\s@AxisDisplayRange' {} a -> s {dataDriven = a} :: AxisDisplayRange)
+
+-- | The minimum and maximum setup of an axis display range.
+axisDisplayRange_minMax :: Lens.Lens' AxisDisplayRange (Prelude.Maybe AxisDisplayMinMaxRange)
+axisDisplayRange_minMax = Lens.lens (\AxisDisplayRange' {minMax} -> minMax) (\s@AxisDisplayRange' {} a -> s {minMax = a} :: AxisDisplayRange)
+
+instance Data.FromJSON AxisDisplayRange where
+  parseJSON =
+    Data.withObject
+      "AxisDisplayRange"
+      ( \x ->
+          AxisDisplayRange'
+            Prelude.<$> (x Data..:? "DataDriven")
+            Prelude.<*> (x Data..:? "MinMax")
+      )
+
+instance Prelude.Hashable AxisDisplayRange where
+  hashWithSalt _salt AxisDisplayRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataDriven
+      `Prelude.hashWithSalt` minMax
+
+instance Prelude.NFData AxisDisplayRange where
+  rnf AxisDisplayRange' {..} =
+    Prelude.rnf dataDriven
+      `Prelude.seq` Prelude.rnf minMax
+
+instance Data.ToJSON AxisDisplayRange where
+  toJSON AxisDisplayRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataDriven" Data..=) Prelude.<$> dataDriven,
+            ("MinMax" Data..=) Prelude.<$> minMax
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisLabelOptions.hs b/gen/Amazonka/QuickSight/Types/AxisLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisLabelOptions.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.AxisLabelOptions
+-- 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.QuickSight.Types.AxisLabelOptions 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.QuickSight.Types.AxisLabelReferenceOptions
+import Amazonka.QuickSight.Types.FontConfiguration
+
+-- | The label options for a chart axis. You must specify the field that the
+-- label is targeted to.
+--
+-- /See:/ 'newAxisLabelOptions' smart constructor.
+data AxisLabelOptions = AxisLabelOptions'
+  { -- | The options that indicate which field the label belongs to.
+    applyTo :: Prelude.Maybe AxisLabelReferenceOptions,
+    -- | The text for the axis label.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The font configuration of the axis label.
+    fontConfiguration :: Prelude.Maybe FontConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applyTo', 'axisLabelOptions_applyTo' - The options that indicate which field the label belongs to.
+--
+-- 'customLabel', 'axisLabelOptions_customLabel' - The text for the axis label.
+--
+-- 'fontConfiguration', 'axisLabelOptions_fontConfiguration' - The font configuration of the axis label.
+newAxisLabelOptions ::
+  AxisLabelOptions
+newAxisLabelOptions =
+  AxisLabelOptions'
+    { applyTo = Prelude.Nothing,
+      customLabel = Prelude.Nothing,
+      fontConfiguration = Prelude.Nothing
+    }
+
+-- | The options that indicate which field the label belongs to.
+axisLabelOptions_applyTo :: Lens.Lens' AxisLabelOptions (Prelude.Maybe AxisLabelReferenceOptions)
+axisLabelOptions_applyTo = Lens.lens (\AxisLabelOptions' {applyTo} -> applyTo) (\s@AxisLabelOptions' {} a -> s {applyTo = a} :: AxisLabelOptions)
+
+-- | The text for the axis label.
+axisLabelOptions_customLabel :: Lens.Lens' AxisLabelOptions (Prelude.Maybe Prelude.Text)
+axisLabelOptions_customLabel = Lens.lens (\AxisLabelOptions' {customLabel} -> customLabel) (\s@AxisLabelOptions' {} a -> s {customLabel = a} :: AxisLabelOptions)
+
+-- | The font configuration of the axis label.
+axisLabelOptions_fontConfiguration :: Lens.Lens' AxisLabelOptions (Prelude.Maybe FontConfiguration)
+axisLabelOptions_fontConfiguration = Lens.lens (\AxisLabelOptions' {fontConfiguration} -> fontConfiguration) (\s@AxisLabelOptions' {} a -> s {fontConfiguration = a} :: AxisLabelOptions)
+
+instance Data.FromJSON AxisLabelOptions where
+  parseJSON =
+    Data.withObject
+      "AxisLabelOptions"
+      ( \x ->
+          AxisLabelOptions'
+            Prelude.<$> (x Data..:? "ApplyTo")
+            Prelude.<*> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "FontConfiguration")
+      )
+
+instance Prelude.Hashable AxisLabelOptions where
+  hashWithSalt _salt AxisLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` applyTo
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` fontConfiguration
+
+instance Prelude.NFData AxisLabelOptions where
+  rnf AxisLabelOptions' {..} =
+    Prelude.rnf applyTo
+      `Prelude.seq` Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf fontConfiguration
+
+instance Data.ToJSON AxisLabelOptions where
+  toJSON AxisLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApplyTo" Data..=) Prelude.<$> applyTo,
+            ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("FontConfiguration" Data..=)
+              Prelude.<$> fontConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisLabelReferenceOptions.hs b/gen/Amazonka/QuickSight/Types/AxisLabelReferenceOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisLabelReferenceOptions.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AxisLabelReferenceOptions
+-- 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.QuickSight.Types.AxisLabelReferenceOptions 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.QuickSight.Types.ColumnIdentifier
+
+-- | The reference that specifies where the axis label is applied to.
+--
+-- /See:/ 'newAxisLabelReferenceOptions' smart constructor.
+data AxisLabelReferenceOptions = AxisLabelReferenceOptions'
+  { -- | The field that the axis label is targeted to.
+    fieldId :: Prelude.Text,
+    -- | The column that the axis label is targeted to.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisLabelReferenceOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'axisLabelReferenceOptions_fieldId' - The field that the axis label is targeted to.
+--
+-- 'column', 'axisLabelReferenceOptions_column' - The column that the axis label is targeted to.
+newAxisLabelReferenceOptions ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  AxisLabelReferenceOptions
+newAxisLabelReferenceOptions pFieldId_ pColumn_ =
+  AxisLabelReferenceOptions'
+    { fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The field that the axis label is targeted to.
+axisLabelReferenceOptions_fieldId :: Lens.Lens' AxisLabelReferenceOptions Prelude.Text
+axisLabelReferenceOptions_fieldId = Lens.lens (\AxisLabelReferenceOptions' {fieldId} -> fieldId) (\s@AxisLabelReferenceOptions' {} a -> s {fieldId = a} :: AxisLabelReferenceOptions)
+
+-- | The column that the axis label is targeted to.
+axisLabelReferenceOptions_column :: Lens.Lens' AxisLabelReferenceOptions ColumnIdentifier
+axisLabelReferenceOptions_column = Lens.lens (\AxisLabelReferenceOptions' {column} -> column) (\s@AxisLabelReferenceOptions' {} a -> s {column = a} :: AxisLabelReferenceOptions)
+
+instance Data.FromJSON AxisLabelReferenceOptions where
+  parseJSON =
+    Data.withObject
+      "AxisLabelReferenceOptions"
+      ( \x ->
+          AxisLabelReferenceOptions'
+            Prelude.<$> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable AxisLabelReferenceOptions where
+  hashWithSalt _salt AxisLabelReferenceOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData AxisLabelReferenceOptions where
+  rnf AxisLabelReferenceOptions' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON AxisLabelReferenceOptions where
+  toJSON AxisLabelReferenceOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisLinearScale.hs b/gen/Amazonka/QuickSight/Types/AxisLinearScale.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisLinearScale.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.QuickSight.Types.AxisLinearScale
+-- 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.QuickSight.Types.AxisLinearScale 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 liner axis scale setup.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newAxisLinearScale' smart constructor.
+data AxisLinearScale = AxisLinearScale'
+  { -- | The step count setup of a linear axis.
+    stepCount :: Prelude.Maybe Prelude.Int,
+    -- | The step size setup of a linear axis.
+    stepSize :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisLinearScale' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'stepCount', 'axisLinearScale_stepCount' - The step count setup of a linear axis.
+--
+-- 'stepSize', 'axisLinearScale_stepSize' - The step size setup of a linear axis.
+newAxisLinearScale ::
+  AxisLinearScale
+newAxisLinearScale =
+  AxisLinearScale'
+    { stepCount = Prelude.Nothing,
+      stepSize = Prelude.Nothing
+    }
+
+-- | The step count setup of a linear axis.
+axisLinearScale_stepCount :: Lens.Lens' AxisLinearScale (Prelude.Maybe Prelude.Int)
+axisLinearScale_stepCount = Lens.lens (\AxisLinearScale' {stepCount} -> stepCount) (\s@AxisLinearScale' {} a -> s {stepCount = a} :: AxisLinearScale)
+
+-- | The step size setup of a linear axis.
+axisLinearScale_stepSize :: Lens.Lens' AxisLinearScale (Prelude.Maybe Prelude.Double)
+axisLinearScale_stepSize = Lens.lens (\AxisLinearScale' {stepSize} -> stepSize) (\s@AxisLinearScale' {} a -> s {stepSize = a} :: AxisLinearScale)
+
+instance Data.FromJSON AxisLinearScale where
+  parseJSON =
+    Data.withObject
+      "AxisLinearScale"
+      ( \x ->
+          AxisLinearScale'
+            Prelude.<$> (x Data..:? "StepCount")
+            Prelude.<*> (x Data..:? "StepSize")
+      )
+
+instance Prelude.Hashable AxisLinearScale where
+  hashWithSalt _salt AxisLinearScale' {..} =
+    _salt
+      `Prelude.hashWithSalt` stepCount
+      `Prelude.hashWithSalt` stepSize
+
+instance Prelude.NFData AxisLinearScale where
+  rnf AxisLinearScale' {..} =
+    Prelude.rnf stepCount
+      `Prelude.seq` Prelude.rnf stepSize
+
+instance Data.ToJSON AxisLinearScale where
+  toJSON AxisLinearScale' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("StepCount" Data..=) Prelude.<$> stepCount,
+            ("StepSize" Data..=) Prelude.<$> stepSize
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisLogarithmicScale.hs b/gen/Amazonka/QuickSight/Types/AxisLogarithmicScale.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisLogarithmicScale.hs
@@ -0,0 +1,75 @@
+{-# 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.QuickSight.Types.AxisLogarithmicScale
+-- 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.QuickSight.Types.AxisLogarithmicScale 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 logarithmic axis scale setup.
+--
+-- /See:/ 'newAxisLogarithmicScale' smart constructor.
+data AxisLogarithmicScale = AxisLogarithmicScale'
+  { -- | The base setup of a logarithmic axis scale.
+    base :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisLogarithmicScale' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'base', 'axisLogarithmicScale_base' - The base setup of a logarithmic axis scale.
+newAxisLogarithmicScale ::
+  AxisLogarithmicScale
+newAxisLogarithmicScale =
+  AxisLogarithmicScale' {base = Prelude.Nothing}
+
+-- | The base setup of a logarithmic axis scale.
+axisLogarithmicScale_base :: Lens.Lens' AxisLogarithmicScale (Prelude.Maybe Prelude.Double)
+axisLogarithmicScale_base = Lens.lens (\AxisLogarithmicScale' {base} -> base) (\s@AxisLogarithmicScale' {} a -> s {base = a} :: AxisLogarithmicScale)
+
+instance Data.FromJSON AxisLogarithmicScale where
+  parseJSON =
+    Data.withObject
+      "AxisLogarithmicScale"
+      ( \x ->
+          AxisLogarithmicScale'
+            Prelude.<$> (x Data..:? "Base")
+      )
+
+instance Prelude.Hashable AxisLogarithmicScale where
+  hashWithSalt _salt AxisLogarithmicScale' {..} =
+    _salt `Prelude.hashWithSalt` base
+
+instance Prelude.NFData AxisLogarithmicScale where
+  rnf AxisLogarithmicScale' {..} = Prelude.rnf base
+
+instance Data.ToJSON AxisLogarithmicScale where
+  toJSON AxisLogarithmicScale' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Base" Data..=) Prelude.<$> base]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisScale.hs b/gen/Amazonka/QuickSight/Types/AxisScale.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisScale.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.AxisScale
+-- 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.QuickSight.Types.AxisScale 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.QuickSight.Types.AxisLinearScale
+import Amazonka.QuickSight.Types.AxisLogarithmicScale
+
+-- | The scale setup options for a numeric axis display.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newAxisScale' smart constructor.
+data AxisScale = AxisScale'
+  { -- | The linear axis scale setup.
+    linear :: Prelude.Maybe AxisLinearScale,
+    -- | The logarithmic axis scale setup.
+    logarithmic :: Prelude.Maybe AxisLogarithmicScale
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisScale' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linear', 'axisScale_linear' - The linear axis scale setup.
+--
+-- 'logarithmic', 'axisScale_logarithmic' - The logarithmic axis scale setup.
+newAxisScale ::
+  AxisScale
+newAxisScale =
+  AxisScale'
+    { linear = Prelude.Nothing,
+      logarithmic = Prelude.Nothing
+    }
+
+-- | The linear axis scale setup.
+axisScale_linear :: Lens.Lens' AxisScale (Prelude.Maybe AxisLinearScale)
+axisScale_linear = Lens.lens (\AxisScale' {linear} -> linear) (\s@AxisScale' {} a -> s {linear = a} :: AxisScale)
+
+-- | The logarithmic axis scale setup.
+axisScale_logarithmic :: Lens.Lens' AxisScale (Prelude.Maybe AxisLogarithmicScale)
+axisScale_logarithmic = Lens.lens (\AxisScale' {logarithmic} -> logarithmic) (\s@AxisScale' {} a -> s {logarithmic = a} :: AxisScale)
+
+instance Data.FromJSON AxisScale where
+  parseJSON =
+    Data.withObject
+      "AxisScale"
+      ( \x ->
+          AxisScale'
+            Prelude.<$> (x Data..:? "Linear")
+            Prelude.<*> (x Data..:? "Logarithmic")
+      )
+
+instance Prelude.Hashable AxisScale where
+  hashWithSalt _salt AxisScale' {..} =
+    _salt
+      `Prelude.hashWithSalt` linear
+      `Prelude.hashWithSalt` logarithmic
+
+instance Prelude.NFData AxisScale where
+  rnf AxisScale' {..} =
+    Prelude.rnf linear
+      `Prelude.seq` Prelude.rnf logarithmic
+
+instance Data.ToJSON AxisScale where
+  toJSON AxisScale' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Linear" Data..=) Prelude.<$> linear,
+            ("Logarithmic" Data..=) Prelude.<$> logarithmic
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/AxisTickLabelOptions.hs b/gen/Amazonka/QuickSight/Types/AxisTickLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/AxisTickLabelOptions.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.AxisTickLabelOptions
+-- 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.QuickSight.Types.AxisTickLabelOptions 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.QuickSight.Types.LabelOptions
+
+-- | The tick label options of an axis.
+--
+-- /See:/ 'newAxisTickLabelOptions' smart constructor.
+data AxisTickLabelOptions = AxisTickLabelOptions'
+  { -- | Determines whether or not the axis ticks are visible.
+    labelOptions :: Prelude.Maybe LabelOptions,
+    -- | The rotation angle of the axis tick labels.
+    rotationAngle :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AxisTickLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelOptions', 'axisTickLabelOptions_labelOptions' - Determines whether or not the axis ticks are visible.
+--
+-- 'rotationAngle', 'axisTickLabelOptions_rotationAngle' - The rotation angle of the axis tick labels.
+newAxisTickLabelOptions ::
+  AxisTickLabelOptions
+newAxisTickLabelOptions =
+  AxisTickLabelOptions'
+    { labelOptions =
+        Prelude.Nothing,
+      rotationAngle = Prelude.Nothing
+    }
+
+-- | Determines whether or not the axis ticks are visible.
+axisTickLabelOptions_labelOptions :: Lens.Lens' AxisTickLabelOptions (Prelude.Maybe LabelOptions)
+axisTickLabelOptions_labelOptions = Lens.lens (\AxisTickLabelOptions' {labelOptions} -> labelOptions) (\s@AxisTickLabelOptions' {} a -> s {labelOptions = a} :: AxisTickLabelOptions)
+
+-- | The rotation angle of the axis tick labels.
+axisTickLabelOptions_rotationAngle :: Lens.Lens' AxisTickLabelOptions (Prelude.Maybe Prelude.Double)
+axisTickLabelOptions_rotationAngle = Lens.lens (\AxisTickLabelOptions' {rotationAngle} -> rotationAngle) (\s@AxisTickLabelOptions' {} a -> s {rotationAngle = a} :: AxisTickLabelOptions)
+
+instance Data.FromJSON AxisTickLabelOptions where
+  parseJSON =
+    Data.withObject
+      "AxisTickLabelOptions"
+      ( \x ->
+          AxisTickLabelOptions'
+            Prelude.<$> (x Data..:? "LabelOptions")
+            Prelude.<*> (x Data..:? "RotationAngle")
+      )
+
+instance Prelude.Hashable AxisTickLabelOptions where
+  hashWithSalt _salt AxisTickLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelOptions
+      `Prelude.hashWithSalt` rotationAngle
+
+instance Prelude.NFData AxisTickLabelOptions where
+  rnf AxisTickLabelOptions' {..} =
+    Prelude.rnf labelOptions
+      `Prelude.seq` Prelude.rnf rotationAngle
+
+instance Data.ToJSON AxisTickLabelOptions where
+  toJSON AxisTickLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LabelOptions" Data..=) Prelude.<$> labelOptions,
+            ("RotationAngle" Data..=) Prelude.<$> rotationAngle
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BarChartAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/BarChartAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarChartAggregatedFieldWells.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.BarChartAggregatedFieldWells
+-- 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.QuickSight.Types.BarChartAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field wells of a bar chart.
+--
+-- /See:/ 'newBarChartAggregatedFieldWells' smart constructor.
+data BarChartAggregatedFieldWells = BarChartAggregatedFieldWells'
+  { -- | The category (y-axis) field well of a bar chart.
+    category :: Prelude.Maybe [DimensionField],
+    -- | The color (group\/color) field well of a bar chart.
+    colors :: Prelude.Maybe [DimensionField],
+    -- | The small multiples field well of a bar chart.
+    smallMultiples :: Prelude.Maybe [DimensionField],
+    -- | The value field wells of a bar chart. Values are aggregated by category.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BarChartAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'category', 'barChartAggregatedFieldWells_category' - The category (y-axis) field well of a bar chart.
+--
+-- 'colors', 'barChartAggregatedFieldWells_colors' - The color (group\/color) field well of a bar chart.
+--
+-- 'smallMultiples', 'barChartAggregatedFieldWells_smallMultiples' - The small multiples field well of a bar chart.
+--
+-- 'values', 'barChartAggregatedFieldWells_values' - The value field wells of a bar chart. Values are aggregated by category.
+newBarChartAggregatedFieldWells ::
+  BarChartAggregatedFieldWells
+newBarChartAggregatedFieldWells =
+  BarChartAggregatedFieldWells'
+    { category =
+        Prelude.Nothing,
+      colors = Prelude.Nothing,
+      smallMultiples = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The category (y-axis) field well of a bar chart.
+barChartAggregatedFieldWells_category :: Lens.Lens' BarChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+barChartAggregatedFieldWells_category = Lens.lens (\BarChartAggregatedFieldWells' {category} -> category) (\s@BarChartAggregatedFieldWells' {} a -> s {category = a} :: BarChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The color (group\/color) field well of a bar chart.
+barChartAggregatedFieldWells_colors :: Lens.Lens' BarChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+barChartAggregatedFieldWells_colors = Lens.lens (\BarChartAggregatedFieldWells' {colors} -> colors) (\s@BarChartAggregatedFieldWells' {} a -> s {colors = a} :: BarChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The small multiples field well of a bar chart.
+barChartAggregatedFieldWells_smallMultiples :: Lens.Lens' BarChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+barChartAggregatedFieldWells_smallMultiples = Lens.lens (\BarChartAggregatedFieldWells' {smallMultiples} -> smallMultiples) (\s@BarChartAggregatedFieldWells' {} a -> s {smallMultiples = a} :: BarChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a bar chart. Values are aggregated by category.
+barChartAggregatedFieldWells_values :: Lens.Lens' BarChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+barChartAggregatedFieldWells_values = Lens.lens (\BarChartAggregatedFieldWells' {values} -> values) (\s@BarChartAggregatedFieldWells' {} a -> s {values = a} :: BarChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON BarChartAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "BarChartAggregatedFieldWells"
+      ( \x ->
+          BarChartAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Category" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Colors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiples" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    BarChartAggregatedFieldWells
+  where
+  hashWithSalt _salt BarChartAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` colors
+      `Prelude.hashWithSalt` smallMultiples
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData BarChartAggregatedFieldWells where
+  rnf BarChartAggregatedFieldWells' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf smallMultiples
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON BarChartAggregatedFieldWells where
+  toJSON BarChartAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Category" Data..=) Prelude.<$> category,
+            ("Colors" Data..=) Prelude.<$> colors,
+            ("SmallMultiples" Data..=)
+              Prelude.<$> smallMultiples,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BarChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/BarChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarChartConfiguration.hs
@@ -0,0 +1,342 @@
+{-# 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.QuickSight.Types.BarChartConfiguration
+-- 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.QuickSight.Types.BarChartConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.BarChartFieldWells
+import Amazonka.QuickSight.Types.BarChartOrientation
+import Amazonka.QuickSight.Types.BarChartSortConfiguration
+import Amazonka.QuickSight.Types.BarsArrangement
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ContributionAnalysisDefault
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.ReferenceLine
+import Amazonka.QuickSight.Types.SmallMultiplesOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a @BarChartVisual@.
+--
+-- /See:/ 'newBarChartConfiguration' smart constructor.
+data BarChartConfiguration = BarChartConfiguration'
+  { -- | Determines the arrangement of the bars. The orientation and arrangement
+    -- of bars determine the type of bar that is used in the visual.
+    barsArrangement :: Prelude.Maybe BarsArrangement,
+    -- | The label display options (grid line, range, scale, axis step) for bar
+    -- chart category.
+    categoryAxis :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility and sort icon
+    -- visibility) for a bar chart.
+    categoryLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The label options (label text, label visibility and sort icon
+    -- visibility) for a color that is used in a bar chart.
+    colorLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The contribution analysis (anomaly configuration) setup of the visual.
+    contributionAnalysisDefaults :: Prelude.Maybe (Prelude.NonEmpty ContributionAnalysisDefault),
+    -- | The options that determine if visual data labels are displayed.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe BarChartFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The orientation of the bars in a bar chart visual. There are two valid
+    -- values in this structure:
+    --
+    -- -   @HORIZONTAL@: Used for charts that have horizontal bars. Visuals
+    --     that use this value are horizontal bar charts, horizontal stacked
+    --     bar charts, and horizontal stacked 100% bar charts.
+    --
+    -- -   @VERTICAL@: Used for charts that have vertical bars. Visuals that
+    --     use this value are vertical bar charts, vertical stacked bar charts,
+    --     and vertical stacked 100% bar charts.
+    orientation :: Prelude.Maybe BarChartOrientation,
+    -- | The reference line setup of the visual.
+    referenceLines :: Prelude.Maybe [ReferenceLine],
+    -- | The small multiples setup for the visual.
+    smallMultiplesOptions :: Prelude.Maybe SmallMultiplesOptions,
+    -- | The sort configuration of a @BarChartVisual@.
+    sortConfiguration :: Prelude.Maybe BarChartSortConfiguration,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The label display options (grid line, range, scale, axis step) for a bar
+    -- chart value.
+    valueAxis :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility and sort icon
+    -- visibility) for a bar chart value.
+    valueLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The palette (chart color) display setup of the visual.
+    visualPalette :: Prelude.Maybe VisualPalette
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BarChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'barsArrangement', 'barChartConfiguration_barsArrangement' - Determines the arrangement of the bars. The orientation and arrangement
+-- of bars determine the type of bar that is used in the visual.
+--
+-- 'categoryAxis', 'barChartConfiguration_categoryAxis' - The label display options (grid line, range, scale, axis step) for bar
+-- chart category.
+--
+-- 'categoryLabelOptions', 'barChartConfiguration_categoryLabelOptions' - The label options (label text, label visibility and sort icon
+-- visibility) for a bar chart.
+--
+-- 'colorLabelOptions', 'barChartConfiguration_colorLabelOptions' - The label options (label text, label visibility and sort icon
+-- visibility) for a color that is used in a bar chart.
+--
+-- 'contributionAnalysisDefaults', 'barChartConfiguration_contributionAnalysisDefaults' - The contribution analysis (anomaly configuration) setup of the visual.
+--
+-- 'dataLabels', 'barChartConfiguration_dataLabels' - The options that determine if visual data labels are displayed.
+--
+-- 'fieldWells', 'barChartConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'barChartConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'orientation', 'barChartConfiguration_orientation' - The orientation of the bars in a bar chart visual. There are two valid
+-- values in this structure:
+--
+-- -   @HORIZONTAL@: Used for charts that have horizontal bars. Visuals
+--     that use this value are horizontal bar charts, horizontal stacked
+--     bar charts, and horizontal stacked 100% bar charts.
+--
+-- -   @VERTICAL@: Used for charts that have vertical bars. Visuals that
+--     use this value are vertical bar charts, vertical stacked bar charts,
+--     and vertical stacked 100% bar charts.
+--
+-- 'referenceLines', 'barChartConfiguration_referenceLines' - The reference line setup of the visual.
+--
+-- 'smallMultiplesOptions', 'barChartConfiguration_smallMultiplesOptions' - The small multiples setup for the visual.
+--
+-- 'sortConfiguration', 'barChartConfiguration_sortConfiguration' - The sort configuration of a @BarChartVisual@.
+--
+-- 'tooltip', 'barChartConfiguration_tooltip' - The tooltip display setup of the visual.
+--
+-- 'valueAxis', 'barChartConfiguration_valueAxis' - The label display options (grid line, range, scale, axis step) for a bar
+-- chart value.
+--
+-- 'valueLabelOptions', 'barChartConfiguration_valueLabelOptions' - The label options (label text, label visibility and sort icon
+-- visibility) for a bar chart value.
+--
+-- 'visualPalette', 'barChartConfiguration_visualPalette' - The palette (chart color) display setup of the visual.
+newBarChartConfiguration ::
+  BarChartConfiguration
+newBarChartConfiguration =
+  BarChartConfiguration'
+    { barsArrangement =
+        Prelude.Nothing,
+      categoryAxis = Prelude.Nothing,
+      categoryLabelOptions = Prelude.Nothing,
+      colorLabelOptions = Prelude.Nothing,
+      contributionAnalysisDefaults = Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      orientation = Prelude.Nothing,
+      referenceLines = Prelude.Nothing,
+      smallMultiplesOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      valueAxis = Prelude.Nothing,
+      valueLabelOptions = Prelude.Nothing,
+      visualPalette = Prelude.Nothing
+    }
+
+-- | Determines the arrangement of the bars. The orientation and arrangement
+-- of bars determine the type of bar that is used in the visual.
+barChartConfiguration_barsArrangement :: Lens.Lens' BarChartConfiguration (Prelude.Maybe BarsArrangement)
+barChartConfiguration_barsArrangement = Lens.lens (\BarChartConfiguration' {barsArrangement} -> barsArrangement) (\s@BarChartConfiguration' {} a -> s {barsArrangement = a} :: BarChartConfiguration)
+
+-- | The label display options (grid line, range, scale, axis step) for bar
+-- chart category.
+barChartConfiguration_categoryAxis :: Lens.Lens' BarChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+barChartConfiguration_categoryAxis = Lens.lens (\BarChartConfiguration' {categoryAxis} -> categoryAxis) (\s@BarChartConfiguration' {} a -> s {categoryAxis = a} :: BarChartConfiguration)
+
+-- | The label options (label text, label visibility and sort icon
+-- visibility) for a bar chart.
+barChartConfiguration_categoryLabelOptions :: Lens.Lens' BarChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+barChartConfiguration_categoryLabelOptions = Lens.lens (\BarChartConfiguration' {categoryLabelOptions} -> categoryLabelOptions) (\s@BarChartConfiguration' {} a -> s {categoryLabelOptions = a} :: BarChartConfiguration)
+
+-- | The label options (label text, label visibility and sort icon
+-- visibility) for a color that is used in a bar chart.
+barChartConfiguration_colorLabelOptions :: Lens.Lens' BarChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+barChartConfiguration_colorLabelOptions = Lens.lens (\BarChartConfiguration' {colorLabelOptions} -> colorLabelOptions) (\s@BarChartConfiguration' {} a -> s {colorLabelOptions = a} :: BarChartConfiguration)
+
+-- | The contribution analysis (anomaly configuration) setup of the visual.
+barChartConfiguration_contributionAnalysisDefaults :: Lens.Lens' BarChartConfiguration (Prelude.Maybe (Prelude.NonEmpty ContributionAnalysisDefault))
+barChartConfiguration_contributionAnalysisDefaults = Lens.lens (\BarChartConfiguration' {contributionAnalysisDefaults} -> contributionAnalysisDefaults) (\s@BarChartConfiguration' {} a -> s {contributionAnalysisDefaults = a} :: BarChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The options that determine if visual data labels are displayed.
+barChartConfiguration_dataLabels :: Lens.Lens' BarChartConfiguration (Prelude.Maybe DataLabelOptions)
+barChartConfiguration_dataLabels = Lens.lens (\BarChartConfiguration' {dataLabels} -> dataLabels) (\s@BarChartConfiguration' {} a -> s {dataLabels = a} :: BarChartConfiguration)
+
+-- | The field wells of the visual.
+barChartConfiguration_fieldWells :: Lens.Lens' BarChartConfiguration (Prelude.Maybe BarChartFieldWells)
+barChartConfiguration_fieldWells = Lens.lens (\BarChartConfiguration' {fieldWells} -> fieldWells) (\s@BarChartConfiguration' {} a -> s {fieldWells = a} :: BarChartConfiguration)
+
+-- | The legend display setup of the visual.
+barChartConfiguration_legend :: Lens.Lens' BarChartConfiguration (Prelude.Maybe LegendOptions)
+barChartConfiguration_legend = Lens.lens (\BarChartConfiguration' {legend} -> legend) (\s@BarChartConfiguration' {} a -> s {legend = a} :: BarChartConfiguration)
+
+-- | The orientation of the bars in a bar chart visual. There are two valid
+-- values in this structure:
+--
+-- -   @HORIZONTAL@: Used for charts that have horizontal bars. Visuals
+--     that use this value are horizontal bar charts, horizontal stacked
+--     bar charts, and horizontal stacked 100% bar charts.
+--
+-- -   @VERTICAL@: Used for charts that have vertical bars. Visuals that
+--     use this value are vertical bar charts, vertical stacked bar charts,
+--     and vertical stacked 100% bar charts.
+barChartConfiguration_orientation :: Lens.Lens' BarChartConfiguration (Prelude.Maybe BarChartOrientation)
+barChartConfiguration_orientation = Lens.lens (\BarChartConfiguration' {orientation} -> orientation) (\s@BarChartConfiguration' {} a -> s {orientation = a} :: BarChartConfiguration)
+
+-- | The reference line setup of the visual.
+barChartConfiguration_referenceLines :: Lens.Lens' BarChartConfiguration (Prelude.Maybe [ReferenceLine])
+barChartConfiguration_referenceLines = Lens.lens (\BarChartConfiguration' {referenceLines} -> referenceLines) (\s@BarChartConfiguration' {} a -> s {referenceLines = a} :: BarChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The small multiples setup for the visual.
+barChartConfiguration_smallMultiplesOptions :: Lens.Lens' BarChartConfiguration (Prelude.Maybe SmallMultiplesOptions)
+barChartConfiguration_smallMultiplesOptions = Lens.lens (\BarChartConfiguration' {smallMultiplesOptions} -> smallMultiplesOptions) (\s@BarChartConfiguration' {} a -> s {smallMultiplesOptions = a} :: BarChartConfiguration)
+
+-- | The sort configuration of a @BarChartVisual@.
+barChartConfiguration_sortConfiguration :: Lens.Lens' BarChartConfiguration (Prelude.Maybe BarChartSortConfiguration)
+barChartConfiguration_sortConfiguration = Lens.lens (\BarChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@BarChartConfiguration' {} a -> s {sortConfiguration = a} :: BarChartConfiguration)
+
+-- | The tooltip display setup of the visual.
+barChartConfiguration_tooltip :: Lens.Lens' BarChartConfiguration (Prelude.Maybe TooltipOptions)
+barChartConfiguration_tooltip = Lens.lens (\BarChartConfiguration' {tooltip} -> tooltip) (\s@BarChartConfiguration' {} a -> s {tooltip = a} :: BarChartConfiguration)
+
+-- | The label display options (grid line, range, scale, axis step) for a bar
+-- chart value.
+barChartConfiguration_valueAxis :: Lens.Lens' BarChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+barChartConfiguration_valueAxis = Lens.lens (\BarChartConfiguration' {valueAxis} -> valueAxis) (\s@BarChartConfiguration' {} a -> s {valueAxis = a} :: BarChartConfiguration)
+
+-- | The label options (label text, label visibility and sort icon
+-- visibility) for a bar chart value.
+barChartConfiguration_valueLabelOptions :: Lens.Lens' BarChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+barChartConfiguration_valueLabelOptions = Lens.lens (\BarChartConfiguration' {valueLabelOptions} -> valueLabelOptions) (\s@BarChartConfiguration' {} a -> s {valueLabelOptions = a} :: BarChartConfiguration)
+
+-- | The palette (chart color) display setup of the visual.
+barChartConfiguration_visualPalette :: Lens.Lens' BarChartConfiguration (Prelude.Maybe VisualPalette)
+barChartConfiguration_visualPalette = Lens.lens (\BarChartConfiguration' {visualPalette} -> visualPalette) (\s@BarChartConfiguration' {} a -> s {visualPalette = a} :: BarChartConfiguration)
+
+instance Data.FromJSON BarChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "BarChartConfiguration"
+      ( \x ->
+          BarChartConfiguration'
+            Prelude.<$> (x Data..:? "BarsArrangement")
+            Prelude.<*> (x Data..:? "CategoryAxis")
+            Prelude.<*> (x Data..:? "CategoryLabelOptions")
+            Prelude.<*> (x Data..:? "ColorLabelOptions")
+            Prelude.<*> (x Data..:? "ContributionAnalysisDefaults")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "Orientation")
+            Prelude.<*> (x Data..:? "ReferenceLines" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiplesOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "ValueAxis")
+            Prelude.<*> (x Data..:? "ValueLabelOptions")
+            Prelude.<*> (x Data..:? "VisualPalette")
+      )
+
+instance Prelude.Hashable BarChartConfiguration where
+  hashWithSalt _salt BarChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` barsArrangement
+      `Prelude.hashWithSalt` categoryAxis
+      `Prelude.hashWithSalt` categoryLabelOptions
+      `Prelude.hashWithSalt` colorLabelOptions
+      `Prelude.hashWithSalt` contributionAnalysisDefaults
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` orientation
+      `Prelude.hashWithSalt` referenceLines
+      `Prelude.hashWithSalt` smallMultiplesOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` valueAxis
+      `Prelude.hashWithSalt` valueLabelOptions
+      `Prelude.hashWithSalt` visualPalette
+
+instance Prelude.NFData BarChartConfiguration where
+  rnf BarChartConfiguration' {..} =
+    Prelude.rnf barsArrangement
+      `Prelude.seq` Prelude.rnf categoryAxis
+      `Prelude.seq` Prelude.rnf categoryLabelOptions
+      `Prelude.seq` Prelude.rnf colorLabelOptions
+      `Prelude.seq` Prelude.rnf contributionAnalysisDefaults
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf orientation
+      `Prelude.seq` Prelude.rnf referenceLines
+      `Prelude.seq` Prelude.rnf smallMultiplesOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf valueAxis
+      `Prelude.seq` Prelude.rnf valueLabelOptions
+      `Prelude.seq` Prelude.rnf visualPalette
+
+instance Data.ToJSON BarChartConfiguration where
+  toJSON BarChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BarsArrangement" Data..=)
+              Prelude.<$> barsArrangement,
+            ("CategoryAxis" Data..=) Prelude.<$> categoryAxis,
+            ("CategoryLabelOptions" Data..=)
+              Prelude.<$> categoryLabelOptions,
+            ("ColorLabelOptions" Data..=)
+              Prelude.<$> colorLabelOptions,
+            ("ContributionAnalysisDefaults" Data..=)
+              Prelude.<$> contributionAnalysisDefaults,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("Orientation" Data..=) Prelude.<$> orientation,
+            ("ReferenceLines" Data..=)
+              Prelude.<$> referenceLines,
+            ("SmallMultiplesOptions" Data..=)
+              Prelude.<$> smallMultiplesOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("ValueAxis" Data..=) Prelude.<$> valueAxis,
+            ("ValueLabelOptions" Data..=)
+              Prelude.<$> valueLabelOptions,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BarChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/BarChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarChartFieldWells.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.QuickSight.Types.BarChartFieldWells
+-- 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.QuickSight.Types.BarChartFieldWells 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.QuickSight.Types.BarChartAggregatedFieldWells
+
+-- | The field wells of a @BarChartVisual@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newBarChartFieldWells' smart constructor.
+data BarChartFieldWells = BarChartFieldWells'
+  { -- | The aggregated field wells of a bar chart.
+    barChartAggregatedFieldWells :: Prelude.Maybe BarChartAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BarChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'barChartAggregatedFieldWells', 'barChartFieldWells_barChartAggregatedFieldWells' - The aggregated field wells of a bar chart.
+newBarChartFieldWells ::
+  BarChartFieldWells
+newBarChartFieldWells =
+  BarChartFieldWells'
+    { barChartAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a bar chart.
+barChartFieldWells_barChartAggregatedFieldWells :: Lens.Lens' BarChartFieldWells (Prelude.Maybe BarChartAggregatedFieldWells)
+barChartFieldWells_barChartAggregatedFieldWells = Lens.lens (\BarChartFieldWells' {barChartAggregatedFieldWells} -> barChartAggregatedFieldWells) (\s@BarChartFieldWells' {} a -> s {barChartAggregatedFieldWells = a} :: BarChartFieldWells)
+
+instance Data.FromJSON BarChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "BarChartFieldWells"
+      ( \x ->
+          BarChartFieldWells'
+            Prelude.<$> (x Data..:? "BarChartAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable BarChartFieldWells where
+  hashWithSalt _salt BarChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` barChartAggregatedFieldWells
+
+instance Prelude.NFData BarChartFieldWells where
+  rnf BarChartFieldWells' {..} =
+    Prelude.rnf barChartAggregatedFieldWells
+
+instance Data.ToJSON BarChartFieldWells where
+  toJSON BarChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BarChartAggregatedFieldWells" Data..=)
+              Prelude.<$> barChartAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BarChartOrientation.hs b/gen/Amazonka/QuickSight/Types/BarChartOrientation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarChartOrientation.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.QuickSight.Types.BarChartOrientation
+-- 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.QuickSight.Types.BarChartOrientation
+  ( BarChartOrientation
+      ( ..,
+        BarChartOrientation_HORIZONTAL,
+        BarChartOrientation_VERTICAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BarChartOrientation = BarChartOrientation'
+  { fromBarChartOrientation ::
+      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 BarChartOrientation_HORIZONTAL :: BarChartOrientation
+pattern BarChartOrientation_HORIZONTAL = BarChartOrientation' "HORIZONTAL"
+
+pattern BarChartOrientation_VERTICAL :: BarChartOrientation
+pattern BarChartOrientation_VERTICAL = BarChartOrientation' "VERTICAL"
+
+{-# COMPLETE
+  BarChartOrientation_HORIZONTAL,
+  BarChartOrientation_VERTICAL,
+  BarChartOrientation'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/BarChartSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/BarChartSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarChartSortConfiguration.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.BarChartSortConfiguration
+-- 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.QuickSight.Types.BarChartSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | sort-configuration-description
+--
+-- /See:/ 'newBarChartSortConfiguration' smart constructor.
+data BarChartSortConfiguration = BarChartSortConfiguration'
+  { -- | The limit on the number of categories displayed in a bar chart.
+    categoryItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of category fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions],
+    -- | The limit on the number of values displayed in a bar chart.
+    colorItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of color fields in a bar chart.
+    colorSort :: Prelude.Maybe [FieldSortOptions],
+    -- | The limit on the number of small multiples panels that are displayed.
+    smallMultiplesLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the small multiples field.
+    smallMultiplesSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BarChartSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryItemsLimit', 'barChartSortConfiguration_categoryItemsLimit' - The limit on the number of categories displayed in a bar chart.
+--
+-- 'categorySort', 'barChartSortConfiguration_categorySort' - The sort configuration of category fields.
+--
+-- 'colorItemsLimit', 'barChartSortConfiguration_colorItemsLimit' - The limit on the number of values displayed in a bar chart.
+--
+-- 'colorSort', 'barChartSortConfiguration_colorSort' - The sort configuration of color fields in a bar chart.
+--
+-- 'smallMultiplesLimitConfiguration', 'barChartSortConfiguration_smallMultiplesLimitConfiguration' - The limit on the number of small multiples panels that are displayed.
+--
+-- 'smallMultiplesSort', 'barChartSortConfiguration_smallMultiplesSort' - The sort configuration of the small multiples field.
+newBarChartSortConfiguration ::
+  BarChartSortConfiguration
+newBarChartSortConfiguration =
+  BarChartSortConfiguration'
+    { categoryItemsLimit =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing,
+      colorItemsLimit = Prelude.Nothing,
+      colorSort = Prelude.Nothing,
+      smallMultiplesLimitConfiguration =
+        Prelude.Nothing,
+      smallMultiplesSort = Prelude.Nothing
+    }
+
+-- | The limit on the number of categories displayed in a bar chart.
+barChartSortConfiguration_categoryItemsLimit :: Lens.Lens' BarChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+barChartSortConfiguration_categoryItemsLimit = Lens.lens (\BarChartSortConfiguration' {categoryItemsLimit} -> categoryItemsLimit) (\s@BarChartSortConfiguration' {} a -> s {categoryItemsLimit = a} :: BarChartSortConfiguration)
+
+-- | The sort configuration of category fields.
+barChartSortConfiguration_categorySort :: Lens.Lens' BarChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+barChartSortConfiguration_categorySort = Lens.lens (\BarChartSortConfiguration' {categorySort} -> categorySort) (\s@BarChartSortConfiguration' {} a -> s {categorySort = a} :: BarChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The limit on the number of values displayed in a bar chart.
+barChartSortConfiguration_colorItemsLimit :: Lens.Lens' BarChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+barChartSortConfiguration_colorItemsLimit = Lens.lens (\BarChartSortConfiguration' {colorItemsLimit} -> colorItemsLimit) (\s@BarChartSortConfiguration' {} a -> s {colorItemsLimit = a} :: BarChartSortConfiguration)
+
+-- | The sort configuration of color fields in a bar chart.
+barChartSortConfiguration_colorSort :: Lens.Lens' BarChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+barChartSortConfiguration_colorSort = Lens.lens (\BarChartSortConfiguration' {colorSort} -> colorSort) (\s@BarChartSortConfiguration' {} a -> s {colorSort = a} :: BarChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The limit on the number of small multiples panels that are displayed.
+barChartSortConfiguration_smallMultiplesLimitConfiguration :: Lens.Lens' BarChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+barChartSortConfiguration_smallMultiplesLimitConfiguration = Lens.lens (\BarChartSortConfiguration' {smallMultiplesLimitConfiguration} -> smallMultiplesLimitConfiguration) (\s@BarChartSortConfiguration' {} a -> s {smallMultiplesLimitConfiguration = a} :: BarChartSortConfiguration)
+
+-- | The sort configuration of the small multiples field.
+barChartSortConfiguration_smallMultiplesSort :: Lens.Lens' BarChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+barChartSortConfiguration_smallMultiplesSort = Lens.lens (\BarChartSortConfiguration' {smallMultiplesSort} -> smallMultiplesSort) (\s@BarChartSortConfiguration' {} a -> s {smallMultiplesSort = a} :: BarChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON BarChartSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "BarChartSortConfiguration"
+      ( \x ->
+          BarChartSortConfiguration'
+            Prelude.<$> (x Data..:? "CategoryItemsLimit")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ColorItemsLimit")
+            Prelude.<*> (x Data..:? "ColorSort" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiplesLimitConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "SmallMultiplesSort"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable BarChartSortConfiguration where
+  hashWithSalt _salt BarChartSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryItemsLimit
+      `Prelude.hashWithSalt` categorySort
+      `Prelude.hashWithSalt` colorItemsLimit
+      `Prelude.hashWithSalt` colorSort
+      `Prelude.hashWithSalt` smallMultiplesLimitConfiguration
+      `Prelude.hashWithSalt` smallMultiplesSort
+
+instance Prelude.NFData BarChartSortConfiguration where
+  rnf BarChartSortConfiguration' {..} =
+    Prelude.rnf categoryItemsLimit
+      `Prelude.seq` Prelude.rnf categorySort
+      `Prelude.seq` Prelude.rnf colorItemsLimit
+      `Prelude.seq` Prelude.rnf colorSort
+      `Prelude.seq` Prelude.rnf smallMultiplesLimitConfiguration
+      `Prelude.seq` Prelude.rnf smallMultiplesSort
+
+instance Data.ToJSON BarChartSortConfiguration where
+  toJSON BarChartSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryItemsLimit" Data..=)
+              Prelude.<$> categoryItemsLimit,
+            ("CategorySort" Data..=) Prelude.<$> categorySort,
+            ("ColorItemsLimit" Data..=)
+              Prelude.<$> colorItemsLimit,
+            ("ColorSort" Data..=) Prelude.<$> colorSort,
+            ("SmallMultiplesLimitConfiguration" Data..=)
+              Prelude.<$> smallMultiplesLimitConfiguration,
+            ("SmallMultiplesSort" Data..=)
+              Prelude.<$> smallMultiplesSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BarChartVisual.hs b/gen/Amazonka/QuickSight/Types/BarChartVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarChartVisual.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.BarChartVisual
+-- 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.QuickSight.Types.BarChartVisual 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.QuickSight.Types.BarChartConfiguration
+import Amazonka.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A bar chart.
+--
+-- The @BarChartVisual@ structure describes a visual that is a member of
+-- the bar chart family. The following charts can be described using this
+-- structure:
+--
+-- -   Horizontal bar chart
+--
+-- -   Vertical bar chart
+--
+-- -   Horizontal stacked bar chart
+--
+-- -   Vertical stacked bar chart
+--
+-- -   Horizontal stacked 100% bar chart
+--
+-- -   Vertical stacked 100% bar chart
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/bar-charts.html Using bar charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newBarChartVisual' smart constructor.
+data BarChartVisual = BarChartVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe BarChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BarChartVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'barChartVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'barChartVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'barChartVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'barChartVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'barChartVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'barChartVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newBarChartVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  BarChartVisual
+newBarChartVisual pVisualId_ =
+  BarChartVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+barChartVisual_actions :: Lens.Lens' BarChartVisual (Prelude.Maybe [VisualCustomAction])
+barChartVisual_actions = Lens.lens (\BarChartVisual' {actions} -> actions) (\s@BarChartVisual' {} a -> s {actions = a} :: BarChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+barChartVisual_chartConfiguration :: Lens.Lens' BarChartVisual (Prelude.Maybe BarChartConfiguration)
+barChartVisual_chartConfiguration = Lens.lens (\BarChartVisual' {chartConfiguration} -> chartConfiguration) (\s@BarChartVisual' {} a -> s {chartConfiguration = a} :: BarChartVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+barChartVisual_columnHierarchies :: Lens.Lens' BarChartVisual (Prelude.Maybe [ColumnHierarchy])
+barChartVisual_columnHierarchies = Lens.lens (\BarChartVisual' {columnHierarchies} -> columnHierarchies) (\s@BarChartVisual' {} a -> s {columnHierarchies = a} :: BarChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+barChartVisual_subtitle :: Lens.Lens' BarChartVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+barChartVisual_subtitle = Lens.lens (\BarChartVisual' {subtitle} -> subtitle) (\s@BarChartVisual' {} a -> s {subtitle = a} :: BarChartVisual)
+
+-- | The title that is displayed on the visual.
+barChartVisual_title :: Lens.Lens' BarChartVisual (Prelude.Maybe VisualTitleLabelOptions)
+barChartVisual_title = Lens.lens (\BarChartVisual' {title} -> title) (\s@BarChartVisual' {} a -> s {title = a} :: BarChartVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+barChartVisual_visualId :: Lens.Lens' BarChartVisual Prelude.Text
+barChartVisual_visualId = Lens.lens (\BarChartVisual' {visualId} -> visualId) (\s@BarChartVisual' {} a -> s {visualId = a} :: BarChartVisual)
+
+instance Data.FromJSON BarChartVisual where
+  parseJSON =
+    Data.withObject
+      "BarChartVisual"
+      ( \x ->
+          BarChartVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable BarChartVisual where
+  hashWithSalt _salt BarChartVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData BarChartVisual where
+  rnf BarChartVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON BarChartVisual where
+  toJSON BarChartVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BarsArrangement.hs b/gen/Amazonka/QuickSight/Types/BarsArrangement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BarsArrangement.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.QuickSight.Types.BarsArrangement
+-- 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.QuickSight.Types.BarsArrangement
+  ( BarsArrangement
+      ( ..,
+        BarsArrangement_CLUSTERED,
+        BarsArrangement_STACKED,
+        BarsArrangement_STACKED_PERCENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BarsArrangement = BarsArrangement'
+  { fromBarsArrangement ::
+      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 BarsArrangement_CLUSTERED :: BarsArrangement
+pattern BarsArrangement_CLUSTERED = BarsArrangement' "CLUSTERED"
+
+pattern BarsArrangement_STACKED :: BarsArrangement
+pattern BarsArrangement_STACKED = BarsArrangement' "STACKED"
+
+pattern BarsArrangement_STACKED_PERCENT :: BarsArrangement
+pattern BarsArrangement_STACKED_PERCENT = BarsArrangement' "STACKED_PERCENT"
+
+{-# COMPLETE
+  BarsArrangement_CLUSTERED,
+  BarsArrangement_STACKED,
+  BarsArrangement_STACKED_PERCENT,
+  BarsArrangement'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/BaseMapStyleType.hs b/gen/Amazonka/QuickSight/Types/BaseMapStyleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BaseMapStyleType.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.QuickSight.Types.BaseMapStyleType
+-- 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.QuickSight.Types.BaseMapStyleType
+  ( BaseMapStyleType
+      ( ..,
+        BaseMapStyleType_DARK_GRAY,
+        BaseMapStyleType_IMAGERY,
+        BaseMapStyleType_LIGHT_GRAY,
+        BaseMapStyleType_STREET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BaseMapStyleType = BaseMapStyleType'
+  { fromBaseMapStyleType ::
+      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 BaseMapStyleType_DARK_GRAY :: BaseMapStyleType
+pattern BaseMapStyleType_DARK_GRAY = BaseMapStyleType' "DARK_GRAY"
+
+pattern BaseMapStyleType_IMAGERY :: BaseMapStyleType
+pattern BaseMapStyleType_IMAGERY = BaseMapStyleType' "IMAGERY"
+
+pattern BaseMapStyleType_LIGHT_GRAY :: BaseMapStyleType
+pattern BaseMapStyleType_LIGHT_GRAY = BaseMapStyleType' "LIGHT_GRAY"
+
+pattern BaseMapStyleType_STREET :: BaseMapStyleType
+pattern BaseMapStyleType_STREET = BaseMapStyleType' "STREET"
+
+{-# COMPLETE
+  BaseMapStyleType_DARK_GRAY,
+  BaseMapStyleType_IMAGERY,
+  BaseMapStyleType_LIGHT_GRAY,
+  BaseMapStyleType_STREET,
+  BaseMapStyleType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/BinCountOptions.hs b/gen/Amazonka/QuickSight/Types/BinCountOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BinCountOptions.hs
@@ -0,0 +1,74 @@
+{-# 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.QuickSight.Types.BinCountOptions
+-- 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.QuickSight.Types.BinCountOptions 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 options that determine the bin count of a histogram.
+--
+-- /See:/ 'newBinCountOptions' smart constructor.
+data BinCountOptions = BinCountOptions'
+  { -- | The options that determine the bin count value.
+    value :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BinCountOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'value', 'binCountOptions_value' - The options that determine the bin count value.
+newBinCountOptions ::
+  BinCountOptions
+newBinCountOptions =
+  BinCountOptions' {value = Prelude.Nothing}
+
+-- | The options that determine the bin count value.
+binCountOptions_value :: Lens.Lens' BinCountOptions (Prelude.Maybe Prelude.Natural)
+binCountOptions_value = Lens.lens (\BinCountOptions' {value} -> value) (\s@BinCountOptions' {} a -> s {value = a} :: BinCountOptions)
+
+instance Data.FromJSON BinCountOptions where
+  parseJSON =
+    Data.withObject
+      "BinCountOptions"
+      ( \x ->
+          BinCountOptions' Prelude.<$> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable BinCountOptions where
+  hashWithSalt _salt BinCountOptions' {..} =
+    _salt `Prelude.hashWithSalt` value
+
+instance Prelude.NFData BinCountOptions where
+  rnf BinCountOptions' {..} = Prelude.rnf value
+
+instance Data.ToJSON BinCountOptions where
+  toJSON BinCountOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Value" Data..=) Prelude.<$> value]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BinWidthOptions.hs b/gen/Amazonka/QuickSight/Types/BinWidthOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BinWidthOptions.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.BinWidthOptions
+-- 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.QuickSight.Types.BinWidthOptions 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 options that determine the bin width of a histogram.
+--
+-- /See:/ 'newBinWidthOptions' smart constructor.
+data BinWidthOptions = BinWidthOptions'
+  { -- | The options that determine the bin count limit.
+    binCountLimit :: Prelude.Maybe Prelude.Natural,
+    -- | The options that determine the bin width value.
+    value :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BinWidthOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'binCountLimit', 'binWidthOptions_binCountLimit' - The options that determine the bin count limit.
+--
+-- 'value', 'binWidthOptions_value' - The options that determine the bin width value.
+newBinWidthOptions ::
+  BinWidthOptions
+newBinWidthOptions =
+  BinWidthOptions'
+    { binCountLimit = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The options that determine the bin count limit.
+binWidthOptions_binCountLimit :: Lens.Lens' BinWidthOptions (Prelude.Maybe Prelude.Natural)
+binWidthOptions_binCountLimit = Lens.lens (\BinWidthOptions' {binCountLimit} -> binCountLimit) (\s@BinWidthOptions' {} a -> s {binCountLimit = a} :: BinWidthOptions)
+
+-- | The options that determine the bin width value.
+binWidthOptions_value :: Lens.Lens' BinWidthOptions (Prelude.Maybe Prelude.Double)
+binWidthOptions_value = Lens.lens (\BinWidthOptions' {value} -> value) (\s@BinWidthOptions' {} a -> s {value = a} :: BinWidthOptions)
+
+instance Data.FromJSON BinWidthOptions where
+  parseJSON =
+    Data.withObject
+      "BinWidthOptions"
+      ( \x ->
+          BinWidthOptions'
+            Prelude.<$> (x Data..:? "BinCountLimit")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable BinWidthOptions where
+  hashWithSalt _salt BinWidthOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` binCountLimit
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData BinWidthOptions where
+  rnf BinWidthOptions' {..} =
+    Prelude.rnf binCountLimit
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON BinWidthOptions where
+  toJSON BinWidthOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BinCountLimit" Data..=) Prelude.<$> binCountLimit,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BodySectionConfiguration.hs b/gen/Amazonka/QuickSight/Types/BodySectionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BodySectionConfiguration.hs
@@ -0,0 +1,128 @@
+{-# 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.QuickSight.Types.BodySectionConfiguration
+-- 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.QuickSight.Types.BodySectionConfiguration 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.QuickSight.Types.BodySectionContent
+import Amazonka.QuickSight.Types.SectionPageBreakConfiguration
+import Amazonka.QuickSight.Types.SectionStyle
+
+-- | The configuration of a body section.
+--
+-- /See:/ 'newBodySectionConfiguration' smart constructor.
+data BodySectionConfiguration = BodySectionConfiguration'
+  { -- | The configuration of a page break for a section.
+    pageBreakConfiguration :: Prelude.Maybe SectionPageBreakConfiguration,
+    -- | The style options of a body section.
+    style :: Prelude.Maybe SectionStyle,
+    -- | The unique identifier of a body section.
+    sectionId :: Prelude.Text,
+    -- | The configuration of content in a body section.
+    content :: BodySectionContent
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BodySectionConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pageBreakConfiguration', 'bodySectionConfiguration_pageBreakConfiguration' - The configuration of a page break for a section.
+--
+-- 'style', 'bodySectionConfiguration_style' - The style options of a body section.
+--
+-- 'sectionId', 'bodySectionConfiguration_sectionId' - The unique identifier of a body section.
+--
+-- 'content', 'bodySectionConfiguration_content' - The configuration of content in a body section.
+newBodySectionConfiguration ::
+  -- | 'sectionId'
+  Prelude.Text ->
+  -- | 'content'
+  BodySectionContent ->
+  BodySectionConfiguration
+newBodySectionConfiguration pSectionId_ pContent_ =
+  BodySectionConfiguration'
+    { pageBreakConfiguration =
+        Prelude.Nothing,
+      style = Prelude.Nothing,
+      sectionId = pSectionId_,
+      content = pContent_
+    }
+
+-- | The configuration of a page break for a section.
+bodySectionConfiguration_pageBreakConfiguration :: Lens.Lens' BodySectionConfiguration (Prelude.Maybe SectionPageBreakConfiguration)
+bodySectionConfiguration_pageBreakConfiguration = Lens.lens (\BodySectionConfiguration' {pageBreakConfiguration} -> pageBreakConfiguration) (\s@BodySectionConfiguration' {} a -> s {pageBreakConfiguration = a} :: BodySectionConfiguration)
+
+-- | The style options of a body section.
+bodySectionConfiguration_style :: Lens.Lens' BodySectionConfiguration (Prelude.Maybe SectionStyle)
+bodySectionConfiguration_style = Lens.lens (\BodySectionConfiguration' {style} -> style) (\s@BodySectionConfiguration' {} a -> s {style = a} :: BodySectionConfiguration)
+
+-- | The unique identifier of a body section.
+bodySectionConfiguration_sectionId :: Lens.Lens' BodySectionConfiguration Prelude.Text
+bodySectionConfiguration_sectionId = Lens.lens (\BodySectionConfiguration' {sectionId} -> sectionId) (\s@BodySectionConfiguration' {} a -> s {sectionId = a} :: BodySectionConfiguration)
+
+-- | The configuration of content in a body section.
+bodySectionConfiguration_content :: Lens.Lens' BodySectionConfiguration BodySectionContent
+bodySectionConfiguration_content = Lens.lens (\BodySectionConfiguration' {content} -> content) (\s@BodySectionConfiguration' {} a -> s {content = a} :: BodySectionConfiguration)
+
+instance Data.FromJSON BodySectionConfiguration where
+  parseJSON =
+    Data.withObject
+      "BodySectionConfiguration"
+      ( \x ->
+          BodySectionConfiguration'
+            Prelude.<$> (x Data..:? "PageBreakConfiguration")
+            Prelude.<*> (x Data..:? "Style")
+            Prelude.<*> (x Data..: "SectionId")
+            Prelude.<*> (x Data..: "Content")
+      )
+
+instance Prelude.Hashable BodySectionConfiguration where
+  hashWithSalt _salt BodySectionConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` pageBreakConfiguration
+      `Prelude.hashWithSalt` style
+      `Prelude.hashWithSalt` sectionId
+      `Prelude.hashWithSalt` content
+
+instance Prelude.NFData BodySectionConfiguration where
+  rnf BodySectionConfiguration' {..} =
+    Prelude.rnf pageBreakConfiguration
+      `Prelude.seq` Prelude.rnf style
+      `Prelude.seq` Prelude.rnf sectionId
+      `Prelude.seq` Prelude.rnf content
+
+instance Data.ToJSON BodySectionConfiguration where
+  toJSON BodySectionConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PageBreakConfiguration" Data..=)
+              Prelude.<$> pageBreakConfiguration,
+            ("Style" Data..=) Prelude.<$> style,
+            Prelude.Just ("SectionId" Data..= sectionId),
+            Prelude.Just ("Content" Data..= content)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BodySectionContent.hs b/gen/Amazonka/QuickSight/Types/BodySectionContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BodySectionContent.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.QuickSight.Types.BodySectionContent
+-- 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.QuickSight.Types.BodySectionContent 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.QuickSight.Types.SectionLayoutConfiguration
+
+-- | The configuration of content in a body section.
+--
+-- /See:/ 'newBodySectionContent' smart constructor.
+data BodySectionContent = BodySectionContent'
+  { -- | The layout configuration of a body section.
+    layout :: Prelude.Maybe SectionLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BodySectionContent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'layout', 'bodySectionContent_layout' - The layout configuration of a body section.
+newBodySectionContent ::
+  BodySectionContent
+newBodySectionContent =
+  BodySectionContent' {layout = Prelude.Nothing}
+
+-- | The layout configuration of a body section.
+bodySectionContent_layout :: Lens.Lens' BodySectionContent (Prelude.Maybe SectionLayoutConfiguration)
+bodySectionContent_layout = Lens.lens (\BodySectionContent' {layout} -> layout) (\s@BodySectionContent' {} a -> s {layout = a} :: BodySectionContent)
+
+instance Data.FromJSON BodySectionContent where
+  parseJSON =
+    Data.withObject
+      "BodySectionContent"
+      ( \x ->
+          BodySectionContent'
+            Prelude.<$> (x Data..:? "Layout")
+      )
+
+instance Prelude.Hashable BodySectionContent where
+  hashWithSalt _salt BodySectionContent' {..} =
+    _salt `Prelude.hashWithSalt` layout
+
+instance Prelude.NFData BodySectionContent where
+  rnf BodySectionContent' {..} = Prelude.rnf layout
+
+instance Data.ToJSON BodySectionContent where
+  toJSON BodySectionContent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Layout" Data..=) Prelude.<$> layout]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BorderStyle.hs b/gen/Amazonka/QuickSight/Types/BorderStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BorderStyle.hs
@@ -0,0 +1,71 @@
+{-# 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.QuickSight.Types.BorderStyle
+-- 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.QuickSight.Types.BorderStyle 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 display options for tile borders for visuals.
+--
+-- /See:/ 'newBorderStyle' smart constructor.
+data BorderStyle = BorderStyle'
+  { -- | The option to enable display of borders for visuals.
+    show :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BorderStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'show', 'borderStyle_show' - The option to enable display of borders for visuals.
+newBorderStyle ::
+  BorderStyle
+newBorderStyle = BorderStyle' {show = Prelude.Nothing}
+
+-- | The option to enable display of borders for visuals.
+borderStyle_show :: Lens.Lens' BorderStyle (Prelude.Maybe Prelude.Bool)
+borderStyle_show = Lens.lens (\BorderStyle' {show} -> show) (\s@BorderStyle' {} a -> s {show = a} :: BorderStyle)
+
+instance Data.FromJSON BorderStyle where
+  parseJSON =
+    Data.withObject
+      "BorderStyle"
+      (\x -> BorderStyle' Prelude.<$> (x Data..:? "Show"))
+
+instance Prelude.Hashable BorderStyle where
+  hashWithSalt _salt BorderStyle' {..} =
+    _salt `Prelude.hashWithSalt` show
+
+instance Prelude.NFData BorderStyle where
+  rnf BorderStyle' {..} = Prelude.rnf show
+
+instance Data.ToJSON BorderStyle where
+  toJSON BorderStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Show" Data..=) Prelude.<$> show]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/BoxPlotAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotAggregatedFieldWells.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.QuickSight.Types.BoxPlotAggregatedFieldWells
+-- 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.QuickSight.Types.BoxPlotAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field well for a box plot.
+--
+-- /See:/ 'newBoxPlotAggregatedFieldWells' smart constructor.
+data BoxPlotAggregatedFieldWells = BoxPlotAggregatedFieldWells'
+  { -- | The group by field well of a box plot chart. Values are grouped based on
+    -- group by fields.
+    groupBy :: Prelude.Maybe [DimensionField],
+    -- | The value field well of a box plot chart. Values are aggregated based on
+    -- group by fields.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupBy', 'boxPlotAggregatedFieldWells_groupBy' - The group by field well of a box plot chart. Values are grouped based on
+-- group by fields.
+--
+-- 'values', 'boxPlotAggregatedFieldWells_values' - The value field well of a box plot chart. Values are aggregated based on
+-- group by fields.
+newBoxPlotAggregatedFieldWells ::
+  BoxPlotAggregatedFieldWells
+newBoxPlotAggregatedFieldWells =
+  BoxPlotAggregatedFieldWells'
+    { groupBy =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The group by field well of a box plot chart. Values are grouped based on
+-- group by fields.
+boxPlotAggregatedFieldWells_groupBy :: Lens.Lens' BoxPlotAggregatedFieldWells (Prelude.Maybe [DimensionField])
+boxPlotAggregatedFieldWells_groupBy = Lens.lens (\BoxPlotAggregatedFieldWells' {groupBy} -> groupBy) (\s@BoxPlotAggregatedFieldWells' {} a -> s {groupBy = a} :: BoxPlotAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field well of a box plot chart. Values are aggregated based on
+-- group by fields.
+boxPlotAggregatedFieldWells_values :: Lens.Lens' BoxPlotAggregatedFieldWells (Prelude.Maybe [MeasureField])
+boxPlotAggregatedFieldWells_values = Lens.lens (\BoxPlotAggregatedFieldWells' {values} -> values) (\s@BoxPlotAggregatedFieldWells' {} a -> s {values = a} :: BoxPlotAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON BoxPlotAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "BoxPlotAggregatedFieldWells"
+      ( \x ->
+          BoxPlotAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "GroupBy" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable BoxPlotAggregatedFieldWells where
+  hashWithSalt _salt BoxPlotAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupBy
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData BoxPlotAggregatedFieldWells where
+  rnf BoxPlotAggregatedFieldWells' {..} =
+    Prelude.rnf groupBy
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON BoxPlotAggregatedFieldWells where
+  toJSON BoxPlotAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GroupBy" Data..=) Prelude.<$> groupBy,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/BoxPlotChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotChartConfiguration.hs
@@ -0,0 +1,237 @@
+{-# 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.QuickSight.Types.BoxPlotChartConfiguration
+-- 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.QuickSight.Types.BoxPlotChartConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.BoxPlotFieldWells
+import Amazonka.QuickSight.Types.BoxPlotOptions
+import Amazonka.QuickSight.Types.BoxPlotSortConfiguration
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.ReferenceLine
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a @BoxPlotVisual@.
+--
+-- /See:/ 'newBoxPlotChartConfiguration' smart constructor.
+data BoxPlotChartConfiguration = BoxPlotChartConfiguration'
+  { -- | The box plot chart options for a box plot visual
+    boxPlotOptions :: Prelude.Maybe BoxPlotOptions,
+    -- | The label display options (grid line, range, scale, axis step) of a box
+    -- plot category.
+    categoryAxis :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility and sort Icon
+    -- visibility) of a box plot category.
+    categoryLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe BoxPlotFieldWells,
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The label display options (grid line, range, scale, axis step) of a box
+    -- plot category.
+    primaryYAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility and sort icon
+    -- visibility) of a box plot value.
+    primaryYAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The reference line setup of the visual.
+    referenceLines :: Prelude.Maybe [ReferenceLine],
+    -- | The sort configuration of a @BoxPlotVisual@.
+    sortConfiguration :: Prelude.Maybe BoxPlotSortConfiguration,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The palette (chart color) display setup of the visual.
+    visualPalette :: Prelude.Maybe VisualPalette
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'boxPlotOptions', 'boxPlotChartConfiguration_boxPlotOptions' - The box plot chart options for a box plot visual
+--
+-- 'categoryAxis', 'boxPlotChartConfiguration_categoryAxis' - The label display options (grid line, range, scale, axis step) of a box
+-- plot category.
+--
+-- 'categoryLabelOptions', 'boxPlotChartConfiguration_categoryLabelOptions' - The label options (label text, label visibility and sort Icon
+-- visibility) of a box plot category.
+--
+-- 'fieldWells', 'boxPlotChartConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'boxPlotChartConfiguration_legend' - Undocumented member.
+--
+-- 'primaryYAxisDisplayOptions', 'boxPlotChartConfiguration_primaryYAxisDisplayOptions' - The label display options (grid line, range, scale, axis step) of a box
+-- plot category.
+--
+-- 'primaryYAxisLabelOptions', 'boxPlotChartConfiguration_primaryYAxisLabelOptions' - The label options (label text, label visibility and sort icon
+-- visibility) of a box plot value.
+--
+-- 'referenceLines', 'boxPlotChartConfiguration_referenceLines' - The reference line setup of the visual.
+--
+-- 'sortConfiguration', 'boxPlotChartConfiguration_sortConfiguration' - The sort configuration of a @BoxPlotVisual@.
+--
+-- 'tooltip', 'boxPlotChartConfiguration_tooltip' - The tooltip display setup of the visual.
+--
+-- 'visualPalette', 'boxPlotChartConfiguration_visualPalette' - The palette (chart color) display setup of the visual.
+newBoxPlotChartConfiguration ::
+  BoxPlotChartConfiguration
+newBoxPlotChartConfiguration =
+  BoxPlotChartConfiguration'
+    { boxPlotOptions =
+        Prelude.Nothing,
+      categoryAxis = Prelude.Nothing,
+      categoryLabelOptions = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      primaryYAxisDisplayOptions = Prelude.Nothing,
+      primaryYAxisLabelOptions = Prelude.Nothing,
+      referenceLines = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      visualPalette = Prelude.Nothing
+    }
+
+-- | The box plot chart options for a box plot visual
+boxPlotChartConfiguration_boxPlotOptions :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe BoxPlotOptions)
+boxPlotChartConfiguration_boxPlotOptions = Lens.lens (\BoxPlotChartConfiguration' {boxPlotOptions} -> boxPlotOptions) (\s@BoxPlotChartConfiguration' {} a -> s {boxPlotOptions = a} :: BoxPlotChartConfiguration)
+
+-- | The label display options (grid line, range, scale, axis step) of a box
+-- plot category.
+boxPlotChartConfiguration_categoryAxis :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+boxPlotChartConfiguration_categoryAxis = Lens.lens (\BoxPlotChartConfiguration' {categoryAxis} -> categoryAxis) (\s@BoxPlotChartConfiguration' {} a -> s {categoryAxis = a} :: BoxPlotChartConfiguration)
+
+-- | The label options (label text, label visibility and sort Icon
+-- visibility) of a box plot category.
+boxPlotChartConfiguration_categoryLabelOptions :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+boxPlotChartConfiguration_categoryLabelOptions = Lens.lens (\BoxPlotChartConfiguration' {categoryLabelOptions} -> categoryLabelOptions) (\s@BoxPlotChartConfiguration' {} a -> s {categoryLabelOptions = a} :: BoxPlotChartConfiguration)
+
+-- | The field wells of the visual.
+boxPlotChartConfiguration_fieldWells :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe BoxPlotFieldWells)
+boxPlotChartConfiguration_fieldWells = Lens.lens (\BoxPlotChartConfiguration' {fieldWells} -> fieldWells) (\s@BoxPlotChartConfiguration' {} a -> s {fieldWells = a} :: BoxPlotChartConfiguration)
+
+-- | Undocumented member.
+boxPlotChartConfiguration_legend :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe LegendOptions)
+boxPlotChartConfiguration_legend = Lens.lens (\BoxPlotChartConfiguration' {legend} -> legend) (\s@BoxPlotChartConfiguration' {} a -> s {legend = a} :: BoxPlotChartConfiguration)
+
+-- | The label display options (grid line, range, scale, axis step) of a box
+-- plot category.
+boxPlotChartConfiguration_primaryYAxisDisplayOptions :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+boxPlotChartConfiguration_primaryYAxisDisplayOptions = Lens.lens (\BoxPlotChartConfiguration' {primaryYAxisDisplayOptions} -> primaryYAxisDisplayOptions) (\s@BoxPlotChartConfiguration' {} a -> s {primaryYAxisDisplayOptions = a} :: BoxPlotChartConfiguration)
+
+-- | The label options (label text, label visibility and sort icon
+-- visibility) of a box plot value.
+boxPlotChartConfiguration_primaryYAxisLabelOptions :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+boxPlotChartConfiguration_primaryYAxisLabelOptions = Lens.lens (\BoxPlotChartConfiguration' {primaryYAxisLabelOptions} -> primaryYAxisLabelOptions) (\s@BoxPlotChartConfiguration' {} a -> s {primaryYAxisLabelOptions = a} :: BoxPlotChartConfiguration)
+
+-- | The reference line setup of the visual.
+boxPlotChartConfiguration_referenceLines :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe [ReferenceLine])
+boxPlotChartConfiguration_referenceLines = Lens.lens (\BoxPlotChartConfiguration' {referenceLines} -> referenceLines) (\s@BoxPlotChartConfiguration' {} a -> s {referenceLines = a} :: BoxPlotChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The sort configuration of a @BoxPlotVisual@.
+boxPlotChartConfiguration_sortConfiguration :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe BoxPlotSortConfiguration)
+boxPlotChartConfiguration_sortConfiguration = Lens.lens (\BoxPlotChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@BoxPlotChartConfiguration' {} a -> s {sortConfiguration = a} :: BoxPlotChartConfiguration)
+
+-- | The tooltip display setup of the visual.
+boxPlotChartConfiguration_tooltip :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe TooltipOptions)
+boxPlotChartConfiguration_tooltip = Lens.lens (\BoxPlotChartConfiguration' {tooltip} -> tooltip) (\s@BoxPlotChartConfiguration' {} a -> s {tooltip = a} :: BoxPlotChartConfiguration)
+
+-- | The palette (chart color) display setup of the visual.
+boxPlotChartConfiguration_visualPalette :: Lens.Lens' BoxPlotChartConfiguration (Prelude.Maybe VisualPalette)
+boxPlotChartConfiguration_visualPalette = Lens.lens (\BoxPlotChartConfiguration' {visualPalette} -> visualPalette) (\s@BoxPlotChartConfiguration' {} a -> s {visualPalette = a} :: BoxPlotChartConfiguration)
+
+instance Data.FromJSON BoxPlotChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "BoxPlotChartConfiguration"
+      ( \x ->
+          BoxPlotChartConfiguration'
+            Prelude.<$> (x Data..:? "BoxPlotOptions")
+            Prelude.<*> (x Data..:? "CategoryAxis")
+            Prelude.<*> (x Data..:? "CategoryLabelOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "PrimaryYAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "PrimaryYAxisLabelOptions")
+            Prelude.<*> (x Data..:? "ReferenceLines" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "VisualPalette")
+      )
+
+instance Prelude.Hashable BoxPlotChartConfiguration where
+  hashWithSalt _salt BoxPlotChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` boxPlotOptions
+      `Prelude.hashWithSalt` categoryAxis
+      `Prelude.hashWithSalt` categoryLabelOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` primaryYAxisDisplayOptions
+      `Prelude.hashWithSalt` primaryYAxisLabelOptions
+      `Prelude.hashWithSalt` referenceLines
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` visualPalette
+
+instance Prelude.NFData BoxPlotChartConfiguration where
+  rnf BoxPlotChartConfiguration' {..} =
+    Prelude.rnf boxPlotOptions
+      `Prelude.seq` Prelude.rnf categoryAxis
+      `Prelude.seq` Prelude.rnf categoryLabelOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf primaryYAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf primaryYAxisLabelOptions
+      `Prelude.seq` Prelude.rnf referenceLines
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf visualPalette
+
+instance Data.ToJSON BoxPlotChartConfiguration where
+  toJSON BoxPlotChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BoxPlotOptions" Data..=)
+              Prelude.<$> boxPlotOptions,
+            ("CategoryAxis" Data..=) Prelude.<$> categoryAxis,
+            ("CategoryLabelOptions" Data..=)
+              Prelude.<$> categoryLabelOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("PrimaryYAxisDisplayOptions" Data..=)
+              Prelude.<$> primaryYAxisDisplayOptions,
+            ("PrimaryYAxisLabelOptions" Data..=)
+              Prelude.<$> primaryYAxisLabelOptions,
+            ("ReferenceLines" Data..=)
+              Prelude.<$> referenceLines,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotFieldWells.hs b/gen/Amazonka/QuickSight/Types/BoxPlotFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotFieldWells.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.QuickSight.Types.BoxPlotFieldWells
+-- 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.QuickSight.Types.BoxPlotFieldWells 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.QuickSight.Types.BoxPlotAggregatedFieldWells
+
+-- | The field wells of a @BoxPlotVisual@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newBoxPlotFieldWells' smart constructor.
+data BoxPlotFieldWells = BoxPlotFieldWells'
+  { -- | The aggregated field wells of a box plot.
+    boxPlotAggregatedFieldWells :: Prelude.Maybe BoxPlotAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'boxPlotAggregatedFieldWells', 'boxPlotFieldWells_boxPlotAggregatedFieldWells' - The aggregated field wells of a box plot.
+newBoxPlotFieldWells ::
+  BoxPlotFieldWells
+newBoxPlotFieldWells =
+  BoxPlotFieldWells'
+    { boxPlotAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a box plot.
+boxPlotFieldWells_boxPlotAggregatedFieldWells :: Lens.Lens' BoxPlotFieldWells (Prelude.Maybe BoxPlotAggregatedFieldWells)
+boxPlotFieldWells_boxPlotAggregatedFieldWells = Lens.lens (\BoxPlotFieldWells' {boxPlotAggregatedFieldWells} -> boxPlotAggregatedFieldWells) (\s@BoxPlotFieldWells' {} a -> s {boxPlotAggregatedFieldWells = a} :: BoxPlotFieldWells)
+
+instance Data.FromJSON BoxPlotFieldWells where
+  parseJSON =
+    Data.withObject
+      "BoxPlotFieldWells"
+      ( \x ->
+          BoxPlotFieldWells'
+            Prelude.<$> (x Data..:? "BoxPlotAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable BoxPlotFieldWells where
+  hashWithSalt _salt BoxPlotFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` boxPlotAggregatedFieldWells
+
+instance Prelude.NFData BoxPlotFieldWells where
+  rnf BoxPlotFieldWells' {..} =
+    Prelude.rnf boxPlotAggregatedFieldWells
+
+instance Data.ToJSON BoxPlotFieldWells where
+  toJSON BoxPlotFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BoxPlotAggregatedFieldWells" Data..=)
+              Prelude.<$> boxPlotAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotFillStyle.hs b/gen/Amazonka/QuickSight/Types/BoxPlotFillStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotFillStyle.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.QuickSight.Types.BoxPlotFillStyle
+-- 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.QuickSight.Types.BoxPlotFillStyle
+  ( BoxPlotFillStyle
+      ( ..,
+        BoxPlotFillStyle_SOLID,
+        BoxPlotFillStyle_TRANSPARENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BoxPlotFillStyle = BoxPlotFillStyle'
+  { fromBoxPlotFillStyle ::
+      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 BoxPlotFillStyle_SOLID :: BoxPlotFillStyle
+pattern BoxPlotFillStyle_SOLID = BoxPlotFillStyle' "SOLID"
+
+pattern BoxPlotFillStyle_TRANSPARENT :: BoxPlotFillStyle
+pattern BoxPlotFillStyle_TRANSPARENT = BoxPlotFillStyle' "TRANSPARENT"
+
+{-# COMPLETE
+  BoxPlotFillStyle_SOLID,
+  BoxPlotFillStyle_TRANSPARENT,
+  BoxPlotFillStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotOptions.hs b/gen/Amazonka/QuickSight/Types/BoxPlotOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotOptions.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.BoxPlotOptions
+-- 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.QuickSight.Types.BoxPlotOptions 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.QuickSight.Types.BoxPlotStyleOptions
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options of a box plot visual.
+--
+-- /See:/ 'newBoxPlotOptions' smart constructor.
+data BoxPlotOptions = BoxPlotOptions'
+  { -- | Determines the visibility of all data points of the box plot.
+    allDataPointsVisibility :: Prelude.Maybe Visibility,
+    -- | Determines the visibility of the outlier in a box plot.
+    outlierVisibility :: Prelude.Maybe Visibility,
+    -- | The style options of the box plot.
+    styleOptions :: Prelude.Maybe BoxPlotStyleOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'allDataPointsVisibility', 'boxPlotOptions_allDataPointsVisibility' - Determines the visibility of all data points of the box plot.
+--
+-- 'outlierVisibility', 'boxPlotOptions_outlierVisibility' - Determines the visibility of the outlier in a box plot.
+--
+-- 'styleOptions', 'boxPlotOptions_styleOptions' - The style options of the box plot.
+newBoxPlotOptions ::
+  BoxPlotOptions
+newBoxPlotOptions =
+  BoxPlotOptions'
+    { allDataPointsVisibility =
+        Prelude.Nothing,
+      outlierVisibility = Prelude.Nothing,
+      styleOptions = Prelude.Nothing
+    }
+
+-- | Determines the visibility of all data points of the box plot.
+boxPlotOptions_allDataPointsVisibility :: Lens.Lens' BoxPlotOptions (Prelude.Maybe Visibility)
+boxPlotOptions_allDataPointsVisibility = Lens.lens (\BoxPlotOptions' {allDataPointsVisibility} -> allDataPointsVisibility) (\s@BoxPlotOptions' {} a -> s {allDataPointsVisibility = a} :: BoxPlotOptions)
+
+-- | Determines the visibility of the outlier in a box plot.
+boxPlotOptions_outlierVisibility :: Lens.Lens' BoxPlotOptions (Prelude.Maybe Visibility)
+boxPlotOptions_outlierVisibility = Lens.lens (\BoxPlotOptions' {outlierVisibility} -> outlierVisibility) (\s@BoxPlotOptions' {} a -> s {outlierVisibility = a} :: BoxPlotOptions)
+
+-- | The style options of the box plot.
+boxPlotOptions_styleOptions :: Lens.Lens' BoxPlotOptions (Prelude.Maybe BoxPlotStyleOptions)
+boxPlotOptions_styleOptions = Lens.lens (\BoxPlotOptions' {styleOptions} -> styleOptions) (\s@BoxPlotOptions' {} a -> s {styleOptions = a} :: BoxPlotOptions)
+
+instance Data.FromJSON BoxPlotOptions where
+  parseJSON =
+    Data.withObject
+      "BoxPlotOptions"
+      ( \x ->
+          BoxPlotOptions'
+            Prelude.<$> (x Data..:? "AllDataPointsVisibility")
+            Prelude.<*> (x Data..:? "OutlierVisibility")
+            Prelude.<*> (x Data..:? "StyleOptions")
+      )
+
+instance Prelude.Hashable BoxPlotOptions where
+  hashWithSalt _salt BoxPlotOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` allDataPointsVisibility
+      `Prelude.hashWithSalt` outlierVisibility
+      `Prelude.hashWithSalt` styleOptions
+
+instance Prelude.NFData BoxPlotOptions where
+  rnf BoxPlotOptions' {..} =
+    Prelude.rnf allDataPointsVisibility
+      `Prelude.seq` Prelude.rnf outlierVisibility
+      `Prelude.seq` Prelude.rnf styleOptions
+
+instance Data.ToJSON BoxPlotOptions where
+  toJSON BoxPlotOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AllDataPointsVisibility" Data..=)
+              Prelude.<$> allDataPointsVisibility,
+            ("OutlierVisibility" Data..=)
+              Prelude.<$> outlierVisibility,
+            ("StyleOptions" Data..=) Prelude.<$> styleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/BoxPlotSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotSortConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.BoxPlotSortConfiguration
+-- 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.QuickSight.Types.BoxPlotSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.PaginationConfiguration
+
+-- | The sort configuration of a @BoxPlotVisual@.
+--
+-- /See:/ 'newBoxPlotSortConfiguration' smart constructor.
+data BoxPlotSortConfiguration = BoxPlotSortConfiguration'
+  { -- | The sort configuration of a group by fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions],
+    -- | The pagination configuration of a table visual or box plot.
+    paginationConfiguration :: Prelude.Maybe PaginationConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categorySort', 'boxPlotSortConfiguration_categorySort' - The sort configuration of a group by fields.
+--
+-- 'paginationConfiguration', 'boxPlotSortConfiguration_paginationConfiguration' - The pagination configuration of a table visual or box plot.
+newBoxPlotSortConfiguration ::
+  BoxPlotSortConfiguration
+newBoxPlotSortConfiguration =
+  BoxPlotSortConfiguration'
+    { categorySort =
+        Prelude.Nothing,
+      paginationConfiguration = Prelude.Nothing
+    }
+
+-- | The sort configuration of a group by fields.
+boxPlotSortConfiguration_categorySort :: Lens.Lens' BoxPlotSortConfiguration (Prelude.Maybe [FieldSortOptions])
+boxPlotSortConfiguration_categorySort = Lens.lens (\BoxPlotSortConfiguration' {categorySort} -> categorySort) (\s@BoxPlotSortConfiguration' {} a -> s {categorySort = a} :: BoxPlotSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination configuration of a table visual or box plot.
+boxPlotSortConfiguration_paginationConfiguration :: Lens.Lens' BoxPlotSortConfiguration (Prelude.Maybe PaginationConfiguration)
+boxPlotSortConfiguration_paginationConfiguration = Lens.lens (\BoxPlotSortConfiguration' {paginationConfiguration} -> paginationConfiguration) (\s@BoxPlotSortConfiguration' {} a -> s {paginationConfiguration = a} :: BoxPlotSortConfiguration)
+
+instance Data.FromJSON BoxPlotSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "BoxPlotSortConfiguration"
+      ( \x ->
+          BoxPlotSortConfiguration'
+            Prelude.<$> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "PaginationConfiguration")
+      )
+
+instance Prelude.Hashable BoxPlotSortConfiguration where
+  hashWithSalt _salt BoxPlotSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categorySort
+      `Prelude.hashWithSalt` paginationConfiguration
+
+instance Prelude.NFData BoxPlotSortConfiguration where
+  rnf BoxPlotSortConfiguration' {..} =
+    Prelude.rnf categorySort
+      `Prelude.seq` Prelude.rnf paginationConfiguration
+
+instance Data.ToJSON BoxPlotSortConfiguration where
+  toJSON BoxPlotSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategorySort" Data..=) Prelude.<$> categorySort,
+            ("PaginationConfiguration" Data..=)
+              Prelude.<$> paginationConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotStyleOptions.hs b/gen/Amazonka/QuickSight/Types/BoxPlotStyleOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotStyleOptions.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.QuickSight.Types.BoxPlotStyleOptions
+-- 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.QuickSight.Types.BoxPlotStyleOptions 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.QuickSight.Types.BoxPlotFillStyle
+
+-- | The style options of the box plot.
+--
+-- /See:/ 'newBoxPlotStyleOptions' smart constructor.
+data BoxPlotStyleOptions = BoxPlotStyleOptions'
+  { -- | The fill styles (solid, transparent) of the box plot.
+    fillStyle :: Prelude.Maybe BoxPlotFillStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotStyleOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fillStyle', 'boxPlotStyleOptions_fillStyle' - The fill styles (solid, transparent) of the box plot.
+newBoxPlotStyleOptions ::
+  BoxPlotStyleOptions
+newBoxPlotStyleOptions =
+  BoxPlotStyleOptions' {fillStyle = Prelude.Nothing}
+
+-- | The fill styles (solid, transparent) of the box plot.
+boxPlotStyleOptions_fillStyle :: Lens.Lens' BoxPlotStyleOptions (Prelude.Maybe BoxPlotFillStyle)
+boxPlotStyleOptions_fillStyle = Lens.lens (\BoxPlotStyleOptions' {fillStyle} -> fillStyle) (\s@BoxPlotStyleOptions' {} a -> s {fillStyle = a} :: BoxPlotStyleOptions)
+
+instance Data.FromJSON BoxPlotStyleOptions where
+  parseJSON =
+    Data.withObject
+      "BoxPlotStyleOptions"
+      ( \x ->
+          BoxPlotStyleOptions'
+            Prelude.<$> (x Data..:? "FillStyle")
+      )
+
+instance Prelude.Hashable BoxPlotStyleOptions where
+  hashWithSalt _salt BoxPlotStyleOptions' {..} =
+    _salt `Prelude.hashWithSalt` fillStyle
+
+instance Prelude.NFData BoxPlotStyleOptions where
+  rnf BoxPlotStyleOptions' {..} = Prelude.rnf fillStyle
+
+instance Data.ToJSON BoxPlotStyleOptions where
+  toJSON BoxPlotStyleOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("FillStyle" Data..=) Prelude.<$> fillStyle]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/BoxPlotVisual.hs b/gen/Amazonka/QuickSight/Types/BoxPlotVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/BoxPlotVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.BoxPlotVisual
+-- 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.QuickSight.Types.BoxPlotVisual 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.QuickSight.Types.BoxPlotChartConfiguration
+import Amazonka.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A box plot.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/box-plots.html Using box plots>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newBoxPlotVisual' smart constructor.
+data BoxPlotVisual = BoxPlotVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe BoxPlotChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BoxPlotVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'boxPlotVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'boxPlotVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'boxPlotVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'boxPlotVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'boxPlotVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'boxPlotVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newBoxPlotVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  BoxPlotVisual
+newBoxPlotVisual pVisualId_ =
+  BoxPlotVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+boxPlotVisual_actions :: Lens.Lens' BoxPlotVisual (Prelude.Maybe [VisualCustomAction])
+boxPlotVisual_actions = Lens.lens (\BoxPlotVisual' {actions} -> actions) (\s@BoxPlotVisual' {} a -> s {actions = a} :: BoxPlotVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+boxPlotVisual_chartConfiguration :: Lens.Lens' BoxPlotVisual (Prelude.Maybe BoxPlotChartConfiguration)
+boxPlotVisual_chartConfiguration = Lens.lens (\BoxPlotVisual' {chartConfiguration} -> chartConfiguration) (\s@BoxPlotVisual' {} a -> s {chartConfiguration = a} :: BoxPlotVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+boxPlotVisual_columnHierarchies :: Lens.Lens' BoxPlotVisual (Prelude.Maybe [ColumnHierarchy])
+boxPlotVisual_columnHierarchies = Lens.lens (\BoxPlotVisual' {columnHierarchies} -> columnHierarchies) (\s@BoxPlotVisual' {} a -> s {columnHierarchies = a} :: BoxPlotVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+boxPlotVisual_subtitle :: Lens.Lens' BoxPlotVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+boxPlotVisual_subtitle = Lens.lens (\BoxPlotVisual' {subtitle} -> subtitle) (\s@BoxPlotVisual' {} a -> s {subtitle = a} :: BoxPlotVisual)
+
+-- | The title that is displayed on the visual.
+boxPlotVisual_title :: Lens.Lens' BoxPlotVisual (Prelude.Maybe VisualTitleLabelOptions)
+boxPlotVisual_title = Lens.lens (\BoxPlotVisual' {title} -> title) (\s@BoxPlotVisual' {} a -> s {title = a} :: BoxPlotVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+boxPlotVisual_visualId :: Lens.Lens' BoxPlotVisual Prelude.Text
+boxPlotVisual_visualId = Lens.lens (\BoxPlotVisual' {visualId} -> visualId) (\s@BoxPlotVisual' {} a -> s {visualId = a} :: BoxPlotVisual)
+
+instance Data.FromJSON BoxPlotVisual where
+  parseJSON =
+    Data.withObject
+      "BoxPlotVisual"
+      ( \x ->
+          BoxPlotVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable BoxPlotVisual where
+  hashWithSalt _salt BoxPlotVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData BoxPlotVisual where
+  rnf BoxPlotVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON BoxPlotVisual where
+  toJSON BoxPlotVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CalculatedColumn.hs b/gen/Amazonka/QuickSight/Types/CalculatedColumn.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CalculatedColumn.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CalculatedColumn
+-- 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.QuickSight.Types.CalculatedColumn 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 calculated column for a dataset.
+--
+-- /See:/ 'newCalculatedColumn' smart constructor.
+data CalculatedColumn = CalculatedColumn'
+  { -- | Column name.
+    columnName :: Prelude.Text,
+    -- | A unique ID to identify a calculated column. During a dataset update, if
+    -- the column ID of a calculated column matches that of an existing
+    -- calculated column, Amazon QuickSight preserves the existing calculated
+    -- column.
+    columnId :: Prelude.Text,
+    -- | An expression that defines the calculated column.
+    expression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CalculatedColumn' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnName', 'calculatedColumn_columnName' - Column name.
+--
+-- 'columnId', 'calculatedColumn_columnId' - A unique ID to identify a calculated column. During a dataset update, if
+-- the column ID of a calculated column matches that of an existing
+-- calculated column, Amazon QuickSight preserves the existing calculated
+-- column.
+--
+-- 'expression', 'calculatedColumn_expression' - An expression that defines the calculated column.
+newCalculatedColumn ::
+  -- | 'columnName'
+  Prelude.Text ->
+  -- | 'columnId'
+  Prelude.Text ->
+  -- | 'expression'
+  Prelude.Text ->
+  CalculatedColumn
+newCalculatedColumn
+  pColumnName_
+  pColumnId_
+  pExpression_ =
+    CalculatedColumn'
+      { columnName = pColumnName_,
+        columnId = pColumnId_,
+        expression = Data._Sensitive Lens.# pExpression_
+      }
+
+-- | Column name.
+calculatedColumn_columnName :: Lens.Lens' CalculatedColumn Prelude.Text
+calculatedColumn_columnName = Lens.lens (\CalculatedColumn' {columnName} -> columnName) (\s@CalculatedColumn' {} a -> s {columnName = a} :: CalculatedColumn)
+
+-- | A unique ID to identify a calculated column. During a dataset update, if
+-- the column ID of a calculated column matches that of an existing
+-- calculated column, Amazon QuickSight preserves the existing calculated
+-- column.
+calculatedColumn_columnId :: Lens.Lens' CalculatedColumn Prelude.Text
+calculatedColumn_columnId = Lens.lens (\CalculatedColumn' {columnId} -> columnId) (\s@CalculatedColumn' {} a -> s {columnId = a} :: CalculatedColumn)
+
+-- | An expression that defines the calculated column.
+calculatedColumn_expression :: Lens.Lens' CalculatedColumn Prelude.Text
+calculatedColumn_expression = Lens.lens (\CalculatedColumn' {expression} -> expression) (\s@CalculatedColumn' {} a -> s {expression = a} :: CalculatedColumn) Prelude.. Data._Sensitive
+
+instance Data.FromJSON CalculatedColumn where
+  parseJSON =
+    Data.withObject
+      "CalculatedColumn"
+      ( \x ->
+          CalculatedColumn'
+            Prelude.<$> (x Data..: "ColumnName")
+            Prelude.<*> (x Data..: "ColumnId")
+            Prelude.<*> (x Data..: "Expression")
+      )
+
+instance Prelude.Hashable CalculatedColumn where
+  hashWithSalt _salt CalculatedColumn' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnName
+      `Prelude.hashWithSalt` columnId
+      `Prelude.hashWithSalt` expression
+
+instance Prelude.NFData CalculatedColumn where
+  rnf CalculatedColumn' {..} =
+    Prelude.rnf columnName
+      `Prelude.seq` Prelude.rnf columnId
+      `Prelude.seq` Prelude.rnf expression
+
+instance Data.ToJSON CalculatedColumn where
+  toJSON CalculatedColumn' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ColumnName" Data..= columnName),
+            Prelude.Just ("ColumnId" Data..= columnId),
+            Prelude.Just ("Expression" Data..= expression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CalculatedField.hs b/gen/Amazonka/QuickSight/Types/CalculatedField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CalculatedField.hs
@@ -0,0 +1,117 @@
+{-# 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.QuickSight.Types.CalculatedField
+-- 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.QuickSight.Types.CalculatedField 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 calculated field of an analysis.
+--
+-- /See:/ 'newCalculatedField' smart constructor.
+data CalculatedField = CalculatedField'
+  { -- | The data set that is used in this calculated field.
+    dataSetIdentifier :: Prelude.Text,
+    -- | The name of the calculated field.
+    name :: Prelude.Text,
+    -- | The expression of the calculated field.
+    expression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CalculatedField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetIdentifier', 'calculatedField_dataSetIdentifier' - The data set that is used in this calculated field.
+--
+-- 'name', 'calculatedField_name' - The name of the calculated field.
+--
+-- 'expression', 'calculatedField_expression' - The expression of the calculated field.
+newCalculatedField ::
+  -- | 'dataSetIdentifier'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'expression'
+  Prelude.Text ->
+  CalculatedField
+newCalculatedField
+  pDataSetIdentifier_
+  pName_
+  pExpression_ =
+    CalculatedField'
+      { dataSetIdentifier =
+          pDataSetIdentifier_,
+        name = pName_,
+        expression = Data._Sensitive Lens.# pExpression_
+      }
+
+-- | The data set that is used in this calculated field.
+calculatedField_dataSetIdentifier :: Lens.Lens' CalculatedField Prelude.Text
+calculatedField_dataSetIdentifier = Lens.lens (\CalculatedField' {dataSetIdentifier} -> dataSetIdentifier) (\s@CalculatedField' {} a -> s {dataSetIdentifier = a} :: CalculatedField)
+
+-- | The name of the calculated field.
+calculatedField_name :: Lens.Lens' CalculatedField Prelude.Text
+calculatedField_name = Lens.lens (\CalculatedField' {name} -> name) (\s@CalculatedField' {} a -> s {name = a} :: CalculatedField)
+
+-- | The expression of the calculated field.
+calculatedField_expression :: Lens.Lens' CalculatedField Prelude.Text
+calculatedField_expression = Lens.lens (\CalculatedField' {expression} -> expression) (\s@CalculatedField' {} a -> s {expression = a} :: CalculatedField) Prelude.. Data._Sensitive
+
+instance Data.FromJSON CalculatedField where
+  parseJSON =
+    Data.withObject
+      "CalculatedField"
+      ( \x ->
+          CalculatedField'
+            Prelude.<$> (x Data..: "DataSetIdentifier")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Expression")
+      )
+
+instance Prelude.Hashable CalculatedField where
+  hashWithSalt _salt CalculatedField' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetIdentifier
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` expression
+
+instance Prelude.NFData CalculatedField where
+  rnf CalculatedField' {..} =
+    Prelude.rnf dataSetIdentifier
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf expression
+
+instance Data.ToJSON CalculatedField where
+  toJSON CalculatedField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataSetIdentifier" Data..= dataSetIdentifier),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Expression" Data..= expression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CalculatedMeasureField.hs b/gen/Amazonka/QuickSight/Types/CalculatedMeasureField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CalculatedMeasureField.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CalculatedMeasureField
+-- 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.QuickSight.Types.CalculatedMeasureField 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 table calculation measure field for pivot tables.
+--
+-- /See:/ 'newCalculatedMeasureField' smart constructor.
+data CalculatedMeasureField = CalculatedMeasureField'
+  { -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The expression in the table calculation.
+    expression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CalculatedMeasureField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'calculatedMeasureField_fieldId' - The custom field ID.
+--
+-- 'expression', 'calculatedMeasureField_expression' - The expression in the table calculation.
+newCalculatedMeasureField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'expression'
+  Prelude.Text ->
+  CalculatedMeasureField
+newCalculatedMeasureField pFieldId_ pExpression_ =
+  CalculatedMeasureField'
+    { fieldId = pFieldId_,
+      expression = Data._Sensitive Lens.# pExpression_
+    }
+
+-- | The custom field ID.
+calculatedMeasureField_fieldId :: Lens.Lens' CalculatedMeasureField Prelude.Text
+calculatedMeasureField_fieldId = Lens.lens (\CalculatedMeasureField' {fieldId} -> fieldId) (\s@CalculatedMeasureField' {} a -> s {fieldId = a} :: CalculatedMeasureField)
+
+-- | The expression in the table calculation.
+calculatedMeasureField_expression :: Lens.Lens' CalculatedMeasureField Prelude.Text
+calculatedMeasureField_expression = Lens.lens (\CalculatedMeasureField' {expression} -> expression) (\s@CalculatedMeasureField' {} a -> s {expression = a} :: CalculatedMeasureField) Prelude.. Data._Sensitive
+
+instance Data.FromJSON CalculatedMeasureField where
+  parseJSON =
+    Data.withObject
+      "CalculatedMeasureField"
+      ( \x ->
+          CalculatedMeasureField'
+            Prelude.<$> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Expression")
+      )
+
+instance Prelude.Hashable CalculatedMeasureField where
+  hashWithSalt _salt CalculatedMeasureField' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` expression
+
+instance Prelude.NFData CalculatedMeasureField where
+  rnf CalculatedMeasureField' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf expression
+
+instance Data.ToJSON CalculatedMeasureField where
+  toJSON CalculatedMeasureField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Expression" Data..= expression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CascadingControlConfiguration.hs b/gen/Amazonka/QuickSight/Types/CascadingControlConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CascadingControlConfiguration.hs
@@ -0,0 +1,92 @@
+{-# 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.QuickSight.Types.CascadingControlConfiguration
+-- 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.QuickSight.Types.CascadingControlConfiguration 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.QuickSight.Types.CascadingControlSource
+
+-- | The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+--
+-- /See:/ 'newCascadingControlConfiguration' smart constructor.
+data CascadingControlConfiguration = CascadingControlConfiguration'
+  { -- | A list of source controls that determine the values that are used in the
+    -- current control.
+    sourceControls :: Prelude.Maybe [CascadingControlSource]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CascadingControlConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sourceControls', 'cascadingControlConfiguration_sourceControls' - A list of source controls that determine the values that are used in the
+-- current control.
+newCascadingControlConfiguration ::
+  CascadingControlConfiguration
+newCascadingControlConfiguration =
+  CascadingControlConfiguration'
+    { sourceControls =
+        Prelude.Nothing
+    }
+
+-- | A list of source controls that determine the values that are used in the
+-- current control.
+cascadingControlConfiguration_sourceControls :: Lens.Lens' CascadingControlConfiguration (Prelude.Maybe [CascadingControlSource])
+cascadingControlConfiguration_sourceControls = Lens.lens (\CascadingControlConfiguration' {sourceControls} -> sourceControls) (\s@CascadingControlConfiguration' {} a -> s {sourceControls = a} :: CascadingControlConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CascadingControlConfiguration where
+  parseJSON =
+    Data.withObject
+      "CascadingControlConfiguration"
+      ( \x ->
+          CascadingControlConfiguration'
+            Prelude.<$> ( x
+                            Data..:? "SourceControls"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    CascadingControlConfiguration
+  where
+  hashWithSalt _salt CascadingControlConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` sourceControls
+
+instance Prelude.NFData CascadingControlConfiguration where
+  rnf CascadingControlConfiguration' {..} =
+    Prelude.rnf sourceControls
+
+instance Data.ToJSON CascadingControlConfiguration where
+  toJSON CascadingControlConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceControls" Data..=)
+              Prelude.<$> sourceControls
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CascadingControlSource.hs b/gen/Amazonka/QuickSight/Types/CascadingControlSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CascadingControlSource.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CascadingControlSource
+-- 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.QuickSight.Types.CascadingControlSource 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.QuickSight.Types.ColumnIdentifier
+
+-- | The source controls that are used in a @CascadingControlConfiguration@.
+--
+-- /See:/ 'newCascadingControlSource' smart constructor.
+data CascadingControlSource = CascadingControlSource'
+  { -- | The column identifier that determines which column to look up for the
+    -- source sheet control.
+    columnToMatch :: Prelude.Maybe ColumnIdentifier,
+    -- | The source sheet control ID of a @CascadingControlSource@.
+    sourceSheetControlId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CascadingControlSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnToMatch', 'cascadingControlSource_columnToMatch' - The column identifier that determines which column to look up for the
+-- source sheet control.
+--
+-- 'sourceSheetControlId', 'cascadingControlSource_sourceSheetControlId' - The source sheet control ID of a @CascadingControlSource@.
+newCascadingControlSource ::
+  CascadingControlSource
+newCascadingControlSource =
+  CascadingControlSource'
+    { columnToMatch =
+        Prelude.Nothing,
+      sourceSheetControlId = Prelude.Nothing
+    }
+
+-- | The column identifier that determines which column to look up for the
+-- source sheet control.
+cascadingControlSource_columnToMatch :: Lens.Lens' CascadingControlSource (Prelude.Maybe ColumnIdentifier)
+cascadingControlSource_columnToMatch = Lens.lens (\CascadingControlSource' {columnToMatch} -> columnToMatch) (\s@CascadingControlSource' {} a -> s {columnToMatch = a} :: CascadingControlSource)
+
+-- | The source sheet control ID of a @CascadingControlSource@.
+cascadingControlSource_sourceSheetControlId :: Lens.Lens' CascadingControlSource (Prelude.Maybe Prelude.Text)
+cascadingControlSource_sourceSheetControlId = Lens.lens (\CascadingControlSource' {sourceSheetControlId} -> sourceSheetControlId) (\s@CascadingControlSource' {} a -> s {sourceSheetControlId = a} :: CascadingControlSource)
+
+instance Data.FromJSON CascadingControlSource where
+  parseJSON =
+    Data.withObject
+      "CascadingControlSource"
+      ( \x ->
+          CascadingControlSource'
+            Prelude.<$> (x Data..:? "ColumnToMatch")
+            Prelude.<*> (x Data..:? "SourceSheetControlId")
+      )
+
+instance Prelude.Hashable CascadingControlSource where
+  hashWithSalt _salt CascadingControlSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnToMatch
+      `Prelude.hashWithSalt` sourceSheetControlId
+
+instance Prelude.NFData CascadingControlSource where
+  rnf CascadingControlSource' {..} =
+    Prelude.rnf columnToMatch
+      `Prelude.seq` Prelude.rnf sourceSheetControlId
+
+instance Data.ToJSON CascadingControlSource where
+  toJSON CascadingControlSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnToMatch" Data..=) Prelude.<$> columnToMatch,
+            ("SourceSheetControlId" Data..=)
+              Prelude.<$> sourceSheetControlId
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CastColumnTypeOperation.hs b/gen/Amazonka/QuickSight/Types/CastColumnTypeOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CastColumnTypeOperation.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CastColumnTypeOperation
+-- 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.QuickSight.Types.CastColumnTypeOperation 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.QuickSight.Types.ColumnDataType
+
+-- | A transform operation that casts a column to a different type.
+--
+-- /See:/ 'newCastColumnTypeOperation' smart constructor.
+data CastColumnTypeOperation = CastColumnTypeOperation'
+  { -- | When casting a column from string to datetime type, you can supply a
+    -- string in a format supported by Amazon QuickSight to denote the source
+    -- data format.
+    format :: Prelude.Maybe Prelude.Text,
+    -- | Column name.
+    columnName :: Prelude.Text,
+    -- | New column data type.
+    newColumnType' :: ColumnDataType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CastColumnTypeOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'format', 'castColumnTypeOperation_format' - When casting a column from string to datetime type, you can supply a
+-- string in a format supported by Amazon QuickSight to denote the source
+-- data format.
+--
+-- 'columnName', 'castColumnTypeOperation_columnName' - Column name.
+--
+-- 'newColumnType'', 'castColumnTypeOperation_newColumnType' - New column data type.
+newCastColumnTypeOperation ::
+  -- | 'columnName'
+  Prelude.Text ->
+  -- | 'newColumnType''
+  ColumnDataType ->
+  CastColumnTypeOperation
+newCastColumnTypeOperation
+  pColumnName_
+  pNewColumnType_ =
+    CastColumnTypeOperation'
+      { format = Prelude.Nothing,
+        columnName = pColumnName_,
+        newColumnType' = pNewColumnType_
+      }
+
+-- | When casting a column from string to datetime type, you can supply a
+-- string in a format supported by Amazon QuickSight to denote the source
+-- data format.
+castColumnTypeOperation_format :: Lens.Lens' CastColumnTypeOperation (Prelude.Maybe Prelude.Text)
+castColumnTypeOperation_format = Lens.lens (\CastColumnTypeOperation' {format} -> format) (\s@CastColumnTypeOperation' {} a -> s {format = a} :: CastColumnTypeOperation)
+
+-- | Column name.
+castColumnTypeOperation_columnName :: Lens.Lens' CastColumnTypeOperation Prelude.Text
+castColumnTypeOperation_columnName = Lens.lens (\CastColumnTypeOperation' {columnName} -> columnName) (\s@CastColumnTypeOperation' {} a -> s {columnName = a} :: CastColumnTypeOperation)
+
+-- | New column data type.
+castColumnTypeOperation_newColumnType :: Lens.Lens' CastColumnTypeOperation ColumnDataType
+castColumnTypeOperation_newColumnType = Lens.lens (\CastColumnTypeOperation' {newColumnType'} -> newColumnType') (\s@CastColumnTypeOperation' {} a -> s {newColumnType' = a} :: CastColumnTypeOperation)
+
+instance Data.FromJSON CastColumnTypeOperation where
+  parseJSON =
+    Data.withObject
+      "CastColumnTypeOperation"
+      ( \x ->
+          CastColumnTypeOperation'
+            Prelude.<$> (x Data..:? "Format")
+            Prelude.<*> (x Data..: "ColumnName")
+            Prelude.<*> (x Data..: "NewColumnType")
+      )
+
+instance Prelude.Hashable CastColumnTypeOperation where
+  hashWithSalt _salt CastColumnTypeOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` format
+      `Prelude.hashWithSalt` columnName
+      `Prelude.hashWithSalt` newColumnType'
+
+instance Prelude.NFData CastColumnTypeOperation where
+  rnf CastColumnTypeOperation' {..} =
+    Prelude.rnf format
+      `Prelude.seq` Prelude.rnf columnName
+      `Prelude.seq` Prelude.rnf newColumnType'
+
+instance Data.ToJSON CastColumnTypeOperation where
+  toJSON CastColumnTypeOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Format" Data..=) Prelude.<$> format,
+            Prelude.Just ("ColumnName" Data..= columnName),
+            Prelude.Just
+              ("NewColumnType" Data..= newColumnType')
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CategoricalAggregationFunction.hs b/gen/Amazonka/QuickSight/Types/CategoricalAggregationFunction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoricalAggregationFunction.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.QuickSight.Types.CategoricalAggregationFunction
+-- 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.QuickSight.Types.CategoricalAggregationFunction
+  ( CategoricalAggregationFunction
+      ( ..,
+        CategoricalAggregationFunction_COUNT,
+        CategoricalAggregationFunction_DISTINCT_COUNT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CategoricalAggregationFunction = CategoricalAggregationFunction'
+  { fromCategoricalAggregationFunction ::
+      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 CategoricalAggregationFunction_COUNT :: CategoricalAggregationFunction
+pattern CategoricalAggregationFunction_COUNT = CategoricalAggregationFunction' "COUNT"
+
+pattern CategoricalAggregationFunction_DISTINCT_COUNT :: CategoricalAggregationFunction
+pattern CategoricalAggregationFunction_DISTINCT_COUNT = CategoricalAggregationFunction' "DISTINCT_COUNT"
+
+{-# COMPLETE
+  CategoricalAggregationFunction_COUNT,
+  CategoricalAggregationFunction_DISTINCT_COUNT,
+  CategoricalAggregationFunction'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/CategoricalDimensionField.hs b/gen/Amazonka/QuickSight/Types/CategoricalDimensionField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoricalDimensionField.hs
@@ -0,0 +1,127 @@
+{-# 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.QuickSight.Types.CategoricalDimensionField
+-- 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.QuickSight.Types.CategoricalDimensionField 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.StringFormatConfiguration
+
+-- | The dimension type field with categorical type columns..
+--
+-- /See:/ 'newCategoricalDimensionField' smart constructor.
+data CategoricalDimensionField = CategoricalDimensionField'
+  { -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe StringFormatConfiguration,
+    -- | The custom hierarchy ID.
+    hierarchyId :: Prelude.Maybe Prelude.Text,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @CategoricalDimensionField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoricalDimensionField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatConfiguration', 'categoricalDimensionField_formatConfiguration' - The format configuration of the field.
+--
+-- 'hierarchyId', 'categoricalDimensionField_hierarchyId' - The custom hierarchy ID.
+--
+-- 'fieldId', 'categoricalDimensionField_fieldId' - The custom field ID.
+--
+-- 'column', 'categoricalDimensionField_column' - The column that is used in the @CategoricalDimensionField@.
+newCategoricalDimensionField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  CategoricalDimensionField
+newCategoricalDimensionField pFieldId_ pColumn_ =
+  CategoricalDimensionField'
+    { formatConfiguration =
+        Prelude.Nothing,
+      hierarchyId = Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The format configuration of the field.
+categoricalDimensionField_formatConfiguration :: Lens.Lens' CategoricalDimensionField (Prelude.Maybe StringFormatConfiguration)
+categoricalDimensionField_formatConfiguration = Lens.lens (\CategoricalDimensionField' {formatConfiguration} -> formatConfiguration) (\s@CategoricalDimensionField' {} a -> s {formatConfiguration = a} :: CategoricalDimensionField)
+
+-- | The custom hierarchy ID.
+categoricalDimensionField_hierarchyId :: Lens.Lens' CategoricalDimensionField (Prelude.Maybe Prelude.Text)
+categoricalDimensionField_hierarchyId = Lens.lens (\CategoricalDimensionField' {hierarchyId} -> hierarchyId) (\s@CategoricalDimensionField' {} a -> s {hierarchyId = a} :: CategoricalDimensionField)
+
+-- | The custom field ID.
+categoricalDimensionField_fieldId :: Lens.Lens' CategoricalDimensionField Prelude.Text
+categoricalDimensionField_fieldId = Lens.lens (\CategoricalDimensionField' {fieldId} -> fieldId) (\s@CategoricalDimensionField' {} a -> s {fieldId = a} :: CategoricalDimensionField)
+
+-- | The column that is used in the @CategoricalDimensionField@.
+categoricalDimensionField_column :: Lens.Lens' CategoricalDimensionField ColumnIdentifier
+categoricalDimensionField_column = Lens.lens (\CategoricalDimensionField' {column} -> column) (\s@CategoricalDimensionField' {} a -> s {column = a} :: CategoricalDimensionField)
+
+instance Data.FromJSON CategoricalDimensionField where
+  parseJSON =
+    Data.withObject
+      "CategoricalDimensionField"
+      ( \x ->
+          CategoricalDimensionField'
+            Prelude.<$> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..:? "HierarchyId")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable CategoricalDimensionField where
+  hashWithSalt _salt CategoricalDimensionField' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` hierarchyId
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData CategoricalDimensionField where
+  rnf CategoricalDimensionField' {..} =
+    Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf hierarchyId
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON CategoricalDimensionField where
+  toJSON CategoricalDimensionField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            ("HierarchyId" Data..=) Prelude.<$> hierarchyId,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CategoricalMeasureField.hs b/gen/Amazonka/QuickSight/Types/CategoricalMeasureField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoricalMeasureField.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CategoricalMeasureField
+-- 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.QuickSight.Types.CategoricalMeasureField 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.QuickSight.Types.CategoricalAggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.StringFormatConfiguration
+
+-- | The measure type field with categorical type columns.
+--
+-- /See:/ 'newCategoricalMeasureField' smart constructor.
+data CategoricalMeasureField = CategoricalMeasureField'
+  { -- | The aggregation function of the measure field.
+    aggregationFunction :: Prelude.Maybe CategoricalAggregationFunction,
+    -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe StringFormatConfiguration,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @CategoricalMeasureField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoricalMeasureField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationFunction', 'categoricalMeasureField_aggregationFunction' - The aggregation function of the measure field.
+--
+-- 'formatConfiguration', 'categoricalMeasureField_formatConfiguration' - The format configuration of the field.
+--
+-- 'fieldId', 'categoricalMeasureField_fieldId' - The custom field ID.
+--
+-- 'column', 'categoricalMeasureField_column' - The column that is used in the @CategoricalMeasureField@.
+newCategoricalMeasureField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  CategoricalMeasureField
+newCategoricalMeasureField pFieldId_ pColumn_ =
+  CategoricalMeasureField'
+    { aggregationFunction =
+        Prelude.Nothing,
+      formatConfiguration = Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The aggregation function of the measure field.
+categoricalMeasureField_aggregationFunction :: Lens.Lens' CategoricalMeasureField (Prelude.Maybe CategoricalAggregationFunction)
+categoricalMeasureField_aggregationFunction = Lens.lens (\CategoricalMeasureField' {aggregationFunction} -> aggregationFunction) (\s@CategoricalMeasureField' {} a -> s {aggregationFunction = a} :: CategoricalMeasureField)
+
+-- | The format configuration of the field.
+categoricalMeasureField_formatConfiguration :: Lens.Lens' CategoricalMeasureField (Prelude.Maybe StringFormatConfiguration)
+categoricalMeasureField_formatConfiguration = Lens.lens (\CategoricalMeasureField' {formatConfiguration} -> formatConfiguration) (\s@CategoricalMeasureField' {} a -> s {formatConfiguration = a} :: CategoricalMeasureField)
+
+-- | The custom field ID.
+categoricalMeasureField_fieldId :: Lens.Lens' CategoricalMeasureField Prelude.Text
+categoricalMeasureField_fieldId = Lens.lens (\CategoricalMeasureField' {fieldId} -> fieldId) (\s@CategoricalMeasureField' {} a -> s {fieldId = a} :: CategoricalMeasureField)
+
+-- | The column that is used in the @CategoricalMeasureField@.
+categoricalMeasureField_column :: Lens.Lens' CategoricalMeasureField ColumnIdentifier
+categoricalMeasureField_column = Lens.lens (\CategoricalMeasureField' {column} -> column) (\s@CategoricalMeasureField' {} a -> s {column = a} :: CategoricalMeasureField)
+
+instance Data.FromJSON CategoricalMeasureField where
+  parseJSON =
+    Data.withObject
+      "CategoricalMeasureField"
+      ( \x ->
+          CategoricalMeasureField'
+            Prelude.<$> (x Data..:? "AggregationFunction")
+            Prelude.<*> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable CategoricalMeasureField where
+  hashWithSalt _salt CategoricalMeasureField' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationFunction
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData CategoricalMeasureField where
+  rnf CategoricalMeasureField' {..} =
+    Prelude.rnf aggregationFunction
+      `Prelude.seq` Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON CategoricalMeasureField where
+  toJSON CategoricalMeasureField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationFunction" Data..=)
+              Prelude.<$> aggregationFunction,
+            ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CategoryDrillDownFilter.hs b/gen/Amazonka/QuickSight/Types/CategoryDrillDownFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoryDrillDownFilter.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CategoryDrillDownFilter
+-- 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.QuickSight.Types.CategoryDrillDownFilter 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.QuickSight.Types.ColumnIdentifier
+
+-- | The numeric equality type drill down filter.
+--
+-- /See:/ 'newCategoryDrillDownFilter' smart constructor.
+data CategoryDrillDownFilter = CategoryDrillDownFilter'
+  { -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | A list of the string inputs that are the values of the category drill
+    -- down filter.
+    categoryValues :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoryDrillDownFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'column', 'categoryDrillDownFilter_column' - The column that the filter is applied to.
+--
+-- 'categoryValues', 'categoryDrillDownFilter_categoryValues' - A list of the string inputs that are the values of the category drill
+-- down filter.
+newCategoryDrillDownFilter ::
+  -- | 'column'
+  ColumnIdentifier ->
+  CategoryDrillDownFilter
+newCategoryDrillDownFilter pColumn_ =
+  CategoryDrillDownFilter'
+    { column = pColumn_,
+      categoryValues = Prelude.mempty
+    }
+
+-- | The column that the filter is applied to.
+categoryDrillDownFilter_column :: Lens.Lens' CategoryDrillDownFilter ColumnIdentifier
+categoryDrillDownFilter_column = Lens.lens (\CategoryDrillDownFilter' {column} -> column) (\s@CategoryDrillDownFilter' {} a -> s {column = a} :: CategoryDrillDownFilter)
+
+-- | A list of the string inputs that are the values of the category drill
+-- down filter.
+categoryDrillDownFilter_categoryValues :: Lens.Lens' CategoryDrillDownFilter [Prelude.Text]
+categoryDrillDownFilter_categoryValues = Lens.lens (\CategoryDrillDownFilter' {categoryValues} -> categoryValues) (\s@CategoryDrillDownFilter' {} a -> s {categoryValues = a} :: CategoryDrillDownFilter) Prelude.. Lens.coerced
+
+instance Data.FromJSON CategoryDrillDownFilter where
+  parseJSON =
+    Data.withObject
+      "CategoryDrillDownFilter"
+      ( \x ->
+          CategoryDrillDownFilter'
+            Prelude.<$> (x Data..: "Column")
+            Prelude.<*> ( x
+                            Data..:? "CategoryValues"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CategoryDrillDownFilter where
+  hashWithSalt _salt CategoryDrillDownFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` categoryValues
+
+instance Prelude.NFData CategoryDrillDownFilter where
+  rnf CategoryDrillDownFilter' {..} =
+    Prelude.rnf column
+      `Prelude.seq` Prelude.rnf categoryValues
+
+instance Data.ToJSON CategoryDrillDownFilter where
+  toJSON CategoryDrillDownFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Column" Data..= column),
+            Prelude.Just
+              ("CategoryValues" Data..= categoryValues)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CategoryFilter.hs b/gen/Amazonka/QuickSight/Types/CategoryFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoryFilter.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.QuickSight.Types.CategoryFilter
+-- 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.QuickSight.Types.CategoryFilter 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.QuickSight.Types.CategoryFilterConfiguration
+import Amazonka.QuickSight.Types.ColumnIdentifier
+
+-- | A @CategoryFilter@ filters text values.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/add-a-text-filter-data-prep.html Adding text filters>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newCategoryFilter' smart constructor.
+data CategoryFilter = CategoryFilter'
+  { -- | The configuration for a @CategoryFilter@.
+    configuration :: Prelude.Maybe CategoryFilterConfiguration,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoryFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configuration', 'categoryFilter_configuration' - The configuration for a @CategoryFilter@.
+--
+-- 'filterId', 'categoryFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'categoryFilter_column' - The column that the filter is applied to.
+newCategoryFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  CategoryFilter
+newCategoryFilter pFilterId_ pColumn_ =
+  CategoryFilter'
+    { configuration = Prelude.Nothing,
+      filterId = pFilterId_,
+      column = pColumn_
+    }
+
+-- | The configuration for a @CategoryFilter@.
+categoryFilter_configuration :: Lens.Lens' CategoryFilter (Prelude.Maybe CategoryFilterConfiguration)
+categoryFilter_configuration = Lens.lens (\CategoryFilter' {configuration} -> configuration) (\s@CategoryFilter' {} a -> s {configuration = a} :: CategoryFilter)
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+categoryFilter_filterId :: Lens.Lens' CategoryFilter Prelude.Text
+categoryFilter_filterId = Lens.lens (\CategoryFilter' {filterId} -> filterId) (\s@CategoryFilter' {} a -> s {filterId = a} :: CategoryFilter)
+
+-- | The column that the filter is applied to.
+categoryFilter_column :: Lens.Lens' CategoryFilter ColumnIdentifier
+categoryFilter_column = Lens.lens (\CategoryFilter' {column} -> column) (\s@CategoryFilter' {} a -> s {column = a} :: CategoryFilter)
+
+instance Data.FromJSON CategoryFilter where
+  parseJSON =
+    Data.withObject
+      "CategoryFilter"
+      ( \x ->
+          CategoryFilter'
+            Prelude.<$> (x Data..:? "Configuration")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable CategoryFilter where
+  hashWithSalt _salt CategoryFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` configuration
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData CategoryFilter where
+  rnf CategoryFilter' {..} =
+    Prelude.rnf configuration
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON CategoryFilter where
+  toJSON CategoryFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Configuration" Data..=) Prelude.<$> configuration,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CategoryFilterConfiguration.hs b/gen/Amazonka/QuickSight/Types/CategoryFilterConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoryFilterConfiguration.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CategoryFilterConfiguration
+-- 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.QuickSight.Types.CategoryFilterConfiguration 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.QuickSight.Types.CustomFilterConfiguration
+import Amazonka.QuickSight.Types.CustomFilterListConfiguration
+import Amazonka.QuickSight.Types.FilterListConfiguration
+
+-- | The configuration for a @CategoryFilter@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newCategoryFilterConfiguration' smart constructor.
+data CategoryFilterConfiguration = CategoryFilterConfiguration'
+  { -- | A custom filter that filters based on a single value. This filter can be
+    -- partially matched.
+    customFilterConfiguration :: Prelude.Maybe CustomFilterConfiguration,
+    -- | A list of custom filter values. In the Amazon QuickSight console, this
+    -- filter type is called a custom filter list.
+    customFilterListConfiguration :: Prelude.Maybe CustomFilterListConfiguration,
+    -- | A list of filter configurations. In the Amazon QuickSight console, this
+    -- filter type is called a filter list.
+    filterListConfiguration :: Prelude.Maybe FilterListConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoryFilterConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customFilterConfiguration', 'categoryFilterConfiguration_customFilterConfiguration' - A custom filter that filters based on a single value. This filter can be
+-- partially matched.
+--
+-- 'customFilterListConfiguration', 'categoryFilterConfiguration_customFilterListConfiguration' - A list of custom filter values. In the Amazon QuickSight console, this
+-- filter type is called a custom filter list.
+--
+-- 'filterListConfiguration', 'categoryFilterConfiguration_filterListConfiguration' - A list of filter configurations. In the Amazon QuickSight console, this
+-- filter type is called a filter list.
+newCategoryFilterConfiguration ::
+  CategoryFilterConfiguration
+newCategoryFilterConfiguration =
+  CategoryFilterConfiguration'
+    { customFilterConfiguration =
+        Prelude.Nothing,
+      customFilterListConfiguration =
+        Prelude.Nothing,
+      filterListConfiguration = Prelude.Nothing
+    }
+
+-- | A custom filter that filters based on a single value. This filter can be
+-- partially matched.
+categoryFilterConfiguration_customFilterConfiguration :: Lens.Lens' CategoryFilterConfiguration (Prelude.Maybe CustomFilterConfiguration)
+categoryFilterConfiguration_customFilterConfiguration = Lens.lens (\CategoryFilterConfiguration' {customFilterConfiguration} -> customFilterConfiguration) (\s@CategoryFilterConfiguration' {} a -> s {customFilterConfiguration = a} :: CategoryFilterConfiguration)
+
+-- | A list of custom filter values. In the Amazon QuickSight console, this
+-- filter type is called a custom filter list.
+categoryFilterConfiguration_customFilterListConfiguration :: Lens.Lens' CategoryFilterConfiguration (Prelude.Maybe CustomFilterListConfiguration)
+categoryFilterConfiguration_customFilterListConfiguration = Lens.lens (\CategoryFilterConfiguration' {customFilterListConfiguration} -> customFilterListConfiguration) (\s@CategoryFilterConfiguration' {} a -> s {customFilterListConfiguration = a} :: CategoryFilterConfiguration)
+
+-- | A list of filter configurations. In the Amazon QuickSight console, this
+-- filter type is called a filter list.
+categoryFilterConfiguration_filterListConfiguration :: Lens.Lens' CategoryFilterConfiguration (Prelude.Maybe FilterListConfiguration)
+categoryFilterConfiguration_filterListConfiguration = Lens.lens (\CategoryFilterConfiguration' {filterListConfiguration} -> filterListConfiguration) (\s@CategoryFilterConfiguration' {} a -> s {filterListConfiguration = a} :: CategoryFilterConfiguration)
+
+instance Data.FromJSON CategoryFilterConfiguration where
+  parseJSON =
+    Data.withObject
+      "CategoryFilterConfiguration"
+      ( \x ->
+          CategoryFilterConfiguration'
+            Prelude.<$> (x Data..:? "CustomFilterConfiguration")
+            Prelude.<*> (x Data..:? "CustomFilterListConfiguration")
+            Prelude.<*> (x Data..:? "FilterListConfiguration")
+      )
+
+instance Prelude.Hashable CategoryFilterConfiguration where
+  hashWithSalt _salt CategoryFilterConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` customFilterConfiguration
+      `Prelude.hashWithSalt` customFilterListConfiguration
+      `Prelude.hashWithSalt` filterListConfiguration
+
+instance Prelude.NFData CategoryFilterConfiguration where
+  rnf CategoryFilterConfiguration' {..} =
+    Prelude.rnf customFilterConfiguration
+      `Prelude.seq` Prelude.rnf customFilterListConfiguration
+      `Prelude.seq` Prelude.rnf filterListConfiguration
+
+instance Data.ToJSON CategoryFilterConfiguration where
+  toJSON CategoryFilterConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomFilterConfiguration" Data..=)
+              Prelude.<$> customFilterConfiguration,
+            ("CustomFilterListConfiguration" Data..=)
+              Prelude.<$> customFilterListConfiguration,
+            ("FilterListConfiguration" Data..=)
+              Prelude.<$> filterListConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CategoryFilterMatchOperator.hs b/gen/Amazonka/QuickSight/Types/CategoryFilterMatchOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoryFilterMatchOperator.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CategoryFilterMatchOperator
+-- 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.QuickSight.Types.CategoryFilterMatchOperator
+  ( CategoryFilterMatchOperator
+      ( ..,
+        CategoryFilterMatchOperator_CONTAINS,
+        CategoryFilterMatchOperator_DOES_NOT_CONTAIN,
+        CategoryFilterMatchOperator_DOES_NOT_EQUAL,
+        CategoryFilterMatchOperator_ENDS_WITH,
+        CategoryFilterMatchOperator_EQUALS,
+        CategoryFilterMatchOperator_STARTS_WITH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CategoryFilterMatchOperator = CategoryFilterMatchOperator'
+  { fromCategoryFilterMatchOperator ::
+      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 CategoryFilterMatchOperator_CONTAINS :: CategoryFilterMatchOperator
+pattern CategoryFilterMatchOperator_CONTAINS = CategoryFilterMatchOperator' "CONTAINS"
+
+pattern CategoryFilterMatchOperator_DOES_NOT_CONTAIN :: CategoryFilterMatchOperator
+pattern CategoryFilterMatchOperator_DOES_NOT_CONTAIN = CategoryFilterMatchOperator' "DOES_NOT_CONTAIN"
+
+pattern CategoryFilterMatchOperator_DOES_NOT_EQUAL :: CategoryFilterMatchOperator
+pattern CategoryFilterMatchOperator_DOES_NOT_EQUAL = CategoryFilterMatchOperator' "DOES_NOT_EQUAL"
+
+pattern CategoryFilterMatchOperator_ENDS_WITH :: CategoryFilterMatchOperator
+pattern CategoryFilterMatchOperator_ENDS_WITH = CategoryFilterMatchOperator' "ENDS_WITH"
+
+pattern CategoryFilterMatchOperator_EQUALS :: CategoryFilterMatchOperator
+pattern CategoryFilterMatchOperator_EQUALS = CategoryFilterMatchOperator' "EQUALS"
+
+pattern CategoryFilterMatchOperator_STARTS_WITH :: CategoryFilterMatchOperator
+pattern CategoryFilterMatchOperator_STARTS_WITH = CategoryFilterMatchOperator' "STARTS_WITH"
+
+{-# COMPLETE
+  CategoryFilterMatchOperator_CONTAINS,
+  CategoryFilterMatchOperator_DOES_NOT_CONTAIN,
+  CategoryFilterMatchOperator_DOES_NOT_EQUAL,
+  CategoryFilterMatchOperator_ENDS_WITH,
+  CategoryFilterMatchOperator_EQUALS,
+  CategoryFilterMatchOperator_STARTS_WITH,
+  CategoryFilterMatchOperator'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/CategoryFilterSelectAllOptions.hs b/gen/Amazonka/QuickSight/Types/CategoryFilterSelectAllOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CategoryFilterSelectAllOptions.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.QuickSight.Types.CategoryFilterSelectAllOptions
+-- 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.QuickSight.Types.CategoryFilterSelectAllOptions
+  ( CategoryFilterSelectAllOptions
+      ( ..,
+        CategoryFilterSelectAllOptions_FILTER_ALL_VALUES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CategoryFilterSelectAllOptions = CategoryFilterSelectAllOptions'
+  { fromCategoryFilterSelectAllOptions ::
+      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 CategoryFilterSelectAllOptions_FILTER_ALL_VALUES :: CategoryFilterSelectAllOptions
+pattern CategoryFilterSelectAllOptions_FILTER_ALL_VALUES = CategoryFilterSelectAllOptions' "FILTER_ALL_VALUES"
+
+{-# COMPLETE
+  CategoryFilterSelectAllOptions_FILTER_ALL_VALUES,
+  CategoryFilterSelectAllOptions'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ChartAxisLabelOptions.hs b/gen/Amazonka/QuickSight/Types/ChartAxisLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ChartAxisLabelOptions.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ChartAxisLabelOptions
+-- 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.QuickSight.Types.ChartAxisLabelOptions 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.QuickSight.Types.AxisLabelOptions
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The label options for an axis on a chart.
+--
+-- /See:/ 'newChartAxisLabelOptions' smart constructor.
+data ChartAxisLabelOptions = ChartAxisLabelOptions'
+  { -- | The label options for a chart axis.
+    axisLabelOptions :: Prelude.Maybe [AxisLabelOptions],
+    -- | The visibility configuration of the sort icon on a chart\'s axis label.
+    sortIconVisibility :: Prelude.Maybe Visibility,
+    -- | The visibility of an axis label on a chart. Choose one of the following
+    -- options:
+    --
+    -- -   @VISIBLE@: Shows the axis.
+    --
+    -- -   @HIDDEN@: Hides the axis.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChartAxisLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'axisLabelOptions', 'chartAxisLabelOptions_axisLabelOptions' - The label options for a chart axis.
+--
+-- 'sortIconVisibility', 'chartAxisLabelOptions_sortIconVisibility' - The visibility configuration of the sort icon on a chart\'s axis label.
+--
+-- 'visibility', 'chartAxisLabelOptions_visibility' - The visibility of an axis label on a chart. Choose one of the following
+-- options:
+--
+-- -   @VISIBLE@: Shows the axis.
+--
+-- -   @HIDDEN@: Hides the axis.
+newChartAxisLabelOptions ::
+  ChartAxisLabelOptions
+newChartAxisLabelOptions =
+  ChartAxisLabelOptions'
+    { axisLabelOptions =
+        Prelude.Nothing,
+      sortIconVisibility = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The label options for a chart axis.
+chartAxisLabelOptions_axisLabelOptions :: Lens.Lens' ChartAxisLabelOptions (Prelude.Maybe [AxisLabelOptions])
+chartAxisLabelOptions_axisLabelOptions = Lens.lens (\ChartAxisLabelOptions' {axisLabelOptions} -> axisLabelOptions) (\s@ChartAxisLabelOptions' {} a -> s {axisLabelOptions = a} :: ChartAxisLabelOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The visibility configuration of the sort icon on a chart\'s axis label.
+chartAxisLabelOptions_sortIconVisibility :: Lens.Lens' ChartAxisLabelOptions (Prelude.Maybe Visibility)
+chartAxisLabelOptions_sortIconVisibility = Lens.lens (\ChartAxisLabelOptions' {sortIconVisibility} -> sortIconVisibility) (\s@ChartAxisLabelOptions' {} a -> s {sortIconVisibility = a} :: ChartAxisLabelOptions)
+
+-- | The visibility of an axis label on a chart. Choose one of the following
+-- options:
+--
+-- -   @VISIBLE@: Shows the axis.
+--
+-- -   @HIDDEN@: Hides the axis.
+chartAxisLabelOptions_visibility :: Lens.Lens' ChartAxisLabelOptions (Prelude.Maybe Visibility)
+chartAxisLabelOptions_visibility = Lens.lens (\ChartAxisLabelOptions' {visibility} -> visibility) (\s@ChartAxisLabelOptions' {} a -> s {visibility = a} :: ChartAxisLabelOptions)
+
+instance Data.FromJSON ChartAxisLabelOptions where
+  parseJSON =
+    Data.withObject
+      "ChartAxisLabelOptions"
+      ( \x ->
+          ChartAxisLabelOptions'
+            Prelude.<$> ( x
+                            Data..:? "AxisLabelOptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SortIconVisibility")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable ChartAxisLabelOptions where
+  hashWithSalt _salt ChartAxisLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` axisLabelOptions
+      `Prelude.hashWithSalt` sortIconVisibility
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData ChartAxisLabelOptions where
+  rnf ChartAxisLabelOptions' {..} =
+    Prelude.rnf axisLabelOptions
+      `Prelude.seq` Prelude.rnf sortIconVisibility
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON ChartAxisLabelOptions where
+  toJSON ChartAxisLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AxisLabelOptions" Data..=)
+              Prelude.<$> axisLabelOptions,
+            ("SortIconVisibility" Data..=)
+              Prelude.<$> sortIconVisibility,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ClusterMarker.hs b/gen/Amazonka/QuickSight/Types/ClusterMarker.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ClusterMarker.hs
@@ -0,0 +1,82 @@
+{-# 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.QuickSight.Types.ClusterMarker
+-- 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.QuickSight.Types.ClusterMarker 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.QuickSight.Types.SimpleClusterMarker
+
+-- | The cluster marker that is a part of the cluster marker configuration.
+--
+-- /See:/ 'newClusterMarker' smart constructor.
+data ClusterMarker = ClusterMarker'
+  { -- | The simple cluster marker of the cluster marker.
+    simpleClusterMarker :: Prelude.Maybe SimpleClusterMarker
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClusterMarker' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'simpleClusterMarker', 'clusterMarker_simpleClusterMarker' - The simple cluster marker of the cluster marker.
+newClusterMarker ::
+  ClusterMarker
+newClusterMarker =
+  ClusterMarker'
+    { simpleClusterMarker =
+        Prelude.Nothing
+    }
+
+-- | The simple cluster marker of the cluster marker.
+clusterMarker_simpleClusterMarker :: Lens.Lens' ClusterMarker (Prelude.Maybe SimpleClusterMarker)
+clusterMarker_simpleClusterMarker = Lens.lens (\ClusterMarker' {simpleClusterMarker} -> simpleClusterMarker) (\s@ClusterMarker' {} a -> s {simpleClusterMarker = a} :: ClusterMarker)
+
+instance Data.FromJSON ClusterMarker where
+  parseJSON =
+    Data.withObject
+      "ClusterMarker"
+      ( \x ->
+          ClusterMarker'
+            Prelude.<$> (x Data..:? "SimpleClusterMarker")
+      )
+
+instance Prelude.Hashable ClusterMarker where
+  hashWithSalt _salt ClusterMarker' {..} =
+    _salt `Prelude.hashWithSalt` simpleClusterMarker
+
+instance Prelude.NFData ClusterMarker where
+  rnf ClusterMarker' {..} =
+    Prelude.rnf simpleClusterMarker
+
+instance Data.ToJSON ClusterMarker where
+  toJSON ClusterMarker' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SimpleClusterMarker" Data..=)
+              Prelude.<$> simpleClusterMarker
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ClusterMarkerConfiguration.hs b/gen/Amazonka/QuickSight/Types/ClusterMarkerConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ClusterMarkerConfiguration.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ClusterMarkerConfiguration
+-- 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.QuickSight.Types.ClusterMarkerConfiguration 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.QuickSight.Types.ClusterMarker
+
+-- | The cluster marker configuration of the geospatial map selected point
+-- style.
+--
+-- /See:/ 'newClusterMarkerConfiguration' smart constructor.
+data ClusterMarkerConfiguration = ClusterMarkerConfiguration'
+  { -- | The cluster marker that is a part of the cluster marker configuration
+    clusterMarker :: Prelude.Maybe ClusterMarker
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClusterMarkerConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clusterMarker', 'clusterMarkerConfiguration_clusterMarker' - The cluster marker that is a part of the cluster marker configuration
+newClusterMarkerConfiguration ::
+  ClusterMarkerConfiguration
+newClusterMarkerConfiguration =
+  ClusterMarkerConfiguration'
+    { clusterMarker =
+        Prelude.Nothing
+    }
+
+-- | The cluster marker that is a part of the cluster marker configuration
+clusterMarkerConfiguration_clusterMarker :: Lens.Lens' ClusterMarkerConfiguration (Prelude.Maybe ClusterMarker)
+clusterMarkerConfiguration_clusterMarker = Lens.lens (\ClusterMarkerConfiguration' {clusterMarker} -> clusterMarker) (\s@ClusterMarkerConfiguration' {} a -> s {clusterMarker = a} :: ClusterMarkerConfiguration)
+
+instance Data.FromJSON ClusterMarkerConfiguration where
+  parseJSON =
+    Data.withObject
+      "ClusterMarkerConfiguration"
+      ( \x ->
+          ClusterMarkerConfiguration'
+            Prelude.<$> (x Data..:? "ClusterMarker")
+      )
+
+instance Prelude.Hashable ClusterMarkerConfiguration where
+  hashWithSalt _salt ClusterMarkerConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` clusterMarker
+
+instance Prelude.NFData ClusterMarkerConfiguration where
+  rnf ClusterMarkerConfiguration' {..} =
+    Prelude.rnf clusterMarker
+
+instance Data.ToJSON ClusterMarkerConfiguration where
+  toJSON ClusterMarkerConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClusterMarker" Data..=)
+              Prelude.<$> clusterMarker
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColorFillType.hs b/gen/Amazonka/QuickSight/Types/ColorFillType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColorFillType.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.QuickSight.Types.ColorFillType
+-- 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.QuickSight.Types.ColorFillType
+  ( ColorFillType
+      ( ..,
+        ColorFillType_DISCRETE,
+        ColorFillType_GRADIENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ColorFillType = ColorFillType'
+  { fromColorFillType ::
+      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 ColorFillType_DISCRETE :: ColorFillType
+pattern ColorFillType_DISCRETE = ColorFillType' "DISCRETE"
+
+pattern ColorFillType_GRADIENT :: ColorFillType
+pattern ColorFillType_GRADIENT = ColorFillType' "GRADIENT"
+
+{-# COMPLETE
+  ColorFillType_DISCRETE,
+  ColorFillType_GRADIENT,
+  ColorFillType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ColorScale.hs b/gen/Amazonka/QuickSight/Types/ColorScale.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColorScale.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.ColorScale
+-- 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.QuickSight.Types.ColorScale 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.QuickSight.Types.ColorFillType
+import Amazonka.QuickSight.Types.DataColor
+
+-- | Determines the color scale that is applied to the visual.
+--
+-- /See:/ 'newColorScale' smart constructor.
+data ColorScale = ColorScale'
+  { -- | Determines the color that is applied to null values.
+    nullValueColor :: Prelude.Maybe DataColor,
+    -- | Determines the list of colors that are applied to the visual.
+    colors :: Prelude.NonEmpty DataColor,
+    -- | Determines the color fill type.
+    colorFillType :: ColorFillType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColorScale' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nullValueColor', 'colorScale_nullValueColor' - Determines the color that is applied to null values.
+--
+-- 'colors', 'colorScale_colors' - Determines the list of colors that are applied to the visual.
+--
+-- 'colorFillType', 'colorScale_colorFillType' - Determines the color fill type.
+newColorScale ::
+  -- | 'colors'
+  Prelude.NonEmpty DataColor ->
+  -- | 'colorFillType'
+  ColorFillType ->
+  ColorScale
+newColorScale pColors_ pColorFillType_ =
+  ColorScale'
+    { nullValueColor = Prelude.Nothing,
+      colors = Lens.coerced Lens.# pColors_,
+      colorFillType = pColorFillType_
+    }
+
+-- | Determines the color that is applied to null values.
+colorScale_nullValueColor :: Lens.Lens' ColorScale (Prelude.Maybe DataColor)
+colorScale_nullValueColor = Lens.lens (\ColorScale' {nullValueColor} -> nullValueColor) (\s@ColorScale' {} a -> s {nullValueColor = a} :: ColorScale)
+
+-- | Determines the list of colors that are applied to the visual.
+colorScale_colors :: Lens.Lens' ColorScale (Prelude.NonEmpty DataColor)
+colorScale_colors = Lens.lens (\ColorScale' {colors} -> colors) (\s@ColorScale' {} a -> s {colors = a} :: ColorScale) Prelude.. Lens.coerced
+
+-- | Determines the color fill type.
+colorScale_colorFillType :: Lens.Lens' ColorScale ColorFillType
+colorScale_colorFillType = Lens.lens (\ColorScale' {colorFillType} -> colorFillType) (\s@ColorScale' {} a -> s {colorFillType = a} :: ColorScale)
+
+instance Data.FromJSON ColorScale where
+  parseJSON =
+    Data.withObject
+      "ColorScale"
+      ( \x ->
+          ColorScale'
+            Prelude.<$> (x Data..:? "NullValueColor")
+            Prelude.<*> (x Data..: "Colors")
+            Prelude.<*> (x Data..: "ColorFillType")
+      )
+
+instance Prelude.Hashable ColorScale where
+  hashWithSalt _salt ColorScale' {..} =
+    _salt
+      `Prelude.hashWithSalt` nullValueColor
+      `Prelude.hashWithSalt` colors
+      `Prelude.hashWithSalt` colorFillType
+
+instance Prelude.NFData ColorScale where
+  rnf ColorScale' {..} =
+    Prelude.rnf nullValueColor
+      `Prelude.seq` Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf colorFillType
+
+instance Data.ToJSON ColorScale where
+  toJSON ColorScale' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NullValueColor" Data..=)
+              Prelude.<$> nullValueColor,
+            Prelude.Just ("Colors" Data..= colors),
+            Prelude.Just
+              ("ColorFillType" Data..= colorFillType)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnConfiguration.hs b/gen/Amazonka/QuickSight/Types/ColumnConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnConfiguration.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnConfiguration
+-- 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.QuickSight.Types.ColumnConfiguration 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.ColumnRole
+import Amazonka.QuickSight.Types.FormatConfiguration
+
+-- | The general configuration of a column.
+--
+-- /See:/ 'newColumnConfiguration' smart constructor.
+data ColumnConfiguration = ColumnConfiguration'
+  { -- | The format configuration of a column.
+    formatConfiguration :: Prelude.Maybe FormatConfiguration,
+    -- | The role of the column.
+    role' :: Prelude.Maybe ColumnRole,
+    -- | The column.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatConfiguration', 'columnConfiguration_formatConfiguration' - The format configuration of a column.
+--
+-- 'role'', 'columnConfiguration_role' - The role of the column.
+--
+-- 'column', 'columnConfiguration_column' - The column.
+newColumnConfiguration ::
+  -- | 'column'
+  ColumnIdentifier ->
+  ColumnConfiguration
+newColumnConfiguration pColumn_ =
+  ColumnConfiguration'
+    { formatConfiguration =
+        Prelude.Nothing,
+      role' = Prelude.Nothing,
+      column = pColumn_
+    }
+
+-- | The format configuration of a column.
+columnConfiguration_formatConfiguration :: Lens.Lens' ColumnConfiguration (Prelude.Maybe FormatConfiguration)
+columnConfiguration_formatConfiguration = Lens.lens (\ColumnConfiguration' {formatConfiguration} -> formatConfiguration) (\s@ColumnConfiguration' {} a -> s {formatConfiguration = a} :: ColumnConfiguration)
+
+-- | The role of the column.
+columnConfiguration_role :: Lens.Lens' ColumnConfiguration (Prelude.Maybe ColumnRole)
+columnConfiguration_role = Lens.lens (\ColumnConfiguration' {role'} -> role') (\s@ColumnConfiguration' {} a -> s {role' = a} :: ColumnConfiguration)
+
+-- | The column.
+columnConfiguration_column :: Lens.Lens' ColumnConfiguration ColumnIdentifier
+columnConfiguration_column = Lens.lens (\ColumnConfiguration' {column} -> column) (\s@ColumnConfiguration' {} a -> s {column = a} :: ColumnConfiguration)
+
+instance Data.FromJSON ColumnConfiguration where
+  parseJSON =
+    Data.withObject
+      "ColumnConfiguration"
+      ( \x ->
+          ColumnConfiguration'
+            Prelude.<$> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..:? "Role")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable ColumnConfiguration where
+  hashWithSalt _salt ColumnConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData ColumnConfiguration where
+  rnf ColumnConfiguration' {..} =
+    Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON ColumnConfiguration where
+  toJSON ColumnConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            ("Role" Data..=) Prelude.<$> role',
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnDataType.hs b/gen/Amazonka/QuickSight/Types/ColumnDataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnDataType.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.QuickSight.Types.ColumnDataType
+-- 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.QuickSight.Types.ColumnDataType
+  ( ColumnDataType
+      ( ..,
+        ColumnDataType_DATETIME,
+        ColumnDataType_DECIMAL,
+        ColumnDataType_INTEGER,
+        ColumnDataType_STRING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ColumnDataType = ColumnDataType'
+  { fromColumnDataType ::
+      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 ColumnDataType_DATETIME :: ColumnDataType
+pattern ColumnDataType_DATETIME = ColumnDataType' "DATETIME"
+
+pattern ColumnDataType_DECIMAL :: ColumnDataType
+pattern ColumnDataType_DECIMAL = ColumnDataType' "DECIMAL"
+
+pattern ColumnDataType_INTEGER :: ColumnDataType
+pattern ColumnDataType_INTEGER = ColumnDataType' "INTEGER"
+
+pattern ColumnDataType_STRING :: ColumnDataType
+pattern ColumnDataType_STRING = ColumnDataType' "STRING"
+
+{-# COMPLETE
+  ColumnDataType_DATETIME,
+  ColumnDataType_DECIMAL,
+  ColumnDataType_INTEGER,
+  ColumnDataType_STRING,
+  ColumnDataType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ColumnDescription.hs b/gen/Amazonka/QuickSight/Types/ColumnDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnDescription.hs
@@ -0,0 +1,74 @@
+{-# 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.QuickSight.Types.ColumnDescription
+-- 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.QuickSight.Types.ColumnDescription 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
+
+-- | Metadata that contains a description for a column.
+--
+-- /See:/ 'newColumnDescription' smart constructor.
+data ColumnDescription = ColumnDescription'
+  { -- | The text of a description for a column.
+    text :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'text', 'columnDescription_text' - The text of a description for a column.
+newColumnDescription ::
+  ColumnDescription
+newColumnDescription =
+  ColumnDescription' {text = Prelude.Nothing}
+
+-- | The text of a description for a column.
+columnDescription_text :: Lens.Lens' ColumnDescription (Prelude.Maybe Prelude.Text)
+columnDescription_text = Lens.lens (\ColumnDescription' {text} -> text) (\s@ColumnDescription' {} a -> s {text = a} :: ColumnDescription)
+
+instance Data.FromJSON ColumnDescription where
+  parseJSON =
+    Data.withObject
+      "ColumnDescription"
+      ( \x ->
+          ColumnDescription' Prelude.<$> (x Data..:? "Text")
+      )
+
+instance Prelude.Hashable ColumnDescription where
+  hashWithSalt _salt ColumnDescription' {..} =
+    _salt `Prelude.hashWithSalt` text
+
+instance Prelude.NFData ColumnDescription where
+  rnf ColumnDescription' {..} = Prelude.rnf text
+
+instance Data.ToJSON ColumnDescription where
+  toJSON ColumnDescription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Text" Data..=) Prelude.<$> text]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnGroup.hs b/gen/Amazonka/QuickSight/Types/ColumnGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnGroup.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.QuickSight.Types.ColumnGroup
+-- 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.QuickSight.Types.ColumnGroup 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.QuickSight.Types.GeoSpatialColumnGroup
+
+-- | Groupings of columns that work together in certain Amazon QuickSight
+-- features. This is a variant type structure. For this structure to be
+-- valid, only one of the attributes can be non-null.
+--
+-- /See:/ 'newColumnGroup' smart constructor.
+data ColumnGroup = ColumnGroup'
+  { -- | Geospatial column group that denotes a hierarchy.
+    geoSpatialColumnGroup :: Prelude.Maybe GeoSpatialColumnGroup
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'geoSpatialColumnGroup', 'columnGroup_geoSpatialColumnGroup' - Geospatial column group that denotes a hierarchy.
+newColumnGroup ::
+  ColumnGroup
+newColumnGroup =
+  ColumnGroup'
+    { geoSpatialColumnGroup =
+        Prelude.Nothing
+    }
+
+-- | Geospatial column group that denotes a hierarchy.
+columnGroup_geoSpatialColumnGroup :: Lens.Lens' ColumnGroup (Prelude.Maybe GeoSpatialColumnGroup)
+columnGroup_geoSpatialColumnGroup = Lens.lens (\ColumnGroup' {geoSpatialColumnGroup} -> geoSpatialColumnGroup) (\s@ColumnGroup' {} a -> s {geoSpatialColumnGroup = a} :: ColumnGroup)
+
+instance Data.FromJSON ColumnGroup where
+  parseJSON =
+    Data.withObject
+      "ColumnGroup"
+      ( \x ->
+          ColumnGroup'
+            Prelude.<$> (x Data..:? "GeoSpatialColumnGroup")
+      )
+
+instance Prelude.Hashable ColumnGroup where
+  hashWithSalt _salt ColumnGroup' {..} =
+    _salt `Prelude.hashWithSalt` geoSpatialColumnGroup
+
+instance Prelude.NFData ColumnGroup where
+  rnf ColumnGroup' {..} =
+    Prelude.rnf geoSpatialColumnGroup
+
+instance Data.ToJSON ColumnGroup where
+  toJSON ColumnGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GeoSpatialColumnGroup" Data..=)
+              Prelude.<$> geoSpatialColumnGroup
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnGroupColumnSchema.hs b/gen/Amazonka/QuickSight/Types/ColumnGroupColumnSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnGroupColumnSchema.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.QuickSight.Types.ColumnGroupColumnSchema
+-- 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.QuickSight.Types.ColumnGroupColumnSchema 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 structure describing the name, data type, and geographic role of the
+-- columns.
+--
+-- /See:/ 'newColumnGroupColumnSchema' smart constructor.
+data ColumnGroupColumnSchema = ColumnGroupColumnSchema'
+  { -- | The name of the column group\'s column schema.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnGroupColumnSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'columnGroupColumnSchema_name' - The name of the column group\'s column schema.
+newColumnGroupColumnSchema ::
+  ColumnGroupColumnSchema
+newColumnGroupColumnSchema =
+  ColumnGroupColumnSchema' {name = Prelude.Nothing}
+
+-- | The name of the column group\'s column schema.
+columnGroupColumnSchema_name :: Lens.Lens' ColumnGroupColumnSchema (Prelude.Maybe Prelude.Text)
+columnGroupColumnSchema_name = Lens.lens (\ColumnGroupColumnSchema' {name} -> name) (\s@ColumnGroupColumnSchema' {} a -> s {name = a} :: ColumnGroupColumnSchema)
+
+instance Data.FromJSON ColumnGroupColumnSchema where
+  parseJSON =
+    Data.withObject
+      "ColumnGroupColumnSchema"
+      ( \x ->
+          ColumnGroupColumnSchema'
+            Prelude.<$> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable ColumnGroupColumnSchema where
+  hashWithSalt _salt ColumnGroupColumnSchema' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ColumnGroupColumnSchema where
+  rnf ColumnGroupColumnSchema' {..} = Prelude.rnf name
+
+instance Data.ToJSON ColumnGroupColumnSchema where
+  toJSON ColumnGroupColumnSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Name" Data..=) Prelude.<$> name]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnGroupSchema.hs b/gen/Amazonka/QuickSight/Types/ColumnGroupSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnGroupSchema.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnGroupSchema
+-- 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.QuickSight.Types.ColumnGroupSchema 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.QuickSight.Types.ColumnGroupColumnSchema
+
+-- | The column group schema.
+--
+-- /See:/ 'newColumnGroupSchema' smart constructor.
+data ColumnGroupSchema = ColumnGroupSchema'
+  { -- | A structure containing the list of schemas for column group columns.
+    columnGroupColumnSchemaList :: Prelude.Maybe [ColumnGroupColumnSchema],
+    -- | The name of the column group schema.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnGroupSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnGroupColumnSchemaList', 'columnGroupSchema_columnGroupColumnSchemaList' - A structure containing the list of schemas for column group columns.
+--
+-- 'name', 'columnGroupSchema_name' - The name of the column group schema.
+newColumnGroupSchema ::
+  ColumnGroupSchema
+newColumnGroupSchema =
+  ColumnGroupSchema'
+    { columnGroupColumnSchemaList =
+        Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | A structure containing the list of schemas for column group columns.
+columnGroupSchema_columnGroupColumnSchemaList :: Lens.Lens' ColumnGroupSchema (Prelude.Maybe [ColumnGroupColumnSchema])
+columnGroupSchema_columnGroupColumnSchemaList = Lens.lens (\ColumnGroupSchema' {columnGroupColumnSchemaList} -> columnGroupColumnSchemaList) (\s@ColumnGroupSchema' {} a -> s {columnGroupColumnSchemaList = a} :: ColumnGroupSchema) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the column group schema.
+columnGroupSchema_name :: Lens.Lens' ColumnGroupSchema (Prelude.Maybe Prelude.Text)
+columnGroupSchema_name = Lens.lens (\ColumnGroupSchema' {name} -> name) (\s@ColumnGroupSchema' {} a -> s {name = a} :: ColumnGroupSchema)
+
+instance Data.FromJSON ColumnGroupSchema where
+  parseJSON =
+    Data.withObject
+      "ColumnGroupSchema"
+      ( \x ->
+          ColumnGroupSchema'
+            Prelude.<$> ( x
+                            Data..:? "ColumnGroupColumnSchemaList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable ColumnGroupSchema where
+  hashWithSalt _salt ColumnGroupSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnGroupColumnSchemaList
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ColumnGroupSchema where
+  rnf ColumnGroupSchema' {..} =
+    Prelude.rnf columnGroupColumnSchemaList
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON ColumnGroupSchema where
+  toJSON ColumnGroupSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnGroupColumnSchemaList" Data..=)
+              Prelude.<$> columnGroupColumnSchemaList,
+            ("Name" Data..=) Prelude.<$> name
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnHierarchy.hs b/gen/Amazonka/QuickSight/Types/ColumnHierarchy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnHierarchy.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnHierarchy
+-- 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.QuickSight.Types.ColumnHierarchy 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.QuickSight.Types.DateTimeHierarchy
+import Amazonka.QuickSight.Types.ExplicitHierarchy
+import Amazonka.QuickSight.Types.PredefinedHierarchy
+
+-- | The option that determines the hierarchy of the fields for a visual
+-- element.
+--
+-- /See:/ 'newColumnHierarchy' smart constructor.
+data ColumnHierarchy = ColumnHierarchy'
+  { -- | The option that determines the hierarchy of any @DateTime@ fields.
+    dateTimeHierarchy :: Prelude.Maybe DateTimeHierarchy,
+    -- | The option that determines the hierarchy of the fields that are built
+    -- within a visual\'s field wells. These fields can\'t be duplicated to
+    -- other visuals.
+    explicitHierarchy :: Prelude.Maybe ExplicitHierarchy,
+    -- | The option that determines the hierarchy of the fields that are defined
+    -- during data preparation. These fields are available to use in any
+    -- analysis that uses the data source.
+    predefinedHierarchy :: Prelude.Maybe PredefinedHierarchy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnHierarchy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeHierarchy', 'columnHierarchy_dateTimeHierarchy' - The option that determines the hierarchy of any @DateTime@ fields.
+--
+-- 'explicitHierarchy', 'columnHierarchy_explicitHierarchy' - The option that determines the hierarchy of the fields that are built
+-- within a visual\'s field wells. These fields can\'t be duplicated to
+-- other visuals.
+--
+-- 'predefinedHierarchy', 'columnHierarchy_predefinedHierarchy' - The option that determines the hierarchy of the fields that are defined
+-- during data preparation. These fields are available to use in any
+-- analysis that uses the data source.
+newColumnHierarchy ::
+  ColumnHierarchy
+newColumnHierarchy =
+  ColumnHierarchy'
+    { dateTimeHierarchy =
+        Prelude.Nothing,
+      explicitHierarchy = Prelude.Nothing,
+      predefinedHierarchy = Prelude.Nothing
+    }
+
+-- | The option that determines the hierarchy of any @DateTime@ fields.
+columnHierarchy_dateTimeHierarchy :: Lens.Lens' ColumnHierarchy (Prelude.Maybe DateTimeHierarchy)
+columnHierarchy_dateTimeHierarchy = Lens.lens (\ColumnHierarchy' {dateTimeHierarchy} -> dateTimeHierarchy) (\s@ColumnHierarchy' {} a -> s {dateTimeHierarchy = a} :: ColumnHierarchy)
+
+-- | The option that determines the hierarchy of the fields that are built
+-- within a visual\'s field wells. These fields can\'t be duplicated to
+-- other visuals.
+columnHierarchy_explicitHierarchy :: Lens.Lens' ColumnHierarchy (Prelude.Maybe ExplicitHierarchy)
+columnHierarchy_explicitHierarchy = Lens.lens (\ColumnHierarchy' {explicitHierarchy} -> explicitHierarchy) (\s@ColumnHierarchy' {} a -> s {explicitHierarchy = a} :: ColumnHierarchy)
+
+-- | The option that determines the hierarchy of the fields that are defined
+-- during data preparation. These fields are available to use in any
+-- analysis that uses the data source.
+columnHierarchy_predefinedHierarchy :: Lens.Lens' ColumnHierarchy (Prelude.Maybe PredefinedHierarchy)
+columnHierarchy_predefinedHierarchy = Lens.lens (\ColumnHierarchy' {predefinedHierarchy} -> predefinedHierarchy) (\s@ColumnHierarchy' {} a -> s {predefinedHierarchy = a} :: ColumnHierarchy)
+
+instance Data.FromJSON ColumnHierarchy where
+  parseJSON =
+    Data.withObject
+      "ColumnHierarchy"
+      ( \x ->
+          ColumnHierarchy'
+            Prelude.<$> (x Data..:? "DateTimeHierarchy")
+            Prelude.<*> (x Data..:? "ExplicitHierarchy")
+            Prelude.<*> (x Data..:? "PredefinedHierarchy")
+      )
+
+instance Prelude.Hashable ColumnHierarchy where
+  hashWithSalt _salt ColumnHierarchy' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimeHierarchy
+      `Prelude.hashWithSalt` explicitHierarchy
+      `Prelude.hashWithSalt` predefinedHierarchy
+
+instance Prelude.NFData ColumnHierarchy where
+  rnf ColumnHierarchy' {..} =
+    Prelude.rnf dateTimeHierarchy
+      `Prelude.seq` Prelude.rnf explicitHierarchy
+      `Prelude.seq` Prelude.rnf predefinedHierarchy
+
+instance Data.ToJSON ColumnHierarchy where
+  toJSON ColumnHierarchy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeHierarchy" Data..=)
+              Prelude.<$> dateTimeHierarchy,
+            ("ExplicitHierarchy" Data..=)
+              Prelude.<$> explicitHierarchy,
+            ("PredefinedHierarchy" Data..=)
+              Prelude.<$> predefinedHierarchy
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnIdentifier.hs b/gen/Amazonka/QuickSight/Types/ColumnIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnIdentifier.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnIdentifier
+-- 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.QuickSight.Types.ColumnIdentifier 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 column of a data set.
+--
+-- /See:/ 'newColumnIdentifier' smart constructor.
+data ColumnIdentifier = ColumnIdentifier'
+  { -- | The data set that the column belongs to.
+    dataSetIdentifier :: Prelude.Text,
+    -- | The name of the column.
+    columnName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetIdentifier', 'columnIdentifier_dataSetIdentifier' - The data set that the column belongs to.
+--
+-- 'columnName', 'columnIdentifier_columnName' - The name of the column.
+newColumnIdentifier ::
+  -- | 'dataSetIdentifier'
+  Prelude.Text ->
+  -- | 'columnName'
+  Prelude.Text ->
+  ColumnIdentifier
+newColumnIdentifier pDataSetIdentifier_ pColumnName_ =
+  ColumnIdentifier'
+    { dataSetIdentifier =
+        pDataSetIdentifier_,
+      columnName = pColumnName_
+    }
+
+-- | The data set that the column belongs to.
+columnIdentifier_dataSetIdentifier :: Lens.Lens' ColumnIdentifier Prelude.Text
+columnIdentifier_dataSetIdentifier = Lens.lens (\ColumnIdentifier' {dataSetIdentifier} -> dataSetIdentifier) (\s@ColumnIdentifier' {} a -> s {dataSetIdentifier = a} :: ColumnIdentifier)
+
+-- | The name of the column.
+columnIdentifier_columnName :: Lens.Lens' ColumnIdentifier Prelude.Text
+columnIdentifier_columnName = Lens.lens (\ColumnIdentifier' {columnName} -> columnName) (\s@ColumnIdentifier' {} a -> s {columnName = a} :: ColumnIdentifier)
+
+instance Data.FromJSON ColumnIdentifier where
+  parseJSON =
+    Data.withObject
+      "ColumnIdentifier"
+      ( \x ->
+          ColumnIdentifier'
+            Prelude.<$> (x Data..: "DataSetIdentifier")
+            Prelude.<*> (x Data..: "ColumnName")
+      )
+
+instance Prelude.Hashable ColumnIdentifier where
+  hashWithSalt _salt ColumnIdentifier' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetIdentifier
+      `Prelude.hashWithSalt` columnName
+
+instance Prelude.NFData ColumnIdentifier where
+  rnf ColumnIdentifier' {..} =
+    Prelude.rnf dataSetIdentifier
+      `Prelude.seq` Prelude.rnf columnName
+
+instance Data.ToJSON ColumnIdentifier where
+  toJSON ColumnIdentifier' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataSetIdentifier" Data..= dataSetIdentifier),
+            Prelude.Just ("ColumnName" Data..= columnName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnLevelPermissionRule.hs b/gen/Amazonka/QuickSight/Types/ColumnLevelPermissionRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnLevelPermissionRule.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnLevelPermissionRule
+-- 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.QuickSight.Types.ColumnLevelPermissionRule 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 rule defined to grant access on one or more restricted columns. Each
+-- dataset can have multiple rules. To create a restricted column, you add
+-- it to one or more rules. Each rule must contain at least one column and
+-- at least one user or group. To be able to see a restricted column, a
+-- user or group needs to be added to a rule for that column.
+--
+-- /See:/ 'newColumnLevelPermissionRule' smart constructor.
+data ColumnLevelPermissionRule = ColumnLevelPermissionRule'
+  { -- | An array of column names.
+    columnNames :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or
+    -- groups.
+    principals :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnLevelPermissionRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnNames', 'columnLevelPermissionRule_columnNames' - An array of column names.
+--
+-- 'principals', 'columnLevelPermissionRule_principals' - An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or
+-- groups.
+newColumnLevelPermissionRule ::
+  ColumnLevelPermissionRule
+newColumnLevelPermissionRule =
+  ColumnLevelPermissionRule'
+    { columnNames =
+        Prelude.Nothing,
+      principals = Prelude.Nothing
+    }
+
+-- | An array of column names.
+columnLevelPermissionRule_columnNames :: Lens.Lens' ColumnLevelPermissionRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+columnLevelPermissionRule_columnNames = Lens.lens (\ColumnLevelPermissionRule' {columnNames} -> columnNames) (\s@ColumnLevelPermissionRule' {} a -> s {columnNames = a} :: ColumnLevelPermissionRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or
+-- groups.
+columnLevelPermissionRule_principals :: Lens.Lens' ColumnLevelPermissionRule (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+columnLevelPermissionRule_principals = Lens.lens (\ColumnLevelPermissionRule' {principals} -> principals) (\s@ColumnLevelPermissionRule' {} a -> s {principals = a} :: ColumnLevelPermissionRule) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ColumnLevelPermissionRule where
+  parseJSON =
+    Data.withObject
+      "ColumnLevelPermissionRule"
+      ( \x ->
+          ColumnLevelPermissionRule'
+            Prelude.<$> (x Data..:? "ColumnNames")
+            Prelude.<*> (x Data..:? "Principals")
+      )
+
+instance Prelude.Hashable ColumnLevelPermissionRule where
+  hashWithSalt _salt ColumnLevelPermissionRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnNames
+      `Prelude.hashWithSalt` principals
+
+instance Prelude.NFData ColumnLevelPermissionRule where
+  rnf ColumnLevelPermissionRule' {..} =
+    Prelude.rnf columnNames
+      `Prelude.seq` Prelude.rnf principals
+
+instance Data.ToJSON ColumnLevelPermissionRule where
+  toJSON ColumnLevelPermissionRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnNames" Data..=) Prelude.<$> columnNames,
+            ("Principals" Data..=) Prelude.<$> principals
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnRole.hs b/gen/Amazonka/QuickSight/Types/ColumnRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnRole.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.QuickSight.Types.ColumnRole
+-- 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.QuickSight.Types.ColumnRole
+  ( ColumnRole
+      ( ..,
+        ColumnRole_DIMENSION,
+        ColumnRole_MEASURE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ColumnRole = ColumnRole'
+  { fromColumnRole ::
+      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 ColumnRole_DIMENSION :: ColumnRole
+pattern ColumnRole_DIMENSION = ColumnRole' "DIMENSION"
+
+pattern ColumnRole_MEASURE :: ColumnRole
+pattern ColumnRole_MEASURE = ColumnRole' "MEASURE"
+
+{-# COMPLETE
+  ColumnRole_DIMENSION,
+  ColumnRole_MEASURE,
+  ColumnRole'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ColumnSchema.hs b/gen/Amazonka/QuickSight/Types/ColumnSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnSchema.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnSchema
+-- 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.QuickSight.Types.ColumnSchema 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 column schema.
+--
+-- /See:/ 'newColumnSchema' smart constructor.
+data ColumnSchema = ColumnSchema'
+  { -- | The data type of the column schema.
+    dataType :: Prelude.Maybe Prelude.Text,
+    -- | The geographic role of the column schema.
+    geographicRole :: Prelude.Maybe Prelude.Text,
+    -- | The name of the column schema.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataType', 'columnSchema_dataType' - The data type of the column schema.
+--
+-- 'geographicRole', 'columnSchema_geographicRole' - The geographic role of the column schema.
+--
+-- 'name', 'columnSchema_name' - The name of the column schema.
+newColumnSchema ::
+  ColumnSchema
+newColumnSchema =
+  ColumnSchema'
+    { dataType = Prelude.Nothing,
+      geographicRole = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The data type of the column schema.
+columnSchema_dataType :: Lens.Lens' ColumnSchema (Prelude.Maybe Prelude.Text)
+columnSchema_dataType = Lens.lens (\ColumnSchema' {dataType} -> dataType) (\s@ColumnSchema' {} a -> s {dataType = a} :: ColumnSchema)
+
+-- | The geographic role of the column schema.
+columnSchema_geographicRole :: Lens.Lens' ColumnSchema (Prelude.Maybe Prelude.Text)
+columnSchema_geographicRole = Lens.lens (\ColumnSchema' {geographicRole} -> geographicRole) (\s@ColumnSchema' {} a -> s {geographicRole = a} :: ColumnSchema)
+
+-- | The name of the column schema.
+columnSchema_name :: Lens.Lens' ColumnSchema (Prelude.Maybe Prelude.Text)
+columnSchema_name = Lens.lens (\ColumnSchema' {name} -> name) (\s@ColumnSchema' {} a -> s {name = a} :: ColumnSchema)
+
+instance Data.FromJSON ColumnSchema where
+  parseJSON =
+    Data.withObject
+      "ColumnSchema"
+      ( \x ->
+          ColumnSchema'
+            Prelude.<$> (x Data..:? "DataType")
+            Prelude.<*> (x Data..:? "GeographicRole")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable ColumnSchema where
+  hashWithSalt _salt ColumnSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataType
+      `Prelude.hashWithSalt` geographicRole
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ColumnSchema where
+  rnf ColumnSchema' {..} =
+    Prelude.rnf dataType
+      `Prelude.seq` Prelude.rnf geographicRole
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON ColumnSchema where
+  toJSON ColumnSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataType" Data..=) Prelude.<$> dataType,
+            ("GeographicRole" Data..=)
+              Prelude.<$> geographicRole,
+            ("Name" Data..=) Prelude.<$> name
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnSort.hs b/gen/Amazonka/QuickSight/Types/ColumnSort.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnSort.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnSort
+-- 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.QuickSight.Types.ColumnSort 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.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.SortDirection
+
+-- | The sort configuration for a column that is not used in a field well.
+--
+-- /See:/ 'newColumnSort' smart constructor.
+data ColumnSort = ColumnSort'
+  { -- | The aggregation function that is defined in the column sort.
+    aggregationFunction :: Prelude.Maybe AggregationFunction,
+    sortBy :: ColumnIdentifier,
+    -- | The sort direction.
+    direction :: SortDirection
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnSort' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationFunction', 'columnSort_aggregationFunction' - The aggregation function that is defined in the column sort.
+--
+-- 'sortBy', 'columnSort_sortBy' - Undocumented member.
+--
+-- 'direction', 'columnSort_direction' - The sort direction.
+newColumnSort ::
+  -- | 'sortBy'
+  ColumnIdentifier ->
+  -- | 'direction'
+  SortDirection ->
+  ColumnSort
+newColumnSort pSortBy_ pDirection_ =
+  ColumnSort'
+    { aggregationFunction = Prelude.Nothing,
+      sortBy = pSortBy_,
+      direction = pDirection_
+    }
+
+-- | The aggregation function that is defined in the column sort.
+columnSort_aggregationFunction :: Lens.Lens' ColumnSort (Prelude.Maybe AggregationFunction)
+columnSort_aggregationFunction = Lens.lens (\ColumnSort' {aggregationFunction} -> aggregationFunction) (\s@ColumnSort' {} a -> s {aggregationFunction = a} :: ColumnSort)
+
+-- | Undocumented member.
+columnSort_sortBy :: Lens.Lens' ColumnSort ColumnIdentifier
+columnSort_sortBy = Lens.lens (\ColumnSort' {sortBy} -> sortBy) (\s@ColumnSort' {} a -> s {sortBy = a} :: ColumnSort)
+
+-- | The sort direction.
+columnSort_direction :: Lens.Lens' ColumnSort SortDirection
+columnSort_direction = Lens.lens (\ColumnSort' {direction} -> direction) (\s@ColumnSort' {} a -> s {direction = a} :: ColumnSort)
+
+instance Data.FromJSON ColumnSort where
+  parseJSON =
+    Data.withObject
+      "ColumnSort"
+      ( \x ->
+          ColumnSort'
+            Prelude.<$> (x Data..:? "AggregationFunction")
+            Prelude.<*> (x Data..: "SortBy")
+            Prelude.<*> (x Data..: "Direction")
+      )
+
+instance Prelude.Hashable ColumnSort where
+  hashWithSalt _salt ColumnSort' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationFunction
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` direction
+
+instance Prelude.NFData ColumnSort where
+  rnf ColumnSort' {..} =
+    Prelude.rnf aggregationFunction
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf direction
+
+instance Data.ToJSON ColumnSort where
+  toJSON ColumnSort' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationFunction" Data..=)
+              Prelude.<$> aggregationFunction,
+            Prelude.Just ("SortBy" Data..= sortBy),
+            Prelude.Just ("Direction" Data..= direction)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnTag.hs b/gen/Amazonka/QuickSight/Types/ColumnTag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnTag.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.QuickSight.Types.ColumnTag
+-- 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.QuickSight.Types.ColumnTag 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.QuickSight.Types.ColumnDescription
+import Amazonka.QuickSight.Types.GeoSpatialDataRole
+
+-- | A tag for a column in a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_TagColumnOperation.html TagColumnOperation>@ @
+-- structure. This is a variant type structure. For this structure to be
+-- valid, only one of the attributes can be non-null.
+--
+-- /See:/ 'newColumnTag' smart constructor.
+data ColumnTag = ColumnTag'
+  { -- | A description for a column.
+    columnDescription :: Prelude.Maybe ColumnDescription,
+    -- | A geospatial role for a column.
+    columnGeographicRole :: Prelude.Maybe GeoSpatialDataRole
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnTag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnDescription', 'columnTag_columnDescription' - A description for a column.
+--
+-- 'columnGeographicRole', 'columnTag_columnGeographicRole' - A geospatial role for a column.
+newColumnTag ::
+  ColumnTag
+newColumnTag =
+  ColumnTag'
+    { columnDescription = Prelude.Nothing,
+      columnGeographicRole = Prelude.Nothing
+    }
+
+-- | A description for a column.
+columnTag_columnDescription :: Lens.Lens' ColumnTag (Prelude.Maybe ColumnDescription)
+columnTag_columnDescription = Lens.lens (\ColumnTag' {columnDescription} -> columnDescription) (\s@ColumnTag' {} a -> s {columnDescription = a} :: ColumnTag)
+
+-- | A geospatial role for a column.
+columnTag_columnGeographicRole :: Lens.Lens' ColumnTag (Prelude.Maybe GeoSpatialDataRole)
+columnTag_columnGeographicRole = Lens.lens (\ColumnTag' {columnGeographicRole} -> columnGeographicRole) (\s@ColumnTag' {} a -> s {columnGeographicRole = a} :: ColumnTag)
+
+instance Data.FromJSON ColumnTag where
+  parseJSON =
+    Data.withObject
+      "ColumnTag"
+      ( \x ->
+          ColumnTag'
+            Prelude.<$> (x Data..:? "ColumnDescription")
+            Prelude.<*> (x Data..:? "ColumnGeographicRole")
+      )
+
+instance Prelude.Hashable ColumnTag where
+  hashWithSalt _salt ColumnTag' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnDescription
+      `Prelude.hashWithSalt` columnGeographicRole
+
+instance Prelude.NFData ColumnTag where
+  rnf ColumnTag' {..} =
+    Prelude.rnf columnDescription
+      `Prelude.seq` Prelude.rnf columnGeographicRole
+
+instance Data.ToJSON ColumnTag where
+  toJSON ColumnTag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnDescription" Data..=)
+              Prelude.<$> columnDescription,
+            ("ColumnGeographicRole" Data..=)
+              Prelude.<$> columnGeographicRole
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ColumnTagName.hs b/gen/Amazonka/QuickSight/Types/ColumnTagName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnTagName.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.QuickSight.Types.ColumnTagName
+-- 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.QuickSight.Types.ColumnTagName
+  ( ColumnTagName
+      ( ..,
+        ColumnTagName_COLUMN_DESCRIPTION,
+        ColumnTagName_COLUMN_GEOGRAPHIC_ROLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ColumnTagName = ColumnTagName'
+  { fromColumnTagName ::
+      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 ColumnTagName_COLUMN_DESCRIPTION :: ColumnTagName
+pattern ColumnTagName_COLUMN_DESCRIPTION = ColumnTagName' "COLUMN_DESCRIPTION"
+
+pattern ColumnTagName_COLUMN_GEOGRAPHIC_ROLE :: ColumnTagName
+pattern ColumnTagName_COLUMN_GEOGRAPHIC_ROLE = ColumnTagName' "COLUMN_GEOGRAPHIC_ROLE"
+
+{-# COMPLETE
+  ColumnTagName_COLUMN_DESCRIPTION,
+  ColumnTagName_COLUMN_GEOGRAPHIC_ROLE,
+  ColumnTagName'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ColumnTooltipItem.hs b/gen/Amazonka/QuickSight/Types/ColumnTooltipItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ColumnTooltipItem.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ColumnTooltipItem
+-- 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.QuickSight.Types.ColumnTooltipItem 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.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The tooltip item for the columns that are not part of a field well.
+--
+-- /See:/ 'newColumnTooltipItem' smart constructor.
+data ColumnTooltipItem = ColumnTooltipItem'
+  { -- | The aggregation function of the column tooltip item.
+    aggregation :: Prelude.Maybe AggregationFunction,
+    -- | The label of the tooltip item.
+    label :: Prelude.Maybe Prelude.Text,
+    -- | The visibility of the tooltip item.
+    visibility :: Prelude.Maybe Visibility,
+    -- | The target column of the tooltip item.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColumnTooltipItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregation', 'columnTooltipItem_aggregation' - The aggregation function of the column tooltip item.
+--
+-- 'label', 'columnTooltipItem_label' - The label of the tooltip item.
+--
+-- 'visibility', 'columnTooltipItem_visibility' - The visibility of the tooltip item.
+--
+-- 'column', 'columnTooltipItem_column' - The target column of the tooltip item.
+newColumnTooltipItem ::
+  -- | 'column'
+  ColumnIdentifier ->
+  ColumnTooltipItem
+newColumnTooltipItem pColumn_ =
+  ColumnTooltipItem'
+    { aggregation = Prelude.Nothing,
+      label = Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      column = pColumn_
+    }
+
+-- | The aggregation function of the column tooltip item.
+columnTooltipItem_aggregation :: Lens.Lens' ColumnTooltipItem (Prelude.Maybe AggregationFunction)
+columnTooltipItem_aggregation = Lens.lens (\ColumnTooltipItem' {aggregation} -> aggregation) (\s@ColumnTooltipItem' {} a -> s {aggregation = a} :: ColumnTooltipItem)
+
+-- | The label of the tooltip item.
+columnTooltipItem_label :: Lens.Lens' ColumnTooltipItem (Prelude.Maybe Prelude.Text)
+columnTooltipItem_label = Lens.lens (\ColumnTooltipItem' {label} -> label) (\s@ColumnTooltipItem' {} a -> s {label = a} :: ColumnTooltipItem)
+
+-- | The visibility of the tooltip item.
+columnTooltipItem_visibility :: Lens.Lens' ColumnTooltipItem (Prelude.Maybe Visibility)
+columnTooltipItem_visibility = Lens.lens (\ColumnTooltipItem' {visibility} -> visibility) (\s@ColumnTooltipItem' {} a -> s {visibility = a} :: ColumnTooltipItem)
+
+-- | The target column of the tooltip item.
+columnTooltipItem_column :: Lens.Lens' ColumnTooltipItem ColumnIdentifier
+columnTooltipItem_column = Lens.lens (\ColumnTooltipItem' {column} -> column) (\s@ColumnTooltipItem' {} a -> s {column = a} :: ColumnTooltipItem)
+
+instance Data.FromJSON ColumnTooltipItem where
+  parseJSON =
+    Data.withObject
+      "ColumnTooltipItem"
+      ( \x ->
+          ColumnTooltipItem'
+            Prelude.<$> (x Data..:? "Aggregation")
+            Prelude.<*> (x Data..:? "Label")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable ColumnTooltipItem where
+  hashWithSalt _salt ColumnTooltipItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregation
+      `Prelude.hashWithSalt` label
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData ColumnTooltipItem where
+  rnf ColumnTooltipItem' {..} =
+    Prelude.rnf aggregation
+      `Prelude.seq` Prelude.rnf label
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON ColumnTooltipItem where
+  toJSON ColumnTooltipItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Aggregation" Data..=) Prelude.<$> aggregation,
+            ("Label" Data..=) Prelude.<$> label,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComboChartAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/ComboChartAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComboChartAggregatedFieldWells.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.QuickSight.Types.ComboChartAggregatedFieldWells
+-- 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.QuickSight.Types.ComboChartAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field wells of a combo chart.
+--
+-- /See:/ 'newComboChartAggregatedFieldWells' smart constructor.
+data ComboChartAggregatedFieldWells = ComboChartAggregatedFieldWells'
+  { -- | The aggregated @BarValues@ field well of a combo chart.
+    barValues :: Prelude.Maybe [MeasureField],
+    -- | The aggregated category field wells of a combo chart.
+    category :: Prelude.Maybe [DimensionField],
+    -- | The aggregated colors field well of a combo chart.
+    colors :: Prelude.Maybe [DimensionField],
+    -- | The aggregated @LineValues@ field well of a combo chart.
+    lineValues :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComboChartAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'barValues', 'comboChartAggregatedFieldWells_barValues' - The aggregated @BarValues@ field well of a combo chart.
+--
+-- 'category', 'comboChartAggregatedFieldWells_category' - The aggregated category field wells of a combo chart.
+--
+-- 'colors', 'comboChartAggregatedFieldWells_colors' - The aggregated colors field well of a combo chart.
+--
+-- 'lineValues', 'comboChartAggregatedFieldWells_lineValues' - The aggregated @LineValues@ field well of a combo chart.
+newComboChartAggregatedFieldWells ::
+  ComboChartAggregatedFieldWells
+newComboChartAggregatedFieldWells =
+  ComboChartAggregatedFieldWells'
+    { barValues =
+        Prelude.Nothing,
+      category = Prelude.Nothing,
+      colors = Prelude.Nothing,
+      lineValues = Prelude.Nothing
+    }
+
+-- | The aggregated @BarValues@ field well of a combo chart.
+comboChartAggregatedFieldWells_barValues :: Lens.Lens' ComboChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+comboChartAggregatedFieldWells_barValues = Lens.lens (\ComboChartAggregatedFieldWells' {barValues} -> barValues) (\s@ComboChartAggregatedFieldWells' {} a -> s {barValues = a} :: ComboChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The aggregated category field wells of a combo chart.
+comboChartAggregatedFieldWells_category :: Lens.Lens' ComboChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+comboChartAggregatedFieldWells_category = Lens.lens (\ComboChartAggregatedFieldWells' {category} -> category) (\s@ComboChartAggregatedFieldWells' {} a -> s {category = a} :: ComboChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The aggregated colors field well of a combo chart.
+comboChartAggregatedFieldWells_colors :: Lens.Lens' ComboChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+comboChartAggregatedFieldWells_colors = Lens.lens (\ComboChartAggregatedFieldWells' {colors} -> colors) (\s@ComboChartAggregatedFieldWells' {} a -> s {colors = a} :: ComboChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The aggregated @LineValues@ field well of a combo chart.
+comboChartAggregatedFieldWells_lineValues :: Lens.Lens' ComboChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+comboChartAggregatedFieldWells_lineValues = Lens.lens (\ComboChartAggregatedFieldWells' {lineValues} -> lineValues) (\s@ComboChartAggregatedFieldWells' {} a -> s {lineValues = a} :: ComboChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ComboChartAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "ComboChartAggregatedFieldWells"
+      ( \x ->
+          ComboChartAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "BarValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Category" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Colors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LineValues" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    ComboChartAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    ComboChartAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` barValues
+        `Prelude.hashWithSalt` category
+        `Prelude.hashWithSalt` colors
+        `Prelude.hashWithSalt` lineValues
+
+instance
+  Prelude.NFData
+    ComboChartAggregatedFieldWells
+  where
+  rnf ComboChartAggregatedFieldWells' {..} =
+    Prelude.rnf barValues
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf lineValues
+
+instance Data.ToJSON ComboChartAggregatedFieldWells where
+  toJSON ComboChartAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BarValues" Data..=) Prelude.<$> barValues,
+            ("Category" Data..=) Prelude.<$> category,
+            ("Colors" Data..=) Prelude.<$> colors,
+            ("LineValues" Data..=) Prelude.<$> lineValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComboChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/ComboChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComboChartConfiguration.hs
@@ -0,0 +1,350 @@
+{-# 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.QuickSight.Types.ComboChartConfiguration
+-- 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.QuickSight.Types.ComboChartConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.BarsArrangement
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ComboChartFieldWells
+import Amazonka.QuickSight.Types.ComboChartSortConfiguration
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.ReferenceLine
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a @ComboChartVisual@.
+--
+-- /See:/ 'newComboChartConfiguration' smart constructor.
+data ComboChartConfiguration = ComboChartConfiguration'
+  { -- | The options that determine if visual data labels are displayed.
+    --
+    -- The data label options for a bar in a combo chart.
+    barDataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | Determines the bar arrangement in a combo chart. The following are valid
+    -- values in this structure:
+    --
+    -- -   @CLUSTERED@: For clustered bar combo charts.
+    --
+    -- -   @STACKED@: For stacked bar combo charts.
+    --
+    -- -   @STACKED_PERCENT@: Do not use. If you use this value, the operation
+    --     returns a validation error.
+    barsArrangement :: Prelude.Maybe BarsArrangement,
+    -- | The category axis of a combo chart.
+    categoryAxis :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility, and sort icon
+    -- visibility) of a combo chart category (group\/color) field well.
+    categoryLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The label options (label text, label visibility, and sort icon
+    -- visibility) of a combo chart\'s color field well.
+    colorLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe ComboChartFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The options that determine if visual data labels are displayed.
+    --
+    -- The data label options for a line in a combo chart.
+    lineDataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The label display options (grid line, range, scale, and axis step) of a
+    -- combo chart\'s primary y-axis (bar) field well.
+    primaryYAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility, and sort icon
+    -- visibility) of a combo chart\'s primary y-axis (bar) field well.
+    primaryYAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The reference line setup of the visual.
+    referenceLines :: Prelude.Maybe [ReferenceLine],
+    -- | The label display options (grid line, range, scale, axis step) of a
+    -- combo chart\'s secondary y-axis (line) field well.
+    secondaryYAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility, and sort icon
+    -- visibility) of a combo chart\'s secondary y-axis(line) field well.
+    secondaryYAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The sort configuration of a @ComboChartVisual@.
+    sortConfiguration :: Prelude.Maybe ComboChartSortConfiguration,
+    -- | The legend display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The palette (chart color) display setup of the visual.
+    visualPalette :: Prelude.Maybe VisualPalette
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComboChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'barDataLabels', 'comboChartConfiguration_barDataLabels' - The options that determine if visual data labels are displayed.
+--
+-- The data label options for a bar in a combo chart.
+--
+-- 'barsArrangement', 'comboChartConfiguration_barsArrangement' - Determines the bar arrangement in a combo chart. The following are valid
+-- values in this structure:
+--
+-- -   @CLUSTERED@: For clustered bar combo charts.
+--
+-- -   @STACKED@: For stacked bar combo charts.
+--
+-- -   @STACKED_PERCENT@: Do not use. If you use this value, the operation
+--     returns a validation error.
+--
+-- 'categoryAxis', 'comboChartConfiguration_categoryAxis' - The category axis of a combo chart.
+--
+-- 'categoryLabelOptions', 'comboChartConfiguration_categoryLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart category (group\/color) field well.
+--
+-- 'colorLabelOptions', 'comboChartConfiguration_colorLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart\'s color field well.
+--
+-- 'fieldWells', 'comboChartConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'comboChartConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'lineDataLabels', 'comboChartConfiguration_lineDataLabels' - The options that determine if visual data labels are displayed.
+--
+-- The data label options for a line in a combo chart.
+--
+-- 'primaryYAxisDisplayOptions', 'comboChartConfiguration_primaryYAxisDisplayOptions' - The label display options (grid line, range, scale, and axis step) of a
+-- combo chart\'s primary y-axis (bar) field well.
+--
+-- 'primaryYAxisLabelOptions', 'comboChartConfiguration_primaryYAxisLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart\'s primary y-axis (bar) field well.
+--
+-- 'referenceLines', 'comboChartConfiguration_referenceLines' - The reference line setup of the visual.
+--
+-- 'secondaryYAxisDisplayOptions', 'comboChartConfiguration_secondaryYAxisDisplayOptions' - The label display options (grid line, range, scale, axis step) of a
+-- combo chart\'s secondary y-axis (line) field well.
+--
+-- 'secondaryYAxisLabelOptions', 'comboChartConfiguration_secondaryYAxisLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart\'s secondary y-axis(line) field well.
+--
+-- 'sortConfiguration', 'comboChartConfiguration_sortConfiguration' - The sort configuration of a @ComboChartVisual@.
+--
+-- 'tooltip', 'comboChartConfiguration_tooltip' - The legend display setup of the visual.
+--
+-- 'visualPalette', 'comboChartConfiguration_visualPalette' - The palette (chart color) display setup of the visual.
+newComboChartConfiguration ::
+  ComboChartConfiguration
+newComboChartConfiguration =
+  ComboChartConfiguration'
+    { barDataLabels =
+        Prelude.Nothing,
+      barsArrangement = Prelude.Nothing,
+      categoryAxis = Prelude.Nothing,
+      categoryLabelOptions = Prelude.Nothing,
+      colorLabelOptions = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      lineDataLabels = Prelude.Nothing,
+      primaryYAxisDisplayOptions = Prelude.Nothing,
+      primaryYAxisLabelOptions = Prelude.Nothing,
+      referenceLines = Prelude.Nothing,
+      secondaryYAxisDisplayOptions = Prelude.Nothing,
+      secondaryYAxisLabelOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      visualPalette = Prelude.Nothing
+    }
+
+-- | The options that determine if visual data labels are displayed.
+--
+-- The data label options for a bar in a combo chart.
+comboChartConfiguration_barDataLabels :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe DataLabelOptions)
+comboChartConfiguration_barDataLabels = Lens.lens (\ComboChartConfiguration' {barDataLabels} -> barDataLabels) (\s@ComboChartConfiguration' {} a -> s {barDataLabels = a} :: ComboChartConfiguration)
+
+-- | Determines the bar arrangement in a combo chart. The following are valid
+-- values in this structure:
+--
+-- -   @CLUSTERED@: For clustered bar combo charts.
+--
+-- -   @STACKED@: For stacked bar combo charts.
+--
+-- -   @STACKED_PERCENT@: Do not use. If you use this value, the operation
+--     returns a validation error.
+comboChartConfiguration_barsArrangement :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe BarsArrangement)
+comboChartConfiguration_barsArrangement = Lens.lens (\ComboChartConfiguration' {barsArrangement} -> barsArrangement) (\s@ComboChartConfiguration' {} a -> s {barsArrangement = a} :: ComboChartConfiguration)
+
+-- | The category axis of a combo chart.
+comboChartConfiguration_categoryAxis :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+comboChartConfiguration_categoryAxis = Lens.lens (\ComboChartConfiguration' {categoryAxis} -> categoryAxis) (\s@ComboChartConfiguration' {} a -> s {categoryAxis = a} :: ComboChartConfiguration)
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart category (group\/color) field well.
+comboChartConfiguration_categoryLabelOptions :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+comboChartConfiguration_categoryLabelOptions = Lens.lens (\ComboChartConfiguration' {categoryLabelOptions} -> categoryLabelOptions) (\s@ComboChartConfiguration' {} a -> s {categoryLabelOptions = a} :: ComboChartConfiguration)
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart\'s color field well.
+comboChartConfiguration_colorLabelOptions :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+comboChartConfiguration_colorLabelOptions = Lens.lens (\ComboChartConfiguration' {colorLabelOptions} -> colorLabelOptions) (\s@ComboChartConfiguration' {} a -> s {colorLabelOptions = a} :: ComboChartConfiguration)
+
+-- | The field wells of the visual.
+comboChartConfiguration_fieldWells :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe ComboChartFieldWells)
+comboChartConfiguration_fieldWells = Lens.lens (\ComboChartConfiguration' {fieldWells} -> fieldWells) (\s@ComboChartConfiguration' {} a -> s {fieldWells = a} :: ComboChartConfiguration)
+
+-- | The legend display setup of the visual.
+comboChartConfiguration_legend :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe LegendOptions)
+comboChartConfiguration_legend = Lens.lens (\ComboChartConfiguration' {legend} -> legend) (\s@ComboChartConfiguration' {} a -> s {legend = a} :: ComboChartConfiguration)
+
+-- | The options that determine if visual data labels are displayed.
+--
+-- The data label options for a line in a combo chart.
+comboChartConfiguration_lineDataLabels :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe DataLabelOptions)
+comboChartConfiguration_lineDataLabels = Lens.lens (\ComboChartConfiguration' {lineDataLabels} -> lineDataLabels) (\s@ComboChartConfiguration' {} a -> s {lineDataLabels = a} :: ComboChartConfiguration)
+
+-- | The label display options (grid line, range, scale, and axis step) of a
+-- combo chart\'s primary y-axis (bar) field well.
+comboChartConfiguration_primaryYAxisDisplayOptions :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+comboChartConfiguration_primaryYAxisDisplayOptions = Lens.lens (\ComboChartConfiguration' {primaryYAxisDisplayOptions} -> primaryYAxisDisplayOptions) (\s@ComboChartConfiguration' {} a -> s {primaryYAxisDisplayOptions = a} :: ComboChartConfiguration)
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart\'s primary y-axis (bar) field well.
+comboChartConfiguration_primaryYAxisLabelOptions :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+comboChartConfiguration_primaryYAxisLabelOptions = Lens.lens (\ComboChartConfiguration' {primaryYAxisLabelOptions} -> primaryYAxisLabelOptions) (\s@ComboChartConfiguration' {} a -> s {primaryYAxisLabelOptions = a} :: ComboChartConfiguration)
+
+-- | The reference line setup of the visual.
+comboChartConfiguration_referenceLines :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe [ReferenceLine])
+comboChartConfiguration_referenceLines = Lens.lens (\ComboChartConfiguration' {referenceLines} -> referenceLines) (\s@ComboChartConfiguration' {} a -> s {referenceLines = a} :: ComboChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The label display options (grid line, range, scale, axis step) of a
+-- combo chart\'s secondary y-axis (line) field well.
+comboChartConfiguration_secondaryYAxisDisplayOptions :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+comboChartConfiguration_secondaryYAxisDisplayOptions = Lens.lens (\ComboChartConfiguration' {secondaryYAxisDisplayOptions} -> secondaryYAxisDisplayOptions) (\s@ComboChartConfiguration' {} a -> s {secondaryYAxisDisplayOptions = a} :: ComboChartConfiguration)
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) of a combo chart\'s secondary y-axis(line) field well.
+comboChartConfiguration_secondaryYAxisLabelOptions :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+comboChartConfiguration_secondaryYAxisLabelOptions = Lens.lens (\ComboChartConfiguration' {secondaryYAxisLabelOptions} -> secondaryYAxisLabelOptions) (\s@ComboChartConfiguration' {} a -> s {secondaryYAxisLabelOptions = a} :: ComboChartConfiguration)
+
+-- | The sort configuration of a @ComboChartVisual@.
+comboChartConfiguration_sortConfiguration :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe ComboChartSortConfiguration)
+comboChartConfiguration_sortConfiguration = Lens.lens (\ComboChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@ComboChartConfiguration' {} a -> s {sortConfiguration = a} :: ComboChartConfiguration)
+
+-- | The legend display setup of the visual.
+comboChartConfiguration_tooltip :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe TooltipOptions)
+comboChartConfiguration_tooltip = Lens.lens (\ComboChartConfiguration' {tooltip} -> tooltip) (\s@ComboChartConfiguration' {} a -> s {tooltip = a} :: ComboChartConfiguration)
+
+-- | The palette (chart color) display setup of the visual.
+comboChartConfiguration_visualPalette :: Lens.Lens' ComboChartConfiguration (Prelude.Maybe VisualPalette)
+comboChartConfiguration_visualPalette = Lens.lens (\ComboChartConfiguration' {visualPalette} -> visualPalette) (\s@ComboChartConfiguration' {} a -> s {visualPalette = a} :: ComboChartConfiguration)
+
+instance Data.FromJSON ComboChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "ComboChartConfiguration"
+      ( \x ->
+          ComboChartConfiguration'
+            Prelude.<$> (x Data..:? "BarDataLabels")
+            Prelude.<*> (x Data..:? "BarsArrangement")
+            Prelude.<*> (x Data..:? "CategoryAxis")
+            Prelude.<*> (x Data..:? "CategoryLabelOptions")
+            Prelude.<*> (x Data..:? "ColorLabelOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "LineDataLabels")
+            Prelude.<*> (x Data..:? "PrimaryYAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "PrimaryYAxisLabelOptions")
+            Prelude.<*> (x Data..:? "ReferenceLines" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SecondaryYAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "SecondaryYAxisLabelOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "VisualPalette")
+      )
+
+instance Prelude.Hashable ComboChartConfiguration where
+  hashWithSalt _salt ComboChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` barDataLabels
+      `Prelude.hashWithSalt` barsArrangement
+      `Prelude.hashWithSalt` categoryAxis
+      `Prelude.hashWithSalt` categoryLabelOptions
+      `Prelude.hashWithSalt` colorLabelOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` lineDataLabels
+      `Prelude.hashWithSalt` primaryYAxisDisplayOptions
+      `Prelude.hashWithSalt` primaryYAxisLabelOptions
+      `Prelude.hashWithSalt` referenceLines
+      `Prelude.hashWithSalt` secondaryYAxisDisplayOptions
+      `Prelude.hashWithSalt` secondaryYAxisLabelOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` visualPalette
+
+instance Prelude.NFData ComboChartConfiguration where
+  rnf ComboChartConfiguration' {..} =
+    Prelude.rnf barDataLabels
+      `Prelude.seq` Prelude.rnf barsArrangement
+      `Prelude.seq` Prelude.rnf categoryAxis
+      `Prelude.seq` Prelude.rnf categoryLabelOptions
+      `Prelude.seq` Prelude.rnf colorLabelOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf lineDataLabels
+      `Prelude.seq` Prelude.rnf primaryYAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf primaryYAxisLabelOptions
+      `Prelude.seq` Prelude.rnf referenceLines
+      `Prelude.seq` Prelude.rnf secondaryYAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf secondaryYAxisLabelOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf visualPalette
+
+instance Data.ToJSON ComboChartConfiguration where
+  toJSON ComboChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BarDataLabels" Data..=) Prelude.<$> barDataLabels,
+            ("BarsArrangement" Data..=)
+              Prelude.<$> barsArrangement,
+            ("CategoryAxis" Data..=) Prelude.<$> categoryAxis,
+            ("CategoryLabelOptions" Data..=)
+              Prelude.<$> categoryLabelOptions,
+            ("ColorLabelOptions" Data..=)
+              Prelude.<$> colorLabelOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("LineDataLabels" Data..=)
+              Prelude.<$> lineDataLabels,
+            ("PrimaryYAxisDisplayOptions" Data..=)
+              Prelude.<$> primaryYAxisDisplayOptions,
+            ("PrimaryYAxisLabelOptions" Data..=)
+              Prelude.<$> primaryYAxisLabelOptions,
+            ("ReferenceLines" Data..=)
+              Prelude.<$> referenceLines,
+            ("SecondaryYAxisDisplayOptions" Data..=)
+              Prelude.<$> secondaryYAxisDisplayOptions,
+            ("SecondaryYAxisLabelOptions" Data..=)
+              Prelude.<$> secondaryYAxisLabelOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComboChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/ComboChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComboChartFieldWells.hs
@@ -0,0 +1,92 @@
+{-# 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.QuickSight.Types.ComboChartFieldWells
+-- 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.QuickSight.Types.ComboChartFieldWells 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.QuickSight.Types.ComboChartAggregatedFieldWells
+
+-- | The field wells of the visual.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newComboChartFieldWells' smart constructor.
+data ComboChartFieldWells = ComboChartFieldWells'
+  { -- | The aggregated field wells of a combo chart. Combo charts only have
+    -- aggregated field wells. Columns in a combo chart are aggregated by
+    -- category.
+    comboChartAggregatedFieldWells :: Prelude.Maybe ComboChartAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComboChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'comboChartAggregatedFieldWells', 'comboChartFieldWells_comboChartAggregatedFieldWells' - The aggregated field wells of a combo chart. Combo charts only have
+-- aggregated field wells. Columns in a combo chart are aggregated by
+-- category.
+newComboChartFieldWells ::
+  ComboChartFieldWells
+newComboChartFieldWells =
+  ComboChartFieldWells'
+    { comboChartAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a combo chart. Combo charts only have
+-- aggregated field wells. Columns in a combo chart are aggregated by
+-- category.
+comboChartFieldWells_comboChartAggregatedFieldWells :: Lens.Lens' ComboChartFieldWells (Prelude.Maybe ComboChartAggregatedFieldWells)
+comboChartFieldWells_comboChartAggregatedFieldWells = Lens.lens (\ComboChartFieldWells' {comboChartAggregatedFieldWells} -> comboChartAggregatedFieldWells) (\s@ComboChartFieldWells' {} a -> s {comboChartAggregatedFieldWells = a} :: ComboChartFieldWells)
+
+instance Data.FromJSON ComboChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "ComboChartFieldWells"
+      ( \x ->
+          ComboChartFieldWells'
+            Prelude.<$> (x Data..:? "ComboChartAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable ComboChartFieldWells where
+  hashWithSalt _salt ComboChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` comboChartAggregatedFieldWells
+
+instance Prelude.NFData ComboChartFieldWells where
+  rnf ComboChartFieldWells' {..} =
+    Prelude.rnf comboChartAggregatedFieldWells
+
+instance Data.ToJSON ComboChartFieldWells where
+  toJSON ComboChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ComboChartAggregatedFieldWells" Data..=)
+              Prelude.<$> comboChartAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComboChartSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/ComboChartSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComboChartSortConfiguration.hs
@@ -0,0 +1,127 @@
+{-# 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.QuickSight.Types.ComboChartSortConfiguration
+-- 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.QuickSight.Types.ComboChartSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a @ComboChartVisual@.
+--
+-- /See:/ 'newComboChartSortConfiguration' smart constructor.
+data ComboChartSortConfiguration = ComboChartSortConfiguration'
+  { -- | The item limit configuration for the category field well of a combo
+    -- chart.
+    categoryItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the category field well in a combo chart.
+    categorySort :: Prelude.Maybe [FieldSortOptions],
+    -- | The item limit configuration of the color field well in a combo chart.
+    colorItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the color field well in a combo chart.
+    colorSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComboChartSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryItemsLimit', 'comboChartSortConfiguration_categoryItemsLimit' - The item limit configuration for the category field well of a combo
+-- chart.
+--
+-- 'categorySort', 'comboChartSortConfiguration_categorySort' - The sort configuration of the category field well in a combo chart.
+--
+-- 'colorItemsLimit', 'comboChartSortConfiguration_colorItemsLimit' - The item limit configuration of the color field well in a combo chart.
+--
+-- 'colorSort', 'comboChartSortConfiguration_colorSort' - The sort configuration of the color field well in a combo chart.
+newComboChartSortConfiguration ::
+  ComboChartSortConfiguration
+newComboChartSortConfiguration =
+  ComboChartSortConfiguration'
+    { categoryItemsLimit =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing,
+      colorItemsLimit = Prelude.Nothing,
+      colorSort = Prelude.Nothing
+    }
+
+-- | The item limit configuration for the category field well of a combo
+-- chart.
+comboChartSortConfiguration_categoryItemsLimit :: Lens.Lens' ComboChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+comboChartSortConfiguration_categoryItemsLimit = Lens.lens (\ComboChartSortConfiguration' {categoryItemsLimit} -> categoryItemsLimit) (\s@ComboChartSortConfiguration' {} a -> s {categoryItemsLimit = a} :: ComboChartSortConfiguration)
+
+-- | The sort configuration of the category field well in a combo chart.
+comboChartSortConfiguration_categorySort :: Lens.Lens' ComboChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+comboChartSortConfiguration_categorySort = Lens.lens (\ComboChartSortConfiguration' {categorySort} -> categorySort) (\s@ComboChartSortConfiguration' {} a -> s {categorySort = a} :: ComboChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The item limit configuration of the color field well in a combo chart.
+comboChartSortConfiguration_colorItemsLimit :: Lens.Lens' ComboChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+comboChartSortConfiguration_colorItemsLimit = Lens.lens (\ComboChartSortConfiguration' {colorItemsLimit} -> colorItemsLimit) (\s@ComboChartSortConfiguration' {} a -> s {colorItemsLimit = a} :: ComboChartSortConfiguration)
+
+-- | The sort configuration of the color field well in a combo chart.
+comboChartSortConfiguration_colorSort :: Lens.Lens' ComboChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+comboChartSortConfiguration_colorSort = Lens.lens (\ComboChartSortConfiguration' {colorSort} -> colorSort) (\s@ComboChartSortConfiguration' {} a -> s {colorSort = a} :: ComboChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ComboChartSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "ComboChartSortConfiguration"
+      ( \x ->
+          ComboChartSortConfiguration'
+            Prelude.<$> (x Data..:? "CategoryItemsLimit")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ColorItemsLimit")
+            Prelude.<*> (x Data..:? "ColorSort" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ComboChartSortConfiguration where
+  hashWithSalt _salt ComboChartSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryItemsLimit
+      `Prelude.hashWithSalt` categorySort
+      `Prelude.hashWithSalt` colorItemsLimit
+      `Prelude.hashWithSalt` colorSort
+
+instance Prelude.NFData ComboChartSortConfiguration where
+  rnf ComboChartSortConfiguration' {..} =
+    Prelude.rnf categoryItemsLimit
+      `Prelude.seq` Prelude.rnf categorySort
+      `Prelude.seq` Prelude.rnf colorItemsLimit
+      `Prelude.seq` Prelude.rnf colorSort
+
+instance Data.ToJSON ComboChartSortConfiguration where
+  toJSON ComboChartSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryItemsLimit" Data..=)
+              Prelude.<$> categoryItemsLimit,
+            ("CategorySort" Data..=) Prelude.<$> categorySort,
+            ("ColorItemsLimit" Data..=)
+              Prelude.<$> colorItemsLimit,
+            ("ColorSort" Data..=) Prelude.<$> colorSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComboChartVisual.hs b/gen/Amazonka/QuickSight/Types/ComboChartVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComboChartVisual.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ComboChartVisual
+-- 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.QuickSight.Types.ComboChartVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.ComboChartConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A combo chart.
+--
+-- The @ComboChartVisual@ includes stacked bar combo charts and clustered
+-- bar combo charts
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/combo-charts.html Using combo charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newComboChartVisual' smart constructor.
+data ComboChartVisual = ComboChartVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe ComboChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComboChartVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'comboChartVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'comboChartVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'comboChartVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'comboChartVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'comboChartVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'comboChartVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newComboChartVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  ComboChartVisual
+newComboChartVisual pVisualId_ =
+  ComboChartVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+comboChartVisual_actions :: Lens.Lens' ComboChartVisual (Prelude.Maybe [VisualCustomAction])
+comboChartVisual_actions = Lens.lens (\ComboChartVisual' {actions} -> actions) (\s@ComboChartVisual' {} a -> s {actions = a} :: ComboChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+comboChartVisual_chartConfiguration :: Lens.Lens' ComboChartVisual (Prelude.Maybe ComboChartConfiguration)
+comboChartVisual_chartConfiguration = Lens.lens (\ComboChartVisual' {chartConfiguration} -> chartConfiguration) (\s@ComboChartVisual' {} a -> s {chartConfiguration = a} :: ComboChartVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+comboChartVisual_columnHierarchies :: Lens.Lens' ComboChartVisual (Prelude.Maybe [ColumnHierarchy])
+comboChartVisual_columnHierarchies = Lens.lens (\ComboChartVisual' {columnHierarchies} -> columnHierarchies) (\s@ComboChartVisual' {} a -> s {columnHierarchies = a} :: ComboChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+comboChartVisual_subtitle :: Lens.Lens' ComboChartVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+comboChartVisual_subtitle = Lens.lens (\ComboChartVisual' {subtitle} -> subtitle) (\s@ComboChartVisual' {} a -> s {subtitle = a} :: ComboChartVisual)
+
+-- | The title that is displayed on the visual.
+comboChartVisual_title :: Lens.Lens' ComboChartVisual (Prelude.Maybe VisualTitleLabelOptions)
+comboChartVisual_title = Lens.lens (\ComboChartVisual' {title} -> title) (\s@ComboChartVisual' {} a -> s {title = a} :: ComboChartVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+comboChartVisual_visualId :: Lens.Lens' ComboChartVisual Prelude.Text
+comboChartVisual_visualId = Lens.lens (\ComboChartVisual' {visualId} -> visualId) (\s@ComboChartVisual' {} a -> s {visualId = a} :: ComboChartVisual)
+
+instance Data.FromJSON ComboChartVisual where
+  parseJSON =
+    Data.withObject
+      "ComboChartVisual"
+      ( \x ->
+          ComboChartVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable ComboChartVisual where
+  hashWithSalt _salt ComboChartVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData ComboChartVisual where
+  rnf ComboChartVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON ComboChartVisual where
+  toJSON ComboChartVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComparisonConfiguration.hs b/gen/Amazonka/QuickSight/Types/ComparisonConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComparisonConfiguration.hs
@@ -0,0 +1,116 @@
+{-# 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.QuickSight.Types.ComparisonConfiguration
+-- 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.QuickSight.Types.ComparisonConfiguration 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.QuickSight.Types.ComparisonFormatConfiguration
+import Amazonka.QuickSight.Types.ComparisonMethod
+
+-- | The comparison display configuration of a KPI or gauge chart.
+--
+-- /See:/ 'newComparisonConfiguration' smart constructor.
+data ComparisonConfiguration = ComparisonConfiguration'
+  { -- | The format of the comparison.
+    comparisonFormat :: Prelude.Maybe ComparisonFormatConfiguration,
+    -- | The method of the comparison. Choose from the following options:
+    --
+    -- -   @DIFFERENCE@
+    --
+    -- -   @PERCENT_DIFFERENCE@
+    --
+    -- -   @PERCENT@
+    comparisonMethod :: Prelude.Maybe ComparisonMethod
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComparisonConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'comparisonFormat', 'comparisonConfiguration_comparisonFormat' - The format of the comparison.
+--
+-- 'comparisonMethod', 'comparisonConfiguration_comparisonMethod' - The method of the comparison. Choose from the following options:
+--
+-- -   @DIFFERENCE@
+--
+-- -   @PERCENT_DIFFERENCE@
+--
+-- -   @PERCENT@
+newComparisonConfiguration ::
+  ComparisonConfiguration
+newComparisonConfiguration =
+  ComparisonConfiguration'
+    { comparisonFormat =
+        Prelude.Nothing,
+      comparisonMethod = Prelude.Nothing
+    }
+
+-- | The format of the comparison.
+comparisonConfiguration_comparisonFormat :: Lens.Lens' ComparisonConfiguration (Prelude.Maybe ComparisonFormatConfiguration)
+comparisonConfiguration_comparisonFormat = Lens.lens (\ComparisonConfiguration' {comparisonFormat} -> comparisonFormat) (\s@ComparisonConfiguration' {} a -> s {comparisonFormat = a} :: ComparisonConfiguration)
+
+-- | The method of the comparison. Choose from the following options:
+--
+-- -   @DIFFERENCE@
+--
+-- -   @PERCENT_DIFFERENCE@
+--
+-- -   @PERCENT@
+comparisonConfiguration_comparisonMethod :: Lens.Lens' ComparisonConfiguration (Prelude.Maybe ComparisonMethod)
+comparisonConfiguration_comparisonMethod = Lens.lens (\ComparisonConfiguration' {comparisonMethod} -> comparisonMethod) (\s@ComparisonConfiguration' {} a -> s {comparisonMethod = a} :: ComparisonConfiguration)
+
+instance Data.FromJSON ComparisonConfiguration where
+  parseJSON =
+    Data.withObject
+      "ComparisonConfiguration"
+      ( \x ->
+          ComparisonConfiguration'
+            Prelude.<$> (x Data..:? "ComparisonFormat")
+            Prelude.<*> (x Data..:? "ComparisonMethod")
+      )
+
+instance Prelude.Hashable ComparisonConfiguration where
+  hashWithSalt _salt ComparisonConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` comparisonFormat
+      `Prelude.hashWithSalt` comparisonMethod
+
+instance Prelude.NFData ComparisonConfiguration where
+  rnf ComparisonConfiguration' {..} =
+    Prelude.rnf comparisonFormat
+      `Prelude.seq` Prelude.rnf comparisonMethod
+
+instance Data.ToJSON ComparisonConfiguration where
+  toJSON ComparisonConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ComparisonFormat" Data..=)
+              Prelude.<$> comparisonFormat,
+            ("ComparisonMethod" Data..=)
+              Prelude.<$> comparisonMethod
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComparisonFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/ComparisonFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComparisonFormatConfiguration.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.QuickSight.Types.ComparisonFormatConfiguration
+-- 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.QuickSight.Types.ComparisonFormatConfiguration 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.QuickSight.Types.NumberDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.PercentageDisplayFormatConfiguration
+
+-- | The format of the comparison.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newComparisonFormatConfiguration' smart constructor.
+data ComparisonFormatConfiguration = ComparisonFormatConfiguration'
+  { -- | The number display format.
+    numberDisplayFormatConfiguration :: Prelude.Maybe NumberDisplayFormatConfiguration,
+    -- | The percentage display format.
+    percentageDisplayFormatConfiguration :: Prelude.Maybe PercentageDisplayFormatConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComparisonFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'numberDisplayFormatConfiguration', 'comparisonFormatConfiguration_numberDisplayFormatConfiguration' - The number display format.
+--
+-- 'percentageDisplayFormatConfiguration', 'comparisonFormatConfiguration_percentageDisplayFormatConfiguration' - The percentage display format.
+newComparisonFormatConfiguration ::
+  ComparisonFormatConfiguration
+newComparisonFormatConfiguration =
+  ComparisonFormatConfiguration'
+    { numberDisplayFormatConfiguration =
+        Prelude.Nothing,
+      percentageDisplayFormatConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The number display format.
+comparisonFormatConfiguration_numberDisplayFormatConfiguration :: Lens.Lens' ComparisonFormatConfiguration (Prelude.Maybe NumberDisplayFormatConfiguration)
+comparisonFormatConfiguration_numberDisplayFormatConfiguration = Lens.lens (\ComparisonFormatConfiguration' {numberDisplayFormatConfiguration} -> numberDisplayFormatConfiguration) (\s@ComparisonFormatConfiguration' {} a -> s {numberDisplayFormatConfiguration = a} :: ComparisonFormatConfiguration)
+
+-- | The percentage display format.
+comparisonFormatConfiguration_percentageDisplayFormatConfiguration :: Lens.Lens' ComparisonFormatConfiguration (Prelude.Maybe PercentageDisplayFormatConfiguration)
+comparisonFormatConfiguration_percentageDisplayFormatConfiguration = Lens.lens (\ComparisonFormatConfiguration' {percentageDisplayFormatConfiguration} -> percentageDisplayFormatConfiguration) (\s@ComparisonFormatConfiguration' {} a -> s {percentageDisplayFormatConfiguration = a} :: ComparisonFormatConfiguration)
+
+instance Data.FromJSON ComparisonFormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "ComparisonFormatConfiguration"
+      ( \x ->
+          ComparisonFormatConfiguration'
+            Prelude.<$> (x Data..:? "NumberDisplayFormatConfiguration")
+            Prelude.<*> (x Data..:? "PercentageDisplayFormatConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    ComparisonFormatConfiguration
+  where
+  hashWithSalt _salt ComparisonFormatConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` numberDisplayFormatConfiguration
+      `Prelude.hashWithSalt` percentageDisplayFormatConfiguration
+
+instance Prelude.NFData ComparisonFormatConfiguration where
+  rnf ComparisonFormatConfiguration' {..} =
+    Prelude.rnf numberDisplayFormatConfiguration
+      `Prelude.seq` Prelude.rnf percentageDisplayFormatConfiguration
+
+instance Data.ToJSON ComparisonFormatConfiguration where
+  toJSON ComparisonFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NumberDisplayFormatConfiguration" Data..=)
+              Prelude.<$> numberDisplayFormatConfiguration,
+            ("PercentageDisplayFormatConfiguration" Data..=)
+              Prelude.<$> percentageDisplayFormatConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ComparisonMethod.hs b/gen/Amazonka/QuickSight/Types/ComparisonMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ComparisonMethod.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.QuickSight.Types.ComparisonMethod
+-- 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.QuickSight.Types.ComparisonMethod
+  ( ComparisonMethod
+      ( ..,
+        ComparisonMethod_DIFFERENCE,
+        ComparisonMethod_PERCENT,
+        ComparisonMethod_PERCENT_DIFFERENCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ComparisonMethod = ComparisonMethod'
+  { fromComparisonMethod ::
+      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 ComparisonMethod_DIFFERENCE :: ComparisonMethod
+pattern ComparisonMethod_DIFFERENCE = ComparisonMethod' "DIFFERENCE"
+
+pattern ComparisonMethod_PERCENT :: ComparisonMethod
+pattern ComparisonMethod_PERCENT = ComparisonMethod' "PERCENT"
+
+pattern ComparisonMethod_PERCENT_DIFFERENCE :: ComparisonMethod
+pattern ComparisonMethod_PERCENT_DIFFERENCE = ComparisonMethod' "PERCENT_DIFFERENCE"
+
+{-# COMPLETE
+  ComparisonMethod_DIFFERENCE,
+  ComparisonMethod_PERCENT,
+  ComparisonMethod_PERCENT_DIFFERENCE,
+  ComparisonMethod'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Computation.hs b/gen/Amazonka/QuickSight/Types/Computation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Computation.hs
@@ -0,0 +1,216 @@
+{-# 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.QuickSight.Types.Computation
+-- 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.QuickSight.Types.Computation 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.QuickSight.Types.ForecastComputation
+import Amazonka.QuickSight.Types.GrowthRateComputation
+import Amazonka.QuickSight.Types.MaximumMinimumComputation
+import Amazonka.QuickSight.Types.MetricComparisonComputation
+import Amazonka.QuickSight.Types.PeriodOverPeriodComputation
+import Amazonka.QuickSight.Types.PeriodToDateComputation
+import Amazonka.QuickSight.Types.TopBottomMoversComputation
+import Amazonka.QuickSight.Types.TopBottomRankedComputation
+import Amazonka.QuickSight.Types.TotalAggregationComputation
+import Amazonka.QuickSight.Types.UniqueValuesComputation
+
+-- | The computation union that is used in an insight visual.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newComputation' smart constructor.
+data Computation = Computation'
+  { -- | The forecast computation configuration.
+    forecast :: Prelude.Maybe ForecastComputation,
+    -- | The growth rate computation configuration.
+    growthRate :: Prelude.Maybe GrowthRateComputation,
+    -- | The maximum and minimum computation configuration.
+    maximumMinimum :: Prelude.Maybe MaximumMinimumComputation,
+    -- | The metric comparison computation configuration.
+    metricComparison :: Prelude.Maybe MetricComparisonComputation,
+    -- | The period over period computation configuration.
+    periodOverPeriod :: Prelude.Maybe PeriodOverPeriodComputation,
+    -- | The period to @DataSetIdentifier@ computation configuration.
+    periodToDate :: Prelude.Maybe PeriodToDateComputation,
+    -- | The top movers and bottom movers computation configuration.
+    topBottomMovers :: Prelude.Maybe TopBottomMoversComputation,
+    -- | The top ranked and bottom ranked computation configuration.
+    topBottomRanked :: Prelude.Maybe TopBottomRankedComputation,
+    -- | The total aggregation computation configuration.
+    totalAggregation :: Prelude.Maybe TotalAggregationComputation,
+    -- | The unique values computation configuration.
+    uniqueValues :: Prelude.Maybe UniqueValuesComputation
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Computation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forecast', 'computation_forecast' - The forecast computation configuration.
+--
+-- 'growthRate', 'computation_growthRate' - The growth rate computation configuration.
+--
+-- 'maximumMinimum', 'computation_maximumMinimum' - The maximum and minimum computation configuration.
+--
+-- 'metricComparison', 'computation_metricComparison' - The metric comparison computation configuration.
+--
+-- 'periodOverPeriod', 'computation_periodOverPeriod' - The period over period computation configuration.
+--
+-- 'periodToDate', 'computation_periodToDate' - The period to @DataSetIdentifier@ computation configuration.
+--
+-- 'topBottomMovers', 'computation_topBottomMovers' - The top movers and bottom movers computation configuration.
+--
+-- 'topBottomRanked', 'computation_topBottomRanked' - The top ranked and bottom ranked computation configuration.
+--
+-- 'totalAggregation', 'computation_totalAggregation' - The total aggregation computation configuration.
+--
+-- 'uniqueValues', 'computation_uniqueValues' - The unique values computation configuration.
+newComputation ::
+  Computation
+newComputation =
+  Computation'
+    { forecast = Prelude.Nothing,
+      growthRate = Prelude.Nothing,
+      maximumMinimum = Prelude.Nothing,
+      metricComparison = Prelude.Nothing,
+      periodOverPeriod = Prelude.Nothing,
+      periodToDate = Prelude.Nothing,
+      topBottomMovers = Prelude.Nothing,
+      topBottomRanked = Prelude.Nothing,
+      totalAggregation = Prelude.Nothing,
+      uniqueValues = Prelude.Nothing
+    }
+
+-- | The forecast computation configuration.
+computation_forecast :: Lens.Lens' Computation (Prelude.Maybe ForecastComputation)
+computation_forecast = Lens.lens (\Computation' {forecast} -> forecast) (\s@Computation' {} a -> s {forecast = a} :: Computation)
+
+-- | The growth rate computation configuration.
+computation_growthRate :: Lens.Lens' Computation (Prelude.Maybe GrowthRateComputation)
+computation_growthRate = Lens.lens (\Computation' {growthRate} -> growthRate) (\s@Computation' {} a -> s {growthRate = a} :: Computation)
+
+-- | The maximum and minimum computation configuration.
+computation_maximumMinimum :: Lens.Lens' Computation (Prelude.Maybe MaximumMinimumComputation)
+computation_maximumMinimum = Lens.lens (\Computation' {maximumMinimum} -> maximumMinimum) (\s@Computation' {} a -> s {maximumMinimum = a} :: Computation)
+
+-- | The metric comparison computation configuration.
+computation_metricComparison :: Lens.Lens' Computation (Prelude.Maybe MetricComparisonComputation)
+computation_metricComparison = Lens.lens (\Computation' {metricComparison} -> metricComparison) (\s@Computation' {} a -> s {metricComparison = a} :: Computation)
+
+-- | The period over period computation configuration.
+computation_periodOverPeriod :: Lens.Lens' Computation (Prelude.Maybe PeriodOverPeriodComputation)
+computation_periodOverPeriod = Lens.lens (\Computation' {periodOverPeriod} -> periodOverPeriod) (\s@Computation' {} a -> s {periodOverPeriod = a} :: Computation)
+
+-- | The period to @DataSetIdentifier@ computation configuration.
+computation_periodToDate :: Lens.Lens' Computation (Prelude.Maybe PeriodToDateComputation)
+computation_periodToDate = Lens.lens (\Computation' {periodToDate} -> periodToDate) (\s@Computation' {} a -> s {periodToDate = a} :: Computation)
+
+-- | The top movers and bottom movers computation configuration.
+computation_topBottomMovers :: Lens.Lens' Computation (Prelude.Maybe TopBottomMoversComputation)
+computation_topBottomMovers = Lens.lens (\Computation' {topBottomMovers} -> topBottomMovers) (\s@Computation' {} a -> s {topBottomMovers = a} :: Computation)
+
+-- | The top ranked and bottom ranked computation configuration.
+computation_topBottomRanked :: Lens.Lens' Computation (Prelude.Maybe TopBottomRankedComputation)
+computation_topBottomRanked = Lens.lens (\Computation' {topBottomRanked} -> topBottomRanked) (\s@Computation' {} a -> s {topBottomRanked = a} :: Computation)
+
+-- | The total aggregation computation configuration.
+computation_totalAggregation :: Lens.Lens' Computation (Prelude.Maybe TotalAggregationComputation)
+computation_totalAggregation = Lens.lens (\Computation' {totalAggregation} -> totalAggregation) (\s@Computation' {} a -> s {totalAggregation = a} :: Computation)
+
+-- | The unique values computation configuration.
+computation_uniqueValues :: Lens.Lens' Computation (Prelude.Maybe UniqueValuesComputation)
+computation_uniqueValues = Lens.lens (\Computation' {uniqueValues} -> uniqueValues) (\s@Computation' {} a -> s {uniqueValues = a} :: Computation)
+
+instance Data.FromJSON Computation where
+  parseJSON =
+    Data.withObject
+      "Computation"
+      ( \x ->
+          Computation'
+            Prelude.<$> (x Data..:? "Forecast")
+            Prelude.<*> (x Data..:? "GrowthRate")
+            Prelude.<*> (x Data..:? "MaximumMinimum")
+            Prelude.<*> (x Data..:? "MetricComparison")
+            Prelude.<*> (x Data..:? "PeriodOverPeriod")
+            Prelude.<*> (x Data..:? "PeriodToDate")
+            Prelude.<*> (x Data..:? "TopBottomMovers")
+            Prelude.<*> (x Data..:? "TopBottomRanked")
+            Prelude.<*> (x Data..:? "TotalAggregation")
+            Prelude.<*> (x Data..:? "UniqueValues")
+      )
+
+instance Prelude.Hashable Computation where
+  hashWithSalt _salt Computation' {..} =
+    _salt
+      `Prelude.hashWithSalt` forecast
+      `Prelude.hashWithSalt` growthRate
+      `Prelude.hashWithSalt` maximumMinimum
+      `Prelude.hashWithSalt` metricComparison
+      `Prelude.hashWithSalt` periodOverPeriod
+      `Prelude.hashWithSalt` periodToDate
+      `Prelude.hashWithSalt` topBottomMovers
+      `Prelude.hashWithSalt` topBottomRanked
+      `Prelude.hashWithSalt` totalAggregation
+      `Prelude.hashWithSalt` uniqueValues
+
+instance Prelude.NFData Computation where
+  rnf Computation' {..} =
+    Prelude.rnf forecast
+      `Prelude.seq` Prelude.rnf growthRate
+      `Prelude.seq` Prelude.rnf maximumMinimum
+      `Prelude.seq` Prelude.rnf metricComparison
+      `Prelude.seq` Prelude.rnf periodOverPeriod
+      `Prelude.seq` Prelude.rnf periodToDate
+      `Prelude.seq` Prelude.rnf topBottomMovers
+      `Prelude.seq` Prelude.rnf topBottomRanked
+      `Prelude.seq` Prelude.rnf totalAggregation
+      `Prelude.seq` Prelude.rnf uniqueValues
+
+instance Data.ToJSON Computation where
+  toJSON Computation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Forecast" Data..=) Prelude.<$> forecast,
+            ("GrowthRate" Data..=) Prelude.<$> growthRate,
+            ("MaximumMinimum" Data..=)
+              Prelude.<$> maximumMinimum,
+            ("MetricComparison" Data..=)
+              Prelude.<$> metricComparison,
+            ("PeriodOverPeriod" Data..=)
+              Prelude.<$> periodOverPeriod,
+            ("PeriodToDate" Data..=) Prelude.<$> periodToDate,
+            ("TopBottomMovers" Data..=)
+              Prelude.<$> topBottomMovers,
+            ("TopBottomRanked" Data..=)
+              Prelude.<$> topBottomRanked,
+            ("TotalAggregation" Data..=)
+              Prelude.<$> totalAggregation,
+            ("UniqueValues" Data..=) Prelude.<$> uniqueValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingColor.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingColor.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.QuickSight.Types.ConditionalFormattingColor
+-- 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.QuickSight.Types.ConditionalFormattingColor 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.QuickSight.Types.ConditionalFormattingGradientColor
+import Amazonka.QuickSight.Types.ConditionalFormattingSolidColor
+
+-- | The formatting configuration for the color.
+--
+-- /See:/ 'newConditionalFormattingColor' smart constructor.
+data ConditionalFormattingColor = ConditionalFormattingColor'
+  { -- | Formatting configuration for gradient color.
+    gradient :: Prelude.Maybe ConditionalFormattingGradientColor,
+    -- | Formatting configuration for solid color.
+    solid :: Prelude.Maybe ConditionalFormattingSolidColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingColor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'gradient', 'conditionalFormattingColor_gradient' - Formatting configuration for gradient color.
+--
+-- 'solid', 'conditionalFormattingColor_solid' - Formatting configuration for solid color.
+newConditionalFormattingColor ::
+  ConditionalFormattingColor
+newConditionalFormattingColor =
+  ConditionalFormattingColor'
+    { gradient =
+        Prelude.Nothing,
+      solid = Prelude.Nothing
+    }
+
+-- | Formatting configuration for gradient color.
+conditionalFormattingColor_gradient :: Lens.Lens' ConditionalFormattingColor (Prelude.Maybe ConditionalFormattingGradientColor)
+conditionalFormattingColor_gradient = Lens.lens (\ConditionalFormattingColor' {gradient} -> gradient) (\s@ConditionalFormattingColor' {} a -> s {gradient = a} :: ConditionalFormattingColor)
+
+-- | Formatting configuration for solid color.
+conditionalFormattingColor_solid :: Lens.Lens' ConditionalFormattingColor (Prelude.Maybe ConditionalFormattingSolidColor)
+conditionalFormattingColor_solid = Lens.lens (\ConditionalFormattingColor' {solid} -> solid) (\s@ConditionalFormattingColor' {} a -> s {solid = a} :: ConditionalFormattingColor)
+
+instance Data.FromJSON ConditionalFormattingColor where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingColor"
+      ( \x ->
+          ConditionalFormattingColor'
+            Prelude.<$> (x Data..:? "Gradient")
+            Prelude.<*> (x Data..:? "Solid")
+      )
+
+instance Prelude.Hashable ConditionalFormattingColor where
+  hashWithSalt _salt ConditionalFormattingColor' {..} =
+    _salt
+      `Prelude.hashWithSalt` gradient
+      `Prelude.hashWithSalt` solid
+
+instance Prelude.NFData ConditionalFormattingColor where
+  rnf ConditionalFormattingColor' {..} =
+    Prelude.rnf gradient
+      `Prelude.seq` Prelude.rnf solid
+
+instance Data.ToJSON ConditionalFormattingColor where
+  toJSON ConditionalFormattingColor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Gradient" Data..=) Prelude.<$> gradient,
+            ("Solid" Data..=) Prelude.<$> solid
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingCustomIconCondition.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingCustomIconCondition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingCustomIconCondition.hs
@@ -0,0 +1,146 @@
+{-# 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.QuickSight.Types.ConditionalFormattingCustomIconCondition
+-- 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.QuickSight.Types.ConditionalFormattingCustomIconCondition 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.QuickSight.Types.ConditionalFormattingCustomIconOptions
+import Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayConfiguration
+
+-- | Determines the custom condition for an icon set.
+--
+-- /See:/ 'newConditionalFormattingCustomIconCondition' smart constructor.
+data ConditionalFormattingCustomIconCondition = ConditionalFormattingCustomIconCondition'
+  { -- | Determines the color of the icon.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | Determines the icon display configuration.
+    displayConfiguration :: Prelude.Maybe ConditionalFormattingIconDisplayConfiguration,
+    -- | The expression that determines the condition of the icon set.
+    expression :: Data.Sensitive Prelude.Text,
+    -- | Custom icon options for an icon set.
+    iconOptions :: ConditionalFormattingCustomIconOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingCustomIconCondition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'conditionalFormattingCustomIconCondition_color' - Determines the color of the icon.
+--
+-- 'displayConfiguration', 'conditionalFormattingCustomIconCondition_displayConfiguration' - Determines the icon display configuration.
+--
+-- 'expression', 'conditionalFormattingCustomIconCondition_expression' - The expression that determines the condition of the icon set.
+--
+-- 'iconOptions', 'conditionalFormattingCustomIconCondition_iconOptions' - Custom icon options for an icon set.
+newConditionalFormattingCustomIconCondition ::
+  -- | 'expression'
+  Prelude.Text ->
+  -- | 'iconOptions'
+  ConditionalFormattingCustomIconOptions ->
+  ConditionalFormattingCustomIconCondition
+newConditionalFormattingCustomIconCondition
+  pExpression_
+  pIconOptions_ =
+    ConditionalFormattingCustomIconCondition'
+      { color =
+          Prelude.Nothing,
+        displayConfiguration =
+          Prelude.Nothing,
+        expression =
+          Data._Sensitive
+            Lens.# pExpression_,
+        iconOptions = pIconOptions_
+      }
+
+-- | Determines the color of the icon.
+conditionalFormattingCustomIconCondition_color :: Lens.Lens' ConditionalFormattingCustomIconCondition (Prelude.Maybe Prelude.Text)
+conditionalFormattingCustomIconCondition_color = Lens.lens (\ConditionalFormattingCustomIconCondition' {color} -> color) (\s@ConditionalFormattingCustomIconCondition' {} a -> s {color = a} :: ConditionalFormattingCustomIconCondition)
+
+-- | Determines the icon display configuration.
+conditionalFormattingCustomIconCondition_displayConfiguration :: Lens.Lens' ConditionalFormattingCustomIconCondition (Prelude.Maybe ConditionalFormattingIconDisplayConfiguration)
+conditionalFormattingCustomIconCondition_displayConfiguration = Lens.lens (\ConditionalFormattingCustomIconCondition' {displayConfiguration} -> displayConfiguration) (\s@ConditionalFormattingCustomIconCondition' {} a -> s {displayConfiguration = a} :: ConditionalFormattingCustomIconCondition)
+
+-- | The expression that determines the condition of the icon set.
+conditionalFormattingCustomIconCondition_expression :: Lens.Lens' ConditionalFormattingCustomIconCondition Prelude.Text
+conditionalFormattingCustomIconCondition_expression = Lens.lens (\ConditionalFormattingCustomIconCondition' {expression} -> expression) (\s@ConditionalFormattingCustomIconCondition' {} a -> s {expression = a} :: ConditionalFormattingCustomIconCondition) Prelude.. Data._Sensitive
+
+-- | Custom icon options for an icon set.
+conditionalFormattingCustomIconCondition_iconOptions :: Lens.Lens' ConditionalFormattingCustomIconCondition ConditionalFormattingCustomIconOptions
+conditionalFormattingCustomIconCondition_iconOptions = Lens.lens (\ConditionalFormattingCustomIconCondition' {iconOptions} -> iconOptions) (\s@ConditionalFormattingCustomIconCondition' {} a -> s {iconOptions = a} :: ConditionalFormattingCustomIconCondition)
+
+instance
+  Data.FromJSON
+    ConditionalFormattingCustomIconCondition
+  where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingCustomIconCondition"
+      ( \x ->
+          ConditionalFormattingCustomIconCondition'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "DisplayConfiguration")
+            Prelude.<*> (x Data..: "Expression")
+            Prelude.<*> (x Data..: "IconOptions")
+      )
+
+instance
+  Prelude.Hashable
+    ConditionalFormattingCustomIconCondition
+  where
+  hashWithSalt
+    _salt
+    ConditionalFormattingCustomIconCondition' {..} =
+      _salt
+        `Prelude.hashWithSalt` color
+        `Prelude.hashWithSalt` displayConfiguration
+        `Prelude.hashWithSalt` expression
+        `Prelude.hashWithSalt` iconOptions
+
+instance
+  Prelude.NFData
+    ConditionalFormattingCustomIconCondition
+  where
+  rnf ConditionalFormattingCustomIconCondition' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf displayConfiguration
+      `Prelude.seq` Prelude.rnf expression
+      `Prelude.seq` Prelude.rnf iconOptions
+
+instance
+  Data.ToJSON
+    ConditionalFormattingCustomIconCondition
+  where
+  toJSON ConditionalFormattingCustomIconCondition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("DisplayConfiguration" Data..=)
+              Prelude.<$> displayConfiguration,
+            Prelude.Just ("Expression" Data..= expression),
+            Prelude.Just ("IconOptions" Data..= iconOptions)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingCustomIconOptions.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingCustomIconOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingCustomIconOptions.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ConditionalFormattingCustomIconOptions
+-- 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.QuickSight.Types.ConditionalFormattingCustomIconOptions 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.QuickSight.Types.Icon
+
+-- | Custom icon options for an icon set.
+--
+-- /See:/ 'newConditionalFormattingCustomIconOptions' smart constructor.
+data ConditionalFormattingCustomIconOptions = ConditionalFormattingCustomIconOptions'
+  { -- | Determines the type of icon.
+    icon :: Prelude.Maybe Icon,
+    -- | Determines the Unicode icon type.
+    unicodeIcon :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingCustomIconOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'icon', 'conditionalFormattingCustomIconOptions_icon' - Determines the type of icon.
+--
+-- 'unicodeIcon', 'conditionalFormattingCustomIconOptions_unicodeIcon' - Determines the Unicode icon type.
+newConditionalFormattingCustomIconOptions ::
+  ConditionalFormattingCustomIconOptions
+newConditionalFormattingCustomIconOptions =
+  ConditionalFormattingCustomIconOptions'
+    { icon =
+        Prelude.Nothing,
+      unicodeIcon = Prelude.Nothing
+    }
+
+-- | Determines the type of icon.
+conditionalFormattingCustomIconOptions_icon :: Lens.Lens' ConditionalFormattingCustomIconOptions (Prelude.Maybe Icon)
+conditionalFormattingCustomIconOptions_icon = Lens.lens (\ConditionalFormattingCustomIconOptions' {icon} -> icon) (\s@ConditionalFormattingCustomIconOptions' {} a -> s {icon = a} :: ConditionalFormattingCustomIconOptions)
+
+-- | Determines the Unicode icon type.
+conditionalFormattingCustomIconOptions_unicodeIcon :: Lens.Lens' ConditionalFormattingCustomIconOptions (Prelude.Maybe Prelude.Text)
+conditionalFormattingCustomIconOptions_unicodeIcon = Lens.lens (\ConditionalFormattingCustomIconOptions' {unicodeIcon} -> unicodeIcon) (\s@ConditionalFormattingCustomIconOptions' {} a -> s {unicodeIcon = a} :: ConditionalFormattingCustomIconOptions)
+
+instance
+  Data.FromJSON
+    ConditionalFormattingCustomIconOptions
+  where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingCustomIconOptions"
+      ( \x ->
+          ConditionalFormattingCustomIconOptions'
+            Prelude.<$> (x Data..:? "Icon")
+            Prelude.<*> (x Data..:? "UnicodeIcon")
+      )
+
+instance
+  Prelude.Hashable
+    ConditionalFormattingCustomIconOptions
+  where
+  hashWithSalt
+    _salt
+    ConditionalFormattingCustomIconOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` icon
+        `Prelude.hashWithSalt` unicodeIcon
+
+instance
+  Prelude.NFData
+    ConditionalFormattingCustomIconOptions
+  where
+  rnf ConditionalFormattingCustomIconOptions' {..} =
+    Prelude.rnf icon
+      `Prelude.seq` Prelude.rnf unicodeIcon
+
+instance
+  Data.ToJSON
+    ConditionalFormattingCustomIconOptions
+  where
+  toJSON ConditionalFormattingCustomIconOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Icon" Data..=) Prelude.<$> icon,
+            ("UnicodeIcon" Data..=) Prelude.<$> unicodeIcon
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingGradientColor.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingGradientColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingGradientColor.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ConditionalFormattingGradientColor
+-- 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.QuickSight.Types.ConditionalFormattingGradientColor 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.QuickSight.Types.GradientColor
+
+-- | Formatting configuration for gradient color.
+--
+-- /See:/ 'newConditionalFormattingGradientColor' smart constructor.
+data ConditionalFormattingGradientColor = ConditionalFormattingGradientColor'
+  { -- | The expression that determines the formatting configuration for gradient
+    -- color.
+    expression :: Data.Sensitive Prelude.Text,
+    -- | Determines the color.
+    color :: GradientColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingGradientColor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'expression', 'conditionalFormattingGradientColor_expression' - The expression that determines the formatting configuration for gradient
+-- color.
+--
+-- 'color', 'conditionalFormattingGradientColor_color' - Determines the color.
+newConditionalFormattingGradientColor ::
+  -- | 'expression'
+  Prelude.Text ->
+  -- | 'color'
+  GradientColor ->
+  ConditionalFormattingGradientColor
+newConditionalFormattingGradientColor
+  pExpression_
+  pColor_ =
+    ConditionalFormattingGradientColor'
+      { expression =
+          Data._Sensitive Lens.# pExpression_,
+        color = pColor_
+      }
+
+-- | The expression that determines the formatting configuration for gradient
+-- color.
+conditionalFormattingGradientColor_expression :: Lens.Lens' ConditionalFormattingGradientColor Prelude.Text
+conditionalFormattingGradientColor_expression = Lens.lens (\ConditionalFormattingGradientColor' {expression} -> expression) (\s@ConditionalFormattingGradientColor' {} a -> s {expression = a} :: ConditionalFormattingGradientColor) Prelude.. Data._Sensitive
+
+-- | Determines the color.
+conditionalFormattingGradientColor_color :: Lens.Lens' ConditionalFormattingGradientColor GradientColor
+conditionalFormattingGradientColor_color = Lens.lens (\ConditionalFormattingGradientColor' {color} -> color) (\s@ConditionalFormattingGradientColor' {} a -> s {color = a} :: ConditionalFormattingGradientColor)
+
+instance
+  Data.FromJSON
+    ConditionalFormattingGradientColor
+  where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingGradientColor"
+      ( \x ->
+          ConditionalFormattingGradientColor'
+            Prelude.<$> (x Data..: "Expression")
+            Prelude.<*> (x Data..: "Color")
+      )
+
+instance
+  Prelude.Hashable
+    ConditionalFormattingGradientColor
+  where
+  hashWithSalt
+    _salt
+    ConditionalFormattingGradientColor' {..} =
+      _salt
+        `Prelude.hashWithSalt` expression
+        `Prelude.hashWithSalt` color
+
+instance
+  Prelude.NFData
+    ConditionalFormattingGradientColor
+  where
+  rnf ConditionalFormattingGradientColor' {..} =
+    Prelude.rnf expression
+      `Prelude.seq` Prelude.rnf color
+
+instance
+  Data.ToJSON
+    ConditionalFormattingGradientColor
+  where
+  toJSON ConditionalFormattingGradientColor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Expression" Data..= expression),
+            Prelude.Just ("Color" Data..= color)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingIcon.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIcon.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIcon.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ConditionalFormattingIcon
+-- 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.QuickSight.Types.ConditionalFormattingIcon 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.QuickSight.Types.ConditionalFormattingCustomIconCondition
+import Amazonka.QuickSight.Types.ConditionalFormattingIconSet
+
+-- | The formatting configuration for the icon.
+--
+-- /See:/ 'newConditionalFormattingIcon' smart constructor.
+data ConditionalFormattingIcon = ConditionalFormattingIcon'
+  { -- | Determines the custom condition for an icon set.
+    customCondition :: Prelude.Maybe ConditionalFormattingCustomIconCondition,
+    -- | Formatting configuration for icon set.
+    iconSet :: Prelude.Maybe ConditionalFormattingIconSet
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingIcon' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customCondition', 'conditionalFormattingIcon_customCondition' - Determines the custom condition for an icon set.
+--
+-- 'iconSet', 'conditionalFormattingIcon_iconSet' - Formatting configuration for icon set.
+newConditionalFormattingIcon ::
+  ConditionalFormattingIcon
+newConditionalFormattingIcon =
+  ConditionalFormattingIcon'
+    { customCondition =
+        Prelude.Nothing,
+      iconSet = Prelude.Nothing
+    }
+
+-- | Determines the custom condition for an icon set.
+conditionalFormattingIcon_customCondition :: Lens.Lens' ConditionalFormattingIcon (Prelude.Maybe ConditionalFormattingCustomIconCondition)
+conditionalFormattingIcon_customCondition = Lens.lens (\ConditionalFormattingIcon' {customCondition} -> customCondition) (\s@ConditionalFormattingIcon' {} a -> s {customCondition = a} :: ConditionalFormattingIcon)
+
+-- | Formatting configuration for icon set.
+conditionalFormattingIcon_iconSet :: Lens.Lens' ConditionalFormattingIcon (Prelude.Maybe ConditionalFormattingIconSet)
+conditionalFormattingIcon_iconSet = Lens.lens (\ConditionalFormattingIcon' {iconSet} -> iconSet) (\s@ConditionalFormattingIcon' {} a -> s {iconSet = a} :: ConditionalFormattingIcon)
+
+instance Data.FromJSON ConditionalFormattingIcon where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingIcon"
+      ( \x ->
+          ConditionalFormattingIcon'
+            Prelude.<$> (x Data..:? "CustomCondition")
+            Prelude.<*> (x Data..:? "IconSet")
+      )
+
+instance Prelude.Hashable ConditionalFormattingIcon where
+  hashWithSalt _salt ConditionalFormattingIcon' {..} =
+    _salt
+      `Prelude.hashWithSalt` customCondition
+      `Prelude.hashWithSalt` iconSet
+
+instance Prelude.NFData ConditionalFormattingIcon where
+  rnf ConditionalFormattingIcon' {..} =
+    Prelude.rnf customCondition
+      `Prelude.seq` Prelude.rnf iconSet
+
+instance Data.ToJSON ConditionalFormattingIcon where
+  toJSON ConditionalFormattingIcon' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomCondition" Data..=)
+              Prelude.<$> customCondition,
+            ("IconSet" Data..=) Prelude.<$> iconSet
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconDisplayConfiguration.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconDisplayConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconDisplayConfiguration.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ConditionalFormattingIconDisplayConfiguration
+-- 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.QuickSight.Types.ConditionalFormattingIconDisplayConfiguration 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.QuickSight.Types.ConditionalFormattingIconDisplayOption
+
+-- | Determines the icon display configuration.
+--
+-- /See:/ 'newConditionalFormattingIconDisplayConfiguration' smart constructor.
+data ConditionalFormattingIconDisplayConfiguration = ConditionalFormattingIconDisplayConfiguration'
+  { -- | Determines the icon display configuration.
+    iconDisplayOption :: Prelude.Maybe ConditionalFormattingIconDisplayOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingIconDisplayConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iconDisplayOption', 'conditionalFormattingIconDisplayConfiguration_iconDisplayOption' - Determines the icon display configuration.
+newConditionalFormattingIconDisplayConfiguration ::
+  ConditionalFormattingIconDisplayConfiguration
+newConditionalFormattingIconDisplayConfiguration =
+  ConditionalFormattingIconDisplayConfiguration'
+    { iconDisplayOption =
+        Prelude.Nothing
+    }
+
+-- | Determines the icon display configuration.
+conditionalFormattingIconDisplayConfiguration_iconDisplayOption :: Lens.Lens' ConditionalFormattingIconDisplayConfiguration (Prelude.Maybe ConditionalFormattingIconDisplayOption)
+conditionalFormattingIconDisplayConfiguration_iconDisplayOption = Lens.lens (\ConditionalFormattingIconDisplayConfiguration' {iconDisplayOption} -> iconDisplayOption) (\s@ConditionalFormattingIconDisplayConfiguration' {} a -> s {iconDisplayOption = a} :: ConditionalFormattingIconDisplayConfiguration)
+
+instance
+  Data.FromJSON
+    ConditionalFormattingIconDisplayConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingIconDisplayConfiguration"
+      ( \x ->
+          ConditionalFormattingIconDisplayConfiguration'
+            Prelude.<$> (x Data..:? "IconDisplayOption")
+      )
+
+instance
+  Prelude.Hashable
+    ConditionalFormattingIconDisplayConfiguration
+  where
+  hashWithSalt
+    _salt
+    ConditionalFormattingIconDisplayConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` iconDisplayOption
+
+instance
+  Prelude.NFData
+    ConditionalFormattingIconDisplayConfiguration
+  where
+  rnf
+    ConditionalFormattingIconDisplayConfiguration' {..} =
+      Prelude.rnf iconDisplayOption
+
+instance
+  Data.ToJSON
+    ConditionalFormattingIconDisplayConfiguration
+  where
+  toJSON
+    ConditionalFormattingIconDisplayConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("IconDisplayOption" Data..=)
+                Prelude.<$> iconDisplayOption
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconDisplayOption.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconDisplayOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconDisplayOption.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.QuickSight.Types.ConditionalFormattingIconDisplayOption
+-- 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.QuickSight.Types.ConditionalFormattingIconDisplayOption
+  ( ConditionalFormattingIconDisplayOption
+      ( ..,
+        ConditionalFormattingIconDisplayOption_ICON_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConditionalFormattingIconDisplayOption = ConditionalFormattingIconDisplayOption'
+  { fromConditionalFormattingIconDisplayOption ::
+      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 ConditionalFormattingIconDisplayOption_ICON_ONLY :: ConditionalFormattingIconDisplayOption
+pattern ConditionalFormattingIconDisplayOption_ICON_ONLY = ConditionalFormattingIconDisplayOption' "ICON_ONLY"
+
+{-# COMPLETE
+  ConditionalFormattingIconDisplayOption_ICON_ONLY,
+  ConditionalFormattingIconDisplayOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconSet.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconSet.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ConditionalFormattingIconSet
+-- 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.QuickSight.Types.ConditionalFormattingIconSet 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.QuickSight.Types.ConditionalFormattingIconSetType
+
+-- | Formatting configuration for icon set.
+--
+-- /See:/ 'newConditionalFormattingIconSet' smart constructor.
+data ConditionalFormattingIconSet = ConditionalFormattingIconSet'
+  { -- | Determines the icon set type.
+    iconSetType :: Prelude.Maybe ConditionalFormattingIconSetType,
+    -- | The expression that determines the formatting configuration for the icon
+    -- set.
+    expression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingIconSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iconSetType', 'conditionalFormattingIconSet_iconSetType' - Determines the icon set type.
+--
+-- 'expression', 'conditionalFormattingIconSet_expression' - The expression that determines the formatting configuration for the icon
+-- set.
+newConditionalFormattingIconSet ::
+  -- | 'expression'
+  Prelude.Text ->
+  ConditionalFormattingIconSet
+newConditionalFormattingIconSet pExpression_ =
+  ConditionalFormattingIconSet'
+    { iconSetType =
+        Prelude.Nothing,
+      expression =
+        Data._Sensitive Lens.# pExpression_
+    }
+
+-- | Determines the icon set type.
+conditionalFormattingIconSet_iconSetType :: Lens.Lens' ConditionalFormattingIconSet (Prelude.Maybe ConditionalFormattingIconSetType)
+conditionalFormattingIconSet_iconSetType = Lens.lens (\ConditionalFormattingIconSet' {iconSetType} -> iconSetType) (\s@ConditionalFormattingIconSet' {} a -> s {iconSetType = a} :: ConditionalFormattingIconSet)
+
+-- | The expression that determines the formatting configuration for the icon
+-- set.
+conditionalFormattingIconSet_expression :: Lens.Lens' ConditionalFormattingIconSet Prelude.Text
+conditionalFormattingIconSet_expression = Lens.lens (\ConditionalFormattingIconSet' {expression} -> expression) (\s@ConditionalFormattingIconSet' {} a -> s {expression = a} :: ConditionalFormattingIconSet) Prelude.. Data._Sensitive
+
+instance Data.FromJSON ConditionalFormattingIconSet where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingIconSet"
+      ( \x ->
+          ConditionalFormattingIconSet'
+            Prelude.<$> (x Data..:? "IconSetType")
+            Prelude.<*> (x Data..: "Expression")
+      )
+
+instance
+  Prelude.Hashable
+    ConditionalFormattingIconSet
+  where
+  hashWithSalt _salt ConditionalFormattingIconSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` iconSetType
+      `Prelude.hashWithSalt` expression
+
+instance Prelude.NFData ConditionalFormattingIconSet where
+  rnf ConditionalFormattingIconSet' {..} =
+    Prelude.rnf iconSetType
+      `Prelude.seq` Prelude.rnf expression
+
+instance Data.ToJSON ConditionalFormattingIconSet where
+  toJSON ConditionalFormattingIconSet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IconSetType" Data..=) Prelude.<$> iconSetType,
+            Prelude.Just ("Expression" Data..= expression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconSetType.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconSetType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingIconSetType.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ConditionalFormattingIconSetType
+-- 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.QuickSight.Types.ConditionalFormattingIconSetType
+  ( ConditionalFormattingIconSetType
+      ( ..,
+        ConditionalFormattingIconSetType_BARS,
+        ConditionalFormattingIconSetType_CARET_UP_MINUS_DOWN,
+        ConditionalFormattingIconSetType_CHECK_X,
+        ConditionalFormattingIconSetType_FLAGS,
+        ConditionalFormattingIconSetType_FOUR_COLOR_ARROW,
+        ConditionalFormattingIconSetType_FOUR_GRAY_ARROW,
+        ConditionalFormattingIconSetType_PLUS_MINUS,
+        ConditionalFormattingIconSetType_THREE_CIRCLE,
+        ConditionalFormattingIconSetType_THREE_COLOR_ARROW,
+        ConditionalFormattingIconSetType_THREE_GRAY_ARROW,
+        ConditionalFormattingIconSetType_THREE_SHAPE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConditionalFormattingIconSetType = ConditionalFormattingIconSetType'
+  { fromConditionalFormattingIconSetType ::
+      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 ConditionalFormattingIconSetType_BARS :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_BARS = ConditionalFormattingIconSetType' "BARS"
+
+pattern ConditionalFormattingIconSetType_CARET_UP_MINUS_DOWN :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_CARET_UP_MINUS_DOWN = ConditionalFormattingIconSetType' "CARET_UP_MINUS_DOWN"
+
+pattern ConditionalFormattingIconSetType_CHECK_X :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_CHECK_X = ConditionalFormattingIconSetType' "CHECK_X"
+
+pattern ConditionalFormattingIconSetType_FLAGS :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_FLAGS = ConditionalFormattingIconSetType' "FLAGS"
+
+pattern ConditionalFormattingIconSetType_FOUR_COLOR_ARROW :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_FOUR_COLOR_ARROW = ConditionalFormattingIconSetType' "FOUR_COLOR_ARROW"
+
+pattern ConditionalFormattingIconSetType_FOUR_GRAY_ARROW :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_FOUR_GRAY_ARROW = ConditionalFormattingIconSetType' "FOUR_GRAY_ARROW"
+
+pattern ConditionalFormattingIconSetType_PLUS_MINUS :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_PLUS_MINUS = ConditionalFormattingIconSetType' "PLUS_MINUS"
+
+pattern ConditionalFormattingIconSetType_THREE_CIRCLE :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_THREE_CIRCLE = ConditionalFormattingIconSetType' "THREE_CIRCLE"
+
+pattern ConditionalFormattingIconSetType_THREE_COLOR_ARROW :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_THREE_COLOR_ARROW = ConditionalFormattingIconSetType' "THREE_COLOR_ARROW"
+
+pattern ConditionalFormattingIconSetType_THREE_GRAY_ARROW :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_THREE_GRAY_ARROW = ConditionalFormattingIconSetType' "THREE_GRAY_ARROW"
+
+pattern ConditionalFormattingIconSetType_THREE_SHAPE :: ConditionalFormattingIconSetType
+pattern ConditionalFormattingIconSetType_THREE_SHAPE = ConditionalFormattingIconSetType' "THREE_SHAPE"
+
+{-# COMPLETE
+  ConditionalFormattingIconSetType_BARS,
+  ConditionalFormattingIconSetType_CARET_UP_MINUS_DOWN,
+  ConditionalFormattingIconSetType_CHECK_X,
+  ConditionalFormattingIconSetType_FLAGS,
+  ConditionalFormattingIconSetType_FOUR_COLOR_ARROW,
+  ConditionalFormattingIconSetType_FOUR_GRAY_ARROW,
+  ConditionalFormattingIconSetType_PLUS_MINUS,
+  ConditionalFormattingIconSetType_THREE_CIRCLE,
+  ConditionalFormattingIconSetType_THREE_COLOR_ARROW,
+  ConditionalFormattingIconSetType_THREE_GRAY_ARROW,
+  ConditionalFormattingIconSetType_THREE_SHAPE,
+  ConditionalFormattingIconSetType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ConditionalFormattingSolidColor.hs b/gen/Amazonka/QuickSight/Types/ConditionalFormattingSolidColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ConditionalFormattingSolidColor.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.ConditionalFormattingSolidColor
+-- 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.QuickSight.Types.ConditionalFormattingSolidColor 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
+
+-- | Formatting configuration for solid color.
+--
+-- /See:/ 'newConditionalFormattingSolidColor' smart constructor.
+data ConditionalFormattingSolidColor = ConditionalFormattingSolidColor'
+  { -- | Determines the color.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | The expression that determines the formatting configuration for solid
+    -- color.
+    expression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionalFormattingSolidColor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'conditionalFormattingSolidColor_color' - Determines the color.
+--
+-- 'expression', 'conditionalFormattingSolidColor_expression' - The expression that determines the formatting configuration for solid
+-- color.
+newConditionalFormattingSolidColor ::
+  -- | 'expression'
+  Prelude.Text ->
+  ConditionalFormattingSolidColor
+newConditionalFormattingSolidColor pExpression_ =
+  ConditionalFormattingSolidColor'
+    { color =
+        Prelude.Nothing,
+      expression =
+        Data._Sensitive Lens.# pExpression_
+    }
+
+-- | Determines the color.
+conditionalFormattingSolidColor_color :: Lens.Lens' ConditionalFormattingSolidColor (Prelude.Maybe Prelude.Text)
+conditionalFormattingSolidColor_color = Lens.lens (\ConditionalFormattingSolidColor' {color} -> color) (\s@ConditionalFormattingSolidColor' {} a -> s {color = a} :: ConditionalFormattingSolidColor)
+
+-- | The expression that determines the formatting configuration for solid
+-- color.
+conditionalFormattingSolidColor_expression :: Lens.Lens' ConditionalFormattingSolidColor Prelude.Text
+conditionalFormattingSolidColor_expression = Lens.lens (\ConditionalFormattingSolidColor' {expression} -> expression) (\s@ConditionalFormattingSolidColor' {} a -> s {expression = a} :: ConditionalFormattingSolidColor) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    ConditionalFormattingSolidColor
+  where
+  parseJSON =
+    Data.withObject
+      "ConditionalFormattingSolidColor"
+      ( \x ->
+          ConditionalFormattingSolidColor'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..: "Expression")
+      )
+
+instance
+  Prelude.Hashable
+    ConditionalFormattingSolidColor
+  where
+  hashWithSalt
+    _salt
+    ConditionalFormattingSolidColor' {..} =
+      _salt
+        `Prelude.hashWithSalt` color
+        `Prelude.hashWithSalt` expression
+
+instance
+  Prelude.NFData
+    ConditionalFormattingSolidColor
+  where
+  rnf ConditionalFormattingSolidColor' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf expression
+
+instance Data.ToJSON ConditionalFormattingSolidColor where
+  toJSON ConditionalFormattingSolidColor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            Prelude.Just ("Expression" Data..= expression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ContributionAnalysisDefault.hs b/gen/Amazonka/QuickSight/Types/ContributionAnalysisDefault.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ContributionAnalysisDefault.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ContributionAnalysisDefault
+-- 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.QuickSight.Types.ContributionAnalysisDefault 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.QuickSight.Types.ColumnIdentifier
+
+-- | The contribution analysis visual display for a line, pie, or bar chart.
+--
+-- /See:/ 'newContributionAnalysisDefault' smart constructor.
+data ContributionAnalysisDefault = ContributionAnalysisDefault'
+  { -- | The measure field that is used in the contribution analysis.
+    measureFieldId :: Prelude.Text,
+    -- | The dimensions columns that are used in the contribution analysis,
+    -- usually a list of @ColumnIdentifiers@.
+    contributorDimensions :: Prelude.NonEmpty ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContributionAnalysisDefault' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'measureFieldId', 'contributionAnalysisDefault_measureFieldId' - The measure field that is used in the contribution analysis.
+--
+-- 'contributorDimensions', 'contributionAnalysisDefault_contributorDimensions' - The dimensions columns that are used in the contribution analysis,
+-- usually a list of @ColumnIdentifiers@.
+newContributionAnalysisDefault ::
+  -- | 'measureFieldId'
+  Prelude.Text ->
+  -- | 'contributorDimensions'
+  Prelude.NonEmpty ColumnIdentifier ->
+  ContributionAnalysisDefault
+newContributionAnalysisDefault
+  pMeasureFieldId_
+  pContributorDimensions_ =
+    ContributionAnalysisDefault'
+      { measureFieldId =
+          pMeasureFieldId_,
+        contributorDimensions =
+          Lens.coerced Lens.# pContributorDimensions_
+      }
+
+-- | The measure field that is used in the contribution analysis.
+contributionAnalysisDefault_measureFieldId :: Lens.Lens' ContributionAnalysisDefault Prelude.Text
+contributionAnalysisDefault_measureFieldId = Lens.lens (\ContributionAnalysisDefault' {measureFieldId} -> measureFieldId) (\s@ContributionAnalysisDefault' {} a -> s {measureFieldId = a} :: ContributionAnalysisDefault)
+
+-- | The dimensions columns that are used in the contribution analysis,
+-- usually a list of @ColumnIdentifiers@.
+contributionAnalysisDefault_contributorDimensions :: Lens.Lens' ContributionAnalysisDefault (Prelude.NonEmpty ColumnIdentifier)
+contributionAnalysisDefault_contributorDimensions = Lens.lens (\ContributionAnalysisDefault' {contributorDimensions} -> contributorDimensions) (\s@ContributionAnalysisDefault' {} a -> s {contributorDimensions = a} :: ContributionAnalysisDefault) Prelude.. Lens.coerced
+
+instance Data.FromJSON ContributionAnalysisDefault where
+  parseJSON =
+    Data.withObject
+      "ContributionAnalysisDefault"
+      ( \x ->
+          ContributionAnalysisDefault'
+            Prelude.<$> (x Data..: "MeasureFieldId")
+            Prelude.<*> (x Data..: "ContributorDimensions")
+      )
+
+instance Prelude.Hashable ContributionAnalysisDefault where
+  hashWithSalt _salt ContributionAnalysisDefault' {..} =
+    _salt
+      `Prelude.hashWithSalt` measureFieldId
+      `Prelude.hashWithSalt` contributorDimensions
+
+instance Prelude.NFData ContributionAnalysisDefault where
+  rnf ContributionAnalysisDefault' {..} =
+    Prelude.rnf measureFieldId
+      `Prelude.seq` Prelude.rnf contributorDimensions
+
+instance Data.ToJSON ContributionAnalysisDefault where
+  toJSON ContributionAnalysisDefault' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MeasureFieldId" Data..= measureFieldId),
+            Prelude.Just
+              ( "ContributorDimensions"
+                  Data..= contributorDimensions
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CreateColumnsOperation.hs b/gen/Amazonka/QuickSight/Types/CreateColumnsOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CreateColumnsOperation.hs
@@ -0,0 +1,82 @@
+{-# 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.QuickSight.Types.CreateColumnsOperation
+-- 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.QuickSight.Types.CreateColumnsOperation 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.QuickSight.Types.CalculatedColumn
+
+-- | A transform operation that creates calculated columns. Columns created
+-- in one such operation form a lexical closure.
+--
+-- /See:/ 'newCreateColumnsOperation' smart constructor.
+data CreateColumnsOperation = CreateColumnsOperation'
+  { -- | Calculated columns to create.
+    columns :: Prelude.NonEmpty CalculatedColumn
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateColumnsOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columns', 'createColumnsOperation_columns' - Calculated columns to create.
+newCreateColumnsOperation ::
+  -- | 'columns'
+  Prelude.NonEmpty CalculatedColumn ->
+  CreateColumnsOperation
+newCreateColumnsOperation pColumns_ =
+  CreateColumnsOperation'
+    { columns =
+        Lens.coerced Lens.# pColumns_
+    }
+
+-- | Calculated columns to create.
+createColumnsOperation_columns :: Lens.Lens' CreateColumnsOperation (Prelude.NonEmpty CalculatedColumn)
+createColumnsOperation_columns = Lens.lens (\CreateColumnsOperation' {columns} -> columns) (\s@CreateColumnsOperation' {} a -> s {columns = a} :: CreateColumnsOperation) Prelude.. Lens.coerced
+
+instance Data.FromJSON CreateColumnsOperation where
+  parseJSON =
+    Data.withObject
+      "CreateColumnsOperation"
+      ( \x ->
+          CreateColumnsOperation'
+            Prelude.<$> (x Data..: "Columns")
+      )
+
+instance Prelude.Hashable CreateColumnsOperation where
+  hashWithSalt _salt CreateColumnsOperation' {..} =
+    _salt `Prelude.hashWithSalt` columns
+
+instance Prelude.NFData CreateColumnsOperation where
+  rnf CreateColumnsOperation' {..} = Prelude.rnf columns
+
+instance Data.ToJSON CreateColumnsOperation where
+  toJSON CreateColumnsOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Columns" Data..= columns)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CredentialPair.hs b/gen/Amazonka/QuickSight/Types/CredentialPair.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CredentialPair.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CredentialPair
+-- 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.QuickSight.Types.CredentialPair 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.QuickSight.Types.DataSourceParameters
+
+-- | The combination of user name and password that are used as credentials.
+--
+-- /See:/ 'newCredentialPair' smart constructor.
+data CredentialPair = CredentialPair'
+  { -- | A set of alternate data source parameters that you want to share for
+    -- these credentials. The credentials are applied in tandem with the data
+    -- source parameters when you copy a data source by using a create or
+    -- update request. The API operation compares the @DataSourceParameters@
+    -- structure that\'s in the request with the structures in the
+    -- @AlternateDataSourceParameters@ allow list. If the structures are an
+    -- exact match, the request is allowed to use the new data source with the
+    -- existing credentials. If the @AlternateDataSourceParameters@ list is
+    -- null, the @DataSourceParameters@ originally used with these
+    -- @Credentials@ is automatically allowed.
+    alternateDataSourceParameters :: Prelude.Maybe (Prelude.NonEmpty DataSourceParameters),
+    -- | User name.
+    username :: Prelude.Text,
+    -- | Password.
+    password :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CredentialPair' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alternateDataSourceParameters', 'credentialPair_alternateDataSourceParameters' - A set of alternate data source parameters that you want to share for
+-- these credentials. The credentials are applied in tandem with the data
+-- source parameters when you copy a data source by using a create or
+-- update request. The API operation compares the @DataSourceParameters@
+-- structure that\'s in the request with the structures in the
+-- @AlternateDataSourceParameters@ allow list. If the structures are an
+-- exact match, the request is allowed to use the new data source with the
+-- existing credentials. If the @AlternateDataSourceParameters@ list is
+-- null, the @DataSourceParameters@ originally used with these
+-- @Credentials@ is automatically allowed.
+--
+-- 'username', 'credentialPair_username' - User name.
+--
+-- 'password', 'credentialPair_password' - Password.
+newCredentialPair ::
+  -- | 'username'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  CredentialPair
+newCredentialPair pUsername_ pPassword_ =
+  CredentialPair'
+    { alternateDataSourceParameters =
+        Prelude.Nothing,
+      username = pUsername_,
+      password = pPassword_
+    }
+
+-- | A set of alternate data source parameters that you want to share for
+-- these credentials. The credentials are applied in tandem with the data
+-- source parameters when you copy a data source by using a create or
+-- update request. The API operation compares the @DataSourceParameters@
+-- structure that\'s in the request with the structures in the
+-- @AlternateDataSourceParameters@ allow list. If the structures are an
+-- exact match, the request is allowed to use the new data source with the
+-- existing credentials. If the @AlternateDataSourceParameters@ list is
+-- null, the @DataSourceParameters@ originally used with these
+-- @Credentials@ is automatically allowed.
+credentialPair_alternateDataSourceParameters :: Lens.Lens' CredentialPair (Prelude.Maybe (Prelude.NonEmpty DataSourceParameters))
+credentialPair_alternateDataSourceParameters = Lens.lens (\CredentialPair' {alternateDataSourceParameters} -> alternateDataSourceParameters) (\s@CredentialPair' {} a -> s {alternateDataSourceParameters = a} :: CredentialPair) Prelude.. Lens.mapping Lens.coerced
+
+-- | User name.
+credentialPair_username :: Lens.Lens' CredentialPair Prelude.Text
+credentialPair_username = Lens.lens (\CredentialPair' {username} -> username) (\s@CredentialPair' {} a -> s {username = a} :: CredentialPair)
+
+-- | Password.
+credentialPair_password :: Lens.Lens' CredentialPair Prelude.Text
+credentialPair_password = Lens.lens (\CredentialPair' {password} -> password) (\s@CredentialPair' {} a -> s {password = a} :: CredentialPair)
+
+instance Prelude.Hashable CredentialPair where
+  hashWithSalt _salt CredentialPair' {..} =
+    _salt
+      `Prelude.hashWithSalt` alternateDataSourceParameters
+      `Prelude.hashWithSalt` username
+      `Prelude.hashWithSalt` password
+
+instance Prelude.NFData CredentialPair where
+  rnf CredentialPair' {..} =
+    Prelude.rnf alternateDataSourceParameters
+      `Prelude.seq` Prelude.rnf username
+      `Prelude.seq` Prelude.rnf password
+
+instance Data.ToJSON CredentialPair where
+  toJSON CredentialPair' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlternateDataSourceParameters" Data..=)
+              Prelude.<$> alternateDataSourceParameters,
+            Prelude.Just ("Username" Data..= username),
+            Prelude.Just ("Password" Data..= password)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CrossDatasetTypes.hs b/gen/Amazonka/QuickSight/Types/CrossDatasetTypes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CrossDatasetTypes.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.QuickSight.Types.CrossDatasetTypes
+-- 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.QuickSight.Types.CrossDatasetTypes
+  ( CrossDatasetTypes
+      ( ..,
+        CrossDatasetTypes_ALL_DATASETS,
+        CrossDatasetTypes_SINGLE_DATASET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CrossDatasetTypes = CrossDatasetTypes'
+  { fromCrossDatasetTypes ::
+      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 CrossDatasetTypes_ALL_DATASETS :: CrossDatasetTypes
+pattern CrossDatasetTypes_ALL_DATASETS = CrossDatasetTypes' "ALL_DATASETS"
+
+pattern CrossDatasetTypes_SINGLE_DATASET :: CrossDatasetTypes
+pattern CrossDatasetTypes_SINGLE_DATASET = CrossDatasetTypes' "SINGLE_DATASET"
+
+{-# COMPLETE
+  CrossDatasetTypes_ALL_DATASETS,
+  CrossDatasetTypes_SINGLE_DATASET,
+  CrossDatasetTypes'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/CurrencyDisplayFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/CurrencyDisplayFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CurrencyDisplayFormatConfiguration.hs
@@ -0,0 +1,198 @@
+{-# 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.QuickSight.Types.CurrencyDisplayFormatConfiguration
+-- 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.QuickSight.Types.CurrencyDisplayFormatConfiguration 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.QuickSight.Types.DecimalPlacesConfiguration
+import Amazonka.QuickSight.Types.NegativeValueConfiguration
+import Amazonka.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumberScale
+import Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+
+-- | The options that determine the currency display format configuration.
+--
+-- /See:/ 'newCurrencyDisplayFormatConfiguration' smart constructor.
+data CurrencyDisplayFormatConfiguration = CurrencyDisplayFormatConfiguration'
+  { -- | The option that determines the decimal places configuration.
+    decimalPlacesConfiguration :: Prelude.Maybe DecimalPlacesConfiguration,
+    -- | The options that determine the negative value configuration.
+    negativeValueConfiguration :: Prelude.Maybe NegativeValueConfiguration,
+    -- | The options that determine the null value format configuration.
+    nullValueFormatConfiguration :: Prelude.Maybe NullValueFormatConfiguration,
+    -- | Determines the number scale value for the currency format.
+    numberScale :: Prelude.Maybe NumberScale,
+    -- | Determines the prefix value of the currency format.
+    prefix :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The options that determine the numeric separator configuration.
+    separatorConfiguration :: Prelude.Maybe NumericSeparatorConfiguration,
+    -- | Determines the suffix value of the currency format.
+    suffix :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Determines the symbol for the currency format.
+    symbol :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CurrencyDisplayFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'decimalPlacesConfiguration', 'currencyDisplayFormatConfiguration_decimalPlacesConfiguration' - The option that determines the decimal places configuration.
+--
+-- 'negativeValueConfiguration', 'currencyDisplayFormatConfiguration_negativeValueConfiguration' - The options that determine the negative value configuration.
+--
+-- 'nullValueFormatConfiguration', 'currencyDisplayFormatConfiguration_nullValueFormatConfiguration' - The options that determine the null value format configuration.
+--
+-- 'numberScale', 'currencyDisplayFormatConfiguration_numberScale' - Determines the number scale value for the currency format.
+--
+-- 'prefix', 'currencyDisplayFormatConfiguration_prefix' - Determines the prefix value of the currency format.
+--
+-- 'separatorConfiguration', 'currencyDisplayFormatConfiguration_separatorConfiguration' - The options that determine the numeric separator configuration.
+--
+-- 'suffix', 'currencyDisplayFormatConfiguration_suffix' - Determines the suffix value of the currency format.
+--
+-- 'symbol', 'currencyDisplayFormatConfiguration_symbol' - Determines the symbol for the currency format.
+newCurrencyDisplayFormatConfiguration ::
+  CurrencyDisplayFormatConfiguration
+newCurrencyDisplayFormatConfiguration =
+  CurrencyDisplayFormatConfiguration'
+    { decimalPlacesConfiguration =
+        Prelude.Nothing,
+      negativeValueConfiguration =
+        Prelude.Nothing,
+      nullValueFormatConfiguration =
+        Prelude.Nothing,
+      numberScale = Prelude.Nothing,
+      prefix = Prelude.Nothing,
+      separatorConfiguration =
+        Prelude.Nothing,
+      suffix = Prelude.Nothing,
+      symbol = Prelude.Nothing
+    }
+
+-- | The option that determines the decimal places configuration.
+currencyDisplayFormatConfiguration_decimalPlacesConfiguration :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe DecimalPlacesConfiguration)
+currencyDisplayFormatConfiguration_decimalPlacesConfiguration = Lens.lens (\CurrencyDisplayFormatConfiguration' {decimalPlacesConfiguration} -> decimalPlacesConfiguration) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {decimalPlacesConfiguration = a} :: CurrencyDisplayFormatConfiguration)
+
+-- | The options that determine the negative value configuration.
+currencyDisplayFormatConfiguration_negativeValueConfiguration :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe NegativeValueConfiguration)
+currencyDisplayFormatConfiguration_negativeValueConfiguration = Lens.lens (\CurrencyDisplayFormatConfiguration' {negativeValueConfiguration} -> negativeValueConfiguration) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {negativeValueConfiguration = a} :: CurrencyDisplayFormatConfiguration)
+
+-- | The options that determine the null value format configuration.
+currencyDisplayFormatConfiguration_nullValueFormatConfiguration :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe NullValueFormatConfiguration)
+currencyDisplayFormatConfiguration_nullValueFormatConfiguration = Lens.lens (\CurrencyDisplayFormatConfiguration' {nullValueFormatConfiguration} -> nullValueFormatConfiguration) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {nullValueFormatConfiguration = a} :: CurrencyDisplayFormatConfiguration)
+
+-- | Determines the number scale value for the currency format.
+currencyDisplayFormatConfiguration_numberScale :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe NumberScale)
+currencyDisplayFormatConfiguration_numberScale = Lens.lens (\CurrencyDisplayFormatConfiguration' {numberScale} -> numberScale) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {numberScale = a} :: CurrencyDisplayFormatConfiguration)
+
+-- | Determines the prefix value of the currency format.
+currencyDisplayFormatConfiguration_prefix :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+currencyDisplayFormatConfiguration_prefix = Lens.lens (\CurrencyDisplayFormatConfiguration' {prefix} -> prefix) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {prefix = a} :: CurrencyDisplayFormatConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The options that determine the numeric separator configuration.
+currencyDisplayFormatConfiguration_separatorConfiguration :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe NumericSeparatorConfiguration)
+currencyDisplayFormatConfiguration_separatorConfiguration = Lens.lens (\CurrencyDisplayFormatConfiguration' {separatorConfiguration} -> separatorConfiguration) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {separatorConfiguration = a} :: CurrencyDisplayFormatConfiguration)
+
+-- | Determines the suffix value of the currency format.
+currencyDisplayFormatConfiguration_suffix :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+currencyDisplayFormatConfiguration_suffix = Lens.lens (\CurrencyDisplayFormatConfiguration' {suffix} -> suffix) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {suffix = a} :: CurrencyDisplayFormatConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Determines the symbol for the currency format.
+currencyDisplayFormatConfiguration_symbol :: Lens.Lens' CurrencyDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+currencyDisplayFormatConfiguration_symbol = Lens.lens (\CurrencyDisplayFormatConfiguration' {symbol} -> symbol) (\s@CurrencyDisplayFormatConfiguration' {} a -> s {symbol = a} :: CurrencyDisplayFormatConfiguration)
+
+instance
+  Data.FromJSON
+    CurrencyDisplayFormatConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "CurrencyDisplayFormatConfiguration"
+      ( \x ->
+          CurrencyDisplayFormatConfiguration'
+            Prelude.<$> (x Data..:? "DecimalPlacesConfiguration")
+            Prelude.<*> (x Data..:? "NegativeValueConfiguration")
+            Prelude.<*> (x Data..:? "NullValueFormatConfiguration")
+            Prelude.<*> (x Data..:? "NumberScale")
+            Prelude.<*> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..:? "SeparatorConfiguration")
+            Prelude.<*> (x Data..:? "Suffix")
+            Prelude.<*> (x Data..:? "Symbol")
+      )
+
+instance
+  Prelude.Hashable
+    CurrencyDisplayFormatConfiguration
+  where
+  hashWithSalt
+    _salt
+    CurrencyDisplayFormatConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` decimalPlacesConfiguration
+        `Prelude.hashWithSalt` negativeValueConfiguration
+        `Prelude.hashWithSalt` nullValueFormatConfiguration
+        `Prelude.hashWithSalt` numberScale
+        `Prelude.hashWithSalt` prefix
+        `Prelude.hashWithSalt` separatorConfiguration
+        `Prelude.hashWithSalt` suffix
+        `Prelude.hashWithSalt` symbol
+
+instance
+  Prelude.NFData
+    CurrencyDisplayFormatConfiguration
+  where
+  rnf CurrencyDisplayFormatConfiguration' {..} =
+    Prelude.rnf decimalPlacesConfiguration
+      `Prelude.seq` Prelude.rnf negativeValueConfiguration
+      `Prelude.seq` Prelude.rnf nullValueFormatConfiguration
+      `Prelude.seq` Prelude.rnf numberScale
+      `Prelude.seq` Prelude.rnf prefix
+      `Prelude.seq` Prelude.rnf separatorConfiguration
+      `Prelude.seq` Prelude.rnf suffix
+      `Prelude.seq` Prelude.rnf symbol
+
+instance
+  Data.ToJSON
+    CurrencyDisplayFormatConfiguration
+  where
+  toJSON CurrencyDisplayFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DecimalPlacesConfiguration" Data..=)
+              Prelude.<$> decimalPlacesConfiguration,
+            ("NegativeValueConfiguration" Data..=)
+              Prelude.<$> negativeValueConfiguration,
+            ("NullValueFormatConfiguration" Data..=)
+              Prelude.<$> nullValueFormatConfiguration,
+            ("NumberScale" Data..=) Prelude.<$> numberScale,
+            ("Prefix" Data..=) Prelude.<$> prefix,
+            ("SeparatorConfiguration" Data..=)
+              Prelude.<$> separatorConfiguration,
+            ("Suffix" Data..=) Prelude.<$> suffix,
+            ("Symbol" Data..=) Prelude.<$> symbol
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomActionFilterOperation.hs b/gen/Amazonka/QuickSight/Types/CustomActionFilterOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomActionFilterOperation.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.CustomActionFilterOperation
+-- 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.QuickSight.Types.CustomActionFilterOperation 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.QuickSight.Types.FilterOperationSelectedFieldsConfiguration
+import Amazonka.QuickSight.Types.FilterOperationTargetVisualsConfiguration
+
+-- | The filter operation that filters data included in a visual or in an
+-- entire sheet.
+--
+-- /See:/ 'newCustomActionFilterOperation' smart constructor.
+data CustomActionFilterOperation = CustomActionFilterOperation'
+  { -- | The configuration that chooses the fields to be filtered.
+    selectedFieldsConfiguration :: FilterOperationSelectedFieldsConfiguration,
+    -- | The configuration that chooses the target visuals to be filtered.
+    targetVisualsConfiguration :: FilterOperationTargetVisualsConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomActionFilterOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selectedFieldsConfiguration', 'customActionFilterOperation_selectedFieldsConfiguration' - The configuration that chooses the fields to be filtered.
+--
+-- 'targetVisualsConfiguration', 'customActionFilterOperation_targetVisualsConfiguration' - The configuration that chooses the target visuals to be filtered.
+newCustomActionFilterOperation ::
+  -- | 'selectedFieldsConfiguration'
+  FilterOperationSelectedFieldsConfiguration ->
+  -- | 'targetVisualsConfiguration'
+  FilterOperationTargetVisualsConfiguration ->
+  CustomActionFilterOperation
+newCustomActionFilterOperation
+  pSelectedFieldsConfiguration_
+  pTargetVisualsConfiguration_ =
+    CustomActionFilterOperation'
+      { selectedFieldsConfiguration =
+          pSelectedFieldsConfiguration_,
+        targetVisualsConfiguration =
+          pTargetVisualsConfiguration_
+      }
+
+-- | The configuration that chooses the fields to be filtered.
+customActionFilterOperation_selectedFieldsConfiguration :: Lens.Lens' CustomActionFilterOperation FilterOperationSelectedFieldsConfiguration
+customActionFilterOperation_selectedFieldsConfiguration = Lens.lens (\CustomActionFilterOperation' {selectedFieldsConfiguration} -> selectedFieldsConfiguration) (\s@CustomActionFilterOperation' {} a -> s {selectedFieldsConfiguration = a} :: CustomActionFilterOperation)
+
+-- | The configuration that chooses the target visuals to be filtered.
+customActionFilterOperation_targetVisualsConfiguration :: Lens.Lens' CustomActionFilterOperation FilterOperationTargetVisualsConfiguration
+customActionFilterOperation_targetVisualsConfiguration = Lens.lens (\CustomActionFilterOperation' {targetVisualsConfiguration} -> targetVisualsConfiguration) (\s@CustomActionFilterOperation' {} a -> s {targetVisualsConfiguration = a} :: CustomActionFilterOperation)
+
+instance Data.FromJSON CustomActionFilterOperation where
+  parseJSON =
+    Data.withObject
+      "CustomActionFilterOperation"
+      ( \x ->
+          CustomActionFilterOperation'
+            Prelude.<$> (x Data..: "SelectedFieldsConfiguration")
+            Prelude.<*> (x Data..: "TargetVisualsConfiguration")
+      )
+
+instance Prelude.Hashable CustomActionFilterOperation where
+  hashWithSalt _salt CustomActionFilterOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` selectedFieldsConfiguration
+      `Prelude.hashWithSalt` targetVisualsConfiguration
+
+instance Prelude.NFData CustomActionFilterOperation where
+  rnf CustomActionFilterOperation' {..} =
+    Prelude.rnf selectedFieldsConfiguration
+      `Prelude.seq` Prelude.rnf targetVisualsConfiguration
+
+instance Data.ToJSON CustomActionFilterOperation where
+  toJSON CustomActionFilterOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "SelectedFieldsConfiguration"
+                  Data..= selectedFieldsConfiguration
+              ),
+            Prelude.Just
+              ( "TargetVisualsConfiguration"
+                  Data..= targetVisualsConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomActionNavigationOperation.hs b/gen/Amazonka/QuickSight/Types/CustomActionNavigationOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomActionNavigationOperation.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CustomActionNavigationOperation
+-- 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.QuickSight.Types.CustomActionNavigationOperation 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.QuickSight.Types.LocalNavigationConfiguration
+
+-- | The navigation operation that navigates between different sheets in the
+-- same analysis.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newCustomActionNavigationOperation' smart constructor.
+data CustomActionNavigationOperation = CustomActionNavigationOperation'
+  { -- | The configuration that chooses the navigation target.
+    localNavigationConfiguration :: Prelude.Maybe LocalNavigationConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomActionNavigationOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'localNavigationConfiguration', 'customActionNavigationOperation_localNavigationConfiguration' - The configuration that chooses the navigation target.
+newCustomActionNavigationOperation ::
+  CustomActionNavigationOperation
+newCustomActionNavigationOperation =
+  CustomActionNavigationOperation'
+    { localNavigationConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The configuration that chooses the navigation target.
+customActionNavigationOperation_localNavigationConfiguration :: Lens.Lens' CustomActionNavigationOperation (Prelude.Maybe LocalNavigationConfiguration)
+customActionNavigationOperation_localNavigationConfiguration = Lens.lens (\CustomActionNavigationOperation' {localNavigationConfiguration} -> localNavigationConfiguration) (\s@CustomActionNavigationOperation' {} a -> s {localNavigationConfiguration = a} :: CustomActionNavigationOperation)
+
+instance
+  Data.FromJSON
+    CustomActionNavigationOperation
+  where
+  parseJSON =
+    Data.withObject
+      "CustomActionNavigationOperation"
+      ( \x ->
+          CustomActionNavigationOperation'
+            Prelude.<$> (x Data..:? "LocalNavigationConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    CustomActionNavigationOperation
+  where
+  hashWithSalt
+    _salt
+    CustomActionNavigationOperation' {..} =
+      _salt
+        `Prelude.hashWithSalt` localNavigationConfiguration
+
+instance
+  Prelude.NFData
+    CustomActionNavigationOperation
+  where
+  rnf CustomActionNavigationOperation' {..} =
+    Prelude.rnf localNavigationConfiguration
+
+instance Data.ToJSON CustomActionNavigationOperation where
+  toJSON CustomActionNavigationOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LocalNavigationConfiguration" Data..=)
+              Prelude.<$> localNavigationConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomActionSetParametersOperation.hs b/gen/Amazonka/QuickSight/Types/CustomActionSetParametersOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomActionSetParametersOperation.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CustomActionSetParametersOperation
+-- 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.QuickSight.Types.CustomActionSetParametersOperation 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.QuickSight.Types.SetParameterValueConfiguration
+
+-- | The set parameter operation that sets parameters in custom action.
+--
+-- /See:/ 'newCustomActionSetParametersOperation' smart constructor.
+data CustomActionSetParametersOperation = CustomActionSetParametersOperation'
+  { -- | The parameter that determines the value configuration.
+    parameterValueConfigurations :: Prelude.NonEmpty SetParameterValueConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomActionSetParametersOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'parameterValueConfigurations', 'customActionSetParametersOperation_parameterValueConfigurations' - The parameter that determines the value configuration.
+newCustomActionSetParametersOperation ::
+  -- | 'parameterValueConfigurations'
+  Prelude.NonEmpty SetParameterValueConfiguration ->
+  CustomActionSetParametersOperation
+newCustomActionSetParametersOperation
+  pParameterValueConfigurations_ =
+    CustomActionSetParametersOperation'
+      { parameterValueConfigurations =
+          Lens.coerced
+            Lens.# pParameterValueConfigurations_
+      }
+
+-- | The parameter that determines the value configuration.
+customActionSetParametersOperation_parameterValueConfigurations :: Lens.Lens' CustomActionSetParametersOperation (Prelude.NonEmpty SetParameterValueConfiguration)
+customActionSetParametersOperation_parameterValueConfigurations = Lens.lens (\CustomActionSetParametersOperation' {parameterValueConfigurations} -> parameterValueConfigurations) (\s@CustomActionSetParametersOperation' {} a -> s {parameterValueConfigurations = a} :: CustomActionSetParametersOperation) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    CustomActionSetParametersOperation
+  where
+  parseJSON =
+    Data.withObject
+      "CustomActionSetParametersOperation"
+      ( \x ->
+          CustomActionSetParametersOperation'
+            Prelude.<$> (x Data..: "ParameterValueConfigurations")
+      )
+
+instance
+  Prelude.Hashable
+    CustomActionSetParametersOperation
+  where
+  hashWithSalt
+    _salt
+    CustomActionSetParametersOperation' {..} =
+      _salt
+        `Prelude.hashWithSalt` parameterValueConfigurations
+
+instance
+  Prelude.NFData
+    CustomActionSetParametersOperation
+  where
+  rnf CustomActionSetParametersOperation' {..} =
+    Prelude.rnf parameterValueConfigurations
+
+instance
+  Data.ToJSON
+    CustomActionSetParametersOperation
+  where
+  toJSON CustomActionSetParametersOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ParameterValueConfigurations"
+                  Data..= parameterValueConfigurations
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomActionURLOperation.hs b/gen/Amazonka/QuickSight/Types/CustomActionURLOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomActionURLOperation.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CustomActionURLOperation
+-- 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.QuickSight.Types.CustomActionURLOperation 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.QuickSight.Types.URLTargetConfiguration
+
+-- | The URL operation that opens a link to another webpage.
+--
+-- /See:/ 'newCustomActionURLOperation' smart constructor.
+data CustomActionURLOperation = CustomActionURLOperation'
+  { -- | THe URL link of the @CustomActionURLOperation@.
+    uRLTemplate :: Prelude.Text,
+    -- | The target of the @CustomActionURLOperation@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @NEW_TAB@: Opens the target URL in a new browser tab.
+    --
+    -- -   @NEW_WINDOW@: Opens the target URL in a new browser window.
+    --
+    -- -   @SAME_TAB@: Opens the target URL in the same browser tab.
+    uRLTarget :: URLTargetConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomActionURLOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'uRLTemplate', 'customActionURLOperation_uRLTemplate' - THe URL link of the @CustomActionURLOperation@.
+--
+-- 'uRLTarget', 'customActionURLOperation_uRLTarget' - The target of the @CustomActionURLOperation@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @NEW_TAB@: Opens the target URL in a new browser tab.
+--
+-- -   @NEW_WINDOW@: Opens the target URL in a new browser window.
+--
+-- -   @SAME_TAB@: Opens the target URL in the same browser tab.
+newCustomActionURLOperation ::
+  -- | 'uRLTemplate'
+  Prelude.Text ->
+  -- | 'uRLTarget'
+  URLTargetConfiguration ->
+  CustomActionURLOperation
+newCustomActionURLOperation pURLTemplate_ pURLTarget_ =
+  CustomActionURLOperation'
+    { uRLTemplate =
+        pURLTemplate_,
+      uRLTarget = pURLTarget_
+    }
+
+-- | THe URL link of the @CustomActionURLOperation@.
+customActionURLOperation_uRLTemplate :: Lens.Lens' CustomActionURLOperation Prelude.Text
+customActionURLOperation_uRLTemplate = Lens.lens (\CustomActionURLOperation' {uRLTemplate} -> uRLTemplate) (\s@CustomActionURLOperation' {} a -> s {uRLTemplate = a} :: CustomActionURLOperation)
+
+-- | The target of the @CustomActionURLOperation@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @NEW_TAB@: Opens the target URL in a new browser tab.
+--
+-- -   @NEW_WINDOW@: Opens the target URL in a new browser window.
+--
+-- -   @SAME_TAB@: Opens the target URL in the same browser tab.
+customActionURLOperation_uRLTarget :: Lens.Lens' CustomActionURLOperation URLTargetConfiguration
+customActionURLOperation_uRLTarget = Lens.lens (\CustomActionURLOperation' {uRLTarget} -> uRLTarget) (\s@CustomActionURLOperation' {} a -> s {uRLTarget = a} :: CustomActionURLOperation)
+
+instance Data.FromJSON CustomActionURLOperation where
+  parseJSON =
+    Data.withObject
+      "CustomActionURLOperation"
+      ( \x ->
+          CustomActionURLOperation'
+            Prelude.<$> (x Data..: "URLTemplate")
+            Prelude.<*> (x Data..: "URLTarget")
+      )
+
+instance Prelude.Hashable CustomActionURLOperation where
+  hashWithSalt _salt CustomActionURLOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` uRLTemplate
+      `Prelude.hashWithSalt` uRLTarget
+
+instance Prelude.NFData CustomActionURLOperation where
+  rnf CustomActionURLOperation' {..} =
+    Prelude.rnf uRLTemplate
+      `Prelude.seq` Prelude.rnf uRLTarget
+
+instance Data.ToJSON CustomActionURLOperation where
+  toJSON CustomActionURLOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("URLTemplate" Data..= uRLTemplate),
+            Prelude.Just ("URLTarget" Data..= uRLTarget)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomContentConfiguration.hs b/gen/Amazonka/QuickSight/Types/CustomContentConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomContentConfiguration.hs
@@ -0,0 +1,121 @@
+{-# 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.QuickSight.Types.CustomContentConfiguration
+-- 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.QuickSight.Types.CustomContentConfiguration 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.QuickSight.Types.CustomContentImageScalingConfiguration
+import Amazonka.QuickSight.Types.CustomContentType
+
+-- | The configuration of a @CustomContentVisual@.
+--
+-- /See:/ 'newCustomContentConfiguration' smart constructor.
+data CustomContentConfiguration = CustomContentConfiguration'
+  { -- | The content type of the custom content visual. You can use this to have
+    -- the visual render as an image.
+    contentType :: Prelude.Maybe CustomContentType,
+    -- | The input URL that links to the custom content that you want in the
+    -- custom visual.
+    contentUrl :: Prelude.Maybe Prelude.Text,
+    -- | The sizing options for the size of the custom content visual. This
+    -- structure is required when the @ContentType@ of the visual is
+    -- @\'IMAGE\'@.
+    imageScaling :: Prelude.Maybe CustomContentImageScalingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomContentConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'contentType', 'customContentConfiguration_contentType' - The content type of the custom content visual. You can use this to have
+-- the visual render as an image.
+--
+-- 'contentUrl', 'customContentConfiguration_contentUrl' - The input URL that links to the custom content that you want in the
+-- custom visual.
+--
+-- 'imageScaling', 'customContentConfiguration_imageScaling' - The sizing options for the size of the custom content visual. This
+-- structure is required when the @ContentType@ of the visual is
+-- @\'IMAGE\'@.
+newCustomContentConfiguration ::
+  CustomContentConfiguration
+newCustomContentConfiguration =
+  CustomContentConfiguration'
+    { contentType =
+        Prelude.Nothing,
+      contentUrl = Prelude.Nothing,
+      imageScaling = Prelude.Nothing
+    }
+
+-- | The content type of the custom content visual. You can use this to have
+-- the visual render as an image.
+customContentConfiguration_contentType :: Lens.Lens' CustomContentConfiguration (Prelude.Maybe CustomContentType)
+customContentConfiguration_contentType = Lens.lens (\CustomContentConfiguration' {contentType} -> contentType) (\s@CustomContentConfiguration' {} a -> s {contentType = a} :: CustomContentConfiguration)
+
+-- | The input URL that links to the custom content that you want in the
+-- custom visual.
+customContentConfiguration_contentUrl :: Lens.Lens' CustomContentConfiguration (Prelude.Maybe Prelude.Text)
+customContentConfiguration_contentUrl = Lens.lens (\CustomContentConfiguration' {contentUrl} -> contentUrl) (\s@CustomContentConfiguration' {} a -> s {contentUrl = a} :: CustomContentConfiguration)
+
+-- | The sizing options for the size of the custom content visual. This
+-- structure is required when the @ContentType@ of the visual is
+-- @\'IMAGE\'@.
+customContentConfiguration_imageScaling :: Lens.Lens' CustomContentConfiguration (Prelude.Maybe CustomContentImageScalingConfiguration)
+customContentConfiguration_imageScaling = Lens.lens (\CustomContentConfiguration' {imageScaling} -> imageScaling) (\s@CustomContentConfiguration' {} a -> s {imageScaling = a} :: CustomContentConfiguration)
+
+instance Data.FromJSON CustomContentConfiguration where
+  parseJSON =
+    Data.withObject
+      "CustomContentConfiguration"
+      ( \x ->
+          CustomContentConfiguration'
+            Prelude.<$> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..:? "ContentUrl")
+            Prelude.<*> (x Data..:? "ImageScaling")
+      )
+
+instance Prelude.Hashable CustomContentConfiguration where
+  hashWithSalt _salt CustomContentConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` contentUrl
+      `Prelude.hashWithSalt` imageScaling
+
+instance Prelude.NFData CustomContentConfiguration where
+  rnf CustomContentConfiguration' {..} =
+    Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf contentUrl
+      `Prelude.seq` Prelude.rnf imageScaling
+
+instance Data.ToJSON CustomContentConfiguration where
+  toJSON CustomContentConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentType" Data..=) Prelude.<$> contentType,
+            ("ContentUrl" Data..=) Prelude.<$> contentUrl,
+            ("ImageScaling" Data..=) Prelude.<$> imageScaling
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomContentImageScalingConfiguration.hs b/gen/Amazonka/QuickSight/Types/CustomContentImageScalingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomContentImageScalingConfiguration.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.QuickSight.Types.CustomContentImageScalingConfiguration
+-- 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.QuickSight.Types.CustomContentImageScalingConfiguration
+  ( CustomContentImageScalingConfiguration
+      ( ..,
+        CustomContentImageScalingConfiguration_DO_NOT_SCALE,
+        CustomContentImageScalingConfiguration_FIT_TO_HEIGHT,
+        CustomContentImageScalingConfiguration_FIT_TO_WIDTH,
+        CustomContentImageScalingConfiguration_SCALE_TO_VISUAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CustomContentImageScalingConfiguration = CustomContentImageScalingConfiguration'
+  { fromCustomContentImageScalingConfiguration ::
+      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 CustomContentImageScalingConfiguration_DO_NOT_SCALE :: CustomContentImageScalingConfiguration
+pattern CustomContentImageScalingConfiguration_DO_NOT_SCALE = CustomContentImageScalingConfiguration' "DO_NOT_SCALE"
+
+pattern CustomContentImageScalingConfiguration_FIT_TO_HEIGHT :: CustomContentImageScalingConfiguration
+pattern CustomContentImageScalingConfiguration_FIT_TO_HEIGHT = CustomContentImageScalingConfiguration' "FIT_TO_HEIGHT"
+
+pattern CustomContentImageScalingConfiguration_FIT_TO_WIDTH :: CustomContentImageScalingConfiguration
+pattern CustomContentImageScalingConfiguration_FIT_TO_WIDTH = CustomContentImageScalingConfiguration' "FIT_TO_WIDTH"
+
+pattern CustomContentImageScalingConfiguration_SCALE_TO_VISUAL :: CustomContentImageScalingConfiguration
+pattern CustomContentImageScalingConfiguration_SCALE_TO_VISUAL = CustomContentImageScalingConfiguration' "SCALE_TO_VISUAL"
+
+{-# COMPLETE
+  CustomContentImageScalingConfiguration_DO_NOT_SCALE,
+  CustomContentImageScalingConfiguration_FIT_TO_HEIGHT,
+  CustomContentImageScalingConfiguration_FIT_TO_WIDTH,
+  CustomContentImageScalingConfiguration_SCALE_TO_VISUAL,
+  CustomContentImageScalingConfiguration'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/CustomContentType.hs b/gen/Amazonka/QuickSight/Types/CustomContentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomContentType.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.QuickSight.Types.CustomContentType
+-- 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.QuickSight.Types.CustomContentType
+  ( CustomContentType
+      ( ..,
+        CustomContentType_IMAGE,
+        CustomContentType_OTHER_EMBEDDED_CONTENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CustomContentType = CustomContentType'
+  { fromCustomContentType ::
+      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 CustomContentType_IMAGE :: CustomContentType
+pattern CustomContentType_IMAGE = CustomContentType' "IMAGE"
+
+pattern CustomContentType_OTHER_EMBEDDED_CONTENT :: CustomContentType
+pattern CustomContentType_OTHER_EMBEDDED_CONTENT = CustomContentType' "OTHER_EMBEDDED_CONTENT"
+
+{-# COMPLETE
+  CustomContentType_IMAGE,
+  CustomContentType_OTHER_EMBEDDED_CONTENT,
+  CustomContentType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/CustomContentVisual.hs b/gen/Amazonka/QuickSight/Types/CustomContentVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomContentVisual.hs
@@ -0,0 +1,168 @@
+{-# 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.QuickSight.Types.CustomContentVisual
+-- 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.QuickSight.Types.CustomContentVisual 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.QuickSight.Types.CustomContentConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A visual that contains custom content.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/custom-visual-content.html Using custom visual content>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newCustomContentVisual' smart constructor.
+data CustomContentVisual = CustomContentVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a @CustomContentVisual@.
+    chartConfiguration :: Prelude.Maybe CustomContentConfiguration,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text,
+    -- | The dataset that is used to create the custom content visual. You can\'t
+    -- create a visual without a dataset.
+    dataSetIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomContentVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'customContentVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'customContentVisual_chartConfiguration' - The configuration of a @CustomContentVisual@.
+--
+-- 'subtitle', 'customContentVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'customContentVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'customContentVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+--
+-- 'dataSetIdentifier', 'customContentVisual_dataSetIdentifier' - The dataset that is used to create the custom content visual. You can\'t
+-- create a visual without a dataset.
+newCustomContentVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  -- | 'dataSetIdentifier'
+  Prelude.Text ->
+  CustomContentVisual
+newCustomContentVisual pVisualId_ pDataSetIdentifier_ =
+  CustomContentVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_,
+      dataSetIdentifier = pDataSetIdentifier_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+customContentVisual_actions :: Lens.Lens' CustomContentVisual (Prelude.Maybe [VisualCustomAction])
+customContentVisual_actions = Lens.lens (\CustomContentVisual' {actions} -> actions) (\s@CustomContentVisual' {} a -> s {actions = a} :: CustomContentVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a @CustomContentVisual@.
+customContentVisual_chartConfiguration :: Lens.Lens' CustomContentVisual (Prelude.Maybe CustomContentConfiguration)
+customContentVisual_chartConfiguration = Lens.lens (\CustomContentVisual' {chartConfiguration} -> chartConfiguration) (\s@CustomContentVisual' {} a -> s {chartConfiguration = a} :: CustomContentVisual)
+
+-- | The subtitle that is displayed on the visual.
+customContentVisual_subtitle :: Lens.Lens' CustomContentVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+customContentVisual_subtitle = Lens.lens (\CustomContentVisual' {subtitle} -> subtitle) (\s@CustomContentVisual' {} a -> s {subtitle = a} :: CustomContentVisual)
+
+-- | The title that is displayed on the visual.
+customContentVisual_title :: Lens.Lens' CustomContentVisual (Prelude.Maybe VisualTitleLabelOptions)
+customContentVisual_title = Lens.lens (\CustomContentVisual' {title} -> title) (\s@CustomContentVisual' {} a -> s {title = a} :: CustomContentVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+customContentVisual_visualId :: Lens.Lens' CustomContentVisual Prelude.Text
+customContentVisual_visualId = Lens.lens (\CustomContentVisual' {visualId} -> visualId) (\s@CustomContentVisual' {} a -> s {visualId = a} :: CustomContentVisual)
+
+-- | The dataset that is used to create the custom content visual. You can\'t
+-- create a visual without a dataset.
+customContentVisual_dataSetIdentifier :: Lens.Lens' CustomContentVisual Prelude.Text
+customContentVisual_dataSetIdentifier = Lens.lens (\CustomContentVisual' {dataSetIdentifier} -> dataSetIdentifier) (\s@CustomContentVisual' {} a -> s {dataSetIdentifier = a} :: CustomContentVisual)
+
+instance Data.FromJSON CustomContentVisual where
+  parseJSON =
+    Data.withObject
+      "CustomContentVisual"
+      ( \x ->
+          CustomContentVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+            Prelude.<*> (x Data..: "DataSetIdentifier")
+      )
+
+instance Prelude.Hashable CustomContentVisual where
+  hashWithSalt _salt CustomContentVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+      `Prelude.hashWithSalt` dataSetIdentifier
+
+instance Prelude.NFData CustomContentVisual where
+  rnf CustomContentVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+      `Prelude.seq` Prelude.rnf dataSetIdentifier
+
+instance Data.ToJSON CustomContentVisual where
+  toJSON CustomContentVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId),
+            Prelude.Just
+              ("DataSetIdentifier" Data..= dataSetIdentifier)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomFilterConfiguration.hs b/gen/Amazonka/QuickSight/Types/CustomFilterConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomFilterConfiguration.hs
@@ -0,0 +1,186 @@
+{-# 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.QuickSight.Types.CustomFilterConfiguration
+-- 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.QuickSight.Types.CustomFilterConfiguration 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.QuickSight.Types.CategoryFilterMatchOperator
+import Amazonka.QuickSight.Types.CategoryFilterSelectAllOptions
+import Amazonka.QuickSight.Types.FilterNullOption
+
+-- | A custom filter that filters based on a single value. This filter can be
+-- partially matched.
+--
+-- /See:/ 'newCustomFilterConfiguration' smart constructor.
+data CustomFilterConfiguration = CustomFilterConfiguration'
+  { -- | The category value for the filter.
+    --
+    -- This field is mutually exclusive to @ParameterName@.
+    categoryValue :: Prelude.Maybe Prelude.Text,
+    -- | The parameter whose value should be used for the filter value.
+    --
+    -- This field is mutually exclusive to @CategoryValue@.
+    parameterName :: Prelude.Maybe Prelude.Text,
+    -- | Select all of the values. Null is not the assigned value of select all.
+    --
+    -- -   @FILTER_ALL_VALUES@
+    selectAllOptions :: Prelude.Maybe CategoryFilterSelectAllOptions,
+    -- | The match operator that is used to determine if a filter should be
+    -- applied.
+    matchOperator :: CategoryFilterMatchOperator,
+    -- | This option determines how null values should be treated when filtering
+    -- data.
+    --
+    -- -   @ALL_VALUES@: Include null values in filtered results.
+    --
+    -- -   @NULLS_ONLY@: Only include null values in filtered results.
+    --
+    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+    nullOption :: FilterNullOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomFilterConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryValue', 'customFilterConfiguration_categoryValue' - The category value for the filter.
+--
+-- This field is mutually exclusive to @ParameterName@.
+--
+-- 'parameterName', 'customFilterConfiguration_parameterName' - The parameter whose value should be used for the filter value.
+--
+-- This field is mutually exclusive to @CategoryValue@.
+--
+-- 'selectAllOptions', 'customFilterConfiguration_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+--
+-- 'matchOperator', 'customFilterConfiguration_matchOperator' - The match operator that is used to determine if a filter should be
+-- applied.
+--
+-- 'nullOption', 'customFilterConfiguration_nullOption' - This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+newCustomFilterConfiguration ::
+  -- | 'matchOperator'
+  CategoryFilterMatchOperator ->
+  -- | 'nullOption'
+  FilterNullOption ->
+  CustomFilterConfiguration
+newCustomFilterConfiguration
+  pMatchOperator_
+  pNullOption_ =
+    CustomFilterConfiguration'
+      { categoryValue =
+          Prelude.Nothing,
+        parameterName = Prelude.Nothing,
+        selectAllOptions = Prelude.Nothing,
+        matchOperator = pMatchOperator_,
+        nullOption = pNullOption_
+      }
+
+-- | The category value for the filter.
+--
+-- This field is mutually exclusive to @ParameterName@.
+customFilterConfiguration_categoryValue :: Lens.Lens' CustomFilterConfiguration (Prelude.Maybe Prelude.Text)
+customFilterConfiguration_categoryValue = Lens.lens (\CustomFilterConfiguration' {categoryValue} -> categoryValue) (\s@CustomFilterConfiguration' {} a -> s {categoryValue = a} :: CustomFilterConfiguration)
+
+-- | The parameter whose value should be used for the filter value.
+--
+-- This field is mutually exclusive to @CategoryValue@.
+customFilterConfiguration_parameterName :: Lens.Lens' CustomFilterConfiguration (Prelude.Maybe Prelude.Text)
+customFilterConfiguration_parameterName = Lens.lens (\CustomFilterConfiguration' {parameterName} -> parameterName) (\s@CustomFilterConfiguration' {} a -> s {parameterName = a} :: CustomFilterConfiguration)
+
+-- | Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+customFilterConfiguration_selectAllOptions :: Lens.Lens' CustomFilterConfiguration (Prelude.Maybe CategoryFilterSelectAllOptions)
+customFilterConfiguration_selectAllOptions = Lens.lens (\CustomFilterConfiguration' {selectAllOptions} -> selectAllOptions) (\s@CustomFilterConfiguration' {} a -> s {selectAllOptions = a} :: CustomFilterConfiguration)
+
+-- | The match operator that is used to determine if a filter should be
+-- applied.
+customFilterConfiguration_matchOperator :: Lens.Lens' CustomFilterConfiguration CategoryFilterMatchOperator
+customFilterConfiguration_matchOperator = Lens.lens (\CustomFilterConfiguration' {matchOperator} -> matchOperator) (\s@CustomFilterConfiguration' {} a -> s {matchOperator = a} :: CustomFilterConfiguration)
+
+-- | This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+customFilterConfiguration_nullOption :: Lens.Lens' CustomFilterConfiguration FilterNullOption
+customFilterConfiguration_nullOption = Lens.lens (\CustomFilterConfiguration' {nullOption} -> nullOption) (\s@CustomFilterConfiguration' {} a -> s {nullOption = a} :: CustomFilterConfiguration)
+
+instance Data.FromJSON CustomFilterConfiguration where
+  parseJSON =
+    Data.withObject
+      "CustomFilterConfiguration"
+      ( \x ->
+          CustomFilterConfiguration'
+            Prelude.<$> (x Data..:? "CategoryValue")
+            Prelude.<*> (x Data..:? "ParameterName")
+            Prelude.<*> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..: "MatchOperator")
+            Prelude.<*> (x Data..: "NullOption")
+      )
+
+instance Prelude.Hashable CustomFilterConfiguration where
+  hashWithSalt _salt CustomFilterConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryValue
+      `Prelude.hashWithSalt` parameterName
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` matchOperator
+      `Prelude.hashWithSalt` nullOption
+
+instance Prelude.NFData CustomFilterConfiguration where
+  rnf CustomFilterConfiguration' {..} =
+    Prelude.rnf categoryValue
+      `Prelude.seq` Prelude.rnf parameterName
+      `Prelude.seq` Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf matchOperator
+      `Prelude.seq` Prelude.rnf nullOption
+
+instance Data.ToJSON CustomFilterConfiguration where
+  toJSON CustomFilterConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryValue" Data..=) Prelude.<$> categoryValue,
+            ("ParameterName" Data..=) Prelude.<$> parameterName,
+            ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            Prelude.Just ("MatchOperator" Data..= matchOperator),
+            Prelude.Just ("NullOption" Data..= nullOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomFilterListConfiguration.hs b/gen/Amazonka/QuickSight/Types/CustomFilterListConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomFilterListConfiguration.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.QuickSight.Types.CustomFilterListConfiguration
+-- 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.QuickSight.Types.CustomFilterListConfiguration 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.QuickSight.Types.CategoryFilterMatchOperator
+import Amazonka.QuickSight.Types.CategoryFilterSelectAllOptions
+import Amazonka.QuickSight.Types.FilterNullOption
+
+-- | A list of custom filter values.
+--
+-- /See:/ 'newCustomFilterListConfiguration' smart constructor.
+data CustomFilterListConfiguration = CustomFilterListConfiguration'
+  { -- | The list of category values for the filter.
+    categoryValues :: Prelude.Maybe [Prelude.Text],
+    -- | Select all of the values. Null is not the assigned value of select all.
+    --
+    -- -   @FILTER_ALL_VALUES@
+    selectAllOptions :: Prelude.Maybe CategoryFilterSelectAllOptions,
+    -- | The match operator that is used to determine if a filter should be
+    -- applied.
+    matchOperator :: CategoryFilterMatchOperator,
+    -- | This option determines how null values should be treated when filtering
+    -- data.
+    --
+    -- -   @ALL_VALUES@: Include null values in filtered results.
+    --
+    -- -   @NULLS_ONLY@: Only include null values in filtered results.
+    --
+    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+    nullOption :: FilterNullOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomFilterListConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryValues', 'customFilterListConfiguration_categoryValues' - The list of category values for the filter.
+--
+-- 'selectAllOptions', 'customFilterListConfiguration_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+--
+-- 'matchOperator', 'customFilterListConfiguration_matchOperator' - The match operator that is used to determine if a filter should be
+-- applied.
+--
+-- 'nullOption', 'customFilterListConfiguration_nullOption' - This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+newCustomFilterListConfiguration ::
+  -- | 'matchOperator'
+  CategoryFilterMatchOperator ->
+  -- | 'nullOption'
+  FilterNullOption ->
+  CustomFilterListConfiguration
+newCustomFilterListConfiguration
+  pMatchOperator_
+  pNullOption_ =
+    CustomFilterListConfiguration'
+      { categoryValues =
+          Prelude.Nothing,
+        selectAllOptions = Prelude.Nothing,
+        matchOperator = pMatchOperator_,
+        nullOption = pNullOption_
+      }
+
+-- | The list of category values for the filter.
+customFilterListConfiguration_categoryValues :: Lens.Lens' CustomFilterListConfiguration (Prelude.Maybe [Prelude.Text])
+customFilterListConfiguration_categoryValues = Lens.lens (\CustomFilterListConfiguration' {categoryValues} -> categoryValues) (\s@CustomFilterListConfiguration' {} a -> s {categoryValues = a} :: CustomFilterListConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+customFilterListConfiguration_selectAllOptions :: Lens.Lens' CustomFilterListConfiguration (Prelude.Maybe CategoryFilterSelectAllOptions)
+customFilterListConfiguration_selectAllOptions = Lens.lens (\CustomFilterListConfiguration' {selectAllOptions} -> selectAllOptions) (\s@CustomFilterListConfiguration' {} a -> s {selectAllOptions = a} :: CustomFilterListConfiguration)
+
+-- | The match operator that is used to determine if a filter should be
+-- applied.
+customFilterListConfiguration_matchOperator :: Lens.Lens' CustomFilterListConfiguration CategoryFilterMatchOperator
+customFilterListConfiguration_matchOperator = Lens.lens (\CustomFilterListConfiguration' {matchOperator} -> matchOperator) (\s@CustomFilterListConfiguration' {} a -> s {matchOperator = a} :: CustomFilterListConfiguration)
+
+-- | This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+customFilterListConfiguration_nullOption :: Lens.Lens' CustomFilterListConfiguration FilterNullOption
+customFilterListConfiguration_nullOption = Lens.lens (\CustomFilterListConfiguration' {nullOption} -> nullOption) (\s@CustomFilterListConfiguration' {} a -> s {nullOption = a} :: CustomFilterListConfiguration)
+
+instance Data.FromJSON CustomFilterListConfiguration where
+  parseJSON =
+    Data.withObject
+      "CustomFilterListConfiguration"
+      ( \x ->
+          CustomFilterListConfiguration'
+            Prelude.<$> (x Data..:? "CategoryValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..: "MatchOperator")
+            Prelude.<*> (x Data..: "NullOption")
+      )
+
+instance
+  Prelude.Hashable
+    CustomFilterListConfiguration
+  where
+  hashWithSalt _salt CustomFilterListConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryValues
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` matchOperator
+      `Prelude.hashWithSalt` nullOption
+
+instance Prelude.NFData CustomFilterListConfiguration where
+  rnf CustomFilterListConfiguration' {..} =
+    Prelude.rnf categoryValues
+      `Prelude.seq` Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf matchOperator
+      `Prelude.seq` Prelude.rnf nullOption
+
+instance Data.ToJSON CustomFilterListConfiguration where
+  toJSON CustomFilterListConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryValues" Data..=)
+              Prelude.<$> categoryValues,
+            ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            Prelude.Just ("MatchOperator" Data..= matchOperator),
+            Prelude.Just ("NullOption" Data..= nullOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomNarrativeOptions.hs b/gen/Amazonka/QuickSight/Types/CustomNarrativeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomNarrativeOptions.hs
@@ -0,0 +1,78 @@
+{-# 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.QuickSight.Types.CustomNarrativeOptions
+-- 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.QuickSight.Types.CustomNarrativeOptions 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 custom narrative options.
+--
+-- /See:/ 'newCustomNarrativeOptions' smart constructor.
+data CustomNarrativeOptions = CustomNarrativeOptions'
+  { -- | The string input of custom narrative.
+    narrative :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomNarrativeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'narrative', 'customNarrativeOptions_narrative' - The string input of custom narrative.
+newCustomNarrativeOptions ::
+  -- | 'narrative'
+  Prelude.Text ->
+  CustomNarrativeOptions
+newCustomNarrativeOptions pNarrative_ =
+  CustomNarrativeOptions' {narrative = pNarrative_}
+
+-- | The string input of custom narrative.
+customNarrativeOptions_narrative :: Lens.Lens' CustomNarrativeOptions Prelude.Text
+customNarrativeOptions_narrative = Lens.lens (\CustomNarrativeOptions' {narrative} -> narrative) (\s@CustomNarrativeOptions' {} a -> s {narrative = a} :: CustomNarrativeOptions)
+
+instance Data.FromJSON CustomNarrativeOptions where
+  parseJSON =
+    Data.withObject
+      "CustomNarrativeOptions"
+      ( \x ->
+          CustomNarrativeOptions'
+            Prelude.<$> (x Data..: "Narrative")
+      )
+
+instance Prelude.Hashable CustomNarrativeOptions where
+  hashWithSalt _salt CustomNarrativeOptions' {..} =
+    _salt `Prelude.hashWithSalt` narrative
+
+instance Prelude.NFData CustomNarrativeOptions where
+  rnf CustomNarrativeOptions' {..} =
+    Prelude.rnf narrative
+
+instance Data.ToJSON CustomNarrativeOptions where
+  toJSON CustomNarrativeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Narrative" Data..= narrative)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomParameterValues.hs b/gen/Amazonka/QuickSight/Types/CustomParameterValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomParameterValues.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CustomParameterValues
+-- 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.QuickSight.Types.CustomParameterValues 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 customized parameter values.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newCustomParameterValues' smart constructor.
+data CustomParameterValues = CustomParameterValues'
+  { -- | A list of datetime-type parameter values.
+    dateTimeValues :: Prelude.Maybe [Data.Sensitive Data.POSIX],
+    -- | A list of decimal-type parameter values.
+    decimalValues :: Prelude.Maybe [Data.Sensitive Prelude.Double],
+    -- | A list of integer-type parameter values.
+    integerValues :: Prelude.Maybe [Data.Sensitive Prelude.Integer],
+    -- | A list of string-type parameter values.
+    stringValues :: Prelude.Maybe [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomParameterValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeValues', 'customParameterValues_dateTimeValues' - A list of datetime-type parameter values.
+--
+-- 'decimalValues', 'customParameterValues_decimalValues' - A list of decimal-type parameter values.
+--
+-- 'integerValues', 'customParameterValues_integerValues' - A list of integer-type parameter values.
+--
+-- 'stringValues', 'customParameterValues_stringValues' - A list of string-type parameter values.
+newCustomParameterValues ::
+  CustomParameterValues
+newCustomParameterValues =
+  CustomParameterValues'
+    { dateTimeValues =
+        Prelude.Nothing,
+      decimalValues = Prelude.Nothing,
+      integerValues = Prelude.Nothing,
+      stringValues = Prelude.Nothing
+    }
+
+-- | A list of datetime-type parameter values.
+customParameterValues_dateTimeValues :: Lens.Lens' CustomParameterValues (Prelude.Maybe [Prelude.UTCTime])
+customParameterValues_dateTimeValues = Lens.lens (\CustomParameterValues' {dateTimeValues} -> dateTimeValues) (\s@CustomParameterValues' {} a -> s {dateTimeValues = a} :: CustomParameterValues) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of decimal-type parameter values.
+customParameterValues_decimalValues :: Lens.Lens' CustomParameterValues (Prelude.Maybe [Prelude.Double])
+customParameterValues_decimalValues = Lens.lens (\CustomParameterValues' {decimalValues} -> decimalValues) (\s@CustomParameterValues' {} a -> s {decimalValues = a} :: CustomParameterValues) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of integer-type parameter values.
+customParameterValues_integerValues :: Lens.Lens' CustomParameterValues (Prelude.Maybe [Prelude.Integer])
+customParameterValues_integerValues = Lens.lens (\CustomParameterValues' {integerValues} -> integerValues) (\s@CustomParameterValues' {} a -> s {integerValues = a} :: CustomParameterValues) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of string-type parameter values.
+customParameterValues_stringValues :: Lens.Lens' CustomParameterValues (Prelude.Maybe [Prelude.Text])
+customParameterValues_stringValues = Lens.lens (\CustomParameterValues' {stringValues} -> stringValues) (\s@CustomParameterValues' {} a -> s {stringValues = a} :: CustomParameterValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CustomParameterValues where
+  parseJSON =
+    Data.withObject
+      "CustomParameterValues"
+      ( \x ->
+          CustomParameterValues'
+            Prelude.<$> (x Data..:? "DateTimeValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "DecimalValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "IntegerValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "StringValues" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable CustomParameterValues where
+  hashWithSalt _salt CustomParameterValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimeValues
+      `Prelude.hashWithSalt` decimalValues
+      `Prelude.hashWithSalt` integerValues
+      `Prelude.hashWithSalt` stringValues
+
+instance Prelude.NFData CustomParameterValues where
+  rnf CustomParameterValues' {..} =
+    Prelude.rnf dateTimeValues
+      `Prelude.seq` Prelude.rnf decimalValues
+      `Prelude.seq` Prelude.rnf integerValues
+      `Prelude.seq` Prelude.rnf stringValues
+
+instance Data.ToJSON CustomParameterValues where
+  toJSON CustomParameterValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeValues" Data..=)
+              Prelude.<$> dateTimeValues,
+            ("DecimalValues" Data..=) Prelude.<$> decimalValues,
+            ("IntegerValues" Data..=) Prelude.<$> integerValues,
+            ("StringValues" Data..=) Prelude.<$> stringValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomSql.hs b/gen/Amazonka/QuickSight/Types/CustomSql.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomSql.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CustomSql
+-- 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.QuickSight.Types.CustomSql 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.QuickSight.Types.InputColumn
+
+-- | A physical table type built from the results of the custom SQL query.
+--
+-- /See:/ 'newCustomSql' smart constructor.
+data CustomSql = CustomSql'
+  { -- | The column schema from the SQL query result set.
+    columns :: Prelude.Maybe (Prelude.NonEmpty InputColumn),
+    -- | The Amazon Resource Name (ARN) of the data source.
+    dataSourceArn :: Prelude.Text,
+    -- | A display name for the SQL query result.
+    name :: Prelude.Text,
+    -- | The SQL query.
+    sqlQuery :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomSql' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columns', 'customSql_columns' - The column schema from the SQL query result set.
+--
+-- 'dataSourceArn', 'customSql_dataSourceArn' - The Amazon Resource Name (ARN) of the data source.
+--
+-- 'name', 'customSql_name' - A display name for the SQL query result.
+--
+-- 'sqlQuery', 'customSql_sqlQuery' - The SQL query.
+newCustomSql ::
+  -- | 'dataSourceArn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'sqlQuery'
+  Prelude.Text ->
+  CustomSql
+newCustomSql pDataSourceArn_ pName_ pSqlQuery_ =
+  CustomSql'
+    { columns = Prelude.Nothing,
+      dataSourceArn = pDataSourceArn_,
+      name = pName_,
+      sqlQuery = pSqlQuery_
+    }
+
+-- | The column schema from the SQL query result set.
+customSql_columns :: Lens.Lens' CustomSql (Prelude.Maybe (Prelude.NonEmpty InputColumn))
+customSql_columns = Lens.lens (\CustomSql' {columns} -> columns) (\s@CustomSql' {} a -> s {columns = a} :: CustomSql) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the data source.
+customSql_dataSourceArn :: Lens.Lens' CustomSql Prelude.Text
+customSql_dataSourceArn = Lens.lens (\CustomSql' {dataSourceArn} -> dataSourceArn) (\s@CustomSql' {} a -> s {dataSourceArn = a} :: CustomSql)
+
+-- | A display name for the SQL query result.
+customSql_name :: Lens.Lens' CustomSql Prelude.Text
+customSql_name = Lens.lens (\CustomSql' {name} -> name) (\s@CustomSql' {} a -> s {name = a} :: CustomSql)
+
+-- | The SQL query.
+customSql_sqlQuery :: Lens.Lens' CustomSql Prelude.Text
+customSql_sqlQuery = Lens.lens (\CustomSql' {sqlQuery} -> sqlQuery) (\s@CustomSql' {} a -> s {sqlQuery = a} :: CustomSql)
+
+instance Data.FromJSON CustomSql where
+  parseJSON =
+    Data.withObject
+      "CustomSql"
+      ( \x ->
+          CustomSql'
+            Prelude.<$> (x Data..:? "Columns")
+            Prelude.<*> (x Data..: "DataSourceArn")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "SqlQuery")
+      )
+
+instance Prelude.Hashable CustomSql where
+  hashWithSalt _salt CustomSql' {..} =
+    _salt
+      `Prelude.hashWithSalt` columns
+      `Prelude.hashWithSalt` dataSourceArn
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sqlQuery
+
+instance Prelude.NFData CustomSql where
+  rnf CustomSql' {..} =
+    Prelude.rnf columns
+      `Prelude.seq` Prelude.rnf dataSourceArn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sqlQuery
+
+instance Data.ToJSON CustomSql where
+  toJSON CustomSql' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Columns" Data..=) Prelude.<$> columns,
+            Prelude.Just ("DataSourceArn" Data..= dataSourceArn),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("SqlQuery" Data..= sqlQuery)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/CustomValuesConfiguration.hs b/gen/Amazonka/QuickSight/Types/CustomValuesConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/CustomValuesConfiguration.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.CustomValuesConfiguration
+-- 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.QuickSight.Types.CustomValuesConfiguration 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.QuickSight.Types.CustomParameterValues
+
+-- | The configuration of custom values for the destination parameter in
+-- @DestinationParameterValueConfiguration@.
+--
+-- /See:/ 'newCustomValuesConfiguration' smart constructor.
+data CustomValuesConfiguration = CustomValuesConfiguration'
+  { -- | Includes the null value in custom action parameter values.
+    includeNullValue :: Prelude.Maybe Prelude.Bool,
+    customValues :: CustomParameterValues
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomValuesConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'includeNullValue', 'customValuesConfiguration_includeNullValue' - Includes the null value in custom action parameter values.
+--
+-- 'customValues', 'customValuesConfiguration_customValues' - Undocumented member.
+newCustomValuesConfiguration ::
+  -- | 'customValues'
+  CustomParameterValues ->
+  CustomValuesConfiguration
+newCustomValuesConfiguration pCustomValues_ =
+  CustomValuesConfiguration'
+    { includeNullValue =
+        Prelude.Nothing,
+      customValues = pCustomValues_
+    }
+
+-- | Includes the null value in custom action parameter values.
+customValuesConfiguration_includeNullValue :: Lens.Lens' CustomValuesConfiguration (Prelude.Maybe Prelude.Bool)
+customValuesConfiguration_includeNullValue = Lens.lens (\CustomValuesConfiguration' {includeNullValue} -> includeNullValue) (\s@CustomValuesConfiguration' {} a -> s {includeNullValue = a} :: CustomValuesConfiguration)
+
+-- | Undocumented member.
+customValuesConfiguration_customValues :: Lens.Lens' CustomValuesConfiguration CustomParameterValues
+customValuesConfiguration_customValues = Lens.lens (\CustomValuesConfiguration' {customValues} -> customValues) (\s@CustomValuesConfiguration' {} a -> s {customValues = a} :: CustomValuesConfiguration)
+
+instance Data.FromJSON CustomValuesConfiguration where
+  parseJSON =
+    Data.withObject
+      "CustomValuesConfiguration"
+      ( \x ->
+          CustomValuesConfiguration'
+            Prelude.<$> (x Data..:? "IncludeNullValue")
+            Prelude.<*> (x Data..: "CustomValues")
+      )
+
+instance Prelude.Hashable CustomValuesConfiguration where
+  hashWithSalt _salt CustomValuesConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` includeNullValue
+      `Prelude.hashWithSalt` customValues
+
+instance Prelude.NFData CustomValuesConfiguration where
+  rnf CustomValuesConfiguration' {..} =
+    Prelude.rnf includeNullValue
+      `Prelude.seq` Prelude.rnf customValues
+
+instance Data.ToJSON CustomValuesConfiguration where
+  toJSON CustomValuesConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IncludeNullValue" Data..=)
+              Prelude.<$> includeNullValue,
+            Prelude.Just ("CustomValues" Data..= customValues)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Dashboard.hs b/gen/Amazonka/QuickSight/Types/Dashboard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Dashboard.hs
@@ -0,0 +1,145 @@
+{-# 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.QuickSight.Types.Dashboard
+-- 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.QuickSight.Types.Dashboard 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.QuickSight.Types.DashboardVersion
+
+-- | Dashboard.
+--
+-- /See:/ 'newDashboard' smart constructor.
+data Dashboard = Dashboard'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that this dashboard was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | Dashboard ID.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The last time that this dashboard was published.
+    lastPublishedTime :: Prelude.Maybe Data.POSIX,
+    -- | The last time that this dashboard was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A display name for the dashboard.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Version.
+    version :: Prelude.Maybe DashboardVersion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Dashboard' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dashboard_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'createdTime', 'dashboard_createdTime' - The time that this dashboard was created.
+--
+-- 'dashboardId', 'dashboard_dashboardId' - Dashboard ID.
+--
+-- 'lastPublishedTime', 'dashboard_lastPublishedTime' - The last time that this dashboard was published.
+--
+-- 'lastUpdatedTime', 'dashboard_lastUpdatedTime' - The last time that this dashboard was updated.
+--
+-- 'name', 'dashboard_name' - A display name for the dashboard.
+--
+-- 'version', 'dashboard_version' - Version.
+newDashboard ::
+  Dashboard
+newDashboard =
+  Dashboard'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      lastPublishedTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      version = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+dashboard_arn :: Lens.Lens' Dashboard (Prelude.Maybe Prelude.Text)
+dashboard_arn = Lens.lens (\Dashboard' {arn} -> arn) (\s@Dashboard' {} a -> s {arn = a} :: Dashboard)
+
+-- | The time that this dashboard was created.
+dashboard_createdTime :: Lens.Lens' Dashboard (Prelude.Maybe Prelude.UTCTime)
+dashboard_createdTime = Lens.lens (\Dashboard' {createdTime} -> createdTime) (\s@Dashboard' {} a -> s {createdTime = a} :: Dashboard) Prelude.. Lens.mapping Data._Time
+
+-- | Dashboard ID.
+dashboard_dashboardId :: Lens.Lens' Dashboard (Prelude.Maybe Prelude.Text)
+dashboard_dashboardId = Lens.lens (\Dashboard' {dashboardId} -> dashboardId) (\s@Dashboard' {} a -> s {dashboardId = a} :: Dashboard)
+
+-- | The last time that this dashboard was published.
+dashboard_lastPublishedTime :: Lens.Lens' Dashboard (Prelude.Maybe Prelude.UTCTime)
+dashboard_lastPublishedTime = Lens.lens (\Dashboard' {lastPublishedTime} -> lastPublishedTime) (\s@Dashboard' {} a -> s {lastPublishedTime = a} :: Dashboard) Prelude.. Lens.mapping Data._Time
+
+-- | The last time that this dashboard was updated.
+dashboard_lastUpdatedTime :: Lens.Lens' Dashboard (Prelude.Maybe Prelude.UTCTime)
+dashboard_lastUpdatedTime = Lens.lens (\Dashboard' {lastUpdatedTime} -> lastUpdatedTime) (\s@Dashboard' {} a -> s {lastUpdatedTime = a} :: Dashboard) Prelude.. Lens.mapping Data._Time
+
+-- | A display name for the dashboard.
+dashboard_name :: Lens.Lens' Dashboard (Prelude.Maybe Prelude.Text)
+dashboard_name = Lens.lens (\Dashboard' {name} -> name) (\s@Dashboard' {} a -> s {name = a} :: Dashboard)
+
+-- | Version.
+dashboard_version :: Lens.Lens' Dashboard (Prelude.Maybe DashboardVersion)
+dashboard_version = Lens.lens (\Dashboard' {version} -> version) (\s@Dashboard' {} a -> s {version = a} :: Dashboard)
+
+instance Data.FromJSON Dashboard where
+  parseJSON =
+    Data.withObject
+      "Dashboard"
+      ( \x ->
+          Dashboard'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DashboardId")
+            Prelude.<*> (x Data..:? "LastPublishedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Version")
+      )
+
+instance Prelude.Hashable Dashboard where
+  hashWithSalt _salt Dashboard' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dashboardId
+      `Prelude.hashWithSalt` lastPublishedTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` version
+
+instance Prelude.NFData Dashboard where
+  rnf Dashboard' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf lastPublishedTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf version
diff --git a/gen/Amazonka/QuickSight/Types/DashboardBehavior.hs b/gen/Amazonka/QuickSight/Types/DashboardBehavior.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardBehavior.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.QuickSight.Types.DashboardBehavior
+-- 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.QuickSight.Types.DashboardBehavior
+  ( DashboardBehavior
+      ( ..,
+        DashboardBehavior_DISABLED,
+        DashboardBehavior_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DashboardBehavior = DashboardBehavior'
+  { fromDashboardBehavior ::
+      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 DashboardBehavior_DISABLED :: DashboardBehavior
+pattern DashboardBehavior_DISABLED = DashboardBehavior' "DISABLED"
+
+pattern DashboardBehavior_ENABLED :: DashboardBehavior
+pattern DashboardBehavior_ENABLED = DashboardBehavior' "ENABLED"
+
+{-# COMPLETE
+  DashboardBehavior_DISABLED,
+  DashboardBehavior_ENABLED,
+  DashboardBehavior'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DashboardError.hs b/gen/Amazonka/QuickSight/Types/DashboardError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardError.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DashboardError
+-- 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.QuickSight.Types.DashboardError 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.QuickSight.Types.DashboardErrorType
+import Amazonka.QuickSight.Types.Entity
+
+-- | Dashboard error.
+--
+-- /See:/ 'newDashboardError' smart constructor.
+data DashboardError = DashboardError'
+  { -- | Message.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | Type.
+    type' :: Prelude.Maybe DashboardErrorType,
+    violatedEntities :: Prelude.Maybe [Entity]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'dashboardError_message' - Message.
+--
+-- 'type'', 'dashboardError_type' - Type.
+--
+-- 'violatedEntities', 'dashboardError_violatedEntities' -
+newDashboardError ::
+  DashboardError
+newDashboardError =
+  DashboardError'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      violatedEntities = Prelude.Nothing
+    }
+
+-- | Message.
+dashboardError_message :: Lens.Lens' DashboardError (Prelude.Maybe Prelude.Text)
+dashboardError_message = Lens.lens (\DashboardError' {message} -> message) (\s@DashboardError' {} a -> s {message = a} :: DashboardError)
+
+-- | Type.
+dashboardError_type :: Lens.Lens' DashboardError (Prelude.Maybe DashboardErrorType)
+dashboardError_type = Lens.lens (\DashboardError' {type'} -> type') (\s@DashboardError' {} a -> s {type' = a} :: DashboardError)
+
+dashboardError_violatedEntities :: Lens.Lens' DashboardError (Prelude.Maybe [Entity])
+dashboardError_violatedEntities = Lens.lens (\DashboardError' {violatedEntities} -> violatedEntities) (\s@DashboardError' {} a -> s {violatedEntities = a} :: DashboardError) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DashboardError where
+  parseJSON =
+    Data.withObject
+      "DashboardError"
+      ( \x ->
+          DashboardError'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> ( x
+                            Data..:? "ViolatedEntities"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DashboardError where
+  hashWithSalt _salt DashboardError' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` violatedEntities
+
+instance Prelude.NFData DashboardError where
+  rnf DashboardError' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf violatedEntities
diff --git a/gen/Amazonka/QuickSight/Types/DashboardErrorType.hs b/gen/Amazonka/QuickSight/Types/DashboardErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardErrorType.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DashboardErrorType
+-- 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.QuickSight.Types.DashboardErrorType
+  ( DashboardErrorType
+      ( ..,
+        DashboardErrorType_ACCESS_DENIED,
+        DashboardErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH,
+        DashboardErrorType_COLUMN_REPLACEMENT_MISSING,
+        DashboardErrorType_COLUMN_TYPE_MISMATCH,
+        DashboardErrorType_DATA_SET_NOT_FOUND,
+        DashboardErrorType_INTERNAL_FAILURE,
+        DashboardErrorType_PARAMETER_NOT_FOUND,
+        DashboardErrorType_PARAMETER_TYPE_INVALID,
+        DashboardErrorType_PARAMETER_VALUE_INCOMPATIBLE,
+        DashboardErrorType_SOURCE_NOT_FOUND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DashboardErrorType = DashboardErrorType'
+  { fromDashboardErrorType ::
+      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 DashboardErrorType_ACCESS_DENIED :: DashboardErrorType
+pattern DashboardErrorType_ACCESS_DENIED = DashboardErrorType' "ACCESS_DENIED"
+
+pattern DashboardErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH :: DashboardErrorType
+pattern DashboardErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH = DashboardErrorType' "COLUMN_GEOGRAPHIC_ROLE_MISMATCH"
+
+pattern DashboardErrorType_COLUMN_REPLACEMENT_MISSING :: DashboardErrorType
+pattern DashboardErrorType_COLUMN_REPLACEMENT_MISSING = DashboardErrorType' "COLUMN_REPLACEMENT_MISSING"
+
+pattern DashboardErrorType_COLUMN_TYPE_MISMATCH :: DashboardErrorType
+pattern DashboardErrorType_COLUMN_TYPE_MISMATCH = DashboardErrorType' "COLUMN_TYPE_MISMATCH"
+
+pattern DashboardErrorType_DATA_SET_NOT_FOUND :: DashboardErrorType
+pattern DashboardErrorType_DATA_SET_NOT_FOUND = DashboardErrorType' "DATA_SET_NOT_FOUND"
+
+pattern DashboardErrorType_INTERNAL_FAILURE :: DashboardErrorType
+pattern DashboardErrorType_INTERNAL_FAILURE = DashboardErrorType' "INTERNAL_FAILURE"
+
+pattern DashboardErrorType_PARAMETER_NOT_FOUND :: DashboardErrorType
+pattern DashboardErrorType_PARAMETER_NOT_FOUND = DashboardErrorType' "PARAMETER_NOT_FOUND"
+
+pattern DashboardErrorType_PARAMETER_TYPE_INVALID :: DashboardErrorType
+pattern DashboardErrorType_PARAMETER_TYPE_INVALID = DashboardErrorType' "PARAMETER_TYPE_INVALID"
+
+pattern DashboardErrorType_PARAMETER_VALUE_INCOMPATIBLE :: DashboardErrorType
+pattern DashboardErrorType_PARAMETER_VALUE_INCOMPATIBLE = DashboardErrorType' "PARAMETER_VALUE_INCOMPATIBLE"
+
+pattern DashboardErrorType_SOURCE_NOT_FOUND :: DashboardErrorType
+pattern DashboardErrorType_SOURCE_NOT_FOUND = DashboardErrorType' "SOURCE_NOT_FOUND"
+
+{-# COMPLETE
+  DashboardErrorType_ACCESS_DENIED,
+  DashboardErrorType_COLUMN_GEOGRAPHIC_ROLE_MISMATCH,
+  DashboardErrorType_COLUMN_REPLACEMENT_MISSING,
+  DashboardErrorType_COLUMN_TYPE_MISMATCH,
+  DashboardErrorType_DATA_SET_NOT_FOUND,
+  DashboardErrorType_INTERNAL_FAILURE,
+  DashboardErrorType_PARAMETER_NOT_FOUND,
+  DashboardErrorType_PARAMETER_TYPE_INVALID,
+  DashboardErrorType_PARAMETER_VALUE_INCOMPATIBLE,
+  DashboardErrorType_SOURCE_NOT_FOUND,
+  DashboardErrorType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DashboardFilterAttribute.hs b/gen/Amazonka/QuickSight/Types/DashboardFilterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardFilterAttribute.hs
@@ -0,0 +1,96 @@
+{-# 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.QuickSight.Types.DashboardFilterAttribute
+-- 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.QuickSight.Types.DashboardFilterAttribute
+  ( DashboardFilterAttribute
+      ( ..,
+        DashboardFilterAttribute_DASHBOARD_NAME,
+        DashboardFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+        DashboardFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+        DashboardFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+        DashboardFilterAttribute_QUICKSIGHT_OWNER,
+        DashboardFilterAttribute_QUICKSIGHT_USER,
+        DashboardFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DashboardFilterAttribute = DashboardFilterAttribute'
+  { fromDashboardFilterAttribute ::
+      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 DashboardFilterAttribute_DASHBOARD_NAME :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_DASHBOARD_NAME = DashboardFilterAttribute' "DASHBOARD_NAME"
+
+pattern DashboardFilterAttribute_DIRECT_QUICKSIGHT_OWNER :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_DIRECT_QUICKSIGHT_OWNER = DashboardFilterAttribute' "DIRECT_QUICKSIGHT_OWNER"
+
+pattern DashboardFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER = DashboardFilterAttribute' "DIRECT_QUICKSIGHT_SOLE_OWNER"
+
+pattern DashboardFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER = DashboardFilterAttribute' "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"
+
+pattern DashboardFilterAttribute_QUICKSIGHT_OWNER :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_QUICKSIGHT_OWNER = DashboardFilterAttribute' "QUICKSIGHT_OWNER"
+
+pattern DashboardFilterAttribute_QUICKSIGHT_USER :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_QUICKSIGHT_USER = DashboardFilterAttribute' "QUICKSIGHT_USER"
+
+pattern DashboardFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER :: DashboardFilterAttribute
+pattern DashboardFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER = DashboardFilterAttribute' "QUICKSIGHT_VIEWER_OR_OWNER"
+
+{-# COMPLETE
+  DashboardFilterAttribute_DASHBOARD_NAME,
+  DashboardFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+  DashboardFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+  DashboardFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+  DashboardFilterAttribute_QUICKSIGHT_OWNER,
+  DashboardFilterAttribute_QUICKSIGHT_USER,
+  DashboardFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER,
+  DashboardFilterAttribute'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DashboardPublishOptions.hs b/gen/Amazonka/QuickSight/Types/DashboardPublishOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardPublishOptions.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.DashboardPublishOptions
+-- 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.QuickSight.Types.DashboardPublishOptions 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.QuickSight.Types.AdHocFilteringOption
+import Amazonka.QuickSight.Types.DashboardVisualPublishOptions
+import Amazonka.QuickSight.Types.ExportToCSVOption
+import Amazonka.QuickSight.Types.SheetControlsOption
+
+-- | Dashboard publish options.
+--
+-- /See:/ 'newDashboardPublishOptions' smart constructor.
+data DashboardPublishOptions = DashboardPublishOptions'
+  { -- | Ad hoc (one-time) filtering option.
+    adHocFilteringOption :: Prelude.Maybe AdHocFilteringOption,
+    -- | Export to .csv option.
+    exportToCSVOption :: Prelude.Maybe ExportToCSVOption,
+    -- | Sheet controls option.
+    sheetControlsOption :: Prelude.Maybe SheetControlsOption,
+    visualPublishOptions :: Prelude.Maybe DashboardVisualPublishOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardPublishOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adHocFilteringOption', 'dashboardPublishOptions_adHocFilteringOption' - Ad hoc (one-time) filtering option.
+--
+-- 'exportToCSVOption', 'dashboardPublishOptions_exportToCSVOption' - Export to .csv option.
+--
+-- 'sheetControlsOption', 'dashboardPublishOptions_sheetControlsOption' - Sheet controls option.
+--
+-- 'visualPublishOptions', 'dashboardPublishOptions_visualPublishOptions' -
+newDashboardPublishOptions ::
+  DashboardPublishOptions
+newDashboardPublishOptions =
+  DashboardPublishOptions'
+    { adHocFilteringOption =
+        Prelude.Nothing,
+      exportToCSVOption = Prelude.Nothing,
+      sheetControlsOption = Prelude.Nothing,
+      visualPublishOptions = Prelude.Nothing
+    }
+
+-- | Ad hoc (one-time) filtering option.
+dashboardPublishOptions_adHocFilteringOption :: Lens.Lens' DashboardPublishOptions (Prelude.Maybe AdHocFilteringOption)
+dashboardPublishOptions_adHocFilteringOption = Lens.lens (\DashboardPublishOptions' {adHocFilteringOption} -> adHocFilteringOption) (\s@DashboardPublishOptions' {} a -> s {adHocFilteringOption = a} :: DashboardPublishOptions)
+
+-- | Export to .csv option.
+dashboardPublishOptions_exportToCSVOption :: Lens.Lens' DashboardPublishOptions (Prelude.Maybe ExportToCSVOption)
+dashboardPublishOptions_exportToCSVOption = Lens.lens (\DashboardPublishOptions' {exportToCSVOption} -> exportToCSVOption) (\s@DashboardPublishOptions' {} a -> s {exportToCSVOption = a} :: DashboardPublishOptions)
+
+-- | Sheet controls option.
+dashboardPublishOptions_sheetControlsOption :: Lens.Lens' DashboardPublishOptions (Prelude.Maybe SheetControlsOption)
+dashboardPublishOptions_sheetControlsOption = Lens.lens (\DashboardPublishOptions' {sheetControlsOption} -> sheetControlsOption) (\s@DashboardPublishOptions' {} a -> s {sheetControlsOption = a} :: DashboardPublishOptions)
+
+dashboardPublishOptions_visualPublishOptions :: Lens.Lens' DashboardPublishOptions (Prelude.Maybe DashboardVisualPublishOptions)
+dashboardPublishOptions_visualPublishOptions = Lens.lens (\DashboardPublishOptions' {visualPublishOptions} -> visualPublishOptions) (\s@DashboardPublishOptions' {} a -> s {visualPublishOptions = a} :: DashboardPublishOptions)
+
+instance Prelude.Hashable DashboardPublishOptions where
+  hashWithSalt _salt DashboardPublishOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` adHocFilteringOption
+      `Prelude.hashWithSalt` exportToCSVOption
+      `Prelude.hashWithSalt` sheetControlsOption
+      `Prelude.hashWithSalt` visualPublishOptions
+
+instance Prelude.NFData DashboardPublishOptions where
+  rnf DashboardPublishOptions' {..} =
+    Prelude.rnf adHocFilteringOption
+      `Prelude.seq` Prelude.rnf exportToCSVOption
+      `Prelude.seq` Prelude.rnf sheetControlsOption
+      `Prelude.seq` Prelude.rnf visualPublishOptions
+
+instance Data.ToJSON DashboardPublishOptions where
+  toJSON DashboardPublishOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AdHocFilteringOption" Data..=)
+              Prelude.<$> adHocFilteringOption,
+            ("ExportToCSVOption" Data..=)
+              Prelude.<$> exportToCSVOption,
+            ("SheetControlsOption" Data..=)
+              Prelude.<$> sheetControlsOption,
+            ("VisualPublishOptions" Data..=)
+              Prelude.<$> visualPublishOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DashboardSearchFilter.hs b/gen/Amazonka/QuickSight/Types/DashboardSearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardSearchFilter.hs
@@ -0,0 +1,240 @@
+{-# 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.QuickSight.Types.DashboardSearchFilter
+-- 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.QuickSight.Types.DashboardSearchFilter 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.QuickSight.Types.DashboardFilterAttribute
+import Amazonka.QuickSight.Types.FilterOperator
+
+-- | A filter that you apply when searching for dashboards.
+--
+-- /See:/ 'newDashboardSearchFilter' smart constructor.
+data DashboardSearchFilter = DashboardSearchFilter'
+  { -- | The name of the value that you want to use as a filter, for example,
+    -- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+    --     any dashboards with that ARN listed as one of the dashboards\'s
+    --     owners or viewers are returned. Implicit permissions from folders or
+    --     groups are considered.
+    --
+    -- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+    --     dashboards with that ARN listed as one of the owners of the
+    --     dashboards are returned. Implicit permissions from folders or groups
+    --     are considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+    --     and any dashboards with that ARN listed as the only owner of the
+    --     dashboard are returned. Implicit permissions from folders or groups
+    --     are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+    --     any dashboards with that ARN listed as one of the owners of the
+    --     dashboards are returned. Implicit permissions from folders or groups
+    --     are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+    --     group, and any dashboards with that ARN listed as one of the owners
+    --     or viewers of the dashboards are returned. Implicit permissions from
+    --     folders or groups are not considered.
+    --
+    -- -   @DASHBOARD_NAME@: Any dashboards whose names have a substring match
+    --     to this value will be returned.
+    name :: Prelude.Maybe DashboardFilterAttribute,
+    -- | The value of the named item, in this case @QUICKSIGHT_USER@, that you
+    -- want to use as a filter, for example,
+    -- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    value :: Prelude.Maybe Prelude.Text,
+    -- | The comparison operator that you want to use as a filter, for example
+    -- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+    -- and @\"StringLike\"@.
+    --
+    -- If you set the operator value to @\"StringEquals\"@, you need to provide
+    -- an ownership related filter in the @\"NAME\"@ field and the arn of the
+    -- user or group whose folders you want to search in the @\"Value\"@ field.
+    -- For example,
+    -- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    --
+    -- If you set the value to @\"StringLike\"@, you need to provide the name
+    -- of the folders you are searching for. For example,
+    -- @\"Name\":\"DASHBOARD_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+    -- The @\"StringLike\"@ operator only supports the @NAME@ value
+    -- @DASHBOARD_NAME@.
+    operator :: FilterOperator
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardSearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'dashboardSearchFilter_name' - The name of the value that you want to use as a filter, for example,
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any dashboards with that ARN listed as one of the dashboards\'s
+--     owners or viewers are returned. Implicit permissions from folders or
+--     groups are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     dashboards with that ARN listed as one of the owners of the
+--     dashboards are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any dashboards with that ARN listed as the only owner of the
+--     dashboard are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any dashboards with that ARN listed as one of the owners of the
+--     dashboards are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any dashboards with that ARN listed as one of the owners
+--     or viewers of the dashboards are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @DASHBOARD_NAME@: Any dashboards whose names have a substring match
+--     to this value will be returned.
+--
+-- 'value', 'dashboardSearchFilter_value' - The value of the named item, in this case @QUICKSIGHT_USER@, that you
+-- want to use as a filter, for example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- 'operator', 'dashboardSearchFilter_operator' - The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose folders you want to search in the @\"Value\"@ field.
+-- For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the folders you are searching for. For example,
+-- @\"Name\":\"DASHBOARD_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @DASHBOARD_NAME@.
+newDashboardSearchFilter ::
+  -- | 'operator'
+  FilterOperator ->
+  DashboardSearchFilter
+newDashboardSearchFilter pOperator_ =
+  DashboardSearchFilter'
+    { name = Prelude.Nothing,
+      value = Prelude.Nothing,
+      operator = pOperator_
+    }
+
+-- | The name of the value that you want to use as a filter, for example,
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any dashboards with that ARN listed as one of the dashboards\'s
+--     owners or viewers are returned. Implicit permissions from folders or
+--     groups are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     dashboards with that ARN listed as one of the owners of the
+--     dashboards are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any dashboards with that ARN listed as the only owner of the
+--     dashboard are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any dashboards with that ARN listed as one of the owners of the
+--     dashboards are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any dashboards with that ARN listed as one of the owners
+--     or viewers of the dashboards are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @DASHBOARD_NAME@: Any dashboards whose names have a substring match
+--     to this value will be returned.
+dashboardSearchFilter_name :: Lens.Lens' DashboardSearchFilter (Prelude.Maybe DashboardFilterAttribute)
+dashboardSearchFilter_name = Lens.lens (\DashboardSearchFilter' {name} -> name) (\s@DashboardSearchFilter' {} a -> s {name = a} :: DashboardSearchFilter)
+
+-- | The value of the named item, in this case @QUICKSIGHT_USER@, that you
+-- want to use as a filter, for example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+dashboardSearchFilter_value :: Lens.Lens' DashboardSearchFilter (Prelude.Maybe Prelude.Text)
+dashboardSearchFilter_value = Lens.lens (\DashboardSearchFilter' {value} -> value) (\s@DashboardSearchFilter' {} a -> s {value = a} :: DashboardSearchFilter)
+
+-- | The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose folders you want to search in the @\"Value\"@ field.
+-- For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the folders you are searching for. For example,
+-- @\"Name\":\"DASHBOARD_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @DASHBOARD_NAME@.
+dashboardSearchFilter_operator :: Lens.Lens' DashboardSearchFilter FilterOperator
+dashboardSearchFilter_operator = Lens.lens (\DashboardSearchFilter' {operator} -> operator) (\s@DashboardSearchFilter' {} a -> s {operator = a} :: DashboardSearchFilter)
+
+instance Prelude.Hashable DashboardSearchFilter where
+  hashWithSalt _salt DashboardSearchFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` operator
+
+instance Prelude.NFData DashboardSearchFilter where
+  rnf DashboardSearchFilter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf operator
+
+instance Data.ToJSON DashboardSearchFilter where
+  toJSON DashboardSearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("Operator" Data..= operator)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DashboardSourceEntity.hs b/gen/Amazonka/QuickSight/Types/DashboardSourceEntity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardSourceEntity.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.DashboardSourceEntity
+-- 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.QuickSight.Types.DashboardSourceEntity 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.QuickSight.Types.DashboardSourceTemplate
+
+-- | Dashboard source entity.
+--
+-- /See:/ 'newDashboardSourceEntity' smart constructor.
+data DashboardSourceEntity = DashboardSourceEntity'
+  { -- | Source template.
+    sourceTemplate :: Prelude.Maybe DashboardSourceTemplate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardSourceEntity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sourceTemplate', 'dashboardSourceEntity_sourceTemplate' - Source template.
+newDashboardSourceEntity ::
+  DashboardSourceEntity
+newDashboardSourceEntity =
+  DashboardSourceEntity'
+    { sourceTemplate =
+        Prelude.Nothing
+    }
+
+-- | Source template.
+dashboardSourceEntity_sourceTemplate :: Lens.Lens' DashboardSourceEntity (Prelude.Maybe DashboardSourceTemplate)
+dashboardSourceEntity_sourceTemplate = Lens.lens (\DashboardSourceEntity' {sourceTemplate} -> sourceTemplate) (\s@DashboardSourceEntity' {} a -> s {sourceTemplate = a} :: DashboardSourceEntity)
+
+instance Prelude.Hashable DashboardSourceEntity where
+  hashWithSalt _salt DashboardSourceEntity' {..} =
+    _salt `Prelude.hashWithSalt` sourceTemplate
+
+instance Prelude.NFData DashboardSourceEntity where
+  rnf DashboardSourceEntity' {..} =
+    Prelude.rnf sourceTemplate
+
+instance Data.ToJSON DashboardSourceEntity where
+  toJSON DashboardSourceEntity' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceTemplate" Data..=)
+              Prelude.<$> sourceTemplate
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DashboardSourceTemplate.hs b/gen/Amazonka/QuickSight/Types/DashboardSourceTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardSourceTemplate.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DashboardSourceTemplate
+-- 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.QuickSight.Types.DashboardSourceTemplate 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.QuickSight.Types.DataSetReference
+
+-- | Dashboard source template.
+--
+-- /See:/ 'newDashboardSourceTemplate' smart constructor.
+data DashboardSourceTemplate = DashboardSourceTemplate'
+  { -- | Dataset references.
+    dataSetReferences :: Prelude.NonEmpty DataSetReference,
+    -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardSourceTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetReferences', 'dashboardSourceTemplate_dataSetReferences' - Dataset references.
+--
+-- 'arn', 'dashboardSourceTemplate_arn' - The Amazon Resource Name (ARN) of the resource.
+newDashboardSourceTemplate ::
+  -- | 'dataSetReferences'
+  Prelude.NonEmpty DataSetReference ->
+  -- | 'arn'
+  Prelude.Text ->
+  DashboardSourceTemplate
+newDashboardSourceTemplate pDataSetReferences_ pArn_ =
+  DashboardSourceTemplate'
+    { dataSetReferences =
+        Lens.coerced Lens.# pDataSetReferences_,
+      arn = pArn_
+    }
+
+-- | Dataset references.
+dashboardSourceTemplate_dataSetReferences :: Lens.Lens' DashboardSourceTemplate (Prelude.NonEmpty DataSetReference)
+dashboardSourceTemplate_dataSetReferences = Lens.lens (\DashboardSourceTemplate' {dataSetReferences} -> dataSetReferences) (\s@DashboardSourceTemplate' {} a -> s {dataSetReferences = a} :: DashboardSourceTemplate) Prelude.. Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the resource.
+dashboardSourceTemplate_arn :: Lens.Lens' DashboardSourceTemplate Prelude.Text
+dashboardSourceTemplate_arn = Lens.lens (\DashboardSourceTemplate' {arn} -> arn) (\s@DashboardSourceTemplate' {} a -> s {arn = a} :: DashboardSourceTemplate)
+
+instance Prelude.Hashable DashboardSourceTemplate where
+  hashWithSalt _salt DashboardSourceTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetReferences
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DashboardSourceTemplate where
+  rnf DashboardSourceTemplate' {..} =
+    Prelude.rnf dataSetReferences
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToJSON DashboardSourceTemplate where
+  toJSON DashboardSourceTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataSetReferences" Data..= dataSetReferences),
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DashboardSummary.hs b/gen/Amazonka/QuickSight/Types/DashboardSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardSummary.hs
@@ -0,0 +1,144 @@
+{-# 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.QuickSight.Types.DashboardSummary
+-- 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.QuickSight.Types.DashboardSummary 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
+
+-- | Dashboard summary.
+--
+-- /See:/ 'newDashboardSummary' smart constructor.
+data DashboardSummary = DashboardSummary'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that this dashboard was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | Dashboard ID.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The last time that this dashboard was published.
+    lastPublishedTime :: Prelude.Maybe Data.POSIX,
+    -- | The last time that this dashboard was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A display name for the dashboard.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Published version number.
+    publishedVersionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dashboardSummary_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'createdTime', 'dashboardSummary_createdTime' - The time that this dashboard was created.
+--
+-- 'dashboardId', 'dashboardSummary_dashboardId' - Dashboard ID.
+--
+-- 'lastPublishedTime', 'dashboardSummary_lastPublishedTime' - The last time that this dashboard was published.
+--
+-- 'lastUpdatedTime', 'dashboardSummary_lastUpdatedTime' - The last time that this dashboard was updated.
+--
+-- 'name', 'dashboardSummary_name' - A display name for the dashboard.
+--
+-- 'publishedVersionNumber', 'dashboardSummary_publishedVersionNumber' - Published version number.
+newDashboardSummary ::
+  DashboardSummary
+newDashboardSummary =
+  DashboardSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      lastPublishedTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      publishedVersionNumber = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+dashboardSummary_arn :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.Text)
+dashboardSummary_arn = Lens.lens (\DashboardSummary' {arn} -> arn) (\s@DashboardSummary' {} a -> s {arn = a} :: DashboardSummary)
+
+-- | The time that this dashboard was created.
+dashboardSummary_createdTime :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.UTCTime)
+dashboardSummary_createdTime = Lens.lens (\DashboardSummary' {createdTime} -> createdTime) (\s@DashboardSummary' {} a -> s {createdTime = a} :: DashboardSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Dashboard ID.
+dashboardSummary_dashboardId :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.Text)
+dashboardSummary_dashboardId = Lens.lens (\DashboardSummary' {dashboardId} -> dashboardId) (\s@DashboardSummary' {} a -> s {dashboardId = a} :: DashboardSummary)
+
+-- | The last time that this dashboard was published.
+dashboardSummary_lastPublishedTime :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.UTCTime)
+dashboardSummary_lastPublishedTime = Lens.lens (\DashboardSummary' {lastPublishedTime} -> lastPublishedTime) (\s@DashboardSummary' {} a -> s {lastPublishedTime = a} :: DashboardSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The last time that this dashboard was updated.
+dashboardSummary_lastUpdatedTime :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.UTCTime)
+dashboardSummary_lastUpdatedTime = Lens.lens (\DashboardSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@DashboardSummary' {} a -> s {lastUpdatedTime = a} :: DashboardSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A display name for the dashboard.
+dashboardSummary_name :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.Text)
+dashboardSummary_name = Lens.lens (\DashboardSummary' {name} -> name) (\s@DashboardSummary' {} a -> s {name = a} :: DashboardSummary)
+
+-- | Published version number.
+dashboardSummary_publishedVersionNumber :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.Natural)
+dashboardSummary_publishedVersionNumber = Lens.lens (\DashboardSummary' {publishedVersionNumber} -> publishedVersionNumber) (\s@DashboardSummary' {} a -> s {publishedVersionNumber = a} :: DashboardSummary)
+
+instance Data.FromJSON DashboardSummary where
+  parseJSON =
+    Data.withObject
+      "DashboardSummary"
+      ( \x ->
+          DashboardSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DashboardId")
+            Prelude.<*> (x Data..:? "LastPublishedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PublishedVersionNumber")
+      )
+
+instance Prelude.Hashable DashboardSummary where
+  hashWithSalt _salt DashboardSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dashboardId
+      `Prelude.hashWithSalt` lastPublishedTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` publishedVersionNumber
+
+instance Prelude.NFData DashboardSummary where
+  rnf DashboardSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf lastPublishedTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf publishedVersionNumber
diff --git a/gen/Amazonka/QuickSight/Types/DashboardUIState.hs b/gen/Amazonka/QuickSight/Types/DashboardUIState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardUIState.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.QuickSight.Types.DashboardUIState
+-- 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.QuickSight.Types.DashboardUIState
+  ( DashboardUIState
+      ( ..,
+        DashboardUIState_COLLAPSED,
+        DashboardUIState_EXPANDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DashboardUIState = DashboardUIState'
+  { fromDashboardUIState ::
+      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 DashboardUIState_COLLAPSED :: DashboardUIState
+pattern DashboardUIState_COLLAPSED = DashboardUIState' "COLLAPSED"
+
+pattern DashboardUIState_EXPANDED :: DashboardUIState
+pattern DashboardUIState_EXPANDED = DashboardUIState' "EXPANDED"
+
+{-# COMPLETE
+  DashboardUIState_COLLAPSED,
+  DashboardUIState_EXPANDED,
+  DashboardUIState'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DashboardVersion.hs b/gen/Amazonka/QuickSight/Types/DashboardVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardVersion.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DashboardVersion
+-- 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.QuickSight.Types.DashboardVersion 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.QuickSight.Types.DashboardError
+import Amazonka.QuickSight.Types.ResourceStatus
+import Amazonka.QuickSight.Types.Sheet
+
+-- | Dashboard version.
+--
+-- /See:/ 'newDashboardVersion' smart constructor.
+data DashboardVersion = DashboardVersion'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that this dashboard version was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Numbers (ARNs) for the datasets that are associated
+    -- with this version of the dashboard.
+    dataSetArns :: Prelude.Maybe [Prelude.Text],
+    -- | Description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Errors associated with this dashboard version.
+    errors :: Prelude.Maybe (Prelude.NonEmpty DashboardError),
+    -- | A list of the associated sheets with the unique identifier and name of
+    -- each sheet.
+    sheets :: Prelude.Maybe [Sheet],
+    -- | Source entity ARN.
+    sourceEntityArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The ARN of the theme associated with a version of the dashboard.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | Version number for this version of the dashboard.
+    versionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dashboardVersion_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'createdTime', 'dashboardVersion_createdTime' - The time that this dashboard version was created.
+--
+-- 'dataSetArns', 'dashboardVersion_dataSetArns' - The Amazon Resource Numbers (ARNs) for the datasets that are associated
+-- with this version of the dashboard.
+--
+-- 'description', 'dashboardVersion_description' - Description.
+--
+-- 'errors', 'dashboardVersion_errors' - Errors associated with this dashboard version.
+--
+-- 'sheets', 'dashboardVersion_sheets' - A list of the associated sheets with the unique identifier and name of
+-- each sheet.
+--
+-- 'sourceEntityArn', 'dashboardVersion_sourceEntityArn' - Source entity ARN.
+--
+-- 'status', 'dashboardVersion_status' - The HTTP status of the request.
+--
+-- 'themeArn', 'dashboardVersion_themeArn' - The ARN of the theme associated with a version of the dashboard.
+--
+-- 'versionNumber', 'dashboardVersion_versionNumber' - Version number for this version of the dashboard.
+newDashboardVersion ::
+  DashboardVersion
+newDashboardVersion =
+  DashboardVersion'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dataSetArns = Prelude.Nothing,
+      description = Prelude.Nothing,
+      errors = Prelude.Nothing,
+      sheets = Prelude.Nothing,
+      sourceEntityArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      versionNumber = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+dashboardVersion_arn :: Lens.Lens' DashboardVersion (Prelude.Maybe Prelude.Text)
+dashboardVersion_arn = Lens.lens (\DashboardVersion' {arn} -> arn) (\s@DashboardVersion' {} a -> s {arn = a} :: DashboardVersion)
+
+-- | The time that this dashboard version was created.
+dashboardVersion_createdTime :: Lens.Lens' DashboardVersion (Prelude.Maybe Prelude.UTCTime)
+dashboardVersion_createdTime = Lens.lens (\DashboardVersion' {createdTime} -> createdTime) (\s@DashboardVersion' {} a -> s {createdTime = a} :: DashboardVersion) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Numbers (ARNs) for the datasets that are associated
+-- with this version of the dashboard.
+dashboardVersion_dataSetArns :: Lens.Lens' DashboardVersion (Prelude.Maybe [Prelude.Text])
+dashboardVersion_dataSetArns = Lens.lens (\DashboardVersion' {dataSetArns} -> dataSetArns) (\s@DashboardVersion' {} a -> s {dataSetArns = a} :: DashboardVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | Description.
+dashboardVersion_description :: Lens.Lens' DashboardVersion (Prelude.Maybe Prelude.Text)
+dashboardVersion_description = Lens.lens (\DashboardVersion' {description} -> description) (\s@DashboardVersion' {} a -> s {description = a} :: DashboardVersion)
+
+-- | Errors associated with this dashboard version.
+dashboardVersion_errors :: Lens.Lens' DashboardVersion (Prelude.Maybe (Prelude.NonEmpty DashboardError))
+dashboardVersion_errors = Lens.lens (\DashboardVersion' {errors} -> errors) (\s@DashboardVersion' {} a -> s {errors = a} :: DashboardVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the associated sheets with the unique identifier and name of
+-- each sheet.
+dashboardVersion_sheets :: Lens.Lens' DashboardVersion (Prelude.Maybe [Sheet])
+dashboardVersion_sheets = Lens.lens (\DashboardVersion' {sheets} -> sheets) (\s@DashboardVersion' {} a -> s {sheets = a} :: DashboardVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | Source entity ARN.
+dashboardVersion_sourceEntityArn :: Lens.Lens' DashboardVersion (Prelude.Maybe Prelude.Text)
+dashboardVersion_sourceEntityArn = Lens.lens (\DashboardVersion' {sourceEntityArn} -> sourceEntityArn) (\s@DashboardVersion' {} a -> s {sourceEntityArn = a} :: DashboardVersion)
+
+-- | The HTTP status of the request.
+dashboardVersion_status :: Lens.Lens' DashboardVersion (Prelude.Maybe ResourceStatus)
+dashboardVersion_status = Lens.lens (\DashboardVersion' {status} -> status) (\s@DashboardVersion' {} a -> s {status = a} :: DashboardVersion)
+
+-- | The ARN of the theme associated with a version of the dashboard.
+dashboardVersion_themeArn :: Lens.Lens' DashboardVersion (Prelude.Maybe Prelude.Text)
+dashboardVersion_themeArn = Lens.lens (\DashboardVersion' {themeArn} -> themeArn) (\s@DashboardVersion' {} a -> s {themeArn = a} :: DashboardVersion)
+
+-- | Version number for this version of the dashboard.
+dashboardVersion_versionNumber :: Lens.Lens' DashboardVersion (Prelude.Maybe Prelude.Natural)
+dashboardVersion_versionNumber = Lens.lens (\DashboardVersion' {versionNumber} -> versionNumber) (\s@DashboardVersion' {} a -> s {versionNumber = a} :: DashboardVersion)
+
+instance Data.FromJSON DashboardVersion where
+  parseJSON =
+    Data.withObject
+      "DashboardVersion"
+      ( \x ->
+          DashboardVersion'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DataSetArns" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Errors")
+            Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SourceEntityArn")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "ThemeArn")
+            Prelude.<*> (x Data..:? "VersionNumber")
+      )
+
+instance Prelude.Hashable DashboardVersion where
+  hashWithSalt _salt DashboardVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSetArns
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` errors
+      `Prelude.hashWithSalt` sheets
+      `Prelude.hashWithSalt` sourceEntityArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` themeArn
+      `Prelude.hashWithSalt` versionNumber
+
+instance Prelude.NFData DashboardVersion where
+  rnf DashboardVersion' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSetArns
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf sheets
+      `Prelude.seq` Prelude.rnf sourceEntityArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf versionNumber
diff --git a/gen/Amazonka/QuickSight/Types/DashboardVersionDefinition.hs b/gen/Amazonka/QuickSight/Types/DashboardVersionDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardVersionDefinition.hs
@@ -0,0 +1,225 @@
+{-# 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.QuickSight.Types.DashboardVersionDefinition
+-- 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.QuickSight.Types.DashboardVersionDefinition 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.QuickSight.Types.AnalysisDefaults
+import Amazonka.QuickSight.Types.CalculatedField
+import Amazonka.QuickSight.Types.ColumnConfiguration
+import Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
+import Amazonka.QuickSight.Types.FilterGroup
+import Amazonka.QuickSight.Types.ParameterDeclaration
+import Amazonka.QuickSight.Types.SheetDefinition
+
+-- | The contents of a dashboard.
+--
+-- /See:/ 'newDashboardVersionDefinition' smart constructor.
+data DashboardVersionDefinition = DashboardVersionDefinition'
+  { analysisDefaults :: Prelude.Maybe AnalysisDefaults,
+    -- | An array of calculated field definitions for the dashboard.
+    calculatedFields :: Prelude.Maybe [CalculatedField],
+    -- | An array of dashboard-level column configurations. Column configurations
+    -- are used to set the default formatting for a column that is used
+    -- throughout a dashboard.
+    columnConfigurations :: Prelude.Maybe [ColumnConfiguration],
+    -- | The filter definitions for a dashboard.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
+    -- in the /Amazon QuickSight User Guide/.
+    filterGroups :: Prelude.Maybe [FilterGroup],
+    -- | The parameter declarations for a dashboard. Parameters are named
+    -- variables that can transfer a value for use by an action or an object.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+    -- in the /Amazon QuickSight User Guide/.
+    parameterDeclarations :: Prelude.Maybe [ParameterDeclaration],
+    -- | An array of sheet definitions for a dashboard.
+    sheets :: Prelude.Maybe [SheetDefinition],
+    -- | An array of dataset identifier declarations. With this mapping,you can
+    -- use dataset identifiers instead of dataset Amazon Resource Names (ARNs)
+    -- throughout the dashboard\'s sub-structures.
+    dataSetIdentifierDeclarations :: Prelude.NonEmpty DataSetIdentifierDeclaration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardVersionDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisDefaults', 'dashboardVersionDefinition_analysisDefaults' - Undocumented member.
+--
+-- 'calculatedFields', 'dashboardVersionDefinition_calculatedFields' - An array of calculated field definitions for the dashboard.
+--
+-- 'columnConfigurations', 'dashboardVersionDefinition_columnConfigurations' - An array of dashboard-level column configurations. Column configurations
+-- are used to set the default formatting for a column that is used
+-- throughout a dashboard.
+--
+-- 'filterGroups', 'dashboardVersionDefinition_filterGroups' - The filter definitions for a dashboard.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'parameterDeclarations', 'dashboardVersionDefinition_parameterDeclarations' - The parameter declarations for a dashboard. Parameters are named
+-- variables that can transfer a value for use by an action or an object.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'sheets', 'dashboardVersionDefinition_sheets' - An array of sheet definitions for a dashboard.
+--
+-- 'dataSetIdentifierDeclarations', 'dashboardVersionDefinition_dataSetIdentifierDeclarations' - An array of dataset identifier declarations. With this mapping,you can
+-- use dataset identifiers instead of dataset Amazon Resource Names (ARNs)
+-- throughout the dashboard\'s sub-structures.
+newDashboardVersionDefinition ::
+  -- | 'dataSetIdentifierDeclarations'
+  Prelude.NonEmpty DataSetIdentifierDeclaration ->
+  DashboardVersionDefinition
+newDashboardVersionDefinition
+  pDataSetIdentifierDeclarations_ =
+    DashboardVersionDefinition'
+      { analysisDefaults =
+          Prelude.Nothing,
+        calculatedFields = Prelude.Nothing,
+        columnConfigurations = Prelude.Nothing,
+        filterGroups = Prelude.Nothing,
+        parameterDeclarations = Prelude.Nothing,
+        sheets = Prelude.Nothing,
+        dataSetIdentifierDeclarations =
+          Lens.coerced
+            Lens.# pDataSetIdentifierDeclarations_
+      }
+
+-- | Undocumented member.
+dashboardVersionDefinition_analysisDefaults :: Lens.Lens' DashboardVersionDefinition (Prelude.Maybe AnalysisDefaults)
+dashboardVersionDefinition_analysisDefaults = Lens.lens (\DashboardVersionDefinition' {analysisDefaults} -> analysisDefaults) (\s@DashboardVersionDefinition' {} a -> s {analysisDefaults = a} :: DashboardVersionDefinition)
+
+-- | An array of calculated field definitions for the dashboard.
+dashboardVersionDefinition_calculatedFields :: Lens.Lens' DashboardVersionDefinition (Prelude.Maybe [CalculatedField])
+dashboardVersionDefinition_calculatedFields = Lens.lens (\DashboardVersionDefinition' {calculatedFields} -> calculatedFields) (\s@DashboardVersionDefinition' {} a -> s {calculatedFields = a} :: DashboardVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of dashboard-level column configurations. Column configurations
+-- are used to set the default formatting for a column that is used
+-- throughout a dashboard.
+dashboardVersionDefinition_columnConfigurations :: Lens.Lens' DashboardVersionDefinition (Prelude.Maybe [ColumnConfiguration])
+dashboardVersionDefinition_columnConfigurations = Lens.lens (\DashboardVersionDefinition' {columnConfigurations} -> columnConfigurations) (\s@DashboardVersionDefinition' {} a -> s {columnConfigurations = a} :: DashboardVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The filter definitions for a dashboard.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+dashboardVersionDefinition_filterGroups :: Lens.Lens' DashboardVersionDefinition (Prelude.Maybe [FilterGroup])
+dashboardVersionDefinition_filterGroups = Lens.lens (\DashboardVersionDefinition' {filterGroups} -> filterGroups) (\s@DashboardVersionDefinition' {} a -> s {filterGroups = a} :: DashboardVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The parameter declarations for a dashboard. Parameters are named
+-- variables that can transfer a value for use by an action or an object.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+dashboardVersionDefinition_parameterDeclarations :: Lens.Lens' DashboardVersionDefinition (Prelude.Maybe [ParameterDeclaration])
+dashboardVersionDefinition_parameterDeclarations = Lens.lens (\DashboardVersionDefinition' {parameterDeclarations} -> parameterDeclarations) (\s@DashboardVersionDefinition' {} a -> s {parameterDeclarations = a} :: DashboardVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of sheet definitions for a dashboard.
+dashboardVersionDefinition_sheets :: Lens.Lens' DashboardVersionDefinition (Prelude.Maybe [SheetDefinition])
+dashboardVersionDefinition_sheets = Lens.lens (\DashboardVersionDefinition' {sheets} -> sheets) (\s@DashboardVersionDefinition' {} a -> s {sheets = a} :: DashboardVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of dataset identifier declarations. With this mapping,you can
+-- use dataset identifiers instead of dataset Amazon Resource Names (ARNs)
+-- throughout the dashboard\'s sub-structures.
+dashboardVersionDefinition_dataSetIdentifierDeclarations :: Lens.Lens' DashboardVersionDefinition (Prelude.NonEmpty DataSetIdentifierDeclaration)
+dashboardVersionDefinition_dataSetIdentifierDeclarations = Lens.lens (\DashboardVersionDefinition' {dataSetIdentifierDeclarations} -> dataSetIdentifierDeclarations) (\s@DashboardVersionDefinition' {} a -> s {dataSetIdentifierDeclarations = a} :: DashboardVersionDefinition) Prelude.. Lens.coerced
+
+instance Data.FromJSON DashboardVersionDefinition where
+  parseJSON =
+    Data.withObject
+      "DashboardVersionDefinition"
+      ( \x ->
+          DashboardVersionDefinition'
+            Prelude.<$> (x Data..:? "AnalysisDefaults")
+            Prelude.<*> ( x
+                            Data..:? "CalculatedFields"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ColumnConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "FilterGroups" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "ParameterDeclarations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "DataSetIdentifierDeclarations")
+      )
+
+instance Prelude.Hashable DashboardVersionDefinition where
+  hashWithSalt _salt DashboardVersionDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisDefaults
+      `Prelude.hashWithSalt` calculatedFields
+      `Prelude.hashWithSalt` columnConfigurations
+      `Prelude.hashWithSalt` filterGroups
+      `Prelude.hashWithSalt` parameterDeclarations
+      `Prelude.hashWithSalt` sheets
+      `Prelude.hashWithSalt` dataSetIdentifierDeclarations
+
+instance Prelude.NFData DashboardVersionDefinition where
+  rnf DashboardVersionDefinition' {..} =
+    Prelude.rnf analysisDefaults
+      `Prelude.seq` Prelude.rnf calculatedFields
+      `Prelude.seq` Prelude.rnf columnConfigurations
+      `Prelude.seq` Prelude.rnf filterGroups
+      `Prelude.seq` Prelude.rnf parameterDeclarations
+      `Prelude.seq` Prelude.rnf sheets
+      `Prelude.seq` Prelude.rnf dataSetIdentifierDeclarations
+
+instance Data.ToJSON DashboardVersionDefinition where
+  toJSON DashboardVersionDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AnalysisDefaults" Data..=)
+              Prelude.<$> analysisDefaults,
+            ("CalculatedFields" Data..=)
+              Prelude.<$> calculatedFields,
+            ("ColumnConfigurations" Data..=)
+              Prelude.<$> columnConfigurations,
+            ("FilterGroups" Data..=) Prelude.<$> filterGroups,
+            ("ParameterDeclarations" Data..=)
+              Prelude.<$> parameterDeclarations,
+            ("Sheets" Data..=) Prelude.<$> sheets,
+            Prelude.Just
+              ( "DataSetIdentifierDeclarations"
+                  Data..= dataSetIdentifierDeclarations
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DashboardVersionSummary.hs b/gen/Amazonka/QuickSight/Types/DashboardVersionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardVersionSummary.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.QuickSight.Types.DashboardVersionSummary
+-- 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.QuickSight.Types.DashboardVersionSummary 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.QuickSight.Types.ResourceStatus
+
+-- | Dashboard version summary.
+--
+-- /See:/ 'newDashboardVersionSummary' smart constructor.
+data DashboardVersionSummary = DashboardVersionSummary'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that this dashboard version was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | Description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Source entity ARN.
+    sourceEntityArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | Version number.
+    versionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardVersionSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dashboardVersionSummary_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'createdTime', 'dashboardVersionSummary_createdTime' - The time that this dashboard version was created.
+--
+-- 'description', 'dashboardVersionSummary_description' - Description.
+--
+-- 'sourceEntityArn', 'dashboardVersionSummary_sourceEntityArn' - Source entity ARN.
+--
+-- 'status', 'dashboardVersionSummary_status' - The HTTP status of the request.
+--
+-- 'versionNumber', 'dashboardVersionSummary_versionNumber' - Version number.
+newDashboardVersionSummary ::
+  DashboardVersionSummary
+newDashboardVersionSummary =
+  DashboardVersionSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      sourceEntityArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      versionNumber = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+dashboardVersionSummary_arn :: Lens.Lens' DashboardVersionSummary (Prelude.Maybe Prelude.Text)
+dashboardVersionSummary_arn = Lens.lens (\DashboardVersionSummary' {arn} -> arn) (\s@DashboardVersionSummary' {} a -> s {arn = a} :: DashboardVersionSummary)
+
+-- | The time that this dashboard version was created.
+dashboardVersionSummary_createdTime :: Lens.Lens' DashboardVersionSummary (Prelude.Maybe Prelude.UTCTime)
+dashboardVersionSummary_createdTime = Lens.lens (\DashboardVersionSummary' {createdTime} -> createdTime) (\s@DashboardVersionSummary' {} a -> s {createdTime = a} :: DashboardVersionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Description.
+dashboardVersionSummary_description :: Lens.Lens' DashboardVersionSummary (Prelude.Maybe Prelude.Text)
+dashboardVersionSummary_description = Lens.lens (\DashboardVersionSummary' {description} -> description) (\s@DashboardVersionSummary' {} a -> s {description = a} :: DashboardVersionSummary)
+
+-- | Source entity ARN.
+dashboardVersionSummary_sourceEntityArn :: Lens.Lens' DashboardVersionSummary (Prelude.Maybe Prelude.Text)
+dashboardVersionSummary_sourceEntityArn = Lens.lens (\DashboardVersionSummary' {sourceEntityArn} -> sourceEntityArn) (\s@DashboardVersionSummary' {} a -> s {sourceEntityArn = a} :: DashboardVersionSummary)
+
+-- | The HTTP status of the request.
+dashboardVersionSummary_status :: Lens.Lens' DashboardVersionSummary (Prelude.Maybe ResourceStatus)
+dashboardVersionSummary_status = Lens.lens (\DashboardVersionSummary' {status} -> status) (\s@DashboardVersionSummary' {} a -> s {status = a} :: DashboardVersionSummary)
+
+-- | Version number.
+dashboardVersionSummary_versionNumber :: Lens.Lens' DashboardVersionSummary (Prelude.Maybe Prelude.Natural)
+dashboardVersionSummary_versionNumber = Lens.lens (\DashboardVersionSummary' {versionNumber} -> versionNumber) (\s@DashboardVersionSummary' {} a -> s {versionNumber = a} :: DashboardVersionSummary)
+
+instance Data.FromJSON DashboardVersionSummary where
+  parseJSON =
+    Data.withObject
+      "DashboardVersionSummary"
+      ( \x ->
+          DashboardVersionSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "SourceEntityArn")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "VersionNumber")
+      )
+
+instance Prelude.Hashable DashboardVersionSummary where
+  hashWithSalt _salt DashboardVersionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` sourceEntityArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` versionNumber
+
+instance Prelude.NFData DashboardVersionSummary where
+  rnf DashboardVersionSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf sourceEntityArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf versionNumber
diff --git a/gen/Amazonka/QuickSight/Types/DashboardVisualId.hs b/gen/Amazonka/QuickSight/Types/DashboardVisualId.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardVisualId.hs
@@ -0,0 +1,144 @@
+{-# 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.QuickSight.Types.DashboardVisualId
+-- 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.QuickSight.Types.DashboardVisualId 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 structure that contains the following elements:
+--
+-- -   The @DashboardId@ of the dashboard that has the visual that you want
+--     to embed.
+--
+-- -   The @SheetId@ of the sheet that has the visual that you want to
+--     embed.
+--
+-- -   The @VisualId@ of the visual that you want to embed.
+--
+-- The @DashboardId@, @SheetId@, and @VisualId@ can be found in the
+-- @IDs for developers@ section of the @Embed visual@ pane of the visual\'s
+-- on-visual menu of the Amazon QuickSight console. You can also get the
+-- @DashboardId@ with a @ListDashboards@ API operation.
+--
+-- /See:/ 'newDashboardVisualId' smart constructor.
+data DashboardVisualId = DashboardVisualId'
+  { -- | The ID of the dashboard that has the visual that you want to embed. The
+    -- @DashboardId@ can be found in the @IDs for developers@ section of the
+    -- @Embed visual@ pane of the visual\'s on-visual menu of the Amazon
+    -- QuickSight console. You can also get the @DashboardId@ with a
+    -- @ListDashboards@ API operation.
+    dashboardId :: Prelude.Text,
+    -- | The ID of the sheet that the has visual that you want to embed. The
+    -- @SheetId@ can be found in the @IDs for developers@ section of the
+    -- @Embed visual@ pane of the visual\'s on-visual menu of the Amazon
+    -- QuickSight console.
+    sheetId :: Prelude.Text,
+    -- | The ID of the visual that you want to embed. The @VisualID@ can be found
+    -- in the @IDs for developers@ section of the @Embed visual@ pane of the
+    -- visual\'s on-visual menu of the Amazon QuickSight console.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardVisualId' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardId', 'dashboardVisualId_dashboardId' - The ID of the dashboard that has the visual that you want to embed. The
+-- @DashboardId@ can be found in the @IDs for developers@ section of the
+-- @Embed visual@ pane of the visual\'s on-visual menu of the Amazon
+-- QuickSight console. You can also get the @DashboardId@ with a
+-- @ListDashboards@ API operation.
+--
+-- 'sheetId', 'dashboardVisualId_sheetId' - The ID of the sheet that the has visual that you want to embed. The
+-- @SheetId@ can be found in the @IDs for developers@ section of the
+-- @Embed visual@ pane of the visual\'s on-visual menu of the Amazon
+-- QuickSight console.
+--
+-- 'visualId', 'dashboardVisualId_visualId' - The ID of the visual that you want to embed. The @VisualID@ can be found
+-- in the @IDs for developers@ section of the @Embed visual@ pane of the
+-- visual\'s on-visual menu of the Amazon QuickSight console.
+newDashboardVisualId ::
+  -- | 'dashboardId'
+  Prelude.Text ->
+  -- | 'sheetId'
+  Prelude.Text ->
+  -- | 'visualId'
+  Prelude.Text ->
+  DashboardVisualId
+newDashboardVisualId
+  pDashboardId_
+  pSheetId_
+  pVisualId_ =
+    DashboardVisualId'
+      { dashboardId = pDashboardId_,
+        sheetId = pSheetId_,
+        visualId = pVisualId_
+      }
+
+-- | The ID of the dashboard that has the visual that you want to embed. The
+-- @DashboardId@ can be found in the @IDs for developers@ section of the
+-- @Embed visual@ pane of the visual\'s on-visual menu of the Amazon
+-- QuickSight console. You can also get the @DashboardId@ with a
+-- @ListDashboards@ API operation.
+dashboardVisualId_dashboardId :: Lens.Lens' DashboardVisualId Prelude.Text
+dashboardVisualId_dashboardId = Lens.lens (\DashboardVisualId' {dashboardId} -> dashboardId) (\s@DashboardVisualId' {} a -> s {dashboardId = a} :: DashboardVisualId)
+
+-- | The ID of the sheet that the has visual that you want to embed. The
+-- @SheetId@ can be found in the @IDs for developers@ section of the
+-- @Embed visual@ pane of the visual\'s on-visual menu of the Amazon
+-- QuickSight console.
+dashboardVisualId_sheetId :: Lens.Lens' DashboardVisualId Prelude.Text
+dashboardVisualId_sheetId = Lens.lens (\DashboardVisualId' {sheetId} -> sheetId) (\s@DashboardVisualId' {} a -> s {sheetId = a} :: DashboardVisualId)
+
+-- | The ID of the visual that you want to embed. The @VisualID@ can be found
+-- in the @IDs for developers@ section of the @Embed visual@ pane of the
+-- visual\'s on-visual menu of the Amazon QuickSight console.
+dashboardVisualId_visualId :: Lens.Lens' DashboardVisualId Prelude.Text
+dashboardVisualId_visualId = Lens.lens (\DashboardVisualId' {visualId} -> visualId) (\s@DashboardVisualId' {} a -> s {visualId = a} :: DashboardVisualId)
+
+instance Prelude.Hashable DashboardVisualId where
+  hashWithSalt _salt DashboardVisualId' {..} =
+    _salt
+      `Prelude.hashWithSalt` dashboardId
+      `Prelude.hashWithSalt` sheetId
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData DashboardVisualId where
+  rnf DashboardVisualId' {..} =
+    Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf sheetId
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON DashboardVisualId where
+  toJSON DashboardVisualId' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DashboardId" Data..= dashboardId),
+            Prelude.Just ("SheetId" Data..= sheetId),
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DashboardVisualPublishOptions.hs b/gen/Amazonka/QuickSight/Types/DashboardVisualPublishOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DashboardVisualPublishOptions.hs
@@ -0,0 +1,75 @@
+{-# 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.QuickSight.Types.DashboardVisualPublishOptions
+-- 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.QuickSight.Types.DashboardVisualPublishOptions 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.QuickSight.Types.ExportHiddenFieldsOption
+
+-- |
+--
+-- /See:/ 'newDashboardVisualPublishOptions' smart constructor.
+data DashboardVisualPublishOptions = DashboardVisualPublishOptions'
+  { exportHiddenFieldsOption :: Prelude.Maybe ExportHiddenFieldsOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashboardVisualPublishOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportHiddenFieldsOption', 'dashboardVisualPublishOptions_exportHiddenFieldsOption' -
+newDashboardVisualPublishOptions ::
+  DashboardVisualPublishOptions
+newDashboardVisualPublishOptions =
+  DashboardVisualPublishOptions'
+    { exportHiddenFieldsOption =
+        Prelude.Nothing
+    }
+
+dashboardVisualPublishOptions_exportHiddenFieldsOption :: Lens.Lens' DashboardVisualPublishOptions (Prelude.Maybe ExportHiddenFieldsOption)
+dashboardVisualPublishOptions_exportHiddenFieldsOption = Lens.lens (\DashboardVisualPublishOptions' {exportHiddenFieldsOption} -> exportHiddenFieldsOption) (\s@DashboardVisualPublishOptions' {} a -> s {exportHiddenFieldsOption = a} :: DashboardVisualPublishOptions)
+
+instance
+  Prelude.Hashable
+    DashboardVisualPublishOptions
+  where
+  hashWithSalt _salt DashboardVisualPublishOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` exportHiddenFieldsOption
+
+instance Prelude.NFData DashboardVisualPublishOptions where
+  rnf DashboardVisualPublishOptions' {..} =
+    Prelude.rnf exportHiddenFieldsOption
+
+instance Data.ToJSON DashboardVisualPublishOptions where
+  toJSON DashboardVisualPublishOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExportHiddenFieldsOption" Data..=)
+              Prelude.<$> exportHiddenFieldsOption
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataColor.hs b/gen/Amazonka/QuickSight/Types/DataColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataColor.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataColor
+-- 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.QuickSight.Types.DataColor 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
+
+-- | Determines the color that is applied to a particular data value.
+--
+-- /See:/ 'newDataColor' smart constructor.
+data DataColor = DataColor'
+  { -- | The color that is applied to the data value.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | The data value that the color is applied to.
+    dataValue :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataColor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'dataColor_color' - The color that is applied to the data value.
+--
+-- 'dataValue', 'dataColor_dataValue' - The data value that the color is applied to.
+newDataColor ::
+  DataColor
+newDataColor =
+  DataColor'
+    { color = Prelude.Nothing,
+      dataValue = Prelude.Nothing
+    }
+
+-- | The color that is applied to the data value.
+dataColor_color :: Lens.Lens' DataColor (Prelude.Maybe Prelude.Text)
+dataColor_color = Lens.lens (\DataColor' {color} -> color) (\s@DataColor' {} a -> s {color = a} :: DataColor)
+
+-- | The data value that the color is applied to.
+dataColor_dataValue :: Lens.Lens' DataColor (Prelude.Maybe Prelude.Double)
+dataColor_dataValue = Lens.lens (\DataColor' {dataValue} -> dataValue) (\s@DataColor' {} a -> s {dataValue = a} :: DataColor)
+
+instance Data.FromJSON DataColor where
+  parseJSON =
+    Data.withObject
+      "DataColor"
+      ( \x ->
+          DataColor'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "DataValue")
+      )
+
+instance Prelude.Hashable DataColor where
+  hashWithSalt _salt DataColor' {..} =
+    _salt
+      `Prelude.hashWithSalt` color
+      `Prelude.hashWithSalt` dataValue
+
+instance Prelude.NFData DataColor where
+  rnf DataColor' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf dataValue
+
+instance Data.ToJSON DataColor where
+  toJSON DataColor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("DataValue" Data..=) Prelude.<$> dataValue
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataColorPalette.hs b/gen/Amazonka/QuickSight/Types/DataColorPalette.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataColorPalette.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.QuickSight.Types.DataColorPalette
+-- 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.QuickSight.Types.DataColorPalette 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 theme colors that are used for data colors in charts. The colors
+-- description is a hexadecimal color code that consists of six
+-- alphanumerical characters, prefixed with @#@, for example #37BFF5.
+--
+-- /See:/ 'newDataColorPalette' smart constructor.
+data DataColorPalette = DataColorPalette'
+  { -- | The hexadecimal codes for the colors.
+    colors :: Prelude.Maybe [Prelude.Text],
+    -- | The hexadecimal code of a color that applies to charts where a lack of
+    -- data is highlighted.
+    emptyFillColor :: Prelude.Maybe Prelude.Text,
+    -- | The minimum and maximum hexadecimal codes that describe a color
+    -- gradient.
+    minMaxGradient :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataColorPalette' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'colors', 'dataColorPalette_colors' - The hexadecimal codes for the colors.
+--
+-- 'emptyFillColor', 'dataColorPalette_emptyFillColor' - The hexadecimal code of a color that applies to charts where a lack of
+-- data is highlighted.
+--
+-- 'minMaxGradient', 'dataColorPalette_minMaxGradient' - The minimum and maximum hexadecimal codes that describe a color
+-- gradient.
+newDataColorPalette ::
+  DataColorPalette
+newDataColorPalette =
+  DataColorPalette'
+    { colors = Prelude.Nothing,
+      emptyFillColor = Prelude.Nothing,
+      minMaxGradient = Prelude.Nothing
+    }
+
+-- | The hexadecimal codes for the colors.
+dataColorPalette_colors :: Lens.Lens' DataColorPalette (Prelude.Maybe [Prelude.Text])
+dataColorPalette_colors = Lens.lens (\DataColorPalette' {colors} -> colors) (\s@DataColorPalette' {} a -> s {colors = a} :: DataColorPalette) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hexadecimal code of a color that applies to charts where a lack of
+-- data is highlighted.
+dataColorPalette_emptyFillColor :: Lens.Lens' DataColorPalette (Prelude.Maybe Prelude.Text)
+dataColorPalette_emptyFillColor = Lens.lens (\DataColorPalette' {emptyFillColor} -> emptyFillColor) (\s@DataColorPalette' {} a -> s {emptyFillColor = a} :: DataColorPalette)
+
+-- | The minimum and maximum hexadecimal codes that describe a color
+-- gradient.
+dataColorPalette_minMaxGradient :: Lens.Lens' DataColorPalette (Prelude.Maybe [Prelude.Text])
+dataColorPalette_minMaxGradient = Lens.lens (\DataColorPalette' {minMaxGradient} -> minMaxGradient) (\s@DataColorPalette' {} a -> s {minMaxGradient = a} :: DataColorPalette) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DataColorPalette where
+  parseJSON =
+    Data.withObject
+      "DataColorPalette"
+      ( \x ->
+          DataColorPalette'
+            Prelude.<$> (x Data..:? "Colors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "EmptyFillColor")
+            Prelude.<*> ( x
+                            Data..:? "MinMaxGradient"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DataColorPalette where
+  hashWithSalt _salt DataColorPalette' {..} =
+    _salt
+      `Prelude.hashWithSalt` colors
+      `Prelude.hashWithSalt` emptyFillColor
+      `Prelude.hashWithSalt` minMaxGradient
+
+instance Prelude.NFData DataColorPalette where
+  rnf DataColorPalette' {..} =
+    Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf emptyFillColor
+      `Prelude.seq` Prelude.rnf minMaxGradient
+
+instance Data.ToJSON DataColorPalette where
+  toJSON DataColorPalette' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Colors" Data..=) Prelude.<$> colors,
+            ("EmptyFillColor" Data..=)
+              Prelude.<$> emptyFillColor,
+            ("MinMaxGradient" Data..=)
+              Prelude.<$> minMaxGradient
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataFieldSeriesItem.hs b/gen/Amazonka/QuickSight/Types/DataFieldSeriesItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataFieldSeriesItem.hs
@@ -0,0 +1,128 @@
+{-# 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.QuickSight.Types.DataFieldSeriesItem
+-- 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.QuickSight.Types.DataFieldSeriesItem 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.QuickSight.Types.AxisBinding
+import Amazonka.QuickSight.Types.LineChartSeriesSettings
+
+-- | The data field series item configuration of a line chart.
+--
+-- /See:/ 'newDataFieldSeriesItem' smart constructor.
+data DataFieldSeriesItem = DataFieldSeriesItem'
+  { -- | The field value of the field that you are setting the axis binding to.
+    fieldValue :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The options that determine the presentation of line series associated to
+    -- the field.
+    settings :: Prelude.Maybe LineChartSeriesSettings,
+    -- | The field ID of the field that you are setting the axis binding to.
+    fieldId :: Prelude.Text,
+    -- | The axis that you are binding the field to.
+    axisBinding :: AxisBinding
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataFieldSeriesItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldValue', 'dataFieldSeriesItem_fieldValue' - The field value of the field that you are setting the axis binding to.
+--
+-- 'settings', 'dataFieldSeriesItem_settings' - The options that determine the presentation of line series associated to
+-- the field.
+--
+-- 'fieldId', 'dataFieldSeriesItem_fieldId' - The field ID of the field that you are setting the axis binding to.
+--
+-- 'axisBinding', 'dataFieldSeriesItem_axisBinding' - The axis that you are binding the field to.
+newDataFieldSeriesItem ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'axisBinding'
+  AxisBinding ->
+  DataFieldSeriesItem
+newDataFieldSeriesItem pFieldId_ pAxisBinding_ =
+  DataFieldSeriesItem'
+    { fieldValue = Prelude.Nothing,
+      settings = Prelude.Nothing,
+      fieldId = pFieldId_,
+      axisBinding = pAxisBinding_
+    }
+
+-- | The field value of the field that you are setting the axis binding to.
+dataFieldSeriesItem_fieldValue :: Lens.Lens' DataFieldSeriesItem (Prelude.Maybe Prelude.Text)
+dataFieldSeriesItem_fieldValue = Lens.lens (\DataFieldSeriesItem' {fieldValue} -> fieldValue) (\s@DataFieldSeriesItem' {} a -> s {fieldValue = a} :: DataFieldSeriesItem) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The options that determine the presentation of line series associated to
+-- the field.
+dataFieldSeriesItem_settings :: Lens.Lens' DataFieldSeriesItem (Prelude.Maybe LineChartSeriesSettings)
+dataFieldSeriesItem_settings = Lens.lens (\DataFieldSeriesItem' {settings} -> settings) (\s@DataFieldSeriesItem' {} a -> s {settings = a} :: DataFieldSeriesItem)
+
+-- | The field ID of the field that you are setting the axis binding to.
+dataFieldSeriesItem_fieldId :: Lens.Lens' DataFieldSeriesItem Prelude.Text
+dataFieldSeriesItem_fieldId = Lens.lens (\DataFieldSeriesItem' {fieldId} -> fieldId) (\s@DataFieldSeriesItem' {} a -> s {fieldId = a} :: DataFieldSeriesItem)
+
+-- | The axis that you are binding the field to.
+dataFieldSeriesItem_axisBinding :: Lens.Lens' DataFieldSeriesItem AxisBinding
+dataFieldSeriesItem_axisBinding = Lens.lens (\DataFieldSeriesItem' {axisBinding} -> axisBinding) (\s@DataFieldSeriesItem' {} a -> s {axisBinding = a} :: DataFieldSeriesItem)
+
+instance Data.FromJSON DataFieldSeriesItem where
+  parseJSON =
+    Data.withObject
+      "DataFieldSeriesItem"
+      ( \x ->
+          DataFieldSeriesItem'
+            Prelude.<$> (x Data..:? "FieldValue")
+            Prelude.<*> (x Data..:? "Settings")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "AxisBinding")
+      )
+
+instance Prelude.Hashable DataFieldSeriesItem where
+  hashWithSalt _salt DataFieldSeriesItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldValue
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` axisBinding
+
+instance Prelude.NFData DataFieldSeriesItem where
+  rnf DataFieldSeriesItem' {..} =
+    Prelude.rnf fieldValue
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf axisBinding
+
+instance Data.ToJSON DataFieldSeriesItem where
+  toJSON DataFieldSeriesItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldValue" Data..=) Prelude.<$> fieldValue,
+            ("Settings" Data..=) Prelude.<$> settings,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("AxisBinding" Data..= axisBinding)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataLabelContent.hs b/gen/Amazonka/QuickSight/Types/DataLabelContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataLabelContent.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.QuickSight.Types.DataLabelContent
+-- 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.QuickSight.Types.DataLabelContent
+  ( DataLabelContent
+      ( ..,
+        DataLabelContent_PERCENT,
+        DataLabelContent_VALUE,
+        DataLabelContent_VALUE_AND_PERCENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataLabelContent = DataLabelContent'
+  { fromDataLabelContent ::
+      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 DataLabelContent_PERCENT :: DataLabelContent
+pattern DataLabelContent_PERCENT = DataLabelContent' "PERCENT"
+
+pattern DataLabelContent_VALUE :: DataLabelContent
+pattern DataLabelContent_VALUE = DataLabelContent' "VALUE"
+
+pattern DataLabelContent_VALUE_AND_PERCENT :: DataLabelContent
+pattern DataLabelContent_VALUE_AND_PERCENT = DataLabelContent' "VALUE_AND_PERCENT"
+
+{-# COMPLETE
+  DataLabelContent_PERCENT,
+  DataLabelContent_VALUE,
+  DataLabelContent_VALUE_AND_PERCENT,
+  DataLabelContent'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataLabelOptions.hs b/gen/Amazonka/QuickSight/Types/DataLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataLabelOptions.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataLabelOptions
+-- 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.QuickSight.Types.DataLabelOptions 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.QuickSight.Types.DataLabelContent
+import Amazonka.QuickSight.Types.DataLabelOverlap
+import Amazonka.QuickSight.Types.DataLabelPosition
+import Amazonka.QuickSight.Types.DataLabelType
+import Amazonka.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options that determine the presentation of the data labels.
+--
+-- /See:/ 'newDataLabelOptions' smart constructor.
+data DataLabelOptions = DataLabelOptions'
+  { -- | Determines the visibility of the category field labels.
+    categoryLabelVisibility :: Prelude.Maybe Visibility,
+    -- | The option that determines the data label type.
+    dataLabelTypes :: Prelude.Maybe [DataLabelType],
+    -- | Determines the color of the data labels.
+    labelColor :: Prelude.Maybe Prelude.Text,
+    -- | Determines the content of the data labels.
+    labelContent :: Prelude.Maybe DataLabelContent,
+    -- | Determines the font configuration of the data labels.
+    labelFontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | Determines the visibility of the measure field labels.
+    measureLabelVisibility :: Prelude.Maybe Visibility,
+    -- | Determines whether overlap is enabled or disabled for the data labels.
+    overlap :: Prelude.Maybe DataLabelOverlap,
+    -- | Determines the position of the data labels.
+    position :: Prelude.Maybe DataLabelPosition,
+    -- | Determines the visibility of the data labels.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryLabelVisibility', 'dataLabelOptions_categoryLabelVisibility' - Determines the visibility of the category field labels.
+--
+-- 'dataLabelTypes', 'dataLabelOptions_dataLabelTypes' - The option that determines the data label type.
+--
+-- 'labelColor', 'dataLabelOptions_labelColor' - Determines the color of the data labels.
+--
+-- 'labelContent', 'dataLabelOptions_labelContent' - Determines the content of the data labels.
+--
+-- 'labelFontConfiguration', 'dataLabelOptions_labelFontConfiguration' - Determines the font configuration of the data labels.
+--
+-- 'measureLabelVisibility', 'dataLabelOptions_measureLabelVisibility' - Determines the visibility of the measure field labels.
+--
+-- 'overlap', 'dataLabelOptions_overlap' - Determines whether overlap is enabled or disabled for the data labels.
+--
+-- 'position', 'dataLabelOptions_position' - Determines the position of the data labels.
+--
+-- 'visibility', 'dataLabelOptions_visibility' - Determines the visibility of the data labels.
+newDataLabelOptions ::
+  DataLabelOptions
+newDataLabelOptions =
+  DataLabelOptions'
+    { categoryLabelVisibility =
+        Prelude.Nothing,
+      dataLabelTypes = Prelude.Nothing,
+      labelColor = Prelude.Nothing,
+      labelContent = Prelude.Nothing,
+      labelFontConfiguration = Prelude.Nothing,
+      measureLabelVisibility = Prelude.Nothing,
+      overlap = Prelude.Nothing,
+      position = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | Determines the visibility of the category field labels.
+dataLabelOptions_categoryLabelVisibility :: Lens.Lens' DataLabelOptions (Prelude.Maybe Visibility)
+dataLabelOptions_categoryLabelVisibility = Lens.lens (\DataLabelOptions' {categoryLabelVisibility} -> categoryLabelVisibility) (\s@DataLabelOptions' {} a -> s {categoryLabelVisibility = a} :: DataLabelOptions)
+
+-- | The option that determines the data label type.
+dataLabelOptions_dataLabelTypes :: Lens.Lens' DataLabelOptions (Prelude.Maybe [DataLabelType])
+dataLabelOptions_dataLabelTypes = Lens.lens (\DataLabelOptions' {dataLabelTypes} -> dataLabelTypes) (\s@DataLabelOptions' {} a -> s {dataLabelTypes = a} :: DataLabelOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | Determines the color of the data labels.
+dataLabelOptions_labelColor :: Lens.Lens' DataLabelOptions (Prelude.Maybe Prelude.Text)
+dataLabelOptions_labelColor = Lens.lens (\DataLabelOptions' {labelColor} -> labelColor) (\s@DataLabelOptions' {} a -> s {labelColor = a} :: DataLabelOptions)
+
+-- | Determines the content of the data labels.
+dataLabelOptions_labelContent :: Lens.Lens' DataLabelOptions (Prelude.Maybe DataLabelContent)
+dataLabelOptions_labelContent = Lens.lens (\DataLabelOptions' {labelContent} -> labelContent) (\s@DataLabelOptions' {} a -> s {labelContent = a} :: DataLabelOptions)
+
+-- | Determines the font configuration of the data labels.
+dataLabelOptions_labelFontConfiguration :: Lens.Lens' DataLabelOptions (Prelude.Maybe FontConfiguration)
+dataLabelOptions_labelFontConfiguration = Lens.lens (\DataLabelOptions' {labelFontConfiguration} -> labelFontConfiguration) (\s@DataLabelOptions' {} a -> s {labelFontConfiguration = a} :: DataLabelOptions)
+
+-- | Determines the visibility of the measure field labels.
+dataLabelOptions_measureLabelVisibility :: Lens.Lens' DataLabelOptions (Prelude.Maybe Visibility)
+dataLabelOptions_measureLabelVisibility = Lens.lens (\DataLabelOptions' {measureLabelVisibility} -> measureLabelVisibility) (\s@DataLabelOptions' {} a -> s {measureLabelVisibility = a} :: DataLabelOptions)
+
+-- | Determines whether overlap is enabled or disabled for the data labels.
+dataLabelOptions_overlap :: Lens.Lens' DataLabelOptions (Prelude.Maybe DataLabelOverlap)
+dataLabelOptions_overlap = Lens.lens (\DataLabelOptions' {overlap} -> overlap) (\s@DataLabelOptions' {} a -> s {overlap = a} :: DataLabelOptions)
+
+-- | Determines the position of the data labels.
+dataLabelOptions_position :: Lens.Lens' DataLabelOptions (Prelude.Maybe DataLabelPosition)
+dataLabelOptions_position = Lens.lens (\DataLabelOptions' {position} -> position) (\s@DataLabelOptions' {} a -> s {position = a} :: DataLabelOptions)
+
+-- | Determines the visibility of the data labels.
+dataLabelOptions_visibility :: Lens.Lens' DataLabelOptions (Prelude.Maybe Visibility)
+dataLabelOptions_visibility = Lens.lens (\DataLabelOptions' {visibility} -> visibility) (\s@DataLabelOptions' {} a -> s {visibility = a} :: DataLabelOptions)
+
+instance Data.FromJSON DataLabelOptions where
+  parseJSON =
+    Data.withObject
+      "DataLabelOptions"
+      ( \x ->
+          DataLabelOptions'
+            Prelude.<$> (x Data..:? "CategoryLabelVisibility")
+            Prelude.<*> (x Data..:? "DataLabelTypes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LabelColor")
+            Prelude.<*> (x Data..:? "LabelContent")
+            Prelude.<*> (x Data..:? "LabelFontConfiguration")
+            Prelude.<*> (x Data..:? "MeasureLabelVisibility")
+            Prelude.<*> (x Data..:? "Overlap")
+            Prelude.<*> (x Data..:? "Position")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable DataLabelOptions where
+  hashWithSalt _salt DataLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryLabelVisibility
+      `Prelude.hashWithSalt` dataLabelTypes
+      `Prelude.hashWithSalt` labelColor
+      `Prelude.hashWithSalt` labelContent
+      `Prelude.hashWithSalt` labelFontConfiguration
+      `Prelude.hashWithSalt` measureLabelVisibility
+      `Prelude.hashWithSalt` overlap
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData DataLabelOptions where
+  rnf DataLabelOptions' {..} =
+    Prelude.rnf categoryLabelVisibility
+      `Prelude.seq` Prelude.rnf dataLabelTypes
+      `Prelude.seq` Prelude.rnf labelColor
+      `Prelude.seq` Prelude.rnf labelContent
+      `Prelude.seq` Prelude.rnf labelFontConfiguration
+      `Prelude.seq` Prelude.rnf measureLabelVisibility
+      `Prelude.seq` Prelude.rnf overlap
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON DataLabelOptions where
+  toJSON DataLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryLabelVisibility" Data..=)
+              Prelude.<$> categoryLabelVisibility,
+            ("DataLabelTypes" Data..=)
+              Prelude.<$> dataLabelTypes,
+            ("LabelColor" Data..=) Prelude.<$> labelColor,
+            ("LabelContent" Data..=) Prelude.<$> labelContent,
+            ("LabelFontConfiguration" Data..=)
+              Prelude.<$> labelFontConfiguration,
+            ("MeasureLabelVisibility" Data..=)
+              Prelude.<$> measureLabelVisibility,
+            ("Overlap" Data..=) Prelude.<$> overlap,
+            ("Position" Data..=) Prelude.<$> position,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataLabelOverlap.hs b/gen/Amazonka/QuickSight/Types/DataLabelOverlap.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataLabelOverlap.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.QuickSight.Types.DataLabelOverlap
+-- 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.QuickSight.Types.DataLabelOverlap
+  ( DataLabelOverlap
+      ( ..,
+        DataLabelOverlap_DISABLE_OVERLAP,
+        DataLabelOverlap_ENABLE_OVERLAP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataLabelOverlap = DataLabelOverlap'
+  { fromDataLabelOverlap ::
+      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 DataLabelOverlap_DISABLE_OVERLAP :: DataLabelOverlap
+pattern DataLabelOverlap_DISABLE_OVERLAP = DataLabelOverlap' "DISABLE_OVERLAP"
+
+pattern DataLabelOverlap_ENABLE_OVERLAP :: DataLabelOverlap
+pattern DataLabelOverlap_ENABLE_OVERLAP = DataLabelOverlap' "ENABLE_OVERLAP"
+
+{-# COMPLETE
+  DataLabelOverlap_DISABLE_OVERLAP,
+  DataLabelOverlap_ENABLE_OVERLAP,
+  DataLabelOverlap'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataLabelPosition.hs b/gen/Amazonka/QuickSight/Types/DataLabelPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataLabelPosition.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataLabelPosition
+-- 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.QuickSight.Types.DataLabelPosition
+  ( DataLabelPosition
+      ( ..,
+        DataLabelPosition_BOTTOM,
+        DataLabelPosition_INSIDE,
+        DataLabelPosition_LEFT,
+        DataLabelPosition_OUTSIDE,
+        DataLabelPosition_RIGHT,
+        DataLabelPosition_TOP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataLabelPosition = DataLabelPosition'
+  { fromDataLabelPosition ::
+      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 DataLabelPosition_BOTTOM :: DataLabelPosition
+pattern DataLabelPosition_BOTTOM = DataLabelPosition' "BOTTOM"
+
+pattern DataLabelPosition_INSIDE :: DataLabelPosition
+pattern DataLabelPosition_INSIDE = DataLabelPosition' "INSIDE"
+
+pattern DataLabelPosition_LEFT :: DataLabelPosition
+pattern DataLabelPosition_LEFT = DataLabelPosition' "LEFT"
+
+pattern DataLabelPosition_OUTSIDE :: DataLabelPosition
+pattern DataLabelPosition_OUTSIDE = DataLabelPosition' "OUTSIDE"
+
+pattern DataLabelPosition_RIGHT :: DataLabelPosition
+pattern DataLabelPosition_RIGHT = DataLabelPosition' "RIGHT"
+
+pattern DataLabelPosition_TOP :: DataLabelPosition
+pattern DataLabelPosition_TOP = DataLabelPosition' "TOP"
+
+{-# COMPLETE
+  DataLabelPosition_BOTTOM,
+  DataLabelPosition_INSIDE,
+  DataLabelPosition_LEFT,
+  DataLabelPosition_OUTSIDE,
+  DataLabelPosition_RIGHT,
+  DataLabelPosition_TOP,
+  DataLabelPosition'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataLabelType.hs b/gen/Amazonka/QuickSight/Types/DataLabelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataLabelType.hs
@@ -0,0 +1,145 @@
+{-# 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.QuickSight.Types.DataLabelType
+-- 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.QuickSight.Types.DataLabelType 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.QuickSight.Types.DataPathLabelType
+import Amazonka.QuickSight.Types.FieldLabelType
+import Amazonka.QuickSight.Types.MaximumLabelType
+import Amazonka.QuickSight.Types.MinimumLabelType
+import Amazonka.QuickSight.Types.RangeEndsLabelType
+
+-- | The option that determines the data label type.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newDataLabelType' smart constructor.
+data DataLabelType = DataLabelType'
+  { -- | The option that specifies individual data values for labels.
+    dataPathLabelType :: Prelude.Maybe DataPathLabelType,
+    -- | Determines the label configuration for the entire field.
+    fieldLabelType :: Prelude.Maybe FieldLabelType,
+    -- | Determines the label configuration for the maximum value in a visual.
+    maximumLabelType :: Prelude.Maybe MaximumLabelType,
+    -- | Determines the label configuration for the minimum value in a visual.
+    minimumLabelType :: Prelude.Maybe MinimumLabelType,
+    -- | Determines the label configuration for range end value in a visual.
+    rangeEndsLabelType :: Prelude.Maybe RangeEndsLabelType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataLabelType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataPathLabelType', 'dataLabelType_dataPathLabelType' - The option that specifies individual data values for labels.
+--
+-- 'fieldLabelType', 'dataLabelType_fieldLabelType' - Determines the label configuration for the entire field.
+--
+-- 'maximumLabelType', 'dataLabelType_maximumLabelType' - Determines the label configuration for the maximum value in a visual.
+--
+-- 'minimumLabelType', 'dataLabelType_minimumLabelType' - Determines the label configuration for the minimum value in a visual.
+--
+-- 'rangeEndsLabelType', 'dataLabelType_rangeEndsLabelType' - Determines the label configuration for range end value in a visual.
+newDataLabelType ::
+  DataLabelType
+newDataLabelType =
+  DataLabelType'
+    { dataPathLabelType = Prelude.Nothing,
+      fieldLabelType = Prelude.Nothing,
+      maximumLabelType = Prelude.Nothing,
+      minimumLabelType = Prelude.Nothing,
+      rangeEndsLabelType = Prelude.Nothing
+    }
+
+-- | The option that specifies individual data values for labels.
+dataLabelType_dataPathLabelType :: Lens.Lens' DataLabelType (Prelude.Maybe DataPathLabelType)
+dataLabelType_dataPathLabelType = Lens.lens (\DataLabelType' {dataPathLabelType} -> dataPathLabelType) (\s@DataLabelType' {} a -> s {dataPathLabelType = a} :: DataLabelType)
+
+-- | Determines the label configuration for the entire field.
+dataLabelType_fieldLabelType :: Lens.Lens' DataLabelType (Prelude.Maybe FieldLabelType)
+dataLabelType_fieldLabelType = Lens.lens (\DataLabelType' {fieldLabelType} -> fieldLabelType) (\s@DataLabelType' {} a -> s {fieldLabelType = a} :: DataLabelType)
+
+-- | Determines the label configuration for the maximum value in a visual.
+dataLabelType_maximumLabelType :: Lens.Lens' DataLabelType (Prelude.Maybe MaximumLabelType)
+dataLabelType_maximumLabelType = Lens.lens (\DataLabelType' {maximumLabelType} -> maximumLabelType) (\s@DataLabelType' {} a -> s {maximumLabelType = a} :: DataLabelType)
+
+-- | Determines the label configuration for the minimum value in a visual.
+dataLabelType_minimumLabelType :: Lens.Lens' DataLabelType (Prelude.Maybe MinimumLabelType)
+dataLabelType_minimumLabelType = Lens.lens (\DataLabelType' {minimumLabelType} -> minimumLabelType) (\s@DataLabelType' {} a -> s {minimumLabelType = a} :: DataLabelType)
+
+-- | Determines the label configuration for range end value in a visual.
+dataLabelType_rangeEndsLabelType :: Lens.Lens' DataLabelType (Prelude.Maybe RangeEndsLabelType)
+dataLabelType_rangeEndsLabelType = Lens.lens (\DataLabelType' {rangeEndsLabelType} -> rangeEndsLabelType) (\s@DataLabelType' {} a -> s {rangeEndsLabelType = a} :: DataLabelType)
+
+instance Data.FromJSON DataLabelType where
+  parseJSON =
+    Data.withObject
+      "DataLabelType"
+      ( \x ->
+          DataLabelType'
+            Prelude.<$> (x Data..:? "DataPathLabelType")
+            Prelude.<*> (x Data..:? "FieldLabelType")
+            Prelude.<*> (x Data..:? "MaximumLabelType")
+            Prelude.<*> (x Data..:? "MinimumLabelType")
+            Prelude.<*> (x Data..:? "RangeEndsLabelType")
+      )
+
+instance Prelude.Hashable DataLabelType where
+  hashWithSalt _salt DataLabelType' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataPathLabelType
+      `Prelude.hashWithSalt` fieldLabelType
+      `Prelude.hashWithSalt` maximumLabelType
+      `Prelude.hashWithSalt` minimumLabelType
+      `Prelude.hashWithSalt` rangeEndsLabelType
+
+instance Prelude.NFData DataLabelType where
+  rnf DataLabelType' {..} =
+    Prelude.rnf dataPathLabelType
+      `Prelude.seq` Prelude.rnf fieldLabelType
+      `Prelude.seq` Prelude.rnf maximumLabelType
+      `Prelude.seq` Prelude.rnf minimumLabelType
+      `Prelude.seq` Prelude.rnf rangeEndsLabelType
+
+instance Data.ToJSON DataLabelType where
+  toJSON DataLabelType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataPathLabelType" Data..=)
+              Prelude.<$> dataPathLabelType,
+            ("FieldLabelType" Data..=)
+              Prelude.<$> fieldLabelType,
+            ("MaximumLabelType" Data..=)
+              Prelude.<$> maximumLabelType,
+            ("MinimumLabelType" Data..=)
+              Prelude.<$> minimumLabelType,
+            ("RangeEndsLabelType" Data..=)
+              Prelude.<$> rangeEndsLabelType
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataPathColor.hs b/gen/Amazonka/QuickSight/Types/DataPathColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataPathColor.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.DataPathColor
+-- 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.QuickSight.Types.DataPathColor 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.QuickSight.Types.DataPathValue
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | The color map that determines the color options for a particular
+-- element.
+--
+-- /See:/ 'newDataPathColor' smart constructor.
+data DataPathColor = DataPathColor'
+  { -- | The time granularity of the field that the color needs to be applied to.
+    timeGranularity :: Prelude.Maybe TimeGranularity,
+    -- | The element that the color needs to be applied to.
+    element :: DataPathValue,
+    -- | The color that needs to be applied to the element.
+    color :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataPathColor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'timeGranularity', 'dataPathColor_timeGranularity' - The time granularity of the field that the color needs to be applied to.
+--
+-- 'element', 'dataPathColor_element' - The element that the color needs to be applied to.
+--
+-- 'color', 'dataPathColor_color' - The color that needs to be applied to the element.
+newDataPathColor ::
+  -- | 'element'
+  DataPathValue ->
+  -- | 'color'
+  Prelude.Text ->
+  DataPathColor
+newDataPathColor pElement_ pColor_ =
+  DataPathColor'
+    { timeGranularity = Prelude.Nothing,
+      element = pElement_,
+      color = pColor_
+    }
+
+-- | The time granularity of the field that the color needs to be applied to.
+dataPathColor_timeGranularity :: Lens.Lens' DataPathColor (Prelude.Maybe TimeGranularity)
+dataPathColor_timeGranularity = Lens.lens (\DataPathColor' {timeGranularity} -> timeGranularity) (\s@DataPathColor' {} a -> s {timeGranularity = a} :: DataPathColor)
+
+-- | The element that the color needs to be applied to.
+dataPathColor_element :: Lens.Lens' DataPathColor DataPathValue
+dataPathColor_element = Lens.lens (\DataPathColor' {element} -> element) (\s@DataPathColor' {} a -> s {element = a} :: DataPathColor)
+
+-- | The color that needs to be applied to the element.
+dataPathColor_color :: Lens.Lens' DataPathColor Prelude.Text
+dataPathColor_color = Lens.lens (\DataPathColor' {color} -> color) (\s@DataPathColor' {} a -> s {color = a} :: DataPathColor)
+
+instance Data.FromJSON DataPathColor where
+  parseJSON =
+    Data.withObject
+      "DataPathColor"
+      ( \x ->
+          DataPathColor'
+            Prelude.<$> (x Data..:? "TimeGranularity")
+            Prelude.<*> (x Data..: "Element")
+            Prelude.<*> (x Data..: "Color")
+      )
+
+instance Prelude.Hashable DataPathColor where
+  hashWithSalt _salt DataPathColor' {..} =
+    _salt
+      `Prelude.hashWithSalt` timeGranularity
+      `Prelude.hashWithSalt` element
+      `Prelude.hashWithSalt` color
+
+instance Prelude.NFData DataPathColor where
+  rnf DataPathColor' {..} =
+    Prelude.rnf timeGranularity
+      `Prelude.seq` Prelude.rnf element
+      `Prelude.seq` Prelude.rnf color
+
+instance Data.ToJSON DataPathColor where
+  toJSON DataPathColor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TimeGranularity" Data..=)
+              Prelude.<$> timeGranularity,
+            Prelude.Just ("Element" Data..= element),
+            Prelude.Just ("Color" Data..= color)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataPathLabelType.hs b/gen/Amazonka/QuickSight/Types/DataPathLabelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataPathLabelType.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataPathLabelType
+-- 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.QuickSight.Types.DataPathLabelType 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.QuickSight.Types.Visibility
+
+-- | The option that specifies individual data values for labels.
+--
+-- /See:/ 'newDataPathLabelType' smart constructor.
+data DataPathLabelType = DataPathLabelType'
+  { -- | The field ID of the field that the data label needs to be applied to.
+    fieldId :: Prelude.Maybe Prelude.Text,
+    -- | The actual value of the field that is labeled.
+    fieldValue :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The visibility of the data label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataPathLabelType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'dataPathLabelType_fieldId' - The field ID of the field that the data label needs to be applied to.
+--
+-- 'fieldValue', 'dataPathLabelType_fieldValue' - The actual value of the field that is labeled.
+--
+-- 'visibility', 'dataPathLabelType_visibility' - The visibility of the data label.
+newDataPathLabelType ::
+  DataPathLabelType
+newDataPathLabelType =
+  DataPathLabelType'
+    { fieldId = Prelude.Nothing,
+      fieldValue = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The field ID of the field that the data label needs to be applied to.
+dataPathLabelType_fieldId :: Lens.Lens' DataPathLabelType (Prelude.Maybe Prelude.Text)
+dataPathLabelType_fieldId = Lens.lens (\DataPathLabelType' {fieldId} -> fieldId) (\s@DataPathLabelType' {} a -> s {fieldId = a} :: DataPathLabelType)
+
+-- | The actual value of the field that is labeled.
+dataPathLabelType_fieldValue :: Lens.Lens' DataPathLabelType (Prelude.Maybe Prelude.Text)
+dataPathLabelType_fieldValue = Lens.lens (\DataPathLabelType' {fieldValue} -> fieldValue) (\s@DataPathLabelType' {} a -> s {fieldValue = a} :: DataPathLabelType) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The visibility of the data label.
+dataPathLabelType_visibility :: Lens.Lens' DataPathLabelType (Prelude.Maybe Visibility)
+dataPathLabelType_visibility = Lens.lens (\DataPathLabelType' {visibility} -> visibility) (\s@DataPathLabelType' {} a -> s {visibility = a} :: DataPathLabelType)
+
+instance Data.FromJSON DataPathLabelType where
+  parseJSON =
+    Data.withObject
+      "DataPathLabelType"
+      ( \x ->
+          DataPathLabelType'
+            Prelude.<$> (x Data..:? "FieldId")
+            Prelude.<*> (x Data..:? "FieldValue")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable DataPathLabelType where
+  hashWithSalt _salt DataPathLabelType' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` fieldValue
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData DataPathLabelType where
+  rnf DataPathLabelType' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf fieldValue
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON DataPathLabelType where
+  toJSON DataPathLabelType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldId" Data..=) Prelude.<$> fieldId,
+            ("FieldValue" Data..=) Prelude.<$> fieldValue,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataPathSort.hs b/gen/Amazonka/QuickSight/Types/DataPathSort.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataPathSort.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataPathSort
+-- 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.QuickSight.Types.DataPathSort 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.QuickSight.Types.DataPathValue
+import Amazonka.QuickSight.Types.SortDirection
+
+-- | Allows data paths to be sorted by a specific data value.
+--
+-- /See:/ 'newDataPathSort' smart constructor.
+data DataPathSort = DataPathSort'
+  { -- | Determines the sort direction.
+    direction :: SortDirection,
+    -- | The list of data paths that need to be sorted.
+    sortPaths :: [DataPathValue]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataPathSort' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'direction', 'dataPathSort_direction' - Determines the sort direction.
+--
+-- 'sortPaths', 'dataPathSort_sortPaths' - The list of data paths that need to be sorted.
+newDataPathSort ::
+  -- | 'direction'
+  SortDirection ->
+  DataPathSort
+newDataPathSort pDirection_ =
+  DataPathSort'
+    { direction = pDirection_,
+      sortPaths = Prelude.mempty
+    }
+
+-- | Determines the sort direction.
+dataPathSort_direction :: Lens.Lens' DataPathSort SortDirection
+dataPathSort_direction = Lens.lens (\DataPathSort' {direction} -> direction) (\s@DataPathSort' {} a -> s {direction = a} :: DataPathSort)
+
+-- | The list of data paths that need to be sorted.
+dataPathSort_sortPaths :: Lens.Lens' DataPathSort [DataPathValue]
+dataPathSort_sortPaths = Lens.lens (\DataPathSort' {sortPaths} -> sortPaths) (\s@DataPathSort' {} a -> s {sortPaths = a} :: DataPathSort) Prelude.. Lens.coerced
+
+instance Data.FromJSON DataPathSort where
+  parseJSON =
+    Data.withObject
+      "DataPathSort"
+      ( \x ->
+          DataPathSort'
+            Prelude.<$> (x Data..: "Direction")
+            Prelude.<*> (x Data..:? "SortPaths" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable DataPathSort where
+  hashWithSalt _salt DataPathSort' {..} =
+    _salt
+      `Prelude.hashWithSalt` direction
+      `Prelude.hashWithSalt` sortPaths
+
+instance Prelude.NFData DataPathSort where
+  rnf DataPathSort' {..} =
+    Prelude.rnf direction
+      `Prelude.seq` Prelude.rnf sortPaths
+
+instance Data.ToJSON DataPathSort where
+  toJSON DataPathSort' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Direction" Data..= direction),
+            Prelude.Just ("SortPaths" Data..= sortPaths)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataPathValue.hs b/gen/Amazonka/QuickSight/Types/DataPathValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataPathValue.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataPathValue
+-- 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.QuickSight.Types.DataPathValue 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 data path that needs to be sorted.
+--
+-- /See:/ 'newDataPathValue' smart constructor.
+data DataPathValue = DataPathValue'
+  { -- | The field ID of the field that needs to be sorted.
+    fieldId :: Prelude.Text,
+    -- | The actual value of the field that needs to be sorted.
+    fieldValue :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataPathValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'dataPathValue_fieldId' - The field ID of the field that needs to be sorted.
+--
+-- 'fieldValue', 'dataPathValue_fieldValue' - The actual value of the field that needs to be sorted.
+newDataPathValue ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'fieldValue'
+  Prelude.Text ->
+  DataPathValue
+newDataPathValue pFieldId_ pFieldValue_ =
+  DataPathValue'
+    { fieldId = pFieldId_,
+      fieldValue = Data._Sensitive Lens.# pFieldValue_
+    }
+
+-- | The field ID of the field that needs to be sorted.
+dataPathValue_fieldId :: Lens.Lens' DataPathValue Prelude.Text
+dataPathValue_fieldId = Lens.lens (\DataPathValue' {fieldId} -> fieldId) (\s@DataPathValue' {} a -> s {fieldId = a} :: DataPathValue)
+
+-- | The actual value of the field that needs to be sorted.
+dataPathValue_fieldValue :: Lens.Lens' DataPathValue Prelude.Text
+dataPathValue_fieldValue = Lens.lens (\DataPathValue' {fieldValue} -> fieldValue) (\s@DataPathValue' {} a -> s {fieldValue = a} :: DataPathValue) Prelude.. Data._Sensitive
+
+instance Data.FromJSON DataPathValue where
+  parseJSON =
+    Data.withObject
+      "DataPathValue"
+      ( \x ->
+          DataPathValue'
+            Prelude.<$> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "FieldValue")
+      )
+
+instance Prelude.Hashable DataPathValue where
+  hashWithSalt _salt DataPathValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` fieldValue
+
+instance Prelude.NFData DataPathValue where
+  rnf DataPathValue' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf fieldValue
+
+instance Data.ToJSON DataPathValue where
+  toJSON DataPathValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("FieldValue" Data..= fieldValue)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSet.hs b/gen/Amazonka/QuickSight/Types/DataSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSet.hs
@@ -0,0 +1,290 @@
+{-# 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.QuickSight.Types.DataSet
+-- 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.QuickSight.Types.DataSet 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.QuickSight.Types.ColumnGroup
+import Amazonka.QuickSight.Types.ColumnLevelPermissionRule
+import Amazonka.QuickSight.Types.DataSetImportMode
+import Amazonka.QuickSight.Types.DataSetUsageConfiguration
+import Amazonka.QuickSight.Types.FieldFolder
+import Amazonka.QuickSight.Types.LogicalTable
+import Amazonka.QuickSight.Types.OutputColumn
+import Amazonka.QuickSight.Types.PhysicalTable
+import Amazonka.QuickSight.Types.RowLevelPermissionDataSet
+import Amazonka.QuickSight.Types.RowLevelPermissionTagConfiguration
+
+-- | Dataset.
+--
+-- /See:/ 'newDataSet' smart constructor.
+data DataSet = DataSet'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | Groupings of columns that work together in certain Amazon QuickSight
+    -- features. Currently, only geospatial hierarchy is supported.
+    columnGroups :: Prelude.Maybe (Prelude.NonEmpty ColumnGroup),
+    -- | A set of one or more definitions of a
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+    columnLevelPermissionRules :: Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule),
+    -- | The amount of SPICE capacity used by this dataset. This is 0 if the
+    -- dataset isn\'t imported into SPICE.
+    consumedSpiceCapacityInBytes :: Prelude.Maybe Prelude.Integer,
+    -- | The time that this dataset was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the dataset.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | The usage configuration to apply to child datasets that reference this
+    -- dataset as a source.
+    dataSetUsageConfiguration :: Prelude.Maybe DataSetUsageConfiguration,
+    -- | The folder that contains fields and nested subfolders for your dataset.
+    fieldFolders :: Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder),
+    -- | A value that indicates whether you want to import the data into SPICE.
+    importMode :: Prelude.Maybe DataSetImportMode,
+    -- | The last time that this dataset was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | Configures the combination and transformation of the data from the
+    -- physical tables.
+    logicalTableMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable),
+    -- | A display name for the dataset.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The list of columns after all transforms. These columns are available in
+    -- templates, analyses, and dashboards.
+    outputColumns :: Prelude.Maybe [OutputColumn],
+    -- | Declares the physical tables that are available in the underlying data
+    -- sources.
+    physicalTableMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text PhysicalTable),
+    -- | The row-level security configuration for the dataset.
+    rowLevelPermissionDataSet :: Prelude.Maybe RowLevelPermissionDataSet,
+    -- | The element you can use to define tags for row-level security.
+    rowLevelPermissionTagConfiguration :: Prelude.Maybe RowLevelPermissionTagConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dataSet_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'columnGroups', 'dataSet_columnGroups' - Groupings of columns that work together in certain Amazon QuickSight
+-- features. Currently, only geospatial hierarchy is supported.
+--
+-- 'columnLevelPermissionRules', 'dataSet_columnLevelPermissionRules' - A set of one or more definitions of a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+--
+-- 'consumedSpiceCapacityInBytes', 'dataSet_consumedSpiceCapacityInBytes' - The amount of SPICE capacity used by this dataset. This is 0 if the
+-- dataset isn\'t imported into SPICE.
+--
+-- 'createdTime', 'dataSet_createdTime' - The time that this dataset was created.
+--
+-- 'dataSetId', 'dataSet_dataSetId' - The ID of the dataset.
+--
+-- 'dataSetUsageConfiguration', 'dataSet_dataSetUsageConfiguration' - The usage configuration to apply to child datasets that reference this
+-- dataset as a source.
+--
+-- 'fieldFolders', 'dataSet_fieldFolders' - The folder that contains fields and nested subfolders for your dataset.
+--
+-- 'importMode', 'dataSet_importMode' - A value that indicates whether you want to import the data into SPICE.
+--
+-- 'lastUpdatedTime', 'dataSet_lastUpdatedTime' - The last time that this dataset was updated.
+--
+-- 'logicalTableMap', 'dataSet_logicalTableMap' - Configures the combination and transformation of the data from the
+-- physical tables.
+--
+-- 'name', 'dataSet_name' - A display name for the dataset.
+--
+-- 'outputColumns', 'dataSet_outputColumns' - The list of columns after all transforms. These columns are available in
+-- templates, analyses, and dashboards.
+--
+-- 'physicalTableMap', 'dataSet_physicalTableMap' - Declares the physical tables that are available in the underlying data
+-- sources.
+--
+-- 'rowLevelPermissionDataSet', 'dataSet_rowLevelPermissionDataSet' - The row-level security configuration for the dataset.
+--
+-- 'rowLevelPermissionTagConfiguration', 'dataSet_rowLevelPermissionTagConfiguration' - The element you can use to define tags for row-level security.
+newDataSet ::
+  DataSet
+newDataSet =
+  DataSet'
+    { arn = Prelude.Nothing,
+      columnGroups = Prelude.Nothing,
+      columnLevelPermissionRules = Prelude.Nothing,
+      consumedSpiceCapacityInBytes = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      dataSetUsageConfiguration = Prelude.Nothing,
+      fieldFolders = Prelude.Nothing,
+      importMode = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      logicalTableMap = Prelude.Nothing,
+      name = Prelude.Nothing,
+      outputColumns = Prelude.Nothing,
+      physicalTableMap = Prelude.Nothing,
+      rowLevelPermissionDataSet = Prelude.Nothing,
+      rowLevelPermissionTagConfiguration = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+dataSet_arn :: Lens.Lens' DataSet (Prelude.Maybe Prelude.Text)
+dataSet_arn = Lens.lens (\DataSet' {arn} -> arn) (\s@DataSet' {} a -> s {arn = a} :: DataSet)
+
+-- | Groupings of columns that work together in certain Amazon QuickSight
+-- features. Currently, only geospatial hierarchy is supported.
+dataSet_columnGroups :: Lens.Lens' DataSet (Prelude.Maybe (Prelude.NonEmpty ColumnGroup))
+dataSet_columnGroups = Lens.lens (\DataSet' {columnGroups} -> columnGroups) (\s@DataSet' {} a -> s {columnGroups = a} :: DataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | A set of one or more definitions of a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+dataSet_columnLevelPermissionRules :: Lens.Lens' DataSet (Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule))
+dataSet_columnLevelPermissionRules = Lens.lens (\DataSet' {columnLevelPermissionRules} -> columnLevelPermissionRules) (\s@DataSet' {} a -> s {columnLevelPermissionRules = a} :: DataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The amount of SPICE capacity used by this dataset. This is 0 if the
+-- dataset isn\'t imported into SPICE.
+dataSet_consumedSpiceCapacityInBytes :: Lens.Lens' DataSet (Prelude.Maybe Prelude.Integer)
+dataSet_consumedSpiceCapacityInBytes = Lens.lens (\DataSet' {consumedSpiceCapacityInBytes} -> consumedSpiceCapacityInBytes) (\s@DataSet' {} a -> s {consumedSpiceCapacityInBytes = a} :: DataSet)
+
+-- | The time that this dataset was created.
+dataSet_createdTime :: Lens.Lens' DataSet (Prelude.Maybe Prelude.UTCTime)
+dataSet_createdTime = Lens.lens (\DataSet' {createdTime} -> createdTime) (\s@DataSet' {} a -> s {createdTime = a} :: DataSet) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the dataset.
+dataSet_dataSetId :: Lens.Lens' DataSet (Prelude.Maybe Prelude.Text)
+dataSet_dataSetId = Lens.lens (\DataSet' {dataSetId} -> dataSetId) (\s@DataSet' {} a -> s {dataSetId = a} :: DataSet)
+
+-- | The usage configuration to apply to child datasets that reference this
+-- dataset as a source.
+dataSet_dataSetUsageConfiguration :: Lens.Lens' DataSet (Prelude.Maybe DataSetUsageConfiguration)
+dataSet_dataSetUsageConfiguration = Lens.lens (\DataSet' {dataSetUsageConfiguration} -> dataSetUsageConfiguration) (\s@DataSet' {} a -> s {dataSetUsageConfiguration = a} :: DataSet)
+
+-- | The folder that contains fields and nested subfolders for your dataset.
+dataSet_fieldFolders :: Lens.Lens' DataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder))
+dataSet_fieldFolders = Lens.lens (\DataSet' {fieldFolders} -> fieldFolders) (\s@DataSet' {} a -> s {fieldFolders = a} :: DataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | A value that indicates whether you want to import the data into SPICE.
+dataSet_importMode :: Lens.Lens' DataSet (Prelude.Maybe DataSetImportMode)
+dataSet_importMode = Lens.lens (\DataSet' {importMode} -> importMode) (\s@DataSet' {} a -> s {importMode = a} :: DataSet)
+
+-- | The last time that this dataset was updated.
+dataSet_lastUpdatedTime :: Lens.Lens' DataSet (Prelude.Maybe Prelude.UTCTime)
+dataSet_lastUpdatedTime = Lens.lens (\DataSet' {lastUpdatedTime} -> lastUpdatedTime) (\s@DataSet' {} a -> s {lastUpdatedTime = a} :: DataSet) Prelude.. Lens.mapping Data._Time
+
+-- | Configures the combination and transformation of the data from the
+-- physical tables.
+dataSet_logicalTableMap :: Lens.Lens' DataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable))
+dataSet_logicalTableMap = Lens.lens (\DataSet' {logicalTableMap} -> logicalTableMap) (\s@DataSet' {} a -> s {logicalTableMap = a} :: DataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | A display name for the dataset.
+dataSet_name :: Lens.Lens' DataSet (Prelude.Maybe Prelude.Text)
+dataSet_name = Lens.lens (\DataSet' {name} -> name) (\s@DataSet' {} a -> s {name = a} :: DataSet)
+
+-- | The list of columns after all transforms. These columns are available in
+-- templates, analyses, and dashboards.
+dataSet_outputColumns :: Lens.Lens' DataSet (Prelude.Maybe [OutputColumn])
+dataSet_outputColumns = Lens.lens (\DataSet' {outputColumns} -> outputColumns) (\s@DataSet' {} a -> s {outputColumns = a} :: DataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | Declares the physical tables that are available in the underlying data
+-- sources.
+dataSet_physicalTableMap :: Lens.Lens' DataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text PhysicalTable))
+dataSet_physicalTableMap = Lens.lens (\DataSet' {physicalTableMap} -> physicalTableMap) (\s@DataSet' {} a -> s {physicalTableMap = a} :: DataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The row-level security configuration for the dataset.
+dataSet_rowLevelPermissionDataSet :: Lens.Lens' DataSet (Prelude.Maybe RowLevelPermissionDataSet)
+dataSet_rowLevelPermissionDataSet = Lens.lens (\DataSet' {rowLevelPermissionDataSet} -> rowLevelPermissionDataSet) (\s@DataSet' {} a -> s {rowLevelPermissionDataSet = a} :: DataSet)
+
+-- | The element you can use to define tags for row-level security.
+dataSet_rowLevelPermissionTagConfiguration :: Lens.Lens' DataSet (Prelude.Maybe RowLevelPermissionTagConfiguration)
+dataSet_rowLevelPermissionTagConfiguration = Lens.lens (\DataSet' {rowLevelPermissionTagConfiguration} -> rowLevelPermissionTagConfiguration) (\s@DataSet' {} a -> s {rowLevelPermissionTagConfiguration = a} :: DataSet)
+
+instance Data.FromJSON DataSet where
+  parseJSON =
+    Data.withObject
+      "DataSet"
+      ( \x ->
+          DataSet'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "ColumnGroups")
+            Prelude.<*> (x Data..:? "ColumnLevelPermissionRules")
+            Prelude.<*> (x Data..:? "ConsumedSpiceCapacityInBytes")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DataSetId")
+            Prelude.<*> (x Data..:? "DataSetUsageConfiguration")
+            Prelude.<*> (x Data..:? "FieldFolders" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ImportMode")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> ( x
+                            Data..:? "LogicalTableMap"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OutputColumns" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "PhysicalTableMap"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "RowLevelPermissionDataSet")
+            Prelude.<*> (x Data..:? "RowLevelPermissionTagConfiguration")
+      )
+
+instance Prelude.Hashable DataSet where
+  hashWithSalt _salt DataSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` columnGroups
+      `Prelude.hashWithSalt` columnLevelPermissionRules
+      `Prelude.hashWithSalt` consumedSpiceCapacityInBytes
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` dataSetUsageConfiguration
+      `Prelude.hashWithSalt` fieldFolders
+      `Prelude.hashWithSalt` importMode
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` logicalTableMap
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` outputColumns
+      `Prelude.hashWithSalt` physicalTableMap
+      `Prelude.hashWithSalt` rowLevelPermissionDataSet
+      `Prelude.hashWithSalt` rowLevelPermissionTagConfiguration
+
+instance Prelude.NFData DataSet where
+  rnf DataSet' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf columnGroups
+      `Prelude.seq` Prelude.rnf columnLevelPermissionRules
+      `Prelude.seq` Prelude.rnf consumedSpiceCapacityInBytes
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf dataSetUsageConfiguration
+      `Prelude.seq` Prelude.rnf fieldFolders
+      `Prelude.seq` Prelude.rnf importMode
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf logicalTableMap
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf outputColumns
+      `Prelude.seq` Prelude.rnf physicalTableMap
+      `Prelude.seq` Prelude.rnf rowLevelPermissionDataSet
+      `Prelude.seq` Prelude.rnf
+        rowLevelPermissionTagConfiguration
diff --git a/gen/Amazonka/QuickSight/Types/DataSetConfiguration.hs b/gen/Amazonka/QuickSight/Types/DataSetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetConfiguration.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataSetConfiguration
+-- 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.QuickSight.Types.DataSetConfiguration 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.QuickSight.Types.ColumnGroupSchema
+import Amazonka.QuickSight.Types.DataSetSchema
+
+-- | Dataset configuration.
+--
+-- /See:/ 'newDataSetConfiguration' smart constructor.
+data DataSetConfiguration = DataSetConfiguration'
+  { -- | A structure containing the list of column group schemas.
+    columnGroupSchemaList :: Prelude.Maybe [ColumnGroupSchema],
+    -- | Dataset schema.
+    dataSetSchema :: Prelude.Maybe DataSetSchema,
+    -- | Placeholder.
+    placeholder :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnGroupSchemaList', 'dataSetConfiguration_columnGroupSchemaList' - A structure containing the list of column group schemas.
+--
+-- 'dataSetSchema', 'dataSetConfiguration_dataSetSchema' - Dataset schema.
+--
+-- 'placeholder', 'dataSetConfiguration_placeholder' - Placeholder.
+newDataSetConfiguration ::
+  DataSetConfiguration
+newDataSetConfiguration =
+  DataSetConfiguration'
+    { columnGroupSchemaList =
+        Prelude.Nothing,
+      dataSetSchema = Prelude.Nothing,
+      placeholder = Prelude.Nothing
+    }
+
+-- | A structure containing the list of column group schemas.
+dataSetConfiguration_columnGroupSchemaList :: Lens.Lens' DataSetConfiguration (Prelude.Maybe [ColumnGroupSchema])
+dataSetConfiguration_columnGroupSchemaList = Lens.lens (\DataSetConfiguration' {columnGroupSchemaList} -> columnGroupSchemaList) (\s@DataSetConfiguration' {} a -> s {columnGroupSchemaList = a} :: DataSetConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Dataset schema.
+dataSetConfiguration_dataSetSchema :: Lens.Lens' DataSetConfiguration (Prelude.Maybe DataSetSchema)
+dataSetConfiguration_dataSetSchema = Lens.lens (\DataSetConfiguration' {dataSetSchema} -> dataSetSchema) (\s@DataSetConfiguration' {} a -> s {dataSetSchema = a} :: DataSetConfiguration)
+
+-- | Placeholder.
+dataSetConfiguration_placeholder :: Lens.Lens' DataSetConfiguration (Prelude.Maybe Prelude.Text)
+dataSetConfiguration_placeholder = Lens.lens (\DataSetConfiguration' {placeholder} -> placeholder) (\s@DataSetConfiguration' {} a -> s {placeholder = a} :: DataSetConfiguration)
+
+instance Data.FromJSON DataSetConfiguration where
+  parseJSON =
+    Data.withObject
+      "DataSetConfiguration"
+      ( \x ->
+          DataSetConfiguration'
+            Prelude.<$> ( x
+                            Data..:? "ColumnGroupSchemaList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "DataSetSchema")
+            Prelude.<*> (x Data..:? "Placeholder")
+      )
+
+instance Prelude.Hashable DataSetConfiguration where
+  hashWithSalt _salt DataSetConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnGroupSchemaList
+      `Prelude.hashWithSalt` dataSetSchema
+      `Prelude.hashWithSalt` placeholder
+
+instance Prelude.NFData DataSetConfiguration where
+  rnf DataSetConfiguration' {..} =
+    Prelude.rnf columnGroupSchemaList
+      `Prelude.seq` Prelude.rnf dataSetSchema
+      `Prelude.seq` Prelude.rnf placeholder
+
+instance Data.ToJSON DataSetConfiguration where
+  toJSON DataSetConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnGroupSchemaList" Data..=)
+              Prelude.<$> columnGroupSchemaList,
+            ("DataSetSchema" Data..=) Prelude.<$> dataSetSchema,
+            ("Placeholder" Data..=) Prelude.<$> placeholder
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSetFilterAttribute.hs b/gen/Amazonka/QuickSight/Types/DataSetFilterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetFilterAttribute.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataSetFilterAttribute
+-- 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.QuickSight.Types.DataSetFilterAttribute
+  ( DataSetFilterAttribute
+      ( ..,
+        DataSetFilterAttribute_DATASET_NAME,
+        DataSetFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+        DataSetFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+        DataSetFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+        DataSetFilterAttribute_QUICKSIGHT_OWNER,
+        DataSetFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataSetFilterAttribute = DataSetFilterAttribute'
+  { fromDataSetFilterAttribute ::
+      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 DataSetFilterAttribute_DATASET_NAME :: DataSetFilterAttribute
+pattern DataSetFilterAttribute_DATASET_NAME = DataSetFilterAttribute' "DATASET_NAME"
+
+pattern DataSetFilterAttribute_DIRECT_QUICKSIGHT_OWNER :: DataSetFilterAttribute
+pattern DataSetFilterAttribute_DIRECT_QUICKSIGHT_OWNER = DataSetFilterAttribute' "DIRECT_QUICKSIGHT_OWNER"
+
+pattern DataSetFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER :: DataSetFilterAttribute
+pattern DataSetFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER = DataSetFilterAttribute' "DIRECT_QUICKSIGHT_SOLE_OWNER"
+
+pattern DataSetFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER :: DataSetFilterAttribute
+pattern DataSetFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER = DataSetFilterAttribute' "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"
+
+pattern DataSetFilterAttribute_QUICKSIGHT_OWNER :: DataSetFilterAttribute
+pattern DataSetFilterAttribute_QUICKSIGHT_OWNER = DataSetFilterAttribute' "QUICKSIGHT_OWNER"
+
+pattern DataSetFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER :: DataSetFilterAttribute
+pattern DataSetFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER = DataSetFilterAttribute' "QUICKSIGHT_VIEWER_OR_OWNER"
+
+{-# COMPLETE
+  DataSetFilterAttribute_DATASET_NAME,
+  DataSetFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+  DataSetFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+  DataSetFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+  DataSetFilterAttribute_QUICKSIGHT_OWNER,
+  DataSetFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER,
+  DataSetFilterAttribute'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataSetIdentifierDeclaration.hs b/gen/Amazonka/QuickSight/Types/DataSetIdentifierDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetIdentifierDeclaration.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
+-- 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.QuickSight.Types.DataSetIdentifierDeclaration 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 data set.
+--
+-- /See:/ 'newDataSetIdentifierDeclaration' smart constructor.
+data DataSetIdentifierDeclaration = DataSetIdentifierDeclaration'
+  { -- | The identifier of the data set, typically the data set\'s name.
+    identifier :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the data set.
+    dataSetArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetIdentifierDeclaration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identifier', 'dataSetIdentifierDeclaration_identifier' - The identifier of the data set, typically the data set\'s name.
+--
+-- 'dataSetArn', 'dataSetIdentifierDeclaration_dataSetArn' - The Amazon Resource Name (ARN) of the data set.
+newDataSetIdentifierDeclaration ::
+  -- | 'identifier'
+  Prelude.Text ->
+  -- | 'dataSetArn'
+  Prelude.Text ->
+  DataSetIdentifierDeclaration
+newDataSetIdentifierDeclaration
+  pIdentifier_
+  pDataSetArn_ =
+    DataSetIdentifierDeclaration'
+      { identifier =
+          pIdentifier_,
+        dataSetArn = pDataSetArn_
+      }
+
+-- | The identifier of the data set, typically the data set\'s name.
+dataSetIdentifierDeclaration_identifier :: Lens.Lens' DataSetIdentifierDeclaration Prelude.Text
+dataSetIdentifierDeclaration_identifier = Lens.lens (\DataSetIdentifierDeclaration' {identifier} -> identifier) (\s@DataSetIdentifierDeclaration' {} a -> s {identifier = a} :: DataSetIdentifierDeclaration)
+
+-- | The Amazon Resource Name (ARN) of the data set.
+dataSetIdentifierDeclaration_dataSetArn :: Lens.Lens' DataSetIdentifierDeclaration Prelude.Text
+dataSetIdentifierDeclaration_dataSetArn = Lens.lens (\DataSetIdentifierDeclaration' {dataSetArn} -> dataSetArn) (\s@DataSetIdentifierDeclaration' {} a -> s {dataSetArn = a} :: DataSetIdentifierDeclaration)
+
+instance Data.FromJSON DataSetIdentifierDeclaration where
+  parseJSON =
+    Data.withObject
+      "DataSetIdentifierDeclaration"
+      ( \x ->
+          DataSetIdentifierDeclaration'
+            Prelude.<$> (x Data..: "Identifier")
+            Prelude.<*> (x Data..: "DataSetArn")
+      )
+
+instance
+  Prelude.Hashable
+    DataSetIdentifierDeclaration
+  where
+  hashWithSalt _salt DataSetIdentifierDeclaration' {..} =
+    _salt
+      `Prelude.hashWithSalt` identifier
+      `Prelude.hashWithSalt` dataSetArn
+
+instance Prelude.NFData DataSetIdentifierDeclaration where
+  rnf DataSetIdentifierDeclaration' {..} =
+    Prelude.rnf identifier
+      `Prelude.seq` Prelude.rnf dataSetArn
+
+instance Data.ToJSON DataSetIdentifierDeclaration where
+  toJSON DataSetIdentifierDeclaration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Identifier" Data..= identifier),
+            Prelude.Just ("DataSetArn" Data..= dataSetArn)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSetImportMode.hs b/gen/Amazonka/QuickSight/Types/DataSetImportMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetImportMode.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.QuickSight.Types.DataSetImportMode
+-- 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.QuickSight.Types.DataSetImportMode
+  ( DataSetImportMode
+      ( ..,
+        DataSetImportMode_DIRECT_QUERY,
+        DataSetImportMode_SPICE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataSetImportMode = DataSetImportMode'
+  { fromDataSetImportMode ::
+      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 DataSetImportMode_DIRECT_QUERY :: DataSetImportMode
+pattern DataSetImportMode_DIRECT_QUERY = DataSetImportMode' "DIRECT_QUERY"
+
+pattern DataSetImportMode_SPICE :: DataSetImportMode
+pattern DataSetImportMode_SPICE = DataSetImportMode' "SPICE"
+
+{-# COMPLETE
+  DataSetImportMode_DIRECT_QUERY,
+  DataSetImportMode_SPICE,
+  DataSetImportMode'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataSetReference.hs b/gen/Amazonka/QuickSight/Types/DataSetReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetReference.hs
@@ -0,0 +1,89 @@
+{-# 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.QuickSight.Types.DataSetReference
+-- 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.QuickSight.Types.DataSetReference 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
+
+-- | Dataset reference.
+--
+-- /See:/ 'newDataSetReference' smart constructor.
+data DataSetReference = DataSetReference'
+  { -- | Dataset placeholder.
+    dataSetPlaceholder :: Prelude.Text,
+    -- | Dataset Amazon Resource Name (ARN).
+    dataSetArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetReference' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetPlaceholder', 'dataSetReference_dataSetPlaceholder' - Dataset placeholder.
+--
+-- 'dataSetArn', 'dataSetReference_dataSetArn' - Dataset Amazon Resource Name (ARN).
+newDataSetReference ::
+  -- | 'dataSetPlaceholder'
+  Prelude.Text ->
+  -- | 'dataSetArn'
+  Prelude.Text ->
+  DataSetReference
+newDataSetReference pDataSetPlaceholder_ pDataSetArn_ =
+  DataSetReference'
+    { dataSetPlaceholder =
+        pDataSetPlaceholder_,
+      dataSetArn = pDataSetArn_
+    }
+
+-- | Dataset placeholder.
+dataSetReference_dataSetPlaceholder :: Lens.Lens' DataSetReference Prelude.Text
+dataSetReference_dataSetPlaceholder = Lens.lens (\DataSetReference' {dataSetPlaceholder} -> dataSetPlaceholder) (\s@DataSetReference' {} a -> s {dataSetPlaceholder = a} :: DataSetReference)
+
+-- | Dataset Amazon Resource Name (ARN).
+dataSetReference_dataSetArn :: Lens.Lens' DataSetReference Prelude.Text
+dataSetReference_dataSetArn = Lens.lens (\DataSetReference' {dataSetArn} -> dataSetArn) (\s@DataSetReference' {} a -> s {dataSetArn = a} :: DataSetReference)
+
+instance Prelude.Hashable DataSetReference where
+  hashWithSalt _salt DataSetReference' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetPlaceholder
+      `Prelude.hashWithSalt` dataSetArn
+
+instance Prelude.NFData DataSetReference where
+  rnf DataSetReference' {..} =
+    Prelude.rnf dataSetPlaceholder
+      `Prelude.seq` Prelude.rnf dataSetArn
+
+instance Data.ToJSON DataSetReference where
+  toJSON DataSetReference' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataSetPlaceholder" Data..= dataSetPlaceholder),
+            Prelude.Just ("DataSetArn" Data..= dataSetArn)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSetSchema.hs b/gen/Amazonka/QuickSight/Types/DataSetSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetSchema.hs
@@ -0,0 +1,81 @@
+{-# 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.QuickSight.Types.DataSetSchema
+-- 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.QuickSight.Types.DataSetSchema 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.QuickSight.Types.ColumnSchema
+
+-- | Dataset schema.
+--
+-- /See:/ 'newDataSetSchema' smart constructor.
+data DataSetSchema = DataSetSchema'
+  { -- | A structure containing the list of column schemas.
+    columnSchemaList :: Prelude.Maybe [ColumnSchema]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnSchemaList', 'dataSetSchema_columnSchemaList' - A structure containing the list of column schemas.
+newDataSetSchema ::
+  DataSetSchema
+newDataSetSchema =
+  DataSetSchema' {columnSchemaList = Prelude.Nothing}
+
+-- | A structure containing the list of column schemas.
+dataSetSchema_columnSchemaList :: Lens.Lens' DataSetSchema (Prelude.Maybe [ColumnSchema])
+dataSetSchema_columnSchemaList = Lens.lens (\DataSetSchema' {columnSchemaList} -> columnSchemaList) (\s@DataSetSchema' {} a -> s {columnSchemaList = a} :: DataSetSchema) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DataSetSchema where
+  parseJSON =
+    Data.withObject
+      "DataSetSchema"
+      ( \x ->
+          DataSetSchema'
+            Prelude.<$> ( x
+                            Data..:? "ColumnSchemaList"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DataSetSchema where
+  hashWithSalt _salt DataSetSchema' {..} =
+    _salt `Prelude.hashWithSalt` columnSchemaList
+
+instance Prelude.NFData DataSetSchema where
+  rnf DataSetSchema' {..} = Prelude.rnf columnSchemaList
+
+instance Data.ToJSON DataSetSchema where
+  toJSON DataSetSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnSchemaList" Data..=)
+              Prelude.<$> columnSchemaList
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSetSearchFilter.hs b/gen/Amazonka/QuickSight/Types/DataSetSearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetSearchFilter.hs
@@ -0,0 +1,244 @@
+{-# 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.QuickSight.Types.DataSetSearchFilter
+-- 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.QuickSight.Types.DataSetSearchFilter 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.QuickSight.Types.DataSetFilterAttribute
+import Amazonka.QuickSight.Types.FilterOperator
+
+-- | A filter that you apply when searching for datasets.
+--
+-- /See:/ 'newDataSetSearchFilter' smart constructor.
+data DataSetSearchFilter = DataSetSearchFilter'
+  { -- | The comparison operator that you want to use as a filter, for example
+    -- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+    -- and @\"StringLike\"@.
+    --
+    -- If you set the operator value to @\"StringEquals\"@, you need to provide
+    -- an ownership related filter in the @\"NAME\"@ field and the arn of the
+    -- user or group whose datasets you want to search in the @\"Value\"@
+    -- field. For example,
+    -- @\"Name\":\"QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east- 1:1:user\/default\/UserName1\"@.
+    --
+    -- If you set the value to @\"StringLike\"@, you need to provide the name
+    -- of the datasets you are searching for. For example,
+    -- @\"Name\":\"DATASET_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+    -- The @\"StringLike\"@ operator only supports the @NAME@ value
+    -- @DATASET_NAME@.
+    operator :: FilterOperator,
+    -- | The name of the value that you want to use as a filter, for example,
+    -- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+    --     any datasets with that ARN listed as one of the dataset owners or
+    --     viewers are returned. Implicit permissions from folders or groups
+    --     are considered.
+    --
+    -- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+    --     datasets with that ARN listed as one of the owners of the dataset
+    --     are returned. Implicit permissions from folders or groups are
+    --     considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+    --     and any datasets with that ARN listed as the only owner of the
+    --     dataset are returned. Implicit permissions from folders or groups
+    --     are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+    --     any datasets with that ARN listed as one of the owners if the
+    --     dataset are returned. Implicit permissions from folders or groups
+    --     are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+    --     group, and any datasets with that ARN listed as one of the owners or
+    --     viewers of the dataset are returned. Implicit permissions from
+    --     folders or groups are not considered.
+    --
+    -- -   @DATASET_NAME@: Any datasets whose names have a substring match to
+    --     this value will be returned.
+    name :: DataSetFilterAttribute,
+    -- | The value of the named item, in this case @QUICKSIGHT_OWNER@, that you
+    -- want to use as a filter, for example,
+    -- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetSearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'operator', 'dataSetSearchFilter_operator' - The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose datasets you want to search in the @\"Value\"@
+-- field. For example,
+-- @\"Name\":\"QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east- 1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the datasets you are searching for. For example,
+-- @\"Name\":\"DATASET_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @DATASET_NAME@.
+--
+-- 'name', 'dataSetSearchFilter_name' - The name of the value that you want to use as a filter, for example,
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any datasets with that ARN listed as one of the dataset owners or
+--     viewers are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     datasets with that ARN listed as one of the owners of the dataset
+--     are returned. Implicit permissions from folders or groups are
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any datasets with that ARN listed as the only owner of the
+--     dataset are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any datasets with that ARN listed as one of the owners if the
+--     dataset are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any datasets with that ARN listed as one of the owners or
+--     viewers of the dataset are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @DATASET_NAME@: Any datasets whose names have a substring match to
+--     this value will be returned.
+--
+-- 'value', 'dataSetSearchFilter_value' - The value of the named item, in this case @QUICKSIGHT_OWNER@, that you
+-- want to use as a filter, for example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+newDataSetSearchFilter ::
+  -- | 'operator'
+  FilterOperator ->
+  -- | 'name'
+  DataSetFilterAttribute ->
+  -- | 'value'
+  Prelude.Text ->
+  DataSetSearchFilter
+newDataSetSearchFilter pOperator_ pName_ pValue_ =
+  DataSetSearchFilter'
+    { operator = pOperator_,
+      name = pName_,
+      value = pValue_
+    }
+
+-- | The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose datasets you want to search in the @\"Value\"@
+-- field. For example,
+-- @\"Name\":\"QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east- 1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the datasets you are searching for. For example,
+-- @\"Name\":\"DATASET_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @DATASET_NAME@.
+dataSetSearchFilter_operator :: Lens.Lens' DataSetSearchFilter FilterOperator
+dataSetSearchFilter_operator = Lens.lens (\DataSetSearchFilter' {operator} -> operator) (\s@DataSetSearchFilter' {} a -> s {operator = a} :: DataSetSearchFilter)
+
+-- | The name of the value that you want to use as a filter, for example,
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any datasets with that ARN listed as one of the dataset owners or
+--     viewers are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     datasets with that ARN listed as one of the owners of the dataset
+--     are returned. Implicit permissions from folders or groups are
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any datasets with that ARN listed as the only owner of the
+--     dataset are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any datasets with that ARN listed as one of the owners if the
+--     dataset are returned. Implicit permissions from folders or groups
+--     are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any datasets with that ARN listed as one of the owners or
+--     viewers of the dataset are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @DATASET_NAME@: Any datasets whose names have a substring match to
+--     this value will be returned.
+dataSetSearchFilter_name :: Lens.Lens' DataSetSearchFilter DataSetFilterAttribute
+dataSetSearchFilter_name = Lens.lens (\DataSetSearchFilter' {name} -> name) (\s@DataSetSearchFilter' {} a -> s {name = a} :: DataSetSearchFilter)
+
+-- | The value of the named item, in this case @QUICKSIGHT_OWNER@, that you
+-- want to use as a filter, for example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+dataSetSearchFilter_value :: Lens.Lens' DataSetSearchFilter Prelude.Text
+dataSetSearchFilter_value = Lens.lens (\DataSetSearchFilter' {value} -> value) (\s@DataSetSearchFilter' {} a -> s {value = a} :: DataSetSearchFilter)
+
+instance Prelude.Hashable DataSetSearchFilter where
+  hashWithSalt _salt DataSetSearchFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData DataSetSearchFilter where
+  rnf DataSetSearchFilter' {..} =
+    Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON DataSetSearchFilter where
+  toJSON DataSetSearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Operator" Data..= operator),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSetSummary.hs b/gen/Amazonka/QuickSight/Types/DataSetSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetSummary.hs
@@ -0,0 +1,177 @@
+{-# 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.QuickSight.Types.DataSetSummary
+-- 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.QuickSight.Types.DataSetSummary 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.QuickSight.Types.DataSetImportMode
+import Amazonka.QuickSight.Types.RowLevelPermissionDataSet
+
+-- | Dataset summary.
+--
+-- /See:/ 'newDataSetSummary' smart constructor.
+data DataSetSummary = DataSetSummary'
+  { -- | The Amazon Resource Name (ARN) of the dataset.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates if the dataset has column level permission
+    -- configured.
+    columnLevelPermissionRulesApplied :: Prelude.Maybe Prelude.Bool,
+    -- | The time that this dataset was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the dataset.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether you want to import the data into SPICE.
+    importMode :: Prelude.Maybe DataSetImportMode,
+    -- | The last time that this dataset was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A display name for the dataset.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The row-level security configuration for the dataset.
+    rowLevelPermissionDataSet :: Prelude.Maybe RowLevelPermissionDataSet,
+    -- | Whether or not the row level permission tags are applied.
+    rowLevelPermissionTagConfigurationApplied :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dataSetSummary_arn' - The Amazon Resource Name (ARN) of the dataset.
+--
+-- 'columnLevelPermissionRulesApplied', 'dataSetSummary_columnLevelPermissionRulesApplied' - A value that indicates if the dataset has column level permission
+-- configured.
+--
+-- 'createdTime', 'dataSetSummary_createdTime' - The time that this dataset was created.
+--
+-- 'dataSetId', 'dataSetSummary_dataSetId' - The ID of the dataset.
+--
+-- 'importMode', 'dataSetSummary_importMode' - A value that indicates whether you want to import the data into SPICE.
+--
+-- 'lastUpdatedTime', 'dataSetSummary_lastUpdatedTime' - The last time that this dataset was updated.
+--
+-- 'name', 'dataSetSummary_name' - A display name for the dataset.
+--
+-- 'rowLevelPermissionDataSet', 'dataSetSummary_rowLevelPermissionDataSet' - The row-level security configuration for the dataset.
+--
+-- 'rowLevelPermissionTagConfigurationApplied', 'dataSetSummary_rowLevelPermissionTagConfigurationApplied' - Whether or not the row level permission tags are applied.
+newDataSetSummary ::
+  DataSetSummary
+newDataSetSummary =
+  DataSetSummary'
+    { arn = Prelude.Nothing,
+      columnLevelPermissionRulesApplied = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      importMode = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      rowLevelPermissionDataSet = Prelude.Nothing,
+      rowLevelPermissionTagConfigurationApplied =
+        Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset.
+dataSetSummary_arn :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.Text)
+dataSetSummary_arn = Lens.lens (\DataSetSummary' {arn} -> arn) (\s@DataSetSummary' {} a -> s {arn = a} :: DataSetSummary)
+
+-- | A value that indicates if the dataset has column level permission
+-- configured.
+dataSetSummary_columnLevelPermissionRulesApplied :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.Bool)
+dataSetSummary_columnLevelPermissionRulesApplied = Lens.lens (\DataSetSummary' {columnLevelPermissionRulesApplied} -> columnLevelPermissionRulesApplied) (\s@DataSetSummary' {} a -> s {columnLevelPermissionRulesApplied = a} :: DataSetSummary)
+
+-- | The time that this dataset was created.
+dataSetSummary_createdTime :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.UTCTime)
+dataSetSummary_createdTime = Lens.lens (\DataSetSummary' {createdTime} -> createdTime) (\s@DataSetSummary' {} a -> s {createdTime = a} :: DataSetSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the dataset.
+dataSetSummary_dataSetId :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.Text)
+dataSetSummary_dataSetId = Lens.lens (\DataSetSummary' {dataSetId} -> dataSetId) (\s@DataSetSummary' {} a -> s {dataSetId = a} :: DataSetSummary)
+
+-- | A value that indicates whether you want to import the data into SPICE.
+dataSetSummary_importMode :: Lens.Lens' DataSetSummary (Prelude.Maybe DataSetImportMode)
+dataSetSummary_importMode = Lens.lens (\DataSetSummary' {importMode} -> importMode) (\s@DataSetSummary' {} a -> s {importMode = a} :: DataSetSummary)
+
+-- | The last time that this dataset was updated.
+dataSetSummary_lastUpdatedTime :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.UTCTime)
+dataSetSummary_lastUpdatedTime = Lens.lens (\DataSetSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@DataSetSummary' {} a -> s {lastUpdatedTime = a} :: DataSetSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A display name for the dataset.
+dataSetSummary_name :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.Text)
+dataSetSummary_name = Lens.lens (\DataSetSummary' {name} -> name) (\s@DataSetSummary' {} a -> s {name = a} :: DataSetSummary)
+
+-- | The row-level security configuration for the dataset.
+dataSetSummary_rowLevelPermissionDataSet :: Lens.Lens' DataSetSummary (Prelude.Maybe RowLevelPermissionDataSet)
+dataSetSummary_rowLevelPermissionDataSet = Lens.lens (\DataSetSummary' {rowLevelPermissionDataSet} -> rowLevelPermissionDataSet) (\s@DataSetSummary' {} a -> s {rowLevelPermissionDataSet = a} :: DataSetSummary)
+
+-- | Whether or not the row level permission tags are applied.
+dataSetSummary_rowLevelPermissionTagConfigurationApplied :: Lens.Lens' DataSetSummary (Prelude.Maybe Prelude.Bool)
+dataSetSummary_rowLevelPermissionTagConfigurationApplied = Lens.lens (\DataSetSummary' {rowLevelPermissionTagConfigurationApplied} -> rowLevelPermissionTagConfigurationApplied) (\s@DataSetSummary' {} a -> s {rowLevelPermissionTagConfigurationApplied = a} :: DataSetSummary)
+
+instance Data.FromJSON DataSetSummary where
+  parseJSON =
+    Data.withObject
+      "DataSetSummary"
+      ( \x ->
+          DataSetSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "ColumnLevelPermissionRulesApplied")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DataSetId")
+            Prelude.<*> (x Data..:? "ImportMode")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "RowLevelPermissionDataSet")
+            Prelude.<*> ( x
+                            Data..:? "RowLevelPermissionTagConfigurationApplied"
+                        )
+      )
+
+instance Prelude.Hashable DataSetSummary where
+  hashWithSalt _salt DataSetSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` columnLevelPermissionRulesApplied
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` importMode
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` rowLevelPermissionDataSet
+      `Prelude.hashWithSalt` rowLevelPermissionTagConfigurationApplied
+
+instance Prelude.NFData DataSetSummary where
+  rnf DataSetSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf columnLevelPermissionRulesApplied
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf importMode
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf rowLevelPermissionDataSet
+      `Prelude.seq` Prelude.rnf
+        rowLevelPermissionTagConfigurationApplied
diff --git a/gen/Amazonka/QuickSight/Types/DataSetUsageConfiguration.hs b/gen/Amazonka/QuickSight/Types/DataSetUsageConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSetUsageConfiguration.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataSetUsageConfiguration
+-- 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.QuickSight.Types.DataSetUsageConfiguration 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 usage configuration to apply to child datasets that reference this
+-- dataset as a source.
+--
+-- /See:/ 'newDataSetUsageConfiguration' smart constructor.
+data DataSetUsageConfiguration = DataSetUsageConfiguration'
+  { -- | An option that controls whether a child dataset of a direct query can
+    -- use this dataset as a source.
+    disableUseAsDirectQuerySource :: Prelude.Maybe Prelude.Bool,
+    -- | An option that controls whether a child dataset that\'s stored in
+    -- QuickSight can use this dataset as a source.
+    disableUseAsImportedSource :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSetUsageConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disableUseAsDirectQuerySource', 'dataSetUsageConfiguration_disableUseAsDirectQuerySource' - An option that controls whether a child dataset of a direct query can
+-- use this dataset as a source.
+--
+-- 'disableUseAsImportedSource', 'dataSetUsageConfiguration_disableUseAsImportedSource' - An option that controls whether a child dataset that\'s stored in
+-- QuickSight can use this dataset as a source.
+newDataSetUsageConfiguration ::
+  DataSetUsageConfiguration
+newDataSetUsageConfiguration =
+  DataSetUsageConfiguration'
+    { disableUseAsDirectQuerySource =
+        Prelude.Nothing,
+      disableUseAsImportedSource = Prelude.Nothing
+    }
+
+-- | An option that controls whether a child dataset of a direct query can
+-- use this dataset as a source.
+dataSetUsageConfiguration_disableUseAsDirectQuerySource :: Lens.Lens' DataSetUsageConfiguration (Prelude.Maybe Prelude.Bool)
+dataSetUsageConfiguration_disableUseAsDirectQuerySource = Lens.lens (\DataSetUsageConfiguration' {disableUseAsDirectQuerySource} -> disableUseAsDirectQuerySource) (\s@DataSetUsageConfiguration' {} a -> s {disableUseAsDirectQuerySource = a} :: DataSetUsageConfiguration)
+
+-- | An option that controls whether a child dataset that\'s stored in
+-- QuickSight can use this dataset as a source.
+dataSetUsageConfiguration_disableUseAsImportedSource :: Lens.Lens' DataSetUsageConfiguration (Prelude.Maybe Prelude.Bool)
+dataSetUsageConfiguration_disableUseAsImportedSource = Lens.lens (\DataSetUsageConfiguration' {disableUseAsImportedSource} -> disableUseAsImportedSource) (\s@DataSetUsageConfiguration' {} a -> s {disableUseAsImportedSource = a} :: DataSetUsageConfiguration)
+
+instance Data.FromJSON DataSetUsageConfiguration where
+  parseJSON =
+    Data.withObject
+      "DataSetUsageConfiguration"
+      ( \x ->
+          DataSetUsageConfiguration'
+            Prelude.<$> (x Data..:? "DisableUseAsDirectQuerySource")
+            Prelude.<*> (x Data..:? "DisableUseAsImportedSource")
+      )
+
+instance Prelude.Hashable DataSetUsageConfiguration where
+  hashWithSalt _salt DataSetUsageConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` disableUseAsDirectQuerySource
+      `Prelude.hashWithSalt` disableUseAsImportedSource
+
+instance Prelude.NFData DataSetUsageConfiguration where
+  rnf DataSetUsageConfiguration' {..} =
+    Prelude.rnf disableUseAsDirectQuerySource
+      `Prelude.seq` Prelude.rnf disableUseAsImportedSource
+
+instance Data.ToJSON DataSetUsageConfiguration where
+  toJSON DataSetUsageConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisableUseAsDirectQuerySource" Data..=)
+              Prelude.<$> disableUseAsDirectQuerySource,
+            ("DisableUseAsImportedSource" Data..=)
+              Prelude.<$> disableUseAsImportedSource
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSource.hs b/gen/Amazonka/QuickSight/Types/DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSource.hs
@@ -0,0 +1,280 @@
+{-# 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.QuickSight.Types.DataSource
+-- 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.QuickSight.Types.DataSource 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.QuickSight.Types.DataSourceErrorInfo
+import Amazonka.QuickSight.Types.DataSourceParameters
+import Amazonka.QuickSight.Types.DataSourceType
+import Amazonka.QuickSight.Types.ResourceStatus
+import Amazonka.QuickSight.Types.SslProperties
+import Amazonka.QuickSight.Types.VpcConnectionProperties
+
+-- | The structure of a data source.
+--
+-- /See:/ 'newDataSource' smart constructor.
+data DataSource = DataSource'
+  { -- | A set of alternate data source parameters that you want to share for the
+    -- credentials stored with this data source. The credentials are applied in
+    -- tandem with the data source parameters when you copy a data source by
+    -- using a create or update request. The API operation compares the
+    -- @DataSourceParameters@ structure that\'s in the request with the
+    -- structures in the @AlternateDataSourceParameters@ allow list. If the
+    -- structures are an exact match, the request is allowed to use the
+    -- credentials from this existing data source. If the
+    -- @AlternateDataSourceParameters@ list is null, the @Credentials@
+    -- originally used with this @DataSourceParameters@ are automatically
+    -- allowed.
+    alternateDataSourceParameters :: Prelude.Maybe (Prelude.NonEmpty DataSourceParameters),
+    -- | The Amazon Resource Name (ARN) of the data source.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that this data source was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | The parameters that Amazon QuickSight uses to connect to your underlying
+    -- source. This is a variant type structure. For this structure to be
+    -- valid, only one of the attributes can be non-null.
+    dataSourceParameters :: Prelude.Maybe DataSourceParameters,
+    -- | Error information from the last update or the creation of the data
+    -- source.
+    errorInfo :: Prelude.Maybe DataSourceErrorInfo,
+    -- | The last time that this data source was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A display name for the data source.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the secret associated with the data
+    -- source in Amazon Secrets Manager.
+    secretArn :: Prelude.Maybe Prelude.Text,
+    -- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+    -- connects to your underlying source.
+    sslProperties :: Prelude.Maybe SslProperties,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The type of the data source. This type indicates which database engine
+    -- the data source connects to.
+    type' :: Prelude.Maybe DataSourceType,
+    -- | The VPC connection information. You need to use this parameter only when
+    -- you want Amazon QuickSight to use a VPC connection when connecting to
+    -- your underlying source.
+    vpcConnectionProperties :: Prelude.Maybe VpcConnectionProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alternateDataSourceParameters', 'dataSource_alternateDataSourceParameters' - A set of alternate data source parameters that you want to share for the
+-- credentials stored with this data source. The credentials are applied in
+-- tandem with the data source parameters when you copy a data source by
+-- using a create or update request. The API operation compares the
+-- @DataSourceParameters@ structure that\'s in the request with the
+-- structures in the @AlternateDataSourceParameters@ allow list. If the
+-- structures are an exact match, the request is allowed to use the
+-- credentials from this existing data source. If the
+-- @AlternateDataSourceParameters@ list is null, the @Credentials@
+-- originally used with this @DataSourceParameters@ are automatically
+-- allowed.
+--
+-- 'arn', 'dataSource_arn' - The Amazon Resource Name (ARN) of the data source.
+--
+-- 'createdTime', 'dataSource_createdTime' - The time that this data source was created.
+--
+-- 'dataSourceId', 'dataSource_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'dataSourceParameters', 'dataSource_dataSourceParameters' - The parameters that Amazon QuickSight uses to connect to your underlying
+-- source. This is a variant type structure. For this structure to be
+-- valid, only one of the attributes can be non-null.
+--
+-- 'errorInfo', 'dataSource_errorInfo' - Error information from the last update or the creation of the data
+-- source.
+--
+-- 'lastUpdatedTime', 'dataSource_lastUpdatedTime' - The last time that this data source was updated.
+--
+-- 'name', 'dataSource_name' - A display name for the data source.
+--
+-- 'secretArn', 'dataSource_secretArn' - The Amazon Resource Name (ARN) of the secret associated with the data
+-- source in Amazon Secrets Manager.
+--
+-- 'sslProperties', 'dataSource_sslProperties' - Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying source.
+--
+-- 'status', 'dataSource_status' - The HTTP status of the request.
+--
+-- 'type'', 'dataSource_type' - The type of the data source. This type indicates which database engine
+-- the data source connects to.
+--
+-- 'vpcConnectionProperties', 'dataSource_vpcConnectionProperties' - The VPC connection information. You need to use this parameter only when
+-- you want Amazon QuickSight to use a VPC connection when connecting to
+-- your underlying source.
+newDataSource ::
+  DataSource
+newDataSource =
+  DataSource'
+    { alternateDataSourceParameters =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      dataSourceParameters = Prelude.Nothing,
+      errorInfo = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      secretArn = Prelude.Nothing,
+      sslProperties = Prelude.Nothing,
+      status = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      vpcConnectionProperties = Prelude.Nothing
+    }
+
+-- | A set of alternate data source parameters that you want to share for the
+-- credentials stored with this data source. The credentials are applied in
+-- tandem with the data source parameters when you copy a data source by
+-- using a create or update request. The API operation compares the
+-- @DataSourceParameters@ structure that\'s in the request with the
+-- structures in the @AlternateDataSourceParameters@ allow list. If the
+-- structures are an exact match, the request is allowed to use the
+-- credentials from this existing data source. If the
+-- @AlternateDataSourceParameters@ list is null, the @Credentials@
+-- originally used with this @DataSourceParameters@ are automatically
+-- allowed.
+dataSource_alternateDataSourceParameters :: Lens.Lens' DataSource (Prelude.Maybe (Prelude.NonEmpty DataSourceParameters))
+dataSource_alternateDataSourceParameters = Lens.lens (\DataSource' {alternateDataSourceParameters} -> alternateDataSourceParameters) (\s@DataSource' {} a -> s {alternateDataSourceParameters = a} :: DataSource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the data source.
+dataSource_arn :: Lens.Lens' DataSource (Prelude.Maybe Prelude.Text)
+dataSource_arn = Lens.lens (\DataSource' {arn} -> arn) (\s@DataSource' {} a -> s {arn = a} :: DataSource)
+
+-- | The time that this data source was created.
+dataSource_createdTime :: Lens.Lens' DataSource (Prelude.Maybe Prelude.UTCTime)
+dataSource_createdTime = Lens.lens (\DataSource' {createdTime} -> createdTime) (\s@DataSource' {} a -> s {createdTime = a} :: DataSource) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+dataSource_dataSourceId :: Lens.Lens' DataSource (Prelude.Maybe Prelude.Text)
+dataSource_dataSourceId = Lens.lens (\DataSource' {dataSourceId} -> dataSourceId) (\s@DataSource' {} a -> s {dataSourceId = a} :: DataSource)
+
+-- | The parameters that Amazon QuickSight uses to connect to your underlying
+-- source. This is a variant type structure. For this structure to be
+-- valid, only one of the attributes can be non-null.
+dataSource_dataSourceParameters :: Lens.Lens' DataSource (Prelude.Maybe DataSourceParameters)
+dataSource_dataSourceParameters = Lens.lens (\DataSource' {dataSourceParameters} -> dataSourceParameters) (\s@DataSource' {} a -> s {dataSourceParameters = a} :: DataSource)
+
+-- | Error information from the last update or the creation of the data
+-- source.
+dataSource_errorInfo :: Lens.Lens' DataSource (Prelude.Maybe DataSourceErrorInfo)
+dataSource_errorInfo = Lens.lens (\DataSource' {errorInfo} -> errorInfo) (\s@DataSource' {} a -> s {errorInfo = a} :: DataSource)
+
+-- | The last time that this data source was updated.
+dataSource_lastUpdatedTime :: Lens.Lens' DataSource (Prelude.Maybe Prelude.UTCTime)
+dataSource_lastUpdatedTime = Lens.lens (\DataSource' {lastUpdatedTime} -> lastUpdatedTime) (\s@DataSource' {} a -> s {lastUpdatedTime = a} :: DataSource) Prelude.. Lens.mapping Data._Time
+
+-- | A display name for the data source.
+dataSource_name :: Lens.Lens' DataSource (Prelude.Maybe Prelude.Text)
+dataSource_name = Lens.lens (\DataSource' {name} -> name) (\s@DataSource' {} a -> s {name = a} :: DataSource)
+
+-- | The Amazon Resource Name (ARN) of the secret associated with the data
+-- source in Amazon Secrets Manager.
+dataSource_secretArn :: Lens.Lens' DataSource (Prelude.Maybe Prelude.Text)
+dataSource_secretArn = Lens.lens (\DataSource' {secretArn} -> secretArn) (\s@DataSource' {} a -> s {secretArn = a} :: DataSource)
+
+-- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying source.
+dataSource_sslProperties :: Lens.Lens' DataSource (Prelude.Maybe SslProperties)
+dataSource_sslProperties = Lens.lens (\DataSource' {sslProperties} -> sslProperties) (\s@DataSource' {} a -> s {sslProperties = a} :: DataSource)
+
+-- | The HTTP status of the request.
+dataSource_status :: Lens.Lens' DataSource (Prelude.Maybe ResourceStatus)
+dataSource_status = Lens.lens (\DataSource' {status} -> status) (\s@DataSource' {} a -> s {status = a} :: DataSource)
+
+-- | The type of the data source. This type indicates which database engine
+-- the data source connects to.
+dataSource_type :: Lens.Lens' DataSource (Prelude.Maybe DataSourceType)
+dataSource_type = Lens.lens (\DataSource' {type'} -> type') (\s@DataSource' {} a -> s {type' = a} :: DataSource)
+
+-- | The VPC connection information. You need to use this parameter only when
+-- you want Amazon QuickSight to use a VPC connection when connecting to
+-- your underlying source.
+dataSource_vpcConnectionProperties :: Lens.Lens' DataSource (Prelude.Maybe VpcConnectionProperties)
+dataSource_vpcConnectionProperties = Lens.lens (\DataSource' {vpcConnectionProperties} -> vpcConnectionProperties) (\s@DataSource' {} a -> s {vpcConnectionProperties = a} :: DataSource)
+
+instance Data.FromJSON DataSource where
+  parseJSON =
+    Data.withObject
+      "DataSource"
+      ( \x ->
+          DataSource'
+            Prelude.<$> (x Data..:? "AlternateDataSourceParameters")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DataSourceId")
+            Prelude.<*> (x Data..:? "DataSourceParameters")
+            Prelude.<*> (x Data..:? "ErrorInfo")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "SecretArn")
+            Prelude.<*> (x Data..:? "SslProperties")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "VpcConnectionProperties")
+      )
+
+instance Prelude.Hashable DataSource where
+  hashWithSalt _salt DataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` alternateDataSourceParameters
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSourceId
+      `Prelude.hashWithSalt` dataSourceParameters
+      `Prelude.hashWithSalt` errorInfo
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` secretArn
+      `Prelude.hashWithSalt` sslProperties
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` vpcConnectionProperties
+
+instance Prelude.NFData DataSource where
+  rnf DataSource' {..} =
+    Prelude.rnf alternateDataSourceParameters
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf dataSourceParameters
+      `Prelude.seq` Prelude.rnf errorInfo
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf secretArn
+      `Prelude.seq` Prelude.rnf sslProperties
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf vpcConnectionProperties
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceCredentials.hs b/gen/Amazonka/QuickSight/Types/DataSourceCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceCredentials.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.DataSourceCredentials
+-- 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.QuickSight.Types.DataSourceCredentials 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.QuickSight.Types.CredentialPair
+
+-- | Data source credentials. This is a variant type structure. For this
+-- structure to be valid, only one of the attributes can be non-null.
+--
+-- /See:/ 'newDataSourceCredentials' smart constructor.
+data DataSourceCredentials = DataSourceCredentials'
+  { -- | The Amazon Resource Name (ARN) of a data source that has the credential
+    -- pair that you want to use. When @CopySourceArn@ is not null, the
+    -- credential pair from the data source in the ARN is used as the
+    -- credentials for the @DataSourceCredentials@ structure.
+    copySourceArn :: Prelude.Maybe Prelude.Text,
+    -- | Credential pair. For more information, see
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CredentialPair.html CredentialPair>@ @.
+    credentialPair :: Prelude.Maybe CredentialPair,
+    -- | The Amazon Resource Name (ARN) of the secret associated with the data
+    -- source in Amazon Secrets Manager.
+    secretArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSourceCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copySourceArn', 'dataSourceCredentials_copySourceArn' - The Amazon Resource Name (ARN) of a data source that has the credential
+-- pair that you want to use. When @CopySourceArn@ is not null, the
+-- credential pair from the data source in the ARN is used as the
+-- credentials for the @DataSourceCredentials@ structure.
+--
+-- 'credentialPair', 'dataSourceCredentials_credentialPair' - Credential pair. For more information, see
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CredentialPair.html CredentialPair>@ @.
+--
+-- 'secretArn', 'dataSourceCredentials_secretArn' - The Amazon Resource Name (ARN) of the secret associated with the data
+-- source in Amazon Secrets Manager.
+newDataSourceCredentials ::
+  DataSourceCredentials
+newDataSourceCredentials =
+  DataSourceCredentials'
+    { copySourceArn =
+        Prelude.Nothing,
+      credentialPair = Prelude.Nothing,
+      secretArn = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of a data source that has the credential
+-- pair that you want to use. When @CopySourceArn@ is not null, the
+-- credential pair from the data source in the ARN is used as the
+-- credentials for the @DataSourceCredentials@ structure.
+dataSourceCredentials_copySourceArn :: Lens.Lens' DataSourceCredentials (Prelude.Maybe Prelude.Text)
+dataSourceCredentials_copySourceArn = Lens.lens (\DataSourceCredentials' {copySourceArn} -> copySourceArn) (\s@DataSourceCredentials' {} a -> s {copySourceArn = a} :: DataSourceCredentials)
+
+-- | Credential pair. For more information, see
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CredentialPair.html CredentialPair>@ @.
+dataSourceCredentials_credentialPair :: Lens.Lens' DataSourceCredentials (Prelude.Maybe CredentialPair)
+dataSourceCredentials_credentialPair = Lens.lens (\DataSourceCredentials' {credentialPair} -> credentialPair) (\s@DataSourceCredentials' {} a -> s {credentialPair = a} :: DataSourceCredentials)
+
+-- | The Amazon Resource Name (ARN) of the secret associated with the data
+-- source in Amazon Secrets Manager.
+dataSourceCredentials_secretArn :: Lens.Lens' DataSourceCredentials (Prelude.Maybe Prelude.Text)
+dataSourceCredentials_secretArn = Lens.lens (\DataSourceCredentials' {secretArn} -> secretArn) (\s@DataSourceCredentials' {} a -> s {secretArn = a} :: DataSourceCredentials)
+
+instance Prelude.Hashable DataSourceCredentials where
+  hashWithSalt _salt DataSourceCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` copySourceArn
+      `Prelude.hashWithSalt` credentialPair
+      `Prelude.hashWithSalt` secretArn
+
+instance Prelude.NFData DataSourceCredentials where
+  rnf DataSourceCredentials' {..} =
+    Prelude.rnf copySourceArn
+      `Prelude.seq` Prelude.rnf credentialPair
+      `Prelude.seq` Prelude.rnf secretArn
+
+instance Data.ToJSON DataSourceCredentials where
+  toJSON DataSourceCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CopySourceArn" Data..=) Prelude.<$> copySourceArn,
+            ("CredentialPair" Data..=)
+              Prelude.<$> credentialPair,
+            ("SecretArn" Data..=) Prelude.<$> secretArn
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceErrorInfo.hs b/gen/Amazonka/QuickSight/Types/DataSourceErrorInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceErrorInfo.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.QuickSight.Types.DataSourceErrorInfo
+-- 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.QuickSight.Types.DataSourceErrorInfo 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.QuickSight.Types.DataSourceErrorInfoType
+
+-- | Error information for the data source creation or update.
+--
+-- /See:/ 'newDataSourceErrorInfo' smart constructor.
+data DataSourceErrorInfo = DataSourceErrorInfo'
+  { -- | Error message.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | Error type.
+    type' :: Prelude.Maybe DataSourceErrorInfoType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSourceErrorInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'dataSourceErrorInfo_message' - Error message.
+--
+-- 'type'', 'dataSourceErrorInfo_type' - Error type.
+newDataSourceErrorInfo ::
+  DataSourceErrorInfo
+newDataSourceErrorInfo =
+  DataSourceErrorInfo'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Error message.
+dataSourceErrorInfo_message :: Lens.Lens' DataSourceErrorInfo (Prelude.Maybe Prelude.Text)
+dataSourceErrorInfo_message = Lens.lens (\DataSourceErrorInfo' {message} -> message) (\s@DataSourceErrorInfo' {} a -> s {message = a} :: DataSourceErrorInfo)
+
+-- | Error type.
+dataSourceErrorInfo_type :: Lens.Lens' DataSourceErrorInfo (Prelude.Maybe DataSourceErrorInfoType)
+dataSourceErrorInfo_type = Lens.lens (\DataSourceErrorInfo' {type'} -> type') (\s@DataSourceErrorInfo' {} a -> s {type' = a} :: DataSourceErrorInfo)
+
+instance Data.FromJSON DataSourceErrorInfo where
+  parseJSON =
+    Data.withObject
+      "DataSourceErrorInfo"
+      ( \x ->
+          DataSourceErrorInfo'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable DataSourceErrorInfo where
+  hashWithSalt _salt DataSourceErrorInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData DataSourceErrorInfo where
+  rnf DataSourceErrorInfo' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceErrorInfoType.hs b/gen/Amazonka/QuickSight/Types/DataSourceErrorInfoType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceErrorInfoType.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DataSourceErrorInfoType
+-- 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.QuickSight.Types.DataSourceErrorInfoType
+  ( DataSourceErrorInfoType
+      ( ..,
+        DataSourceErrorInfoType_ACCESS_DENIED,
+        DataSourceErrorInfoType_CONFLICT,
+        DataSourceErrorInfoType_COPY_SOURCE_NOT_FOUND,
+        DataSourceErrorInfoType_ENGINE_VERSION_NOT_SUPPORTED,
+        DataSourceErrorInfoType_GENERIC_SQL_FAILURE,
+        DataSourceErrorInfoType_TIMEOUT,
+        DataSourceErrorInfoType_UNKNOWN,
+        DataSourceErrorInfoType_UNKNOWN_HOST
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataSourceErrorInfoType = DataSourceErrorInfoType'
+  { fromDataSourceErrorInfoType ::
+      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 DataSourceErrorInfoType_ACCESS_DENIED :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_ACCESS_DENIED = DataSourceErrorInfoType' "ACCESS_DENIED"
+
+pattern DataSourceErrorInfoType_CONFLICT :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_CONFLICT = DataSourceErrorInfoType' "CONFLICT"
+
+pattern DataSourceErrorInfoType_COPY_SOURCE_NOT_FOUND :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_COPY_SOURCE_NOT_FOUND = DataSourceErrorInfoType' "COPY_SOURCE_NOT_FOUND"
+
+pattern DataSourceErrorInfoType_ENGINE_VERSION_NOT_SUPPORTED :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_ENGINE_VERSION_NOT_SUPPORTED = DataSourceErrorInfoType' "ENGINE_VERSION_NOT_SUPPORTED"
+
+pattern DataSourceErrorInfoType_GENERIC_SQL_FAILURE :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_GENERIC_SQL_FAILURE = DataSourceErrorInfoType' "GENERIC_SQL_FAILURE"
+
+pattern DataSourceErrorInfoType_TIMEOUT :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_TIMEOUT = DataSourceErrorInfoType' "TIMEOUT"
+
+pattern DataSourceErrorInfoType_UNKNOWN :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_UNKNOWN = DataSourceErrorInfoType' "UNKNOWN"
+
+pattern DataSourceErrorInfoType_UNKNOWN_HOST :: DataSourceErrorInfoType
+pattern DataSourceErrorInfoType_UNKNOWN_HOST = DataSourceErrorInfoType' "UNKNOWN_HOST"
+
+{-# COMPLETE
+  DataSourceErrorInfoType_ACCESS_DENIED,
+  DataSourceErrorInfoType_CONFLICT,
+  DataSourceErrorInfoType_COPY_SOURCE_NOT_FOUND,
+  DataSourceErrorInfoType_ENGINE_VERSION_NOT_SUPPORTED,
+  DataSourceErrorInfoType_GENERIC_SQL_FAILURE,
+  DataSourceErrorInfoType_TIMEOUT,
+  DataSourceErrorInfoType_UNKNOWN,
+  DataSourceErrorInfoType_UNKNOWN_HOST,
+  DataSourceErrorInfoType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceFilterAttribute.hs b/gen/Amazonka/QuickSight/Types/DataSourceFilterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceFilterAttribute.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.QuickSight.Types.DataSourceFilterAttribute
+-- 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.QuickSight.Types.DataSourceFilterAttribute
+  ( DataSourceFilterAttribute
+      ( ..,
+        DataSourceFilterAttribute_DATASOURCE_NAME,
+        DataSourceFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+        DataSourceFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+        DataSourceFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataSourceFilterAttribute = DataSourceFilterAttribute'
+  { fromDataSourceFilterAttribute ::
+      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 DataSourceFilterAttribute_DATASOURCE_NAME :: DataSourceFilterAttribute
+pattern DataSourceFilterAttribute_DATASOURCE_NAME = DataSourceFilterAttribute' "DATASOURCE_NAME"
+
+pattern DataSourceFilterAttribute_DIRECT_QUICKSIGHT_OWNER :: DataSourceFilterAttribute
+pattern DataSourceFilterAttribute_DIRECT_QUICKSIGHT_OWNER = DataSourceFilterAttribute' "DIRECT_QUICKSIGHT_OWNER"
+
+pattern DataSourceFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER :: DataSourceFilterAttribute
+pattern DataSourceFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER = DataSourceFilterAttribute' "DIRECT_QUICKSIGHT_SOLE_OWNER"
+
+pattern DataSourceFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER :: DataSourceFilterAttribute
+pattern DataSourceFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER = DataSourceFilterAttribute' "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"
+
+{-# COMPLETE
+  DataSourceFilterAttribute_DATASOURCE_NAME,
+  DataSourceFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+  DataSourceFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+  DataSourceFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+  DataSourceFilterAttribute'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceParameters.hs b/gen/Amazonka/QuickSight/Types/DataSourceParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceParameters.hs
@@ -0,0 +1,419 @@
+{-# 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.QuickSight.Types.DataSourceParameters
+-- 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.QuickSight.Types.DataSourceParameters 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.QuickSight.Types.AmazonElasticsearchParameters
+import Amazonka.QuickSight.Types.AmazonOpenSearchParameters
+import Amazonka.QuickSight.Types.AthenaParameters
+import Amazonka.QuickSight.Types.AuroraParameters
+import Amazonka.QuickSight.Types.AuroraPostgreSqlParameters
+import Amazonka.QuickSight.Types.AwsIotAnalyticsParameters
+import Amazonka.QuickSight.Types.DatabricksParameters
+import Amazonka.QuickSight.Types.ExasolParameters
+import Amazonka.QuickSight.Types.JiraParameters
+import Amazonka.QuickSight.Types.MariaDbParameters
+import Amazonka.QuickSight.Types.MySqlParameters
+import Amazonka.QuickSight.Types.OracleParameters
+import Amazonka.QuickSight.Types.PostgreSqlParameters
+import Amazonka.QuickSight.Types.PrestoParameters
+import Amazonka.QuickSight.Types.RdsParameters
+import Amazonka.QuickSight.Types.RedshiftParameters
+import Amazonka.QuickSight.Types.S3Parameters
+import Amazonka.QuickSight.Types.ServiceNowParameters
+import Amazonka.QuickSight.Types.SnowflakeParameters
+import Amazonka.QuickSight.Types.SparkParameters
+import Amazonka.QuickSight.Types.SqlServerParameters
+import Amazonka.QuickSight.Types.TeradataParameters
+import Amazonka.QuickSight.Types.TwitterParameters
+
+-- | The parameters that Amazon QuickSight uses to connect to your underlying
+-- data source. This is a variant type structure. For this structure to be
+-- valid, only one of the attributes can be non-null.
+--
+-- /See:/ 'newDataSourceParameters' smart constructor.
+data DataSourceParameters = DataSourceParameters'
+  { -- | The parameters for OpenSearch.
+    amazonElasticsearchParameters :: Prelude.Maybe AmazonElasticsearchParameters,
+    -- | The parameters for OpenSearch.
+    amazonOpenSearchParameters :: Prelude.Maybe AmazonOpenSearchParameters,
+    -- | The parameters for Amazon Athena.
+    athenaParameters :: Prelude.Maybe AthenaParameters,
+    -- | The parameters for Amazon Aurora MySQL.
+    auroraParameters :: Prelude.Maybe AuroraParameters,
+    -- | The parameters for Amazon Aurora.
+    auroraPostgreSqlParameters :: Prelude.Maybe AuroraPostgreSqlParameters,
+    -- | The parameters for IoT Analytics.
+    awsIotAnalyticsParameters :: Prelude.Maybe AwsIotAnalyticsParameters,
+    -- | The required parameters that are needed to connect to a Databricks data
+    -- source.
+    databricksParameters :: Prelude.Maybe DatabricksParameters,
+    -- | The parameters for Exasol.
+    exasolParameters :: Prelude.Maybe ExasolParameters,
+    -- | The parameters for Jira.
+    jiraParameters :: Prelude.Maybe JiraParameters,
+    -- | The parameters for MariaDB.
+    mariaDbParameters :: Prelude.Maybe MariaDbParameters,
+    -- | The parameters for MySQL.
+    mySqlParameters :: Prelude.Maybe MySqlParameters,
+    -- | The parameters for Oracle.
+    oracleParameters :: Prelude.Maybe OracleParameters,
+    -- | The parameters for PostgreSQL.
+    postgreSqlParameters :: Prelude.Maybe PostgreSqlParameters,
+    -- | The parameters for Presto.
+    prestoParameters :: Prelude.Maybe PrestoParameters,
+    -- | The parameters for Amazon RDS.
+    rdsParameters :: Prelude.Maybe RdsParameters,
+    -- | The parameters for Amazon Redshift.
+    redshiftParameters :: Prelude.Maybe RedshiftParameters,
+    -- | The parameters for S3.
+    s3Parameters :: Prelude.Maybe S3Parameters,
+    -- | The parameters for ServiceNow.
+    serviceNowParameters :: Prelude.Maybe ServiceNowParameters,
+    -- | The parameters for Snowflake.
+    snowflakeParameters :: Prelude.Maybe SnowflakeParameters,
+    -- | The parameters for Spark.
+    sparkParameters :: Prelude.Maybe SparkParameters,
+    -- | The parameters for SQL Server.
+    sqlServerParameters :: Prelude.Maybe SqlServerParameters,
+    -- | The parameters for Teradata.
+    teradataParameters :: Prelude.Maybe TeradataParameters,
+    -- | The parameters for Twitter.
+    twitterParameters :: Prelude.Maybe TwitterParameters
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSourceParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amazonElasticsearchParameters', 'dataSourceParameters_amazonElasticsearchParameters' - The parameters for OpenSearch.
+--
+-- 'amazonOpenSearchParameters', 'dataSourceParameters_amazonOpenSearchParameters' - The parameters for OpenSearch.
+--
+-- 'athenaParameters', 'dataSourceParameters_athenaParameters' - The parameters for Amazon Athena.
+--
+-- 'auroraParameters', 'dataSourceParameters_auroraParameters' - The parameters for Amazon Aurora MySQL.
+--
+-- 'auroraPostgreSqlParameters', 'dataSourceParameters_auroraPostgreSqlParameters' - The parameters for Amazon Aurora.
+--
+-- 'awsIotAnalyticsParameters', 'dataSourceParameters_awsIotAnalyticsParameters' - The parameters for IoT Analytics.
+--
+-- 'databricksParameters', 'dataSourceParameters_databricksParameters' - The required parameters that are needed to connect to a Databricks data
+-- source.
+--
+-- 'exasolParameters', 'dataSourceParameters_exasolParameters' - The parameters for Exasol.
+--
+-- 'jiraParameters', 'dataSourceParameters_jiraParameters' - The parameters for Jira.
+--
+-- 'mariaDbParameters', 'dataSourceParameters_mariaDbParameters' - The parameters for MariaDB.
+--
+-- 'mySqlParameters', 'dataSourceParameters_mySqlParameters' - The parameters for MySQL.
+--
+-- 'oracleParameters', 'dataSourceParameters_oracleParameters' - The parameters for Oracle.
+--
+-- 'postgreSqlParameters', 'dataSourceParameters_postgreSqlParameters' - The parameters for PostgreSQL.
+--
+-- 'prestoParameters', 'dataSourceParameters_prestoParameters' - The parameters for Presto.
+--
+-- 'rdsParameters', 'dataSourceParameters_rdsParameters' - The parameters for Amazon RDS.
+--
+-- 'redshiftParameters', 'dataSourceParameters_redshiftParameters' - The parameters for Amazon Redshift.
+--
+-- 's3Parameters', 'dataSourceParameters_s3Parameters' - The parameters for S3.
+--
+-- 'serviceNowParameters', 'dataSourceParameters_serviceNowParameters' - The parameters for ServiceNow.
+--
+-- 'snowflakeParameters', 'dataSourceParameters_snowflakeParameters' - The parameters for Snowflake.
+--
+-- 'sparkParameters', 'dataSourceParameters_sparkParameters' - The parameters for Spark.
+--
+-- 'sqlServerParameters', 'dataSourceParameters_sqlServerParameters' - The parameters for SQL Server.
+--
+-- 'teradataParameters', 'dataSourceParameters_teradataParameters' - The parameters for Teradata.
+--
+-- 'twitterParameters', 'dataSourceParameters_twitterParameters' - The parameters for Twitter.
+newDataSourceParameters ::
+  DataSourceParameters
+newDataSourceParameters =
+  DataSourceParameters'
+    { amazonElasticsearchParameters =
+        Prelude.Nothing,
+      amazonOpenSearchParameters = Prelude.Nothing,
+      athenaParameters = Prelude.Nothing,
+      auroraParameters = Prelude.Nothing,
+      auroraPostgreSqlParameters = Prelude.Nothing,
+      awsIotAnalyticsParameters = Prelude.Nothing,
+      databricksParameters = Prelude.Nothing,
+      exasolParameters = Prelude.Nothing,
+      jiraParameters = Prelude.Nothing,
+      mariaDbParameters = Prelude.Nothing,
+      mySqlParameters = Prelude.Nothing,
+      oracleParameters = Prelude.Nothing,
+      postgreSqlParameters = Prelude.Nothing,
+      prestoParameters = Prelude.Nothing,
+      rdsParameters = Prelude.Nothing,
+      redshiftParameters = Prelude.Nothing,
+      s3Parameters = Prelude.Nothing,
+      serviceNowParameters = Prelude.Nothing,
+      snowflakeParameters = Prelude.Nothing,
+      sparkParameters = Prelude.Nothing,
+      sqlServerParameters = Prelude.Nothing,
+      teradataParameters = Prelude.Nothing,
+      twitterParameters = Prelude.Nothing
+    }
+
+-- | The parameters for OpenSearch.
+dataSourceParameters_amazonElasticsearchParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe AmazonElasticsearchParameters)
+dataSourceParameters_amazonElasticsearchParameters = Lens.lens (\DataSourceParameters' {amazonElasticsearchParameters} -> amazonElasticsearchParameters) (\s@DataSourceParameters' {} a -> s {amazonElasticsearchParameters = a} :: DataSourceParameters)
+
+-- | The parameters for OpenSearch.
+dataSourceParameters_amazonOpenSearchParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe AmazonOpenSearchParameters)
+dataSourceParameters_amazonOpenSearchParameters = Lens.lens (\DataSourceParameters' {amazonOpenSearchParameters} -> amazonOpenSearchParameters) (\s@DataSourceParameters' {} a -> s {amazonOpenSearchParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Amazon Athena.
+dataSourceParameters_athenaParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe AthenaParameters)
+dataSourceParameters_athenaParameters = Lens.lens (\DataSourceParameters' {athenaParameters} -> athenaParameters) (\s@DataSourceParameters' {} a -> s {athenaParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Amazon Aurora MySQL.
+dataSourceParameters_auroraParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe AuroraParameters)
+dataSourceParameters_auroraParameters = Lens.lens (\DataSourceParameters' {auroraParameters} -> auroraParameters) (\s@DataSourceParameters' {} a -> s {auroraParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Amazon Aurora.
+dataSourceParameters_auroraPostgreSqlParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe AuroraPostgreSqlParameters)
+dataSourceParameters_auroraPostgreSqlParameters = Lens.lens (\DataSourceParameters' {auroraPostgreSqlParameters} -> auroraPostgreSqlParameters) (\s@DataSourceParameters' {} a -> s {auroraPostgreSqlParameters = a} :: DataSourceParameters)
+
+-- | The parameters for IoT Analytics.
+dataSourceParameters_awsIotAnalyticsParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe AwsIotAnalyticsParameters)
+dataSourceParameters_awsIotAnalyticsParameters = Lens.lens (\DataSourceParameters' {awsIotAnalyticsParameters} -> awsIotAnalyticsParameters) (\s@DataSourceParameters' {} a -> s {awsIotAnalyticsParameters = a} :: DataSourceParameters)
+
+-- | The required parameters that are needed to connect to a Databricks data
+-- source.
+dataSourceParameters_databricksParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe DatabricksParameters)
+dataSourceParameters_databricksParameters = Lens.lens (\DataSourceParameters' {databricksParameters} -> databricksParameters) (\s@DataSourceParameters' {} a -> s {databricksParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Exasol.
+dataSourceParameters_exasolParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe ExasolParameters)
+dataSourceParameters_exasolParameters = Lens.lens (\DataSourceParameters' {exasolParameters} -> exasolParameters) (\s@DataSourceParameters' {} a -> s {exasolParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Jira.
+dataSourceParameters_jiraParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe JiraParameters)
+dataSourceParameters_jiraParameters = Lens.lens (\DataSourceParameters' {jiraParameters} -> jiraParameters) (\s@DataSourceParameters' {} a -> s {jiraParameters = a} :: DataSourceParameters)
+
+-- | The parameters for MariaDB.
+dataSourceParameters_mariaDbParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe MariaDbParameters)
+dataSourceParameters_mariaDbParameters = Lens.lens (\DataSourceParameters' {mariaDbParameters} -> mariaDbParameters) (\s@DataSourceParameters' {} a -> s {mariaDbParameters = a} :: DataSourceParameters)
+
+-- | The parameters for MySQL.
+dataSourceParameters_mySqlParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe MySqlParameters)
+dataSourceParameters_mySqlParameters = Lens.lens (\DataSourceParameters' {mySqlParameters} -> mySqlParameters) (\s@DataSourceParameters' {} a -> s {mySqlParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Oracle.
+dataSourceParameters_oracleParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe OracleParameters)
+dataSourceParameters_oracleParameters = Lens.lens (\DataSourceParameters' {oracleParameters} -> oracleParameters) (\s@DataSourceParameters' {} a -> s {oracleParameters = a} :: DataSourceParameters)
+
+-- | The parameters for PostgreSQL.
+dataSourceParameters_postgreSqlParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe PostgreSqlParameters)
+dataSourceParameters_postgreSqlParameters = Lens.lens (\DataSourceParameters' {postgreSqlParameters} -> postgreSqlParameters) (\s@DataSourceParameters' {} a -> s {postgreSqlParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Presto.
+dataSourceParameters_prestoParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe PrestoParameters)
+dataSourceParameters_prestoParameters = Lens.lens (\DataSourceParameters' {prestoParameters} -> prestoParameters) (\s@DataSourceParameters' {} a -> s {prestoParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Amazon RDS.
+dataSourceParameters_rdsParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe RdsParameters)
+dataSourceParameters_rdsParameters = Lens.lens (\DataSourceParameters' {rdsParameters} -> rdsParameters) (\s@DataSourceParameters' {} a -> s {rdsParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Amazon Redshift.
+dataSourceParameters_redshiftParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe RedshiftParameters)
+dataSourceParameters_redshiftParameters = Lens.lens (\DataSourceParameters' {redshiftParameters} -> redshiftParameters) (\s@DataSourceParameters' {} a -> s {redshiftParameters = a} :: DataSourceParameters)
+
+-- | The parameters for S3.
+dataSourceParameters_s3Parameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe S3Parameters)
+dataSourceParameters_s3Parameters = Lens.lens (\DataSourceParameters' {s3Parameters} -> s3Parameters) (\s@DataSourceParameters' {} a -> s {s3Parameters = a} :: DataSourceParameters)
+
+-- | The parameters for ServiceNow.
+dataSourceParameters_serviceNowParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe ServiceNowParameters)
+dataSourceParameters_serviceNowParameters = Lens.lens (\DataSourceParameters' {serviceNowParameters} -> serviceNowParameters) (\s@DataSourceParameters' {} a -> s {serviceNowParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Snowflake.
+dataSourceParameters_snowflakeParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe SnowflakeParameters)
+dataSourceParameters_snowflakeParameters = Lens.lens (\DataSourceParameters' {snowflakeParameters} -> snowflakeParameters) (\s@DataSourceParameters' {} a -> s {snowflakeParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Spark.
+dataSourceParameters_sparkParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe SparkParameters)
+dataSourceParameters_sparkParameters = Lens.lens (\DataSourceParameters' {sparkParameters} -> sparkParameters) (\s@DataSourceParameters' {} a -> s {sparkParameters = a} :: DataSourceParameters)
+
+-- | The parameters for SQL Server.
+dataSourceParameters_sqlServerParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe SqlServerParameters)
+dataSourceParameters_sqlServerParameters = Lens.lens (\DataSourceParameters' {sqlServerParameters} -> sqlServerParameters) (\s@DataSourceParameters' {} a -> s {sqlServerParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Teradata.
+dataSourceParameters_teradataParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe TeradataParameters)
+dataSourceParameters_teradataParameters = Lens.lens (\DataSourceParameters' {teradataParameters} -> teradataParameters) (\s@DataSourceParameters' {} a -> s {teradataParameters = a} :: DataSourceParameters)
+
+-- | The parameters for Twitter.
+dataSourceParameters_twitterParameters :: Lens.Lens' DataSourceParameters (Prelude.Maybe TwitterParameters)
+dataSourceParameters_twitterParameters = Lens.lens (\DataSourceParameters' {twitterParameters} -> twitterParameters) (\s@DataSourceParameters' {} a -> s {twitterParameters = a} :: DataSourceParameters)
+
+instance Data.FromJSON DataSourceParameters where
+  parseJSON =
+    Data.withObject
+      "DataSourceParameters"
+      ( \x ->
+          DataSourceParameters'
+            Prelude.<$> (x Data..:? "AmazonElasticsearchParameters")
+            Prelude.<*> (x Data..:? "AmazonOpenSearchParameters")
+            Prelude.<*> (x Data..:? "AthenaParameters")
+            Prelude.<*> (x Data..:? "AuroraParameters")
+            Prelude.<*> (x Data..:? "AuroraPostgreSqlParameters")
+            Prelude.<*> (x Data..:? "AwsIotAnalyticsParameters")
+            Prelude.<*> (x Data..:? "DatabricksParameters")
+            Prelude.<*> (x Data..:? "ExasolParameters")
+            Prelude.<*> (x Data..:? "JiraParameters")
+            Prelude.<*> (x Data..:? "MariaDbParameters")
+            Prelude.<*> (x Data..:? "MySqlParameters")
+            Prelude.<*> (x Data..:? "OracleParameters")
+            Prelude.<*> (x Data..:? "PostgreSqlParameters")
+            Prelude.<*> (x Data..:? "PrestoParameters")
+            Prelude.<*> (x Data..:? "RdsParameters")
+            Prelude.<*> (x Data..:? "RedshiftParameters")
+            Prelude.<*> (x Data..:? "S3Parameters")
+            Prelude.<*> (x Data..:? "ServiceNowParameters")
+            Prelude.<*> (x Data..:? "SnowflakeParameters")
+            Prelude.<*> (x Data..:? "SparkParameters")
+            Prelude.<*> (x Data..:? "SqlServerParameters")
+            Prelude.<*> (x Data..:? "TeradataParameters")
+            Prelude.<*> (x Data..:? "TwitterParameters")
+      )
+
+instance Prelude.Hashable DataSourceParameters where
+  hashWithSalt _salt DataSourceParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` amazonElasticsearchParameters
+      `Prelude.hashWithSalt` amazonOpenSearchParameters
+      `Prelude.hashWithSalt` athenaParameters
+      `Prelude.hashWithSalt` auroraParameters
+      `Prelude.hashWithSalt` auroraPostgreSqlParameters
+      `Prelude.hashWithSalt` awsIotAnalyticsParameters
+      `Prelude.hashWithSalt` databricksParameters
+      `Prelude.hashWithSalt` exasolParameters
+      `Prelude.hashWithSalt` jiraParameters
+      `Prelude.hashWithSalt` mariaDbParameters
+      `Prelude.hashWithSalt` mySqlParameters
+      `Prelude.hashWithSalt` oracleParameters
+      `Prelude.hashWithSalt` postgreSqlParameters
+      `Prelude.hashWithSalt` prestoParameters
+      `Prelude.hashWithSalt` rdsParameters
+      `Prelude.hashWithSalt` redshiftParameters
+      `Prelude.hashWithSalt` s3Parameters
+      `Prelude.hashWithSalt` serviceNowParameters
+      `Prelude.hashWithSalt` snowflakeParameters
+      `Prelude.hashWithSalt` sparkParameters
+      `Prelude.hashWithSalt` sqlServerParameters
+      `Prelude.hashWithSalt` teradataParameters
+      `Prelude.hashWithSalt` twitterParameters
+
+instance Prelude.NFData DataSourceParameters where
+  rnf DataSourceParameters' {..} =
+    Prelude.rnf amazonElasticsearchParameters
+      `Prelude.seq` Prelude.rnf amazonOpenSearchParameters
+      `Prelude.seq` Prelude.rnf athenaParameters
+      `Prelude.seq` Prelude.rnf auroraParameters
+      `Prelude.seq` Prelude.rnf auroraPostgreSqlParameters
+      `Prelude.seq` Prelude.rnf awsIotAnalyticsParameters
+      `Prelude.seq` Prelude.rnf databricksParameters
+      `Prelude.seq` Prelude.rnf exasolParameters
+      `Prelude.seq` Prelude.rnf jiraParameters
+      `Prelude.seq` Prelude.rnf mariaDbParameters
+      `Prelude.seq` Prelude.rnf mySqlParameters
+      `Prelude.seq` Prelude.rnf oracleParameters
+      `Prelude.seq` Prelude.rnf postgreSqlParameters
+      `Prelude.seq` Prelude.rnf prestoParameters
+      `Prelude.seq` Prelude.rnf rdsParameters
+      `Prelude.seq` Prelude.rnf redshiftParameters
+      `Prelude.seq` Prelude.rnf s3Parameters
+      `Prelude.seq` Prelude.rnf serviceNowParameters
+      `Prelude.seq` Prelude.rnf snowflakeParameters
+      `Prelude.seq` Prelude.rnf sparkParameters
+      `Prelude.seq` Prelude.rnf
+        sqlServerParameters
+      `Prelude.seq` Prelude.rnf
+        teradataParameters
+      `Prelude.seq` Prelude.rnf
+        twitterParameters
+
+instance Data.ToJSON DataSourceParameters where
+  toJSON DataSourceParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AmazonElasticsearchParameters" Data..=)
+              Prelude.<$> amazonElasticsearchParameters,
+            ("AmazonOpenSearchParameters" Data..=)
+              Prelude.<$> amazonOpenSearchParameters,
+            ("AthenaParameters" Data..=)
+              Prelude.<$> athenaParameters,
+            ("AuroraParameters" Data..=)
+              Prelude.<$> auroraParameters,
+            ("AuroraPostgreSqlParameters" Data..=)
+              Prelude.<$> auroraPostgreSqlParameters,
+            ("AwsIotAnalyticsParameters" Data..=)
+              Prelude.<$> awsIotAnalyticsParameters,
+            ("DatabricksParameters" Data..=)
+              Prelude.<$> databricksParameters,
+            ("ExasolParameters" Data..=)
+              Prelude.<$> exasolParameters,
+            ("JiraParameters" Data..=)
+              Prelude.<$> jiraParameters,
+            ("MariaDbParameters" Data..=)
+              Prelude.<$> mariaDbParameters,
+            ("MySqlParameters" Data..=)
+              Prelude.<$> mySqlParameters,
+            ("OracleParameters" Data..=)
+              Prelude.<$> oracleParameters,
+            ("PostgreSqlParameters" Data..=)
+              Prelude.<$> postgreSqlParameters,
+            ("PrestoParameters" Data..=)
+              Prelude.<$> prestoParameters,
+            ("RdsParameters" Data..=) Prelude.<$> rdsParameters,
+            ("RedshiftParameters" Data..=)
+              Prelude.<$> redshiftParameters,
+            ("S3Parameters" Data..=) Prelude.<$> s3Parameters,
+            ("ServiceNowParameters" Data..=)
+              Prelude.<$> serviceNowParameters,
+            ("SnowflakeParameters" Data..=)
+              Prelude.<$> snowflakeParameters,
+            ("SparkParameters" Data..=)
+              Prelude.<$> sparkParameters,
+            ("SqlServerParameters" Data..=)
+              Prelude.<$> sqlServerParameters,
+            ("TeradataParameters" Data..=)
+              Prelude.<$> teradataParameters,
+            ("TwitterParameters" Data..=)
+              Prelude.<$> twitterParameters
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceSearchFilter.hs b/gen/Amazonka/QuickSight/Types/DataSourceSearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceSearchFilter.hs
@@ -0,0 +1,214 @@
+{-# 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.QuickSight.Types.DataSourceSearchFilter
+-- 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.QuickSight.Types.DataSourceSearchFilter 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.QuickSight.Types.DataSourceFilterAttribute
+import Amazonka.QuickSight.Types.FilterOperator
+
+-- | A filter that you apply when searching for data sources.
+--
+-- /See:/ 'newDataSourceSearchFilter' smart constructor.
+data DataSourceSearchFilter = DataSourceSearchFilter'
+  { -- | The comparison operator that you want to use as a filter, for example
+    -- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+    -- and @\"StringLike\"@.
+    --
+    -- If you set the operator value to @\"StringEquals\"@, you need to provide
+    -- an ownership related filter in the @\"NAME\"@ field and the arn of the
+    -- user or group whose data sources you want to search in the @\"Value\"@
+    -- field. For example,
+    -- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    --
+    -- If you set the value to @\"StringLike\"@, you need to provide the name
+    -- of the data sources you are searching for. For example,
+    -- @\"Name\":\"DATASOURCE_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+    -- The @\"StringLike\"@ operator only supports the @NAME@ value
+    -- @DATASOURCE_NAME@.
+    operator :: FilterOperator,
+    -- | The name of the value that you want to use as a filter, for example,
+    -- @\"Name\": \"DIRECT_QUICKSIGHT_OWNER\"@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+    --     group, and any data sources with that ARN listed as one of the
+    --     owners or viewers of the data sources are returned. Implicit
+    --     permissions from folders or groups are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+    --     any data sources with that ARN listed as one of the owners if the
+    --     data source are returned. Implicit permissions from folders or
+    --     groups are not considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+    --     and any data sources with that ARN listed as the only owner of the
+    --     data source are returned. Implicit permissions from folders or
+    --     groups are not considered.
+    --
+    -- -   @DATASOURCE_NAME@: Any data sources whose names have a substring
+    --     match to the provided value are returned.
+    name :: DataSourceFilterAttribute,
+    -- | The value of the named item, for example @DIRECT_QUICKSIGHT_OWNER@, that
+    -- you want to use as a filter, for example,
+    -- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSourceSearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'operator', 'dataSourceSearchFilter_operator' - The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose data sources you want to search in the @\"Value\"@
+-- field. For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the data sources you are searching for. For example,
+-- @\"Name\":\"DATASOURCE_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @DATASOURCE_NAME@.
+--
+-- 'name', 'dataSourceSearchFilter_name' - The name of the value that you want to use as a filter, for example,
+-- @\"Name\": \"DIRECT_QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any data sources with that ARN listed as one of the
+--     owners or viewers of the data sources are returned. Implicit
+--     permissions from folders or groups are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any data sources with that ARN listed as one of the owners if the
+--     data source are returned. Implicit permissions from folders or
+--     groups are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any data sources with that ARN listed as the only owner of the
+--     data source are returned. Implicit permissions from folders or
+--     groups are not considered.
+--
+-- -   @DATASOURCE_NAME@: Any data sources whose names have a substring
+--     match to the provided value are returned.
+--
+-- 'value', 'dataSourceSearchFilter_value' - The value of the named item, for example @DIRECT_QUICKSIGHT_OWNER@, that
+-- you want to use as a filter, for example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+newDataSourceSearchFilter ::
+  -- | 'operator'
+  FilterOperator ->
+  -- | 'name'
+  DataSourceFilterAttribute ->
+  -- | 'value'
+  Prelude.Text ->
+  DataSourceSearchFilter
+newDataSourceSearchFilter pOperator_ pName_ pValue_ =
+  DataSourceSearchFilter'
+    { operator = pOperator_,
+      name = pName_,
+      value = pValue_
+    }
+
+-- | The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose data sources you want to search in the @\"Value\"@
+-- field. For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the data sources you are searching for. For example,
+-- @\"Name\":\"DATASOURCE_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @DATASOURCE_NAME@.
+dataSourceSearchFilter_operator :: Lens.Lens' DataSourceSearchFilter FilterOperator
+dataSourceSearchFilter_operator = Lens.lens (\DataSourceSearchFilter' {operator} -> operator) (\s@DataSourceSearchFilter' {} a -> s {operator = a} :: DataSourceSearchFilter)
+
+-- | The name of the value that you want to use as a filter, for example,
+-- @\"Name\": \"DIRECT_QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any data sources with that ARN listed as one of the
+--     owners or viewers of the data sources are returned. Implicit
+--     permissions from folders or groups are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any data sources with that ARN listed as one of the owners if the
+--     data source are returned. Implicit permissions from folders or
+--     groups are not considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any data sources with that ARN listed as the only owner of the
+--     data source are returned. Implicit permissions from folders or
+--     groups are not considered.
+--
+-- -   @DATASOURCE_NAME@: Any data sources whose names have a substring
+--     match to the provided value are returned.
+dataSourceSearchFilter_name :: Lens.Lens' DataSourceSearchFilter DataSourceFilterAttribute
+dataSourceSearchFilter_name = Lens.lens (\DataSourceSearchFilter' {name} -> name) (\s@DataSourceSearchFilter' {} a -> s {name = a} :: DataSourceSearchFilter)
+
+-- | The value of the named item, for example @DIRECT_QUICKSIGHT_OWNER@, that
+-- you want to use as a filter, for example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+dataSourceSearchFilter_value :: Lens.Lens' DataSourceSearchFilter Prelude.Text
+dataSourceSearchFilter_value = Lens.lens (\DataSourceSearchFilter' {value} -> value) (\s@DataSourceSearchFilter' {} a -> s {value = a} :: DataSourceSearchFilter)
+
+instance Prelude.Hashable DataSourceSearchFilter where
+  hashWithSalt _salt DataSourceSearchFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData DataSourceSearchFilter where
+  rnf DataSourceSearchFilter' {..} =
+    Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON DataSourceSearchFilter where
+  toJSON DataSourceSearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Operator" Data..= operator),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceSummary.hs b/gen/Amazonka/QuickSight/Types/DataSourceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceSummary.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.QuickSight.Types.DataSourceSummary
+-- 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.QuickSight.Types.DataSourceSummary 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.QuickSight.Types.DataSourceType
+
+-- | A @DataSourceSummary@ object that returns a summary of a data source.
+--
+-- /See:/ 'newDataSourceSummary' smart constructor.
+data DataSourceSummary = DataSourceSummary'
+  { -- | The arn of the datasource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the data source was created. This value is
+    -- expressed in MM-DD-YYYY HH:MM:SS format.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique ID of the data source.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | The date and time the data source was last updated. This value is
+    -- expressed in MM-DD-YYYY HH:MM:SS format.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the data source.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The type of the data source.
+    type' :: Prelude.Maybe DataSourceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSourceSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'dataSourceSummary_arn' - The arn of the datasource.
+--
+-- 'createdTime', 'dataSourceSummary_createdTime' - The date and time that the data source was created. This value is
+-- expressed in MM-DD-YYYY HH:MM:SS format.
+--
+-- 'dataSourceId', 'dataSourceSummary_dataSourceId' - The unique ID of the data source.
+--
+-- 'lastUpdatedTime', 'dataSourceSummary_lastUpdatedTime' - The date and time the data source was last updated. This value is
+-- expressed in MM-DD-YYYY HH:MM:SS format.
+--
+-- 'name', 'dataSourceSummary_name' - The name of the data source.
+--
+-- 'type'', 'dataSourceSummary_type' - The type of the data source.
+newDataSourceSummary ::
+  DataSourceSummary
+newDataSourceSummary =
+  DataSourceSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The arn of the datasource.
+dataSourceSummary_arn :: Lens.Lens' DataSourceSummary (Prelude.Maybe Prelude.Text)
+dataSourceSummary_arn = Lens.lens (\DataSourceSummary' {arn} -> arn) (\s@DataSourceSummary' {} a -> s {arn = a} :: DataSourceSummary)
+
+-- | The date and time that the data source was created. This value is
+-- expressed in MM-DD-YYYY HH:MM:SS format.
+dataSourceSummary_createdTime :: Lens.Lens' DataSourceSummary (Prelude.Maybe Prelude.UTCTime)
+dataSourceSummary_createdTime = Lens.lens (\DataSourceSummary' {createdTime} -> createdTime) (\s@DataSourceSummary' {} a -> s {createdTime = a} :: DataSourceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The unique ID of the data source.
+dataSourceSummary_dataSourceId :: Lens.Lens' DataSourceSummary (Prelude.Maybe Prelude.Text)
+dataSourceSummary_dataSourceId = Lens.lens (\DataSourceSummary' {dataSourceId} -> dataSourceId) (\s@DataSourceSummary' {} a -> s {dataSourceId = a} :: DataSourceSummary)
+
+-- | The date and time the data source was last updated. This value is
+-- expressed in MM-DD-YYYY HH:MM:SS format.
+dataSourceSummary_lastUpdatedTime :: Lens.Lens' DataSourceSummary (Prelude.Maybe Prelude.UTCTime)
+dataSourceSummary_lastUpdatedTime = Lens.lens (\DataSourceSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@DataSourceSummary' {} a -> s {lastUpdatedTime = a} :: DataSourceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the data source.
+dataSourceSummary_name :: Lens.Lens' DataSourceSummary (Prelude.Maybe Prelude.Text)
+dataSourceSummary_name = Lens.lens (\DataSourceSummary' {name} -> name) (\s@DataSourceSummary' {} a -> s {name = a} :: DataSourceSummary)
+
+-- | The type of the data source.
+dataSourceSummary_type :: Lens.Lens' DataSourceSummary (Prelude.Maybe DataSourceType)
+dataSourceSummary_type = Lens.lens (\DataSourceSummary' {type'} -> type') (\s@DataSourceSummary' {} a -> s {type' = a} :: DataSourceSummary)
+
+instance Data.FromJSON DataSourceSummary where
+  parseJSON =
+    Data.withObject
+      "DataSourceSummary"
+      ( \x ->
+          DataSourceSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "DataSourceId")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable DataSourceSummary where
+  hashWithSalt _salt DataSourceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSourceId
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData DataSourceSummary where
+  rnf DataSourceSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/QuickSight/Types/DataSourceType.hs b/gen/Amazonka/QuickSight/Types/DataSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DataSourceType.hs
@@ -0,0 +1,191 @@
+{-# 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.QuickSight.Types.DataSourceType
+-- 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.QuickSight.Types.DataSourceType
+  ( DataSourceType
+      ( ..,
+        DataSourceType_ADOBE_ANALYTICS,
+        DataSourceType_AMAZON_ELASTICSEARCH,
+        DataSourceType_AMAZON_OPENSEARCH,
+        DataSourceType_ATHENA,
+        DataSourceType_AURORA,
+        DataSourceType_AURORA_POSTGRESQL,
+        DataSourceType_AWS_IOT_ANALYTICS,
+        DataSourceType_DATABRICKS,
+        DataSourceType_EXASOL,
+        DataSourceType_GITHUB,
+        DataSourceType_JIRA,
+        DataSourceType_MARIADB,
+        DataSourceType_MYSQL,
+        DataSourceType_ORACLE,
+        DataSourceType_POSTGRESQL,
+        DataSourceType_PRESTO,
+        DataSourceType_REDSHIFT,
+        DataSourceType_S3,
+        DataSourceType_SALESFORCE,
+        DataSourceType_SERVICENOW,
+        DataSourceType_SNOWFLAKE,
+        DataSourceType_SPARK,
+        DataSourceType_SQLSERVER,
+        DataSourceType_TERADATA,
+        DataSourceType_TIMESTREAM,
+        DataSourceType_TWITTER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataSourceType = DataSourceType'
+  { fromDataSourceType ::
+      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 DataSourceType_ADOBE_ANALYTICS :: DataSourceType
+pattern DataSourceType_ADOBE_ANALYTICS = DataSourceType' "ADOBE_ANALYTICS"
+
+pattern DataSourceType_AMAZON_ELASTICSEARCH :: DataSourceType
+pattern DataSourceType_AMAZON_ELASTICSEARCH = DataSourceType' "AMAZON_ELASTICSEARCH"
+
+pattern DataSourceType_AMAZON_OPENSEARCH :: DataSourceType
+pattern DataSourceType_AMAZON_OPENSEARCH = DataSourceType' "AMAZON_OPENSEARCH"
+
+pattern DataSourceType_ATHENA :: DataSourceType
+pattern DataSourceType_ATHENA = DataSourceType' "ATHENA"
+
+pattern DataSourceType_AURORA :: DataSourceType
+pattern DataSourceType_AURORA = DataSourceType' "AURORA"
+
+pattern DataSourceType_AURORA_POSTGRESQL :: DataSourceType
+pattern DataSourceType_AURORA_POSTGRESQL = DataSourceType' "AURORA_POSTGRESQL"
+
+pattern DataSourceType_AWS_IOT_ANALYTICS :: DataSourceType
+pattern DataSourceType_AWS_IOT_ANALYTICS = DataSourceType' "AWS_IOT_ANALYTICS"
+
+pattern DataSourceType_DATABRICKS :: DataSourceType
+pattern DataSourceType_DATABRICKS = DataSourceType' "DATABRICKS"
+
+pattern DataSourceType_EXASOL :: DataSourceType
+pattern DataSourceType_EXASOL = DataSourceType' "EXASOL"
+
+pattern DataSourceType_GITHUB :: DataSourceType
+pattern DataSourceType_GITHUB = DataSourceType' "GITHUB"
+
+pattern DataSourceType_JIRA :: DataSourceType
+pattern DataSourceType_JIRA = DataSourceType' "JIRA"
+
+pattern DataSourceType_MARIADB :: DataSourceType
+pattern DataSourceType_MARIADB = DataSourceType' "MARIADB"
+
+pattern DataSourceType_MYSQL :: DataSourceType
+pattern DataSourceType_MYSQL = DataSourceType' "MYSQL"
+
+pattern DataSourceType_ORACLE :: DataSourceType
+pattern DataSourceType_ORACLE = DataSourceType' "ORACLE"
+
+pattern DataSourceType_POSTGRESQL :: DataSourceType
+pattern DataSourceType_POSTGRESQL = DataSourceType' "POSTGRESQL"
+
+pattern DataSourceType_PRESTO :: DataSourceType
+pattern DataSourceType_PRESTO = DataSourceType' "PRESTO"
+
+pattern DataSourceType_REDSHIFT :: DataSourceType
+pattern DataSourceType_REDSHIFT = DataSourceType' "REDSHIFT"
+
+pattern DataSourceType_S3 :: DataSourceType
+pattern DataSourceType_S3 = DataSourceType' "S3"
+
+pattern DataSourceType_SALESFORCE :: DataSourceType
+pattern DataSourceType_SALESFORCE = DataSourceType' "SALESFORCE"
+
+pattern DataSourceType_SERVICENOW :: DataSourceType
+pattern DataSourceType_SERVICENOW = DataSourceType' "SERVICENOW"
+
+pattern DataSourceType_SNOWFLAKE :: DataSourceType
+pattern DataSourceType_SNOWFLAKE = DataSourceType' "SNOWFLAKE"
+
+pattern DataSourceType_SPARK :: DataSourceType
+pattern DataSourceType_SPARK = DataSourceType' "SPARK"
+
+pattern DataSourceType_SQLSERVER :: DataSourceType
+pattern DataSourceType_SQLSERVER = DataSourceType' "SQLSERVER"
+
+pattern DataSourceType_TERADATA :: DataSourceType
+pattern DataSourceType_TERADATA = DataSourceType' "TERADATA"
+
+pattern DataSourceType_TIMESTREAM :: DataSourceType
+pattern DataSourceType_TIMESTREAM = DataSourceType' "TIMESTREAM"
+
+pattern DataSourceType_TWITTER :: DataSourceType
+pattern DataSourceType_TWITTER = DataSourceType' "TWITTER"
+
+{-# COMPLETE
+  DataSourceType_ADOBE_ANALYTICS,
+  DataSourceType_AMAZON_ELASTICSEARCH,
+  DataSourceType_AMAZON_OPENSEARCH,
+  DataSourceType_ATHENA,
+  DataSourceType_AURORA,
+  DataSourceType_AURORA_POSTGRESQL,
+  DataSourceType_AWS_IOT_ANALYTICS,
+  DataSourceType_DATABRICKS,
+  DataSourceType_EXASOL,
+  DataSourceType_GITHUB,
+  DataSourceType_JIRA,
+  DataSourceType_MARIADB,
+  DataSourceType_MYSQL,
+  DataSourceType_ORACLE,
+  DataSourceType_POSTGRESQL,
+  DataSourceType_PRESTO,
+  DataSourceType_REDSHIFT,
+  DataSourceType_S3,
+  DataSourceType_SALESFORCE,
+  DataSourceType_SERVICENOW,
+  DataSourceType_SNOWFLAKE,
+  DataSourceType_SPARK,
+  DataSourceType_SQLSERVER,
+  DataSourceType_TERADATA,
+  DataSourceType_TIMESTREAM,
+  DataSourceType_TWITTER,
+  DataSourceType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DatabricksParameters.hs b/gen/Amazonka/QuickSight/Types/DatabricksParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DatabricksParameters.hs
@@ -0,0 +1,117 @@
+{-# 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.QuickSight.Types.DatabricksParameters
+-- 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.QuickSight.Types.DatabricksParameters 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 required parameters that are needed to connect to a Databricks data
+-- source.
+--
+-- /See:/ 'newDatabricksParameters' smart constructor.
+data DatabricksParameters = DatabricksParameters'
+  { -- | The host name of the Databricks data source.
+    host :: Prelude.Text,
+    -- | The port for the Databricks data source.
+    port :: Prelude.Natural,
+    -- | The HTTP path of the Databricks data source.
+    sqlEndpointPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatabricksParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'databricksParameters_host' - The host name of the Databricks data source.
+--
+-- 'port', 'databricksParameters_port' - The port for the Databricks data source.
+--
+-- 'sqlEndpointPath', 'databricksParameters_sqlEndpointPath' - The HTTP path of the Databricks data source.
+newDatabricksParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'sqlEndpointPath'
+  Prelude.Text ->
+  DatabricksParameters
+newDatabricksParameters
+  pHost_
+  pPort_
+  pSqlEndpointPath_ =
+    DatabricksParameters'
+      { host = pHost_,
+        port = pPort_,
+        sqlEndpointPath = pSqlEndpointPath_
+      }
+
+-- | The host name of the Databricks data source.
+databricksParameters_host :: Lens.Lens' DatabricksParameters Prelude.Text
+databricksParameters_host = Lens.lens (\DatabricksParameters' {host} -> host) (\s@DatabricksParameters' {} a -> s {host = a} :: DatabricksParameters)
+
+-- | The port for the Databricks data source.
+databricksParameters_port :: Lens.Lens' DatabricksParameters Prelude.Natural
+databricksParameters_port = Lens.lens (\DatabricksParameters' {port} -> port) (\s@DatabricksParameters' {} a -> s {port = a} :: DatabricksParameters)
+
+-- | The HTTP path of the Databricks data source.
+databricksParameters_sqlEndpointPath :: Lens.Lens' DatabricksParameters Prelude.Text
+databricksParameters_sqlEndpointPath = Lens.lens (\DatabricksParameters' {sqlEndpointPath} -> sqlEndpointPath) (\s@DatabricksParameters' {} a -> s {sqlEndpointPath = a} :: DatabricksParameters)
+
+instance Data.FromJSON DatabricksParameters where
+  parseJSON =
+    Data.withObject
+      "DatabricksParameters"
+      ( \x ->
+          DatabricksParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "SqlEndpointPath")
+      )
+
+instance Prelude.Hashable DatabricksParameters where
+  hashWithSalt _salt DatabricksParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` sqlEndpointPath
+
+instance Prelude.NFData DatabricksParameters where
+  rnf DatabricksParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf sqlEndpointPath
+
+instance Data.ToJSON DatabricksParameters where
+  toJSON DatabricksParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just
+              ("SqlEndpointPath" Data..= sqlEndpointPath)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateAggregationFunction.hs b/gen/Amazonka/QuickSight/Types/DateAggregationFunction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateAggregationFunction.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.QuickSight.Types.DateAggregationFunction
+-- 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.QuickSight.Types.DateAggregationFunction
+  ( DateAggregationFunction
+      ( ..,
+        DateAggregationFunction_COUNT,
+        DateAggregationFunction_DISTINCT_COUNT,
+        DateAggregationFunction_MAX,
+        DateAggregationFunction_MIN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DateAggregationFunction = DateAggregationFunction'
+  { fromDateAggregationFunction ::
+      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 DateAggregationFunction_COUNT :: DateAggregationFunction
+pattern DateAggregationFunction_COUNT = DateAggregationFunction' "COUNT"
+
+pattern DateAggregationFunction_DISTINCT_COUNT :: DateAggregationFunction
+pattern DateAggregationFunction_DISTINCT_COUNT = DateAggregationFunction' "DISTINCT_COUNT"
+
+pattern DateAggregationFunction_MAX :: DateAggregationFunction
+pattern DateAggregationFunction_MAX = DateAggregationFunction' "MAX"
+
+pattern DateAggregationFunction_MIN :: DateAggregationFunction
+pattern DateAggregationFunction_MIN = DateAggregationFunction' "MIN"
+
+{-# COMPLETE
+  DateAggregationFunction_COUNT,
+  DateAggregationFunction_DISTINCT_COUNT,
+  DateAggregationFunction_MAX,
+  DateAggregationFunction_MIN,
+  DateAggregationFunction'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/DateAxisOptions.hs b/gen/Amazonka/QuickSight/Types/DateAxisOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateAxisOptions.hs
@@ -0,0 +1,82 @@
+{-# 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.QuickSight.Types.DateAxisOptions
+-- 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.QuickSight.Types.DateAxisOptions 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.QuickSight.Types.Visibility
+
+-- | The options that determine how a date axis is displayed.
+--
+-- /See:/ 'newDateAxisOptions' smart constructor.
+data DateAxisOptions = DateAxisOptions'
+  { -- | Determines whether or not missing dates are displayed.
+    missingDateVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateAxisOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'missingDateVisibility', 'dateAxisOptions_missingDateVisibility' - Determines whether or not missing dates are displayed.
+newDateAxisOptions ::
+  DateAxisOptions
+newDateAxisOptions =
+  DateAxisOptions'
+    { missingDateVisibility =
+        Prelude.Nothing
+    }
+
+-- | Determines whether or not missing dates are displayed.
+dateAxisOptions_missingDateVisibility :: Lens.Lens' DateAxisOptions (Prelude.Maybe Visibility)
+dateAxisOptions_missingDateVisibility = Lens.lens (\DateAxisOptions' {missingDateVisibility} -> missingDateVisibility) (\s@DateAxisOptions' {} a -> s {missingDateVisibility = a} :: DateAxisOptions)
+
+instance Data.FromJSON DateAxisOptions where
+  parseJSON =
+    Data.withObject
+      "DateAxisOptions"
+      ( \x ->
+          DateAxisOptions'
+            Prelude.<$> (x Data..:? "MissingDateVisibility")
+      )
+
+instance Prelude.Hashable DateAxisOptions where
+  hashWithSalt _salt DateAxisOptions' {..} =
+    _salt `Prelude.hashWithSalt` missingDateVisibility
+
+instance Prelude.NFData DateAxisOptions where
+  rnf DateAxisOptions' {..} =
+    Prelude.rnf missingDateVisibility
+
+instance Data.ToJSON DateAxisOptions where
+  toJSON DateAxisOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MissingDateVisibility" Data..=)
+              Prelude.<$> missingDateVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateDimensionField.hs b/gen/Amazonka/QuickSight/Types/DateDimensionField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateDimensionField.hs
@@ -0,0 +1,199 @@
+{-# 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.QuickSight.Types.DateDimensionField
+-- 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.QuickSight.Types.DateDimensionField 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.DateTimeFormatConfiguration
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | The dimension type field with date type columns.
+--
+-- /See:/ 'newDateDimensionField' smart constructor.
+data DateDimensionField = DateDimensionField'
+  { -- | The date granularity of the @DateDimensionField@. Choose one of the
+    -- following options:
+    --
+    -- -   @YEAR@
+    --
+    -- -   @QUARTER@
+    --
+    -- -   @MONTH@
+    --
+    -- -   @WEEK@
+    --
+    -- -   @DAY@
+    --
+    -- -   @HOUR@
+    --
+    -- -   @MINUTE@
+    --
+    -- -   @SECOND@
+    --
+    -- -   @MILLISECOND@
+    dateGranularity :: Prelude.Maybe TimeGranularity,
+    -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe DateTimeFormatConfiguration,
+    -- | The custom hierarchy ID.
+    hierarchyId :: Prelude.Maybe Prelude.Text,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @DateDimensionField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateDimensionField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateGranularity', 'dateDimensionField_dateGranularity' - The date granularity of the @DateDimensionField@. Choose one of the
+-- following options:
+--
+-- -   @YEAR@
+--
+-- -   @QUARTER@
+--
+-- -   @MONTH@
+--
+-- -   @WEEK@
+--
+-- -   @DAY@
+--
+-- -   @HOUR@
+--
+-- -   @MINUTE@
+--
+-- -   @SECOND@
+--
+-- -   @MILLISECOND@
+--
+-- 'formatConfiguration', 'dateDimensionField_formatConfiguration' - The format configuration of the field.
+--
+-- 'hierarchyId', 'dateDimensionField_hierarchyId' - The custom hierarchy ID.
+--
+-- 'fieldId', 'dateDimensionField_fieldId' - The custom field ID.
+--
+-- 'column', 'dateDimensionField_column' - The column that is used in the @DateDimensionField@.
+newDateDimensionField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  DateDimensionField
+newDateDimensionField pFieldId_ pColumn_ =
+  DateDimensionField'
+    { dateGranularity =
+        Prelude.Nothing,
+      formatConfiguration = Prelude.Nothing,
+      hierarchyId = Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The date granularity of the @DateDimensionField@. Choose one of the
+-- following options:
+--
+-- -   @YEAR@
+--
+-- -   @QUARTER@
+--
+-- -   @MONTH@
+--
+-- -   @WEEK@
+--
+-- -   @DAY@
+--
+-- -   @HOUR@
+--
+-- -   @MINUTE@
+--
+-- -   @SECOND@
+--
+-- -   @MILLISECOND@
+dateDimensionField_dateGranularity :: Lens.Lens' DateDimensionField (Prelude.Maybe TimeGranularity)
+dateDimensionField_dateGranularity = Lens.lens (\DateDimensionField' {dateGranularity} -> dateGranularity) (\s@DateDimensionField' {} a -> s {dateGranularity = a} :: DateDimensionField)
+
+-- | The format configuration of the field.
+dateDimensionField_formatConfiguration :: Lens.Lens' DateDimensionField (Prelude.Maybe DateTimeFormatConfiguration)
+dateDimensionField_formatConfiguration = Lens.lens (\DateDimensionField' {formatConfiguration} -> formatConfiguration) (\s@DateDimensionField' {} a -> s {formatConfiguration = a} :: DateDimensionField)
+
+-- | The custom hierarchy ID.
+dateDimensionField_hierarchyId :: Lens.Lens' DateDimensionField (Prelude.Maybe Prelude.Text)
+dateDimensionField_hierarchyId = Lens.lens (\DateDimensionField' {hierarchyId} -> hierarchyId) (\s@DateDimensionField' {} a -> s {hierarchyId = a} :: DateDimensionField)
+
+-- | The custom field ID.
+dateDimensionField_fieldId :: Lens.Lens' DateDimensionField Prelude.Text
+dateDimensionField_fieldId = Lens.lens (\DateDimensionField' {fieldId} -> fieldId) (\s@DateDimensionField' {} a -> s {fieldId = a} :: DateDimensionField)
+
+-- | The column that is used in the @DateDimensionField@.
+dateDimensionField_column :: Lens.Lens' DateDimensionField ColumnIdentifier
+dateDimensionField_column = Lens.lens (\DateDimensionField' {column} -> column) (\s@DateDimensionField' {} a -> s {column = a} :: DateDimensionField)
+
+instance Data.FromJSON DateDimensionField where
+  parseJSON =
+    Data.withObject
+      "DateDimensionField"
+      ( \x ->
+          DateDimensionField'
+            Prelude.<$> (x Data..:? "DateGranularity")
+            Prelude.<*> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..:? "HierarchyId")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable DateDimensionField where
+  hashWithSalt _salt DateDimensionField' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateGranularity
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` hierarchyId
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData DateDimensionField where
+  rnf DateDimensionField' {..} =
+    Prelude.rnf dateGranularity
+      `Prelude.seq` Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf hierarchyId
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON DateDimensionField where
+  toJSON DateDimensionField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateGranularity" Data..=)
+              Prelude.<$> dateGranularity,
+            ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            ("HierarchyId" Data..=) Prelude.<$> hierarchyId,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateMeasureField.hs b/gen/Amazonka/QuickSight/Types/DateMeasureField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateMeasureField.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DateMeasureField
+-- 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.QuickSight.Types.DateMeasureField 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.DateAggregationFunction
+import Amazonka.QuickSight.Types.DateTimeFormatConfiguration
+
+-- | The measure type field with date type columns.
+--
+-- /See:/ 'newDateMeasureField' smart constructor.
+data DateMeasureField = DateMeasureField'
+  { -- | The aggregation function of the measure field.
+    aggregationFunction :: Prelude.Maybe DateAggregationFunction,
+    -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe DateTimeFormatConfiguration,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @DateMeasureField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateMeasureField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationFunction', 'dateMeasureField_aggregationFunction' - The aggregation function of the measure field.
+--
+-- 'formatConfiguration', 'dateMeasureField_formatConfiguration' - The format configuration of the field.
+--
+-- 'fieldId', 'dateMeasureField_fieldId' - The custom field ID.
+--
+-- 'column', 'dateMeasureField_column' - The column that is used in the @DateMeasureField@.
+newDateMeasureField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  DateMeasureField
+newDateMeasureField pFieldId_ pColumn_ =
+  DateMeasureField'
+    { aggregationFunction =
+        Prelude.Nothing,
+      formatConfiguration = Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The aggregation function of the measure field.
+dateMeasureField_aggregationFunction :: Lens.Lens' DateMeasureField (Prelude.Maybe DateAggregationFunction)
+dateMeasureField_aggregationFunction = Lens.lens (\DateMeasureField' {aggregationFunction} -> aggregationFunction) (\s@DateMeasureField' {} a -> s {aggregationFunction = a} :: DateMeasureField)
+
+-- | The format configuration of the field.
+dateMeasureField_formatConfiguration :: Lens.Lens' DateMeasureField (Prelude.Maybe DateTimeFormatConfiguration)
+dateMeasureField_formatConfiguration = Lens.lens (\DateMeasureField' {formatConfiguration} -> formatConfiguration) (\s@DateMeasureField' {} a -> s {formatConfiguration = a} :: DateMeasureField)
+
+-- | The custom field ID.
+dateMeasureField_fieldId :: Lens.Lens' DateMeasureField Prelude.Text
+dateMeasureField_fieldId = Lens.lens (\DateMeasureField' {fieldId} -> fieldId) (\s@DateMeasureField' {} a -> s {fieldId = a} :: DateMeasureField)
+
+-- | The column that is used in the @DateMeasureField@.
+dateMeasureField_column :: Lens.Lens' DateMeasureField ColumnIdentifier
+dateMeasureField_column = Lens.lens (\DateMeasureField' {column} -> column) (\s@DateMeasureField' {} a -> s {column = a} :: DateMeasureField)
+
+instance Data.FromJSON DateMeasureField where
+  parseJSON =
+    Data.withObject
+      "DateMeasureField"
+      ( \x ->
+          DateMeasureField'
+            Prelude.<$> (x Data..:? "AggregationFunction")
+            Prelude.<*> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable DateMeasureField where
+  hashWithSalt _salt DateMeasureField' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationFunction
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData DateMeasureField where
+  rnf DateMeasureField' {..} =
+    Prelude.rnf aggregationFunction
+      `Prelude.seq` Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON DateMeasureField where
+  toJSON DateMeasureField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationFunction" Data..=)
+              Prelude.<$> aggregationFunction,
+            ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimeDefaultValues.hs b/gen/Amazonka/QuickSight/Types/DateTimeDefaultValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimeDefaultValues.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DateTimeDefaultValues
+-- 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.QuickSight.Types.DateTimeDefaultValues 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.QuickSight.Types.DynamicDefaultValue
+import Amazonka.QuickSight.Types.RollingDateConfiguration
+
+-- | The default values of the @DateTimeParameterDeclaration@.
+--
+-- /See:/ 'newDateTimeDefaultValues' smart constructor.
+data DateTimeDefaultValues = DateTimeDefaultValues'
+  { -- | The dynamic value of the @DataTimeDefaultValues@. Different defaults are
+    -- displayed according to users, groups, and values mapping.
+    dynamicValue :: Prelude.Maybe DynamicDefaultValue,
+    -- | The rolling date of the @DataTimeDefaultValues@. The date is determined
+    -- from the dataset based on input expression.
+    rollingDate :: Prelude.Maybe RollingDateConfiguration,
+    -- | The static values of the @DataTimeDefaultValues@.
+    staticValues :: Prelude.Maybe [Data.Sensitive Data.POSIX]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimeDefaultValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dynamicValue', 'dateTimeDefaultValues_dynamicValue' - The dynamic value of the @DataTimeDefaultValues@. Different defaults are
+-- displayed according to users, groups, and values mapping.
+--
+-- 'rollingDate', 'dateTimeDefaultValues_rollingDate' - The rolling date of the @DataTimeDefaultValues@. The date is determined
+-- from the dataset based on input expression.
+--
+-- 'staticValues', 'dateTimeDefaultValues_staticValues' - The static values of the @DataTimeDefaultValues@.
+newDateTimeDefaultValues ::
+  DateTimeDefaultValues
+newDateTimeDefaultValues =
+  DateTimeDefaultValues'
+    { dynamicValue =
+        Prelude.Nothing,
+      rollingDate = Prelude.Nothing,
+      staticValues = Prelude.Nothing
+    }
+
+-- | The dynamic value of the @DataTimeDefaultValues@. Different defaults are
+-- displayed according to users, groups, and values mapping.
+dateTimeDefaultValues_dynamicValue :: Lens.Lens' DateTimeDefaultValues (Prelude.Maybe DynamicDefaultValue)
+dateTimeDefaultValues_dynamicValue = Lens.lens (\DateTimeDefaultValues' {dynamicValue} -> dynamicValue) (\s@DateTimeDefaultValues' {} a -> s {dynamicValue = a} :: DateTimeDefaultValues)
+
+-- | The rolling date of the @DataTimeDefaultValues@. The date is determined
+-- from the dataset based on input expression.
+dateTimeDefaultValues_rollingDate :: Lens.Lens' DateTimeDefaultValues (Prelude.Maybe RollingDateConfiguration)
+dateTimeDefaultValues_rollingDate = Lens.lens (\DateTimeDefaultValues' {rollingDate} -> rollingDate) (\s@DateTimeDefaultValues' {} a -> s {rollingDate = a} :: DateTimeDefaultValues)
+
+-- | The static values of the @DataTimeDefaultValues@.
+dateTimeDefaultValues_staticValues :: Lens.Lens' DateTimeDefaultValues (Prelude.Maybe [Prelude.UTCTime])
+dateTimeDefaultValues_staticValues = Lens.lens (\DateTimeDefaultValues' {staticValues} -> staticValues) (\s@DateTimeDefaultValues' {} a -> s {staticValues = a} :: DateTimeDefaultValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DateTimeDefaultValues where
+  parseJSON =
+    Data.withObject
+      "DateTimeDefaultValues"
+      ( \x ->
+          DateTimeDefaultValues'
+            Prelude.<$> (x Data..:? "DynamicValue")
+            Prelude.<*> (x Data..:? "RollingDate")
+            Prelude.<*> (x Data..:? "StaticValues" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable DateTimeDefaultValues where
+  hashWithSalt _salt DateTimeDefaultValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` dynamicValue
+      `Prelude.hashWithSalt` rollingDate
+      `Prelude.hashWithSalt` staticValues
+
+instance Prelude.NFData DateTimeDefaultValues where
+  rnf DateTimeDefaultValues' {..} =
+    Prelude.rnf dynamicValue
+      `Prelude.seq` Prelude.rnf rollingDate
+      `Prelude.seq` Prelude.rnf staticValues
+
+instance Data.ToJSON DateTimeDefaultValues where
+  toJSON DateTimeDefaultValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DynamicValue" Data..=) Prelude.<$> dynamicValue,
+            ("RollingDate" Data..=) Prelude.<$> rollingDate,
+            ("StaticValues" Data..=) Prelude.<$> staticValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimeFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/DateTimeFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimeFormatConfiguration.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.QuickSight.Types.DateTimeFormatConfiguration
+-- 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.QuickSight.Types.DateTimeFormatConfiguration 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.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumericFormatConfiguration
+
+-- | Formatting configuration for @DateTime@ fields.
+--
+-- /See:/ 'newDateTimeFormatConfiguration' smart constructor.
+data DateTimeFormatConfiguration = DateTimeFormatConfiguration'
+  { -- | Determines the @DateTime@ format.
+    dateTimeFormat :: Prelude.Maybe Prelude.Text,
+    -- | The options that determine the null value format configuration.
+    nullValueFormatConfiguration :: Prelude.Maybe NullValueFormatConfiguration,
+    -- | The formatting configuration for numeric @DateTime@ fields.
+    numericFormatConfiguration :: Prelude.Maybe NumericFormatConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimeFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeFormat', 'dateTimeFormatConfiguration_dateTimeFormat' - Determines the @DateTime@ format.
+--
+-- 'nullValueFormatConfiguration', 'dateTimeFormatConfiguration_nullValueFormatConfiguration' - The options that determine the null value format configuration.
+--
+-- 'numericFormatConfiguration', 'dateTimeFormatConfiguration_numericFormatConfiguration' - The formatting configuration for numeric @DateTime@ fields.
+newDateTimeFormatConfiguration ::
+  DateTimeFormatConfiguration
+newDateTimeFormatConfiguration =
+  DateTimeFormatConfiguration'
+    { dateTimeFormat =
+        Prelude.Nothing,
+      nullValueFormatConfiguration = Prelude.Nothing,
+      numericFormatConfiguration = Prelude.Nothing
+    }
+
+-- | Determines the @DateTime@ format.
+dateTimeFormatConfiguration_dateTimeFormat :: Lens.Lens' DateTimeFormatConfiguration (Prelude.Maybe Prelude.Text)
+dateTimeFormatConfiguration_dateTimeFormat = Lens.lens (\DateTimeFormatConfiguration' {dateTimeFormat} -> dateTimeFormat) (\s@DateTimeFormatConfiguration' {} a -> s {dateTimeFormat = a} :: DateTimeFormatConfiguration)
+
+-- | The options that determine the null value format configuration.
+dateTimeFormatConfiguration_nullValueFormatConfiguration :: Lens.Lens' DateTimeFormatConfiguration (Prelude.Maybe NullValueFormatConfiguration)
+dateTimeFormatConfiguration_nullValueFormatConfiguration = Lens.lens (\DateTimeFormatConfiguration' {nullValueFormatConfiguration} -> nullValueFormatConfiguration) (\s@DateTimeFormatConfiguration' {} a -> s {nullValueFormatConfiguration = a} :: DateTimeFormatConfiguration)
+
+-- | The formatting configuration for numeric @DateTime@ fields.
+dateTimeFormatConfiguration_numericFormatConfiguration :: Lens.Lens' DateTimeFormatConfiguration (Prelude.Maybe NumericFormatConfiguration)
+dateTimeFormatConfiguration_numericFormatConfiguration = Lens.lens (\DateTimeFormatConfiguration' {numericFormatConfiguration} -> numericFormatConfiguration) (\s@DateTimeFormatConfiguration' {} a -> s {numericFormatConfiguration = a} :: DateTimeFormatConfiguration)
+
+instance Data.FromJSON DateTimeFormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "DateTimeFormatConfiguration"
+      ( \x ->
+          DateTimeFormatConfiguration'
+            Prelude.<$> (x Data..:? "DateTimeFormat")
+            Prelude.<*> (x Data..:? "NullValueFormatConfiguration")
+            Prelude.<*> (x Data..:? "NumericFormatConfiguration")
+      )
+
+instance Prelude.Hashable DateTimeFormatConfiguration where
+  hashWithSalt _salt DateTimeFormatConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimeFormat
+      `Prelude.hashWithSalt` nullValueFormatConfiguration
+      `Prelude.hashWithSalt` numericFormatConfiguration
+
+instance Prelude.NFData DateTimeFormatConfiguration where
+  rnf DateTimeFormatConfiguration' {..} =
+    Prelude.rnf dateTimeFormat
+      `Prelude.seq` Prelude.rnf nullValueFormatConfiguration
+      `Prelude.seq` Prelude.rnf numericFormatConfiguration
+
+instance Data.ToJSON DateTimeFormatConfiguration where
+  toJSON DateTimeFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeFormat" Data..=)
+              Prelude.<$> dateTimeFormat,
+            ("NullValueFormatConfiguration" Data..=)
+              Prelude.<$> nullValueFormatConfiguration,
+            ("NumericFormatConfiguration" Data..=)
+              Prelude.<$> numericFormatConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimeHierarchy.hs b/gen/Amazonka/QuickSight/Types/DateTimeHierarchy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimeHierarchy.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DateTimeHierarchy
+-- 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.QuickSight.Types.DateTimeHierarchy 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.QuickSight.Types.DrillDownFilter
+
+-- | The option that determines the hierarchy of any @DateTime@ fields.
+--
+-- /See:/ 'newDateTimeHierarchy' smart constructor.
+data DateTimeHierarchy = DateTimeHierarchy'
+  { -- | The option that determines the drill down filters for the @DateTime@
+    -- hierarchy.
+    drillDownFilters :: Prelude.Maybe [DrillDownFilter],
+    -- | The hierarchy ID of the @DateTime@ hierarchy.
+    hierarchyId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimeHierarchy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'drillDownFilters', 'dateTimeHierarchy_drillDownFilters' - The option that determines the drill down filters for the @DateTime@
+-- hierarchy.
+--
+-- 'hierarchyId', 'dateTimeHierarchy_hierarchyId' - The hierarchy ID of the @DateTime@ hierarchy.
+newDateTimeHierarchy ::
+  -- | 'hierarchyId'
+  Prelude.Text ->
+  DateTimeHierarchy
+newDateTimeHierarchy pHierarchyId_ =
+  DateTimeHierarchy'
+    { drillDownFilters =
+        Prelude.Nothing,
+      hierarchyId = pHierarchyId_
+    }
+
+-- | The option that determines the drill down filters for the @DateTime@
+-- hierarchy.
+dateTimeHierarchy_drillDownFilters :: Lens.Lens' DateTimeHierarchy (Prelude.Maybe [DrillDownFilter])
+dateTimeHierarchy_drillDownFilters = Lens.lens (\DateTimeHierarchy' {drillDownFilters} -> drillDownFilters) (\s@DateTimeHierarchy' {} a -> s {drillDownFilters = a} :: DateTimeHierarchy) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hierarchy ID of the @DateTime@ hierarchy.
+dateTimeHierarchy_hierarchyId :: Lens.Lens' DateTimeHierarchy Prelude.Text
+dateTimeHierarchy_hierarchyId = Lens.lens (\DateTimeHierarchy' {hierarchyId} -> hierarchyId) (\s@DateTimeHierarchy' {} a -> s {hierarchyId = a} :: DateTimeHierarchy)
+
+instance Data.FromJSON DateTimeHierarchy where
+  parseJSON =
+    Data.withObject
+      "DateTimeHierarchy"
+      ( \x ->
+          DateTimeHierarchy'
+            Prelude.<$> ( x
+                            Data..:? "DrillDownFilters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "HierarchyId")
+      )
+
+instance Prelude.Hashable DateTimeHierarchy where
+  hashWithSalt _salt DateTimeHierarchy' {..} =
+    _salt
+      `Prelude.hashWithSalt` drillDownFilters
+      `Prelude.hashWithSalt` hierarchyId
+
+instance Prelude.NFData DateTimeHierarchy where
+  rnf DateTimeHierarchy' {..} =
+    Prelude.rnf drillDownFilters
+      `Prelude.seq` Prelude.rnf hierarchyId
+
+instance Data.ToJSON DateTimeHierarchy where
+  toJSON DateTimeHierarchy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DrillDownFilters" Data..=)
+              Prelude.<$> drillDownFilters,
+            Prelude.Just ("HierarchyId" Data..= hierarchyId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimeParameter.hs b/gen/Amazonka/QuickSight/Types/DateTimeParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimeParameter.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.QuickSight.Types.DateTimeParameter
+-- 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.QuickSight.Types.DateTimeParameter 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 date-time parameter.
+--
+-- /See:/ 'newDateTimeParameter' smart constructor.
+data DateTimeParameter = DateTimeParameter'
+  { -- | A display name for the date-time parameter.
+    name :: Prelude.Text,
+    -- | The values for the date-time parameter.
+    values :: [Data.Sensitive Data.POSIX]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimeParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'dateTimeParameter_name' - A display name for the date-time parameter.
+--
+-- 'values', 'dateTimeParameter_values' - The values for the date-time parameter.
+newDateTimeParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  DateTimeParameter
+newDateTimeParameter pName_ =
+  DateTimeParameter'
+    { name = pName_,
+      values = Prelude.mempty
+    }
+
+-- | A display name for the date-time parameter.
+dateTimeParameter_name :: Lens.Lens' DateTimeParameter Prelude.Text
+dateTimeParameter_name = Lens.lens (\DateTimeParameter' {name} -> name) (\s@DateTimeParameter' {} a -> s {name = a} :: DateTimeParameter)
+
+-- | The values for the date-time parameter.
+dateTimeParameter_values :: Lens.Lens' DateTimeParameter [Prelude.UTCTime]
+dateTimeParameter_values = Lens.lens (\DateTimeParameter' {values} -> values) (\s@DateTimeParameter' {} a -> s {values = a} :: DateTimeParameter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable DateTimeParameter where
+  hashWithSalt _salt DateTimeParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData DateTimeParameter where
+  rnf DateTimeParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON DateTimeParameter where
+  toJSON DateTimeParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimeParameterDeclaration.hs b/gen/Amazonka/QuickSight/Types/DateTimeParameterDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimeParameterDeclaration.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DateTimeParameterDeclaration
+-- 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.QuickSight.Types.DateTimeParameterDeclaration 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.QuickSight.Types.DateTimeDefaultValues
+import Amazonka.QuickSight.Types.DateTimeValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | A parameter declaration for the @DateTime@ data type.
+--
+-- /See:/ 'newDateTimeParameterDeclaration' smart constructor.
+data DateTimeParameterDeclaration = DateTimeParameterDeclaration'
+  { -- | The default values of a parameter. If the parameter is a single-value
+    -- parameter, a maximum of one default value can be provided.
+    defaultValues :: Prelude.Maybe DateTimeDefaultValues,
+    -- | The level of time precision that is used to aggregate @DateTime@ values.
+    timeGranularity :: Prelude.Maybe TimeGranularity,
+    -- | The configuration that defines the default value of a @DateTime@
+    -- parameter when a value has not been set.
+    valueWhenUnset :: Prelude.Maybe DateTimeValueWhenUnsetConfiguration,
+    -- | The name of the parameter that is being declared.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimeParameterDeclaration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultValues', 'dateTimeParameterDeclaration_defaultValues' - The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+--
+-- 'timeGranularity', 'dateTimeParameterDeclaration_timeGranularity' - The level of time precision that is used to aggregate @DateTime@ values.
+--
+-- 'valueWhenUnset', 'dateTimeParameterDeclaration_valueWhenUnset' - The configuration that defines the default value of a @DateTime@
+-- parameter when a value has not been set.
+--
+-- 'name', 'dateTimeParameterDeclaration_name' - The name of the parameter that is being declared.
+newDateTimeParameterDeclaration ::
+  -- | 'name'
+  Prelude.Text ->
+  DateTimeParameterDeclaration
+newDateTimeParameterDeclaration pName_ =
+  DateTimeParameterDeclaration'
+    { defaultValues =
+        Prelude.Nothing,
+      timeGranularity = Prelude.Nothing,
+      valueWhenUnset = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+dateTimeParameterDeclaration_defaultValues :: Lens.Lens' DateTimeParameterDeclaration (Prelude.Maybe DateTimeDefaultValues)
+dateTimeParameterDeclaration_defaultValues = Lens.lens (\DateTimeParameterDeclaration' {defaultValues} -> defaultValues) (\s@DateTimeParameterDeclaration' {} a -> s {defaultValues = a} :: DateTimeParameterDeclaration)
+
+-- | The level of time precision that is used to aggregate @DateTime@ values.
+dateTimeParameterDeclaration_timeGranularity :: Lens.Lens' DateTimeParameterDeclaration (Prelude.Maybe TimeGranularity)
+dateTimeParameterDeclaration_timeGranularity = Lens.lens (\DateTimeParameterDeclaration' {timeGranularity} -> timeGranularity) (\s@DateTimeParameterDeclaration' {} a -> s {timeGranularity = a} :: DateTimeParameterDeclaration)
+
+-- | The configuration that defines the default value of a @DateTime@
+-- parameter when a value has not been set.
+dateTimeParameterDeclaration_valueWhenUnset :: Lens.Lens' DateTimeParameterDeclaration (Prelude.Maybe DateTimeValueWhenUnsetConfiguration)
+dateTimeParameterDeclaration_valueWhenUnset = Lens.lens (\DateTimeParameterDeclaration' {valueWhenUnset} -> valueWhenUnset) (\s@DateTimeParameterDeclaration' {} a -> s {valueWhenUnset = a} :: DateTimeParameterDeclaration)
+
+-- | The name of the parameter that is being declared.
+dateTimeParameterDeclaration_name :: Lens.Lens' DateTimeParameterDeclaration Prelude.Text
+dateTimeParameterDeclaration_name = Lens.lens (\DateTimeParameterDeclaration' {name} -> name) (\s@DateTimeParameterDeclaration' {} a -> s {name = a} :: DateTimeParameterDeclaration)
+
+instance Data.FromJSON DateTimeParameterDeclaration where
+  parseJSON =
+    Data.withObject
+      "DateTimeParameterDeclaration"
+      ( \x ->
+          DateTimeParameterDeclaration'
+            Prelude.<$> (x Data..:? "DefaultValues")
+            Prelude.<*> (x Data..:? "TimeGranularity")
+            Prelude.<*> (x Data..:? "ValueWhenUnset")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance
+  Prelude.Hashable
+    DateTimeParameterDeclaration
+  where
+  hashWithSalt _salt DateTimeParameterDeclaration' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultValues
+      `Prelude.hashWithSalt` timeGranularity
+      `Prelude.hashWithSalt` valueWhenUnset
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DateTimeParameterDeclaration where
+  rnf DateTimeParameterDeclaration' {..} =
+    Prelude.rnf defaultValues
+      `Prelude.seq` Prelude.rnf timeGranularity
+      `Prelude.seq` Prelude.rnf valueWhenUnset
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON DateTimeParameterDeclaration where
+  toJSON DateTimeParameterDeclaration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultValues" Data..=) Prelude.<$> defaultValues,
+            ("TimeGranularity" Data..=)
+              Prelude.<$> timeGranularity,
+            ("ValueWhenUnset" Data..=)
+              Prelude.<$> valueWhenUnset,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimePickerControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/DateTimePickerControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimePickerControlDisplayOptions.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.DateTimePickerControlDisplayOptions
+-- 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.QuickSight.Types.DateTimePickerControlDisplayOptions 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.QuickSight.Types.LabelOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newDateTimePickerControlDisplayOptions' smart constructor.
+data DateTimePickerControlDisplayOptions = DateTimePickerControlDisplayOptions'
+  { -- | Customize how dates are formatted in controls.
+    dateTimeFormat :: Prelude.Maybe Prelude.Text,
+    -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimePickerControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeFormat', 'dateTimePickerControlDisplayOptions_dateTimeFormat' - Customize how dates are formatted in controls.
+--
+-- 'titleOptions', 'dateTimePickerControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newDateTimePickerControlDisplayOptions ::
+  DateTimePickerControlDisplayOptions
+newDateTimePickerControlDisplayOptions =
+  DateTimePickerControlDisplayOptions'
+    { dateTimeFormat =
+        Prelude.Nothing,
+      titleOptions = Prelude.Nothing
+    }
+
+-- | Customize how dates are formatted in controls.
+dateTimePickerControlDisplayOptions_dateTimeFormat :: Lens.Lens' DateTimePickerControlDisplayOptions (Prelude.Maybe Prelude.Text)
+dateTimePickerControlDisplayOptions_dateTimeFormat = Lens.lens (\DateTimePickerControlDisplayOptions' {dateTimeFormat} -> dateTimeFormat) (\s@DateTimePickerControlDisplayOptions' {} a -> s {dateTimeFormat = a} :: DateTimePickerControlDisplayOptions)
+
+-- | The options to configure the title visibility, name, and font size.
+dateTimePickerControlDisplayOptions_titleOptions :: Lens.Lens' DateTimePickerControlDisplayOptions (Prelude.Maybe LabelOptions)
+dateTimePickerControlDisplayOptions_titleOptions = Lens.lens (\DateTimePickerControlDisplayOptions' {titleOptions} -> titleOptions) (\s@DateTimePickerControlDisplayOptions' {} a -> s {titleOptions = a} :: DateTimePickerControlDisplayOptions)
+
+instance
+  Data.FromJSON
+    DateTimePickerControlDisplayOptions
+  where
+  parseJSON =
+    Data.withObject
+      "DateTimePickerControlDisplayOptions"
+      ( \x ->
+          DateTimePickerControlDisplayOptions'
+            Prelude.<$> (x Data..:? "DateTimeFormat")
+            Prelude.<*> (x Data..:? "TitleOptions")
+      )
+
+instance
+  Prelude.Hashable
+    DateTimePickerControlDisplayOptions
+  where
+  hashWithSalt
+    _salt
+    DateTimePickerControlDisplayOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` dateTimeFormat
+        `Prelude.hashWithSalt` titleOptions
+
+instance
+  Prelude.NFData
+    DateTimePickerControlDisplayOptions
+  where
+  rnf DateTimePickerControlDisplayOptions' {..} =
+    Prelude.rnf dateTimeFormat
+      `Prelude.seq` Prelude.rnf titleOptions
+
+instance
+  Data.ToJSON
+    DateTimePickerControlDisplayOptions
+  where
+  toJSON DateTimePickerControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeFormat" Data..=)
+              Prelude.<$> dateTimeFormat,
+            ("TitleOptions" Data..=) Prelude.<$> titleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DateTimeValueWhenUnsetConfiguration.hs b/gen/Amazonka/QuickSight/Types/DateTimeValueWhenUnsetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DateTimeValueWhenUnsetConfiguration.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DateTimeValueWhenUnsetConfiguration
+-- 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.QuickSight.Types.DateTimeValueWhenUnsetConfiguration 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.QuickSight.Types.ValueWhenUnsetOption
+
+-- | The configuration that defines the default value of a @DateTime@
+-- parameter when a value has not been set.
+--
+-- /See:/ 'newDateTimeValueWhenUnsetConfiguration' smart constructor.
+data DateTimeValueWhenUnsetConfiguration = DateTimeValueWhenUnsetConfiguration'
+  { -- | A custom value that\'s used when the value of a parameter isn\'t set.
+    customValue :: Prelude.Maybe (Data.Sensitive Data.POSIX),
+    -- | The built-in options for default values. The value can be one of the
+    -- following:
+    --
+    -- -   @RECOMMENDED@: The recommended value.
+    --
+    -- -   @NULL@: The @NULL@ value.
+    valueWhenUnsetOption :: Prelude.Maybe ValueWhenUnsetOption
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DateTimeValueWhenUnsetConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customValue', 'dateTimeValueWhenUnsetConfiguration_customValue' - A custom value that\'s used when the value of a parameter isn\'t set.
+--
+-- 'valueWhenUnsetOption', 'dateTimeValueWhenUnsetConfiguration_valueWhenUnsetOption' - The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+newDateTimeValueWhenUnsetConfiguration ::
+  DateTimeValueWhenUnsetConfiguration
+newDateTimeValueWhenUnsetConfiguration =
+  DateTimeValueWhenUnsetConfiguration'
+    { customValue =
+        Prelude.Nothing,
+      valueWhenUnsetOption = Prelude.Nothing
+    }
+
+-- | A custom value that\'s used when the value of a parameter isn\'t set.
+dateTimeValueWhenUnsetConfiguration_customValue :: Lens.Lens' DateTimeValueWhenUnsetConfiguration (Prelude.Maybe Prelude.UTCTime)
+dateTimeValueWhenUnsetConfiguration_customValue = Lens.lens (\DateTimeValueWhenUnsetConfiguration' {customValue} -> customValue) (\s@DateTimeValueWhenUnsetConfiguration' {} a -> s {customValue = a} :: DateTimeValueWhenUnsetConfiguration) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Data._Time)
+
+-- | The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+dateTimeValueWhenUnsetConfiguration_valueWhenUnsetOption :: Lens.Lens' DateTimeValueWhenUnsetConfiguration (Prelude.Maybe ValueWhenUnsetOption)
+dateTimeValueWhenUnsetConfiguration_valueWhenUnsetOption = Lens.lens (\DateTimeValueWhenUnsetConfiguration' {valueWhenUnsetOption} -> valueWhenUnsetOption) (\s@DateTimeValueWhenUnsetConfiguration' {} a -> s {valueWhenUnsetOption = a} :: DateTimeValueWhenUnsetConfiguration)
+
+instance
+  Data.FromJSON
+    DateTimeValueWhenUnsetConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DateTimeValueWhenUnsetConfiguration"
+      ( \x ->
+          DateTimeValueWhenUnsetConfiguration'
+            Prelude.<$> (x Data..:? "CustomValue")
+            Prelude.<*> (x Data..:? "ValueWhenUnsetOption")
+      )
+
+instance
+  Prelude.Hashable
+    DateTimeValueWhenUnsetConfiguration
+  where
+  hashWithSalt
+    _salt
+    DateTimeValueWhenUnsetConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customValue
+        `Prelude.hashWithSalt` valueWhenUnsetOption
+
+instance
+  Prelude.NFData
+    DateTimeValueWhenUnsetConfiguration
+  where
+  rnf DateTimeValueWhenUnsetConfiguration' {..} =
+    Prelude.rnf customValue
+      `Prelude.seq` Prelude.rnf valueWhenUnsetOption
+
+instance
+  Data.ToJSON
+    DateTimeValueWhenUnsetConfiguration
+  where
+  toJSON DateTimeValueWhenUnsetConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomValue" Data..=) Prelude.<$> customValue,
+            ("ValueWhenUnsetOption" Data..=)
+              Prelude.<$> valueWhenUnsetOption
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DecimalDefaultValues.hs b/gen/Amazonka/QuickSight/Types/DecimalDefaultValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DecimalDefaultValues.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DecimalDefaultValues
+-- 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.QuickSight.Types.DecimalDefaultValues 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.QuickSight.Types.DynamicDefaultValue
+
+-- | The default values of the @DecimalParameterDeclaration@.
+--
+-- /See:/ 'newDecimalDefaultValues' smart constructor.
+data DecimalDefaultValues = DecimalDefaultValues'
+  { -- | The dynamic value of the @DecimalDefaultValues@. Different defaults are
+    -- displayed according to users, groups, and values mapping.
+    dynamicValue :: Prelude.Maybe DynamicDefaultValue,
+    -- | The static values of the @DecimalDefaultValues@.
+    staticValues :: Prelude.Maybe [Data.Sensitive Prelude.Double]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DecimalDefaultValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dynamicValue', 'decimalDefaultValues_dynamicValue' - The dynamic value of the @DecimalDefaultValues@. Different defaults are
+-- displayed according to users, groups, and values mapping.
+--
+-- 'staticValues', 'decimalDefaultValues_staticValues' - The static values of the @DecimalDefaultValues@.
+newDecimalDefaultValues ::
+  DecimalDefaultValues
+newDecimalDefaultValues =
+  DecimalDefaultValues'
+    { dynamicValue =
+        Prelude.Nothing,
+      staticValues = Prelude.Nothing
+    }
+
+-- | The dynamic value of the @DecimalDefaultValues@. Different defaults are
+-- displayed according to users, groups, and values mapping.
+decimalDefaultValues_dynamicValue :: Lens.Lens' DecimalDefaultValues (Prelude.Maybe DynamicDefaultValue)
+decimalDefaultValues_dynamicValue = Lens.lens (\DecimalDefaultValues' {dynamicValue} -> dynamicValue) (\s@DecimalDefaultValues' {} a -> s {dynamicValue = a} :: DecimalDefaultValues)
+
+-- | The static values of the @DecimalDefaultValues@.
+decimalDefaultValues_staticValues :: Lens.Lens' DecimalDefaultValues (Prelude.Maybe [Prelude.Double])
+decimalDefaultValues_staticValues = Lens.lens (\DecimalDefaultValues' {staticValues} -> staticValues) (\s@DecimalDefaultValues' {} a -> s {staticValues = a} :: DecimalDefaultValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DecimalDefaultValues where
+  parseJSON =
+    Data.withObject
+      "DecimalDefaultValues"
+      ( \x ->
+          DecimalDefaultValues'
+            Prelude.<$> (x Data..:? "DynamicValue")
+            Prelude.<*> (x Data..:? "StaticValues" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable DecimalDefaultValues where
+  hashWithSalt _salt DecimalDefaultValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` dynamicValue
+      `Prelude.hashWithSalt` staticValues
+
+instance Prelude.NFData DecimalDefaultValues where
+  rnf DecimalDefaultValues' {..} =
+    Prelude.rnf dynamicValue
+      `Prelude.seq` Prelude.rnf staticValues
+
+instance Data.ToJSON DecimalDefaultValues where
+  toJSON DecimalDefaultValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DynamicValue" Data..=) Prelude.<$> dynamicValue,
+            ("StaticValues" Data..=) Prelude.<$> staticValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DecimalParameter.hs b/gen/Amazonka/QuickSight/Types/DecimalParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DecimalParameter.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.QuickSight.Types.DecimalParameter
+-- 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.QuickSight.Types.DecimalParameter 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 decimal parameter.
+--
+-- /See:/ 'newDecimalParameter' smart constructor.
+data DecimalParameter = DecimalParameter'
+  { -- | A display name for the decimal parameter.
+    name :: Prelude.Text,
+    -- | The values for the decimal parameter.
+    values :: [Data.Sensitive Prelude.Double]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DecimalParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'decimalParameter_name' - A display name for the decimal parameter.
+--
+-- 'values', 'decimalParameter_values' - The values for the decimal parameter.
+newDecimalParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  DecimalParameter
+newDecimalParameter pName_ =
+  DecimalParameter'
+    { name = pName_,
+      values = Prelude.mempty
+    }
+
+-- | A display name for the decimal parameter.
+decimalParameter_name :: Lens.Lens' DecimalParameter Prelude.Text
+decimalParameter_name = Lens.lens (\DecimalParameter' {name} -> name) (\s@DecimalParameter' {} a -> s {name = a} :: DecimalParameter)
+
+-- | The values for the decimal parameter.
+decimalParameter_values :: Lens.Lens' DecimalParameter [Prelude.Double]
+decimalParameter_values = Lens.lens (\DecimalParameter' {values} -> values) (\s@DecimalParameter' {} a -> s {values = a} :: DecimalParameter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable DecimalParameter where
+  hashWithSalt _salt DecimalParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData DecimalParameter where
+  rnf DecimalParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON DecimalParameter where
+  toJSON DecimalParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DecimalParameterDeclaration.hs b/gen/Amazonka/QuickSight/Types/DecimalParameterDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DecimalParameterDeclaration.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.QuickSight.Types.DecimalParameterDeclaration
+-- 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.QuickSight.Types.DecimalParameterDeclaration 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.QuickSight.Types.DecimalDefaultValues
+import Amazonka.QuickSight.Types.DecimalValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.ParameterValueType
+
+-- | A parameter declaration for the @Decimal@ data type.
+--
+-- /See:/ 'newDecimalParameterDeclaration' smart constructor.
+data DecimalParameterDeclaration = DecimalParameterDeclaration'
+  { -- | The default values of a parameter. If the parameter is a single-value
+    -- parameter, a maximum of one default value can be provided.
+    defaultValues :: Prelude.Maybe DecimalDefaultValues,
+    -- | The configuration that defines the default value of a @Decimal@
+    -- parameter when a value has not been set.
+    valueWhenUnset :: Prelude.Maybe DecimalValueWhenUnsetConfiguration,
+    -- | The value type determines whether the parameter is a single-value or
+    -- multi-value parameter.
+    parameterValueType :: ParameterValueType,
+    -- | The name of the parameter that is being declared.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DecimalParameterDeclaration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultValues', 'decimalParameterDeclaration_defaultValues' - The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+--
+-- 'valueWhenUnset', 'decimalParameterDeclaration_valueWhenUnset' - The configuration that defines the default value of a @Decimal@
+-- parameter when a value has not been set.
+--
+-- 'parameterValueType', 'decimalParameterDeclaration_parameterValueType' - The value type determines whether the parameter is a single-value or
+-- multi-value parameter.
+--
+-- 'name', 'decimalParameterDeclaration_name' - The name of the parameter that is being declared.
+newDecimalParameterDeclaration ::
+  -- | 'parameterValueType'
+  ParameterValueType ->
+  -- | 'name'
+  Prelude.Text ->
+  DecimalParameterDeclaration
+newDecimalParameterDeclaration
+  pParameterValueType_
+  pName_ =
+    DecimalParameterDeclaration'
+      { defaultValues =
+          Prelude.Nothing,
+        valueWhenUnset = Prelude.Nothing,
+        parameterValueType = pParameterValueType_,
+        name = pName_
+      }
+
+-- | The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+decimalParameterDeclaration_defaultValues :: Lens.Lens' DecimalParameterDeclaration (Prelude.Maybe DecimalDefaultValues)
+decimalParameterDeclaration_defaultValues = Lens.lens (\DecimalParameterDeclaration' {defaultValues} -> defaultValues) (\s@DecimalParameterDeclaration' {} a -> s {defaultValues = a} :: DecimalParameterDeclaration)
+
+-- | The configuration that defines the default value of a @Decimal@
+-- parameter when a value has not been set.
+decimalParameterDeclaration_valueWhenUnset :: Lens.Lens' DecimalParameterDeclaration (Prelude.Maybe DecimalValueWhenUnsetConfiguration)
+decimalParameterDeclaration_valueWhenUnset = Lens.lens (\DecimalParameterDeclaration' {valueWhenUnset} -> valueWhenUnset) (\s@DecimalParameterDeclaration' {} a -> s {valueWhenUnset = a} :: DecimalParameterDeclaration)
+
+-- | The value type determines whether the parameter is a single-value or
+-- multi-value parameter.
+decimalParameterDeclaration_parameterValueType :: Lens.Lens' DecimalParameterDeclaration ParameterValueType
+decimalParameterDeclaration_parameterValueType = Lens.lens (\DecimalParameterDeclaration' {parameterValueType} -> parameterValueType) (\s@DecimalParameterDeclaration' {} a -> s {parameterValueType = a} :: DecimalParameterDeclaration)
+
+-- | The name of the parameter that is being declared.
+decimalParameterDeclaration_name :: Lens.Lens' DecimalParameterDeclaration Prelude.Text
+decimalParameterDeclaration_name = Lens.lens (\DecimalParameterDeclaration' {name} -> name) (\s@DecimalParameterDeclaration' {} a -> s {name = a} :: DecimalParameterDeclaration)
+
+instance Data.FromJSON DecimalParameterDeclaration where
+  parseJSON =
+    Data.withObject
+      "DecimalParameterDeclaration"
+      ( \x ->
+          DecimalParameterDeclaration'
+            Prelude.<$> (x Data..:? "DefaultValues")
+            Prelude.<*> (x Data..:? "ValueWhenUnset")
+            Prelude.<*> (x Data..: "ParameterValueType")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable DecimalParameterDeclaration where
+  hashWithSalt _salt DecimalParameterDeclaration' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultValues
+      `Prelude.hashWithSalt` valueWhenUnset
+      `Prelude.hashWithSalt` parameterValueType
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DecimalParameterDeclaration where
+  rnf DecimalParameterDeclaration' {..} =
+    Prelude.rnf defaultValues
+      `Prelude.seq` Prelude.rnf valueWhenUnset
+      `Prelude.seq` Prelude.rnf parameterValueType
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON DecimalParameterDeclaration where
+  toJSON DecimalParameterDeclaration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultValues" Data..=) Prelude.<$> defaultValues,
+            ("ValueWhenUnset" Data..=)
+              Prelude.<$> valueWhenUnset,
+            Prelude.Just
+              ("ParameterValueType" Data..= parameterValueType),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DecimalPlacesConfiguration.hs b/gen/Amazonka/QuickSight/Types/DecimalPlacesConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DecimalPlacesConfiguration.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DecimalPlacesConfiguration
+-- 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.QuickSight.Types.DecimalPlacesConfiguration 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 option that determines the decimal places configuration.
+--
+-- /See:/ 'newDecimalPlacesConfiguration' smart constructor.
+data DecimalPlacesConfiguration = DecimalPlacesConfiguration'
+  { -- | The values of the decimal places.
+    decimalPlaces :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DecimalPlacesConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'decimalPlaces', 'decimalPlacesConfiguration_decimalPlaces' - The values of the decimal places.
+newDecimalPlacesConfiguration ::
+  -- | 'decimalPlaces'
+  Prelude.Natural ->
+  DecimalPlacesConfiguration
+newDecimalPlacesConfiguration pDecimalPlaces_ =
+  DecimalPlacesConfiguration'
+    { decimalPlaces =
+        pDecimalPlaces_
+    }
+
+-- | The values of the decimal places.
+decimalPlacesConfiguration_decimalPlaces :: Lens.Lens' DecimalPlacesConfiguration Prelude.Natural
+decimalPlacesConfiguration_decimalPlaces = Lens.lens (\DecimalPlacesConfiguration' {decimalPlaces} -> decimalPlaces) (\s@DecimalPlacesConfiguration' {} a -> s {decimalPlaces = a} :: DecimalPlacesConfiguration)
+
+instance Data.FromJSON DecimalPlacesConfiguration where
+  parseJSON =
+    Data.withObject
+      "DecimalPlacesConfiguration"
+      ( \x ->
+          DecimalPlacesConfiguration'
+            Prelude.<$> (x Data..: "DecimalPlaces")
+      )
+
+instance Prelude.Hashable DecimalPlacesConfiguration where
+  hashWithSalt _salt DecimalPlacesConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` decimalPlaces
+
+instance Prelude.NFData DecimalPlacesConfiguration where
+  rnf DecimalPlacesConfiguration' {..} =
+    Prelude.rnf decimalPlaces
+
+instance Data.ToJSON DecimalPlacesConfiguration where
+  toJSON DecimalPlacesConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DecimalPlaces" Data..= decimalPlaces)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DecimalValueWhenUnsetConfiguration.hs b/gen/Amazonka/QuickSight/Types/DecimalValueWhenUnsetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DecimalValueWhenUnsetConfiguration.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DecimalValueWhenUnsetConfiguration
+-- 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.QuickSight.Types.DecimalValueWhenUnsetConfiguration 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.QuickSight.Types.ValueWhenUnsetOption
+
+-- | The configuration that defines the default value of a @Decimal@
+-- parameter when a value has not been set.
+--
+-- /See:/ 'newDecimalValueWhenUnsetConfiguration' smart constructor.
+data DecimalValueWhenUnsetConfiguration = DecimalValueWhenUnsetConfiguration'
+  { -- | A custom value that\'s used when the value of a parameter isn\'t set.
+    customValue :: Prelude.Maybe (Data.Sensitive Prelude.Double),
+    -- | The built-in options for default values. The value can be one of the
+    -- following:
+    --
+    -- -   @RECOMMENDED@: The recommended value.
+    --
+    -- -   @NULL@: The @NULL@ value.
+    valueWhenUnsetOption :: Prelude.Maybe ValueWhenUnsetOption
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DecimalValueWhenUnsetConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customValue', 'decimalValueWhenUnsetConfiguration_customValue' - A custom value that\'s used when the value of a parameter isn\'t set.
+--
+-- 'valueWhenUnsetOption', 'decimalValueWhenUnsetConfiguration_valueWhenUnsetOption' - The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+newDecimalValueWhenUnsetConfiguration ::
+  DecimalValueWhenUnsetConfiguration
+newDecimalValueWhenUnsetConfiguration =
+  DecimalValueWhenUnsetConfiguration'
+    { customValue =
+        Prelude.Nothing,
+      valueWhenUnsetOption = Prelude.Nothing
+    }
+
+-- | A custom value that\'s used when the value of a parameter isn\'t set.
+decimalValueWhenUnsetConfiguration_customValue :: Lens.Lens' DecimalValueWhenUnsetConfiguration (Prelude.Maybe Prelude.Double)
+decimalValueWhenUnsetConfiguration_customValue = Lens.lens (\DecimalValueWhenUnsetConfiguration' {customValue} -> customValue) (\s@DecimalValueWhenUnsetConfiguration' {} a -> s {customValue = a} :: DecimalValueWhenUnsetConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+decimalValueWhenUnsetConfiguration_valueWhenUnsetOption :: Lens.Lens' DecimalValueWhenUnsetConfiguration (Prelude.Maybe ValueWhenUnsetOption)
+decimalValueWhenUnsetConfiguration_valueWhenUnsetOption = Lens.lens (\DecimalValueWhenUnsetConfiguration' {valueWhenUnsetOption} -> valueWhenUnsetOption) (\s@DecimalValueWhenUnsetConfiguration' {} a -> s {valueWhenUnsetOption = a} :: DecimalValueWhenUnsetConfiguration)
+
+instance
+  Data.FromJSON
+    DecimalValueWhenUnsetConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DecimalValueWhenUnsetConfiguration"
+      ( \x ->
+          DecimalValueWhenUnsetConfiguration'
+            Prelude.<$> (x Data..:? "CustomValue")
+            Prelude.<*> (x Data..:? "ValueWhenUnsetOption")
+      )
+
+instance
+  Prelude.Hashable
+    DecimalValueWhenUnsetConfiguration
+  where
+  hashWithSalt
+    _salt
+    DecimalValueWhenUnsetConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customValue
+        `Prelude.hashWithSalt` valueWhenUnsetOption
+
+instance
+  Prelude.NFData
+    DecimalValueWhenUnsetConfiguration
+  where
+  rnf DecimalValueWhenUnsetConfiguration' {..} =
+    Prelude.rnf customValue
+      `Prelude.seq` Prelude.rnf valueWhenUnsetOption
+
+instance
+  Data.ToJSON
+    DecimalValueWhenUnsetConfiguration
+  where
+  toJSON DecimalValueWhenUnsetConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomValue" Data..=) Prelude.<$> customValue,
+            ("ValueWhenUnsetOption" Data..=)
+              Prelude.<$> valueWhenUnsetOption
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DefaultFreeFormLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/DefaultFreeFormLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DefaultFreeFormLayoutConfiguration.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.QuickSight.Types.DefaultFreeFormLayoutConfiguration
+-- 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.QuickSight.Types.DefaultFreeFormLayoutConfiguration 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.QuickSight.Types.FreeFormLayoutCanvasSizeOptions
+
+-- | The options that determine the default settings of a free-form layout
+-- configuration.
+--
+-- /See:/ 'newDefaultFreeFormLayoutConfiguration' smart constructor.
+data DefaultFreeFormLayoutConfiguration = DefaultFreeFormLayoutConfiguration'
+  { -- | Determines the screen canvas size options for a free-form layout.
+    canvasSizeOptions :: FreeFormLayoutCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultFreeFormLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'canvasSizeOptions', 'defaultFreeFormLayoutConfiguration_canvasSizeOptions' - Determines the screen canvas size options for a free-form layout.
+newDefaultFreeFormLayoutConfiguration ::
+  -- | 'canvasSizeOptions'
+  FreeFormLayoutCanvasSizeOptions ->
+  DefaultFreeFormLayoutConfiguration
+newDefaultFreeFormLayoutConfiguration
+  pCanvasSizeOptions_ =
+    DefaultFreeFormLayoutConfiguration'
+      { canvasSizeOptions =
+          pCanvasSizeOptions_
+      }
+
+-- | Determines the screen canvas size options for a free-form layout.
+defaultFreeFormLayoutConfiguration_canvasSizeOptions :: Lens.Lens' DefaultFreeFormLayoutConfiguration FreeFormLayoutCanvasSizeOptions
+defaultFreeFormLayoutConfiguration_canvasSizeOptions = Lens.lens (\DefaultFreeFormLayoutConfiguration' {canvasSizeOptions} -> canvasSizeOptions) (\s@DefaultFreeFormLayoutConfiguration' {} a -> s {canvasSizeOptions = a} :: DefaultFreeFormLayoutConfiguration)
+
+instance
+  Data.FromJSON
+    DefaultFreeFormLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DefaultFreeFormLayoutConfiguration"
+      ( \x ->
+          DefaultFreeFormLayoutConfiguration'
+            Prelude.<$> (x Data..: "CanvasSizeOptions")
+      )
+
+instance
+  Prelude.Hashable
+    DefaultFreeFormLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    DefaultFreeFormLayoutConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` canvasSizeOptions
+
+instance
+  Prelude.NFData
+    DefaultFreeFormLayoutConfiguration
+  where
+  rnf DefaultFreeFormLayoutConfiguration' {..} =
+    Prelude.rnf canvasSizeOptions
+
+instance
+  Data.ToJSON
+    DefaultFreeFormLayoutConfiguration
+  where
+  toJSON DefaultFreeFormLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CanvasSizeOptions" Data..= canvasSizeOptions)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DefaultGridLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/DefaultGridLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DefaultGridLayoutConfiguration.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DefaultGridLayoutConfiguration
+-- 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.QuickSight.Types.DefaultGridLayoutConfiguration 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.QuickSight.Types.GridLayoutCanvasSizeOptions
+
+-- | The options that determine the default settings for a grid layout
+-- configuration.
+--
+-- /See:/ 'newDefaultGridLayoutConfiguration' smart constructor.
+data DefaultGridLayoutConfiguration = DefaultGridLayoutConfiguration'
+  { -- | Determines the screen canvas size options for a grid layout.
+    canvasSizeOptions :: GridLayoutCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultGridLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'canvasSizeOptions', 'defaultGridLayoutConfiguration_canvasSizeOptions' - Determines the screen canvas size options for a grid layout.
+newDefaultGridLayoutConfiguration ::
+  -- | 'canvasSizeOptions'
+  GridLayoutCanvasSizeOptions ->
+  DefaultGridLayoutConfiguration
+newDefaultGridLayoutConfiguration pCanvasSizeOptions_ =
+  DefaultGridLayoutConfiguration'
+    { canvasSizeOptions =
+        pCanvasSizeOptions_
+    }
+
+-- | Determines the screen canvas size options for a grid layout.
+defaultGridLayoutConfiguration_canvasSizeOptions :: Lens.Lens' DefaultGridLayoutConfiguration GridLayoutCanvasSizeOptions
+defaultGridLayoutConfiguration_canvasSizeOptions = Lens.lens (\DefaultGridLayoutConfiguration' {canvasSizeOptions} -> canvasSizeOptions) (\s@DefaultGridLayoutConfiguration' {} a -> s {canvasSizeOptions = a} :: DefaultGridLayoutConfiguration)
+
+instance Data.FromJSON DefaultGridLayoutConfiguration where
+  parseJSON =
+    Data.withObject
+      "DefaultGridLayoutConfiguration"
+      ( \x ->
+          DefaultGridLayoutConfiguration'
+            Prelude.<$> (x Data..: "CanvasSizeOptions")
+      )
+
+instance
+  Prelude.Hashable
+    DefaultGridLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    DefaultGridLayoutConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` canvasSizeOptions
+
+instance
+  Prelude.NFData
+    DefaultGridLayoutConfiguration
+  where
+  rnf DefaultGridLayoutConfiguration' {..} =
+    Prelude.rnf canvasSizeOptions
+
+instance Data.ToJSON DefaultGridLayoutConfiguration where
+  toJSON DefaultGridLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CanvasSizeOptions" Data..= canvasSizeOptions)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DefaultInteractiveLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/DefaultInteractiveLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DefaultInteractiveLayoutConfiguration.hs
@@ -0,0 +1,116 @@
+{-# 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.QuickSight.Types.DefaultInteractiveLayoutConfiguration
+-- 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.QuickSight.Types.DefaultInteractiveLayoutConfiguration 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.QuickSight.Types.DefaultFreeFormLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultGridLayoutConfiguration
+
+-- | The options that determine the default settings for interactive layout
+-- configuration.
+--
+-- /See:/ 'newDefaultInteractiveLayoutConfiguration' smart constructor.
+data DefaultInteractiveLayoutConfiguration = DefaultInteractiveLayoutConfiguration'
+  { -- | The options that determine the default settings of a free-form layout
+    -- configuration.
+    freeForm :: Prelude.Maybe DefaultFreeFormLayoutConfiguration,
+    -- | The options that determine the default settings for a grid layout
+    -- configuration.
+    grid :: Prelude.Maybe DefaultGridLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultInteractiveLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'freeForm', 'defaultInteractiveLayoutConfiguration_freeForm' - The options that determine the default settings of a free-form layout
+-- configuration.
+--
+-- 'grid', 'defaultInteractiveLayoutConfiguration_grid' - The options that determine the default settings for a grid layout
+-- configuration.
+newDefaultInteractiveLayoutConfiguration ::
+  DefaultInteractiveLayoutConfiguration
+newDefaultInteractiveLayoutConfiguration =
+  DefaultInteractiveLayoutConfiguration'
+    { freeForm =
+        Prelude.Nothing,
+      grid = Prelude.Nothing
+    }
+
+-- | The options that determine the default settings of a free-form layout
+-- configuration.
+defaultInteractiveLayoutConfiguration_freeForm :: Lens.Lens' DefaultInteractiveLayoutConfiguration (Prelude.Maybe DefaultFreeFormLayoutConfiguration)
+defaultInteractiveLayoutConfiguration_freeForm = Lens.lens (\DefaultInteractiveLayoutConfiguration' {freeForm} -> freeForm) (\s@DefaultInteractiveLayoutConfiguration' {} a -> s {freeForm = a} :: DefaultInteractiveLayoutConfiguration)
+
+-- | The options that determine the default settings for a grid layout
+-- configuration.
+defaultInteractiveLayoutConfiguration_grid :: Lens.Lens' DefaultInteractiveLayoutConfiguration (Prelude.Maybe DefaultGridLayoutConfiguration)
+defaultInteractiveLayoutConfiguration_grid = Lens.lens (\DefaultInteractiveLayoutConfiguration' {grid} -> grid) (\s@DefaultInteractiveLayoutConfiguration' {} a -> s {grid = a} :: DefaultInteractiveLayoutConfiguration)
+
+instance
+  Data.FromJSON
+    DefaultInteractiveLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DefaultInteractiveLayoutConfiguration"
+      ( \x ->
+          DefaultInteractiveLayoutConfiguration'
+            Prelude.<$> (x Data..:? "FreeForm")
+            Prelude.<*> (x Data..:? "Grid")
+      )
+
+instance
+  Prelude.Hashable
+    DefaultInteractiveLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    DefaultInteractiveLayoutConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` freeForm
+        `Prelude.hashWithSalt` grid
+
+instance
+  Prelude.NFData
+    DefaultInteractiveLayoutConfiguration
+  where
+  rnf DefaultInteractiveLayoutConfiguration' {..} =
+    Prelude.rnf freeForm `Prelude.seq` Prelude.rnf grid
+
+instance
+  Data.ToJSON
+    DefaultInteractiveLayoutConfiguration
+  where
+  toJSON DefaultInteractiveLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FreeForm" Data..=) Prelude.<$> freeForm,
+            ("Grid" Data..=) Prelude.<$> grid
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DefaultNewSheetConfiguration.hs b/gen/Amazonka/QuickSight/Types/DefaultNewSheetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DefaultNewSheetConfiguration.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DefaultNewSheetConfiguration
+-- 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.QuickSight.Types.DefaultNewSheetConfiguration 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.QuickSight.Types.DefaultInteractiveLayoutConfiguration
+import Amazonka.QuickSight.Types.DefaultPaginatedLayoutConfiguration
+import Amazonka.QuickSight.Types.SheetContentType
+
+-- | The configuration for default new sheet settings.
+--
+-- /See:/ 'newDefaultNewSheetConfiguration' smart constructor.
+data DefaultNewSheetConfiguration = DefaultNewSheetConfiguration'
+  { -- | The options that determine the default settings for interactive layout
+    -- configuration.
+    interactiveLayoutConfiguration :: Prelude.Maybe DefaultInteractiveLayoutConfiguration,
+    -- | The options that determine the default settings for a paginated layout
+    -- configuration.
+    paginatedLayoutConfiguration :: Prelude.Maybe DefaultPaginatedLayoutConfiguration,
+    -- | The option that determines the sheet content type.
+    sheetContentType :: Prelude.Maybe SheetContentType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultNewSheetConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'interactiveLayoutConfiguration', 'defaultNewSheetConfiguration_interactiveLayoutConfiguration' - The options that determine the default settings for interactive layout
+-- configuration.
+--
+-- 'paginatedLayoutConfiguration', 'defaultNewSheetConfiguration_paginatedLayoutConfiguration' - The options that determine the default settings for a paginated layout
+-- configuration.
+--
+-- 'sheetContentType', 'defaultNewSheetConfiguration_sheetContentType' - The option that determines the sheet content type.
+newDefaultNewSheetConfiguration ::
+  DefaultNewSheetConfiguration
+newDefaultNewSheetConfiguration =
+  DefaultNewSheetConfiguration'
+    { interactiveLayoutConfiguration =
+        Prelude.Nothing,
+      paginatedLayoutConfiguration =
+        Prelude.Nothing,
+      sheetContentType = Prelude.Nothing
+    }
+
+-- | The options that determine the default settings for interactive layout
+-- configuration.
+defaultNewSheetConfiguration_interactiveLayoutConfiguration :: Lens.Lens' DefaultNewSheetConfiguration (Prelude.Maybe DefaultInteractiveLayoutConfiguration)
+defaultNewSheetConfiguration_interactiveLayoutConfiguration = Lens.lens (\DefaultNewSheetConfiguration' {interactiveLayoutConfiguration} -> interactiveLayoutConfiguration) (\s@DefaultNewSheetConfiguration' {} a -> s {interactiveLayoutConfiguration = a} :: DefaultNewSheetConfiguration)
+
+-- | The options that determine the default settings for a paginated layout
+-- configuration.
+defaultNewSheetConfiguration_paginatedLayoutConfiguration :: Lens.Lens' DefaultNewSheetConfiguration (Prelude.Maybe DefaultPaginatedLayoutConfiguration)
+defaultNewSheetConfiguration_paginatedLayoutConfiguration = Lens.lens (\DefaultNewSheetConfiguration' {paginatedLayoutConfiguration} -> paginatedLayoutConfiguration) (\s@DefaultNewSheetConfiguration' {} a -> s {paginatedLayoutConfiguration = a} :: DefaultNewSheetConfiguration)
+
+-- | The option that determines the sheet content type.
+defaultNewSheetConfiguration_sheetContentType :: Lens.Lens' DefaultNewSheetConfiguration (Prelude.Maybe SheetContentType)
+defaultNewSheetConfiguration_sheetContentType = Lens.lens (\DefaultNewSheetConfiguration' {sheetContentType} -> sheetContentType) (\s@DefaultNewSheetConfiguration' {} a -> s {sheetContentType = a} :: DefaultNewSheetConfiguration)
+
+instance Data.FromJSON DefaultNewSheetConfiguration where
+  parseJSON =
+    Data.withObject
+      "DefaultNewSheetConfiguration"
+      ( \x ->
+          DefaultNewSheetConfiguration'
+            Prelude.<$> (x Data..:? "InteractiveLayoutConfiguration")
+            Prelude.<*> (x Data..:? "PaginatedLayoutConfiguration")
+            Prelude.<*> (x Data..:? "SheetContentType")
+      )
+
+instance
+  Prelude.Hashable
+    DefaultNewSheetConfiguration
+  where
+  hashWithSalt _salt DefaultNewSheetConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` interactiveLayoutConfiguration
+      `Prelude.hashWithSalt` paginatedLayoutConfiguration
+      `Prelude.hashWithSalt` sheetContentType
+
+instance Prelude.NFData DefaultNewSheetConfiguration where
+  rnf DefaultNewSheetConfiguration' {..} =
+    Prelude.rnf interactiveLayoutConfiguration
+      `Prelude.seq` Prelude.rnf paginatedLayoutConfiguration
+      `Prelude.seq` Prelude.rnf sheetContentType
+
+instance Data.ToJSON DefaultNewSheetConfiguration where
+  toJSON DefaultNewSheetConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InteractiveLayoutConfiguration" Data..=)
+              Prelude.<$> interactiveLayoutConfiguration,
+            ("PaginatedLayoutConfiguration" Data..=)
+              Prelude.<$> paginatedLayoutConfiguration,
+            ("SheetContentType" Data..=)
+              Prelude.<$> sheetContentType
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DefaultPaginatedLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/DefaultPaginatedLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DefaultPaginatedLayoutConfiguration.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DefaultPaginatedLayoutConfiguration
+-- 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.QuickSight.Types.DefaultPaginatedLayoutConfiguration 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.QuickSight.Types.DefaultSectionBasedLayoutConfiguration
+
+-- | The options that determine the default settings for a paginated layout
+-- configuration.
+--
+-- /See:/ 'newDefaultPaginatedLayoutConfiguration' smart constructor.
+data DefaultPaginatedLayoutConfiguration = DefaultPaginatedLayoutConfiguration'
+  { -- | The options that determine the default settings for a section-based
+    -- layout configuration.
+    sectionBased :: Prelude.Maybe DefaultSectionBasedLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultPaginatedLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sectionBased', 'defaultPaginatedLayoutConfiguration_sectionBased' - The options that determine the default settings for a section-based
+-- layout configuration.
+newDefaultPaginatedLayoutConfiguration ::
+  DefaultPaginatedLayoutConfiguration
+newDefaultPaginatedLayoutConfiguration =
+  DefaultPaginatedLayoutConfiguration'
+    { sectionBased =
+        Prelude.Nothing
+    }
+
+-- | The options that determine the default settings for a section-based
+-- layout configuration.
+defaultPaginatedLayoutConfiguration_sectionBased :: Lens.Lens' DefaultPaginatedLayoutConfiguration (Prelude.Maybe DefaultSectionBasedLayoutConfiguration)
+defaultPaginatedLayoutConfiguration_sectionBased = Lens.lens (\DefaultPaginatedLayoutConfiguration' {sectionBased} -> sectionBased) (\s@DefaultPaginatedLayoutConfiguration' {} a -> s {sectionBased = a} :: DefaultPaginatedLayoutConfiguration)
+
+instance
+  Data.FromJSON
+    DefaultPaginatedLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DefaultPaginatedLayoutConfiguration"
+      ( \x ->
+          DefaultPaginatedLayoutConfiguration'
+            Prelude.<$> (x Data..:? "SectionBased")
+      )
+
+instance
+  Prelude.Hashable
+    DefaultPaginatedLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    DefaultPaginatedLayoutConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` sectionBased
+
+instance
+  Prelude.NFData
+    DefaultPaginatedLayoutConfiguration
+  where
+  rnf DefaultPaginatedLayoutConfiguration' {..} =
+    Prelude.rnf sectionBased
+
+instance
+  Data.ToJSON
+    DefaultPaginatedLayoutConfiguration
+  where
+  toJSON DefaultPaginatedLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("SectionBased" Data..=) Prelude.<$> sectionBased]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DefaultSectionBasedLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/DefaultSectionBasedLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DefaultSectionBasedLayoutConfiguration.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.QuickSight.Types.DefaultSectionBasedLayoutConfiguration
+-- 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.QuickSight.Types.DefaultSectionBasedLayoutConfiguration 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.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions
+
+-- | The options that determine the default settings for a section-based
+-- layout configuration.
+--
+-- /See:/ 'newDefaultSectionBasedLayoutConfiguration' smart constructor.
+data DefaultSectionBasedLayoutConfiguration = DefaultSectionBasedLayoutConfiguration'
+  { -- | Determines the screen canvas size options for a section-based layout.
+    canvasSizeOptions :: SectionBasedLayoutCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultSectionBasedLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'canvasSizeOptions', 'defaultSectionBasedLayoutConfiguration_canvasSizeOptions' - Determines the screen canvas size options for a section-based layout.
+newDefaultSectionBasedLayoutConfiguration ::
+  -- | 'canvasSizeOptions'
+  SectionBasedLayoutCanvasSizeOptions ->
+  DefaultSectionBasedLayoutConfiguration
+newDefaultSectionBasedLayoutConfiguration
+  pCanvasSizeOptions_ =
+    DefaultSectionBasedLayoutConfiguration'
+      { canvasSizeOptions =
+          pCanvasSizeOptions_
+      }
+
+-- | Determines the screen canvas size options for a section-based layout.
+defaultSectionBasedLayoutConfiguration_canvasSizeOptions :: Lens.Lens' DefaultSectionBasedLayoutConfiguration SectionBasedLayoutCanvasSizeOptions
+defaultSectionBasedLayoutConfiguration_canvasSizeOptions = Lens.lens (\DefaultSectionBasedLayoutConfiguration' {canvasSizeOptions} -> canvasSizeOptions) (\s@DefaultSectionBasedLayoutConfiguration' {} a -> s {canvasSizeOptions = a} :: DefaultSectionBasedLayoutConfiguration)
+
+instance
+  Data.FromJSON
+    DefaultSectionBasedLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DefaultSectionBasedLayoutConfiguration"
+      ( \x ->
+          DefaultSectionBasedLayoutConfiguration'
+            Prelude.<$> (x Data..: "CanvasSizeOptions")
+      )
+
+instance
+  Prelude.Hashable
+    DefaultSectionBasedLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    DefaultSectionBasedLayoutConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` canvasSizeOptions
+
+instance
+  Prelude.NFData
+    DefaultSectionBasedLayoutConfiguration
+  where
+  rnf DefaultSectionBasedLayoutConfiguration' {..} =
+    Prelude.rnf canvasSizeOptions
+
+instance
+  Data.ToJSON
+    DefaultSectionBasedLayoutConfiguration
+  where
+  toJSON DefaultSectionBasedLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CanvasSizeOptions" Data..= canvasSizeOptions)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DestinationParameterValueConfiguration.hs b/gen/Amazonka/QuickSight/Types/DestinationParameterValueConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DestinationParameterValueConfiguration.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DestinationParameterValueConfiguration
+-- 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.QuickSight.Types.DestinationParameterValueConfiguration 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.QuickSight.Types.CustomValuesConfiguration
+import Amazonka.QuickSight.Types.SelectAllValueOptions
+
+-- | The configuration of destination parameter values.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newDestinationParameterValueConfiguration' smart constructor.
+data DestinationParameterValueConfiguration = DestinationParameterValueConfiguration'
+  { -- | The configuration of custom values for destination parameter in
+    -- @DestinationParameterValueConfiguration@.
+    customValuesConfiguration :: Prelude.Maybe CustomValuesConfiguration,
+    -- | The configuration that selects all options.
+    selectAllValueOptions :: Prelude.Maybe SelectAllValueOptions,
+    -- | The source field ID of the destination parameter.
+    sourceField :: Prelude.Maybe Prelude.Text,
+    -- | The source parameter name of the destination parameter.
+    sourceParameterName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DestinationParameterValueConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customValuesConfiguration', 'destinationParameterValueConfiguration_customValuesConfiguration' - The configuration of custom values for destination parameter in
+-- @DestinationParameterValueConfiguration@.
+--
+-- 'selectAllValueOptions', 'destinationParameterValueConfiguration_selectAllValueOptions' - The configuration that selects all options.
+--
+-- 'sourceField', 'destinationParameterValueConfiguration_sourceField' - The source field ID of the destination parameter.
+--
+-- 'sourceParameterName', 'destinationParameterValueConfiguration_sourceParameterName' - The source parameter name of the destination parameter.
+newDestinationParameterValueConfiguration ::
+  DestinationParameterValueConfiguration
+newDestinationParameterValueConfiguration =
+  DestinationParameterValueConfiguration'
+    { customValuesConfiguration =
+        Prelude.Nothing,
+      selectAllValueOptions =
+        Prelude.Nothing,
+      sourceField = Prelude.Nothing,
+      sourceParameterName =
+        Prelude.Nothing
+    }
+
+-- | The configuration of custom values for destination parameter in
+-- @DestinationParameterValueConfiguration@.
+destinationParameterValueConfiguration_customValuesConfiguration :: Lens.Lens' DestinationParameterValueConfiguration (Prelude.Maybe CustomValuesConfiguration)
+destinationParameterValueConfiguration_customValuesConfiguration = Lens.lens (\DestinationParameterValueConfiguration' {customValuesConfiguration} -> customValuesConfiguration) (\s@DestinationParameterValueConfiguration' {} a -> s {customValuesConfiguration = a} :: DestinationParameterValueConfiguration)
+
+-- | The configuration that selects all options.
+destinationParameterValueConfiguration_selectAllValueOptions :: Lens.Lens' DestinationParameterValueConfiguration (Prelude.Maybe SelectAllValueOptions)
+destinationParameterValueConfiguration_selectAllValueOptions = Lens.lens (\DestinationParameterValueConfiguration' {selectAllValueOptions} -> selectAllValueOptions) (\s@DestinationParameterValueConfiguration' {} a -> s {selectAllValueOptions = a} :: DestinationParameterValueConfiguration)
+
+-- | The source field ID of the destination parameter.
+destinationParameterValueConfiguration_sourceField :: Lens.Lens' DestinationParameterValueConfiguration (Prelude.Maybe Prelude.Text)
+destinationParameterValueConfiguration_sourceField = Lens.lens (\DestinationParameterValueConfiguration' {sourceField} -> sourceField) (\s@DestinationParameterValueConfiguration' {} a -> s {sourceField = a} :: DestinationParameterValueConfiguration)
+
+-- | The source parameter name of the destination parameter.
+destinationParameterValueConfiguration_sourceParameterName :: Lens.Lens' DestinationParameterValueConfiguration (Prelude.Maybe Prelude.Text)
+destinationParameterValueConfiguration_sourceParameterName = Lens.lens (\DestinationParameterValueConfiguration' {sourceParameterName} -> sourceParameterName) (\s@DestinationParameterValueConfiguration' {} a -> s {sourceParameterName = a} :: DestinationParameterValueConfiguration)
+
+instance
+  Data.FromJSON
+    DestinationParameterValueConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DestinationParameterValueConfiguration"
+      ( \x ->
+          DestinationParameterValueConfiguration'
+            Prelude.<$> (x Data..:? "CustomValuesConfiguration")
+            Prelude.<*> (x Data..:? "SelectAllValueOptions")
+            Prelude.<*> (x Data..:? "SourceField")
+            Prelude.<*> (x Data..:? "SourceParameterName")
+      )
+
+instance
+  Prelude.Hashable
+    DestinationParameterValueConfiguration
+  where
+  hashWithSalt
+    _salt
+    DestinationParameterValueConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customValuesConfiguration
+        `Prelude.hashWithSalt` selectAllValueOptions
+        `Prelude.hashWithSalt` sourceField
+        `Prelude.hashWithSalt` sourceParameterName
+
+instance
+  Prelude.NFData
+    DestinationParameterValueConfiguration
+  where
+  rnf DestinationParameterValueConfiguration' {..} =
+    Prelude.rnf customValuesConfiguration
+      `Prelude.seq` Prelude.rnf selectAllValueOptions
+      `Prelude.seq` Prelude.rnf sourceField
+      `Prelude.seq` Prelude.rnf sourceParameterName
+
+instance
+  Data.ToJSON
+    DestinationParameterValueConfiguration
+  where
+  toJSON DestinationParameterValueConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomValuesConfiguration" Data..=)
+              Prelude.<$> customValuesConfiguration,
+            ("SelectAllValueOptions" Data..=)
+              Prelude.<$> selectAllValueOptions,
+            ("SourceField" Data..=) Prelude.<$> sourceField,
+            ("SourceParameterName" Data..=)
+              Prelude.<$> sourceParameterName
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DimensionField.hs b/gen/Amazonka/QuickSight/Types/DimensionField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DimensionField.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DimensionField
+-- 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.QuickSight.Types.DimensionField 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.QuickSight.Types.CategoricalDimensionField
+import Amazonka.QuickSight.Types.DateDimensionField
+import Amazonka.QuickSight.Types.NumericalDimensionField
+
+-- | The dimension type field.
+--
+-- /See:/ 'newDimensionField' smart constructor.
+data DimensionField = DimensionField'
+  { -- | The dimension type field with categorical type columns.
+    categoricalDimensionField :: Prelude.Maybe CategoricalDimensionField,
+    -- | The dimension type field with date type columns.
+    dateDimensionField :: Prelude.Maybe DateDimensionField,
+    -- | The dimension type field with numerical type columns.
+    numericalDimensionField :: Prelude.Maybe NumericalDimensionField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DimensionField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoricalDimensionField', 'dimensionField_categoricalDimensionField' - The dimension type field with categorical type columns.
+--
+-- 'dateDimensionField', 'dimensionField_dateDimensionField' - The dimension type field with date type columns.
+--
+-- 'numericalDimensionField', 'dimensionField_numericalDimensionField' - The dimension type field with numerical type columns.
+newDimensionField ::
+  DimensionField
+newDimensionField =
+  DimensionField'
+    { categoricalDimensionField =
+        Prelude.Nothing,
+      dateDimensionField = Prelude.Nothing,
+      numericalDimensionField = Prelude.Nothing
+    }
+
+-- | The dimension type field with categorical type columns.
+dimensionField_categoricalDimensionField :: Lens.Lens' DimensionField (Prelude.Maybe CategoricalDimensionField)
+dimensionField_categoricalDimensionField = Lens.lens (\DimensionField' {categoricalDimensionField} -> categoricalDimensionField) (\s@DimensionField' {} a -> s {categoricalDimensionField = a} :: DimensionField)
+
+-- | The dimension type field with date type columns.
+dimensionField_dateDimensionField :: Lens.Lens' DimensionField (Prelude.Maybe DateDimensionField)
+dimensionField_dateDimensionField = Lens.lens (\DimensionField' {dateDimensionField} -> dateDimensionField) (\s@DimensionField' {} a -> s {dateDimensionField = a} :: DimensionField)
+
+-- | The dimension type field with numerical type columns.
+dimensionField_numericalDimensionField :: Lens.Lens' DimensionField (Prelude.Maybe NumericalDimensionField)
+dimensionField_numericalDimensionField = Lens.lens (\DimensionField' {numericalDimensionField} -> numericalDimensionField) (\s@DimensionField' {} a -> s {numericalDimensionField = a} :: DimensionField)
+
+instance Data.FromJSON DimensionField where
+  parseJSON =
+    Data.withObject
+      "DimensionField"
+      ( \x ->
+          DimensionField'
+            Prelude.<$> (x Data..:? "CategoricalDimensionField")
+            Prelude.<*> (x Data..:? "DateDimensionField")
+            Prelude.<*> (x Data..:? "NumericalDimensionField")
+      )
+
+instance Prelude.Hashable DimensionField where
+  hashWithSalt _salt DimensionField' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoricalDimensionField
+      `Prelude.hashWithSalt` dateDimensionField
+      `Prelude.hashWithSalt` numericalDimensionField
+
+instance Prelude.NFData DimensionField where
+  rnf DimensionField' {..} =
+    Prelude.rnf categoricalDimensionField
+      `Prelude.seq` Prelude.rnf dateDimensionField
+      `Prelude.seq` Prelude.rnf numericalDimensionField
+
+instance Data.ToJSON DimensionField where
+  toJSON DimensionField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoricalDimensionField" Data..=)
+              Prelude.<$> categoricalDimensionField,
+            ("DateDimensionField" Data..=)
+              Prelude.<$> dateDimensionField,
+            ("NumericalDimensionField" Data..=)
+              Prelude.<$> numericalDimensionField
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DonutCenterOptions.hs b/gen/Amazonka/QuickSight/Types/DonutCenterOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DonutCenterOptions.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.QuickSight.Types.DonutCenterOptions
+-- 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.QuickSight.Types.DonutCenterOptions 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.QuickSight.Types.Visibility
+
+-- | The label options of the label that is displayed in the center of a
+-- donut chart. This option isn\'t available for pie charts.
+--
+-- /See:/ 'newDonutCenterOptions' smart constructor.
+data DonutCenterOptions = DonutCenterOptions'
+  { -- | Determines the visibility of the label in a donut chart. In the Amazon
+    -- QuickSight console, this option is called @\'Show total\'@.
+    labelVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DonutCenterOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelVisibility', 'donutCenterOptions_labelVisibility' - Determines the visibility of the label in a donut chart. In the Amazon
+-- QuickSight console, this option is called @\'Show total\'@.
+newDonutCenterOptions ::
+  DonutCenterOptions
+newDonutCenterOptions =
+  DonutCenterOptions'
+    { labelVisibility =
+        Prelude.Nothing
+    }
+
+-- | Determines the visibility of the label in a donut chart. In the Amazon
+-- QuickSight console, this option is called @\'Show total\'@.
+donutCenterOptions_labelVisibility :: Lens.Lens' DonutCenterOptions (Prelude.Maybe Visibility)
+donutCenterOptions_labelVisibility = Lens.lens (\DonutCenterOptions' {labelVisibility} -> labelVisibility) (\s@DonutCenterOptions' {} a -> s {labelVisibility = a} :: DonutCenterOptions)
+
+instance Data.FromJSON DonutCenterOptions where
+  parseJSON =
+    Data.withObject
+      "DonutCenterOptions"
+      ( \x ->
+          DonutCenterOptions'
+            Prelude.<$> (x Data..:? "LabelVisibility")
+      )
+
+instance Prelude.Hashable DonutCenterOptions where
+  hashWithSalt _salt DonutCenterOptions' {..} =
+    _salt `Prelude.hashWithSalt` labelVisibility
+
+instance Prelude.NFData DonutCenterOptions where
+  rnf DonutCenterOptions' {..} =
+    Prelude.rnf labelVisibility
+
+instance Data.ToJSON DonutCenterOptions where
+  toJSON DonutCenterOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LabelVisibility" Data..=)
+              Prelude.<$> labelVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DonutOptions.hs b/gen/Amazonka/QuickSight/Types/DonutOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DonutOptions.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DonutOptions
+-- 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.QuickSight.Types.DonutOptions 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.QuickSight.Types.ArcOptions
+import Amazonka.QuickSight.Types.DonutCenterOptions
+
+-- | The options for configuring a donut chart or pie chart.
+--
+-- /See:/ 'newDonutOptions' smart constructor.
+data DonutOptions = DonutOptions'
+  { -- | The option for define the arc of the chart shape. Valid values are as
+    -- follows:
+    --
+    -- -   @WHOLE@ - A pie chart
+    --
+    -- -   @SMALL@- A small-sized donut chart
+    --
+    -- -   @MEDIUM@- A medium-sized donut chart
+    --
+    -- -   @LARGE@- A large-sized donut chart
+    arcOptions :: Prelude.Maybe ArcOptions,
+    -- | The label options of the label that is displayed in the center of a
+    -- donut chart. This option isn\'t available for pie charts.
+    donutCenterOptions :: Prelude.Maybe DonutCenterOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DonutOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arcOptions', 'donutOptions_arcOptions' - The option for define the arc of the chart shape. Valid values are as
+-- follows:
+--
+-- -   @WHOLE@ - A pie chart
+--
+-- -   @SMALL@- A small-sized donut chart
+--
+-- -   @MEDIUM@- A medium-sized donut chart
+--
+-- -   @LARGE@- A large-sized donut chart
+--
+-- 'donutCenterOptions', 'donutOptions_donutCenterOptions' - The label options of the label that is displayed in the center of a
+-- donut chart. This option isn\'t available for pie charts.
+newDonutOptions ::
+  DonutOptions
+newDonutOptions =
+  DonutOptions'
+    { arcOptions = Prelude.Nothing,
+      donutCenterOptions = Prelude.Nothing
+    }
+
+-- | The option for define the arc of the chart shape. Valid values are as
+-- follows:
+--
+-- -   @WHOLE@ - A pie chart
+--
+-- -   @SMALL@- A small-sized donut chart
+--
+-- -   @MEDIUM@- A medium-sized donut chart
+--
+-- -   @LARGE@- A large-sized donut chart
+donutOptions_arcOptions :: Lens.Lens' DonutOptions (Prelude.Maybe ArcOptions)
+donutOptions_arcOptions = Lens.lens (\DonutOptions' {arcOptions} -> arcOptions) (\s@DonutOptions' {} a -> s {arcOptions = a} :: DonutOptions)
+
+-- | The label options of the label that is displayed in the center of a
+-- donut chart. This option isn\'t available for pie charts.
+donutOptions_donutCenterOptions :: Lens.Lens' DonutOptions (Prelude.Maybe DonutCenterOptions)
+donutOptions_donutCenterOptions = Lens.lens (\DonutOptions' {donutCenterOptions} -> donutCenterOptions) (\s@DonutOptions' {} a -> s {donutCenterOptions = a} :: DonutOptions)
+
+instance Data.FromJSON DonutOptions where
+  parseJSON =
+    Data.withObject
+      "DonutOptions"
+      ( \x ->
+          DonutOptions'
+            Prelude.<$> (x Data..:? "ArcOptions")
+            Prelude.<*> (x Data..:? "DonutCenterOptions")
+      )
+
+instance Prelude.Hashable DonutOptions where
+  hashWithSalt _salt DonutOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` arcOptions
+      `Prelude.hashWithSalt` donutCenterOptions
+
+instance Prelude.NFData DonutOptions where
+  rnf DonutOptions' {..} =
+    Prelude.rnf arcOptions
+      `Prelude.seq` Prelude.rnf donutCenterOptions
+
+instance Data.ToJSON DonutOptions where
+  toJSON DonutOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArcOptions" Data..=) Prelude.<$> arcOptions,
+            ("DonutCenterOptions" Data..=)
+              Prelude.<$> donutCenterOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DrillDownFilter.hs b/gen/Amazonka/QuickSight/Types/DrillDownFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DrillDownFilter.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DrillDownFilter
+-- 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.QuickSight.Types.DrillDownFilter 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.QuickSight.Types.CategoryDrillDownFilter
+import Amazonka.QuickSight.Types.NumericEqualityDrillDownFilter
+import Amazonka.QuickSight.Types.TimeRangeDrillDownFilter
+
+-- | The drill down filter for the column hierarchies.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newDrillDownFilter' smart constructor.
+data DrillDownFilter = DrillDownFilter'
+  { -- | The category type drill down filter. This filter is used for string type
+    -- columns.
+    categoryFilter :: Prelude.Maybe CategoryDrillDownFilter,
+    -- | The numeric equality type drill down filter. This filter is used for
+    -- number type columns.
+    numericEqualityFilter :: Prelude.Maybe NumericEqualityDrillDownFilter,
+    -- | The time range drill down filter. This filter is used for date time
+    -- columns.
+    timeRangeFilter :: Prelude.Maybe TimeRangeDrillDownFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DrillDownFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryFilter', 'drillDownFilter_categoryFilter' - The category type drill down filter. This filter is used for string type
+-- columns.
+--
+-- 'numericEqualityFilter', 'drillDownFilter_numericEqualityFilter' - The numeric equality type drill down filter. This filter is used for
+-- number type columns.
+--
+-- 'timeRangeFilter', 'drillDownFilter_timeRangeFilter' - The time range drill down filter. This filter is used for date time
+-- columns.
+newDrillDownFilter ::
+  DrillDownFilter
+newDrillDownFilter =
+  DrillDownFilter'
+    { categoryFilter = Prelude.Nothing,
+      numericEqualityFilter = Prelude.Nothing,
+      timeRangeFilter = Prelude.Nothing
+    }
+
+-- | The category type drill down filter. This filter is used for string type
+-- columns.
+drillDownFilter_categoryFilter :: Lens.Lens' DrillDownFilter (Prelude.Maybe CategoryDrillDownFilter)
+drillDownFilter_categoryFilter = Lens.lens (\DrillDownFilter' {categoryFilter} -> categoryFilter) (\s@DrillDownFilter' {} a -> s {categoryFilter = a} :: DrillDownFilter)
+
+-- | The numeric equality type drill down filter. This filter is used for
+-- number type columns.
+drillDownFilter_numericEqualityFilter :: Lens.Lens' DrillDownFilter (Prelude.Maybe NumericEqualityDrillDownFilter)
+drillDownFilter_numericEqualityFilter = Lens.lens (\DrillDownFilter' {numericEqualityFilter} -> numericEqualityFilter) (\s@DrillDownFilter' {} a -> s {numericEqualityFilter = a} :: DrillDownFilter)
+
+-- | The time range drill down filter. This filter is used for date time
+-- columns.
+drillDownFilter_timeRangeFilter :: Lens.Lens' DrillDownFilter (Prelude.Maybe TimeRangeDrillDownFilter)
+drillDownFilter_timeRangeFilter = Lens.lens (\DrillDownFilter' {timeRangeFilter} -> timeRangeFilter) (\s@DrillDownFilter' {} a -> s {timeRangeFilter = a} :: DrillDownFilter)
+
+instance Data.FromJSON DrillDownFilter where
+  parseJSON =
+    Data.withObject
+      "DrillDownFilter"
+      ( \x ->
+          DrillDownFilter'
+            Prelude.<$> (x Data..:? "CategoryFilter")
+            Prelude.<*> (x Data..:? "NumericEqualityFilter")
+            Prelude.<*> (x Data..:? "TimeRangeFilter")
+      )
+
+instance Prelude.Hashable DrillDownFilter where
+  hashWithSalt _salt DrillDownFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryFilter
+      `Prelude.hashWithSalt` numericEqualityFilter
+      `Prelude.hashWithSalt` timeRangeFilter
+
+instance Prelude.NFData DrillDownFilter where
+  rnf DrillDownFilter' {..} =
+    Prelude.rnf categoryFilter
+      `Prelude.seq` Prelude.rnf numericEqualityFilter
+      `Prelude.seq` Prelude.rnf timeRangeFilter
+
+instance Data.ToJSON DrillDownFilter where
+  toJSON DrillDownFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryFilter" Data..=)
+              Prelude.<$> categoryFilter,
+            ("NumericEqualityFilter" Data..=)
+              Prelude.<$> numericEqualityFilter,
+            ("TimeRangeFilter" Data..=)
+              Prelude.<$> timeRangeFilter
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DropDownControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/DropDownControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DropDownControlDisplayOptions.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.QuickSight.Types.DropDownControlDisplayOptions
+-- 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.QuickSight.Types.DropDownControlDisplayOptions 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.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.ListControlSelectAllOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newDropDownControlDisplayOptions' smart constructor.
+data DropDownControlDisplayOptions = DropDownControlDisplayOptions'
+  { -- | The configuration of the @Select all@ options in a dropdown control.
+    selectAllOptions :: Prelude.Maybe ListControlSelectAllOptions,
+    -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DropDownControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selectAllOptions', 'dropDownControlDisplayOptions_selectAllOptions' - The configuration of the @Select all@ options in a dropdown control.
+--
+-- 'titleOptions', 'dropDownControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newDropDownControlDisplayOptions ::
+  DropDownControlDisplayOptions
+newDropDownControlDisplayOptions =
+  DropDownControlDisplayOptions'
+    { selectAllOptions =
+        Prelude.Nothing,
+      titleOptions = Prelude.Nothing
+    }
+
+-- | The configuration of the @Select all@ options in a dropdown control.
+dropDownControlDisplayOptions_selectAllOptions :: Lens.Lens' DropDownControlDisplayOptions (Prelude.Maybe ListControlSelectAllOptions)
+dropDownControlDisplayOptions_selectAllOptions = Lens.lens (\DropDownControlDisplayOptions' {selectAllOptions} -> selectAllOptions) (\s@DropDownControlDisplayOptions' {} a -> s {selectAllOptions = a} :: DropDownControlDisplayOptions)
+
+-- | The options to configure the title visibility, name, and font size.
+dropDownControlDisplayOptions_titleOptions :: Lens.Lens' DropDownControlDisplayOptions (Prelude.Maybe LabelOptions)
+dropDownControlDisplayOptions_titleOptions = Lens.lens (\DropDownControlDisplayOptions' {titleOptions} -> titleOptions) (\s@DropDownControlDisplayOptions' {} a -> s {titleOptions = a} :: DropDownControlDisplayOptions)
+
+instance Data.FromJSON DropDownControlDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "DropDownControlDisplayOptions"
+      ( \x ->
+          DropDownControlDisplayOptions'
+            Prelude.<$> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..:? "TitleOptions")
+      )
+
+instance
+  Prelude.Hashable
+    DropDownControlDisplayOptions
+  where
+  hashWithSalt _salt DropDownControlDisplayOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` titleOptions
+
+instance Prelude.NFData DropDownControlDisplayOptions where
+  rnf DropDownControlDisplayOptions' {..} =
+    Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf titleOptions
+
+instance Data.ToJSON DropDownControlDisplayOptions where
+  toJSON DropDownControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            ("TitleOptions" Data..=) Prelude.<$> titleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/DynamicDefaultValue.hs b/gen/Amazonka/QuickSight/Types/DynamicDefaultValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/DynamicDefaultValue.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.DynamicDefaultValue
+-- 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.QuickSight.Types.DynamicDefaultValue 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.QuickSight.Types.ColumnIdentifier
+
+-- | Defines different defaults to the users or groups based on mapping.
+--
+-- /See:/ 'newDynamicDefaultValue' smart constructor.
+data DynamicDefaultValue = DynamicDefaultValue'
+  { -- | The column that contains the group name.
+    groupNameColumn :: Prelude.Maybe ColumnIdentifier,
+    -- | The column that contains the username.
+    userNameColumn :: Prelude.Maybe ColumnIdentifier,
+    -- | The column that contains the default value of each user or group.
+    defaultValueColumn :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DynamicDefaultValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupNameColumn', 'dynamicDefaultValue_groupNameColumn' - The column that contains the group name.
+--
+-- 'userNameColumn', 'dynamicDefaultValue_userNameColumn' - The column that contains the username.
+--
+-- 'defaultValueColumn', 'dynamicDefaultValue_defaultValueColumn' - The column that contains the default value of each user or group.
+newDynamicDefaultValue ::
+  -- | 'defaultValueColumn'
+  ColumnIdentifier ->
+  DynamicDefaultValue
+newDynamicDefaultValue pDefaultValueColumn_ =
+  DynamicDefaultValue'
+    { groupNameColumn =
+        Prelude.Nothing,
+      userNameColumn = Prelude.Nothing,
+      defaultValueColumn = pDefaultValueColumn_
+    }
+
+-- | The column that contains the group name.
+dynamicDefaultValue_groupNameColumn :: Lens.Lens' DynamicDefaultValue (Prelude.Maybe ColumnIdentifier)
+dynamicDefaultValue_groupNameColumn = Lens.lens (\DynamicDefaultValue' {groupNameColumn} -> groupNameColumn) (\s@DynamicDefaultValue' {} a -> s {groupNameColumn = a} :: DynamicDefaultValue)
+
+-- | The column that contains the username.
+dynamicDefaultValue_userNameColumn :: Lens.Lens' DynamicDefaultValue (Prelude.Maybe ColumnIdentifier)
+dynamicDefaultValue_userNameColumn = Lens.lens (\DynamicDefaultValue' {userNameColumn} -> userNameColumn) (\s@DynamicDefaultValue' {} a -> s {userNameColumn = a} :: DynamicDefaultValue)
+
+-- | The column that contains the default value of each user or group.
+dynamicDefaultValue_defaultValueColumn :: Lens.Lens' DynamicDefaultValue ColumnIdentifier
+dynamicDefaultValue_defaultValueColumn = Lens.lens (\DynamicDefaultValue' {defaultValueColumn} -> defaultValueColumn) (\s@DynamicDefaultValue' {} a -> s {defaultValueColumn = a} :: DynamicDefaultValue)
+
+instance Data.FromJSON DynamicDefaultValue where
+  parseJSON =
+    Data.withObject
+      "DynamicDefaultValue"
+      ( \x ->
+          DynamicDefaultValue'
+            Prelude.<$> (x Data..:? "GroupNameColumn")
+            Prelude.<*> (x Data..:? "UserNameColumn")
+            Prelude.<*> (x Data..: "DefaultValueColumn")
+      )
+
+instance Prelude.Hashable DynamicDefaultValue where
+  hashWithSalt _salt DynamicDefaultValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupNameColumn
+      `Prelude.hashWithSalt` userNameColumn
+      `Prelude.hashWithSalt` defaultValueColumn
+
+instance Prelude.NFData DynamicDefaultValue where
+  rnf DynamicDefaultValue' {..} =
+    Prelude.rnf groupNameColumn
+      `Prelude.seq` Prelude.rnf userNameColumn
+      `Prelude.seq` Prelude.rnf defaultValueColumn
+
+instance Data.ToJSON DynamicDefaultValue where
+  toJSON DynamicDefaultValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GroupNameColumn" Data..=)
+              Prelude.<$> groupNameColumn,
+            ("UserNameColumn" Data..=)
+              Prelude.<$> userNameColumn,
+            Prelude.Just
+              ("DefaultValueColumn" Data..= defaultValueColumn)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Edition.hs b/gen/Amazonka/QuickSight/Types/Edition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Edition.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.Edition
+-- 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.QuickSight.Types.Edition
+  ( Edition
+      ( ..,
+        Edition_ENTERPRISE,
+        Edition_ENTERPRISE_AND_Q,
+        Edition_STANDARD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Edition = Edition' {fromEdition :: 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 Edition_ENTERPRISE :: Edition
+pattern Edition_ENTERPRISE = Edition' "ENTERPRISE"
+
+pattern Edition_ENTERPRISE_AND_Q :: Edition
+pattern Edition_ENTERPRISE_AND_Q = Edition' "ENTERPRISE_AND_Q"
+
+pattern Edition_STANDARD :: Edition
+pattern Edition_STANDARD = Edition' "STANDARD"
+
+{-# COMPLETE
+  Edition_ENTERPRISE,
+  Edition_ENTERPRISE_AND_Q,
+  Edition_STANDARD,
+  Edition'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/EmbeddingIdentityType.hs b/gen/Amazonka/QuickSight/Types/EmbeddingIdentityType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/EmbeddingIdentityType.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.QuickSight.Types.EmbeddingIdentityType
+-- 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.QuickSight.Types.EmbeddingIdentityType
+  ( EmbeddingIdentityType
+      ( ..,
+        EmbeddingIdentityType_ANONYMOUS,
+        EmbeddingIdentityType_IAM,
+        EmbeddingIdentityType_QUICKSIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EmbeddingIdentityType = EmbeddingIdentityType'
+  { fromEmbeddingIdentityType ::
+      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 EmbeddingIdentityType_ANONYMOUS :: EmbeddingIdentityType
+pattern EmbeddingIdentityType_ANONYMOUS = EmbeddingIdentityType' "ANONYMOUS"
+
+pattern EmbeddingIdentityType_IAM :: EmbeddingIdentityType
+pattern EmbeddingIdentityType_IAM = EmbeddingIdentityType' "IAM"
+
+pattern EmbeddingIdentityType_QUICKSIGHT :: EmbeddingIdentityType
+pattern EmbeddingIdentityType_QUICKSIGHT = EmbeddingIdentityType' "QUICKSIGHT"
+
+{-# COMPLETE
+  EmbeddingIdentityType_ANONYMOUS,
+  EmbeddingIdentityType_IAM,
+  EmbeddingIdentityType_QUICKSIGHT,
+  EmbeddingIdentityType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/EmptyVisual.hs b/gen/Amazonka/QuickSight/Types/EmptyVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/EmptyVisual.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.EmptyVisual
+-- 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.QuickSight.Types.EmptyVisual 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.QuickSight.Types.VisualCustomAction
+
+-- | An empty visual.
+--
+-- Empty visuals are used in layouts but have not been configured to show
+-- any data. A new visual created in the Amazon QuickSight console is
+-- considered an @EmptyVisual@ until a visual type is selected.
+--
+-- /See:/ 'newEmptyVisual' smart constructor.
+data EmptyVisual = EmptyVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text,
+    -- | The data set that is used in the empty visual. Every visual requires a
+    -- dataset to render.
+    dataSetIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EmptyVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'emptyVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'visualId', 'emptyVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+--
+-- 'dataSetIdentifier', 'emptyVisual_dataSetIdentifier' - The data set that is used in the empty visual. Every visual requires a
+-- dataset to render.
+newEmptyVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  -- | 'dataSetIdentifier'
+  Prelude.Text ->
+  EmptyVisual
+newEmptyVisual pVisualId_ pDataSetIdentifier_ =
+  EmptyVisual'
+    { actions = Prelude.Nothing,
+      visualId = pVisualId_,
+      dataSetIdentifier = pDataSetIdentifier_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+emptyVisual_actions :: Lens.Lens' EmptyVisual (Prelude.Maybe [VisualCustomAction])
+emptyVisual_actions = Lens.lens (\EmptyVisual' {actions} -> actions) (\s@EmptyVisual' {} a -> s {actions = a} :: EmptyVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+emptyVisual_visualId :: Lens.Lens' EmptyVisual Prelude.Text
+emptyVisual_visualId = Lens.lens (\EmptyVisual' {visualId} -> visualId) (\s@EmptyVisual' {} a -> s {visualId = a} :: EmptyVisual)
+
+-- | The data set that is used in the empty visual. Every visual requires a
+-- dataset to render.
+emptyVisual_dataSetIdentifier :: Lens.Lens' EmptyVisual Prelude.Text
+emptyVisual_dataSetIdentifier = Lens.lens (\EmptyVisual' {dataSetIdentifier} -> dataSetIdentifier) (\s@EmptyVisual' {} a -> s {dataSetIdentifier = a} :: EmptyVisual)
+
+instance Data.FromJSON EmptyVisual where
+  parseJSON =
+    Data.withObject
+      "EmptyVisual"
+      ( \x ->
+          EmptyVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "VisualId")
+            Prelude.<*> (x Data..: "DataSetIdentifier")
+      )
+
+instance Prelude.Hashable EmptyVisual where
+  hashWithSalt _salt EmptyVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` visualId
+      `Prelude.hashWithSalt` dataSetIdentifier
+
+instance Prelude.NFData EmptyVisual where
+  rnf EmptyVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf visualId
+      `Prelude.seq` Prelude.rnf dataSetIdentifier
+
+instance Data.ToJSON EmptyVisual where
+  toJSON EmptyVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            Prelude.Just ("VisualId" Data..= visualId),
+            Prelude.Just
+              ("DataSetIdentifier" Data..= dataSetIdentifier)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Entity.hs b/gen/Amazonka/QuickSight/Types/Entity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Entity.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.Entity
+-- 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.QuickSight.Types.Entity 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
+
+-- | An object, structure, or sub-structure of an analysis, template, or
+-- dashboard.
+--
+-- /See:/ 'newEntity' smart constructor.
+data Entity = Entity'
+  { -- | The hierarchical path of the entity within the analysis, template, or
+    -- dashboard definition tree.
+    path :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Entity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'path', 'entity_path' - The hierarchical path of the entity within the analysis, template, or
+-- dashboard definition tree.
+newEntity ::
+  Entity
+newEntity = Entity' {path = Prelude.Nothing}
+
+-- | The hierarchical path of the entity within the analysis, template, or
+-- dashboard definition tree.
+entity_path :: Lens.Lens' Entity (Prelude.Maybe Prelude.Text)
+entity_path = Lens.lens (\Entity' {path} -> path) (\s@Entity' {} a -> s {path = a} :: Entity)
+
+instance Data.FromJSON Entity where
+  parseJSON =
+    Data.withObject
+      "Entity"
+      (\x -> Entity' Prelude.<$> (x Data..:? "Path"))
+
+instance Prelude.Hashable Entity where
+  hashWithSalt _salt Entity' {..} =
+    _salt `Prelude.hashWithSalt` path
+
+instance Prelude.NFData Entity where
+  rnf Entity' {..} = Prelude.rnf path
diff --git a/gen/Amazonka/QuickSight/Types/ErrorInfo.hs b/gen/Amazonka/QuickSight/Types/ErrorInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ErrorInfo.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.QuickSight.Types.ErrorInfo
+-- 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.QuickSight.Types.ErrorInfo 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.QuickSight.Types.IngestionErrorType
+
+-- | Error information for the SPICE ingestion of a dataset.
+--
+-- /See:/ 'newErrorInfo' smart constructor.
+data ErrorInfo = ErrorInfo'
+  { -- | Error message.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | Error type.
+    type' :: Prelude.Maybe IngestionErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ErrorInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'errorInfo_message' - Error message.
+--
+-- 'type'', 'errorInfo_type' - Error type.
+newErrorInfo ::
+  ErrorInfo
+newErrorInfo =
+  ErrorInfo'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Error message.
+errorInfo_message :: Lens.Lens' ErrorInfo (Prelude.Maybe Prelude.Text)
+errorInfo_message = Lens.lens (\ErrorInfo' {message} -> message) (\s@ErrorInfo' {} a -> s {message = a} :: ErrorInfo)
+
+-- | Error type.
+errorInfo_type :: Lens.Lens' ErrorInfo (Prelude.Maybe IngestionErrorType)
+errorInfo_type = Lens.lens (\ErrorInfo' {type'} -> type') (\s@ErrorInfo' {} a -> s {type' = a} :: ErrorInfo)
+
+instance Data.FromJSON ErrorInfo where
+  parseJSON =
+    Data.withObject
+      "ErrorInfo"
+      ( \x ->
+          ErrorInfo'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ErrorInfo where
+  hashWithSalt _salt ErrorInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ErrorInfo where
+  rnf ErrorInfo' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/QuickSight/Types/ExasolParameters.hs b/gen/Amazonka/QuickSight/Types/ExasolParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ExasolParameters.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ExasolParameters
+-- 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.QuickSight.Types.ExasolParameters 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 required parameters for connecting to an Exasol data source.
+--
+-- /See:/ 'newExasolParameters' smart constructor.
+data ExasolParameters = ExasolParameters'
+  { -- | The hostname or IP address of the Exasol data source.
+    host :: Prelude.Text,
+    -- | The port for the Exasol data source.
+    port :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExasolParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'exasolParameters_host' - The hostname or IP address of the Exasol data source.
+--
+-- 'port', 'exasolParameters_port' - The port for the Exasol data source.
+newExasolParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  ExasolParameters
+newExasolParameters pHost_ pPort_ =
+  ExasolParameters' {host = pHost_, port = pPort_}
+
+-- | The hostname or IP address of the Exasol data source.
+exasolParameters_host :: Lens.Lens' ExasolParameters Prelude.Text
+exasolParameters_host = Lens.lens (\ExasolParameters' {host} -> host) (\s@ExasolParameters' {} a -> s {host = a} :: ExasolParameters)
+
+-- | The port for the Exasol data source.
+exasolParameters_port :: Lens.Lens' ExasolParameters Prelude.Natural
+exasolParameters_port = Lens.lens (\ExasolParameters' {port} -> port) (\s@ExasolParameters' {} a -> s {port = a} :: ExasolParameters)
+
+instance Data.FromJSON ExasolParameters where
+  parseJSON =
+    Data.withObject
+      "ExasolParameters"
+      ( \x ->
+          ExasolParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+      )
+
+instance Prelude.Hashable ExasolParameters where
+  hashWithSalt _salt ExasolParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+
+instance Prelude.NFData ExasolParameters where
+  rnf ExasolParameters' {..} =
+    Prelude.rnf host `Prelude.seq` Prelude.rnf port
+
+instance Data.ToJSON ExasolParameters where
+  toJSON ExasolParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ExcludePeriodConfiguration.hs b/gen/Amazonka/QuickSight/Types/ExcludePeriodConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ExcludePeriodConfiguration.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ExcludePeriodConfiguration
+-- 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.QuickSight.Types.ExcludePeriodConfiguration 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.QuickSight.Types.TimeGranularity
+import Amazonka.QuickSight.Types.WidgetStatus
+
+-- | The exclude period of @TimeRangeFilter@ or @RelativeDatesFilter@.
+--
+-- /See:/ 'newExcludePeriodConfiguration' smart constructor.
+data ExcludePeriodConfiguration = ExcludePeriodConfiguration'
+  { -- | The status of the exclude period. Choose from the following options:
+    --
+    -- -   @ENABLED@
+    --
+    -- -   @DISABLED@
+    status :: Prelude.Maybe WidgetStatus,
+    -- | The amount or number of the exclude period.
+    amount :: Prelude.Int,
+    -- | The granularity or unit (day, month, year) of the exclude period.
+    granularity :: TimeGranularity
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExcludePeriodConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'excludePeriodConfiguration_status' - The status of the exclude period. Choose from the following options:
+--
+-- -   @ENABLED@
+--
+-- -   @DISABLED@
+--
+-- 'amount', 'excludePeriodConfiguration_amount' - The amount or number of the exclude period.
+--
+-- 'granularity', 'excludePeriodConfiguration_granularity' - The granularity or unit (day, month, year) of the exclude period.
+newExcludePeriodConfiguration ::
+  -- | 'amount'
+  Prelude.Int ->
+  -- | 'granularity'
+  TimeGranularity ->
+  ExcludePeriodConfiguration
+newExcludePeriodConfiguration pAmount_ pGranularity_ =
+  ExcludePeriodConfiguration'
+    { status =
+        Prelude.Nothing,
+      amount = pAmount_,
+      granularity = pGranularity_
+    }
+
+-- | The status of the exclude period. Choose from the following options:
+--
+-- -   @ENABLED@
+--
+-- -   @DISABLED@
+excludePeriodConfiguration_status :: Lens.Lens' ExcludePeriodConfiguration (Prelude.Maybe WidgetStatus)
+excludePeriodConfiguration_status = Lens.lens (\ExcludePeriodConfiguration' {status} -> status) (\s@ExcludePeriodConfiguration' {} a -> s {status = a} :: ExcludePeriodConfiguration)
+
+-- | The amount or number of the exclude period.
+excludePeriodConfiguration_amount :: Lens.Lens' ExcludePeriodConfiguration Prelude.Int
+excludePeriodConfiguration_amount = Lens.lens (\ExcludePeriodConfiguration' {amount} -> amount) (\s@ExcludePeriodConfiguration' {} a -> s {amount = a} :: ExcludePeriodConfiguration)
+
+-- | The granularity or unit (day, month, year) of the exclude period.
+excludePeriodConfiguration_granularity :: Lens.Lens' ExcludePeriodConfiguration TimeGranularity
+excludePeriodConfiguration_granularity = Lens.lens (\ExcludePeriodConfiguration' {granularity} -> granularity) (\s@ExcludePeriodConfiguration' {} a -> s {granularity = a} :: ExcludePeriodConfiguration)
+
+instance Data.FromJSON ExcludePeriodConfiguration where
+  parseJSON =
+    Data.withObject
+      "ExcludePeriodConfiguration"
+      ( \x ->
+          ExcludePeriodConfiguration'
+            Prelude.<$> (x Data..:? "Status")
+            Prelude.<*> (x Data..: "Amount")
+            Prelude.<*> (x Data..: "Granularity")
+      )
+
+instance Prelude.Hashable ExcludePeriodConfiguration where
+  hashWithSalt _salt ExcludePeriodConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` amount
+      `Prelude.hashWithSalt` granularity
+
+instance Prelude.NFData ExcludePeriodConfiguration where
+  rnf ExcludePeriodConfiguration' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf amount
+      `Prelude.seq` Prelude.rnf granularity
+
+instance Data.ToJSON ExcludePeriodConfiguration where
+  toJSON ExcludePeriodConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just ("Amount" Data..= amount),
+            Prelude.Just ("Granularity" Data..= granularity)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ExplicitHierarchy.hs b/gen/Amazonka/QuickSight/Types/ExplicitHierarchy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ExplicitHierarchy.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ExplicitHierarchy
+-- 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.QuickSight.Types.ExplicitHierarchy 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.DrillDownFilter
+
+-- | The option that determines the hierarchy of the fields that are built
+-- within a visual\'s field wells. These fields can\'t be duplicated to
+-- other visuals.
+--
+-- /See:/ 'newExplicitHierarchy' smart constructor.
+data ExplicitHierarchy = ExplicitHierarchy'
+  { -- | The option that determines the drill down filters for the explicit
+    -- hierarchy.
+    drillDownFilters :: Prelude.Maybe [DrillDownFilter],
+    -- | The hierarchy ID of the explicit hierarchy.
+    hierarchyId :: Prelude.Text,
+    -- | The list of columns that define the explicit hierarchy.
+    columns :: Prelude.NonEmpty ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExplicitHierarchy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'drillDownFilters', 'explicitHierarchy_drillDownFilters' - The option that determines the drill down filters for the explicit
+-- hierarchy.
+--
+-- 'hierarchyId', 'explicitHierarchy_hierarchyId' - The hierarchy ID of the explicit hierarchy.
+--
+-- 'columns', 'explicitHierarchy_columns' - The list of columns that define the explicit hierarchy.
+newExplicitHierarchy ::
+  -- | 'hierarchyId'
+  Prelude.Text ->
+  -- | 'columns'
+  Prelude.NonEmpty ColumnIdentifier ->
+  ExplicitHierarchy
+newExplicitHierarchy pHierarchyId_ pColumns_ =
+  ExplicitHierarchy'
+    { drillDownFilters =
+        Prelude.Nothing,
+      hierarchyId = pHierarchyId_,
+      columns = Lens.coerced Lens.# pColumns_
+    }
+
+-- | The option that determines the drill down filters for the explicit
+-- hierarchy.
+explicitHierarchy_drillDownFilters :: Lens.Lens' ExplicitHierarchy (Prelude.Maybe [DrillDownFilter])
+explicitHierarchy_drillDownFilters = Lens.lens (\ExplicitHierarchy' {drillDownFilters} -> drillDownFilters) (\s@ExplicitHierarchy' {} a -> s {drillDownFilters = a} :: ExplicitHierarchy) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hierarchy ID of the explicit hierarchy.
+explicitHierarchy_hierarchyId :: Lens.Lens' ExplicitHierarchy Prelude.Text
+explicitHierarchy_hierarchyId = Lens.lens (\ExplicitHierarchy' {hierarchyId} -> hierarchyId) (\s@ExplicitHierarchy' {} a -> s {hierarchyId = a} :: ExplicitHierarchy)
+
+-- | The list of columns that define the explicit hierarchy.
+explicitHierarchy_columns :: Lens.Lens' ExplicitHierarchy (Prelude.NonEmpty ColumnIdentifier)
+explicitHierarchy_columns = Lens.lens (\ExplicitHierarchy' {columns} -> columns) (\s@ExplicitHierarchy' {} a -> s {columns = a} :: ExplicitHierarchy) Prelude.. Lens.coerced
+
+instance Data.FromJSON ExplicitHierarchy where
+  parseJSON =
+    Data.withObject
+      "ExplicitHierarchy"
+      ( \x ->
+          ExplicitHierarchy'
+            Prelude.<$> ( x
+                            Data..:? "DrillDownFilters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "HierarchyId")
+            Prelude.<*> (x Data..: "Columns")
+      )
+
+instance Prelude.Hashable ExplicitHierarchy where
+  hashWithSalt _salt ExplicitHierarchy' {..} =
+    _salt
+      `Prelude.hashWithSalt` drillDownFilters
+      `Prelude.hashWithSalt` hierarchyId
+      `Prelude.hashWithSalt` columns
+
+instance Prelude.NFData ExplicitHierarchy where
+  rnf ExplicitHierarchy' {..} =
+    Prelude.rnf drillDownFilters
+      `Prelude.seq` Prelude.rnf hierarchyId
+      `Prelude.seq` Prelude.rnf columns
+
+instance Data.ToJSON ExplicitHierarchy where
+  toJSON ExplicitHierarchy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DrillDownFilters" Data..=)
+              Prelude.<$> drillDownFilters,
+            Prelude.Just ("HierarchyId" Data..= hierarchyId),
+            Prelude.Just ("Columns" Data..= columns)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ExportHiddenFieldsOption.hs b/gen/Amazonka/QuickSight/Types/ExportHiddenFieldsOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ExportHiddenFieldsOption.hs
@@ -0,0 +1,71 @@
+{-# 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.QuickSight.Types.ExportHiddenFieldsOption
+-- 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.QuickSight.Types.ExportHiddenFieldsOption 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.QuickSight.Types.DashboardBehavior
+
+-- |
+--
+-- /See:/ 'newExportHiddenFieldsOption' smart constructor.
+data ExportHiddenFieldsOption = ExportHiddenFieldsOption'
+  { availabilityStatus :: Prelude.Maybe DashboardBehavior
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportHiddenFieldsOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'availabilityStatus', 'exportHiddenFieldsOption_availabilityStatus' -
+newExportHiddenFieldsOption ::
+  ExportHiddenFieldsOption
+newExportHiddenFieldsOption =
+  ExportHiddenFieldsOption'
+    { availabilityStatus =
+        Prelude.Nothing
+    }
+
+exportHiddenFieldsOption_availabilityStatus :: Lens.Lens' ExportHiddenFieldsOption (Prelude.Maybe DashboardBehavior)
+exportHiddenFieldsOption_availabilityStatus = Lens.lens (\ExportHiddenFieldsOption' {availabilityStatus} -> availabilityStatus) (\s@ExportHiddenFieldsOption' {} a -> s {availabilityStatus = a} :: ExportHiddenFieldsOption)
+
+instance Prelude.Hashable ExportHiddenFieldsOption where
+  hashWithSalt _salt ExportHiddenFieldsOption' {..} =
+    _salt `Prelude.hashWithSalt` availabilityStatus
+
+instance Prelude.NFData ExportHiddenFieldsOption where
+  rnf ExportHiddenFieldsOption' {..} =
+    Prelude.rnf availabilityStatus
+
+instance Data.ToJSON ExportHiddenFieldsOption where
+  toJSON ExportHiddenFieldsOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AvailabilityStatus" Data..=)
+              Prelude.<$> availabilityStatus
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ExportToCSVOption.hs b/gen/Amazonka/QuickSight/Types/ExportToCSVOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ExportToCSVOption.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.ExportToCSVOption
+-- 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.QuickSight.Types.ExportToCSVOption 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.QuickSight.Types.DashboardBehavior
+
+-- | Export to .csv option.
+--
+-- /See:/ 'newExportToCSVOption' smart constructor.
+data ExportToCSVOption = ExportToCSVOption'
+  { -- | Availability status.
+    availabilityStatus :: Prelude.Maybe DashboardBehavior
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportToCSVOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'availabilityStatus', 'exportToCSVOption_availabilityStatus' - Availability status.
+newExportToCSVOption ::
+  ExportToCSVOption
+newExportToCSVOption =
+  ExportToCSVOption'
+    { availabilityStatus =
+        Prelude.Nothing
+    }
+
+-- | Availability status.
+exportToCSVOption_availabilityStatus :: Lens.Lens' ExportToCSVOption (Prelude.Maybe DashboardBehavior)
+exportToCSVOption_availabilityStatus = Lens.lens (\ExportToCSVOption' {availabilityStatus} -> availabilityStatus) (\s@ExportToCSVOption' {} a -> s {availabilityStatus = a} :: ExportToCSVOption)
+
+instance Prelude.Hashable ExportToCSVOption where
+  hashWithSalt _salt ExportToCSVOption' {..} =
+    _salt `Prelude.hashWithSalt` availabilityStatus
+
+instance Prelude.NFData ExportToCSVOption where
+  rnf ExportToCSVOption' {..} =
+    Prelude.rnf availabilityStatus
+
+instance Data.ToJSON ExportToCSVOption where
+  toJSON ExportToCSVOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AvailabilityStatus" Data..=)
+              Prelude.<$> availabilityStatus
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldBasedTooltip.hs b/gen/Amazonka/QuickSight/Types/FieldBasedTooltip.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldBasedTooltip.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FieldBasedTooltip
+-- 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.QuickSight.Types.FieldBasedTooltip 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.QuickSight.Types.TooltipItem
+import Amazonka.QuickSight.Types.TooltipTitleType
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The setup for the detailed tooltip.
+--
+-- /See:/ 'newFieldBasedTooltip' smart constructor.
+data FieldBasedTooltip = FieldBasedTooltip'
+  { -- | The visibility of @Show aggregations@.
+    aggregationVisibility :: Prelude.Maybe Visibility,
+    -- | The fields configuration in the tooltip.
+    tooltipFields :: Prelude.Maybe [TooltipItem],
+    -- | The type for the >tooltip title. Choose one of the following options:
+    --
+    -- -   @NONE@: Doesn\'t use the primary value as the title.
+    --
+    -- -   @PRIMARY_VALUE@: Uses primary value as the title.
+    tooltipTitleType :: Prelude.Maybe TooltipTitleType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldBasedTooltip' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationVisibility', 'fieldBasedTooltip_aggregationVisibility' - The visibility of @Show aggregations@.
+--
+-- 'tooltipFields', 'fieldBasedTooltip_tooltipFields' - The fields configuration in the tooltip.
+--
+-- 'tooltipTitleType', 'fieldBasedTooltip_tooltipTitleType' - The type for the >tooltip title. Choose one of the following options:
+--
+-- -   @NONE@: Doesn\'t use the primary value as the title.
+--
+-- -   @PRIMARY_VALUE@: Uses primary value as the title.
+newFieldBasedTooltip ::
+  FieldBasedTooltip
+newFieldBasedTooltip =
+  FieldBasedTooltip'
+    { aggregationVisibility =
+        Prelude.Nothing,
+      tooltipFields = Prelude.Nothing,
+      tooltipTitleType = Prelude.Nothing
+    }
+
+-- | The visibility of @Show aggregations@.
+fieldBasedTooltip_aggregationVisibility :: Lens.Lens' FieldBasedTooltip (Prelude.Maybe Visibility)
+fieldBasedTooltip_aggregationVisibility = Lens.lens (\FieldBasedTooltip' {aggregationVisibility} -> aggregationVisibility) (\s@FieldBasedTooltip' {} a -> s {aggregationVisibility = a} :: FieldBasedTooltip)
+
+-- | The fields configuration in the tooltip.
+fieldBasedTooltip_tooltipFields :: Lens.Lens' FieldBasedTooltip (Prelude.Maybe [TooltipItem])
+fieldBasedTooltip_tooltipFields = Lens.lens (\FieldBasedTooltip' {tooltipFields} -> tooltipFields) (\s@FieldBasedTooltip' {} a -> s {tooltipFields = a} :: FieldBasedTooltip) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type for the >tooltip title. Choose one of the following options:
+--
+-- -   @NONE@: Doesn\'t use the primary value as the title.
+--
+-- -   @PRIMARY_VALUE@: Uses primary value as the title.
+fieldBasedTooltip_tooltipTitleType :: Lens.Lens' FieldBasedTooltip (Prelude.Maybe TooltipTitleType)
+fieldBasedTooltip_tooltipTitleType = Lens.lens (\FieldBasedTooltip' {tooltipTitleType} -> tooltipTitleType) (\s@FieldBasedTooltip' {} a -> s {tooltipTitleType = a} :: FieldBasedTooltip)
+
+instance Data.FromJSON FieldBasedTooltip where
+  parseJSON =
+    Data.withObject
+      "FieldBasedTooltip"
+      ( \x ->
+          FieldBasedTooltip'
+            Prelude.<$> (x Data..:? "AggregationVisibility")
+            Prelude.<*> (x Data..:? "TooltipFields" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TooltipTitleType")
+      )
+
+instance Prelude.Hashable FieldBasedTooltip where
+  hashWithSalt _salt FieldBasedTooltip' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationVisibility
+      `Prelude.hashWithSalt` tooltipFields
+      `Prelude.hashWithSalt` tooltipTitleType
+
+instance Prelude.NFData FieldBasedTooltip where
+  rnf FieldBasedTooltip' {..} =
+    Prelude.rnf aggregationVisibility
+      `Prelude.seq` Prelude.rnf tooltipFields
+      `Prelude.seq` Prelude.rnf tooltipTitleType
+
+instance Data.ToJSON FieldBasedTooltip where
+  toJSON FieldBasedTooltip' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationVisibility" Data..=)
+              Prelude.<$> aggregationVisibility,
+            ("TooltipFields" Data..=) Prelude.<$> tooltipFields,
+            ("TooltipTitleType" Data..=)
+              Prelude.<$> tooltipTitleType
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldFolder.hs b/gen/Amazonka/QuickSight/Types/FieldFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldFolder.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.QuickSight.Types.FieldFolder
+-- 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.QuickSight.Types.FieldFolder 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 FieldFolder element is a folder that contains fields and nested
+-- subfolders.
+--
+-- /See:/ 'newFieldFolder' smart constructor.
+data FieldFolder = FieldFolder'
+  { -- | A folder has a list of columns. A column can only be in one folder.
+    columns :: Prelude.Maybe [Prelude.Text],
+    -- | The description for a field folder.
+    description :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldFolder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columns', 'fieldFolder_columns' - A folder has a list of columns. A column can only be in one folder.
+--
+-- 'description', 'fieldFolder_description' - The description for a field folder.
+newFieldFolder ::
+  FieldFolder
+newFieldFolder =
+  FieldFolder'
+    { columns = Prelude.Nothing,
+      description = Prelude.Nothing
+    }
+
+-- | A folder has a list of columns. A column can only be in one folder.
+fieldFolder_columns :: Lens.Lens' FieldFolder (Prelude.Maybe [Prelude.Text])
+fieldFolder_columns = Lens.lens (\FieldFolder' {columns} -> columns) (\s@FieldFolder' {} a -> s {columns = a} :: FieldFolder) Prelude.. Lens.mapping Lens.coerced
+
+-- | The description for a field folder.
+fieldFolder_description :: Lens.Lens' FieldFolder (Prelude.Maybe Prelude.Text)
+fieldFolder_description = Lens.lens (\FieldFolder' {description} -> description) (\s@FieldFolder' {} a -> s {description = a} :: FieldFolder)
+
+instance Data.FromJSON FieldFolder where
+  parseJSON =
+    Data.withObject
+      "FieldFolder"
+      ( \x ->
+          FieldFolder'
+            Prelude.<$> (x Data..:? "columns" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "description")
+      )
+
+instance Prelude.Hashable FieldFolder where
+  hashWithSalt _salt FieldFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` columns
+      `Prelude.hashWithSalt` description
+
+instance Prelude.NFData FieldFolder where
+  rnf FieldFolder' {..} =
+    Prelude.rnf columns
+      `Prelude.seq` Prelude.rnf description
+
+instance Data.ToJSON FieldFolder where
+  toJSON FieldFolder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("columns" Data..=) Prelude.<$> columns,
+            ("description" Data..=) Prelude.<$> description
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldLabelType.hs b/gen/Amazonka/QuickSight/Types/FieldLabelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldLabelType.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.QuickSight.Types.FieldLabelType
+-- 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.QuickSight.Types.FieldLabelType 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.QuickSight.Types.Visibility
+
+-- | The field label type.
+--
+-- /See:/ 'newFieldLabelType' smart constructor.
+data FieldLabelType = FieldLabelType'
+  { -- | Indicates the field that is targeted by the field label.
+    fieldId :: Prelude.Maybe Prelude.Text,
+    -- | The visibility of the field label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldLabelType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'fieldLabelType_fieldId' - Indicates the field that is targeted by the field label.
+--
+-- 'visibility', 'fieldLabelType_visibility' - The visibility of the field label.
+newFieldLabelType ::
+  FieldLabelType
+newFieldLabelType =
+  FieldLabelType'
+    { fieldId = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | Indicates the field that is targeted by the field label.
+fieldLabelType_fieldId :: Lens.Lens' FieldLabelType (Prelude.Maybe Prelude.Text)
+fieldLabelType_fieldId = Lens.lens (\FieldLabelType' {fieldId} -> fieldId) (\s@FieldLabelType' {} a -> s {fieldId = a} :: FieldLabelType)
+
+-- | The visibility of the field label.
+fieldLabelType_visibility :: Lens.Lens' FieldLabelType (Prelude.Maybe Visibility)
+fieldLabelType_visibility = Lens.lens (\FieldLabelType' {visibility} -> visibility) (\s@FieldLabelType' {} a -> s {visibility = a} :: FieldLabelType)
+
+instance Data.FromJSON FieldLabelType where
+  parseJSON =
+    Data.withObject
+      "FieldLabelType"
+      ( \x ->
+          FieldLabelType'
+            Prelude.<$> (x Data..:? "FieldId")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable FieldLabelType where
+  hashWithSalt _salt FieldLabelType' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData FieldLabelType where
+  rnf FieldLabelType' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON FieldLabelType where
+  toJSON FieldLabelType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldId" Data..=) Prelude.<$> fieldId,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldSeriesItem.hs b/gen/Amazonka/QuickSight/Types/FieldSeriesItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldSeriesItem.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FieldSeriesItem
+-- 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.QuickSight.Types.FieldSeriesItem 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.QuickSight.Types.AxisBinding
+import Amazonka.QuickSight.Types.LineChartSeriesSettings
+
+-- | The field series item configuration of a line chart.
+--
+-- /See:/ 'newFieldSeriesItem' smart constructor.
+data FieldSeriesItem = FieldSeriesItem'
+  { -- | The options that determine the presentation of line series associated to
+    -- the field.
+    settings :: Prelude.Maybe LineChartSeriesSettings,
+    -- | The field ID of the field for which you are setting the axis binding.
+    fieldId :: Prelude.Text,
+    -- | The axis that you are binding the field to.
+    axisBinding :: AxisBinding
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldSeriesItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'settings', 'fieldSeriesItem_settings' - The options that determine the presentation of line series associated to
+-- the field.
+--
+-- 'fieldId', 'fieldSeriesItem_fieldId' - The field ID of the field for which you are setting the axis binding.
+--
+-- 'axisBinding', 'fieldSeriesItem_axisBinding' - The axis that you are binding the field to.
+newFieldSeriesItem ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'axisBinding'
+  AxisBinding ->
+  FieldSeriesItem
+newFieldSeriesItem pFieldId_ pAxisBinding_ =
+  FieldSeriesItem'
+    { settings = Prelude.Nothing,
+      fieldId = pFieldId_,
+      axisBinding = pAxisBinding_
+    }
+
+-- | The options that determine the presentation of line series associated to
+-- the field.
+fieldSeriesItem_settings :: Lens.Lens' FieldSeriesItem (Prelude.Maybe LineChartSeriesSettings)
+fieldSeriesItem_settings = Lens.lens (\FieldSeriesItem' {settings} -> settings) (\s@FieldSeriesItem' {} a -> s {settings = a} :: FieldSeriesItem)
+
+-- | The field ID of the field for which you are setting the axis binding.
+fieldSeriesItem_fieldId :: Lens.Lens' FieldSeriesItem Prelude.Text
+fieldSeriesItem_fieldId = Lens.lens (\FieldSeriesItem' {fieldId} -> fieldId) (\s@FieldSeriesItem' {} a -> s {fieldId = a} :: FieldSeriesItem)
+
+-- | The axis that you are binding the field to.
+fieldSeriesItem_axisBinding :: Lens.Lens' FieldSeriesItem AxisBinding
+fieldSeriesItem_axisBinding = Lens.lens (\FieldSeriesItem' {axisBinding} -> axisBinding) (\s@FieldSeriesItem' {} a -> s {axisBinding = a} :: FieldSeriesItem)
+
+instance Data.FromJSON FieldSeriesItem where
+  parseJSON =
+    Data.withObject
+      "FieldSeriesItem"
+      ( \x ->
+          FieldSeriesItem'
+            Prelude.<$> (x Data..:? "Settings")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "AxisBinding")
+      )
+
+instance Prelude.Hashable FieldSeriesItem where
+  hashWithSalt _salt FieldSeriesItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` axisBinding
+
+instance Prelude.NFData FieldSeriesItem where
+  rnf FieldSeriesItem' {..} =
+    Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf axisBinding
+
+instance Data.ToJSON FieldSeriesItem where
+  toJSON FieldSeriesItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Settings" Data..=) Prelude.<$> settings,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("AxisBinding" Data..= axisBinding)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldSort.hs b/gen/Amazonka/QuickSight/Types/FieldSort.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldSort.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.FieldSort
+-- 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.QuickSight.Types.FieldSort 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.QuickSight.Types.SortDirection
+
+-- | The sort configuration for a field in a field well.
+--
+-- /See:/ 'newFieldSort' smart constructor.
+data FieldSort = FieldSort'
+  { -- | The sort configuration target field.
+    fieldId :: Prelude.Text,
+    -- | The sort direction. Choose one of the following options:
+    --
+    -- -   @ASC@: Ascending
+    --
+    -- -   @DESC@: Descending
+    direction :: SortDirection
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldSort' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'fieldSort_fieldId' - The sort configuration target field.
+--
+-- 'direction', 'fieldSort_direction' - The sort direction. Choose one of the following options:
+--
+-- -   @ASC@: Ascending
+--
+-- -   @DESC@: Descending
+newFieldSort ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'direction'
+  SortDirection ->
+  FieldSort
+newFieldSort pFieldId_ pDirection_ =
+  FieldSort'
+    { fieldId = pFieldId_,
+      direction = pDirection_
+    }
+
+-- | The sort configuration target field.
+fieldSort_fieldId :: Lens.Lens' FieldSort Prelude.Text
+fieldSort_fieldId = Lens.lens (\FieldSort' {fieldId} -> fieldId) (\s@FieldSort' {} a -> s {fieldId = a} :: FieldSort)
+
+-- | The sort direction. Choose one of the following options:
+--
+-- -   @ASC@: Ascending
+--
+-- -   @DESC@: Descending
+fieldSort_direction :: Lens.Lens' FieldSort SortDirection
+fieldSort_direction = Lens.lens (\FieldSort' {direction} -> direction) (\s@FieldSort' {} a -> s {direction = a} :: FieldSort)
+
+instance Data.FromJSON FieldSort where
+  parseJSON =
+    Data.withObject
+      "FieldSort"
+      ( \x ->
+          FieldSort'
+            Prelude.<$> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Direction")
+      )
+
+instance Prelude.Hashable FieldSort where
+  hashWithSalt _salt FieldSort' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` direction
+
+instance Prelude.NFData FieldSort where
+  rnf FieldSort' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf direction
+
+instance Data.ToJSON FieldSort where
+  toJSON FieldSort' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Direction" Data..= direction)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldSortOptions.hs b/gen/Amazonka/QuickSight/Types/FieldSortOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldSortOptions.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.FieldSortOptions
+-- 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.QuickSight.Types.FieldSortOptions 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.QuickSight.Types.ColumnSort
+import Amazonka.QuickSight.Types.FieldSort
+
+-- | The field sort options in a chart configuration.
+--
+-- /See:/ 'newFieldSortOptions' smart constructor.
+data FieldSortOptions = FieldSortOptions'
+  { -- | The sort configuration for a column that is not used in a field well.
+    columnSort :: Prelude.Maybe ColumnSort,
+    -- | The sort configuration for a field in a field well.
+    fieldSort :: Prelude.Maybe FieldSort
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldSortOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnSort', 'fieldSortOptions_columnSort' - The sort configuration for a column that is not used in a field well.
+--
+-- 'fieldSort', 'fieldSortOptions_fieldSort' - The sort configuration for a field in a field well.
+newFieldSortOptions ::
+  FieldSortOptions
+newFieldSortOptions =
+  FieldSortOptions'
+    { columnSort = Prelude.Nothing,
+      fieldSort = Prelude.Nothing
+    }
+
+-- | The sort configuration for a column that is not used in a field well.
+fieldSortOptions_columnSort :: Lens.Lens' FieldSortOptions (Prelude.Maybe ColumnSort)
+fieldSortOptions_columnSort = Lens.lens (\FieldSortOptions' {columnSort} -> columnSort) (\s@FieldSortOptions' {} a -> s {columnSort = a} :: FieldSortOptions)
+
+-- | The sort configuration for a field in a field well.
+fieldSortOptions_fieldSort :: Lens.Lens' FieldSortOptions (Prelude.Maybe FieldSort)
+fieldSortOptions_fieldSort = Lens.lens (\FieldSortOptions' {fieldSort} -> fieldSort) (\s@FieldSortOptions' {} a -> s {fieldSort = a} :: FieldSortOptions)
+
+instance Data.FromJSON FieldSortOptions where
+  parseJSON =
+    Data.withObject
+      "FieldSortOptions"
+      ( \x ->
+          FieldSortOptions'
+            Prelude.<$> (x Data..:? "ColumnSort")
+            Prelude.<*> (x Data..:? "FieldSort")
+      )
+
+instance Prelude.Hashable FieldSortOptions where
+  hashWithSalt _salt FieldSortOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnSort
+      `Prelude.hashWithSalt` fieldSort
+
+instance Prelude.NFData FieldSortOptions where
+  rnf FieldSortOptions' {..} =
+    Prelude.rnf columnSort
+      `Prelude.seq` Prelude.rnf fieldSort
+
+instance Data.ToJSON FieldSortOptions where
+  toJSON FieldSortOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnSort" Data..=) Prelude.<$> columnSort,
+            ("FieldSort" Data..=) Prelude.<$> fieldSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FieldTooltipItem.hs b/gen/Amazonka/QuickSight/Types/FieldTooltipItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FieldTooltipItem.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FieldTooltipItem
+-- 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.QuickSight.Types.FieldTooltipItem 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.QuickSight.Types.Visibility
+
+-- | The tooltip item for the fields.
+--
+-- /See:/ 'newFieldTooltipItem' smart constructor.
+data FieldTooltipItem = FieldTooltipItem'
+  { -- | The label of the tooltip item.
+    label :: Prelude.Maybe Prelude.Text,
+    -- | The visibility of the tooltip item.
+    visibility :: Prelude.Maybe Visibility,
+    -- | The unique ID of the field that is targeted by the tooltip.
+    fieldId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldTooltipItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'label', 'fieldTooltipItem_label' - The label of the tooltip item.
+--
+-- 'visibility', 'fieldTooltipItem_visibility' - The visibility of the tooltip item.
+--
+-- 'fieldId', 'fieldTooltipItem_fieldId' - The unique ID of the field that is targeted by the tooltip.
+newFieldTooltipItem ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  FieldTooltipItem
+newFieldTooltipItem pFieldId_ =
+  FieldTooltipItem'
+    { label = Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      fieldId = pFieldId_
+    }
+
+-- | The label of the tooltip item.
+fieldTooltipItem_label :: Lens.Lens' FieldTooltipItem (Prelude.Maybe Prelude.Text)
+fieldTooltipItem_label = Lens.lens (\FieldTooltipItem' {label} -> label) (\s@FieldTooltipItem' {} a -> s {label = a} :: FieldTooltipItem)
+
+-- | The visibility of the tooltip item.
+fieldTooltipItem_visibility :: Lens.Lens' FieldTooltipItem (Prelude.Maybe Visibility)
+fieldTooltipItem_visibility = Lens.lens (\FieldTooltipItem' {visibility} -> visibility) (\s@FieldTooltipItem' {} a -> s {visibility = a} :: FieldTooltipItem)
+
+-- | The unique ID of the field that is targeted by the tooltip.
+fieldTooltipItem_fieldId :: Lens.Lens' FieldTooltipItem Prelude.Text
+fieldTooltipItem_fieldId = Lens.lens (\FieldTooltipItem' {fieldId} -> fieldId) (\s@FieldTooltipItem' {} a -> s {fieldId = a} :: FieldTooltipItem)
+
+instance Data.FromJSON FieldTooltipItem where
+  parseJSON =
+    Data.withObject
+      "FieldTooltipItem"
+      ( \x ->
+          FieldTooltipItem'
+            Prelude.<$> (x Data..:? "Label")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..: "FieldId")
+      )
+
+instance Prelude.Hashable FieldTooltipItem where
+  hashWithSalt _salt FieldTooltipItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` label
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` fieldId
+
+instance Prelude.NFData FieldTooltipItem where
+  rnf FieldTooltipItem' {..} =
+    Prelude.rnf label
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf fieldId
+
+instance Data.ToJSON FieldTooltipItem where
+  toJSON FieldTooltipItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Label" Data..=) Prelude.<$> label,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            Prelude.Just ("FieldId" Data..= fieldId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FileFormat.hs b/gen/Amazonka/QuickSight/Types/FileFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FileFormat.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FileFormat
+-- 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.QuickSight.Types.FileFormat
+  ( FileFormat
+      ( ..,
+        FileFormat_CLF,
+        FileFormat_CSV,
+        FileFormat_ELF,
+        FileFormat_JSON,
+        FileFormat_TSV,
+        FileFormat_XLSX
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileFormat = FileFormat'
+  { fromFileFormat ::
+      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 FileFormat_CLF :: FileFormat
+pattern FileFormat_CLF = FileFormat' "CLF"
+
+pattern FileFormat_CSV :: FileFormat
+pattern FileFormat_CSV = FileFormat' "CSV"
+
+pattern FileFormat_ELF :: FileFormat
+pattern FileFormat_ELF = FileFormat' "ELF"
+
+pattern FileFormat_JSON :: FileFormat
+pattern FileFormat_JSON = FileFormat' "JSON"
+
+pattern FileFormat_TSV :: FileFormat
+pattern FileFormat_TSV = FileFormat' "TSV"
+
+pattern FileFormat_XLSX :: FileFormat
+pattern FileFormat_XLSX = FileFormat' "XLSX"
+
+{-# COMPLETE
+  FileFormat_CLF,
+  FileFormat_CSV,
+  FileFormat_ELF,
+  FileFormat_JSON,
+  FileFormat_TSV,
+  FileFormat_XLSX,
+  FileFormat'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/FilledMapAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapAggregatedFieldWells.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.QuickSight.Types.FilledMapAggregatedFieldWells
+-- 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.QuickSight.Types.FilledMapAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field well of the filled map.
+--
+-- /See:/ 'newFilledMapAggregatedFieldWells' smart constructor.
+data FilledMapAggregatedFieldWells = FilledMapAggregatedFieldWells'
+  { -- | The aggregated location field well of the filled map. Values are grouped
+    -- by location fields.
+    geospatial :: Prelude.Maybe [DimensionField],
+    -- | The aggregated color field well of a filled map. Values are aggregated
+    -- based on location fields.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'geospatial', 'filledMapAggregatedFieldWells_geospatial' - The aggregated location field well of the filled map. Values are grouped
+-- by location fields.
+--
+-- 'values', 'filledMapAggregatedFieldWells_values' - The aggregated color field well of a filled map. Values are aggregated
+-- based on location fields.
+newFilledMapAggregatedFieldWells ::
+  FilledMapAggregatedFieldWells
+newFilledMapAggregatedFieldWells =
+  FilledMapAggregatedFieldWells'
+    { geospatial =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The aggregated location field well of the filled map. Values are grouped
+-- by location fields.
+filledMapAggregatedFieldWells_geospatial :: Lens.Lens' FilledMapAggregatedFieldWells (Prelude.Maybe [DimensionField])
+filledMapAggregatedFieldWells_geospatial = Lens.lens (\FilledMapAggregatedFieldWells' {geospatial} -> geospatial) (\s@FilledMapAggregatedFieldWells' {} a -> s {geospatial = a} :: FilledMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The aggregated color field well of a filled map. Values are aggregated
+-- based on location fields.
+filledMapAggregatedFieldWells_values :: Lens.Lens' FilledMapAggregatedFieldWells (Prelude.Maybe [MeasureField])
+filledMapAggregatedFieldWells_values = Lens.lens (\FilledMapAggregatedFieldWells' {values} -> values) (\s@FilledMapAggregatedFieldWells' {} a -> s {values = a} :: FilledMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FilledMapAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "FilledMapAggregatedFieldWells"
+      ( \x ->
+          FilledMapAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Geospatial" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    FilledMapAggregatedFieldWells
+  where
+  hashWithSalt _salt FilledMapAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` geospatial
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData FilledMapAggregatedFieldWells where
+  rnf FilledMapAggregatedFieldWells' {..} =
+    Prelude.rnf geospatial
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON FilledMapAggregatedFieldWells where
+  toJSON FilledMapAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Geospatial" Data..=) Prelude.<$> geospatial,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/FilledMapConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapConditionalFormatting.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.QuickSight.Types.FilledMapConditionalFormatting
+-- 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.QuickSight.Types.FilledMapConditionalFormatting 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.QuickSight.Types.FilledMapConditionalFormattingOption
+
+-- | The conditional formatting of a @FilledMapVisual@.
+--
+-- /See:/ 'newFilledMapConditionalFormatting' smart constructor.
+data FilledMapConditionalFormatting = FilledMapConditionalFormatting'
+  { -- | Conditional formatting options of a @FilledMapVisual@.
+    conditionalFormattingOptions :: [FilledMapConditionalFormattingOption]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conditionalFormattingOptions', 'filledMapConditionalFormatting_conditionalFormattingOptions' - Conditional formatting options of a @FilledMapVisual@.
+newFilledMapConditionalFormatting ::
+  FilledMapConditionalFormatting
+newFilledMapConditionalFormatting =
+  FilledMapConditionalFormatting'
+    { conditionalFormattingOptions =
+        Prelude.mempty
+    }
+
+-- | Conditional formatting options of a @FilledMapVisual@.
+filledMapConditionalFormatting_conditionalFormattingOptions :: Lens.Lens' FilledMapConditionalFormatting [FilledMapConditionalFormattingOption]
+filledMapConditionalFormatting_conditionalFormattingOptions = Lens.lens (\FilledMapConditionalFormatting' {conditionalFormattingOptions} -> conditionalFormattingOptions) (\s@FilledMapConditionalFormatting' {} a -> s {conditionalFormattingOptions = a} :: FilledMapConditionalFormatting) Prelude.. Lens.coerced
+
+instance Data.FromJSON FilledMapConditionalFormatting where
+  parseJSON =
+    Data.withObject
+      "FilledMapConditionalFormatting"
+      ( \x ->
+          FilledMapConditionalFormatting'
+            Prelude.<$> ( x
+                            Data..:? "ConditionalFormattingOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    FilledMapConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    FilledMapConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` conditionalFormattingOptions
+
+instance
+  Prelude.NFData
+    FilledMapConditionalFormatting
+  where
+  rnf FilledMapConditionalFormatting' {..} =
+    Prelude.rnf conditionalFormattingOptions
+
+instance Data.ToJSON FilledMapConditionalFormatting where
+  toJSON FilledMapConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ConditionalFormattingOptions"
+                  Data..= conditionalFormattingOptions
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapConditionalFormattingOption.hs b/gen/Amazonka/QuickSight/Types/FilledMapConditionalFormattingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapConditionalFormattingOption.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.QuickSight.Types.FilledMapConditionalFormattingOption
+-- 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.QuickSight.Types.FilledMapConditionalFormattingOption 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.QuickSight.Types.FilledMapShapeConditionalFormatting
+
+-- | Conditional formatting options of a @FilledMapVisual@.
+--
+-- /See:/ 'newFilledMapConditionalFormattingOption' smart constructor.
+data FilledMapConditionalFormattingOption = FilledMapConditionalFormattingOption'
+  { -- | The conditional formatting that determines the shape of the filled map.
+    shape :: FilledMapShapeConditionalFormatting
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapConditionalFormattingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shape', 'filledMapConditionalFormattingOption_shape' - The conditional formatting that determines the shape of the filled map.
+newFilledMapConditionalFormattingOption ::
+  -- | 'shape'
+  FilledMapShapeConditionalFormatting ->
+  FilledMapConditionalFormattingOption
+newFilledMapConditionalFormattingOption pShape_ =
+  FilledMapConditionalFormattingOption'
+    { shape =
+        pShape_
+    }
+
+-- | The conditional formatting that determines the shape of the filled map.
+filledMapConditionalFormattingOption_shape :: Lens.Lens' FilledMapConditionalFormattingOption FilledMapShapeConditionalFormatting
+filledMapConditionalFormattingOption_shape = Lens.lens (\FilledMapConditionalFormattingOption' {shape} -> shape) (\s@FilledMapConditionalFormattingOption' {} a -> s {shape = a} :: FilledMapConditionalFormattingOption)
+
+instance
+  Data.FromJSON
+    FilledMapConditionalFormattingOption
+  where
+  parseJSON =
+    Data.withObject
+      "FilledMapConditionalFormattingOption"
+      ( \x ->
+          FilledMapConditionalFormattingOption'
+            Prelude.<$> (x Data..: "Shape")
+      )
+
+instance
+  Prelude.Hashable
+    FilledMapConditionalFormattingOption
+  where
+  hashWithSalt
+    _salt
+    FilledMapConditionalFormattingOption' {..} =
+      _salt `Prelude.hashWithSalt` shape
+
+instance
+  Prelude.NFData
+    FilledMapConditionalFormattingOption
+  where
+  rnf FilledMapConditionalFormattingOption' {..} =
+    Prelude.rnf shape
+
+instance
+  Data.ToJSON
+    FilledMapConditionalFormattingOption
+  where
+  toJSON FilledMapConditionalFormattingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Shape" Data..= shape)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapConfiguration.hs b/gen/Amazonka/QuickSight/Types/FilledMapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapConfiguration.hs
@@ -0,0 +1,154 @@
+{-# 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.QuickSight.Types.FilledMapConfiguration
+-- 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.QuickSight.Types.FilledMapConfiguration 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.QuickSight.Types.FilledMapFieldWells
+import Amazonka.QuickSight.Types.FilledMapSortConfiguration
+import Amazonka.QuickSight.Types.GeospatialMapStyleOptions
+import Amazonka.QuickSight.Types.GeospatialWindowOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+
+-- | The configuration for a @FilledMapVisual@.
+--
+-- /See:/ 'newFilledMapConfiguration' smart constructor.
+data FilledMapConfiguration = FilledMapConfiguration'
+  { -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe FilledMapFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The map style options of the filled map visual.
+    mapStyleOptions :: Prelude.Maybe GeospatialMapStyleOptions,
+    -- | The sort configuration of a @FilledMapVisual@.
+    sortConfiguration :: Prelude.Maybe FilledMapSortConfiguration,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The window options of the filled map visual.
+    windowOptions :: Prelude.Maybe GeospatialWindowOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldWells', 'filledMapConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'filledMapConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'mapStyleOptions', 'filledMapConfiguration_mapStyleOptions' - The map style options of the filled map visual.
+--
+-- 'sortConfiguration', 'filledMapConfiguration_sortConfiguration' - The sort configuration of a @FilledMapVisual@.
+--
+-- 'tooltip', 'filledMapConfiguration_tooltip' - The tooltip display setup of the visual.
+--
+-- 'windowOptions', 'filledMapConfiguration_windowOptions' - The window options of the filled map visual.
+newFilledMapConfiguration ::
+  FilledMapConfiguration
+newFilledMapConfiguration =
+  FilledMapConfiguration'
+    { fieldWells =
+        Prelude.Nothing,
+      legend = Prelude.Nothing,
+      mapStyleOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      windowOptions = Prelude.Nothing
+    }
+
+-- | The field wells of the visual.
+filledMapConfiguration_fieldWells :: Lens.Lens' FilledMapConfiguration (Prelude.Maybe FilledMapFieldWells)
+filledMapConfiguration_fieldWells = Lens.lens (\FilledMapConfiguration' {fieldWells} -> fieldWells) (\s@FilledMapConfiguration' {} a -> s {fieldWells = a} :: FilledMapConfiguration)
+
+-- | The legend display setup of the visual.
+filledMapConfiguration_legend :: Lens.Lens' FilledMapConfiguration (Prelude.Maybe LegendOptions)
+filledMapConfiguration_legend = Lens.lens (\FilledMapConfiguration' {legend} -> legend) (\s@FilledMapConfiguration' {} a -> s {legend = a} :: FilledMapConfiguration)
+
+-- | The map style options of the filled map visual.
+filledMapConfiguration_mapStyleOptions :: Lens.Lens' FilledMapConfiguration (Prelude.Maybe GeospatialMapStyleOptions)
+filledMapConfiguration_mapStyleOptions = Lens.lens (\FilledMapConfiguration' {mapStyleOptions} -> mapStyleOptions) (\s@FilledMapConfiguration' {} a -> s {mapStyleOptions = a} :: FilledMapConfiguration)
+
+-- | The sort configuration of a @FilledMapVisual@.
+filledMapConfiguration_sortConfiguration :: Lens.Lens' FilledMapConfiguration (Prelude.Maybe FilledMapSortConfiguration)
+filledMapConfiguration_sortConfiguration = Lens.lens (\FilledMapConfiguration' {sortConfiguration} -> sortConfiguration) (\s@FilledMapConfiguration' {} a -> s {sortConfiguration = a} :: FilledMapConfiguration)
+
+-- | The tooltip display setup of the visual.
+filledMapConfiguration_tooltip :: Lens.Lens' FilledMapConfiguration (Prelude.Maybe TooltipOptions)
+filledMapConfiguration_tooltip = Lens.lens (\FilledMapConfiguration' {tooltip} -> tooltip) (\s@FilledMapConfiguration' {} a -> s {tooltip = a} :: FilledMapConfiguration)
+
+-- | The window options of the filled map visual.
+filledMapConfiguration_windowOptions :: Lens.Lens' FilledMapConfiguration (Prelude.Maybe GeospatialWindowOptions)
+filledMapConfiguration_windowOptions = Lens.lens (\FilledMapConfiguration' {windowOptions} -> windowOptions) (\s@FilledMapConfiguration' {} a -> s {windowOptions = a} :: FilledMapConfiguration)
+
+instance Data.FromJSON FilledMapConfiguration where
+  parseJSON =
+    Data.withObject
+      "FilledMapConfiguration"
+      ( \x ->
+          FilledMapConfiguration'
+            Prelude.<$> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "MapStyleOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "WindowOptions")
+      )
+
+instance Prelude.Hashable FilledMapConfiguration where
+  hashWithSalt _salt FilledMapConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` mapStyleOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` windowOptions
+
+instance Prelude.NFData FilledMapConfiguration where
+  rnf FilledMapConfiguration' {..} =
+    Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf mapStyleOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf windowOptions
+
+instance Data.ToJSON FilledMapConfiguration where
+  toJSON FilledMapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("MapStyleOptions" Data..=)
+              Prelude.<$> mapStyleOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("WindowOptions" Data..=) Prelude.<$> windowOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapFieldWells.hs b/gen/Amazonka/QuickSight/Types/FilledMapFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapFieldWells.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.QuickSight.Types.FilledMapFieldWells
+-- 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.QuickSight.Types.FilledMapFieldWells 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.QuickSight.Types.FilledMapAggregatedFieldWells
+
+-- | The field wells of a @FilledMapVisual@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFilledMapFieldWells' smart constructor.
+data FilledMapFieldWells = FilledMapFieldWells'
+  { -- | The aggregated field well of the filled map.
+    filledMapAggregatedFieldWells :: Prelude.Maybe FilledMapAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filledMapAggregatedFieldWells', 'filledMapFieldWells_filledMapAggregatedFieldWells' - The aggregated field well of the filled map.
+newFilledMapFieldWells ::
+  FilledMapFieldWells
+newFilledMapFieldWells =
+  FilledMapFieldWells'
+    { filledMapAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field well of the filled map.
+filledMapFieldWells_filledMapAggregatedFieldWells :: Lens.Lens' FilledMapFieldWells (Prelude.Maybe FilledMapAggregatedFieldWells)
+filledMapFieldWells_filledMapAggregatedFieldWells = Lens.lens (\FilledMapFieldWells' {filledMapAggregatedFieldWells} -> filledMapAggregatedFieldWells) (\s@FilledMapFieldWells' {} a -> s {filledMapAggregatedFieldWells = a} :: FilledMapFieldWells)
+
+instance Data.FromJSON FilledMapFieldWells where
+  parseJSON =
+    Data.withObject
+      "FilledMapFieldWells"
+      ( \x ->
+          FilledMapFieldWells'
+            Prelude.<$> (x Data..:? "FilledMapAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable FilledMapFieldWells where
+  hashWithSalt _salt FilledMapFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` filledMapAggregatedFieldWells
+
+instance Prelude.NFData FilledMapFieldWells where
+  rnf FilledMapFieldWells' {..} =
+    Prelude.rnf filledMapAggregatedFieldWells
+
+instance Data.ToJSON FilledMapFieldWells where
+  toJSON FilledMapFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FilledMapAggregatedFieldWells" Data..=)
+              Prelude.<$> filledMapAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapShapeConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/FilledMapShapeConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapShapeConditionalFormatting.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.FilledMapShapeConditionalFormatting
+-- 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.QuickSight.Types.FilledMapShapeConditionalFormatting 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.QuickSight.Types.ShapeConditionalFormat
+
+-- | The conditional formatting that determines the shape of the filled map.
+--
+-- /See:/ 'newFilledMapShapeConditionalFormatting' smart constructor.
+data FilledMapShapeConditionalFormatting = FilledMapShapeConditionalFormatting'
+  { -- | The conditional formatting that determines the background color of a
+    -- filled map\'s shape.
+    format :: Prelude.Maybe ShapeConditionalFormat,
+    -- | The field ID of the filled map shape.
+    fieldId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapShapeConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'format', 'filledMapShapeConditionalFormatting_format' - The conditional formatting that determines the background color of a
+-- filled map\'s shape.
+--
+-- 'fieldId', 'filledMapShapeConditionalFormatting_fieldId' - The field ID of the filled map shape.
+newFilledMapShapeConditionalFormatting ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  FilledMapShapeConditionalFormatting
+newFilledMapShapeConditionalFormatting pFieldId_ =
+  FilledMapShapeConditionalFormatting'
+    { format =
+        Prelude.Nothing,
+      fieldId = pFieldId_
+    }
+
+-- | The conditional formatting that determines the background color of a
+-- filled map\'s shape.
+filledMapShapeConditionalFormatting_format :: Lens.Lens' FilledMapShapeConditionalFormatting (Prelude.Maybe ShapeConditionalFormat)
+filledMapShapeConditionalFormatting_format = Lens.lens (\FilledMapShapeConditionalFormatting' {format} -> format) (\s@FilledMapShapeConditionalFormatting' {} a -> s {format = a} :: FilledMapShapeConditionalFormatting)
+
+-- | The field ID of the filled map shape.
+filledMapShapeConditionalFormatting_fieldId :: Lens.Lens' FilledMapShapeConditionalFormatting Prelude.Text
+filledMapShapeConditionalFormatting_fieldId = Lens.lens (\FilledMapShapeConditionalFormatting' {fieldId} -> fieldId) (\s@FilledMapShapeConditionalFormatting' {} a -> s {fieldId = a} :: FilledMapShapeConditionalFormatting)
+
+instance
+  Data.FromJSON
+    FilledMapShapeConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "FilledMapShapeConditionalFormatting"
+      ( \x ->
+          FilledMapShapeConditionalFormatting'
+            Prelude.<$> (x Data..:? "Format")
+            Prelude.<*> (x Data..: "FieldId")
+      )
+
+instance
+  Prelude.Hashable
+    FilledMapShapeConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    FilledMapShapeConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` format
+        `Prelude.hashWithSalt` fieldId
+
+instance
+  Prelude.NFData
+    FilledMapShapeConditionalFormatting
+  where
+  rnf FilledMapShapeConditionalFormatting' {..} =
+    Prelude.rnf format
+      `Prelude.seq` Prelude.rnf fieldId
+
+instance
+  Data.ToJSON
+    FilledMapShapeConditionalFormatting
+  where
+  toJSON FilledMapShapeConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Format" Data..=) Prelude.<$> format,
+            Prelude.Just ("FieldId" Data..= fieldId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/FilledMapSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapSortConfiguration.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilledMapSortConfiguration
+-- 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.QuickSight.Types.FilledMapSortConfiguration 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.QuickSight.Types.FieldSortOptions
+
+-- | The sort configuration of a @FilledMapVisual@.
+--
+-- /See:/ 'newFilledMapSortConfiguration' smart constructor.
+data FilledMapSortConfiguration = FilledMapSortConfiguration'
+  { -- | The sort configuration of the location fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categorySort', 'filledMapSortConfiguration_categorySort' - The sort configuration of the location fields.
+newFilledMapSortConfiguration ::
+  FilledMapSortConfiguration
+newFilledMapSortConfiguration =
+  FilledMapSortConfiguration'
+    { categorySort =
+        Prelude.Nothing
+    }
+
+-- | The sort configuration of the location fields.
+filledMapSortConfiguration_categorySort :: Lens.Lens' FilledMapSortConfiguration (Prelude.Maybe [FieldSortOptions])
+filledMapSortConfiguration_categorySort = Lens.lens (\FilledMapSortConfiguration' {categorySort} -> categorySort) (\s@FilledMapSortConfiguration' {} a -> s {categorySort = a} :: FilledMapSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FilledMapSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "FilledMapSortConfiguration"
+      ( \x ->
+          FilledMapSortConfiguration'
+            Prelude.<$> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable FilledMapSortConfiguration where
+  hashWithSalt _salt FilledMapSortConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` categorySort
+
+instance Prelude.NFData FilledMapSortConfiguration where
+  rnf FilledMapSortConfiguration' {..} =
+    Prelude.rnf categorySort
+
+instance Data.ToJSON FilledMapSortConfiguration where
+  toJSON FilledMapSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("CategorySort" Data..=) Prelude.<$> categorySort]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilledMapVisual.hs b/gen/Amazonka/QuickSight/Types/FilledMapVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilledMapVisual.hs
@@ -0,0 +1,182 @@
+{-# 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.QuickSight.Types.FilledMapVisual
+-- 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.QuickSight.Types.FilledMapVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.FilledMapConditionalFormatting
+import Amazonka.QuickSight.Types.FilledMapConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A filled map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filled-maps.html Creating filled maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newFilledMapVisual' smart constructor.
+data FilledMapVisual = FilledMapVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe FilledMapConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The conditional formatting of a @FilledMapVisual@.
+    conditionalFormatting :: Prelude.Maybe FilledMapConditionalFormatting,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilledMapVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'filledMapVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'filledMapVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'filledMapVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'conditionalFormatting', 'filledMapVisual_conditionalFormatting' - The conditional formatting of a @FilledMapVisual@.
+--
+-- 'subtitle', 'filledMapVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'filledMapVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'filledMapVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newFilledMapVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  FilledMapVisual
+newFilledMapVisual pVisualId_ =
+  FilledMapVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      conditionalFormatting = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+filledMapVisual_actions :: Lens.Lens' FilledMapVisual (Prelude.Maybe [VisualCustomAction])
+filledMapVisual_actions = Lens.lens (\FilledMapVisual' {actions} -> actions) (\s@FilledMapVisual' {} a -> s {actions = a} :: FilledMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+filledMapVisual_chartConfiguration :: Lens.Lens' FilledMapVisual (Prelude.Maybe FilledMapConfiguration)
+filledMapVisual_chartConfiguration = Lens.lens (\FilledMapVisual' {chartConfiguration} -> chartConfiguration) (\s@FilledMapVisual' {} a -> s {chartConfiguration = a} :: FilledMapVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+filledMapVisual_columnHierarchies :: Lens.Lens' FilledMapVisual (Prelude.Maybe [ColumnHierarchy])
+filledMapVisual_columnHierarchies = Lens.lens (\FilledMapVisual' {columnHierarchies} -> columnHierarchies) (\s@FilledMapVisual' {} a -> s {columnHierarchies = a} :: FilledMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The conditional formatting of a @FilledMapVisual@.
+filledMapVisual_conditionalFormatting :: Lens.Lens' FilledMapVisual (Prelude.Maybe FilledMapConditionalFormatting)
+filledMapVisual_conditionalFormatting = Lens.lens (\FilledMapVisual' {conditionalFormatting} -> conditionalFormatting) (\s@FilledMapVisual' {} a -> s {conditionalFormatting = a} :: FilledMapVisual)
+
+-- | The subtitle that is displayed on the visual.
+filledMapVisual_subtitle :: Lens.Lens' FilledMapVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+filledMapVisual_subtitle = Lens.lens (\FilledMapVisual' {subtitle} -> subtitle) (\s@FilledMapVisual' {} a -> s {subtitle = a} :: FilledMapVisual)
+
+-- | The title that is displayed on the visual.
+filledMapVisual_title :: Lens.Lens' FilledMapVisual (Prelude.Maybe VisualTitleLabelOptions)
+filledMapVisual_title = Lens.lens (\FilledMapVisual' {title} -> title) (\s@FilledMapVisual' {} a -> s {title = a} :: FilledMapVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+filledMapVisual_visualId :: Lens.Lens' FilledMapVisual Prelude.Text
+filledMapVisual_visualId = Lens.lens (\FilledMapVisual' {visualId} -> visualId) (\s@FilledMapVisual' {} a -> s {visualId = a} :: FilledMapVisual)
+
+instance Data.FromJSON FilledMapVisual where
+  parseJSON =
+    Data.withObject
+      "FilledMapVisual"
+      ( \x ->
+          FilledMapVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "ConditionalFormatting")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable FilledMapVisual where
+  hashWithSalt _salt FilledMapVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` conditionalFormatting
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData FilledMapVisual where
+  rnf FilledMapVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf conditionalFormatting
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON FilledMapVisual where
+  toJSON FilledMapVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("ConditionalFormatting" Data..=)
+              Prelude.<$> conditionalFormatting,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Filter.hs b/gen/Amazonka/QuickSight/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Filter.hs
@@ -0,0 +1,206 @@
+{-# 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.QuickSight.Types.Filter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.QuickSight.Types.Filter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.QuickSight.Types.CategoryFilter
+import Amazonka.QuickSight.Types.NumericEqualityFilter
+import Amazonka.QuickSight.Types.NumericRangeFilter
+import Amazonka.QuickSight.Types.RelativeDatesFilter
+import Amazonka.QuickSight.Types.TimeEqualityFilter
+import Amazonka.QuickSight.Types.TimeRangeFilter
+import Amazonka.QuickSight.Types.TopBottomFilter
+
+-- | With a @Filter@, you can remove portions of data from a particular
+-- visual or view.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | A @CategoryFilter@ filters text values.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/add-a-text-filter-data-prep.html Adding text filters>
+    -- in the /Amazon QuickSight User Guide/.
+    categoryFilter :: Prelude.Maybe CategoryFilter,
+    -- | A @NumericEqualityFilter@ filters numeric values that equal or do not
+    -- equal a given numeric value.
+    numericEqualityFilter :: Prelude.Maybe NumericEqualityFilter,
+    -- | A @NumericRangeFilter@ filters numeric values that are either inside or
+    -- outside a given numeric range.
+    numericRangeFilter :: Prelude.Maybe NumericRangeFilter,
+    -- | A @RelativeDatesFilter@ filters date values that are relative to a given
+    -- date.
+    relativeDatesFilter :: Prelude.Maybe RelativeDatesFilter,
+    -- | A @TimeEqualityFilter@ filters date-time values that equal or do not
+    -- equal a given date\/time value.
+    timeEqualityFilter :: Prelude.Maybe TimeEqualityFilter,
+    -- | A @TimeRangeFilter@ filters date-time values that are either inside or
+    -- outside a given date\/time range.
+    timeRangeFilter :: Prelude.Maybe TimeRangeFilter,
+    -- | A @TopBottomFilter@ filters data to the top or bottom values for a given
+    -- column.
+    topBottomFilter :: Prelude.Maybe TopBottomFilter
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryFilter', 'filter_categoryFilter' - A @CategoryFilter@ filters text values.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/add-a-text-filter-data-prep.html Adding text filters>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'numericEqualityFilter', 'filter_numericEqualityFilter' - A @NumericEqualityFilter@ filters numeric values that equal or do not
+-- equal a given numeric value.
+--
+-- 'numericRangeFilter', 'filter_numericRangeFilter' - A @NumericRangeFilter@ filters numeric values that are either inside or
+-- outside a given numeric range.
+--
+-- 'relativeDatesFilter', 'filter_relativeDatesFilter' - A @RelativeDatesFilter@ filters date values that are relative to a given
+-- date.
+--
+-- 'timeEqualityFilter', 'filter_timeEqualityFilter' - A @TimeEqualityFilter@ filters date-time values that equal or do not
+-- equal a given date\/time value.
+--
+-- 'timeRangeFilter', 'filter_timeRangeFilter' - A @TimeRangeFilter@ filters date-time values that are either inside or
+-- outside a given date\/time range.
+--
+-- 'topBottomFilter', 'filter_topBottomFilter' - A @TopBottomFilter@ filters data to the top or bottom values for a given
+-- column.
+newFilter ::
+  Filter
+newFilter =
+  Filter'
+    { categoryFilter = Prelude.Nothing,
+      numericEqualityFilter = Prelude.Nothing,
+      numericRangeFilter = Prelude.Nothing,
+      relativeDatesFilter = Prelude.Nothing,
+      timeEqualityFilter = Prelude.Nothing,
+      timeRangeFilter = Prelude.Nothing,
+      topBottomFilter = Prelude.Nothing
+    }
+
+-- | A @CategoryFilter@ filters text values.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/add-a-text-filter-data-prep.html Adding text filters>
+-- in the /Amazon QuickSight User Guide/.
+filter_categoryFilter :: Lens.Lens' Filter (Prelude.Maybe CategoryFilter)
+filter_categoryFilter = Lens.lens (\Filter' {categoryFilter} -> categoryFilter) (\s@Filter' {} a -> s {categoryFilter = a} :: Filter)
+
+-- | A @NumericEqualityFilter@ filters numeric values that equal or do not
+-- equal a given numeric value.
+filter_numericEqualityFilter :: Lens.Lens' Filter (Prelude.Maybe NumericEqualityFilter)
+filter_numericEqualityFilter = Lens.lens (\Filter' {numericEqualityFilter} -> numericEqualityFilter) (\s@Filter' {} a -> s {numericEqualityFilter = a} :: Filter)
+
+-- | A @NumericRangeFilter@ filters numeric values that are either inside or
+-- outside a given numeric range.
+filter_numericRangeFilter :: Lens.Lens' Filter (Prelude.Maybe NumericRangeFilter)
+filter_numericRangeFilter = Lens.lens (\Filter' {numericRangeFilter} -> numericRangeFilter) (\s@Filter' {} a -> s {numericRangeFilter = a} :: Filter)
+
+-- | A @RelativeDatesFilter@ filters date values that are relative to a given
+-- date.
+filter_relativeDatesFilter :: Lens.Lens' Filter (Prelude.Maybe RelativeDatesFilter)
+filter_relativeDatesFilter = Lens.lens (\Filter' {relativeDatesFilter} -> relativeDatesFilter) (\s@Filter' {} a -> s {relativeDatesFilter = a} :: Filter)
+
+-- | A @TimeEqualityFilter@ filters date-time values that equal or do not
+-- equal a given date\/time value.
+filter_timeEqualityFilter :: Lens.Lens' Filter (Prelude.Maybe TimeEqualityFilter)
+filter_timeEqualityFilter = Lens.lens (\Filter' {timeEqualityFilter} -> timeEqualityFilter) (\s@Filter' {} a -> s {timeEqualityFilter = a} :: Filter)
+
+-- | A @TimeRangeFilter@ filters date-time values that are either inside or
+-- outside a given date\/time range.
+filter_timeRangeFilter :: Lens.Lens' Filter (Prelude.Maybe TimeRangeFilter)
+filter_timeRangeFilter = Lens.lens (\Filter' {timeRangeFilter} -> timeRangeFilter) (\s@Filter' {} a -> s {timeRangeFilter = a} :: Filter)
+
+-- | A @TopBottomFilter@ filters data to the top or bottom values for a given
+-- column.
+filter_topBottomFilter :: Lens.Lens' Filter (Prelude.Maybe TopBottomFilter)
+filter_topBottomFilter = Lens.lens (\Filter' {topBottomFilter} -> topBottomFilter) (\s@Filter' {} a -> s {topBottomFilter = a} :: Filter)
+
+instance Data.FromJSON Filter where
+  parseJSON =
+    Data.withObject
+      "Filter"
+      ( \x ->
+          Filter'
+            Prelude.<$> (x Data..:? "CategoryFilter")
+            Prelude.<*> (x Data..:? "NumericEqualityFilter")
+            Prelude.<*> (x Data..:? "NumericRangeFilter")
+            Prelude.<*> (x Data..:? "RelativeDatesFilter")
+            Prelude.<*> (x Data..:? "TimeEqualityFilter")
+            Prelude.<*> (x Data..:? "TimeRangeFilter")
+            Prelude.<*> (x Data..:? "TopBottomFilter")
+      )
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryFilter
+      `Prelude.hashWithSalt` numericEqualityFilter
+      `Prelude.hashWithSalt` numericRangeFilter
+      `Prelude.hashWithSalt` relativeDatesFilter
+      `Prelude.hashWithSalt` timeEqualityFilter
+      `Prelude.hashWithSalt` timeRangeFilter
+      `Prelude.hashWithSalt` topBottomFilter
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf categoryFilter
+      `Prelude.seq` Prelude.rnf numericEqualityFilter
+      `Prelude.seq` Prelude.rnf numericRangeFilter
+      `Prelude.seq` Prelude.rnf relativeDatesFilter
+      `Prelude.seq` Prelude.rnf timeEqualityFilter
+      `Prelude.seq` Prelude.rnf timeRangeFilter
+      `Prelude.seq` Prelude.rnf topBottomFilter
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryFilter" Data..=)
+              Prelude.<$> categoryFilter,
+            ("NumericEqualityFilter" Data..=)
+              Prelude.<$> numericEqualityFilter,
+            ("NumericRangeFilter" Data..=)
+              Prelude.<$> numericRangeFilter,
+            ("RelativeDatesFilter" Data..=)
+              Prelude.<$> relativeDatesFilter,
+            ("TimeEqualityFilter" Data..=)
+              Prelude.<$> timeEqualityFilter,
+            ("TimeRangeFilter" Data..=)
+              Prelude.<$> timeRangeFilter,
+            ("TopBottomFilter" Data..=)
+              Prelude.<$> topBottomFilter
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterControl.hs b/gen/Amazonka/QuickSight/Types/FilterControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterControl.hs
@@ -0,0 +1,180 @@
+{-# 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.QuickSight.Types.FilterControl
+-- 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.QuickSight.Types.FilterControl 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.QuickSight.Types.FilterDateTimePickerControl
+import Amazonka.QuickSight.Types.FilterDropDownControl
+import Amazonka.QuickSight.Types.FilterListControl
+import Amazonka.QuickSight.Types.FilterRelativeDateTimeControl
+import Amazonka.QuickSight.Types.FilterSliderControl
+import Amazonka.QuickSight.Types.FilterTextAreaControl
+import Amazonka.QuickSight.Types.FilterTextFieldControl
+
+-- | The control of a filter that is used to interact with a dashboard or an
+-- analysis.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFilterControl' smart constructor.
+data FilterControl = FilterControl'
+  { -- | A control from a date filter that is used to specify date and time.
+    dateTimePicker :: Prelude.Maybe FilterDateTimePickerControl,
+    -- | A control to display a dropdown list with buttons that are used to
+    -- select a single value.
+    dropdown :: Prelude.Maybe FilterDropDownControl,
+    -- | A control to display a list of buttons or boxes. This is used to select
+    -- either a single value or multiple values.
+    list :: Prelude.Maybe FilterListControl,
+    -- | A control from a date filter that is used to specify the relative date.
+    relativeDateTime :: Prelude.Maybe FilterRelativeDateTimeControl,
+    -- | A control to display a horizontal toggle bar. This is used to change a
+    -- value by sliding the toggle.
+    slider :: Prelude.Maybe FilterSliderControl,
+    -- | A control to display a text box that is used to enter multiple entries.
+    textArea :: Prelude.Maybe FilterTextAreaControl,
+    -- | A control to display a text box that is used to enter a single entry.
+    textField :: Prelude.Maybe FilterTextFieldControl
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimePicker', 'filterControl_dateTimePicker' - A control from a date filter that is used to specify date and time.
+--
+-- 'dropdown', 'filterControl_dropdown' - A control to display a dropdown list with buttons that are used to
+-- select a single value.
+--
+-- 'list', 'filterControl_list' - A control to display a list of buttons or boxes. This is used to select
+-- either a single value or multiple values.
+--
+-- 'relativeDateTime', 'filterControl_relativeDateTime' - A control from a date filter that is used to specify the relative date.
+--
+-- 'slider', 'filterControl_slider' - A control to display a horizontal toggle bar. This is used to change a
+-- value by sliding the toggle.
+--
+-- 'textArea', 'filterControl_textArea' - A control to display a text box that is used to enter multiple entries.
+--
+-- 'textField', 'filterControl_textField' - A control to display a text box that is used to enter a single entry.
+newFilterControl ::
+  FilterControl
+newFilterControl =
+  FilterControl'
+    { dateTimePicker = Prelude.Nothing,
+      dropdown = Prelude.Nothing,
+      list = Prelude.Nothing,
+      relativeDateTime = Prelude.Nothing,
+      slider = Prelude.Nothing,
+      textArea = Prelude.Nothing,
+      textField = Prelude.Nothing
+    }
+
+-- | A control from a date filter that is used to specify date and time.
+filterControl_dateTimePicker :: Lens.Lens' FilterControl (Prelude.Maybe FilterDateTimePickerControl)
+filterControl_dateTimePicker = Lens.lens (\FilterControl' {dateTimePicker} -> dateTimePicker) (\s@FilterControl' {} a -> s {dateTimePicker = a} :: FilterControl)
+
+-- | A control to display a dropdown list with buttons that are used to
+-- select a single value.
+filterControl_dropdown :: Lens.Lens' FilterControl (Prelude.Maybe FilterDropDownControl)
+filterControl_dropdown = Lens.lens (\FilterControl' {dropdown} -> dropdown) (\s@FilterControl' {} a -> s {dropdown = a} :: FilterControl)
+
+-- | A control to display a list of buttons or boxes. This is used to select
+-- either a single value or multiple values.
+filterControl_list :: Lens.Lens' FilterControl (Prelude.Maybe FilterListControl)
+filterControl_list = Lens.lens (\FilterControl' {list} -> list) (\s@FilterControl' {} a -> s {list = a} :: FilterControl)
+
+-- | A control from a date filter that is used to specify the relative date.
+filterControl_relativeDateTime :: Lens.Lens' FilterControl (Prelude.Maybe FilterRelativeDateTimeControl)
+filterControl_relativeDateTime = Lens.lens (\FilterControl' {relativeDateTime} -> relativeDateTime) (\s@FilterControl' {} a -> s {relativeDateTime = a} :: FilterControl)
+
+-- | A control to display a horizontal toggle bar. This is used to change a
+-- value by sliding the toggle.
+filterControl_slider :: Lens.Lens' FilterControl (Prelude.Maybe FilterSliderControl)
+filterControl_slider = Lens.lens (\FilterControl' {slider} -> slider) (\s@FilterControl' {} a -> s {slider = a} :: FilterControl)
+
+-- | A control to display a text box that is used to enter multiple entries.
+filterControl_textArea :: Lens.Lens' FilterControl (Prelude.Maybe FilterTextAreaControl)
+filterControl_textArea = Lens.lens (\FilterControl' {textArea} -> textArea) (\s@FilterControl' {} a -> s {textArea = a} :: FilterControl)
+
+-- | A control to display a text box that is used to enter a single entry.
+filterControl_textField :: Lens.Lens' FilterControl (Prelude.Maybe FilterTextFieldControl)
+filterControl_textField = Lens.lens (\FilterControl' {textField} -> textField) (\s@FilterControl' {} a -> s {textField = a} :: FilterControl)
+
+instance Data.FromJSON FilterControl where
+  parseJSON =
+    Data.withObject
+      "FilterControl"
+      ( \x ->
+          FilterControl'
+            Prelude.<$> (x Data..:? "DateTimePicker")
+            Prelude.<*> (x Data..:? "Dropdown")
+            Prelude.<*> (x Data..:? "List")
+            Prelude.<*> (x Data..:? "RelativeDateTime")
+            Prelude.<*> (x Data..:? "Slider")
+            Prelude.<*> (x Data..:? "TextArea")
+            Prelude.<*> (x Data..:? "TextField")
+      )
+
+instance Prelude.Hashable FilterControl where
+  hashWithSalt _salt FilterControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimePicker
+      `Prelude.hashWithSalt` dropdown
+      `Prelude.hashWithSalt` list
+      `Prelude.hashWithSalt` relativeDateTime
+      `Prelude.hashWithSalt` slider
+      `Prelude.hashWithSalt` textArea
+      `Prelude.hashWithSalt` textField
+
+instance Prelude.NFData FilterControl where
+  rnf FilterControl' {..} =
+    Prelude.rnf dateTimePicker
+      `Prelude.seq` Prelude.rnf dropdown
+      `Prelude.seq` Prelude.rnf list
+      `Prelude.seq` Prelude.rnf relativeDateTime
+      `Prelude.seq` Prelude.rnf slider
+      `Prelude.seq` Prelude.rnf textArea
+      `Prelude.seq` Prelude.rnf textField
+
+instance Data.ToJSON FilterControl where
+  toJSON FilterControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimePicker" Data..=)
+              Prelude.<$> dateTimePicker,
+            ("Dropdown" Data..=) Prelude.<$> dropdown,
+            ("List" Data..=) Prelude.<$> list,
+            ("RelativeDateTime" Data..=)
+              Prelude.<$> relativeDateTime,
+            ("Slider" Data..=) Prelude.<$> slider,
+            ("TextArea" Data..=) Prelude.<$> textArea,
+            ("TextField" Data..=) Prelude.<$> textField
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterDateTimePickerControl.hs b/gen/Amazonka/QuickSight/Types/FilterDateTimePickerControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterDateTimePickerControl.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterDateTimePickerControl
+-- 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.QuickSight.Types.FilterDateTimePickerControl 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.QuickSight.Types.DateTimePickerControlDisplayOptions
+import Amazonka.QuickSight.Types.SheetControlDateTimePickerType
+
+-- | A control from a date filter that is used to specify date and time.
+--
+-- /See:/ 'newFilterDateTimePickerControl' smart constructor.
+data FilterDateTimePickerControl = FilterDateTimePickerControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe DateTimePickerControlDisplayOptions,
+    -- | The date time picker type of a @FilterDateTimePickerControl@. Choose one
+    -- of the following options:
+    --
+    -- -   @SINGLE_VALUED@: The filter condition is a fixed date.
+    --
+    -- -   @DATE_RANGE@: The filter condition is a date time range.
+    type' :: Prelude.Maybe SheetControlDateTimePickerType,
+    -- | The ID of the @FilterDateTimePickerControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterDateTimePickerControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterDateTimePickerControl@.
+    sourceFilterId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterDateTimePickerControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'filterDateTimePickerControl_displayOptions' - The display options of a control.
+--
+-- 'type'', 'filterDateTimePickerControl_type' - The date time picker type of a @FilterDateTimePickerControl@. Choose one
+-- of the following options:
+--
+-- -   @SINGLE_VALUED@: The filter condition is a fixed date.
+--
+-- -   @DATE_RANGE@: The filter condition is a date time range.
+--
+-- 'filterControlId', 'filterDateTimePickerControl_filterControlId' - The ID of the @FilterDateTimePickerControl@.
+--
+-- 'title', 'filterDateTimePickerControl_title' - The title of the @FilterDateTimePickerControl@.
+--
+-- 'sourceFilterId', 'filterDateTimePickerControl_sourceFilterId' - The source filter ID of the @FilterDateTimePickerControl@.
+newFilterDateTimePickerControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  FilterDateTimePickerControl
+newFilterDateTimePickerControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_ =
+    FilterDateTimePickerControl'
+      { displayOptions =
+          Prelude.Nothing,
+        type' = Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_
+      }
+
+-- | The display options of a control.
+filterDateTimePickerControl_displayOptions :: Lens.Lens' FilterDateTimePickerControl (Prelude.Maybe DateTimePickerControlDisplayOptions)
+filterDateTimePickerControl_displayOptions = Lens.lens (\FilterDateTimePickerControl' {displayOptions} -> displayOptions) (\s@FilterDateTimePickerControl' {} a -> s {displayOptions = a} :: FilterDateTimePickerControl)
+
+-- | The date time picker type of a @FilterDateTimePickerControl@. Choose one
+-- of the following options:
+--
+-- -   @SINGLE_VALUED@: The filter condition is a fixed date.
+--
+-- -   @DATE_RANGE@: The filter condition is a date time range.
+filterDateTimePickerControl_type :: Lens.Lens' FilterDateTimePickerControl (Prelude.Maybe SheetControlDateTimePickerType)
+filterDateTimePickerControl_type = Lens.lens (\FilterDateTimePickerControl' {type'} -> type') (\s@FilterDateTimePickerControl' {} a -> s {type' = a} :: FilterDateTimePickerControl)
+
+-- | The ID of the @FilterDateTimePickerControl@.
+filterDateTimePickerControl_filterControlId :: Lens.Lens' FilterDateTimePickerControl Prelude.Text
+filterDateTimePickerControl_filterControlId = Lens.lens (\FilterDateTimePickerControl' {filterControlId} -> filterControlId) (\s@FilterDateTimePickerControl' {} a -> s {filterControlId = a} :: FilterDateTimePickerControl)
+
+-- | The title of the @FilterDateTimePickerControl@.
+filterDateTimePickerControl_title :: Lens.Lens' FilterDateTimePickerControl Prelude.Text
+filterDateTimePickerControl_title = Lens.lens (\FilterDateTimePickerControl' {title} -> title) (\s@FilterDateTimePickerControl' {} a -> s {title = a} :: FilterDateTimePickerControl)
+
+-- | The source filter ID of the @FilterDateTimePickerControl@.
+filterDateTimePickerControl_sourceFilterId :: Lens.Lens' FilterDateTimePickerControl Prelude.Text
+filterDateTimePickerControl_sourceFilterId = Lens.lens (\FilterDateTimePickerControl' {sourceFilterId} -> sourceFilterId) (\s@FilterDateTimePickerControl' {} a -> s {sourceFilterId = a} :: FilterDateTimePickerControl)
+
+instance Data.FromJSON FilterDateTimePickerControl where
+  parseJSON =
+    Data.withObject
+      "FilterDateTimePickerControl"
+      ( \x ->
+          FilterDateTimePickerControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+      )
+
+instance Prelude.Hashable FilterDateTimePickerControl where
+  hashWithSalt _salt FilterDateTimePickerControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+
+instance Prelude.NFData FilterDateTimePickerControl where
+  rnf FilterDateTimePickerControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+
+instance Data.ToJSON FilterDateTimePickerControl where
+  toJSON FilterDateTimePickerControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterDropDownControl.hs b/gen/Amazonka/QuickSight/Types/FilterDropDownControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterDropDownControl.hs
@@ -0,0 +1,202 @@
+{-# 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.QuickSight.Types.FilterDropDownControl
+-- 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.QuickSight.Types.FilterDropDownControl 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.QuickSight.Types.CascadingControlConfiguration
+import Amazonka.QuickSight.Types.DropDownControlDisplayOptions
+import Amazonka.QuickSight.Types.FilterSelectableValues
+import Amazonka.QuickSight.Types.SheetControlListType
+
+-- | A control to display a dropdown list with buttons that are used to
+-- select a single value.
+--
+-- /See:/ 'newFilterDropDownControl' smart constructor.
+data FilterDropDownControl = FilterDropDownControl'
+  { -- | The values that are displayed in a control can be configured to only
+    -- show values that are valid based on what\'s selected in other controls.
+    cascadingControlConfiguration :: Prelude.Maybe CascadingControlConfiguration,
+    -- | The display options of the @FilterDropDownControl@.
+    displayOptions :: Prelude.Maybe DropDownControlDisplayOptions,
+    -- | A list of selectable values that are used in a control.
+    selectableValues :: Prelude.Maybe FilterSelectableValues,
+    -- | The type of the @FilterDropDownControl@. Choose one of the following
+    -- options:
+    --
+    -- -   @MULTI_SELECT@: The user can select multiple entries from a dropdown
+    --     menu.
+    --
+    -- -   @SINGLE_SELECT@: The user can select a single entry from a dropdown
+    --     menu.
+    type' :: Prelude.Maybe SheetControlListType,
+    -- | The ID of the @FilterDropDownControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterDropDownControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterDropDownControl@.
+    sourceFilterId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterDropDownControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cascadingControlConfiguration', 'filterDropDownControl_cascadingControlConfiguration' - The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+--
+-- 'displayOptions', 'filterDropDownControl_displayOptions' - The display options of the @FilterDropDownControl@.
+--
+-- 'selectableValues', 'filterDropDownControl_selectableValues' - A list of selectable values that are used in a control.
+--
+-- 'type'', 'filterDropDownControl_type' - The type of the @FilterDropDownControl@. Choose one of the following
+-- options:
+--
+-- -   @MULTI_SELECT@: The user can select multiple entries from a dropdown
+--     menu.
+--
+-- -   @SINGLE_SELECT@: The user can select a single entry from a dropdown
+--     menu.
+--
+-- 'filterControlId', 'filterDropDownControl_filterControlId' - The ID of the @FilterDropDownControl@.
+--
+-- 'title', 'filterDropDownControl_title' - The title of the @FilterDropDownControl@.
+--
+-- 'sourceFilterId', 'filterDropDownControl_sourceFilterId' - The source filter ID of the @FilterDropDownControl@.
+newFilterDropDownControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  FilterDropDownControl
+newFilterDropDownControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_ =
+    FilterDropDownControl'
+      { cascadingControlConfiguration =
+          Prelude.Nothing,
+        displayOptions = Prelude.Nothing,
+        selectableValues = Prelude.Nothing,
+        type' = Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_
+      }
+
+-- | The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+filterDropDownControl_cascadingControlConfiguration :: Lens.Lens' FilterDropDownControl (Prelude.Maybe CascadingControlConfiguration)
+filterDropDownControl_cascadingControlConfiguration = Lens.lens (\FilterDropDownControl' {cascadingControlConfiguration} -> cascadingControlConfiguration) (\s@FilterDropDownControl' {} a -> s {cascadingControlConfiguration = a} :: FilterDropDownControl)
+
+-- | The display options of the @FilterDropDownControl@.
+filterDropDownControl_displayOptions :: Lens.Lens' FilterDropDownControl (Prelude.Maybe DropDownControlDisplayOptions)
+filterDropDownControl_displayOptions = Lens.lens (\FilterDropDownControl' {displayOptions} -> displayOptions) (\s@FilterDropDownControl' {} a -> s {displayOptions = a} :: FilterDropDownControl)
+
+-- | A list of selectable values that are used in a control.
+filterDropDownControl_selectableValues :: Lens.Lens' FilterDropDownControl (Prelude.Maybe FilterSelectableValues)
+filterDropDownControl_selectableValues = Lens.lens (\FilterDropDownControl' {selectableValues} -> selectableValues) (\s@FilterDropDownControl' {} a -> s {selectableValues = a} :: FilterDropDownControl)
+
+-- | The type of the @FilterDropDownControl@. Choose one of the following
+-- options:
+--
+-- -   @MULTI_SELECT@: The user can select multiple entries from a dropdown
+--     menu.
+--
+-- -   @SINGLE_SELECT@: The user can select a single entry from a dropdown
+--     menu.
+filterDropDownControl_type :: Lens.Lens' FilterDropDownControl (Prelude.Maybe SheetControlListType)
+filterDropDownControl_type = Lens.lens (\FilterDropDownControl' {type'} -> type') (\s@FilterDropDownControl' {} a -> s {type' = a} :: FilterDropDownControl)
+
+-- | The ID of the @FilterDropDownControl@.
+filterDropDownControl_filterControlId :: Lens.Lens' FilterDropDownControl Prelude.Text
+filterDropDownControl_filterControlId = Lens.lens (\FilterDropDownControl' {filterControlId} -> filterControlId) (\s@FilterDropDownControl' {} a -> s {filterControlId = a} :: FilterDropDownControl)
+
+-- | The title of the @FilterDropDownControl@.
+filterDropDownControl_title :: Lens.Lens' FilterDropDownControl Prelude.Text
+filterDropDownControl_title = Lens.lens (\FilterDropDownControl' {title} -> title) (\s@FilterDropDownControl' {} a -> s {title = a} :: FilterDropDownControl)
+
+-- | The source filter ID of the @FilterDropDownControl@.
+filterDropDownControl_sourceFilterId :: Lens.Lens' FilterDropDownControl Prelude.Text
+filterDropDownControl_sourceFilterId = Lens.lens (\FilterDropDownControl' {sourceFilterId} -> sourceFilterId) (\s@FilterDropDownControl' {} a -> s {sourceFilterId = a} :: FilterDropDownControl)
+
+instance Data.FromJSON FilterDropDownControl where
+  parseJSON =
+    Data.withObject
+      "FilterDropDownControl"
+      ( \x ->
+          FilterDropDownControl'
+            Prelude.<$> (x Data..:? "CascadingControlConfiguration")
+            Prelude.<*> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..:? "SelectableValues")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+      )
+
+instance Prelude.Hashable FilterDropDownControl where
+  hashWithSalt _salt FilterDropDownControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` cascadingControlConfiguration
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` selectableValues
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+
+instance Prelude.NFData FilterDropDownControl where
+  rnf FilterDropDownControl' {..} =
+    Prelude.rnf cascadingControlConfiguration
+      `Prelude.seq` Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf selectableValues
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+
+instance Data.ToJSON FilterDropDownControl where
+  toJSON FilterDropDownControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CascadingControlConfiguration" Data..=)
+              Prelude.<$> cascadingControlConfiguration,
+            ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            ("SelectableValues" Data..=)
+              Prelude.<$> selectableValues,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterGroup.hs b/gen/Amazonka/QuickSight/Types/FilterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterGroup.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterGroup
+-- 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.QuickSight.Types.FilterGroup 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.QuickSight.Types.CrossDatasetTypes
+import Amazonka.QuickSight.Types.Filter
+import Amazonka.QuickSight.Types.FilterScopeConfiguration
+import Amazonka.QuickSight.Types.WidgetStatus
+
+-- | A grouping of individual filters. Filter groups are applied to the same
+-- group of visuals.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/add-a-compound-filter.html Adding filter conditions (group filters) with AND and OR operators>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newFilterGroup' smart constructor.
+data FilterGroup = FilterGroup'
+  { -- | The status of the @FilterGroup@.
+    status :: Prelude.Maybe WidgetStatus,
+    -- | The value that uniquely identifies a @FilterGroup@ within a dashboard,
+    -- template, or analysis.
+    filterGroupId :: Prelude.Text,
+    -- | The list of filters that are present in a @FilterGroup@.
+    filters :: [Filter],
+    -- | The configuration that specifies what scope to apply to a @FilterGroup@.
+    --
+    -- This is a union type structure. For this structure to be valid, only one
+    -- of the attributes can be defined.
+    scopeConfiguration :: FilterScopeConfiguration,
+    -- | The filter new feature which can apply filter group to all data sets.
+    -- Choose one of the following options:
+    --
+    -- -   @ALL_DATASETS@
+    --
+    -- -   @SINGLE_DATASET@
+    crossDataset :: CrossDatasetTypes
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'filterGroup_status' - The status of the @FilterGroup@.
+--
+-- 'filterGroupId', 'filterGroup_filterGroupId' - The value that uniquely identifies a @FilterGroup@ within a dashboard,
+-- template, or analysis.
+--
+-- 'filters', 'filterGroup_filters' - The list of filters that are present in a @FilterGroup@.
+--
+-- 'scopeConfiguration', 'filterGroup_scopeConfiguration' - The configuration that specifies what scope to apply to a @FilterGroup@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- 'crossDataset', 'filterGroup_crossDataset' - The filter new feature which can apply filter group to all data sets.
+-- Choose one of the following options:
+--
+-- -   @ALL_DATASETS@
+--
+-- -   @SINGLE_DATASET@
+newFilterGroup ::
+  -- | 'filterGroupId'
+  Prelude.Text ->
+  -- | 'scopeConfiguration'
+  FilterScopeConfiguration ->
+  -- | 'crossDataset'
+  CrossDatasetTypes ->
+  FilterGroup
+newFilterGroup
+  pFilterGroupId_
+  pScopeConfiguration_
+  pCrossDataset_ =
+    FilterGroup'
+      { status = Prelude.Nothing,
+        filterGroupId = pFilterGroupId_,
+        filters = Prelude.mempty,
+        scopeConfiguration = pScopeConfiguration_,
+        crossDataset = pCrossDataset_
+      }
+
+-- | The status of the @FilterGroup@.
+filterGroup_status :: Lens.Lens' FilterGroup (Prelude.Maybe WidgetStatus)
+filterGroup_status = Lens.lens (\FilterGroup' {status} -> status) (\s@FilterGroup' {} a -> s {status = a} :: FilterGroup)
+
+-- | The value that uniquely identifies a @FilterGroup@ within a dashboard,
+-- template, or analysis.
+filterGroup_filterGroupId :: Lens.Lens' FilterGroup Prelude.Text
+filterGroup_filterGroupId = Lens.lens (\FilterGroup' {filterGroupId} -> filterGroupId) (\s@FilterGroup' {} a -> s {filterGroupId = a} :: FilterGroup)
+
+-- | The list of filters that are present in a @FilterGroup@.
+filterGroup_filters :: Lens.Lens' FilterGroup [Filter]
+filterGroup_filters = Lens.lens (\FilterGroup' {filters} -> filters) (\s@FilterGroup' {} a -> s {filters = a} :: FilterGroup) Prelude.. Lens.coerced
+
+-- | The configuration that specifies what scope to apply to a @FilterGroup@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+filterGroup_scopeConfiguration :: Lens.Lens' FilterGroup FilterScopeConfiguration
+filterGroup_scopeConfiguration = Lens.lens (\FilterGroup' {scopeConfiguration} -> scopeConfiguration) (\s@FilterGroup' {} a -> s {scopeConfiguration = a} :: FilterGroup)
+
+-- | The filter new feature which can apply filter group to all data sets.
+-- Choose one of the following options:
+--
+-- -   @ALL_DATASETS@
+--
+-- -   @SINGLE_DATASET@
+filterGroup_crossDataset :: Lens.Lens' FilterGroup CrossDatasetTypes
+filterGroup_crossDataset = Lens.lens (\FilterGroup' {crossDataset} -> crossDataset) (\s@FilterGroup' {} a -> s {crossDataset = a} :: FilterGroup)
+
+instance Data.FromJSON FilterGroup where
+  parseJSON =
+    Data.withObject
+      "FilterGroup"
+      ( \x ->
+          FilterGroup'
+            Prelude.<$> (x Data..:? "Status")
+            Prelude.<*> (x Data..: "FilterGroupId")
+            Prelude.<*> (x Data..:? "Filters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "ScopeConfiguration")
+            Prelude.<*> (x Data..: "CrossDataset")
+      )
+
+instance Prelude.Hashable FilterGroup where
+  hashWithSalt _salt FilterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` filterGroupId
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` scopeConfiguration
+      `Prelude.hashWithSalt` crossDataset
+
+instance Prelude.NFData FilterGroup where
+  rnf FilterGroup' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf filterGroupId
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf scopeConfiguration
+      `Prelude.seq` Prelude.rnf crossDataset
+
+instance Data.ToJSON FilterGroup where
+  toJSON FilterGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just ("FilterGroupId" Data..= filterGroupId),
+            Prelude.Just ("Filters" Data..= filters),
+            Prelude.Just
+              ("ScopeConfiguration" Data..= scopeConfiguration),
+            Prelude.Just ("CrossDataset" Data..= crossDataset)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterListConfiguration.hs b/gen/Amazonka/QuickSight/Types/FilterListConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterListConfiguration.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterListConfiguration
+-- 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.QuickSight.Types.FilterListConfiguration 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.QuickSight.Types.CategoryFilterMatchOperator
+import Amazonka.QuickSight.Types.CategoryFilterSelectAllOptions
+
+-- | A list of filter configurations.
+--
+-- /See:/ 'newFilterListConfiguration' smart constructor.
+data FilterListConfiguration = FilterListConfiguration'
+  { -- | The list of category values for the filter.
+    categoryValues :: Prelude.Maybe [Prelude.Text],
+    -- | Select all of the values. Null is not the assigned value of select all.
+    --
+    -- -   @FILTER_ALL_VALUES@
+    selectAllOptions :: Prelude.Maybe CategoryFilterSelectAllOptions,
+    -- | The match operator that is used to determine if a filter should be
+    -- applied.
+    matchOperator :: CategoryFilterMatchOperator
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterListConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryValues', 'filterListConfiguration_categoryValues' - The list of category values for the filter.
+--
+-- 'selectAllOptions', 'filterListConfiguration_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+--
+-- 'matchOperator', 'filterListConfiguration_matchOperator' - The match operator that is used to determine if a filter should be
+-- applied.
+newFilterListConfiguration ::
+  -- | 'matchOperator'
+  CategoryFilterMatchOperator ->
+  FilterListConfiguration
+newFilterListConfiguration pMatchOperator_ =
+  FilterListConfiguration'
+    { categoryValues =
+        Prelude.Nothing,
+      selectAllOptions = Prelude.Nothing,
+      matchOperator = pMatchOperator_
+    }
+
+-- | The list of category values for the filter.
+filterListConfiguration_categoryValues :: Lens.Lens' FilterListConfiguration (Prelude.Maybe [Prelude.Text])
+filterListConfiguration_categoryValues = Lens.lens (\FilterListConfiguration' {categoryValues} -> categoryValues) (\s@FilterListConfiguration' {} a -> s {categoryValues = a} :: FilterListConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+filterListConfiguration_selectAllOptions :: Lens.Lens' FilterListConfiguration (Prelude.Maybe CategoryFilterSelectAllOptions)
+filterListConfiguration_selectAllOptions = Lens.lens (\FilterListConfiguration' {selectAllOptions} -> selectAllOptions) (\s@FilterListConfiguration' {} a -> s {selectAllOptions = a} :: FilterListConfiguration)
+
+-- | The match operator that is used to determine if a filter should be
+-- applied.
+filterListConfiguration_matchOperator :: Lens.Lens' FilterListConfiguration CategoryFilterMatchOperator
+filterListConfiguration_matchOperator = Lens.lens (\FilterListConfiguration' {matchOperator} -> matchOperator) (\s@FilterListConfiguration' {} a -> s {matchOperator = a} :: FilterListConfiguration)
+
+instance Data.FromJSON FilterListConfiguration where
+  parseJSON =
+    Data.withObject
+      "FilterListConfiguration"
+      ( \x ->
+          FilterListConfiguration'
+            Prelude.<$> (x Data..:? "CategoryValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..: "MatchOperator")
+      )
+
+instance Prelude.Hashable FilterListConfiguration where
+  hashWithSalt _salt FilterListConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryValues
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` matchOperator
+
+instance Prelude.NFData FilterListConfiguration where
+  rnf FilterListConfiguration' {..} =
+    Prelude.rnf categoryValues
+      `Prelude.seq` Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf matchOperator
+
+instance Data.ToJSON FilterListConfiguration where
+  toJSON FilterListConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryValues" Data..=)
+              Prelude.<$> categoryValues,
+            ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            Prelude.Just
+              ("MatchOperator" Data..= matchOperator)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterListControl.hs b/gen/Amazonka/QuickSight/Types/FilterListControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterListControl.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterListControl
+-- 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.QuickSight.Types.FilterListControl 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.QuickSight.Types.CascadingControlConfiguration
+import Amazonka.QuickSight.Types.FilterSelectableValues
+import Amazonka.QuickSight.Types.ListControlDisplayOptions
+import Amazonka.QuickSight.Types.SheetControlListType
+
+-- | A control to display a list of buttons or boxes. This is used to select
+-- either a single value or multiple values.
+--
+-- /See:/ 'newFilterListControl' smart constructor.
+data FilterListControl = FilterListControl'
+  { -- | The values that are displayed in a control can be configured to only
+    -- show values that are valid based on what\'s selected in other controls.
+    cascadingControlConfiguration :: Prelude.Maybe CascadingControlConfiguration,
+    -- | The display options of a control.
+    displayOptions :: Prelude.Maybe ListControlDisplayOptions,
+    -- | A list of selectable values that are used in a control.
+    selectableValues :: Prelude.Maybe FilterSelectableValues,
+    -- | The type of @FilterListControl@. Choose one of the following options:
+    --
+    -- -   @MULTI_SELECT@: The user can select multiple entries from the list.
+    --
+    -- -   @SINGLE_SELECT@: The user can select a single entry from the list.
+    type' :: Prelude.Maybe SheetControlListType,
+    -- | The ID of the @FilterListControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterListControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterListControl@.
+    sourceFilterId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterListControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cascadingControlConfiguration', 'filterListControl_cascadingControlConfiguration' - The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+--
+-- 'displayOptions', 'filterListControl_displayOptions' - The display options of a control.
+--
+-- 'selectableValues', 'filterListControl_selectableValues' - A list of selectable values that are used in a control.
+--
+-- 'type'', 'filterListControl_type' - The type of @FilterListControl@. Choose one of the following options:
+--
+-- -   @MULTI_SELECT@: The user can select multiple entries from the list.
+--
+-- -   @SINGLE_SELECT@: The user can select a single entry from the list.
+--
+-- 'filterControlId', 'filterListControl_filterControlId' - The ID of the @FilterListControl@.
+--
+-- 'title', 'filterListControl_title' - The title of the @FilterListControl@.
+--
+-- 'sourceFilterId', 'filterListControl_sourceFilterId' - The source filter ID of the @FilterListControl@.
+newFilterListControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  FilterListControl
+newFilterListControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_ =
+    FilterListControl'
+      { cascadingControlConfiguration =
+          Prelude.Nothing,
+        displayOptions = Prelude.Nothing,
+        selectableValues = Prelude.Nothing,
+        type' = Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_
+      }
+
+-- | The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+filterListControl_cascadingControlConfiguration :: Lens.Lens' FilterListControl (Prelude.Maybe CascadingControlConfiguration)
+filterListControl_cascadingControlConfiguration = Lens.lens (\FilterListControl' {cascadingControlConfiguration} -> cascadingControlConfiguration) (\s@FilterListControl' {} a -> s {cascadingControlConfiguration = a} :: FilterListControl)
+
+-- | The display options of a control.
+filterListControl_displayOptions :: Lens.Lens' FilterListControl (Prelude.Maybe ListControlDisplayOptions)
+filterListControl_displayOptions = Lens.lens (\FilterListControl' {displayOptions} -> displayOptions) (\s@FilterListControl' {} a -> s {displayOptions = a} :: FilterListControl)
+
+-- | A list of selectable values that are used in a control.
+filterListControl_selectableValues :: Lens.Lens' FilterListControl (Prelude.Maybe FilterSelectableValues)
+filterListControl_selectableValues = Lens.lens (\FilterListControl' {selectableValues} -> selectableValues) (\s@FilterListControl' {} a -> s {selectableValues = a} :: FilterListControl)
+
+-- | The type of @FilterListControl@. Choose one of the following options:
+--
+-- -   @MULTI_SELECT@: The user can select multiple entries from the list.
+--
+-- -   @SINGLE_SELECT@: The user can select a single entry from the list.
+filterListControl_type :: Lens.Lens' FilterListControl (Prelude.Maybe SheetControlListType)
+filterListControl_type = Lens.lens (\FilterListControl' {type'} -> type') (\s@FilterListControl' {} a -> s {type' = a} :: FilterListControl)
+
+-- | The ID of the @FilterListControl@.
+filterListControl_filterControlId :: Lens.Lens' FilterListControl Prelude.Text
+filterListControl_filterControlId = Lens.lens (\FilterListControl' {filterControlId} -> filterControlId) (\s@FilterListControl' {} a -> s {filterControlId = a} :: FilterListControl)
+
+-- | The title of the @FilterListControl@.
+filterListControl_title :: Lens.Lens' FilterListControl Prelude.Text
+filterListControl_title = Lens.lens (\FilterListControl' {title} -> title) (\s@FilterListControl' {} a -> s {title = a} :: FilterListControl)
+
+-- | The source filter ID of the @FilterListControl@.
+filterListControl_sourceFilterId :: Lens.Lens' FilterListControl Prelude.Text
+filterListControl_sourceFilterId = Lens.lens (\FilterListControl' {sourceFilterId} -> sourceFilterId) (\s@FilterListControl' {} a -> s {sourceFilterId = a} :: FilterListControl)
+
+instance Data.FromJSON FilterListControl where
+  parseJSON =
+    Data.withObject
+      "FilterListControl"
+      ( \x ->
+          FilterListControl'
+            Prelude.<$> (x Data..:? "CascadingControlConfiguration")
+            Prelude.<*> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..:? "SelectableValues")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+      )
+
+instance Prelude.Hashable FilterListControl where
+  hashWithSalt _salt FilterListControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` cascadingControlConfiguration
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` selectableValues
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+
+instance Prelude.NFData FilterListControl where
+  rnf FilterListControl' {..} =
+    Prelude.rnf cascadingControlConfiguration
+      `Prelude.seq` Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf selectableValues
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+
+instance Data.ToJSON FilterListControl where
+  toJSON FilterListControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CascadingControlConfiguration" Data..=)
+              Prelude.<$> cascadingControlConfiguration,
+            ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            ("SelectableValues" Data..=)
+              Prelude.<$> selectableValues,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterNullOption.hs b/gen/Amazonka/QuickSight/Types/FilterNullOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterNullOption.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.QuickSight.Types.FilterNullOption
+-- 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.QuickSight.Types.FilterNullOption
+  ( FilterNullOption
+      ( ..,
+        FilterNullOption_ALL_VALUES,
+        FilterNullOption_NON_NULLS_ONLY,
+        FilterNullOption_NULLS_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FilterNullOption = FilterNullOption'
+  { fromFilterNullOption ::
+      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 FilterNullOption_ALL_VALUES :: FilterNullOption
+pattern FilterNullOption_ALL_VALUES = FilterNullOption' "ALL_VALUES"
+
+pattern FilterNullOption_NON_NULLS_ONLY :: FilterNullOption
+pattern FilterNullOption_NON_NULLS_ONLY = FilterNullOption' "NON_NULLS_ONLY"
+
+pattern FilterNullOption_NULLS_ONLY :: FilterNullOption
+pattern FilterNullOption_NULLS_ONLY = FilterNullOption' "NULLS_ONLY"
+
+{-# COMPLETE
+  FilterNullOption_ALL_VALUES,
+  FilterNullOption_NON_NULLS_ONLY,
+  FilterNullOption_NULLS_ONLY,
+  FilterNullOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FilterOperation.hs b/gen/Amazonka/QuickSight/Types/FilterOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterOperation.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.QuickSight.Types.FilterOperation
+-- 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.QuickSight.Types.FilterOperation 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 transform operation that filters rows based on a condition.
+--
+-- /See:/ 'newFilterOperation' smart constructor.
+data FilterOperation = FilterOperation'
+  { -- | An expression that must evaluate to a Boolean value. Rows for which the
+    -- expression evaluates to true are kept in the dataset.
+    conditionExpression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conditionExpression', 'filterOperation_conditionExpression' - An expression that must evaluate to a Boolean value. Rows for which the
+-- expression evaluates to true are kept in the dataset.
+newFilterOperation ::
+  -- | 'conditionExpression'
+  Prelude.Text ->
+  FilterOperation
+newFilterOperation pConditionExpression_ =
+  FilterOperation'
+    { conditionExpression =
+        Data._Sensitive Lens.# pConditionExpression_
+    }
+
+-- | An expression that must evaluate to a Boolean value. Rows for which the
+-- expression evaluates to true are kept in the dataset.
+filterOperation_conditionExpression :: Lens.Lens' FilterOperation Prelude.Text
+filterOperation_conditionExpression = Lens.lens (\FilterOperation' {conditionExpression} -> conditionExpression) (\s@FilterOperation' {} a -> s {conditionExpression = a} :: FilterOperation) Prelude.. Data._Sensitive
+
+instance Data.FromJSON FilterOperation where
+  parseJSON =
+    Data.withObject
+      "FilterOperation"
+      ( \x ->
+          FilterOperation'
+            Prelude.<$> (x Data..: "ConditionExpression")
+      )
+
+instance Prelude.Hashable FilterOperation where
+  hashWithSalt _salt FilterOperation' {..} =
+    _salt `Prelude.hashWithSalt` conditionExpression
+
+instance Prelude.NFData FilterOperation where
+  rnf FilterOperation' {..} =
+    Prelude.rnf conditionExpression
+
+instance Data.ToJSON FilterOperation where
+  toJSON FilterOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ConditionExpression" Data..= conditionExpression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterOperationSelectedFieldsConfiguration.hs b/gen/Amazonka/QuickSight/Types/FilterOperationSelectedFieldsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterOperationSelectedFieldsConfiguration.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterOperationSelectedFieldsConfiguration
+-- 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.QuickSight.Types.FilterOperationSelectedFieldsConfiguration 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.QuickSight.Types.SelectedFieldOptions
+
+-- | The configuration of selected fields in
+-- the@CustomActionFilterOperation@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFilterOperationSelectedFieldsConfiguration' smart constructor.
+data FilterOperationSelectedFieldsConfiguration = FilterOperationSelectedFieldsConfiguration'
+  { -- | A structure that contains the options that choose which fields are
+    -- filtered in the @CustomActionFilterOperation@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @ALL_FIELDS@: Applies the filter operation to all fields.
+    selectedFieldOptions :: Prelude.Maybe SelectedFieldOptions,
+    -- | Chooses the fields that are filtered in @CustomActionFilterOperation@.
+    selectedFields :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterOperationSelectedFieldsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selectedFieldOptions', 'filterOperationSelectedFieldsConfiguration_selectedFieldOptions' - A structure that contains the options that choose which fields are
+-- filtered in the @CustomActionFilterOperation@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @ALL_FIELDS@: Applies the filter operation to all fields.
+--
+-- 'selectedFields', 'filterOperationSelectedFieldsConfiguration_selectedFields' - Chooses the fields that are filtered in @CustomActionFilterOperation@.
+newFilterOperationSelectedFieldsConfiguration ::
+  FilterOperationSelectedFieldsConfiguration
+newFilterOperationSelectedFieldsConfiguration =
+  FilterOperationSelectedFieldsConfiguration'
+    { selectedFieldOptions =
+        Prelude.Nothing,
+      selectedFields =
+        Prelude.Nothing
+    }
+
+-- | A structure that contains the options that choose which fields are
+-- filtered in the @CustomActionFilterOperation@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @ALL_FIELDS@: Applies the filter operation to all fields.
+filterOperationSelectedFieldsConfiguration_selectedFieldOptions :: Lens.Lens' FilterOperationSelectedFieldsConfiguration (Prelude.Maybe SelectedFieldOptions)
+filterOperationSelectedFieldsConfiguration_selectedFieldOptions = Lens.lens (\FilterOperationSelectedFieldsConfiguration' {selectedFieldOptions} -> selectedFieldOptions) (\s@FilterOperationSelectedFieldsConfiguration' {} a -> s {selectedFieldOptions = a} :: FilterOperationSelectedFieldsConfiguration)
+
+-- | Chooses the fields that are filtered in @CustomActionFilterOperation@.
+filterOperationSelectedFieldsConfiguration_selectedFields :: Lens.Lens' FilterOperationSelectedFieldsConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+filterOperationSelectedFieldsConfiguration_selectedFields = Lens.lens (\FilterOperationSelectedFieldsConfiguration' {selectedFields} -> selectedFields) (\s@FilterOperationSelectedFieldsConfiguration' {} a -> s {selectedFields = a} :: FilterOperationSelectedFieldsConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    FilterOperationSelectedFieldsConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "FilterOperationSelectedFieldsConfiguration"
+      ( \x ->
+          FilterOperationSelectedFieldsConfiguration'
+            Prelude.<$> (x Data..:? "SelectedFieldOptions")
+            Prelude.<*> (x Data..:? "SelectedFields")
+      )
+
+instance
+  Prelude.Hashable
+    FilterOperationSelectedFieldsConfiguration
+  where
+  hashWithSalt
+    _salt
+    FilterOperationSelectedFieldsConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` selectedFieldOptions
+        `Prelude.hashWithSalt` selectedFields
+
+instance
+  Prelude.NFData
+    FilterOperationSelectedFieldsConfiguration
+  where
+  rnf FilterOperationSelectedFieldsConfiguration' {..} =
+    Prelude.rnf selectedFieldOptions
+      `Prelude.seq` Prelude.rnf selectedFields
+
+instance
+  Data.ToJSON
+    FilterOperationSelectedFieldsConfiguration
+  where
+  toJSON
+    FilterOperationSelectedFieldsConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("SelectedFieldOptions" Data..=)
+                Prelude.<$> selectedFieldOptions,
+              ("SelectedFields" Data..=)
+                Prelude.<$> selectedFields
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/FilterOperationTargetVisualsConfiguration.hs b/gen/Amazonka/QuickSight/Types/FilterOperationTargetVisualsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterOperationTargetVisualsConfiguration.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterOperationTargetVisualsConfiguration
+-- 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.QuickSight.Types.FilterOperationTargetVisualsConfiguration 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.QuickSight.Types.SameSheetTargetVisualConfiguration
+
+-- | The configuration of target visuals that you want to be filtered.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFilterOperationTargetVisualsConfiguration' smart constructor.
+data FilterOperationTargetVisualsConfiguration = FilterOperationTargetVisualsConfiguration'
+  { -- | The configuration of the same-sheet target visuals that you want to be
+    -- filtered.
+    sameSheetTargetVisualConfiguration :: Prelude.Maybe SameSheetTargetVisualConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterOperationTargetVisualsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sameSheetTargetVisualConfiguration', 'filterOperationTargetVisualsConfiguration_sameSheetTargetVisualConfiguration' - The configuration of the same-sheet target visuals that you want to be
+-- filtered.
+newFilterOperationTargetVisualsConfiguration ::
+  FilterOperationTargetVisualsConfiguration
+newFilterOperationTargetVisualsConfiguration =
+  FilterOperationTargetVisualsConfiguration'
+    { sameSheetTargetVisualConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The configuration of the same-sheet target visuals that you want to be
+-- filtered.
+filterOperationTargetVisualsConfiguration_sameSheetTargetVisualConfiguration :: Lens.Lens' FilterOperationTargetVisualsConfiguration (Prelude.Maybe SameSheetTargetVisualConfiguration)
+filterOperationTargetVisualsConfiguration_sameSheetTargetVisualConfiguration = Lens.lens (\FilterOperationTargetVisualsConfiguration' {sameSheetTargetVisualConfiguration} -> sameSheetTargetVisualConfiguration) (\s@FilterOperationTargetVisualsConfiguration' {} a -> s {sameSheetTargetVisualConfiguration = a} :: FilterOperationTargetVisualsConfiguration)
+
+instance
+  Data.FromJSON
+    FilterOperationTargetVisualsConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "FilterOperationTargetVisualsConfiguration"
+      ( \x ->
+          FilterOperationTargetVisualsConfiguration'
+            Prelude.<$> (x Data..:? "SameSheetTargetVisualConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    FilterOperationTargetVisualsConfiguration
+  where
+  hashWithSalt
+    _salt
+    FilterOperationTargetVisualsConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` sameSheetTargetVisualConfiguration
+
+instance
+  Prelude.NFData
+    FilterOperationTargetVisualsConfiguration
+  where
+  rnf FilterOperationTargetVisualsConfiguration' {..} =
+    Prelude.rnf sameSheetTargetVisualConfiguration
+
+instance
+  Data.ToJSON
+    FilterOperationTargetVisualsConfiguration
+  where
+  toJSON FilterOperationTargetVisualsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SameSheetTargetVisualConfiguration" Data..=)
+              Prelude.<$> sameSheetTargetVisualConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterOperator.hs b/gen/Amazonka/QuickSight/Types/FilterOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterOperator.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.QuickSight.Types.FilterOperator
+-- 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.QuickSight.Types.FilterOperator
+  ( FilterOperator
+      ( ..,
+        FilterOperator_StringEquals,
+        FilterOperator_StringLike
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FilterOperator = FilterOperator'
+  { fromFilterOperator ::
+      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 FilterOperator_StringEquals :: FilterOperator
+pattern FilterOperator_StringEquals = FilterOperator' "StringEquals"
+
+pattern FilterOperator_StringLike :: FilterOperator
+pattern FilterOperator_StringLike = FilterOperator' "StringLike"
+
+{-# COMPLETE
+  FilterOperator_StringEquals,
+  FilterOperator_StringLike,
+  FilterOperator'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FilterRelativeDateTimeControl.hs b/gen/Amazonka/QuickSight/Types/FilterRelativeDateTimeControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterRelativeDateTimeControl.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterRelativeDateTimeControl
+-- 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.QuickSight.Types.FilterRelativeDateTimeControl 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.QuickSight.Types.RelativeDateTimeControlDisplayOptions
+
+-- | A control from a date filter that is used to specify the relative date.
+--
+-- /See:/ 'newFilterRelativeDateTimeControl' smart constructor.
+data FilterRelativeDateTimeControl = FilterRelativeDateTimeControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe RelativeDateTimeControlDisplayOptions,
+    -- | The ID of the @FilterTextAreaControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterTextAreaControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterTextAreaControl@.
+    sourceFilterId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterRelativeDateTimeControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'filterRelativeDateTimeControl_displayOptions' - The display options of a control.
+--
+-- 'filterControlId', 'filterRelativeDateTimeControl_filterControlId' - The ID of the @FilterTextAreaControl@.
+--
+-- 'title', 'filterRelativeDateTimeControl_title' - The title of the @FilterTextAreaControl@.
+--
+-- 'sourceFilterId', 'filterRelativeDateTimeControl_sourceFilterId' - The source filter ID of the @FilterTextAreaControl@.
+newFilterRelativeDateTimeControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  FilterRelativeDateTimeControl
+newFilterRelativeDateTimeControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_ =
+    FilterRelativeDateTimeControl'
+      { displayOptions =
+          Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_
+      }
+
+-- | The display options of a control.
+filterRelativeDateTimeControl_displayOptions :: Lens.Lens' FilterRelativeDateTimeControl (Prelude.Maybe RelativeDateTimeControlDisplayOptions)
+filterRelativeDateTimeControl_displayOptions = Lens.lens (\FilterRelativeDateTimeControl' {displayOptions} -> displayOptions) (\s@FilterRelativeDateTimeControl' {} a -> s {displayOptions = a} :: FilterRelativeDateTimeControl)
+
+-- | The ID of the @FilterTextAreaControl@.
+filterRelativeDateTimeControl_filterControlId :: Lens.Lens' FilterRelativeDateTimeControl Prelude.Text
+filterRelativeDateTimeControl_filterControlId = Lens.lens (\FilterRelativeDateTimeControl' {filterControlId} -> filterControlId) (\s@FilterRelativeDateTimeControl' {} a -> s {filterControlId = a} :: FilterRelativeDateTimeControl)
+
+-- | The title of the @FilterTextAreaControl@.
+filterRelativeDateTimeControl_title :: Lens.Lens' FilterRelativeDateTimeControl Prelude.Text
+filterRelativeDateTimeControl_title = Lens.lens (\FilterRelativeDateTimeControl' {title} -> title) (\s@FilterRelativeDateTimeControl' {} a -> s {title = a} :: FilterRelativeDateTimeControl)
+
+-- | The source filter ID of the @FilterTextAreaControl@.
+filterRelativeDateTimeControl_sourceFilterId :: Lens.Lens' FilterRelativeDateTimeControl Prelude.Text
+filterRelativeDateTimeControl_sourceFilterId = Lens.lens (\FilterRelativeDateTimeControl' {sourceFilterId} -> sourceFilterId) (\s@FilterRelativeDateTimeControl' {} a -> s {sourceFilterId = a} :: FilterRelativeDateTimeControl)
+
+instance Data.FromJSON FilterRelativeDateTimeControl where
+  parseJSON =
+    Data.withObject
+      "FilterRelativeDateTimeControl"
+      ( \x ->
+          FilterRelativeDateTimeControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+      )
+
+instance
+  Prelude.Hashable
+    FilterRelativeDateTimeControl
+  where
+  hashWithSalt _salt FilterRelativeDateTimeControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+
+instance Prelude.NFData FilterRelativeDateTimeControl where
+  rnf FilterRelativeDateTimeControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+
+instance Data.ToJSON FilterRelativeDateTimeControl where
+  toJSON FilterRelativeDateTimeControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterScopeConfiguration.hs b/gen/Amazonka/QuickSight/Types/FilterScopeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterScopeConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FilterScopeConfiguration
+-- 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.QuickSight.Types.FilterScopeConfiguration 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.QuickSight.Types.SelectedSheetsFilterScopeConfiguration
+
+-- | The scope configuration for a @FilterGroup@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFilterScopeConfiguration' smart constructor.
+data FilterScopeConfiguration = FilterScopeConfiguration'
+  { -- | The configuration for applying a filter to specific sheets.
+    selectedSheets :: Prelude.Maybe SelectedSheetsFilterScopeConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterScopeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selectedSheets', 'filterScopeConfiguration_selectedSheets' - The configuration for applying a filter to specific sheets.
+newFilterScopeConfiguration ::
+  FilterScopeConfiguration
+newFilterScopeConfiguration =
+  FilterScopeConfiguration'
+    { selectedSheets =
+        Prelude.Nothing
+    }
+
+-- | The configuration for applying a filter to specific sheets.
+filterScopeConfiguration_selectedSheets :: Lens.Lens' FilterScopeConfiguration (Prelude.Maybe SelectedSheetsFilterScopeConfiguration)
+filterScopeConfiguration_selectedSheets = Lens.lens (\FilterScopeConfiguration' {selectedSheets} -> selectedSheets) (\s@FilterScopeConfiguration' {} a -> s {selectedSheets = a} :: FilterScopeConfiguration)
+
+instance Data.FromJSON FilterScopeConfiguration where
+  parseJSON =
+    Data.withObject
+      "FilterScopeConfiguration"
+      ( \x ->
+          FilterScopeConfiguration'
+            Prelude.<$> (x Data..:? "SelectedSheets")
+      )
+
+instance Prelude.Hashable FilterScopeConfiguration where
+  hashWithSalt _salt FilterScopeConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` selectedSheets
+
+instance Prelude.NFData FilterScopeConfiguration where
+  rnf FilterScopeConfiguration' {..} =
+    Prelude.rnf selectedSheets
+
+instance Data.ToJSON FilterScopeConfiguration where
+  toJSON FilterScopeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SelectedSheets" Data..=)
+              Prelude.<$> selectedSheets
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterSelectableValues.hs b/gen/Amazonka/QuickSight/Types/FilterSelectableValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterSelectableValues.hs
@@ -0,0 +1,75 @@
+{-# 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.QuickSight.Types.FilterSelectableValues
+-- 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.QuickSight.Types.FilterSelectableValues 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 list of selectable values that are used in a control.
+--
+-- /See:/ 'newFilterSelectableValues' smart constructor.
+data FilterSelectableValues = FilterSelectableValues'
+  { -- | The values that are used in the @FilterSelectableValues@.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterSelectableValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'values', 'filterSelectableValues_values' - The values that are used in the @FilterSelectableValues@.
+newFilterSelectableValues ::
+  FilterSelectableValues
+newFilterSelectableValues =
+  FilterSelectableValues' {values = Prelude.Nothing}
+
+-- | The values that are used in the @FilterSelectableValues@.
+filterSelectableValues_values :: Lens.Lens' FilterSelectableValues (Prelude.Maybe [Prelude.Text])
+filterSelectableValues_values = Lens.lens (\FilterSelectableValues' {values} -> values) (\s@FilterSelectableValues' {} a -> s {values = a} :: FilterSelectableValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FilterSelectableValues where
+  parseJSON =
+    Data.withObject
+      "FilterSelectableValues"
+      ( \x ->
+          FilterSelectableValues'
+            Prelude.<$> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable FilterSelectableValues where
+  hashWithSalt _salt FilterSelectableValues' {..} =
+    _salt `Prelude.hashWithSalt` values
+
+instance Prelude.NFData FilterSelectableValues where
+  rnf FilterSelectableValues' {..} = Prelude.rnf values
+
+instance Data.ToJSON FilterSelectableValues where
+  toJSON FilterSelectableValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Values" Data..=) Prelude.<$> values]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterSliderControl.hs b/gen/Amazonka/QuickSight/Types/FilterSliderControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterSliderControl.hs
@@ -0,0 +1,208 @@
+{-# 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.QuickSight.Types.FilterSliderControl
+-- 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.QuickSight.Types.FilterSliderControl 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.QuickSight.Types.SheetControlSliderType
+import Amazonka.QuickSight.Types.SliderControlDisplayOptions
+
+-- | A control to display a horizontal toggle bar. This is used to change a
+-- value by sliding the toggle.
+--
+-- /See:/ 'newFilterSliderControl' smart constructor.
+data FilterSliderControl = FilterSliderControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe SliderControlDisplayOptions,
+    -- | The type of @FilterSliderControl@. Choose one of the following options:
+    --
+    -- -   @SINGLE_POINT@: Filter against(equals) a single data point.
+    --
+    -- -   @RANGE@: Filter data that is in a specified range.
+    type' :: Prelude.Maybe SheetControlSliderType,
+    -- | The ID of the @FilterSliderControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterSliderControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterSliderControl@.
+    sourceFilterId :: Prelude.Text,
+    -- | The smaller value that is displayed at the left of the slider.
+    maximumValue :: Prelude.Double,
+    -- | The larger value that is displayed at the right of the slider.
+    minimumValue :: Prelude.Double,
+    -- | The number of increments that the slider bar is divided into.
+    stepSize :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterSliderControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'filterSliderControl_displayOptions' - The display options of a control.
+--
+-- 'type'', 'filterSliderControl_type' - The type of @FilterSliderControl@. Choose one of the following options:
+--
+-- -   @SINGLE_POINT@: Filter against(equals) a single data point.
+--
+-- -   @RANGE@: Filter data that is in a specified range.
+--
+-- 'filterControlId', 'filterSliderControl_filterControlId' - The ID of the @FilterSliderControl@.
+--
+-- 'title', 'filterSliderControl_title' - The title of the @FilterSliderControl@.
+--
+-- 'sourceFilterId', 'filterSliderControl_sourceFilterId' - The source filter ID of the @FilterSliderControl@.
+--
+-- 'maximumValue', 'filterSliderControl_maximumValue' - The smaller value that is displayed at the left of the slider.
+--
+-- 'minimumValue', 'filterSliderControl_minimumValue' - The larger value that is displayed at the right of the slider.
+--
+-- 'stepSize', 'filterSliderControl_stepSize' - The number of increments that the slider bar is divided into.
+newFilterSliderControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  -- | 'maximumValue'
+  Prelude.Double ->
+  -- | 'minimumValue'
+  Prelude.Double ->
+  -- | 'stepSize'
+  Prelude.Double ->
+  FilterSliderControl
+newFilterSliderControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_
+  pMaximumValue_
+  pMinimumValue_
+  pStepSize_ =
+    FilterSliderControl'
+      { displayOptions =
+          Prelude.Nothing,
+        type' = Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_,
+        maximumValue = pMaximumValue_,
+        minimumValue = pMinimumValue_,
+        stepSize = pStepSize_
+      }
+
+-- | The display options of a control.
+filterSliderControl_displayOptions :: Lens.Lens' FilterSliderControl (Prelude.Maybe SliderControlDisplayOptions)
+filterSliderControl_displayOptions = Lens.lens (\FilterSliderControl' {displayOptions} -> displayOptions) (\s@FilterSliderControl' {} a -> s {displayOptions = a} :: FilterSliderControl)
+
+-- | The type of @FilterSliderControl@. Choose one of the following options:
+--
+-- -   @SINGLE_POINT@: Filter against(equals) a single data point.
+--
+-- -   @RANGE@: Filter data that is in a specified range.
+filterSliderControl_type :: Lens.Lens' FilterSliderControl (Prelude.Maybe SheetControlSliderType)
+filterSliderControl_type = Lens.lens (\FilterSliderControl' {type'} -> type') (\s@FilterSliderControl' {} a -> s {type' = a} :: FilterSliderControl)
+
+-- | The ID of the @FilterSliderControl@.
+filterSliderControl_filterControlId :: Lens.Lens' FilterSliderControl Prelude.Text
+filterSliderControl_filterControlId = Lens.lens (\FilterSliderControl' {filterControlId} -> filterControlId) (\s@FilterSliderControl' {} a -> s {filterControlId = a} :: FilterSliderControl)
+
+-- | The title of the @FilterSliderControl@.
+filterSliderControl_title :: Lens.Lens' FilterSliderControl Prelude.Text
+filterSliderControl_title = Lens.lens (\FilterSliderControl' {title} -> title) (\s@FilterSliderControl' {} a -> s {title = a} :: FilterSliderControl)
+
+-- | The source filter ID of the @FilterSliderControl@.
+filterSliderControl_sourceFilterId :: Lens.Lens' FilterSliderControl Prelude.Text
+filterSliderControl_sourceFilterId = Lens.lens (\FilterSliderControl' {sourceFilterId} -> sourceFilterId) (\s@FilterSliderControl' {} a -> s {sourceFilterId = a} :: FilterSliderControl)
+
+-- | The smaller value that is displayed at the left of the slider.
+filterSliderControl_maximumValue :: Lens.Lens' FilterSliderControl Prelude.Double
+filterSliderControl_maximumValue = Lens.lens (\FilterSliderControl' {maximumValue} -> maximumValue) (\s@FilterSliderControl' {} a -> s {maximumValue = a} :: FilterSliderControl)
+
+-- | The larger value that is displayed at the right of the slider.
+filterSliderControl_minimumValue :: Lens.Lens' FilterSliderControl Prelude.Double
+filterSliderControl_minimumValue = Lens.lens (\FilterSliderControl' {minimumValue} -> minimumValue) (\s@FilterSliderControl' {} a -> s {minimumValue = a} :: FilterSliderControl)
+
+-- | The number of increments that the slider bar is divided into.
+filterSliderControl_stepSize :: Lens.Lens' FilterSliderControl Prelude.Double
+filterSliderControl_stepSize = Lens.lens (\FilterSliderControl' {stepSize} -> stepSize) (\s@FilterSliderControl' {} a -> s {stepSize = a} :: FilterSliderControl)
+
+instance Data.FromJSON FilterSliderControl where
+  parseJSON =
+    Data.withObject
+      "FilterSliderControl"
+      ( \x ->
+          FilterSliderControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+            Prelude.<*> (x Data..: "MaximumValue")
+            Prelude.<*> (x Data..: "MinimumValue")
+            Prelude.<*> (x Data..: "StepSize")
+      )
+
+instance Prelude.Hashable FilterSliderControl where
+  hashWithSalt _salt FilterSliderControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+      `Prelude.hashWithSalt` maximumValue
+      `Prelude.hashWithSalt` minimumValue
+      `Prelude.hashWithSalt` stepSize
+
+instance Prelude.NFData FilterSliderControl where
+  rnf FilterSliderControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+      `Prelude.seq` Prelude.rnf maximumValue
+      `Prelude.seq` Prelude.rnf minimumValue
+      `Prelude.seq` Prelude.rnf stepSize
+
+instance Data.ToJSON FilterSliderControl where
+  toJSON FilterSliderControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId),
+            Prelude.Just ("MaximumValue" Data..= maximumValue),
+            Prelude.Just ("MinimumValue" Data..= minimumValue),
+            Prelude.Just ("StepSize" Data..= stepSize)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterTextAreaControl.hs b/gen/Amazonka/QuickSight/Types/FilterTextAreaControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterTextAreaControl.hs
@@ -0,0 +1,145 @@
+{-# 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.QuickSight.Types.FilterTextAreaControl
+-- 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.QuickSight.Types.FilterTextAreaControl 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.QuickSight.Types.TextAreaControlDisplayOptions
+
+-- | A control to display a text box that is used to enter multiple entries.
+--
+-- /See:/ 'newFilterTextAreaControl' smart constructor.
+data FilterTextAreaControl = FilterTextAreaControl'
+  { -- | The delimiter that is used to separate the lines in text.
+    delimiter :: Prelude.Maybe Prelude.Text,
+    -- | The display options of a control.
+    displayOptions :: Prelude.Maybe TextAreaControlDisplayOptions,
+    -- | The ID of the @FilterTextAreaControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterTextAreaControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterTextAreaControl@.
+    sourceFilterId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterTextAreaControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'delimiter', 'filterTextAreaControl_delimiter' - The delimiter that is used to separate the lines in text.
+--
+-- 'displayOptions', 'filterTextAreaControl_displayOptions' - The display options of a control.
+--
+-- 'filterControlId', 'filterTextAreaControl_filterControlId' - The ID of the @FilterTextAreaControl@.
+--
+-- 'title', 'filterTextAreaControl_title' - The title of the @FilterTextAreaControl@.
+--
+-- 'sourceFilterId', 'filterTextAreaControl_sourceFilterId' - The source filter ID of the @FilterTextAreaControl@.
+newFilterTextAreaControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  FilterTextAreaControl
+newFilterTextAreaControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_ =
+    FilterTextAreaControl'
+      { delimiter = Prelude.Nothing,
+        displayOptions = Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_
+      }
+
+-- | The delimiter that is used to separate the lines in text.
+filterTextAreaControl_delimiter :: Lens.Lens' FilterTextAreaControl (Prelude.Maybe Prelude.Text)
+filterTextAreaControl_delimiter = Lens.lens (\FilterTextAreaControl' {delimiter} -> delimiter) (\s@FilterTextAreaControl' {} a -> s {delimiter = a} :: FilterTextAreaControl)
+
+-- | The display options of a control.
+filterTextAreaControl_displayOptions :: Lens.Lens' FilterTextAreaControl (Prelude.Maybe TextAreaControlDisplayOptions)
+filterTextAreaControl_displayOptions = Lens.lens (\FilterTextAreaControl' {displayOptions} -> displayOptions) (\s@FilterTextAreaControl' {} a -> s {displayOptions = a} :: FilterTextAreaControl)
+
+-- | The ID of the @FilterTextAreaControl@.
+filterTextAreaControl_filterControlId :: Lens.Lens' FilterTextAreaControl Prelude.Text
+filterTextAreaControl_filterControlId = Lens.lens (\FilterTextAreaControl' {filterControlId} -> filterControlId) (\s@FilterTextAreaControl' {} a -> s {filterControlId = a} :: FilterTextAreaControl)
+
+-- | The title of the @FilterTextAreaControl@.
+filterTextAreaControl_title :: Lens.Lens' FilterTextAreaControl Prelude.Text
+filterTextAreaControl_title = Lens.lens (\FilterTextAreaControl' {title} -> title) (\s@FilterTextAreaControl' {} a -> s {title = a} :: FilterTextAreaControl)
+
+-- | The source filter ID of the @FilterTextAreaControl@.
+filterTextAreaControl_sourceFilterId :: Lens.Lens' FilterTextAreaControl Prelude.Text
+filterTextAreaControl_sourceFilterId = Lens.lens (\FilterTextAreaControl' {sourceFilterId} -> sourceFilterId) (\s@FilterTextAreaControl' {} a -> s {sourceFilterId = a} :: FilterTextAreaControl)
+
+instance Data.FromJSON FilterTextAreaControl where
+  parseJSON =
+    Data.withObject
+      "FilterTextAreaControl"
+      ( \x ->
+          FilterTextAreaControl'
+            Prelude.<$> (x Data..:? "Delimiter")
+            Prelude.<*> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+      )
+
+instance Prelude.Hashable FilterTextAreaControl where
+  hashWithSalt _salt FilterTextAreaControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` delimiter
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+
+instance Prelude.NFData FilterTextAreaControl where
+  rnf FilterTextAreaControl' {..} =
+    Prelude.rnf delimiter
+      `Prelude.seq` Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+
+instance Data.ToJSON FilterTextAreaControl where
+  toJSON FilterTextAreaControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Delimiter" Data..=) Prelude.<$> delimiter,
+            ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterTextFieldControl.hs b/gen/Amazonka/QuickSight/Types/FilterTextFieldControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterTextFieldControl.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.QuickSight.Types.FilterTextFieldControl
+-- 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.QuickSight.Types.FilterTextFieldControl 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.QuickSight.Types.TextFieldControlDisplayOptions
+
+-- | A control to display a text box that is used to enter a single entry.
+--
+-- /See:/ 'newFilterTextFieldControl' smart constructor.
+data FilterTextFieldControl = FilterTextFieldControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe TextFieldControlDisplayOptions,
+    -- | The ID of the @FilterTextFieldControl@.
+    filterControlId :: Prelude.Text,
+    -- | The title of the @FilterTextFieldControl@.
+    title :: Prelude.Text,
+    -- | The source filter ID of the @FilterTextFieldControl@.
+    sourceFilterId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterTextFieldControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'filterTextFieldControl_displayOptions' - The display options of a control.
+--
+-- 'filterControlId', 'filterTextFieldControl_filterControlId' - The ID of the @FilterTextFieldControl@.
+--
+-- 'title', 'filterTextFieldControl_title' - The title of the @FilterTextFieldControl@.
+--
+-- 'sourceFilterId', 'filterTextFieldControl_sourceFilterId' - The source filter ID of the @FilterTextFieldControl@.
+newFilterTextFieldControl ::
+  -- | 'filterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceFilterId'
+  Prelude.Text ->
+  FilterTextFieldControl
+newFilterTextFieldControl
+  pFilterControlId_
+  pTitle_
+  pSourceFilterId_ =
+    FilterTextFieldControl'
+      { displayOptions =
+          Prelude.Nothing,
+        filterControlId = pFilterControlId_,
+        title = pTitle_,
+        sourceFilterId = pSourceFilterId_
+      }
+
+-- | The display options of a control.
+filterTextFieldControl_displayOptions :: Lens.Lens' FilterTextFieldControl (Prelude.Maybe TextFieldControlDisplayOptions)
+filterTextFieldControl_displayOptions = Lens.lens (\FilterTextFieldControl' {displayOptions} -> displayOptions) (\s@FilterTextFieldControl' {} a -> s {displayOptions = a} :: FilterTextFieldControl)
+
+-- | The ID of the @FilterTextFieldControl@.
+filterTextFieldControl_filterControlId :: Lens.Lens' FilterTextFieldControl Prelude.Text
+filterTextFieldControl_filterControlId = Lens.lens (\FilterTextFieldControl' {filterControlId} -> filterControlId) (\s@FilterTextFieldControl' {} a -> s {filterControlId = a} :: FilterTextFieldControl)
+
+-- | The title of the @FilterTextFieldControl@.
+filterTextFieldControl_title :: Lens.Lens' FilterTextFieldControl Prelude.Text
+filterTextFieldControl_title = Lens.lens (\FilterTextFieldControl' {title} -> title) (\s@FilterTextFieldControl' {} a -> s {title = a} :: FilterTextFieldControl)
+
+-- | The source filter ID of the @FilterTextFieldControl@.
+filterTextFieldControl_sourceFilterId :: Lens.Lens' FilterTextFieldControl Prelude.Text
+filterTextFieldControl_sourceFilterId = Lens.lens (\FilterTextFieldControl' {sourceFilterId} -> sourceFilterId) (\s@FilterTextFieldControl' {} a -> s {sourceFilterId = a} :: FilterTextFieldControl)
+
+instance Data.FromJSON FilterTextFieldControl where
+  parseJSON =
+    Data.withObject
+      "FilterTextFieldControl"
+      ( \x ->
+          FilterTextFieldControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "FilterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceFilterId")
+      )
+
+instance Prelude.Hashable FilterTextFieldControl where
+  hashWithSalt _salt FilterTextFieldControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` filterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceFilterId
+
+instance Prelude.NFData FilterTextFieldControl where
+  rnf FilterTextFieldControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf filterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceFilterId
+
+instance Data.ToJSON FilterTextFieldControl where
+  toJSON FilterTextFieldControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("FilterControlId" Data..= filterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceFilterId" Data..= sourceFilterId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FilterVisualScope.hs b/gen/Amazonka/QuickSight/Types/FilterVisualScope.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FilterVisualScope.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.QuickSight.Types.FilterVisualScope
+-- 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.QuickSight.Types.FilterVisualScope
+  ( FilterVisualScope
+      ( ..,
+        FilterVisualScope_ALL_VISUALS,
+        FilterVisualScope_SELECTED_VISUALS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FilterVisualScope = FilterVisualScope'
+  { fromFilterVisualScope ::
+      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 FilterVisualScope_ALL_VISUALS :: FilterVisualScope
+pattern FilterVisualScope_ALL_VISUALS = FilterVisualScope' "ALL_VISUALS"
+
+pattern FilterVisualScope_SELECTED_VISUALS :: FilterVisualScope
+pattern FilterVisualScope_SELECTED_VISUALS = FilterVisualScope' "SELECTED_VISUALS"
+
+{-# COMPLETE
+  FilterVisualScope_ALL_VISUALS,
+  FilterVisualScope_SELECTED_VISUALS,
+  FilterVisualScope'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Folder.hs b/gen/Amazonka/QuickSight/Types/Folder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Folder.hs
@@ -0,0 +1,145 @@
+{-# 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.QuickSight.Types.Folder
+-- 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.QuickSight.Types.Folder 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.QuickSight.Types.FolderType
+
+-- | A folder in Amazon QuickSight.
+--
+-- /See:/ 'newFolder' smart constructor.
+data Folder = Folder'
+  { -- | The Amazon Resource Name (ARN) for the folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that the folder was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | An array of ancestor ARN strings for the folder.
+    folderPath :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The type of folder it is.
+    folderType :: Prelude.Maybe FolderType,
+    -- | The time that the folder was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A display name for the folder.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Folder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'folder_arn' - The Amazon Resource Name (ARN) for the folder.
+--
+-- 'createdTime', 'folder_createdTime' - The time that the folder was created.
+--
+-- 'folderId', 'folder_folderId' - The ID of the folder.
+--
+-- 'folderPath', 'folder_folderPath' - An array of ancestor ARN strings for the folder.
+--
+-- 'folderType', 'folder_folderType' - The type of folder it is.
+--
+-- 'lastUpdatedTime', 'folder_lastUpdatedTime' - The time that the folder was last updated.
+--
+-- 'name', 'folder_name' - A display name for the folder.
+newFolder ::
+  Folder
+newFolder =
+  Folder'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      folderPath = Prelude.Nothing,
+      folderType = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for the folder.
+folder_arn :: Lens.Lens' Folder (Prelude.Maybe Prelude.Text)
+folder_arn = Lens.lens (\Folder' {arn} -> arn) (\s@Folder' {} a -> s {arn = a} :: Folder)
+
+-- | The time that the folder was created.
+folder_createdTime :: Lens.Lens' Folder (Prelude.Maybe Prelude.UTCTime)
+folder_createdTime = Lens.lens (\Folder' {createdTime} -> createdTime) (\s@Folder' {} a -> s {createdTime = a} :: Folder) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the folder.
+folder_folderId :: Lens.Lens' Folder (Prelude.Maybe Prelude.Text)
+folder_folderId = Lens.lens (\Folder' {folderId} -> folderId) (\s@Folder' {} a -> s {folderId = a} :: Folder)
+
+-- | An array of ancestor ARN strings for the folder.
+folder_folderPath :: Lens.Lens' Folder (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+folder_folderPath = Lens.lens (\Folder' {folderPath} -> folderPath) (\s@Folder' {} a -> s {folderPath = a} :: Folder) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of folder it is.
+folder_folderType :: Lens.Lens' Folder (Prelude.Maybe FolderType)
+folder_folderType = Lens.lens (\Folder' {folderType} -> folderType) (\s@Folder' {} a -> s {folderType = a} :: Folder)
+
+-- | The time that the folder was last updated.
+folder_lastUpdatedTime :: Lens.Lens' Folder (Prelude.Maybe Prelude.UTCTime)
+folder_lastUpdatedTime = Lens.lens (\Folder' {lastUpdatedTime} -> lastUpdatedTime) (\s@Folder' {} a -> s {lastUpdatedTime = a} :: Folder) Prelude.. Lens.mapping Data._Time
+
+-- | A display name for the folder.
+folder_name :: Lens.Lens' Folder (Prelude.Maybe Prelude.Text)
+folder_name = Lens.lens (\Folder' {name} -> name) (\s@Folder' {} a -> s {name = a} :: Folder)
+
+instance Data.FromJSON Folder where
+  parseJSON =
+    Data.withObject
+      "Folder"
+      ( \x ->
+          Folder'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "FolderId")
+            Prelude.<*> (x Data..:? "FolderPath")
+            Prelude.<*> (x Data..:? "FolderType")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable Folder where
+  hashWithSalt _salt Folder' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` folderId
+      `Prelude.hashWithSalt` folderPath
+      `Prelude.hashWithSalt` folderType
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Folder where
+  rnf Folder' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf folderPath
+      `Prelude.seq` Prelude.rnf folderType
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/QuickSight/Types/FolderFilterAttribute.hs b/gen/Amazonka/QuickSight/Types/FolderFilterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FolderFilterAttribute.hs
@@ -0,0 +1,96 @@
+{-# 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.QuickSight.Types.FolderFilterAttribute
+-- 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.QuickSight.Types.FolderFilterAttribute
+  ( FolderFilterAttribute
+      ( ..,
+        FolderFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+        FolderFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+        FolderFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+        FolderFilterAttribute_FOLDER_NAME,
+        FolderFilterAttribute_PARENT_FOLDER_ARN,
+        FolderFilterAttribute_QUICKSIGHT_OWNER,
+        FolderFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FolderFilterAttribute = FolderFilterAttribute'
+  { fromFolderFilterAttribute ::
+      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 FolderFilterAttribute_DIRECT_QUICKSIGHT_OWNER :: FolderFilterAttribute
+pattern FolderFilterAttribute_DIRECT_QUICKSIGHT_OWNER = FolderFilterAttribute' "DIRECT_QUICKSIGHT_OWNER"
+
+pattern FolderFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER :: FolderFilterAttribute
+pattern FolderFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER = FolderFilterAttribute' "DIRECT_QUICKSIGHT_SOLE_OWNER"
+
+pattern FolderFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER :: FolderFilterAttribute
+pattern FolderFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER = FolderFilterAttribute' "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"
+
+pattern FolderFilterAttribute_FOLDER_NAME :: FolderFilterAttribute
+pattern FolderFilterAttribute_FOLDER_NAME = FolderFilterAttribute' "FOLDER_NAME"
+
+pattern FolderFilterAttribute_PARENT_FOLDER_ARN :: FolderFilterAttribute
+pattern FolderFilterAttribute_PARENT_FOLDER_ARN = FolderFilterAttribute' "PARENT_FOLDER_ARN"
+
+pattern FolderFilterAttribute_QUICKSIGHT_OWNER :: FolderFilterAttribute
+pattern FolderFilterAttribute_QUICKSIGHT_OWNER = FolderFilterAttribute' "QUICKSIGHT_OWNER"
+
+pattern FolderFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER :: FolderFilterAttribute
+pattern FolderFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER = FolderFilterAttribute' "QUICKSIGHT_VIEWER_OR_OWNER"
+
+{-# COMPLETE
+  FolderFilterAttribute_DIRECT_QUICKSIGHT_OWNER,
+  FolderFilterAttribute_DIRECT_QUICKSIGHT_SOLE_OWNER,
+  FolderFilterAttribute_DIRECT_QUICKSIGHT_VIEWER_OR_OWNER,
+  FolderFilterAttribute_FOLDER_NAME,
+  FolderFilterAttribute_PARENT_FOLDER_ARN,
+  FolderFilterAttribute_QUICKSIGHT_OWNER,
+  FolderFilterAttribute_QUICKSIGHT_VIEWER_OR_OWNER,
+  FolderFilterAttribute'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FolderMember.hs b/gen/Amazonka/QuickSight/Types/FolderMember.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FolderMember.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.QuickSight.Types.FolderMember
+-- 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.QuickSight.Types.FolderMember 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.QuickSight.Types.MemberType
+
+-- | An asset in a Amazon QuickSight folder, such as a dashboard, analysis,
+-- or dataset.
+--
+-- /See:/ 'newFolderMember' smart constructor.
+data FolderMember = FolderMember'
+  { -- | The ID of an asset in the folder.
+    memberId :: Prelude.Maybe Prelude.Text,
+    -- | The type of asset that it is.
+    memberType :: Prelude.Maybe MemberType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FolderMember' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'memberId', 'folderMember_memberId' - The ID of an asset in the folder.
+--
+-- 'memberType', 'folderMember_memberType' - The type of asset that it is.
+newFolderMember ::
+  FolderMember
+newFolderMember =
+  FolderMember'
+    { memberId = Prelude.Nothing,
+      memberType = Prelude.Nothing
+    }
+
+-- | The ID of an asset in the folder.
+folderMember_memberId :: Lens.Lens' FolderMember (Prelude.Maybe Prelude.Text)
+folderMember_memberId = Lens.lens (\FolderMember' {memberId} -> memberId) (\s@FolderMember' {} a -> s {memberId = a} :: FolderMember)
+
+-- | The type of asset that it is.
+folderMember_memberType :: Lens.Lens' FolderMember (Prelude.Maybe MemberType)
+folderMember_memberType = Lens.lens (\FolderMember' {memberType} -> memberType) (\s@FolderMember' {} a -> s {memberType = a} :: FolderMember)
+
+instance Data.FromJSON FolderMember where
+  parseJSON =
+    Data.withObject
+      "FolderMember"
+      ( \x ->
+          FolderMember'
+            Prelude.<$> (x Data..:? "MemberId")
+            Prelude.<*> (x Data..:? "MemberType")
+      )
+
+instance Prelude.Hashable FolderMember where
+  hashWithSalt _salt FolderMember' {..} =
+    _salt
+      `Prelude.hashWithSalt` memberId
+      `Prelude.hashWithSalt` memberType
+
+instance Prelude.NFData FolderMember where
+  rnf FolderMember' {..} =
+    Prelude.rnf memberId
+      `Prelude.seq` Prelude.rnf memberType
diff --git a/gen/Amazonka/QuickSight/Types/FolderSearchFilter.hs b/gen/Amazonka/QuickSight/Types/FolderSearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FolderSearchFilter.hs
@@ -0,0 +1,253 @@
+{-# 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.QuickSight.Types.FolderSearchFilter
+-- 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.QuickSight.Types.FolderSearchFilter 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.QuickSight.Types.FilterOperator
+import Amazonka.QuickSight.Types.FolderFilterAttribute
+
+-- | A filter to use to search an Amazon QuickSight folder.
+--
+-- /See:/ 'newFolderSearchFilter' smart constructor.
+data FolderSearchFilter = FolderSearchFilter'
+  { -- | The name of a value that you want to use in the filter. For example,
+    -- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+    --     any folders with that ARN listed as one of the folder\'s owners or
+    --     viewers are returned. Implicit permissions from folders or groups
+    --     are considered.
+    --
+    -- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+    --     folders with that ARN listed as one of the owners of the folders are
+    --     returned. Implicit permissions from folders or groups are
+    --     considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+    --     and any folders with that ARN listed as the only owner of the folder
+    --     are returned. Implicit permissions from folders or groups are not
+    --     considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+    --     any folders with that ARN listed as one of the owners of the folders
+    --     are returned. Implicit permissions from folders or groups are not
+    --     considered.
+    --
+    -- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+    --     group, and any folders with that ARN listed as one of the owners or
+    --     viewers of the folders are returned. Implicit permissions from
+    --     folders or groups are not considered.
+    --
+    -- -   @FOLDER_NAME@: Any folders whose names have a substring match to
+    --     this value will be returned.
+    --
+    -- -   @PARENT_FOLDER_ARN@: Provide an ARN of a folder, and any folders
+    --     that are directly under that parent folder are returned. If you
+    --     choose to use this option and leave the value blank, all root-level
+    --     folders in the account are returned.
+    name :: Prelude.Maybe FolderFilterAttribute,
+    -- | The comparison operator that you want to use as a filter, for example
+    -- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+    -- and @\"StringLike\"@.
+    --
+    -- If you set the operator value to @\"StringEquals\"@, you need to provide
+    -- an ownership related filter in the @\"NAME\"@ field and the arn of the
+    -- user or group whose folders you want to search in the @\"Value\"@ field.
+    -- For example,
+    -- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+    --
+    -- If you set the value to @\"StringLike\"@, you need to provide the name
+    -- of the folders you are searching for. For example,
+    -- @\"Name\":\"FOLDER_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+    -- The @\"StringLike\"@ operator only supports the @NAME@ value
+    -- @FOLDER_NAME@.
+    operator :: Prelude.Maybe FilterOperator,
+    -- | The value of the named item (in this example, @PARENT_FOLDER_ARN@), that
+    -- you want to use as a filter. For example,
+    -- @\"Value\": \"arn:aws:quicksight:us-east-1:1:folder\/folderId\"@.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FolderSearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'folderSearchFilter_name' - The name of a value that you want to use in the filter. For example,
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any folders with that ARN listed as one of the folder\'s owners or
+--     viewers are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     folders with that ARN listed as one of the owners of the folders are
+--     returned. Implicit permissions from folders or groups are
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any folders with that ARN listed as the only owner of the folder
+--     are returned. Implicit permissions from folders or groups are not
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any folders with that ARN listed as one of the owners of the folders
+--     are returned. Implicit permissions from folders or groups are not
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any folders with that ARN listed as one of the owners or
+--     viewers of the folders are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @FOLDER_NAME@: Any folders whose names have a substring match to
+--     this value will be returned.
+--
+-- -   @PARENT_FOLDER_ARN@: Provide an ARN of a folder, and any folders
+--     that are directly under that parent folder are returned. If you
+--     choose to use this option and leave the value blank, all root-level
+--     folders in the account are returned.
+--
+-- 'operator', 'folderSearchFilter_operator' - The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose folders you want to search in the @\"Value\"@ field.
+-- For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the folders you are searching for. For example,
+-- @\"Name\":\"FOLDER_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @FOLDER_NAME@.
+--
+-- 'value', 'folderSearchFilter_value' - The value of the named item (in this example, @PARENT_FOLDER_ARN@), that
+-- you want to use as a filter. For example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:folder\/folderId\"@.
+newFolderSearchFilter ::
+  FolderSearchFilter
+newFolderSearchFilter =
+  FolderSearchFilter'
+    { name = Prelude.Nothing,
+      operator = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of a value that you want to use in the filter. For example,
+-- @\"Name\": \"QUICKSIGHT_OWNER\"@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or group, and
+--     any folders with that ARN listed as one of the folder\'s owners or
+--     viewers are returned. Implicit permissions from folders or groups
+--     are considered.
+--
+-- -   @QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and any
+--     folders with that ARN listed as one of the owners of the folders are
+--     returned. Implicit permissions from folders or groups are
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_SOLE_OWNER@: Provide an ARN of a user or group,
+--     and any folders with that ARN listed as the only owner of the folder
+--     are returned. Implicit permissions from folders or groups are not
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_OWNER@: Provide an ARN of a user or group, and
+--     any folders with that ARN listed as one of the owners of the folders
+--     are returned. Implicit permissions from folders or groups are not
+--     considered.
+--
+-- -   @DIRECT_QUICKSIGHT_VIEWER_OR_OWNER@: Provide an ARN of a user or
+--     group, and any folders with that ARN listed as one of the owners or
+--     viewers of the folders are returned. Implicit permissions from
+--     folders or groups are not considered.
+--
+-- -   @FOLDER_NAME@: Any folders whose names have a substring match to
+--     this value will be returned.
+--
+-- -   @PARENT_FOLDER_ARN@: Provide an ARN of a folder, and any folders
+--     that are directly under that parent folder are returned. If you
+--     choose to use this option and leave the value blank, all root-level
+--     folders in the account are returned.
+folderSearchFilter_name :: Lens.Lens' FolderSearchFilter (Prelude.Maybe FolderFilterAttribute)
+folderSearchFilter_name = Lens.lens (\FolderSearchFilter' {name} -> name) (\s@FolderSearchFilter' {} a -> s {name = a} :: FolderSearchFilter)
+
+-- | The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StringEquals\"@. Valid values are @\"StringEquals\"@
+-- and @\"StringLike\"@.
+--
+-- If you set the operator value to @\"StringEquals\"@, you need to provide
+-- an ownership related filter in the @\"NAME\"@ field and the arn of the
+-- user or group whose folders you want to search in the @\"Value\"@ field.
+-- For example,
+-- @\"Name\":\"DIRECT_QUICKSIGHT_OWNER\", \"Operator\": \"StringEquals\", \"Value\": \"arn:aws:quicksight:us-east-1:1:user\/default\/UserName1\"@.
+--
+-- If you set the value to @\"StringLike\"@, you need to provide the name
+-- of the folders you are searching for. For example,
+-- @\"Name\":\"FOLDER_NAME\", \"Operator\": \"StringLike\", \"Value\": \"Test\"@.
+-- The @\"StringLike\"@ operator only supports the @NAME@ value
+-- @FOLDER_NAME@.
+folderSearchFilter_operator :: Lens.Lens' FolderSearchFilter (Prelude.Maybe FilterOperator)
+folderSearchFilter_operator = Lens.lens (\FolderSearchFilter' {operator} -> operator) (\s@FolderSearchFilter' {} a -> s {operator = a} :: FolderSearchFilter)
+
+-- | The value of the named item (in this example, @PARENT_FOLDER_ARN@), that
+-- you want to use as a filter. For example,
+-- @\"Value\": \"arn:aws:quicksight:us-east-1:1:folder\/folderId\"@.
+folderSearchFilter_value :: Lens.Lens' FolderSearchFilter (Prelude.Maybe Prelude.Text)
+folderSearchFilter_value = Lens.lens (\FolderSearchFilter' {value} -> value) (\s@FolderSearchFilter' {} a -> s {value = a} :: FolderSearchFilter)
+
+instance Prelude.Hashable FolderSearchFilter where
+  hashWithSalt _salt FolderSearchFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData FolderSearchFilter where
+  rnf FolderSearchFilter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON FolderSearchFilter where
+  toJSON FolderSearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Operator" Data..=) Prelude.<$> operator,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FolderSummary.hs b/gen/Amazonka/QuickSight/Types/FolderSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FolderSummary.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.QuickSight.Types.FolderSummary
+-- 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.QuickSight.Types.FolderSummary 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.QuickSight.Types.FolderType
+
+-- | A summary of information about an existing Amazon QuickSight folder.
+--
+-- /See:/ 'newFolderSummary' smart constructor.
+data FolderSummary = FolderSummary'
+  { -- | The Amazon Resource Name (ARN) of the folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that the folder was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | The type of folder.
+    folderType :: Prelude.Maybe FolderType,
+    -- | The time that the folder was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The display name of the folder.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FolderSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'folderSummary_arn' - The Amazon Resource Name (ARN) of the folder.
+--
+-- 'createdTime', 'folderSummary_createdTime' - The time that the folder was created.
+--
+-- 'folderId', 'folderSummary_folderId' - The ID of the folder.
+--
+-- 'folderType', 'folderSummary_folderType' - The type of folder.
+--
+-- 'lastUpdatedTime', 'folderSummary_lastUpdatedTime' - The time that the folder was last updated.
+--
+-- 'name', 'folderSummary_name' - The display name of the folder.
+newFolderSummary ::
+  FolderSummary
+newFolderSummary =
+  FolderSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      folderType = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the folder.
+folderSummary_arn :: Lens.Lens' FolderSummary (Prelude.Maybe Prelude.Text)
+folderSummary_arn = Lens.lens (\FolderSummary' {arn} -> arn) (\s@FolderSummary' {} a -> s {arn = a} :: FolderSummary)
+
+-- | The time that the folder was created.
+folderSummary_createdTime :: Lens.Lens' FolderSummary (Prelude.Maybe Prelude.UTCTime)
+folderSummary_createdTime = Lens.lens (\FolderSummary' {createdTime} -> createdTime) (\s@FolderSummary' {} a -> s {createdTime = a} :: FolderSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the folder.
+folderSummary_folderId :: Lens.Lens' FolderSummary (Prelude.Maybe Prelude.Text)
+folderSummary_folderId = Lens.lens (\FolderSummary' {folderId} -> folderId) (\s@FolderSummary' {} a -> s {folderId = a} :: FolderSummary)
+
+-- | The type of folder.
+folderSummary_folderType :: Lens.Lens' FolderSummary (Prelude.Maybe FolderType)
+folderSummary_folderType = Lens.lens (\FolderSummary' {folderType} -> folderType) (\s@FolderSummary' {} a -> s {folderType = a} :: FolderSummary)
+
+-- | The time that the folder was last updated.
+folderSummary_lastUpdatedTime :: Lens.Lens' FolderSummary (Prelude.Maybe Prelude.UTCTime)
+folderSummary_lastUpdatedTime = Lens.lens (\FolderSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@FolderSummary' {} a -> s {lastUpdatedTime = a} :: FolderSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The display name of the folder.
+folderSummary_name :: Lens.Lens' FolderSummary (Prelude.Maybe Prelude.Text)
+folderSummary_name = Lens.lens (\FolderSummary' {name} -> name) (\s@FolderSummary' {} a -> s {name = a} :: FolderSummary)
+
+instance Data.FromJSON FolderSummary where
+  parseJSON =
+    Data.withObject
+      "FolderSummary"
+      ( \x ->
+          FolderSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "FolderId")
+            Prelude.<*> (x Data..:? "FolderType")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable FolderSummary where
+  hashWithSalt _salt FolderSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` folderId
+      `Prelude.hashWithSalt` folderType
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData FolderSummary where
+  rnf FolderSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf folderType
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/QuickSight/Types/FolderType.hs b/gen/Amazonka/QuickSight/Types/FolderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FolderType.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.QuickSight.Types.FolderType
+-- 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.QuickSight.Types.FolderType
+  ( FolderType
+      ( ..,
+        FolderType_SHARED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FolderType = FolderType'
+  { fromFolderType ::
+      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 FolderType_SHARED :: FolderType
+pattern FolderType_SHARED = FolderType' "SHARED"
+
+{-# COMPLETE
+  FolderType_SHARED,
+  FolderType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Font.hs b/gen/Amazonka/QuickSight/Types/Font.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Font.hs
@@ -0,0 +1,71 @@
+{-# 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.QuickSight.Types.Font
+-- 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.QuickSight.Types.Font 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
+
+-- | Determines the font settings.
+--
+-- /See:/ 'newFont' smart constructor.
+data Font = Font'
+  { -- | Determines the font family settings.
+    fontFamily :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Font' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fontFamily', 'font_fontFamily' - Determines the font family settings.
+newFont ::
+  Font
+newFont = Font' {fontFamily = Prelude.Nothing}
+
+-- | Determines the font family settings.
+font_fontFamily :: Lens.Lens' Font (Prelude.Maybe Prelude.Text)
+font_fontFamily = Lens.lens (\Font' {fontFamily} -> fontFamily) (\s@Font' {} a -> s {fontFamily = a} :: Font)
+
+instance Data.FromJSON Font where
+  parseJSON =
+    Data.withObject
+      "Font"
+      (\x -> Font' Prelude.<$> (x Data..:? "FontFamily"))
+
+instance Prelude.Hashable Font where
+  hashWithSalt _salt Font' {..} =
+    _salt `Prelude.hashWithSalt` fontFamily
+
+instance Prelude.NFData Font where
+  rnf Font' {..} = Prelude.rnf fontFamily
+
+instance Data.ToJSON Font where
+  toJSON Font' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("FontFamily" Data..=) Prelude.<$> fontFamily]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FontConfiguration.hs b/gen/Amazonka/QuickSight/Types/FontConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FontConfiguration.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.QuickSight.Types.FontConfiguration
+-- 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.QuickSight.Types.FontConfiguration 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.QuickSight.Types.FontDecoration
+import Amazonka.QuickSight.Types.FontSize
+import Amazonka.QuickSight.Types.FontStyle
+import Amazonka.QuickSight.Types.FontWeight
+
+-- | Configures the display properties of the given text.
+--
+-- /See:/ 'newFontConfiguration' smart constructor.
+data FontConfiguration = FontConfiguration'
+  { -- | Determines the color of the text.
+    fontColor :: Prelude.Maybe Prelude.Text,
+    -- | Determines the appearance of decorative lines on the text.
+    fontDecoration :: Prelude.Maybe FontDecoration,
+    -- | The option that determines the text display size.
+    fontSize :: Prelude.Maybe FontSize,
+    -- | Determines the text display face that is inherited by the given font
+    -- family.
+    fontStyle :: Prelude.Maybe FontStyle,
+    -- | The option that determines the text display weight, or boldness.
+    fontWeight :: Prelude.Maybe FontWeight
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FontConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fontColor', 'fontConfiguration_fontColor' - Determines the color of the text.
+--
+-- 'fontDecoration', 'fontConfiguration_fontDecoration' - Determines the appearance of decorative lines on the text.
+--
+-- 'fontSize', 'fontConfiguration_fontSize' - The option that determines the text display size.
+--
+-- 'fontStyle', 'fontConfiguration_fontStyle' - Determines the text display face that is inherited by the given font
+-- family.
+--
+-- 'fontWeight', 'fontConfiguration_fontWeight' - The option that determines the text display weight, or boldness.
+newFontConfiguration ::
+  FontConfiguration
+newFontConfiguration =
+  FontConfiguration'
+    { fontColor = Prelude.Nothing,
+      fontDecoration = Prelude.Nothing,
+      fontSize = Prelude.Nothing,
+      fontStyle = Prelude.Nothing,
+      fontWeight = Prelude.Nothing
+    }
+
+-- | Determines the color of the text.
+fontConfiguration_fontColor :: Lens.Lens' FontConfiguration (Prelude.Maybe Prelude.Text)
+fontConfiguration_fontColor = Lens.lens (\FontConfiguration' {fontColor} -> fontColor) (\s@FontConfiguration' {} a -> s {fontColor = a} :: FontConfiguration)
+
+-- | Determines the appearance of decorative lines on the text.
+fontConfiguration_fontDecoration :: Lens.Lens' FontConfiguration (Prelude.Maybe FontDecoration)
+fontConfiguration_fontDecoration = Lens.lens (\FontConfiguration' {fontDecoration} -> fontDecoration) (\s@FontConfiguration' {} a -> s {fontDecoration = a} :: FontConfiguration)
+
+-- | The option that determines the text display size.
+fontConfiguration_fontSize :: Lens.Lens' FontConfiguration (Prelude.Maybe FontSize)
+fontConfiguration_fontSize = Lens.lens (\FontConfiguration' {fontSize} -> fontSize) (\s@FontConfiguration' {} a -> s {fontSize = a} :: FontConfiguration)
+
+-- | Determines the text display face that is inherited by the given font
+-- family.
+fontConfiguration_fontStyle :: Lens.Lens' FontConfiguration (Prelude.Maybe FontStyle)
+fontConfiguration_fontStyle = Lens.lens (\FontConfiguration' {fontStyle} -> fontStyle) (\s@FontConfiguration' {} a -> s {fontStyle = a} :: FontConfiguration)
+
+-- | The option that determines the text display weight, or boldness.
+fontConfiguration_fontWeight :: Lens.Lens' FontConfiguration (Prelude.Maybe FontWeight)
+fontConfiguration_fontWeight = Lens.lens (\FontConfiguration' {fontWeight} -> fontWeight) (\s@FontConfiguration' {} a -> s {fontWeight = a} :: FontConfiguration)
+
+instance Data.FromJSON FontConfiguration where
+  parseJSON =
+    Data.withObject
+      "FontConfiguration"
+      ( \x ->
+          FontConfiguration'
+            Prelude.<$> (x Data..:? "FontColor")
+            Prelude.<*> (x Data..:? "FontDecoration")
+            Prelude.<*> (x Data..:? "FontSize")
+            Prelude.<*> (x Data..:? "FontStyle")
+            Prelude.<*> (x Data..:? "FontWeight")
+      )
+
+instance Prelude.Hashable FontConfiguration where
+  hashWithSalt _salt FontConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` fontColor
+      `Prelude.hashWithSalt` fontDecoration
+      `Prelude.hashWithSalt` fontSize
+      `Prelude.hashWithSalt` fontStyle
+      `Prelude.hashWithSalt` fontWeight
+
+instance Prelude.NFData FontConfiguration where
+  rnf FontConfiguration' {..} =
+    Prelude.rnf fontColor
+      `Prelude.seq` Prelude.rnf fontDecoration
+      `Prelude.seq` Prelude.rnf fontSize
+      `Prelude.seq` Prelude.rnf fontStyle
+      `Prelude.seq` Prelude.rnf fontWeight
+
+instance Data.ToJSON FontConfiguration where
+  toJSON FontConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FontColor" Data..=) Prelude.<$> fontColor,
+            ("FontDecoration" Data..=)
+              Prelude.<$> fontDecoration,
+            ("FontSize" Data..=) Prelude.<$> fontSize,
+            ("FontStyle" Data..=) Prelude.<$> fontStyle,
+            ("FontWeight" Data..=) Prelude.<$> fontWeight
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FontDecoration.hs b/gen/Amazonka/QuickSight/Types/FontDecoration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FontDecoration.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.QuickSight.Types.FontDecoration
+-- 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.QuickSight.Types.FontDecoration
+  ( FontDecoration
+      ( ..,
+        FontDecoration_NONE,
+        FontDecoration_UNDERLINE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FontDecoration = FontDecoration'
+  { fromFontDecoration ::
+      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 FontDecoration_NONE :: FontDecoration
+pattern FontDecoration_NONE = FontDecoration' "NONE"
+
+pattern FontDecoration_UNDERLINE :: FontDecoration
+pattern FontDecoration_UNDERLINE = FontDecoration' "UNDERLINE"
+
+{-# COMPLETE
+  FontDecoration_NONE,
+  FontDecoration_UNDERLINE,
+  FontDecoration'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FontSize.hs b/gen/Amazonka/QuickSight/Types/FontSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FontSize.hs
@@ -0,0 +1,77 @@
+{-# 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.QuickSight.Types.FontSize
+-- 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.QuickSight.Types.FontSize 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.QuickSight.Types.RelativeFontSize
+
+-- | The option that determines the text display size.
+--
+-- /See:/ 'newFontSize' smart constructor.
+data FontSize = FontSize'
+  { -- | The lexical name for the text size, proportional to its surrounding
+    -- context.
+    relative :: Prelude.Maybe RelativeFontSize
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FontSize' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'relative', 'fontSize_relative' - The lexical name for the text size, proportional to its surrounding
+-- context.
+newFontSize ::
+  FontSize
+newFontSize = FontSize' {relative = Prelude.Nothing}
+
+-- | The lexical name for the text size, proportional to its surrounding
+-- context.
+fontSize_relative :: Lens.Lens' FontSize (Prelude.Maybe RelativeFontSize)
+fontSize_relative = Lens.lens (\FontSize' {relative} -> relative) (\s@FontSize' {} a -> s {relative = a} :: FontSize)
+
+instance Data.FromJSON FontSize where
+  parseJSON =
+    Data.withObject
+      "FontSize"
+      ( \x ->
+          FontSize' Prelude.<$> (x Data..:? "Relative")
+      )
+
+instance Prelude.Hashable FontSize where
+  hashWithSalt _salt FontSize' {..} =
+    _salt `Prelude.hashWithSalt` relative
+
+instance Prelude.NFData FontSize where
+  rnf FontSize' {..} = Prelude.rnf relative
+
+instance Data.ToJSON FontSize where
+  toJSON FontSize' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Relative" Data..=) Prelude.<$> relative]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FontStyle.hs b/gen/Amazonka/QuickSight/Types/FontStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FontStyle.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.QuickSight.Types.FontStyle
+-- 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.QuickSight.Types.FontStyle
+  ( FontStyle
+      ( ..,
+        FontStyle_ITALIC,
+        FontStyle_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FontStyle = FontStyle'
+  { fromFontStyle ::
+      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 FontStyle_ITALIC :: FontStyle
+pattern FontStyle_ITALIC = FontStyle' "ITALIC"
+
+pattern FontStyle_NORMAL :: FontStyle
+pattern FontStyle_NORMAL = FontStyle' "NORMAL"
+
+{-# COMPLETE
+  FontStyle_ITALIC,
+  FontStyle_NORMAL,
+  FontStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FontWeight.hs b/gen/Amazonka/QuickSight/Types/FontWeight.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FontWeight.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FontWeight
+-- 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.QuickSight.Types.FontWeight 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.QuickSight.Types.FontWeightName
+
+-- | The option that determines the text display weight, or boldness.
+--
+-- /See:/ 'newFontWeight' smart constructor.
+data FontWeight = FontWeight'
+  { -- | The lexical name for the level of boldness of the text display.
+    name :: Prelude.Maybe FontWeightName
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FontWeight' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'fontWeight_name' - The lexical name for the level of boldness of the text display.
+newFontWeight ::
+  FontWeight
+newFontWeight = FontWeight' {name = Prelude.Nothing}
+
+-- | The lexical name for the level of boldness of the text display.
+fontWeight_name :: Lens.Lens' FontWeight (Prelude.Maybe FontWeightName)
+fontWeight_name = Lens.lens (\FontWeight' {name} -> name) (\s@FontWeight' {} a -> s {name = a} :: FontWeight)
+
+instance Data.FromJSON FontWeight where
+  parseJSON =
+    Data.withObject
+      "FontWeight"
+      (\x -> FontWeight' Prelude.<$> (x Data..:? "Name"))
+
+instance Prelude.Hashable FontWeight where
+  hashWithSalt _salt FontWeight' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData FontWeight where
+  rnf FontWeight' {..} = Prelude.rnf name
+
+instance Data.ToJSON FontWeight where
+  toJSON FontWeight' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Name" Data..=) Prelude.<$> name]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FontWeightName.hs b/gen/Amazonka/QuickSight/Types/FontWeightName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FontWeightName.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.QuickSight.Types.FontWeightName
+-- 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.QuickSight.Types.FontWeightName
+  ( FontWeightName
+      ( ..,
+        FontWeightName_BOLD,
+        FontWeightName_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FontWeightName = FontWeightName'
+  { fromFontWeightName ::
+      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 FontWeightName_BOLD :: FontWeightName
+pattern FontWeightName_BOLD = FontWeightName' "BOLD"
+
+pattern FontWeightName_NORMAL :: FontWeightName
+pattern FontWeightName_NORMAL = FontWeightName' "NORMAL"
+
+{-# COMPLETE
+  FontWeightName_BOLD,
+  FontWeightName_NORMAL,
+  FontWeightName'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ForecastComputation.hs b/gen/Amazonka/QuickSight/Types/ForecastComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ForecastComputation.hs
@@ -0,0 +1,237 @@
+{-# 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.QuickSight.Types.ForecastComputation
+-- 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.QuickSight.Types.ForecastComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.ForecastComputationSeasonality
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The forecast computation configuration.
+--
+-- /See:/ 'newForecastComputation' smart constructor.
+data ForecastComputation = ForecastComputation'
+  { -- | The custom seasonality value setup of a forecast computation.
+    customSeasonalityValue :: Prelude.Maybe Prelude.Natural,
+    -- | The lower boundary setup of a forecast computation.
+    lowerBoundary :: Prelude.Maybe Prelude.Double,
+    -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The periods backward setup of a forecast computation.
+    periodsBackward :: Prelude.Maybe Prelude.Natural,
+    -- | The periods forward setup of a forecast computation.
+    periodsForward :: Prelude.Maybe Prelude.Natural,
+    -- | The prediction interval setup of a forecast computation.
+    predictionInterval :: Prelude.Maybe Prelude.Natural,
+    -- | The seasonality setup of a forecast computation. Choose one of the
+    -- following options:
+    --
+    -- -   @AUTOMATIC@
+    --
+    -- -   @CUSTOM@: Checks the custom seasonality value.
+    seasonality :: Prelude.Maybe ForecastComputationSeasonality,
+    -- | The upper boundary setup of a forecast computation.
+    upperBoundary :: Prelude.Maybe Prelude.Double,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ForecastComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customSeasonalityValue', 'forecastComputation_customSeasonalityValue' - The custom seasonality value setup of a forecast computation.
+--
+-- 'lowerBoundary', 'forecastComputation_lowerBoundary' - The lower boundary setup of a forecast computation.
+--
+-- 'name', 'forecastComputation_name' - The name of a computation.
+--
+-- 'periodsBackward', 'forecastComputation_periodsBackward' - The periods backward setup of a forecast computation.
+--
+-- 'periodsForward', 'forecastComputation_periodsForward' - The periods forward setup of a forecast computation.
+--
+-- 'predictionInterval', 'forecastComputation_predictionInterval' - The prediction interval setup of a forecast computation.
+--
+-- 'seasonality', 'forecastComputation_seasonality' - The seasonality setup of a forecast computation. Choose one of the
+-- following options:
+--
+-- -   @AUTOMATIC@
+--
+-- -   @CUSTOM@: Checks the custom seasonality value.
+--
+-- 'upperBoundary', 'forecastComputation_upperBoundary' - The upper boundary setup of a forecast computation.
+--
+-- 'value', 'forecastComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'forecastComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'forecastComputation_time' - The time field that is used in a computation.
+newForecastComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  ForecastComputation
+newForecastComputation pComputationId_ pTime_ =
+  ForecastComputation'
+    { customSeasonalityValue =
+        Prelude.Nothing,
+      lowerBoundary = Prelude.Nothing,
+      name = Prelude.Nothing,
+      periodsBackward = Prelude.Nothing,
+      periodsForward = Prelude.Nothing,
+      predictionInterval = Prelude.Nothing,
+      seasonality = Prelude.Nothing,
+      upperBoundary = Prelude.Nothing,
+      value = Prelude.Nothing,
+      computationId = pComputationId_,
+      time = pTime_
+    }
+
+-- | The custom seasonality value setup of a forecast computation.
+forecastComputation_customSeasonalityValue :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Natural)
+forecastComputation_customSeasonalityValue = Lens.lens (\ForecastComputation' {customSeasonalityValue} -> customSeasonalityValue) (\s@ForecastComputation' {} a -> s {customSeasonalityValue = a} :: ForecastComputation)
+
+-- | The lower boundary setup of a forecast computation.
+forecastComputation_lowerBoundary :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Double)
+forecastComputation_lowerBoundary = Lens.lens (\ForecastComputation' {lowerBoundary} -> lowerBoundary) (\s@ForecastComputation' {} a -> s {lowerBoundary = a} :: ForecastComputation)
+
+-- | The name of a computation.
+forecastComputation_name :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Text)
+forecastComputation_name = Lens.lens (\ForecastComputation' {name} -> name) (\s@ForecastComputation' {} a -> s {name = a} :: ForecastComputation)
+
+-- | The periods backward setup of a forecast computation.
+forecastComputation_periodsBackward :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Natural)
+forecastComputation_periodsBackward = Lens.lens (\ForecastComputation' {periodsBackward} -> periodsBackward) (\s@ForecastComputation' {} a -> s {periodsBackward = a} :: ForecastComputation)
+
+-- | The periods forward setup of a forecast computation.
+forecastComputation_periodsForward :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Natural)
+forecastComputation_periodsForward = Lens.lens (\ForecastComputation' {periodsForward} -> periodsForward) (\s@ForecastComputation' {} a -> s {periodsForward = a} :: ForecastComputation)
+
+-- | The prediction interval setup of a forecast computation.
+forecastComputation_predictionInterval :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Natural)
+forecastComputation_predictionInterval = Lens.lens (\ForecastComputation' {predictionInterval} -> predictionInterval) (\s@ForecastComputation' {} a -> s {predictionInterval = a} :: ForecastComputation)
+
+-- | The seasonality setup of a forecast computation. Choose one of the
+-- following options:
+--
+-- -   @AUTOMATIC@
+--
+-- -   @CUSTOM@: Checks the custom seasonality value.
+forecastComputation_seasonality :: Lens.Lens' ForecastComputation (Prelude.Maybe ForecastComputationSeasonality)
+forecastComputation_seasonality = Lens.lens (\ForecastComputation' {seasonality} -> seasonality) (\s@ForecastComputation' {} a -> s {seasonality = a} :: ForecastComputation)
+
+-- | The upper boundary setup of a forecast computation.
+forecastComputation_upperBoundary :: Lens.Lens' ForecastComputation (Prelude.Maybe Prelude.Double)
+forecastComputation_upperBoundary = Lens.lens (\ForecastComputation' {upperBoundary} -> upperBoundary) (\s@ForecastComputation' {} a -> s {upperBoundary = a} :: ForecastComputation)
+
+-- | The value field that is used in a computation.
+forecastComputation_value :: Lens.Lens' ForecastComputation (Prelude.Maybe MeasureField)
+forecastComputation_value = Lens.lens (\ForecastComputation' {value} -> value) (\s@ForecastComputation' {} a -> s {value = a} :: ForecastComputation)
+
+-- | The ID for a computation.
+forecastComputation_computationId :: Lens.Lens' ForecastComputation Prelude.Text
+forecastComputation_computationId = Lens.lens (\ForecastComputation' {computationId} -> computationId) (\s@ForecastComputation' {} a -> s {computationId = a} :: ForecastComputation)
+
+-- | The time field that is used in a computation.
+forecastComputation_time :: Lens.Lens' ForecastComputation DimensionField
+forecastComputation_time = Lens.lens (\ForecastComputation' {time} -> time) (\s@ForecastComputation' {} a -> s {time = a} :: ForecastComputation)
+
+instance Data.FromJSON ForecastComputation where
+  parseJSON =
+    Data.withObject
+      "ForecastComputation"
+      ( \x ->
+          ForecastComputation'
+            Prelude.<$> (x Data..:? "CustomSeasonalityValue")
+            Prelude.<*> (x Data..:? "LowerBoundary")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PeriodsBackward")
+            Prelude.<*> (x Data..:? "PeriodsForward")
+            Prelude.<*> (x Data..:? "PredictionInterval")
+            Prelude.<*> (x Data..:? "Seasonality")
+            Prelude.<*> (x Data..:? "UpperBoundary")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+      )
+
+instance Prelude.Hashable ForecastComputation where
+  hashWithSalt _salt ForecastComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` customSeasonalityValue
+      `Prelude.hashWithSalt` lowerBoundary
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` periodsBackward
+      `Prelude.hashWithSalt` periodsForward
+      `Prelude.hashWithSalt` predictionInterval
+      `Prelude.hashWithSalt` seasonality
+      `Prelude.hashWithSalt` upperBoundary
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+
+instance Prelude.NFData ForecastComputation where
+  rnf ForecastComputation' {..} =
+    Prelude.rnf customSeasonalityValue
+      `Prelude.seq` Prelude.rnf lowerBoundary
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf periodsBackward
+      `Prelude.seq` Prelude.rnf periodsForward
+      `Prelude.seq` Prelude.rnf predictionInterval
+      `Prelude.seq` Prelude.rnf seasonality
+      `Prelude.seq` Prelude.rnf upperBoundary
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+
+instance Data.ToJSON ForecastComputation where
+  toJSON ForecastComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomSeasonalityValue" Data..=)
+              Prelude.<$> customSeasonalityValue,
+            ("LowerBoundary" Data..=) Prelude.<$> lowerBoundary,
+            ("Name" Data..=) Prelude.<$> name,
+            ("PeriodsBackward" Data..=)
+              Prelude.<$> periodsBackward,
+            ("PeriodsForward" Data..=)
+              Prelude.<$> periodsForward,
+            ("PredictionInterval" Data..=)
+              Prelude.<$> predictionInterval,
+            ("Seasonality" Data..=) Prelude.<$> seasonality,
+            ("UpperBoundary" Data..=) Prelude.<$> upperBoundary,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ForecastComputationSeasonality.hs b/gen/Amazonka/QuickSight/Types/ForecastComputationSeasonality.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ForecastComputationSeasonality.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.QuickSight.Types.ForecastComputationSeasonality
+-- 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.QuickSight.Types.ForecastComputationSeasonality
+  ( ForecastComputationSeasonality
+      ( ..,
+        ForecastComputationSeasonality_AUTOMATIC,
+        ForecastComputationSeasonality_CUSTOM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ForecastComputationSeasonality = ForecastComputationSeasonality'
+  { fromForecastComputationSeasonality ::
+      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 ForecastComputationSeasonality_AUTOMATIC :: ForecastComputationSeasonality
+pattern ForecastComputationSeasonality_AUTOMATIC = ForecastComputationSeasonality' "AUTOMATIC"
+
+pattern ForecastComputationSeasonality_CUSTOM :: ForecastComputationSeasonality
+pattern ForecastComputationSeasonality_CUSTOM = ForecastComputationSeasonality' "CUSTOM"
+
+{-# COMPLETE
+  ForecastComputationSeasonality_AUTOMATIC,
+  ForecastComputationSeasonality_CUSTOM,
+  ForecastComputationSeasonality'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ForecastConfiguration.hs b/gen/Amazonka/QuickSight/Types/ForecastConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ForecastConfiguration.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ForecastConfiguration
+-- 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.QuickSight.Types.ForecastConfiguration 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.QuickSight.Types.ForecastScenario
+import Amazonka.QuickSight.Types.TimeBasedForecastProperties
+
+-- | The forecast configuration that is used in a line chart\'s display
+-- properties.
+--
+-- /See:/ 'newForecastConfiguration' smart constructor.
+data ForecastConfiguration = ForecastConfiguration'
+  { -- | The forecast properties setup of a forecast in the line chart.
+    forecastProperties :: Prelude.Maybe TimeBasedForecastProperties,
+    -- | The forecast scenario of a forecast in the line chart.
+    scenario :: Prelude.Maybe ForecastScenario
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ForecastConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forecastProperties', 'forecastConfiguration_forecastProperties' - The forecast properties setup of a forecast in the line chart.
+--
+-- 'scenario', 'forecastConfiguration_scenario' - The forecast scenario of a forecast in the line chart.
+newForecastConfiguration ::
+  ForecastConfiguration
+newForecastConfiguration =
+  ForecastConfiguration'
+    { forecastProperties =
+        Prelude.Nothing,
+      scenario = Prelude.Nothing
+    }
+
+-- | The forecast properties setup of a forecast in the line chart.
+forecastConfiguration_forecastProperties :: Lens.Lens' ForecastConfiguration (Prelude.Maybe TimeBasedForecastProperties)
+forecastConfiguration_forecastProperties = Lens.lens (\ForecastConfiguration' {forecastProperties} -> forecastProperties) (\s@ForecastConfiguration' {} a -> s {forecastProperties = a} :: ForecastConfiguration)
+
+-- | The forecast scenario of a forecast in the line chart.
+forecastConfiguration_scenario :: Lens.Lens' ForecastConfiguration (Prelude.Maybe ForecastScenario)
+forecastConfiguration_scenario = Lens.lens (\ForecastConfiguration' {scenario} -> scenario) (\s@ForecastConfiguration' {} a -> s {scenario = a} :: ForecastConfiguration)
+
+instance Data.FromJSON ForecastConfiguration where
+  parseJSON =
+    Data.withObject
+      "ForecastConfiguration"
+      ( \x ->
+          ForecastConfiguration'
+            Prelude.<$> (x Data..:? "ForecastProperties")
+            Prelude.<*> (x Data..:? "Scenario")
+      )
+
+instance Prelude.Hashable ForecastConfiguration where
+  hashWithSalt _salt ForecastConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` forecastProperties
+      `Prelude.hashWithSalt` scenario
+
+instance Prelude.NFData ForecastConfiguration where
+  rnf ForecastConfiguration' {..} =
+    Prelude.rnf forecastProperties
+      `Prelude.seq` Prelude.rnf scenario
+
+instance Data.ToJSON ForecastConfiguration where
+  toJSON ForecastConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ForecastProperties" Data..=)
+              Prelude.<$> forecastProperties,
+            ("Scenario" Data..=) Prelude.<$> scenario
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ForecastScenario.hs b/gen/Amazonka/QuickSight/Types/ForecastScenario.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ForecastScenario.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ForecastScenario
+-- 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.QuickSight.Types.ForecastScenario 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.QuickSight.Types.WhatIfPointScenario
+import Amazonka.QuickSight.Types.WhatIfRangeScenario
+
+-- | The forecast scenario of a forecast in the line chart.
+--
+-- /See:/ 'newForecastScenario' smart constructor.
+data ForecastScenario = ForecastScenario'
+  { -- | The what-if analysis forecast setup with the target date.
+    whatIfPointScenario :: Prelude.Maybe WhatIfPointScenario,
+    -- | The what-if analysis forecast setup with the date range.
+    whatIfRangeScenario :: Prelude.Maybe WhatIfRangeScenario
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ForecastScenario' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'whatIfPointScenario', 'forecastScenario_whatIfPointScenario' - The what-if analysis forecast setup with the target date.
+--
+-- 'whatIfRangeScenario', 'forecastScenario_whatIfRangeScenario' - The what-if analysis forecast setup with the date range.
+newForecastScenario ::
+  ForecastScenario
+newForecastScenario =
+  ForecastScenario'
+    { whatIfPointScenario =
+        Prelude.Nothing,
+      whatIfRangeScenario = Prelude.Nothing
+    }
+
+-- | The what-if analysis forecast setup with the target date.
+forecastScenario_whatIfPointScenario :: Lens.Lens' ForecastScenario (Prelude.Maybe WhatIfPointScenario)
+forecastScenario_whatIfPointScenario = Lens.lens (\ForecastScenario' {whatIfPointScenario} -> whatIfPointScenario) (\s@ForecastScenario' {} a -> s {whatIfPointScenario = a} :: ForecastScenario)
+
+-- | The what-if analysis forecast setup with the date range.
+forecastScenario_whatIfRangeScenario :: Lens.Lens' ForecastScenario (Prelude.Maybe WhatIfRangeScenario)
+forecastScenario_whatIfRangeScenario = Lens.lens (\ForecastScenario' {whatIfRangeScenario} -> whatIfRangeScenario) (\s@ForecastScenario' {} a -> s {whatIfRangeScenario = a} :: ForecastScenario)
+
+instance Data.FromJSON ForecastScenario where
+  parseJSON =
+    Data.withObject
+      "ForecastScenario"
+      ( \x ->
+          ForecastScenario'
+            Prelude.<$> (x Data..:? "WhatIfPointScenario")
+            Prelude.<*> (x Data..:? "WhatIfRangeScenario")
+      )
+
+instance Prelude.Hashable ForecastScenario where
+  hashWithSalt _salt ForecastScenario' {..} =
+    _salt
+      `Prelude.hashWithSalt` whatIfPointScenario
+      `Prelude.hashWithSalt` whatIfRangeScenario
+
+instance Prelude.NFData ForecastScenario where
+  rnf ForecastScenario' {..} =
+    Prelude.rnf whatIfPointScenario
+      `Prelude.seq` Prelude.rnf whatIfRangeScenario
+
+instance Data.ToJSON ForecastScenario where
+  toJSON ForecastScenario' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("WhatIfPointScenario" Data..=)
+              Prelude.<$> whatIfPointScenario,
+            ("WhatIfRangeScenario" Data..=)
+              Prelude.<$> whatIfRangeScenario
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/FormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FormatConfiguration.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FormatConfiguration
+-- 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.QuickSight.Types.FormatConfiguration 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.QuickSight.Types.DateTimeFormatConfiguration
+import Amazonka.QuickSight.Types.NumberFormatConfiguration
+import Amazonka.QuickSight.Types.StringFormatConfiguration
+
+-- | The formatting configuration for all types of field.
+--
+-- /See:/ 'newFormatConfiguration' smart constructor.
+data FormatConfiguration = FormatConfiguration'
+  { -- | Formatting configuration for @DateTime@ fields.
+    dateTimeFormatConfiguration :: Prelude.Maybe DateTimeFormatConfiguration,
+    -- | Formatting configuration for number fields.
+    numberFormatConfiguration :: Prelude.Maybe NumberFormatConfiguration,
+    -- | Formatting configuration for string fields.
+    stringFormatConfiguration :: Prelude.Maybe StringFormatConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeFormatConfiguration', 'formatConfiguration_dateTimeFormatConfiguration' - Formatting configuration for @DateTime@ fields.
+--
+-- 'numberFormatConfiguration', 'formatConfiguration_numberFormatConfiguration' - Formatting configuration for number fields.
+--
+-- 'stringFormatConfiguration', 'formatConfiguration_stringFormatConfiguration' - Formatting configuration for string fields.
+newFormatConfiguration ::
+  FormatConfiguration
+newFormatConfiguration =
+  FormatConfiguration'
+    { dateTimeFormatConfiguration =
+        Prelude.Nothing,
+      numberFormatConfiguration = Prelude.Nothing,
+      stringFormatConfiguration = Prelude.Nothing
+    }
+
+-- | Formatting configuration for @DateTime@ fields.
+formatConfiguration_dateTimeFormatConfiguration :: Lens.Lens' FormatConfiguration (Prelude.Maybe DateTimeFormatConfiguration)
+formatConfiguration_dateTimeFormatConfiguration = Lens.lens (\FormatConfiguration' {dateTimeFormatConfiguration} -> dateTimeFormatConfiguration) (\s@FormatConfiguration' {} a -> s {dateTimeFormatConfiguration = a} :: FormatConfiguration)
+
+-- | Formatting configuration for number fields.
+formatConfiguration_numberFormatConfiguration :: Lens.Lens' FormatConfiguration (Prelude.Maybe NumberFormatConfiguration)
+formatConfiguration_numberFormatConfiguration = Lens.lens (\FormatConfiguration' {numberFormatConfiguration} -> numberFormatConfiguration) (\s@FormatConfiguration' {} a -> s {numberFormatConfiguration = a} :: FormatConfiguration)
+
+-- | Formatting configuration for string fields.
+formatConfiguration_stringFormatConfiguration :: Lens.Lens' FormatConfiguration (Prelude.Maybe StringFormatConfiguration)
+formatConfiguration_stringFormatConfiguration = Lens.lens (\FormatConfiguration' {stringFormatConfiguration} -> stringFormatConfiguration) (\s@FormatConfiguration' {} a -> s {stringFormatConfiguration = a} :: FormatConfiguration)
+
+instance Data.FromJSON FormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "FormatConfiguration"
+      ( \x ->
+          FormatConfiguration'
+            Prelude.<$> (x Data..:? "DateTimeFormatConfiguration")
+            Prelude.<*> (x Data..:? "NumberFormatConfiguration")
+            Prelude.<*> (x Data..:? "StringFormatConfiguration")
+      )
+
+instance Prelude.Hashable FormatConfiguration where
+  hashWithSalt _salt FormatConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimeFormatConfiguration
+      `Prelude.hashWithSalt` numberFormatConfiguration
+      `Prelude.hashWithSalt` stringFormatConfiguration
+
+instance Prelude.NFData FormatConfiguration where
+  rnf FormatConfiguration' {..} =
+    Prelude.rnf dateTimeFormatConfiguration
+      `Prelude.seq` Prelude.rnf numberFormatConfiguration
+      `Prelude.seq` Prelude.rnf stringFormatConfiguration
+
+instance Data.ToJSON FormatConfiguration where
+  toJSON FormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeFormatConfiguration" Data..=)
+              Prelude.<$> dateTimeFormatConfiguration,
+            ("NumberFormatConfiguration" Data..=)
+              Prelude.<$> numberFormatConfiguration,
+            ("StringFormatConfiguration" Data..=)
+              Prelude.<$> stringFormatConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormLayoutCanvasSizeOptions.hs b/gen/Amazonka/QuickSight/Types/FreeFormLayoutCanvasSizeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormLayoutCanvasSizeOptions.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FreeFormLayoutCanvasSizeOptions
+-- 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.QuickSight.Types.FreeFormLayoutCanvasSizeOptions 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.QuickSight.Types.FreeFormLayoutScreenCanvasSizeOptions
+
+-- | Configuration options for the canvas of a free-form layout.
+--
+-- /See:/ 'newFreeFormLayoutCanvasSizeOptions' smart constructor.
+data FreeFormLayoutCanvasSizeOptions = FreeFormLayoutCanvasSizeOptions'
+  { -- | The options that determine the sizing of the canvas used in a free-form
+    -- layout.
+    screenCanvasSizeOptions :: Prelude.Maybe FreeFormLayoutScreenCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormLayoutCanvasSizeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'screenCanvasSizeOptions', 'freeFormLayoutCanvasSizeOptions_screenCanvasSizeOptions' - The options that determine the sizing of the canvas used in a free-form
+-- layout.
+newFreeFormLayoutCanvasSizeOptions ::
+  FreeFormLayoutCanvasSizeOptions
+newFreeFormLayoutCanvasSizeOptions =
+  FreeFormLayoutCanvasSizeOptions'
+    { screenCanvasSizeOptions =
+        Prelude.Nothing
+    }
+
+-- | The options that determine the sizing of the canvas used in a free-form
+-- layout.
+freeFormLayoutCanvasSizeOptions_screenCanvasSizeOptions :: Lens.Lens' FreeFormLayoutCanvasSizeOptions (Prelude.Maybe FreeFormLayoutScreenCanvasSizeOptions)
+freeFormLayoutCanvasSizeOptions_screenCanvasSizeOptions = Lens.lens (\FreeFormLayoutCanvasSizeOptions' {screenCanvasSizeOptions} -> screenCanvasSizeOptions) (\s@FreeFormLayoutCanvasSizeOptions' {} a -> s {screenCanvasSizeOptions = a} :: FreeFormLayoutCanvasSizeOptions)
+
+instance
+  Data.FromJSON
+    FreeFormLayoutCanvasSizeOptions
+  where
+  parseJSON =
+    Data.withObject
+      "FreeFormLayoutCanvasSizeOptions"
+      ( \x ->
+          FreeFormLayoutCanvasSizeOptions'
+            Prelude.<$> (x Data..:? "ScreenCanvasSizeOptions")
+      )
+
+instance
+  Prelude.Hashable
+    FreeFormLayoutCanvasSizeOptions
+  where
+  hashWithSalt
+    _salt
+    FreeFormLayoutCanvasSizeOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` screenCanvasSizeOptions
+
+instance
+  Prelude.NFData
+    FreeFormLayoutCanvasSizeOptions
+  where
+  rnf FreeFormLayoutCanvasSizeOptions' {..} =
+    Prelude.rnf screenCanvasSizeOptions
+
+instance Data.ToJSON FreeFormLayoutCanvasSizeOptions where
+  toJSON FreeFormLayoutCanvasSizeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ScreenCanvasSizeOptions" Data..=)
+              Prelude.<$> screenCanvasSizeOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/FreeFormLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormLayoutConfiguration.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.QuickSight.Types.FreeFormLayoutConfiguration
+-- 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.QuickSight.Types.FreeFormLayoutConfiguration 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.QuickSight.Types.FreeFormLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.FreeFormLayoutElement
+
+-- | The configuration of a free-form layout.
+--
+-- /See:/ 'newFreeFormLayoutConfiguration' smart constructor.
+data FreeFormLayoutConfiguration = FreeFormLayoutConfiguration'
+  { canvasSizeOptions :: Prelude.Maybe FreeFormLayoutCanvasSizeOptions,
+    -- | The elements that are included in a free-form layout.
+    elements :: [FreeFormLayoutElement]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'canvasSizeOptions', 'freeFormLayoutConfiguration_canvasSizeOptions' - Undocumented member.
+--
+-- 'elements', 'freeFormLayoutConfiguration_elements' - The elements that are included in a free-form layout.
+newFreeFormLayoutConfiguration ::
+  FreeFormLayoutConfiguration
+newFreeFormLayoutConfiguration =
+  FreeFormLayoutConfiguration'
+    { canvasSizeOptions =
+        Prelude.Nothing,
+      elements = Prelude.mempty
+    }
+
+-- | Undocumented member.
+freeFormLayoutConfiguration_canvasSizeOptions :: Lens.Lens' FreeFormLayoutConfiguration (Prelude.Maybe FreeFormLayoutCanvasSizeOptions)
+freeFormLayoutConfiguration_canvasSizeOptions = Lens.lens (\FreeFormLayoutConfiguration' {canvasSizeOptions} -> canvasSizeOptions) (\s@FreeFormLayoutConfiguration' {} a -> s {canvasSizeOptions = a} :: FreeFormLayoutConfiguration)
+
+-- | The elements that are included in a free-form layout.
+freeFormLayoutConfiguration_elements :: Lens.Lens' FreeFormLayoutConfiguration [FreeFormLayoutElement]
+freeFormLayoutConfiguration_elements = Lens.lens (\FreeFormLayoutConfiguration' {elements} -> elements) (\s@FreeFormLayoutConfiguration' {} a -> s {elements = a} :: FreeFormLayoutConfiguration) Prelude.. Lens.coerced
+
+instance Data.FromJSON FreeFormLayoutConfiguration where
+  parseJSON =
+    Data.withObject
+      "FreeFormLayoutConfiguration"
+      ( \x ->
+          FreeFormLayoutConfiguration'
+            Prelude.<$> (x Data..:? "CanvasSizeOptions")
+            Prelude.<*> (x Data..:? "Elements" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable FreeFormLayoutConfiguration where
+  hashWithSalt _salt FreeFormLayoutConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` canvasSizeOptions
+      `Prelude.hashWithSalt` elements
+
+instance Prelude.NFData FreeFormLayoutConfiguration where
+  rnf FreeFormLayoutConfiguration' {..} =
+    Prelude.rnf canvasSizeOptions
+      `Prelude.seq` Prelude.rnf elements
+
+instance Data.ToJSON FreeFormLayoutConfiguration where
+  toJSON FreeFormLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CanvasSizeOptions" Data..=)
+              Prelude.<$> canvasSizeOptions,
+            Prelude.Just ("Elements" Data..= elements)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormLayoutElement.hs b/gen/Amazonka/QuickSight/Types/FreeFormLayoutElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormLayoutElement.hs
@@ -0,0 +1,258 @@
+{-# 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.QuickSight.Types.FreeFormLayoutElement
+-- 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.QuickSight.Types.FreeFormLayoutElement 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.QuickSight.Types.FreeFormLayoutElementBackgroundStyle
+import Amazonka.QuickSight.Types.FreeFormLayoutElementBorderStyle
+import Amazonka.QuickSight.Types.LayoutElementType
+import Amazonka.QuickSight.Types.LoadingAnimation
+import Amazonka.QuickSight.Types.SheetElementRenderingRule
+import Amazonka.QuickSight.Types.Visibility
+
+-- | An element within a free-form layout.
+--
+-- /See:/ 'newFreeFormLayoutElement' smart constructor.
+data FreeFormLayoutElement = FreeFormLayoutElement'
+  { -- | The background style configuration of a free-form layout element.
+    backgroundStyle :: Prelude.Maybe FreeFormLayoutElementBackgroundStyle,
+    -- | The border style configuration of a free-form layout element.
+    borderStyle :: Prelude.Maybe FreeFormLayoutElementBorderStyle,
+    -- | The loading animation configuration of a free-form layout element.
+    loadingAnimation :: Prelude.Maybe LoadingAnimation,
+    -- | The rendering rules that determine when an element should be displayed
+    -- within a free-form layout.
+    renderingRules :: Prelude.Maybe [SheetElementRenderingRule],
+    -- | The border style configuration of a free-form layout element. This
+    -- border style is used when the element is selected.
+    selectedBorderStyle :: Prelude.Maybe FreeFormLayoutElementBorderStyle,
+    -- | The visibility of an element within a free-form layout.
+    visibility :: Prelude.Maybe Visibility,
+    -- | A unique identifier for an element within a free-form layout.
+    elementId :: Prelude.Text,
+    -- | The type of element.
+    elementType :: LayoutElementType,
+    -- | The x-axis coordinate of the element.
+    xAxisLocation :: Prelude.Text,
+    -- | The y-axis coordinate of the element.
+    yAxisLocation :: Prelude.Text,
+    -- | The width of an element within a free-form layout.
+    width :: Prelude.Text,
+    -- | The height of an element within a free-form layout.
+    height :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormLayoutElement' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backgroundStyle', 'freeFormLayoutElement_backgroundStyle' - The background style configuration of a free-form layout element.
+--
+-- 'borderStyle', 'freeFormLayoutElement_borderStyle' - The border style configuration of a free-form layout element.
+--
+-- 'loadingAnimation', 'freeFormLayoutElement_loadingAnimation' - The loading animation configuration of a free-form layout element.
+--
+-- 'renderingRules', 'freeFormLayoutElement_renderingRules' - The rendering rules that determine when an element should be displayed
+-- within a free-form layout.
+--
+-- 'selectedBorderStyle', 'freeFormLayoutElement_selectedBorderStyle' - The border style configuration of a free-form layout element. This
+-- border style is used when the element is selected.
+--
+-- 'visibility', 'freeFormLayoutElement_visibility' - The visibility of an element within a free-form layout.
+--
+-- 'elementId', 'freeFormLayoutElement_elementId' - A unique identifier for an element within a free-form layout.
+--
+-- 'elementType', 'freeFormLayoutElement_elementType' - The type of element.
+--
+-- 'xAxisLocation', 'freeFormLayoutElement_xAxisLocation' - The x-axis coordinate of the element.
+--
+-- 'yAxisLocation', 'freeFormLayoutElement_yAxisLocation' - The y-axis coordinate of the element.
+--
+-- 'width', 'freeFormLayoutElement_width' - The width of an element within a free-form layout.
+--
+-- 'height', 'freeFormLayoutElement_height' - The height of an element within a free-form layout.
+newFreeFormLayoutElement ::
+  -- | 'elementId'
+  Prelude.Text ->
+  -- | 'elementType'
+  LayoutElementType ->
+  -- | 'xAxisLocation'
+  Prelude.Text ->
+  -- | 'yAxisLocation'
+  Prelude.Text ->
+  -- | 'width'
+  Prelude.Text ->
+  -- | 'height'
+  Prelude.Text ->
+  FreeFormLayoutElement
+newFreeFormLayoutElement
+  pElementId_
+  pElementType_
+  pXAxisLocation_
+  pYAxisLocation_
+  pWidth_
+  pHeight_ =
+    FreeFormLayoutElement'
+      { backgroundStyle =
+          Prelude.Nothing,
+        borderStyle = Prelude.Nothing,
+        loadingAnimation = Prelude.Nothing,
+        renderingRules = Prelude.Nothing,
+        selectedBorderStyle = Prelude.Nothing,
+        visibility = Prelude.Nothing,
+        elementId = pElementId_,
+        elementType = pElementType_,
+        xAxisLocation = pXAxisLocation_,
+        yAxisLocation = pYAxisLocation_,
+        width = pWidth_,
+        height = pHeight_
+      }
+
+-- | The background style configuration of a free-form layout element.
+freeFormLayoutElement_backgroundStyle :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe FreeFormLayoutElementBackgroundStyle)
+freeFormLayoutElement_backgroundStyle = Lens.lens (\FreeFormLayoutElement' {backgroundStyle} -> backgroundStyle) (\s@FreeFormLayoutElement' {} a -> s {backgroundStyle = a} :: FreeFormLayoutElement)
+
+-- | The border style configuration of a free-form layout element.
+freeFormLayoutElement_borderStyle :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe FreeFormLayoutElementBorderStyle)
+freeFormLayoutElement_borderStyle = Lens.lens (\FreeFormLayoutElement' {borderStyle} -> borderStyle) (\s@FreeFormLayoutElement' {} a -> s {borderStyle = a} :: FreeFormLayoutElement)
+
+-- | The loading animation configuration of a free-form layout element.
+freeFormLayoutElement_loadingAnimation :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe LoadingAnimation)
+freeFormLayoutElement_loadingAnimation = Lens.lens (\FreeFormLayoutElement' {loadingAnimation} -> loadingAnimation) (\s@FreeFormLayoutElement' {} a -> s {loadingAnimation = a} :: FreeFormLayoutElement)
+
+-- | The rendering rules that determine when an element should be displayed
+-- within a free-form layout.
+freeFormLayoutElement_renderingRules :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe [SheetElementRenderingRule])
+freeFormLayoutElement_renderingRules = Lens.lens (\FreeFormLayoutElement' {renderingRules} -> renderingRules) (\s@FreeFormLayoutElement' {} a -> s {renderingRules = a} :: FreeFormLayoutElement) Prelude.. Lens.mapping Lens.coerced
+
+-- | The border style configuration of a free-form layout element. This
+-- border style is used when the element is selected.
+freeFormLayoutElement_selectedBorderStyle :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe FreeFormLayoutElementBorderStyle)
+freeFormLayoutElement_selectedBorderStyle = Lens.lens (\FreeFormLayoutElement' {selectedBorderStyle} -> selectedBorderStyle) (\s@FreeFormLayoutElement' {} a -> s {selectedBorderStyle = a} :: FreeFormLayoutElement)
+
+-- | The visibility of an element within a free-form layout.
+freeFormLayoutElement_visibility :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe Visibility)
+freeFormLayoutElement_visibility = Lens.lens (\FreeFormLayoutElement' {visibility} -> visibility) (\s@FreeFormLayoutElement' {} a -> s {visibility = a} :: FreeFormLayoutElement)
+
+-- | A unique identifier for an element within a free-form layout.
+freeFormLayoutElement_elementId :: Lens.Lens' FreeFormLayoutElement Prelude.Text
+freeFormLayoutElement_elementId = Lens.lens (\FreeFormLayoutElement' {elementId} -> elementId) (\s@FreeFormLayoutElement' {} a -> s {elementId = a} :: FreeFormLayoutElement)
+
+-- | The type of element.
+freeFormLayoutElement_elementType :: Lens.Lens' FreeFormLayoutElement LayoutElementType
+freeFormLayoutElement_elementType = Lens.lens (\FreeFormLayoutElement' {elementType} -> elementType) (\s@FreeFormLayoutElement' {} a -> s {elementType = a} :: FreeFormLayoutElement)
+
+-- | The x-axis coordinate of the element.
+freeFormLayoutElement_xAxisLocation :: Lens.Lens' FreeFormLayoutElement Prelude.Text
+freeFormLayoutElement_xAxisLocation = Lens.lens (\FreeFormLayoutElement' {xAxisLocation} -> xAxisLocation) (\s@FreeFormLayoutElement' {} a -> s {xAxisLocation = a} :: FreeFormLayoutElement)
+
+-- | The y-axis coordinate of the element.
+freeFormLayoutElement_yAxisLocation :: Lens.Lens' FreeFormLayoutElement Prelude.Text
+freeFormLayoutElement_yAxisLocation = Lens.lens (\FreeFormLayoutElement' {yAxisLocation} -> yAxisLocation) (\s@FreeFormLayoutElement' {} a -> s {yAxisLocation = a} :: FreeFormLayoutElement)
+
+-- | The width of an element within a free-form layout.
+freeFormLayoutElement_width :: Lens.Lens' FreeFormLayoutElement Prelude.Text
+freeFormLayoutElement_width = Lens.lens (\FreeFormLayoutElement' {width} -> width) (\s@FreeFormLayoutElement' {} a -> s {width = a} :: FreeFormLayoutElement)
+
+-- | The height of an element within a free-form layout.
+freeFormLayoutElement_height :: Lens.Lens' FreeFormLayoutElement Prelude.Text
+freeFormLayoutElement_height = Lens.lens (\FreeFormLayoutElement' {height} -> height) (\s@FreeFormLayoutElement' {} a -> s {height = a} :: FreeFormLayoutElement)
+
+instance Data.FromJSON FreeFormLayoutElement where
+  parseJSON =
+    Data.withObject
+      "FreeFormLayoutElement"
+      ( \x ->
+          FreeFormLayoutElement'
+            Prelude.<$> (x Data..:? "BackgroundStyle")
+            Prelude.<*> (x Data..:? "BorderStyle")
+            Prelude.<*> (x Data..:? "LoadingAnimation")
+            Prelude.<*> (x Data..:? "RenderingRules" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SelectedBorderStyle")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..: "ElementId")
+            Prelude.<*> (x Data..: "ElementType")
+            Prelude.<*> (x Data..: "XAxisLocation")
+            Prelude.<*> (x Data..: "YAxisLocation")
+            Prelude.<*> (x Data..: "Width")
+            Prelude.<*> (x Data..: "Height")
+      )
+
+instance Prelude.Hashable FreeFormLayoutElement where
+  hashWithSalt _salt FreeFormLayoutElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` backgroundStyle
+      `Prelude.hashWithSalt` borderStyle
+      `Prelude.hashWithSalt` loadingAnimation
+      `Prelude.hashWithSalt` renderingRules
+      `Prelude.hashWithSalt` selectedBorderStyle
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` elementId
+      `Prelude.hashWithSalt` elementType
+      `Prelude.hashWithSalt` xAxisLocation
+      `Prelude.hashWithSalt` yAxisLocation
+      `Prelude.hashWithSalt` width
+      `Prelude.hashWithSalt` height
+
+instance Prelude.NFData FreeFormLayoutElement where
+  rnf FreeFormLayoutElement' {..} =
+    Prelude.rnf backgroundStyle
+      `Prelude.seq` Prelude.rnf borderStyle
+      `Prelude.seq` Prelude.rnf loadingAnimation
+      `Prelude.seq` Prelude.rnf renderingRules
+      `Prelude.seq` Prelude.rnf selectedBorderStyle
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf elementId
+      `Prelude.seq` Prelude.rnf elementType
+      `Prelude.seq` Prelude.rnf xAxisLocation
+      `Prelude.seq` Prelude.rnf yAxisLocation
+      `Prelude.seq` Prelude.rnf width
+      `Prelude.seq` Prelude.rnf height
+
+instance Data.ToJSON FreeFormLayoutElement where
+  toJSON FreeFormLayoutElement' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BackgroundStyle" Data..=)
+              Prelude.<$> backgroundStyle,
+            ("BorderStyle" Data..=) Prelude.<$> borderStyle,
+            ("LoadingAnimation" Data..=)
+              Prelude.<$> loadingAnimation,
+            ("RenderingRules" Data..=)
+              Prelude.<$> renderingRules,
+            ("SelectedBorderStyle" Data..=)
+              Prelude.<$> selectedBorderStyle,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            Prelude.Just ("ElementId" Data..= elementId),
+            Prelude.Just ("ElementType" Data..= elementType),
+            Prelude.Just ("XAxisLocation" Data..= xAxisLocation),
+            Prelude.Just ("YAxisLocation" Data..= yAxisLocation),
+            Prelude.Just ("Width" Data..= width),
+            Prelude.Just ("Height" Data..= height)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormLayoutElementBackgroundStyle.hs b/gen/Amazonka/QuickSight/Types/FreeFormLayoutElementBackgroundStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormLayoutElementBackgroundStyle.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FreeFormLayoutElementBackgroundStyle
+-- 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.QuickSight.Types.FreeFormLayoutElementBackgroundStyle 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.QuickSight.Types.Visibility
+
+-- | The background style configuration of a free-form layout element.
+--
+-- /See:/ 'newFreeFormLayoutElementBackgroundStyle' smart constructor.
+data FreeFormLayoutElementBackgroundStyle = FreeFormLayoutElementBackgroundStyle'
+  { -- | The background color of a free-form layout element.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | The background visibility of a free-form layout element.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormLayoutElementBackgroundStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'freeFormLayoutElementBackgroundStyle_color' - The background color of a free-form layout element.
+--
+-- 'visibility', 'freeFormLayoutElementBackgroundStyle_visibility' - The background visibility of a free-form layout element.
+newFreeFormLayoutElementBackgroundStyle ::
+  FreeFormLayoutElementBackgroundStyle
+newFreeFormLayoutElementBackgroundStyle =
+  FreeFormLayoutElementBackgroundStyle'
+    { color =
+        Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The background color of a free-form layout element.
+freeFormLayoutElementBackgroundStyle_color :: Lens.Lens' FreeFormLayoutElementBackgroundStyle (Prelude.Maybe Prelude.Text)
+freeFormLayoutElementBackgroundStyle_color = Lens.lens (\FreeFormLayoutElementBackgroundStyle' {color} -> color) (\s@FreeFormLayoutElementBackgroundStyle' {} a -> s {color = a} :: FreeFormLayoutElementBackgroundStyle)
+
+-- | The background visibility of a free-form layout element.
+freeFormLayoutElementBackgroundStyle_visibility :: Lens.Lens' FreeFormLayoutElementBackgroundStyle (Prelude.Maybe Visibility)
+freeFormLayoutElementBackgroundStyle_visibility = Lens.lens (\FreeFormLayoutElementBackgroundStyle' {visibility} -> visibility) (\s@FreeFormLayoutElementBackgroundStyle' {} a -> s {visibility = a} :: FreeFormLayoutElementBackgroundStyle)
+
+instance
+  Data.FromJSON
+    FreeFormLayoutElementBackgroundStyle
+  where
+  parseJSON =
+    Data.withObject
+      "FreeFormLayoutElementBackgroundStyle"
+      ( \x ->
+          FreeFormLayoutElementBackgroundStyle'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance
+  Prelude.Hashable
+    FreeFormLayoutElementBackgroundStyle
+  where
+  hashWithSalt
+    _salt
+    FreeFormLayoutElementBackgroundStyle' {..} =
+      _salt
+        `Prelude.hashWithSalt` color
+        `Prelude.hashWithSalt` visibility
+
+instance
+  Prelude.NFData
+    FreeFormLayoutElementBackgroundStyle
+  where
+  rnf FreeFormLayoutElementBackgroundStyle' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf visibility
+
+instance
+  Data.ToJSON
+    FreeFormLayoutElementBackgroundStyle
+  where
+  toJSON FreeFormLayoutElementBackgroundStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormLayoutElementBorderStyle.hs b/gen/Amazonka/QuickSight/Types/FreeFormLayoutElementBorderStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormLayoutElementBorderStyle.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.QuickSight.Types.FreeFormLayoutElementBorderStyle
+-- 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.QuickSight.Types.FreeFormLayoutElementBorderStyle 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.QuickSight.Types.Visibility
+
+-- | The background style configuration of a free-form layout element.
+--
+-- /See:/ 'newFreeFormLayoutElementBorderStyle' smart constructor.
+data FreeFormLayoutElementBorderStyle = FreeFormLayoutElementBorderStyle'
+  { -- | The border color of a free-form layout element.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | The border visibility of a free-form layout element.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormLayoutElementBorderStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'freeFormLayoutElementBorderStyle_color' - The border color of a free-form layout element.
+--
+-- 'visibility', 'freeFormLayoutElementBorderStyle_visibility' - The border visibility of a free-form layout element.
+newFreeFormLayoutElementBorderStyle ::
+  FreeFormLayoutElementBorderStyle
+newFreeFormLayoutElementBorderStyle =
+  FreeFormLayoutElementBorderStyle'
+    { color =
+        Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The border color of a free-form layout element.
+freeFormLayoutElementBorderStyle_color :: Lens.Lens' FreeFormLayoutElementBorderStyle (Prelude.Maybe Prelude.Text)
+freeFormLayoutElementBorderStyle_color = Lens.lens (\FreeFormLayoutElementBorderStyle' {color} -> color) (\s@FreeFormLayoutElementBorderStyle' {} a -> s {color = a} :: FreeFormLayoutElementBorderStyle)
+
+-- | The border visibility of a free-form layout element.
+freeFormLayoutElementBorderStyle_visibility :: Lens.Lens' FreeFormLayoutElementBorderStyle (Prelude.Maybe Visibility)
+freeFormLayoutElementBorderStyle_visibility = Lens.lens (\FreeFormLayoutElementBorderStyle' {visibility} -> visibility) (\s@FreeFormLayoutElementBorderStyle' {} a -> s {visibility = a} :: FreeFormLayoutElementBorderStyle)
+
+instance
+  Data.FromJSON
+    FreeFormLayoutElementBorderStyle
+  where
+  parseJSON =
+    Data.withObject
+      "FreeFormLayoutElementBorderStyle"
+      ( \x ->
+          FreeFormLayoutElementBorderStyle'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance
+  Prelude.Hashable
+    FreeFormLayoutElementBorderStyle
+  where
+  hashWithSalt
+    _salt
+    FreeFormLayoutElementBorderStyle' {..} =
+      _salt
+        `Prelude.hashWithSalt` color
+        `Prelude.hashWithSalt` visibility
+
+instance
+  Prelude.NFData
+    FreeFormLayoutElementBorderStyle
+  where
+  rnf FreeFormLayoutElementBorderStyle' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON FreeFormLayoutElementBorderStyle where
+  toJSON FreeFormLayoutElementBorderStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormLayoutScreenCanvasSizeOptions.hs b/gen/Amazonka/QuickSight/Types/FreeFormLayoutScreenCanvasSizeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormLayoutScreenCanvasSizeOptions.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FreeFormLayoutScreenCanvasSizeOptions
+-- 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.QuickSight.Types.FreeFormLayoutScreenCanvasSizeOptions 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 options that determine the sizing of the canvas used in a free-form
+-- layout.
+--
+-- /See:/ 'newFreeFormLayoutScreenCanvasSizeOptions' smart constructor.
+data FreeFormLayoutScreenCanvasSizeOptions = FreeFormLayoutScreenCanvasSizeOptions'
+  { -- | The width that the view port will be optimized for when the layout
+    -- renders.
+    optimizedViewPortWidth :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormLayoutScreenCanvasSizeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'optimizedViewPortWidth', 'freeFormLayoutScreenCanvasSizeOptions_optimizedViewPortWidth' - The width that the view port will be optimized for when the layout
+-- renders.
+newFreeFormLayoutScreenCanvasSizeOptions ::
+  -- | 'optimizedViewPortWidth'
+  Prelude.Text ->
+  FreeFormLayoutScreenCanvasSizeOptions
+newFreeFormLayoutScreenCanvasSizeOptions
+  pOptimizedViewPortWidth_ =
+    FreeFormLayoutScreenCanvasSizeOptions'
+      { optimizedViewPortWidth =
+          pOptimizedViewPortWidth_
+      }
+
+-- | The width that the view port will be optimized for when the layout
+-- renders.
+freeFormLayoutScreenCanvasSizeOptions_optimizedViewPortWidth :: Lens.Lens' FreeFormLayoutScreenCanvasSizeOptions Prelude.Text
+freeFormLayoutScreenCanvasSizeOptions_optimizedViewPortWidth = Lens.lens (\FreeFormLayoutScreenCanvasSizeOptions' {optimizedViewPortWidth} -> optimizedViewPortWidth) (\s@FreeFormLayoutScreenCanvasSizeOptions' {} a -> s {optimizedViewPortWidth = a} :: FreeFormLayoutScreenCanvasSizeOptions)
+
+instance
+  Data.FromJSON
+    FreeFormLayoutScreenCanvasSizeOptions
+  where
+  parseJSON =
+    Data.withObject
+      "FreeFormLayoutScreenCanvasSizeOptions"
+      ( \x ->
+          FreeFormLayoutScreenCanvasSizeOptions'
+            Prelude.<$> (x Data..: "OptimizedViewPortWidth")
+      )
+
+instance
+  Prelude.Hashable
+    FreeFormLayoutScreenCanvasSizeOptions
+  where
+  hashWithSalt
+    _salt
+    FreeFormLayoutScreenCanvasSizeOptions' {..} =
+      _salt `Prelude.hashWithSalt` optimizedViewPortWidth
+
+instance
+  Prelude.NFData
+    FreeFormLayoutScreenCanvasSizeOptions
+  where
+  rnf FreeFormLayoutScreenCanvasSizeOptions' {..} =
+    Prelude.rnf optimizedViewPortWidth
+
+instance
+  Data.ToJSON
+    FreeFormLayoutScreenCanvasSizeOptions
+  where
+  toJSON FreeFormLayoutScreenCanvasSizeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "OptimizedViewPortWidth"
+                  Data..= optimizedViewPortWidth
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FreeFormSectionLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/FreeFormSectionLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FreeFormSectionLayoutConfiguration.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.QuickSight.Types.FreeFormSectionLayoutConfiguration
+-- 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.QuickSight.Types.FreeFormSectionLayoutConfiguration 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.QuickSight.Types.FreeFormLayoutElement
+
+-- | The free-form layout configuration of a section.
+--
+-- /See:/ 'newFreeFormSectionLayoutConfiguration' smart constructor.
+data FreeFormSectionLayoutConfiguration = FreeFormSectionLayoutConfiguration'
+  { -- | The elements that are included in the free-form layout.
+    elements :: [FreeFormLayoutElement]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeFormSectionLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'elements', 'freeFormSectionLayoutConfiguration_elements' - The elements that are included in the free-form layout.
+newFreeFormSectionLayoutConfiguration ::
+  FreeFormSectionLayoutConfiguration
+newFreeFormSectionLayoutConfiguration =
+  FreeFormSectionLayoutConfiguration'
+    { elements =
+        Prelude.mempty
+    }
+
+-- | The elements that are included in the free-form layout.
+freeFormSectionLayoutConfiguration_elements :: Lens.Lens' FreeFormSectionLayoutConfiguration [FreeFormLayoutElement]
+freeFormSectionLayoutConfiguration_elements = Lens.lens (\FreeFormSectionLayoutConfiguration' {elements} -> elements) (\s@FreeFormSectionLayoutConfiguration' {} a -> s {elements = a} :: FreeFormSectionLayoutConfiguration) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    FreeFormSectionLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "FreeFormSectionLayoutConfiguration"
+      ( \x ->
+          FreeFormSectionLayoutConfiguration'
+            Prelude.<$> (x Data..:? "Elements" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    FreeFormSectionLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    FreeFormSectionLayoutConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` elements
+
+instance
+  Prelude.NFData
+    FreeFormSectionLayoutConfiguration
+  where
+  rnf FreeFormSectionLayoutConfiguration' {..} =
+    Prelude.rnf elements
+
+instance
+  Data.ToJSON
+    FreeFormSectionLayoutConfiguration
+  where
+  toJSON FreeFormSectionLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Elements" Data..= elements)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/FunnelChartAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartAggregatedFieldWells.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.FunnelChartAggregatedFieldWells
+-- 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.QuickSight.Types.FunnelChartAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a @FunnelChartVisual@.
+--
+-- /See:/ 'newFunnelChartAggregatedFieldWells' smart constructor.
+data FunnelChartAggregatedFieldWells = FunnelChartAggregatedFieldWells'
+  { -- | The category field wells of a funnel chart. Values are grouped by
+    -- category fields.
+    category :: Prelude.Maybe [DimensionField],
+    -- | The value field wells of a funnel chart. Values are aggregated based on
+    -- categories.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FunnelChartAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'category', 'funnelChartAggregatedFieldWells_category' - The category field wells of a funnel chart. Values are grouped by
+-- category fields.
+--
+-- 'values', 'funnelChartAggregatedFieldWells_values' - The value field wells of a funnel chart. Values are aggregated based on
+-- categories.
+newFunnelChartAggregatedFieldWells ::
+  FunnelChartAggregatedFieldWells
+newFunnelChartAggregatedFieldWells =
+  FunnelChartAggregatedFieldWells'
+    { category =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The category field wells of a funnel chart. Values are grouped by
+-- category fields.
+funnelChartAggregatedFieldWells_category :: Lens.Lens' FunnelChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+funnelChartAggregatedFieldWells_category = Lens.lens (\FunnelChartAggregatedFieldWells' {category} -> category) (\s@FunnelChartAggregatedFieldWells' {} a -> s {category = a} :: FunnelChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a funnel chart. Values are aggregated based on
+-- categories.
+funnelChartAggregatedFieldWells_values :: Lens.Lens' FunnelChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+funnelChartAggregatedFieldWells_values = Lens.lens (\FunnelChartAggregatedFieldWells' {values} -> values) (\s@FunnelChartAggregatedFieldWells' {} a -> s {values = a} :: FunnelChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    FunnelChartAggregatedFieldWells
+  where
+  parseJSON =
+    Data.withObject
+      "FunnelChartAggregatedFieldWells"
+      ( \x ->
+          FunnelChartAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Category" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    FunnelChartAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    FunnelChartAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` category
+        `Prelude.hashWithSalt` values
+
+instance
+  Prelude.NFData
+    FunnelChartAggregatedFieldWells
+  where
+  rnf FunnelChartAggregatedFieldWells' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON FunnelChartAggregatedFieldWells where
+  toJSON FunnelChartAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Category" Data..=) Prelude.<$> category,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/FunnelChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartConfiguration.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.QuickSight.Types.FunnelChartConfiguration
+-- 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.QuickSight.Types.FunnelChartConfiguration 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.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.FunnelChartDataLabelOptions
+import Amazonka.QuickSight.Types.FunnelChartFieldWells
+import Amazonka.QuickSight.Types.FunnelChartSortConfiguration
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a @FunnelChartVisual@.
+--
+-- /See:/ 'newFunnelChartConfiguration' smart constructor.
+data FunnelChartConfiguration = FunnelChartConfiguration'
+  { -- | The label options of the categories that are displayed in a
+    -- @FunnelChartVisual@.
+    categoryLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The options that determine the presentation of the data labels.
+    dataLabelOptions :: Prelude.Maybe FunnelChartDataLabelOptions,
+    -- | The field well configuration of a @FunnelChartVisual@.
+    fieldWells :: Prelude.Maybe FunnelChartFieldWells,
+    -- | The sort configuration of a @FunnelChartVisual@.
+    sortConfiguration :: Prelude.Maybe FunnelChartSortConfiguration,
+    -- | The tooltip configuration of a @FunnelChartVisual@.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The label options for the values that are displayed in a
+    -- @FunnelChartVisual@.
+    valueLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The visual palette configuration of a @FunnelChartVisual@.
+    visualPalette :: Prelude.Maybe VisualPalette
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FunnelChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryLabelOptions', 'funnelChartConfiguration_categoryLabelOptions' - The label options of the categories that are displayed in a
+-- @FunnelChartVisual@.
+--
+-- 'dataLabelOptions', 'funnelChartConfiguration_dataLabelOptions' - The options that determine the presentation of the data labels.
+--
+-- 'fieldWells', 'funnelChartConfiguration_fieldWells' - The field well configuration of a @FunnelChartVisual@.
+--
+-- 'sortConfiguration', 'funnelChartConfiguration_sortConfiguration' - The sort configuration of a @FunnelChartVisual@.
+--
+-- 'tooltip', 'funnelChartConfiguration_tooltip' - The tooltip configuration of a @FunnelChartVisual@.
+--
+-- 'valueLabelOptions', 'funnelChartConfiguration_valueLabelOptions' - The label options for the values that are displayed in a
+-- @FunnelChartVisual@.
+--
+-- 'visualPalette', 'funnelChartConfiguration_visualPalette' - The visual palette configuration of a @FunnelChartVisual@.
+newFunnelChartConfiguration ::
+  FunnelChartConfiguration
+newFunnelChartConfiguration =
+  FunnelChartConfiguration'
+    { categoryLabelOptions =
+        Prelude.Nothing,
+      dataLabelOptions = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      valueLabelOptions = Prelude.Nothing,
+      visualPalette = Prelude.Nothing
+    }
+
+-- | The label options of the categories that are displayed in a
+-- @FunnelChartVisual@.
+funnelChartConfiguration_categoryLabelOptions :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+funnelChartConfiguration_categoryLabelOptions = Lens.lens (\FunnelChartConfiguration' {categoryLabelOptions} -> categoryLabelOptions) (\s@FunnelChartConfiguration' {} a -> s {categoryLabelOptions = a} :: FunnelChartConfiguration)
+
+-- | The options that determine the presentation of the data labels.
+funnelChartConfiguration_dataLabelOptions :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe FunnelChartDataLabelOptions)
+funnelChartConfiguration_dataLabelOptions = Lens.lens (\FunnelChartConfiguration' {dataLabelOptions} -> dataLabelOptions) (\s@FunnelChartConfiguration' {} a -> s {dataLabelOptions = a} :: FunnelChartConfiguration)
+
+-- | The field well configuration of a @FunnelChartVisual@.
+funnelChartConfiguration_fieldWells :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe FunnelChartFieldWells)
+funnelChartConfiguration_fieldWells = Lens.lens (\FunnelChartConfiguration' {fieldWells} -> fieldWells) (\s@FunnelChartConfiguration' {} a -> s {fieldWells = a} :: FunnelChartConfiguration)
+
+-- | The sort configuration of a @FunnelChartVisual@.
+funnelChartConfiguration_sortConfiguration :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe FunnelChartSortConfiguration)
+funnelChartConfiguration_sortConfiguration = Lens.lens (\FunnelChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@FunnelChartConfiguration' {} a -> s {sortConfiguration = a} :: FunnelChartConfiguration)
+
+-- | The tooltip configuration of a @FunnelChartVisual@.
+funnelChartConfiguration_tooltip :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe TooltipOptions)
+funnelChartConfiguration_tooltip = Lens.lens (\FunnelChartConfiguration' {tooltip} -> tooltip) (\s@FunnelChartConfiguration' {} a -> s {tooltip = a} :: FunnelChartConfiguration)
+
+-- | The label options for the values that are displayed in a
+-- @FunnelChartVisual@.
+funnelChartConfiguration_valueLabelOptions :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+funnelChartConfiguration_valueLabelOptions = Lens.lens (\FunnelChartConfiguration' {valueLabelOptions} -> valueLabelOptions) (\s@FunnelChartConfiguration' {} a -> s {valueLabelOptions = a} :: FunnelChartConfiguration)
+
+-- | The visual palette configuration of a @FunnelChartVisual@.
+funnelChartConfiguration_visualPalette :: Lens.Lens' FunnelChartConfiguration (Prelude.Maybe VisualPalette)
+funnelChartConfiguration_visualPalette = Lens.lens (\FunnelChartConfiguration' {visualPalette} -> visualPalette) (\s@FunnelChartConfiguration' {} a -> s {visualPalette = a} :: FunnelChartConfiguration)
+
+instance Data.FromJSON FunnelChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "FunnelChartConfiguration"
+      ( \x ->
+          FunnelChartConfiguration'
+            Prelude.<$> (x Data..:? "CategoryLabelOptions")
+            Prelude.<*> (x Data..:? "DataLabelOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "ValueLabelOptions")
+            Prelude.<*> (x Data..:? "VisualPalette")
+      )
+
+instance Prelude.Hashable FunnelChartConfiguration where
+  hashWithSalt _salt FunnelChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryLabelOptions
+      `Prelude.hashWithSalt` dataLabelOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` valueLabelOptions
+      `Prelude.hashWithSalt` visualPalette
+
+instance Prelude.NFData FunnelChartConfiguration where
+  rnf FunnelChartConfiguration' {..} =
+    Prelude.rnf categoryLabelOptions
+      `Prelude.seq` Prelude.rnf dataLabelOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf valueLabelOptions
+      `Prelude.seq` Prelude.rnf visualPalette
+
+instance Data.ToJSON FunnelChartConfiguration where
+  toJSON FunnelChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryLabelOptions" Data..=)
+              Prelude.<$> categoryLabelOptions,
+            ("DataLabelOptions" Data..=)
+              Prelude.<$> dataLabelOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("ValueLabelOptions" Data..=)
+              Prelude.<$> valueLabelOptions,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartDataLabelOptions.hs b/gen/Amazonka/QuickSight/Types/FunnelChartDataLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartDataLabelOptions.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.QuickSight.Types.FunnelChartDataLabelOptions
+-- 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.QuickSight.Types.FunnelChartDataLabelOptions 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.QuickSight.Types.DataLabelPosition
+import Amazonka.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.FunnelChartMeasureDataLabelStyle
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options that determine the presentation of the data labels.
+--
+-- /See:/ 'newFunnelChartDataLabelOptions' smart constructor.
+data FunnelChartDataLabelOptions = FunnelChartDataLabelOptions'
+  { -- | The visibility of the category labels within the data labels.
+    categoryLabelVisibility :: Prelude.Maybe Visibility,
+    -- | The color of the data label text.
+    labelColor :: Prelude.Maybe Prelude.Text,
+    -- | The font configuration for the data labels.
+    --
+    -- Only the @FontSize@ attribute of the font configuration is used for data
+    -- labels.
+    labelFontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | Determines the style of the metric labels.
+    measureDataLabelStyle :: Prelude.Maybe FunnelChartMeasureDataLabelStyle,
+    -- | The visibility of the measure labels within the data labels.
+    measureLabelVisibility :: Prelude.Maybe Visibility,
+    -- | Determines the positioning of the data label relative to a section of
+    -- the funnel.
+    position :: Prelude.Maybe DataLabelPosition,
+    -- | The visibility option that determines if data labels are displayed.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FunnelChartDataLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryLabelVisibility', 'funnelChartDataLabelOptions_categoryLabelVisibility' - The visibility of the category labels within the data labels.
+--
+-- 'labelColor', 'funnelChartDataLabelOptions_labelColor' - The color of the data label text.
+--
+-- 'labelFontConfiguration', 'funnelChartDataLabelOptions_labelFontConfiguration' - The font configuration for the data labels.
+--
+-- Only the @FontSize@ attribute of the font configuration is used for data
+-- labels.
+--
+-- 'measureDataLabelStyle', 'funnelChartDataLabelOptions_measureDataLabelStyle' - Determines the style of the metric labels.
+--
+-- 'measureLabelVisibility', 'funnelChartDataLabelOptions_measureLabelVisibility' - The visibility of the measure labels within the data labels.
+--
+-- 'position', 'funnelChartDataLabelOptions_position' - Determines the positioning of the data label relative to a section of
+-- the funnel.
+--
+-- 'visibility', 'funnelChartDataLabelOptions_visibility' - The visibility option that determines if data labels are displayed.
+newFunnelChartDataLabelOptions ::
+  FunnelChartDataLabelOptions
+newFunnelChartDataLabelOptions =
+  FunnelChartDataLabelOptions'
+    { categoryLabelVisibility =
+        Prelude.Nothing,
+      labelColor = Prelude.Nothing,
+      labelFontConfiguration = Prelude.Nothing,
+      measureDataLabelStyle = Prelude.Nothing,
+      measureLabelVisibility = Prelude.Nothing,
+      position = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The visibility of the category labels within the data labels.
+funnelChartDataLabelOptions_categoryLabelVisibility :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe Visibility)
+funnelChartDataLabelOptions_categoryLabelVisibility = Lens.lens (\FunnelChartDataLabelOptions' {categoryLabelVisibility} -> categoryLabelVisibility) (\s@FunnelChartDataLabelOptions' {} a -> s {categoryLabelVisibility = a} :: FunnelChartDataLabelOptions)
+
+-- | The color of the data label text.
+funnelChartDataLabelOptions_labelColor :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe Prelude.Text)
+funnelChartDataLabelOptions_labelColor = Lens.lens (\FunnelChartDataLabelOptions' {labelColor} -> labelColor) (\s@FunnelChartDataLabelOptions' {} a -> s {labelColor = a} :: FunnelChartDataLabelOptions)
+
+-- | The font configuration for the data labels.
+--
+-- Only the @FontSize@ attribute of the font configuration is used for data
+-- labels.
+funnelChartDataLabelOptions_labelFontConfiguration :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe FontConfiguration)
+funnelChartDataLabelOptions_labelFontConfiguration = Lens.lens (\FunnelChartDataLabelOptions' {labelFontConfiguration} -> labelFontConfiguration) (\s@FunnelChartDataLabelOptions' {} a -> s {labelFontConfiguration = a} :: FunnelChartDataLabelOptions)
+
+-- | Determines the style of the metric labels.
+funnelChartDataLabelOptions_measureDataLabelStyle :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe FunnelChartMeasureDataLabelStyle)
+funnelChartDataLabelOptions_measureDataLabelStyle = Lens.lens (\FunnelChartDataLabelOptions' {measureDataLabelStyle} -> measureDataLabelStyle) (\s@FunnelChartDataLabelOptions' {} a -> s {measureDataLabelStyle = a} :: FunnelChartDataLabelOptions)
+
+-- | The visibility of the measure labels within the data labels.
+funnelChartDataLabelOptions_measureLabelVisibility :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe Visibility)
+funnelChartDataLabelOptions_measureLabelVisibility = Lens.lens (\FunnelChartDataLabelOptions' {measureLabelVisibility} -> measureLabelVisibility) (\s@FunnelChartDataLabelOptions' {} a -> s {measureLabelVisibility = a} :: FunnelChartDataLabelOptions)
+
+-- | Determines the positioning of the data label relative to a section of
+-- the funnel.
+funnelChartDataLabelOptions_position :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe DataLabelPosition)
+funnelChartDataLabelOptions_position = Lens.lens (\FunnelChartDataLabelOptions' {position} -> position) (\s@FunnelChartDataLabelOptions' {} a -> s {position = a} :: FunnelChartDataLabelOptions)
+
+-- | The visibility option that determines if data labels are displayed.
+funnelChartDataLabelOptions_visibility :: Lens.Lens' FunnelChartDataLabelOptions (Prelude.Maybe Visibility)
+funnelChartDataLabelOptions_visibility = Lens.lens (\FunnelChartDataLabelOptions' {visibility} -> visibility) (\s@FunnelChartDataLabelOptions' {} a -> s {visibility = a} :: FunnelChartDataLabelOptions)
+
+instance Data.FromJSON FunnelChartDataLabelOptions where
+  parseJSON =
+    Data.withObject
+      "FunnelChartDataLabelOptions"
+      ( \x ->
+          FunnelChartDataLabelOptions'
+            Prelude.<$> (x Data..:? "CategoryLabelVisibility")
+            Prelude.<*> (x Data..:? "LabelColor")
+            Prelude.<*> (x Data..:? "LabelFontConfiguration")
+            Prelude.<*> (x Data..:? "MeasureDataLabelStyle")
+            Prelude.<*> (x Data..:? "MeasureLabelVisibility")
+            Prelude.<*> (x Data..:? "Position")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable FunnelChartDataLabelOptions where
+  hashWithSalt _salt FunnelChartDataLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryLabelVisibility
+      `Prelude.hashWithSalt` labelColor
+      `Prelude.hashWithSalt` labelFontConfiguration
+      `Prelude.hashWithSalt` measureDataLabelStyle
+      `Prelude.hashWithSalt` measureLabelVisibility
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData FunnelChartDataLabelOptions where
+  rnf FunnelChartDataLabelOptions' {..} =
+    Prelude.rnf categoryLabelVisibility
+      `Prelude.seq` Prelude.rnf labelColor
+      `Prelude.seq` Prelude.rnf labelFontConfiguration
+      `Prelude.seq` Prelude.rnf measureDataLabelStyle
+      `Prelude.seq` Prelude.rnf measureLabelVisibility
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON FunnelChartDataLabelOptions where
+  toJSON FunnelChartDataLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryLabelVisibility" Data..=)
+              Prelude.<$> categoryLabelVisibility,
+            ("LabelColor" Data..=) Prelude.<$> labelColor,
+            ("LabelFontConfiguration" Data..=)
+              Prelude.<$> labelFontConfiguration,
+            ("MeasureDataLabelStyle" Data..=)
+              Prelude.<$> measureDataLabelStyle,
+            ("MeasureLabelVisibility" Data..=)
+              Prelude.<$> measureLabelVisibility,
+            ("Position" Data..=) Prelude.<$> position,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/FunnelChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartFieldWells.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.QuickSight.Types.FunnelChartFieldWells
+-- 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.QuickSight.Types.FunnelChartFieldWells 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.QuickSight.Types.FunnelChartAggregatedFieldWells
+
+-- | The field well configuration of a @FunnelChartVisual@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newFunnelChartFieldWells' smart constructor.
+data FunnelChartFieldWells = FunnelChartFieldWells'
+  { -- | The field well configuration of a @FunnelChartVisual@.
+    funnelChartAggregatedFieldWells :: Prelude.Maybe FunnelChartAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FunnelChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'funnelChartAggregatedFieldWells', 'funnelChartFieldWells_funnelChartAggregatedFieldWells' - The field well configuration of a @FunnelChartVisual@.
+newFunnelChartFieldWells ::
+  FunnelChartFieldWells
+newFunnelChartFieldWells =
+  FunnelChartFieldWells'
+    { funnelChartAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The field well configuration of a @FunnelChartVisual@.
+funnelChartFieldWells_funnelChartAggregatedFieldWells :: Lens.Lens' FunnelChartFieldWells (Prelude.Maybe FunnelChartAggregatedFieldWells)
+funnelChartFieldWells_funnelChartAggregatedFieldWells = Lens.lens (\FunnelChartFieldWells' {funnelChartAggregatedFieldWells} -> funnelChartAggregatedFieldWells) (\s@FunnelChartFieldWells' {} a -> s {funnelChartAggregatedFieldWells = a} :: FunnelChartFieldWells)
+
+instance Data.FromJSON FunnelChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "FunnelChartFieldWells"
+      ( \x ->
+          FunnelChartFieldWells'
+            Prelude.<$> (x Data..:? "FunnelChartAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable FunnelChartFieldWells where
+  hashWithSalt _salt FunnelChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` funnelChartAggregatedFieldWells
+
+instance Prelude.NFData FunnelChartFieldWells where
+  rnf FunnelChartFieldWells' {..} =
+    Prelude.rnf funnelChartAggregatedFieldWells
+
+instance Data.ToJSON FunnelChartFieldWells where
+  toJSON FunnelChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FunnelChartAggregatedFieldWells" Data..=)
+              Prelude.<$> funnelChartAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartMeasureDataLabelStyle.hs b/gen/Amazonka/QuickSight/Types/FunnelChartMeasureDataLabelStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartMeasureDataLabelStyle.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.QuickSight.Types.FunnelChartMeasureDataLabelStyle
+-- 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.QuickSight.Types.FunnelChartMeasureDataLabelStyle
+  ( FunnelChartMeasureDataLabelStyle
+      ( ..,
+        FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_FIRST_STAGE,
+        FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_PREVIOUS_STAGE,
+        FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_FIRST_STAGE,
+        FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE,
+        FunnelChartMeasureDataLabelStyle_VALUE_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FunnelChartMeasureDataLabelStyle = FunnelChartMeasureDataLabelStyle'
+  { fromFunnelChartMeasureDataLabelStyle ::
+      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 FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_FIRST_STAGE :: FunnelChartMeasureDataLabelStyle
+pattern FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_FIRST_STAGE = FunnelChartMeasureDataLabelStyle' "PERCENTAGE_BY_FIRST_STAGE"
+
+pattern FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_PREVIOUS_STAGE :: FunnelChartMeasureDataLabelStyle
+pattern FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_PREVIOUS_STAGE = FunnelChartMeasureDataLabelStyle' "PERCENTAGE_BY_PREVIOUS_STAGE"
+
+pattern FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_FIRST_STAGE :: FunnelChartMeasureDataLabelStyle
+pattern FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_FIRST_STAGE = FunnelChartMeasureDataLabelStyle' "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE"
+
+pattern FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE :: FunnelChartMeasureDataLabelStyle
+pattern FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE = FunnelChartMeasureDataLabelStyle' "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE"
+
+pattern FunnelChartMeasureDataLabelStyle_VALUE_ONLY :: FunnelChartMeasureDataLabelStyle
+pattern FunnelChartMeasureDataLabelStyle_VALUE_ONLY = FunnelChartMeasureDataLabelStyle' "VALUE_ONLY"
+
+{-# COMPLETE
+  FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_FIRST_STAGE,
+  FunnelChartMeasureDataLabelStyle_PERCENTAGE_BY_PREVIOUS_STAGE,
+  FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_FIRST_STAGE,
+  FunnelChartMeasureDataLabelStyle_VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE,
+  FunnelChartMeasureDataLabelStyle_VALUE_ONLY,
+  FunnelChartMeasureDataLabelStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/FunnelChartSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartSortConfiguration.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.QuickSight.Types.FunnelChartSortConfiguration
+-- 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.QuickSight.Types.FunnelChartSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a @FunnelChartVisual@.
+--
+-- /See:/ 'newFunnelChartSortConfiguration' smart constructor.
+data FunnelChartSortConfiguration = FunnelChartSortConfiguration'
+  { -- | The limit on the number of categories displayed.
+    categoryItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the category fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FunnelChartSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryItemsLimit', 'funnelChartSortConfiguration_categoryItemsLimit' - The limit on the number of categories displayed.
+--
+-- 'categorySort', 'funnelChartSortConfiguration_categorySort' - The sort configuration of the category fields.
+newFunnelChartSortConfiguration ::
+  FunnelChartSortConfiguration
+newFunnelChartSortConfiguration =
+  FunnelChartSortConfiguration'
+    { categoryItemsLimit =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing
+    }
+
+-- | The limit on the number of categories displayed.
+funnelChartSortConfiguration_categoryItemsLimit :: Lens.Lens' FunnelChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+funnelChartSortConfiguration_categoryItemsLimit = Lens.lens (\FunnelChartSortConfiguration' {categoryItemsLimit} -> categoryItemsLimit) (\s@FunnelChartSortConfiguration' {} a -> s {categoryItemsLimit = a} :: FunnelChartSortConfiguration)
+
+-- | The sort configuration of the category fields.
+funnelChartSortConfiguration_categorySort :: Lens.Lens' FunnelChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+funnelChartSortConfiguration_categorySort = Lens.lens (\FunnelChartSortConfiguration' {categorySort} -> categorySort) (\s@FunnelChartSortConfiguration' {} a -> s {categorySort = a} :: FunnelChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FunnelChartSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "FunnelChartSortConfiguration"
+      ( \x ->
+          FunnelChartSortConfiguration'
+            Prelude.<$> (x Data..:? "CategoryItemsLimit")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    FunnelChartSortConfiguration
+  where
+  hashWithSalt _salt FunnelChartSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryItemsLimit
+      `Prelude.hashWithSalt` categorySort
+
+instance Prelude.NFData FunnelChartSortConfiguration where
+  rnf FunnelChartSortConfiguration' {..} =
+    Prelude.rnf categoryItemsLimit
+      `Prelude.seq` Prelude.rnf categorySort
+
+instance Data.ToJSON FunnelChartSortConfiguration where
+  toJSON FunnelChartSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryItemsLimit" Data..=)
+              Prelude.<$> categoryItemsLimit,
+            ("CategorySort" Data..=) Prelude.<$> categorySort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/FunnelChartVisual.hs b/gen/Amazonka/QuickSight/Types/FunnelChartVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/FunnelChartVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.FunnelChartVisual
+-- 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.QuickSight.Types.FunnelChartVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.FunnelChartConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A funnel chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/funnel-visual-content.html Using funnel charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newFunnelChartVisual' smart constructor.
+data FunnelChartVisual = FunnelChartVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a @FunnelChartVisual@.
+    chartConfiguration :: Prelude.Maybe FunnelChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FunnelChartVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'funnelChartVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'funnelChartVisual_chartConfiguration' - The configuration of a @FunnelChartVisual@.
+--
+-- 'columnHierarchies', 'funnelChartVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'funnelChartVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'funnelChartVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'funnelChartVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newFunnelChartVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  FunnelChartVisual
+newFunnelChartVisual pVisualId_ =
+  FunnelChartVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+funnelChartVisual_actions :: Lens.Lens' FunnelChartVisual (Prelude.Maybe [VisualCustomAction])
+funnelChartVisual_actions = Lens.lens (\FunnelChartVisual' {actions} -> actions) (\s@FunnelChartVisual' {} a -> s {actions = a} :: FunnelChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a @FunnelChartVisual@.
+funnelChartVisual_chartConfiguration :: Lens.Lens' FunnelChartVisual (Prelude.Maybe FunnelChartConfiguration)
+funnelChartVisual_chartConfiguration = Lens.lens (\FunnelChartVisual' {chartConfiguration} -> chartConfiguration) (\s@FunnelChartVisual' {} a -> s {chartConfiguration = a} :: FunnelChartVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+funnelChartVisual_columnHierarchies :: Lens.Lens' FunnelChartVisual (Prelude.Maybe [ColumnHierarchy])
+funnelChartVisual_columnHierarchies = Lens.lens (\FunnelChartVisual' {columnHierarchies} -> columnHierarchies) (\s@FunnelChartVisual' {} a -> s {columnHierarchies = a} :: FunnelChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+funnelChartVisual_subtitle :: Lens.Lens' FunnelChartVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+funnelChartVisual_subtitle = Lens.lens (\FunnelChartVisual' {subtitle} -> subtitle) (\s@FunnelChartVisual' {} a -> s {subtitle = a} :: FunnelChartVisual)
+
+-- | The title that is displayed on the visual.
+funnelChartVisual_title :: Lens.Lens' FunnelChartVisual (Prelude.Maybe VisualTitleLabelOptions)
+funnelChartVisual_title = Lens.lens (\FunnelChartVisual' {title} -> title) (\s@FunnelChartVisual' {} a -> s {title = a} :: FunnelChartVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+funnelChartVisual_visualId :: Lens.Lens' FunnelChartVisual Prelude.Text
+funnelChartVisual_visualId = Lens.lens (\FunnelChartVisual' {visualId} -> visualId) (\s@FunnelChartVisual' {} a -> s {visualId = a} :: FunnelChartVisual)
+
+instance Data.FromJSON FunnelChartVisual where
+  parseJSON =
+    Data.withObject
+      "FunnelChartVisual"
+      ( \x ->
+          FunnelChartVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable FunnelChartVisual where
+  hashWithSalt _salt FunnelChartVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData FunnelChartVisual where
+  rnf FunnelChartVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON FunnelChartVisual where
+  toJSON FunnelChartVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartArcConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/GaugeChartArcConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartArcConditionalFormatting.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GaugeChartArcConditionalFormatting
+-- 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.QuickSight.Types.GaugeChartArcConditionalFormatting 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.QuickSight.Types.ConditionalFormattingColor
+
+-- | The options that determine the presentation of the arc of a
+-- @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartArcConditionalFormatting' smart constructor.
+data GaugeChartArcConditionalFormatting = GaugeChartArcConditionalFormatting'
+  { -- | The conditional formatting of the arc foreground color.
+    foregroundColor :: Prelude.Maybe ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartArcConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'foregroundColor', 'gaugeChartArcConditionalFormatting_foregroundColor' - The conditional formatting of the arc foreground color.
+newGaugeChartArcConditionalFormatting ::
+  GaugeChartArcConditionalFormatting
+newGaugeChartArcConditionalFormatting =
+  GaugeChartArcConditionalFormatting'
+    { foregroundColor =
+        Prelude.Nothing
+    }
+
+-- | The conditional formatting of the arc foreground color.
+gaugeChartArcConditionalFormatting_foregroundColor :: Lens.Lens' GaugeChartArcConditionalFormatting (Prelude.Maybe ConditionalFormattingColor)
+gaugeChartArcConditionalFormatting_foregroundColor = Lens.lens (\GaugeChartArcConditionalFormatting' {foregroundColor} -> foregroundColor) (\s@GaugeChartArcConditionalFormatting' {} a -> s {foregroundColor = a} :: GaugeChartArcConditionalFormatting)
+
+instance
+  Data.FromJSON
+    GaugeChartArcConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "GaugeChartArcConditionalFormatting"
+      ( \x ->
+          GaugeChartArcConditionalFormatting'
+            Prelude.<$> (x Data..:? "ForegroundColor")
+      )
+
+instance
+  Prelude.Hashable
+    GaugeChartArcConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    GaugeChartArcConditionalFormatting' {..} =
+      _salt `Prelude.hashWithSalt` foregroundColor
+
+instance
+  Prelude.NFData
+    GaugeChartArcConditionalFormatting
+  where
+  rnf GaugeChartArcConditionalFormatting' {..} =
+    Prelude.rnf foregroundColor
+
+instance
+  Data.ToJSON
+    GaugeChartArcConditionalFormatting
+  where
+  toJSON GaugeChartArcConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ForegroundColor" Data..=)
+              Prelude.<$> foregroundColor
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/GaugeChartConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartConditionalFormatting.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GaugeChartConditionalFormatting
+-- 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.QuickSight.Types.GaugeChartConditionalFormatting 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.QuickSight.Types.GaugeChartConditionalFormattingOption
+
+-- | The conditional formatting of a @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartConditionalFormatting' smart constructor.
+data GaugeChartConditionalFormatting = GaugeChartConditionalFormatting'
+  { -- | Conditional formatting options of a @GaugeChartVisual@.
+    conditionalFormattingOptions :: Prelude.Maybe [GaugeChartConditionalFormattingOption]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conditionalFormattingOptions', 'gaugeChartConditionalFormatting_conditionalFormattingOptions' - Conditional formatting options of a @GaugeChartVisual@.
+newGaugeChartConditionalFormatting ::
+  GaugeChartConditionalFormatting
+newGaugeChartConditionalFormatting =
+  GaugeChartConditionalFormatting'
+    { conditionalFormattingOptions =
+        Prelude.Nothing
+    }
+
+-- | Conditional formatting options of a @GaugeChartVisual@.
+gaugeChartConditionalFormatting_conditionalFormattingOptions :: Lens.Lens' GaugeChartConditionalFormatting (Prelude.Maybe [GaugeChartConditionalFormattingOption])
+gaugeChartConditionalFormatting_conditionalFormattingOptions = Lens.lens (\GaugeChartConditionalFormatting' {conditionalFormattingOptions} -> conditionalFormattingOptions) (\s@GaugeChartConditionalFormatting' {} a -> s {conditionalFormattingOptions = a} :: GaugeChartConditionalFormatting) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    GaugeChartConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "GaugeChartConditionalFormatting"
+      ( \x ->
+          GaugeChartConditionalFormatting'
+            Prelude.<$> ( x
+                            Data..:? "ConditionalFormattingOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    GaugeChartConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    GaugeChartConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` conditionalFormattingOptions
+
+instance
+  Prelude.NFData
+    GaugeChartConditionalFormatting
+  where
+  rnf GaugeChartConditionalFormatting' {..} =
+    Prelude.rnf conditionalFormattingOptions
+
+instance Data.ToJSON GaugeChartConditionalFormatting where
+  toJSON GaugeChartConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConditionalFormattingOptions" Data..=)
+              Prelude.<$> conditionalFormattingOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartConditionalFormattingOption.hs b/gen/Amazonka/QuickSight/Types/GaugeChartConditionalFormattingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartConditionalFormattingOption.hs
@@ -0,0 +1,116 @@
+{-# 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.QuickSight.Types.GaugeChartConditionalFormattingOption
+-- 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.QuickSight.Types.GaugeChartConditionalFormattingOption 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.QuickSight.Types.GaugeChartArcConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartPrimaryValueConditionalFormatting
+
+-- | Conditional formatting options of a @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartConditionalFormattingOption' smart constructor.
+data GaugeChartConditionalFormattingOption = GaugeChartConditionalFormattingOption'
+  { -- | The options that determine the presentation of the arc of a
+    -- @GaugeChartVisual@.
+    arc :: Prelude.Maybe GaugeChartArcConditionalFormatting,
+    -- | The conditional formatting for the primary value of a
+    -- @GaugeChartVisual@.
+    primaryValue :: Prelude.Maybe GaugeChartPrimaryValueConditionalFormatting
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartConditionalFormattingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arc', 'gaugeChartConditionalFormattingOption_arc' - The options that determine the presentation of the arc of a
+-- @GaugeChartVisual@.
+--
+-- 'primaryValue', 'gaugeChartConditionalFormattingOption_primaryValue' - The conditional formatting for the primary value of a
+-- @GaugeChartVisual@.
+newGaugeChartConditionalFormattingOption ::
+  GaugeChartConditionalFormattingOption
+newGaugeChartConditionalFormattingOption =
+  GaugeChartConditionalFormattingOption'
+    { arc =
+        Prelude.Nothing,
+      primaryValue = Prelude.Nothing
+    }
+
+-- | The options that determine the presentation of the arc of a
+-- @GaugeChartVisual@.
+gaugeChartConditionalFormattingOption_arc :: Lens.Lens' GaugeChartConditionalFormattingOption (Prelude.Maybe GaugeChartArcConditionalFormatting)
+gaugeChartConditionalFormattingOption_arc = Lens.lens (\GaugeChartConditionalFormattingOption' {arc} -> arc) (\s@GaugeChartConditionalFormattingOption' {} a -> s {arc = a} :: GaugeChartConditionalFormattingOption)
+
+-- | The conditional formatting for the primary value of a
+-- @GaugeChartVisual@.
+gaugeChartConditionalFormattingOption_primaryValue :: Lens.Lens' GaugeChartConditionalFormattingOption (Prelude.Maybe GaugeChartPrimaryValueConditionalFormatting)
+gaugeChartConditionalFormattingOption_primaryValue = Lens.lens (\GaugeChartConditionalFormattingOption' {primaryValue} -> primaryValue) (\s@GaugeChartConditionalFormattingOption' {} a -> s {primaryValue = a} :: GaugeChartConditionalFormattingOption)
+
+instance
+  Data.FromJSON
+    GaugeChartConditionalFormattingOption
+  where
+  parseJSON =
+    Data.withObject
+      "GaugeChartConditionalFormattingOption"
+      ( \x ->
+          GaugeChartConditionalFormattingOption'
+            Prelude.<$> (x Data..:? "Arc")
+            Prelude.<*> (x Data..:? "PrimaryValue")
+      )
+
+instance
+  Prelude.Hashable
+    GaugeChartConditionalFormattingOption
+  where
+  hashWithSalt
+    _salt
+    GaugeChartConditionalFormattingOption' {..} =
+      _salt
+        `Prelude.hashWithSalt` arc
+        `Prelude.hashWithSalt` primaryValue
+
+instance
+  Prelude.NFData
+    GaugeChartConditionalFormattingOption
+  where
+  rnf GaugeChartConditionalFormattingOption' {..} =
+    Prelude.rnf arc
+      `Prelude.seq` Prelude.rnf primaryValue
+
+instance
+  Data.ToJSON
+    GaugeChartConditionalFormattingOption
+  where
+  toJSON GaugeChartConditionalFormattingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Arc" Data..=) Prelude.<$> arc,
+            ("PrimaryValue" Data..=) Prelude.<$> primaryValue
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/GaugeChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartConfiguration.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.QuickSight.Types.GaugeChartConfiguration
+-- 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.QuickSight.Types.GaugeChartConfiguration 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.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.GaugeChartFieldWells
+import Amazonka.QuickSight.Types.GaugeChartOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartConfiguration' smart constructor.
+data GaugeChartConfiguration = GaugeChartConfiguration'
+  { -- | The data label configuration of a @GaugeChartVisual@.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field well configuration of a @GaugeChartVisual@.
+    fieldWells :: Prelude.Maybe GaugeChartFieldWells,
+    -- | The options that determine the presentation of the @GaugeChartVisual@.
+    gaugeChartOptions :: Prelude.Maybe GaugeChartOptions,
+    -- | The tooltip configuration of a @GaugeChartVisual@.
+    tooltipOptions :: Prelude.Maybe TooltipOptions,
+    -- | The visual palette configuration of a @GaugeChartVisual@.
+    visualPalette :: Prelude.Maybe VisualPalette
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataLabels', 'gaugeChartConfiguration_dataLabels' - The data label configuration of a @GaugeChartVisual@.
+--
+-- 'fieldWells', 'gaugeChartConfiguration_fieldWells' - The field well configuration of a @GaugeChartVisual@.
+--
+-- 'gaugeChartOptions', 'gaugeChartConfiguration_gaugeChartOptions' - The options that determine the presentation of the @GaugeChartVisual@.
+--
+-- 'tooltipOptions', 'gaugeChartConfiguration_tooltipOptions' - The tooltip configuration of a @GaugeChartVisual@.
+--
+-- 'visualPalette', 'gaugeChartConfiguration_visualPalette' - The visual palette configuration of a @GaugeChartVisual@.
+newGaugeChartConfiguration ::
+  GaugeChartConfiguration
+newGaugeChartConfiguration =
+  GaugeChartConfiguration'
+    { dataLabels =
+        Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      gaugeChartOptions = Prelude.Nothing,
+      tooltipOptions = Prelude.Nothing,
+      visualPalette = Prelude.Nothing
+    }
+
+-- | The data label configuration of a @GaugeChartVisual@.
+gaugeChartConfiguration_dataLabels :: Lens.Lens' GaugeChartConfiguration (Prelude.Maybe DataLabelOptions)
+gaugeChartConfiguration_dataLabels = Lens.lens (\GaugeChartConfiguration' {dataLabels} -> dataLabels) (\s@GaugeChartConfiguration' {} a -> s {dataLabels = a} :: GaugeChartConfiguration)
+
+-- | The field well configuration of a @GaugeChartVisual@.
+gaugeChartConfiguration_fieldWells :: Lens.Lens' GaugeChartConfiguration (Prelude.Maybe GaugeChartFieldWells)
+gaugeChartConfiguration_fieldWells = Lens.lens (\GaugeChartConfiguration' {fieldWells} -> fieldWells) (\s@GaugeChartConfiguration' {} a -> s {fieldWells = a} :: GaugeChartConfiguration)
+
+-- | The options that determine the presentation of the @GaugeChartVisual@.
+gaugeChartConfiguration_gaugeChartOptions :: Lens.Lens' GaugeChartConfiguration (Prelude.Maybe GaugeChartOptions)
+gaugeChartConfiguration_gaugeChartOptions = Lens.lens (\GaugeChartConfiguration' {gaugeChartOptions} -> gaugeChartOptions) (\s@GaugeChartConfiguration' {} a -> s {gaugeChartOptions = a} :: GaugeChartConfiguration)
+
+-- | The tooltip configuration of a @GaugeChartVisual@.
+gaugeChartConfiguration_tooltipOptions :: Lens.Lens' GaugeChartConfiguration (Prelude.Maybe TooltipOptions)
+gaugeChartConfiguration_tooltipOptions = Lens.lens (\GaugeChartConfiguration' {tooltipOptions} -> tooltipOptions) (\s@GaugeChartConfiguration' {} a -> s {tooltipOptions = a} :: GaugeChartConfiguration)
+
+-- | The visual palette configuration of a @GaugeChartVisual@.
+gaugeChartConfiguration_visualPalette :: Lens.Lens' GaugeChartConfiguration (Prelude.Maybe VisualPalette)
+gaugeChartConfiguration_visualPalette = Lens.lens (\GaugeChartConfiguration' {visualPalette} -> visualPalette) (\s@GaugeChartConfiguration' {} a -> s {visualPalette = a} :: GaugeChartConfiguration)
+
+instance Data.FromJSON GaugeChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "GaugeChartConfiguration"
+      ( \x ->
+          GaugeChartConfiguration'
+            Prelude.<$> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "GaugeChartOptions")
+            Prelude.<*> (x Data..:? "TooltipOptions")
+            Prelude.<*> (x Data..:? "VisualPalette")
+      )
+
+instance Prelude.Hashable GaugeChartConfiguration where
+  hashWithSalt _salt GaugeChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` gaugeChartOptions
+      `Prelude.hashWithSalt` tooltipOptions
+      `Prelude.hashWithSalt` visualPalette
+
+instance Prelude.NFData GaugeChartConfiguration where
+  rnf GaugeChartConfiguration' {..} =
+    Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf gaugeChartOptions
+      `Prelude.seq` Prelude.rnf tooltipOptions
+      `Prelude.seq` Prelude.rnf visualPalette
+
+instance Data.ToJSON GaugeChartConfiguration where
+  toJSON GaugeChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("GaugeChartOptions" Data..=)
+              Prelude.<$> gaugeChartOptions,
+            ("TooltipOptions" Data..=)
+              Prelude.<$> tooltipOptions,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/GaugeChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartFieldWells.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.GaugeChartFieldWells
+-- 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.QuickSight.Types.GaugeChartFieldWells 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.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartFieldWells' smart constructor.
+data GaugeChartFieldWells = GaugeChartFieldWells'
+  { -- | The target value field wells of a @GaugeChartVisual@.
+    targetValues :: Prelude.Maybe [MeasureField],
+    -- | The value field wells of a @GaugeChartVisual@.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'targetValues', 'gaugeChartFieldWells_targetValues' - The target value field wells of a @GaugeChartVisual@.
+--
+-- 'values', 'gaugeChartFieldWells_values' - The value field wells of a @GaugeChartVisual@.
+newGaugeChartFieldWells ::
+  GaugeChartFieldWells
+newGaugeChartFieldWells =
+  GaugeChartFieldWells'
+    { targetValues =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The target value field wells of a @GaugeChartVisual@.
+gaugeChartFieldWells_targetValues :: Lens.Lens' GaugeChartFieldWells (Prelude.Maybe [MeasureField])
+gaugeChartFieldWells_targetValues = Lens.lens (\GaugeChartFieldWells' {targetValues} -> targetValues) (\s@GaugeChartFieldWells' {} a -> s {targetValues = a} :: GaugeChartFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a @GaugeChartVisual@.
+gaugeChartFieldWells_values :: Lens.Lens' GaugeChartFieldWells (Prelude.Maybe [MeasureField])
+gaugeChartFieldWells_values = Lens.lens (\GaugeChartFieldWells' {values} -> values) (\s@GaugeChartFieldWells' {} a -> s {values = a} :: GaugeChartFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON GaugeChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "GaugeChartFieldWells"
+      ( \x ->
+          GaugeChartFieldWells'
+            Prelude.<$> (x Data..:? "TargetValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable GaugeChartFieldWells where
+  hashWithSalt _salt GaugeChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` targetValues
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData GaugeChartFieldWells where
+  rnf GaugeChartFieldWells' {..} =
+    Prelude.rnf targetValues
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON GaugeChartFieldWells where
+  toJSON GaugeChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TargetValues" Data..=) Prelude.<$> targetValues,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartOptions.hs b/gen/Amazonka/QuickSight/Types/GaugeChartOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartOptions.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.QuickSight.Types.GaugeChartOptions
+-- 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.QuickSight.Types.GaugeChartOptions 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.QuickSight.Types.ArcAxisConfiguration
+import Amazonka.QuickSight.Types.ArcConfiguration
+import Amazonka.QuickSight.Types.ComparisonConfiguration
+import Amazonka.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.PrimaryValueDisplayType
+
+-- | The options that determine the presentation of the @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartOptions' smart constructor.
+data GaugeChartOptions = GaugeChartOptions'
+  { -- | The arc configuration of a @GaugeChartVisual@.
+    arc :: Prelude.Maybe ArcConfiguration,
+    -- | The arc axis configuration of a @GaugeChartVisual@.
+    arcAxis :: Prelude.Maybe ArcAxisConfiguration,
+    -- | The comparison configuration of a @GaugeChartVisual@.
+    comparison :: Prelude.Maybe ComparisonConfiguration,
+    -- | The options that determine the primary value display type.
+    primaryValueDisplayType :: Prelude.Maybe PrimaryValueDisplayType,
+    -- | The options that determine the primary value font configuration.
+    primaryValueFontConfiguration :: Prelude.Maybe FontConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arc', 'gaugeChartOptions_arc' - The arc configuration of a @GaugeChartVisual@.
+--
+-- 'arcAxis', 'gaugeChartOptions_arcAxis' - The arc axis configuration of a @GaugeChartVisual@.
+--
+-- 'comparison', 'gaugeChartOptions_comparison' - The comparison configuration of a @GaugeChartVisual@.
+--
+-- 'primaryValueDisplayType', 'gaugeChartOptions_primaryValueDisplayType' - The options that determine the primary value display type.
+--
+-- 'primaryValueFontConfiguration', 'gaugeChartOptions_primaryValueFontConfiguration' - The options that determine the primary value font configuration.
+newGaugeChartOptions ::
+  GaugeChartOptions
+newGaugeChartOptions =
+  GaugeChartOptions'
+    { arc = Prelude.Nothing,
+      arcAxis = Prelude.Nothing,
+      comparison = Prelude.Nothing,
+      primaryValueDisplayType = Prelude.Nothing,
+      primaryValueFontConfiguration = Prelude.Nothing
+    }
+
+-- | The arc configuration of a @GaugeChartVisual@.
+gaugeChartOptions_arc :: Lens.Lens' GaugeChartOptions (Prelude.Maybe ArcConfiguration)
+gaugeChartOptions_arc = Lens.lens (\GaugeChartOptions' {arc} -> arc) (\s@GaugeChartOptions' {} a -> s {arc = a} :: GaugeChartOptions)
+
+-- | The arc axis configuration of a @GaugeChartVisual@.
+gaugeChartOptions_arcAxis :: Lens.Lens' GaugeChartOptions (Prelude.Maybe ArcAxisConfiguration)
+gaugeChartOptions_arcAxis = Lens.lens (\GaugeChartOptions' {arcAxis} -> arcAxis) (\s@GaugeChartOptions' {} a -> s {arcAxis = a} :: GaugeChartOptions)
+
+-- | The comparison configuration of a @GaugeChartVisual@.
+gaugeChartOptions_comparison :: Lens.Lens' GaugeChartOptions (Prelude.Maybe ComparisonConfiguration)
+gaugeChartOptions_comparison = Lens.lens (\GaugeChartOptions' {comparison} -> comparison) (\s@GaugeChartOptions' {} a -> s {comparison = a} :: GaugeChartOptions)
+
+-- | The options that determine the primary value display type.
+gaugeChartOptions_primaryValueDisplayType :: Lens.Lens' GaugeChartOptions (Prelude.Maybe PrimaryValueDisplayType)
+gaugeChartOptions_primaryValueDisplayType = Lens.lens (\GaugeChartOptions' {primaryValueDisplayType} -> primaryValueDisplayType) (\s@GaugeChartOptions' {} a -> s {primaryValueDisplayType = a} :: GaugeChartOptions)
+
+-- | The options that determine the primary value font configuration.
+gaugeChartOptions_primaryValueFontConfiguration :: Lens.Lens' GaugeChartOptions (Prelude.Maybe FontConfiguration)
+gaugeChartOptions_primaryValueFontConfiguration = Lens.lens (\GaugeChartOptions' {primaryValueFontConfiguration} -> primaryValueFontConfiguration) (\s@GaugeChartOptions' {} a -> s {primaryValueFontConfiguration = a} :: GaugeChartOptions)
+
+instance Data.FromJSON GaugeChartOptions where
+  parseJSON =
+    Data.withObject
+      "GaugeChartOptions"
+      ( \x ->
+          GaugeChartOptions'
+            Prelude.<$> (x Data..:? "Arc")
+            Prelude.<*> (x Data..:? "ArcAxis")
+            Prelude.<*> (x Data..:? "Comparison")
+            Prelude.<*> (x Data..:? "PrimaryValueDisplayType")
+            Prelude.<*> (x Data..:? "PrimaryValueFontConfiguration")
+      )
+
+instance Prelude.Hashable GaugeChartOptions where
+  hashWithSalt _salt GaugeChartOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` arc
+      `Prelude.hashWithSalt` arcAxis
+      `Prelude.hashWithSalt` comparison
+      `Prelude.hashWithSalt` primaryValueDisplayType
+      `Prelude.hashWithSalt` primaryValueFontConfiguration
+
+instance Prelude.NFData GaugeChartOptions where
+  rnf GaugeChartOptions' {..} =
+    Prelude.rnf arc
+      `Prelude.seq` Prelude.rnf arcAxis
+      `Prelude.seq` Prelude.rnf comparison
+      `Prelude.seq` Prelude.rnf primaryValueDisplayType
+      `Prelude.seq` Prelude.rnf primaryValueFontConfiguration
+
+instance Data.ToJSON GaugeChartOptions where
+  toJSON GaugeChartOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Arc" Data..=) Prelude.<$> arc,
+            ("ArcAxis" Data..=) Prelude.<$> arcAxis,
+            ("Comparison" Data..=) Prelude.<$> comparison,
+            ("PrimaryValueDisplayType" Data..=)
+              Prelude.<$> primaryValueDisplayType,
+            ("PrimaryValueFontConfiguration" Data..=)
+              Prelude.<$> primaryValueFontConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartPrimaryValueConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/GaugeChartPrimaryValueConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartPrimaryValueConditionalFormatting.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.QuickSight.Types.GaugeChartPrimaryValueConditionalFormatting
+-- 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.QuickSight.Types.GaugeChartPrimaryValueConditionalFormatting 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.QuickSight.Types.ConditionalFormattingColor
+import Amazonka.QuickSight.Types.ConditionalFormattingIcon
+
+-- | The conditional formatting for the primary value of a
+-- @GaugeChartVisual@.
+--
+-- /See:/ 'newGaugeChartPrimaryValueConditionalFormatting' smart constructor.
+data GaugeChartPrimaryValueConditionalFormatting = GaugeChartPrimaryValueConditionalFormatting'
+  { -- | The conditional formatting of the primary value icon.
+    icon :: Prelude.Maybe ConditionalFormattingIcon,
+    -- | The conditional formatting of the primary value text color.
+    textColor :: Prelude.Maybe ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartPrimaryValueConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'icon', 'gaugeChartPrimaryValueConditionalFormatting_icon' - The conditional formatting of the primary value icon.
+--
+-- 'textColor', 'gaugeChartPrimaryValueConditionalFormatting_textColor' - The conditional formatting of the primary value text color.
+newGaugeChartPrimaryValueConditionalFormatting ::
+  GaugeChartPrimaryValueConditionalFormatting
+newGaugeChartPrimaryValueConditionalFormatting =
+  GaugeChartPrimaryValueConditionalFormatting'
+    { icon =
+        Prelude.Nothing,
+      textColor = Prelude.Nothing
+    }
+
+-- | The conditional formatting of the primary value icon.
+gaugeChartPrimaryValueConditionalFormatting_icon :: Lens.Lens' GaugeChartPrimaryValueConditionalFormatting (Prelude.Maybe ConditionalFormattingIcon)
+gaugeChartPrimaryValueConditionalFormatting_icon = Lens.lens (\GaugeChartPrimaryValueConditionalFormatting' {icon} -> icon) (\s@GaugeChartPrimaryValueConditionalFormatting' {} a -> s {icon = a} :: GaugeChartPrimaryValueConditionalFormatting)
+
+-- | The conditional formatting of the primary value text color.
+gaugeChartPrimaryValueConditionalFormatting_textColor :: Lens.Lens' GaugeChartPrimaryValueConditionalFormatting (Prelude.Maybe ConditionalFormattingColor)
+gaugeChartPrimaryValueConditionalFormatting_textColor = Lens.lens (\GaugeChartPrimaryValueConditionalFormatting' {textColor} -> textColor) (\s@GaugeChartPrimaryValueConditionalFormatting' {} a -> s {textColor = a} :: GaugeChartPrimaryValueConditionalFormatting)
+
+instance
+  Data.FromJSON
+    GaugeChartPrimaryValueConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "GaugeChartPrimaryValueConditionalFormatting"
+      ( \x ->
+          GaugeChartPrimaryValueConditionalFormatting'
+            Prelude.<$> (x Data..:? "Icon")
+            Prelude.<*> (x Data..:? "TextColor")
+      )
+
+instance
+  Prelude.Hashable
+    GaugeChartPrimaryValueConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    GaugeChartPrimaryValueConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` icon
+        `Prelude.hashWithSalt` textColor
+
+instance
+  Prelude.NFData
+    GaugeChartPrimaryValueConditionalFormatting
+  where
+  rnf GaugeChartPrimaryValueConditionalFormatting' {..} =
+    Prelude.rnf icon
+      `Prelude.seq` Prelude.rnf textColor
+
+instance
+  Data.ToJSON
+    GaugeChartPrimaryValueConditionalFormatting
+  where
+  toJSON
+    GaugeChartPrimaryValueConditionalFormatting' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("Icon" Data..=) Prelude.<$> icon,
+              ("TextColor" Data..=) Prelude.<$> textColor
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/GaugeChartVisual.hs b/gen/Amazonka/QuickSight/Types/GaugeChartVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GaugeChartVisual.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.QuickSight.Types.GaugeChartVisual
+-- 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.QuickSight.Types.GaugeChartVisual 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.QuickSight.Types.GaugeChartConditionalFormatting
+import Amazonka.QuickSight.Types.GaugeChartConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A gauge chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/gauge-chart.html Using gauge charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newGaugeChartVisual' smart constructor.
+data GaugeChartVisual = GaugeChartVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a @GaugeChartVisual@.
+    chartConfiguration :: Prelude.Maybe GaugeChartConfiguration,
+    -- | The conditional formatting of a @GaugeChartVisual@.
+    conditionalFormatting :: Prelude.Maybe GaugeChartConditionalFormatting,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GaugeChartVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'gaugeChartVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'gaugeChartVisual_chartConfiguration' - The configuration of a @GaugeChartVisual@.
+--
+-- 'conditionalFormatting', 'gaugeChartVisual_conditionalFormatting' - The conditional formatting of a @GaugeChartVisual@.
+--
+-- 'subtitle', 'gaugeChartVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'gaugeChartVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'gaugeChartVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newGaugeChartVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  GaugeChartVisual
+newGaugeChartVisual pVisualId_ =
+  GaugeChartVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      conditionalFormatting = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+gaugeChartVisual_actions :: Lens.Lens' GaugeChartVisual (Prelude.Maybe [VisualCustomAction])
+gaugeChartVisual_actions = Lens.lens (\GaugeChartVisual' {actions} -> actions) (\s@GaugeChartVisual' {} a -> s {actions = a} :: GaugeChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a @GaugeChartVisual@.
+gaugeChartVisual_chartConfiguration :: Lens.Lens' GaugeChartVisual (Prelude.Maybe GaugeChartConfiguration)
+gaugeChartVisual_chartConfiguration = Lens.lens (\GaugeChartVisual' {chartConfiguration} -> chartConfiguration) (\s@GaugeChartVisual' {} a -> s {chartConfiguration = a} :: GaugeChartVisual)
+
+-- | The conditional formatting of a @GaugeChartVisual@.
+gaugeChartVisual_conditionalFormatting :: Lens.Lens' GaugeChartVisual (Prelude.Maybe GaugeChartConditionalFormatting)
+gaugeChartVisual_conditionalFormatting = Lens.lens (\GaugeChartVisual' {conditionalFormatting} -> conditionalFormatting) (\s@GaugeChartVisual' {} a -> s {conditionalFormatting = a} :: GaugeChartVisual)
+
+-- | The subtitle that is displayed on the visual.
+gaugeChartVisual_subtitle :: Lens.Lens' GaugeChartVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+gaugeChartVisual_subtitle = Lens.lens (\GaugeChartVisual' {subtitle} -> subtitle) (\s@GaugeChartVisual' {} a -> s {subtitle = a} :: GaugeChartVisual)
+
+-- | The title that is displayed on the visual.
+gaugeChartVisual_title :: Lens.Lens' GaugeChartVisual (Prelude.Maybe VisualTitleLabelOptions)
+gaugeChartVisual_title = Lens.lens (\GaugeChartVisual' {title} -> title) (\s@GaugeChartVisual' {} a -> s {title = a} :: GaugeChartVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+gaugeChartVisual_visualId :: Lens.Lens' GaugeChartVisual Prelude.Text
+gaugeChartVisual_visualId = Lens.lens (\GaugeChartVisual' {visualId} -> visualId) (\s@GaugeChartVisual' {} a -> s {visualId = a} :: GaugeChartVisual)
+
+instance Data.FromJSON GaugeChartVisual where
+  parseJSON =
+    Data.withObject
+      "GaugeChartVisual"
+      ( \x ->
+          GaugeChartVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> (x Data..:? "ConditionalFormatting")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable GaugeChartVisual where
+  hashWithSalt _salt GaugeChartVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` conditionalFormatting
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData GaugeChartVisual where
+  rnf GaugeChartVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf conditionalFormatting
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON GaugeChartVisual where
+  toJSON GaugeChartVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ConditionalFormatting" Data..=)
+              Prelude.<$> conditionalFormatting,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeoSpatialColumnGroup.hs b/gen/Amazonka/QuickSight/Types/GeoSpatialColumnGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeoSpatialColumnGroup.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.QuickSight.Types.GeoSpatialColumnGroup
+-- 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.QuickSight.Types.GeoSpatialColumnGroup 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.QuickSight.Types.GeoSpatialCountryCode
+
+-- | Geospatial column group that denotes a hierarchy.
+--
+-- /See:/ 'newGeoSpatialColumnGroup' smart constructor.
+data GeoSpatialColumnGroup = GeoSpatialColumnGroup'
+  { -- | Country code.
+    countryCode :: Prelude.Maybe GeoSpatialCountryCode,
+    -- | A display name for the hierarchy.
+    name :: Prelude.Text,
+    -- | Columns in this hierarchy.
+    columns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeoSpatialColumnGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'countryCode', 'geoSpatialColumnGroup_countryCode' - Country code.
+--
+-- 'name', 'geoSpatialColumnGroup_name' - A display name for the hierarchy.
+--
+-- 'columns', 'geoSpatialColumnGroup_columns' - Columns in this hierarchy.
+newGeoSpatialColumnGroup ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'columns'
+  Prelude.NonEmpty Prelude.Text ->
+  GeoSpatialColumnGroup
+newGeoSpatialColumnGroup pName_ pColumns_ =
+  GeoSpatialColumnGroup'
+    { countryCode =
+        Prelude.Nothing,
+      name = pName_,
+      columns = Lens.coerced Lens.# pColumns_
+    }
+
+-- | Country code.
+geoSpatialColumnGroup_countryCode :: Lens.Lens' GeoSpatialColumnGroup (Prelude.Maybe GeoSpatialCountryCode)
+geoSpatialColumnGroup_countryCode = Lens.lens (\GeoSpatialColumnGroup' {countryCode} -> countryCode) (\s@GeoSpatialColumnGroup' {} a -> s {countryCode = a} :: GeoSpatialColumnGroup)
+
+-- | A display name for the hierarchy.
+geoSpatialColumnGroup_name :: Lens.Lens' GeoSpatialColumnGroup Prelude.Text
+geoSpatialColumnGroup_name = Lens.lens (\GeoSpatialColumnGroup' {name} -> name) (\s@GeoSpatialColumnGroup' {} a -> s {name = a} :: GeoSpatialColumnGroup)
+
+-- | Columns in this hierarchy.
+geoSpatialColumnGroup_columns :: Lens.Lens' GeoSpatialColumnGroup (Prelude.NonEmpty Prelude.Text)
+geoSpatialColumnGroup_columns = Lens.lens (\GeoSpatialColumnGroup' {columns} -> columns) (\s@GeoSpatialColumnGroup' {} a -> s {columns = a} :: GeoSpatialColumnGroup) Prelude.. Lens.coerced
+
+instance Data.FromJSON GeoSpatialColumnGroup where
+  parseJSON =
+    Data.withObject
+      "GeoSpatialColumnGroup"
+      ( \x ->
+          GeoSpatialColumnGroup'
+            Prelude.<$> (x Data..:? "CountryCode")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Columns")
+      )
+
+instance Prelude.Hashable GeoSpatialColumnGroup where
+  hashWithSalt _salt GeoSpatialColumnGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` countryCode
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` columns
+
+instance Prelude.NFData GeoSpatialColumnGroup where
+  rnf GeoSpatialColumnGroup' {..} =
+    Prelude.rnf countryCode
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf columns
+
+instance Data.ToJSON GeoSpatialColumnGroup where
+  toJSON GeoSpatialColumnGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CountryCode" Data..=) Prelude.<$> countryCode,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Columns" Data..= columns)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeoSpatialCountryCode.hs b/gen/Amazonka/QuickSight/Types/GeoSpatialCountryCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeoSpatialCountryCode.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.QuickSight.Types.GeoSpatialCountryCode
+-- 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.QuickSight.Types.GeoSpatialCountryCode
+  ( GeoSpatialCountryCode
+      ( ..,
+        GeoSpatialCountryCode_US
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GeoSpatialCountryCode = GeoSpatialCountryCode'
+  { fromGeoSpatialCountryCode ::
+      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 GeoSpatialCountryCode_US :: GeoSpatialCountryCode
+pattern GeoSpatialCountryCode_US = GeoSpatialCountryCode' "US"
+
+{-# COMPLETE
+  GeoSpatialCountryCode_US,
+  GeoSpatialCountryCode'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/GeoSpatialDataRole.hs b/gen/Amazonka/QuickSight/Types/GeoSpatialDataRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeoSpatialDataRole.hs
@@ -0,0 +1,96 @@
+{-# 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.QuickSight.Types.GeoSpatialDataRole
+-- 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.QuickSight.Types.GeoSpatialDataRole
+  ( GeoSpatialDataRole
+      ( ..,
+        GeoSpatialDataRole_CITY,
+        GeoSpatialDataRole_COUNTRY,
+        GeoSpatialDataRole_COUNTY,
+        GeoSpatialDataRole_LATITUDE,
+        GeoSpatialDataRole_LONGITUDE,
+        GeoSpatialDataRole_POSTCODE,
+        GeoSpatialDataRole_STATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GeoSpatialDataRole = GeoSpatialDataRole'
+  { fromGeoSpatialDataRole ::
+      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 GeoSpatialDataRole_CITY :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_CITY = GeoSpatialDataRole' "CITY"
+
+pattern GeoSpatialDataRole_COUNTRY :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_COUNTRY = GeoSpatialDataRole' "COUNTRY"
+
+pattern GeoSpatialDataRole_COUNTY :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_COUNTY = GeoSpatialDataRole' "COUNTY"
+
+pattern GeoSpatialDataRole_LATITUDE :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_LATITUDE = GeoSpatialDataRole' "LATITUDE"
+
+pattern GeoSpatialDataRole_LONGITUDE :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_LONGITUDE = GeoSpatialDataRole' "LONGITUDE"
+
+pattern GeoSpatialDataRole_POSTCODE :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_POSTCODE = GeoSpatialDataRole' "POSTCODE"
+
+pattern GeoSpatialDataRole_STATE :: GeoSpatialDataRole
+pattern GeoSpatialDataRole_STATE = GeoSpatialDataRole' "STATE"
+
+{-# COMPLETE
+  GeoSpatialDataRole_CITY,
+  GeoSpatialDataRole_COUNTRY,
+  GeoSpatialDataRole_COUNTY,
+  GeoSpatialDataRole_LATITUDE,
+  GeoSpatialDataRole_LONGITUDE,
+  GeoSpatialDataRole_POSTCODE,
+  GeoSpatialDataRole_STATE,
+  GeoSpatialDataRole'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialCoordinateBounds.hs b/gen/Amazonka/QuickSight/Types/GeospatialCoordinateBounds.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialCoordinateBounds.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GeospatialCoordinateBounds
+-- 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.QuickSight.Types.GeospatialCoordinateBounds 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 bound options (north, south, west, east) of the geospatial window
+-- options.
+--
+-- /See:/ 'newGeospatialCoordinateBounds' smart constructor.
+data GeospatialCoordinateBounds = GeospatialCoordinateBounds'
+  { -- | The latitude of the north bound of the geospatial coordinate bounds.
+    north :: Prelude.Double,
+    -- | The latitude of the south bound of the geospatial coordinate bounds.
+    south :: Prelude.Double,
+    -- | The longitude of the west bound of the geospatial coordinate bounds.
+    west :: Prelude.Double,
+    -- | The longitude of the east bound of the geospatial coordinate bounds.
+    east :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialCoordinateBounds' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'north', 'geospatialCoordinateBounds_north' - The latitude of the north bound of the geospatial coordinate bounds.
+--
+-- 'south', 'geospatialCoordinateBounds_south' - The latitude of the south bound of the geospatial coordinate bounds.
+--
+-- 'west', 'geospatialCoordinateBounds_west' - The longitude of the west bound of the geospatial coordinate bounds.
+--
+-- 'east', 'geospatialCoordinateBounds_east' - The longitude of the east bound of the geospatial coordinate bounds.
+newGeospatialCoordinateBounds ::
+  -- | 'north'
+  Prelude.Double ->
+  -- | 'south'
+  Prelude.Double ->
+  -- | 'west'
+  Prelude.Double ->
+  -- | 'east'
+  Prelude.Double ->
+  GeospatialCoordinateBounds
+newGeospatialCoordinateBounds
+  pNorth_
+  pSouth_
+  pWest_
+  pEast_ =
+    GeospatialCoordinateBounds'
+      { north = pNorth_,
+        south = pSouth_,
+        west = pWest_,
+        east = pEast_
+      }
+
+-- | The latitude of the north bound of the geospatial coordinate bounds.
+geospatialCoordinateBounds_north :: Lens.Lens' GeospatialCoordinateBounds Prelude.Double
+geospatialCoordinateBounds_north = Lens.lens (\GeospatialCoordinateBounds' {north} -> north) (\s@GeospatialCoordinateBounds' {} a -> s {north = a} :: GeospatialCoordinateBounds)
+
+-- | The latitude of the south bound of the geospatial coordinate bounds.
+geospatialCoordinateBounds_south :: Lens.Lens' GeospatialCoordinateBounds Prelude.Double
+geospatialCoordinateBounds_south = Lens.lens (\GeospatialCoordinateBounds' {south} -> south) (\s@GeospatialCoordinateBounds' {} a -> s {south = a} :: GeospatialCoordinateBounds)
+
+-- | The longitude of the west bound of the geospatial coordinate bounds.
+geospatialCoordinateBounds_west :: Lens.Lens' GeospatialCoordinateBounds Prelude.Double
+geospatialCoordinateBounds_west = Lens.lens (\GeospatialCoordinateBounds' {west} -> west) (\s@GeospatialCoordinateBounds' {} a -> s {west = a} :: GeospatialCoordinateBounds)
+
+-- | The longitude of the east bound of the geospatial coordinate bounds.
+geospatialCoordinateBounds_east :: Lens.Lens' GeospatialCoordinateBounds Prelude.Double
+geospatialCoordinateBounds_east = Lens.lens (\GeospatialCoordinateBounds' {east} -> east) (\s@GeospatialCoordinateBounds' {} a -> s {east = a} :: GeospatialCoordinateBounds)
+
+instance Data.FromJSON GeospatialCoordinateBounds where
+  parseJSON =
+    Data.withObject
+      "GeospatialCoordinateBounds"
+      ( \x ->
+          GeospatialCoordinateBounds'
+            Prelude.<$> (x Data..: "North")
+            Prelude.<*> (x Data..: "South")
+            Prelude.<*> (x Data..: "West")
+            Prelude.<*> (x Data..: "East")
+      )
+
+instance Prelude.Hashable GeospatialCoordinateBounds where
+  hashWithSalt _salt GeospatialCoordinateBounds' {..} =
+    _salt
+      `Prelude.hashWithSalt` north
+      `Prelude.hashWithSalt` south
+      `Prelude.hashWithSalt` west
+      `Prelude.hashWithSalt` east
+
+instance Prelude.NFData GeospatialCoordinateBounds where
+  rnf GeospatialCoordinateBounds' {..} =
+    Prelude.rnf north
+      `Prelude.seq` Prelude.rnf south
+      `Prelude.seq` Prelude.rnf west
+      `Prelude.seq` Prelude.rnf east
+
+instance Data.ToJSON GeospatialCoordinateBounds where
+  toJSON GeospatialCoordinateBounds' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("North" Data..= north),
+            Prelude.Just ("South" Data..= south),
+            Prelude.Just ("West" Data..= west),
+            Prelude.Just ("East" Data..= east)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialMapAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/GeospatialMapAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialMapAggregatedFieldWells.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GeospatialMapAggregatedFieldWells
+-- 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.QuickSight.Types.GeospatialMapAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field wells for a geospatial map.
+--
+-- /See:/ 'newGeospatialMapAggregatedFieldWells' smart constructor.
+data GeospatialMapAggregatedFieldWells = GeospatialMapAggregatedFieldWells'
+  { -- | The color field wells of a geospatial map.
+    colors :: Prelude.Maybe [DimensionField],
+    -- | The geospatial field wells of a geospatial map. Values are grouped by
+    -- geospatial fields.
+    geospatial :: Prelude.Maybe [DimensionField],
+    -- | The size field wells of a geospatial map. Values are aggregated based on
+    -- geospatial fields.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialMapAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'colors', 'geospatialMapAggregatedFieldWells_colors' - The color field wells of a geospatial map.
+--
+-- 'geospatial', 'geospatialMapAggregatedFieldWells_geospatial' - The geospatial field wells of a geospatial map. Values are grouped by
+-- geospatial fields.
+--
+-- 'values', 'geospatialMapAggregatedFieldWells_values' - The size field wells of a geospatial map. Values are aggregated based on
+-- geospatial fields.
+newGeospatialMapAggregatedFieldWells ::
+  GeospatialMapAggregatedFieldWells
+newGeospatialMapAggregatedFieldWells =
+  GeospatialMapAggregatedFieldWells'
+    { colors =
+        Prelude.Nothing,
+      geospatial = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The color field wells of a geospatial map.
+geospatialMapAggregatedFieldWells_colors :: Lens.Lens' GeospatialMapAggregatedFieldWells (Prelude.Maybe [DimensionField])
+geospatialMapAggregatedFieldWells_colors = Lens.lens (\GeospatialMapAggregatedFieldWells' {colors} -> colors) (\s@GeospatialMapAggregatedFieldWells' {} a -> s {colors = a} :: GeospatialMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The geospatial field wells of a geospatial map. Values are grouped by
+-- geospatial fields.
+geospatialMapAggregatedFieldWells_geospatial :: Lens.Lens' GeospatialMapAggregatedFieldWells (Prelude.Maybe [DimensionField])
+geospatialMapAggregatedFieldWells_geospatial = Lens.lens (\GeospatialMapAggregatedFieldWells' {geospatial} -> geospatial) (\s@GeospatialMapAggregatedFieldWells' {} a -> s {geospatial = a} :: GeospatialMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The size field wells of a geospatial map. Values are aggregated based on
+-- geospatial fields.
+geospatialMapAggregatedFieldWells_values :: Lens.Lens' GeospatialMapAggregatedFieldWells (Prelude.Maybe [MeasureField])
+geospatialMapAggregatedFieldWells_values = Lens.lens (\GeospatialMapAggregatedFieldWells' {values} -> values) (\s@GeospatialMapAggregatedFieldWells' {} a -> s {values = a} :: GeospatialMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    GeospatialMapAggregatedFieldWells
+  where
+  parseJSON =
+    Data.withObject
+      "GeospatialMapAggregatedFieldWells"
+      ( \x ->
+          GeospatialMapAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Colors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Geospatial" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    GeospatialMapAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    GeospatialMapAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` colors
+        `Prelude.hashWithSalt` geospatial
+        `Prelude.hashWithSalt` values
+
+instance
+  Prelude.NFData
+    GeospatialMapAggregatedFieldWells
+  where
+  rnf GeospatialMapAggregatedFieldWells' {..} =
+    Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf geospatial
+      `Prelude.seq` Prelude.rnf values
+
+instance
+  Data.ToJSON
+    GeospatialMapAggregatedFieldWells
+  where
+  toJSON GeospatialMapAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Colors" Data..=) Prelude.<$> colors,
+            ("Geospatial" Data..=) Prelude.<$> geospatial,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialMapConfiguration.hs b/gen/Amazonka/QuickSight/Types/GeospatialMapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialMapConfiguration.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.GeospatialMapConfiguration
+-- 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.QuickSight.Types.GeospatialMapConfiguration 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.QuickSight.Types.GeospatialMapFieldWells
+import Amazonka.QuickSight.Types.GeospatialMapStyleOptions
+import Amazonka.QuickSight.Types.GeospatialPointStyleOptions
+import Amazonka.QuickSight.Types.GeospatialWindowOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a @GeospatialMapVisual@.
+--
+-- /See:/ 'newGeospatialMapConfiguration' smart constructor.
+data GeospatialMapConfiguration = GeospatialMapConfiguration'
+  { -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe GeospatialMapFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The map style options of the geospatial map.
+    mapStyleOptions :: Prelude.Maybe GeospatialMapStyleOptions,
+    -- | The point style options of the geospatial map.
+    pointStyleOptions :: Prelude.Maybe GeospatialPointStyleOptions,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    visualPalette :: Prelude.Maybe VisualPalette,
+    -- | The window options of the geospatial map.
+    windowOptions :: Prelude.Maybe GeospatialWindowOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialMapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldWells', 'geospatialMapConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'geospatialMapConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'mapStyleOptions', 'geospatialMapConfiguration_mapStyleOptions' - The map style options of the geospatial map.
+--
+-- 'pointStyleOptions', 'geospatialMapConfiguration_pointStyleOptions' - The point style options of the geospatial map.
+--
+-- 'tooltip', 'geospatialMapConfiguration_tooltip' - The tooltip display setup of the visual.
+--
+-- 'visualPalette', 'geospatialMapConfiguration_visualPalette' - Undocumented member.
+--
+-- 'windowOptions', 'geospatialMapConfiguration_windowOptions' - The window options of the geospatial map.
+newGeospatialMapConfiguration ::
+  GeospatialMapConfiguration
+newGeospatialMapConfiguration =
+  GeospatialMapConfiguration'
+    { fieldWells =
+        Prelude.Nothing,
+      legend = Prelude.Nothing,
+      mapStyleOptions = Prelude.Nothing,
+      pointStyleOptions = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      visualPalette = Prelude.Nothing,
+      windowOptions = Prelude.Nothing
+    }
+
+-- | The field wells of the visual.
+geospatialMapConfiguration_fieldWells :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe GeospatialMapFieldWells)
+geospatialMapConfiguration_fieldWells = Lens.lens (\GeospatialMapConfiguration' {fieldWells} -> fieldWells) (\s@GeospatialMapConfiguration' {} a -> s {fieldWells = a} :: GeospatialMapConfiguration)
+
+-- | The legend display setup of the visual.
+geospatialMapConfiguration_legend :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe LegendOptions)
+geospatialMapConfiguration_legend = Lens.lens (\GeospatialMapConfiguration' {legend} -> legend) (\s@GeospatialMapConfiguration' {} a -> s {legend = a} :: GeospatialMapConfiguration)
+
+-- | The map style options of the geospatial map.
+geospatialMapConfiguration_mapStyleOptions :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe GeospatialMapStyleOptions)
+geospatialMapConfiguration_mapStyleOptions = Lens.lens (\GeospatialMapConfiguration' {mapStyleOptions} -> mapStyleOptions) (\s@GeospatialMapConfiguration' {} a -> s {mapStyleOptions = a} :: GeospatialMapConfiguration)
+
+-- | The point style options of the geospatial map.
+geospatialMapConfiguration_pointStyleOptions :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe GeospatialPointStyleOptions)
+geospatialMapConfiguration_pointStyleOptions = Lens.lens (\GeospatialMapConfiguration' {pointStyleOptions} -> pointStyleOptions) (\s@GeospatialMapConfiguration' {} a -> s {pointStyleOptions = a} :: GeospatialMapConfiguration)
+
+-- | The tooltip display setup of the visual.
+geospatialMapConfiguration_tooltip :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe TooltipOptions)
+geospatialMapConfiguration_tooltip = Lens.lens (\GeospatialMapConfiguration' {tooltip} -> tooltip) (\s@GeospatialMapConfiguration' {} a -> s {tooltip = a} :: GeospatialMapConfiguration)
+
+-- | Undocumented member.
+geospatialMapConfiguration_visualPalette :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe VisualPalette)
+geospatialMapConfiguration_visualPalette = Lens.lens (\GeospatialMapConfiguration' {visualPalette} -> visualPalette) (\s@GeospatialMapConfiguration' {} a -> s {visualPalette = a} :: GeospatialMapConfiguration)
+
+-- | The window options of the geospatial map.
+geospatialMapConfiguration_windowOptions :: Lens.Lens' GeospatialMapConfiguration (Prelude.Maybe GeospatialWindowOptions)
+geospatialMapConfiguration_windowOptions = Lens.lens (\GeospatialMapConfiguration' {windowOptions} -> windowOptions) (\s@GeospatialMapConfiguration' {} a -> s {windowOptions = a} :: GeospatialMapConfiguration)
+
+instance Data.FromJSON GeospatialMapConfiguration where
+  parseJSON =
+    Data.withObject
+      "GeospatialMapConfiguration"
+      ( \x ->
+          GeospatialMapConfiguration'
+            Prelude.<$> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "MapStyleOptions")
+            Prelude.<*> (x Data..:? "PointStyleOptions")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "VisualPalette")
+            Prelude.<*> (x Data..:? "WindowOptions")
+      )
+
+instance Prelude.Hashable GeospatialMapConfiguration where
+  hashWithSalt _salt GeospatialMapConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` mapStyleOptions
+      `Prelude.hashWithSalt` pointStyleOptions
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` visualPalette
+      `Prelude.hashWithSalt` windowOptions
+
+instance Prelude.NFData GeospatialMapConfiguration where
+  rnf GeospatialMapConfiguration' {..} =
+    Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf mapStyleOptions
+      `Prelude.seq` Prelude.rnf pointStyleOptions
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf visualPalette
+      `Prelude.seq` Prelude.rnf windowOptions
+
+instance Data.ToJSON GeospatialMapConfiguration where
+  toJSON GeospatialMapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("MapStyleOptions" Data..=)
+              Prelude.<$> mapStyleOptions,
+            ("PointStyleOptions" Data..=)
+              Prelude.<$> pointStyleOptions,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette,
+            ("WindowOptions" Data..=) Prelude.<$> windowOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialMapFieldWells.hs b/gen/Amazonka/QuickSight/Types/GeospatialMapFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialMapFieldWells.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.QuickSight.Types.GeospatialMapFieldWells
+-- 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.QuickSight.Types.GeospatialMapFieldWells 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.QuickSight.Types.GeospatialMapAggregatedFieldWells
+
+-- | The field wells of a @GeospatialMapVisual@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newGeospatialMapFieldWells' smart constructor.
+data GeospatialMapFieldWells = GeospatialMapFieldWells'
+  { -- | The aggregated field well for a geospatial map.
+    geospatialMapAggregatedFieldWells :: Prelude.Maybe GeospatialMapAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialMapFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'geospatialMapAggregatedFieldWells', 'geospatialMapFieldWells_geospatialMapAggregatedFieldWells' - The aggregated field well for a geospatial map.
+newGeospatialMapFieldWells ::
+  GeospatialMapFieldWells
+newGeospatialMapFieldWells =
+  GeospatialMapFieldWells'
+    { geospatialMapAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field well for a geospatial map.
+geospatialMapFieldWells_geospatialMapAggregatedFieldWells :: Lens.Lens' GeospatialMapFieldWells (Prelude.Maybe GeospatialMapAggregatedFieldWells)
+geospatialMapFieldWells_geospatialMapAggregatedFieldWells = Lens.lens (\GeospatialMapFieldWells' {geospatialMapAggregatedFieldWells} -> geospatialMapAggregatedFieldWells) (\s@GeospatialMapFieldWells' {} a -> s {geospatialMapAggregatedFieldWells = a} :: GeospatialMapFieldWells)
+
+instance Data.FromJSON GeospatialMapFieldWells where
+  parseJSON =
+    Data.withObject
+      "GeospatialMapFieldWells"
+      ( \x ->
+          GeospatialMapFieldWells'
+            Prelude.<$> (x Data..:? "GeospatialMapAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable GeospatialMapFieldWells where
+  hashWithSalt _salt GeospatialMapFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` geospatialMapAggregatedFieldWells
+
+instance Prelude.NFData GeospatialMapFieldWells where
+  rnf GeospatialMapFieldWells' {..} =
+    Prelude.rnf geospatialMapAggregatedFieldWells
+
+instance Data.ToJSON GeospatialMapFieldWells where
+  toJSON GeospatialMapFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GeospatialMapAggregatedFieldWells" Data..=)
+              Prelude.<$> geospatialMapAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialMapStyleOptions.hs b/gen/Amazonka/QuickSight/Types/GeospatialMapStyleOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialMapStyleOptions.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GeospatialMapStyleOptions
+-- 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.QuickSight.Types.GeospatialMapStyleOptions 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.QuickSight.Types.BaseMapStyleType
+
+-- | The map style options of the geospatial map.
+--
+-- /See:/ 'newGeospatialMapStyleOptions' smart constructor.
+data GeospatialMapStyleOptions = GeospatialMapStyleOptions'
+  { -- | The base map style of the geospatial map.
+    baseMapStyle :: Prelude.Maybe BaseMapStyleType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialMapStyleOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'baseMapStyle', 'geospatialMapStyleOptions_baseMapStyle' - The base map style of the geospatial map.
+newGeospatialMapStyleOptions ::
+  GeospatialMapStyleOptions
+newGeospatialMapStyleOptions =
+  GeospatialMapStyleOptions'
+    { baseMapStyle =
+        Prelude.Nothing
+    }
+
+-- | The base map style of the geospatial map.
+geospatialMapStyleOptions_baseMapStyle :: Lens.Lens' GeospatialMapStyleOptions (Prelude.Maybe BaseMapStyleType)
+geospatialMapStyleOptions_baseMapStyle = Lens.lens (\GeospatialMapStyleOptions' {baseMapStyle} -> baseMapStyle) (\s@GeospatialMapStyleOptions' {} a -> s {baseMapStyle = a} :: GeospatialMapStyleOptions)
+
+instance Data.FromJSON GeospatialMapStyleOptions where
+  parseJSON =
+    Data.withObject
+      "GeospatialMapStyleOptions"
+      ( \x ->
+          GeospatialMapStyleOptions'
+            Prelude.<$> (x Data..:? "BaseMapStyle")
+      )
+
+instance Prelude.Hashable GeospatialMapStyleOptions where
+  hashWithSalt _salt GeospatialMapStyleOptions' {..} =
+    _salt `Prelude.hashWithSalt` baseMapStyle
+
+instance Prelude.NFData GeospatialMapStyleOptions where
+  rnf GeospatialMapStyleOptions' {..} =
+    Prelude.rnf baseMapStyle
+
+instance Data.ToJSON GeospatialMapStyleOptions where
+  toJSON GeospatialMapStyleOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("BaseMapStyle" Data..=) Prelude.<$> baseMapStyle]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialMapVisual.hs b/gen/Amazonka/QuickSight/Types/GeospatialMapVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialMapVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.GeospatialMapVisual
+-- 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.QuickSight.Types.GeospatialMapVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.GeospatialMapConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A geospatial map or a points on map visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/point-maps.html Creating point maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newGeospatialMapVisual' smart constructor.
+data GeospatialMapVisual = GeospatialMapVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe GeospatialMapConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialMapVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'geospatialMapVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'geospatialMapVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'geospatialMapVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'geospatialMapVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'geospatialMapVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'geospatialMapVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newGeospatialMapVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  GeospatialMapVisual
+newGeospatialMapVisual pVisualId_ =
+  GeospatialMapVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+geospatialMapVisual_actions :: Lens.Lens' GeospatialMapVisual (Prelude.Maybe [VisualCustomAction])
+geospatialMapVisual_actions = Lens.lens (\GeospatialMapVisual' {actions} -> actions) (\s@GeospatialMapVisual' {} a -> s {actions = a} :: GeospatialMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+geospatialMapVisual_chartConfiguration :: Lens.Lens' GeospatialMapVisual (Prelude.Maybe GeospatialMapConfiguration)
+geospatialMapVisual_chartConfiguration = Lens.lens (\GeospatialMapVisual' {chartConfiguration} -> chartConfiguration) (\s@GeospatialMapVisual' {} a -> s {chartConfiguration = a} :: GeospatialMapVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+geospatialMapVisual_columnHierarchies :: Lens.Lens' GeospatialMapVisual (Prelude.Maybe [ColumnHierarchy])
+geospatialMapVisual_columnHierarchies = Lens.lens (\GeospatialMapVisual' {columnHierarchies} -> columnHierarchies) (\s@GeospatialMapVisual' {} a -> s {columnHierarchies = a} :: GeospatialMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+geospatialMapVisual_subtitle :: Lens.Lens' GeospatialMapVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+geospatialMapVisual_subtitle = Lens.lens (\GeospatialMapVisual' {subtitle} -> subtitle) (\s@GeospatialMapVisual' {} a -> s {subtitle = a} :: GeospatialMapVisual)
+
+-- | The title that is displayed on the visual.
+geospatialMapVisual_title :: Lens.Lens' GeospatialMapVisual (Prelude.Maybe VisualTitleLabelOptions)
+geospatialMapVisual_title = Lens.lens (\GeospatialMapVisual' {title} -> title) (\s@GeospatialMapVisual' {} a -> s {title = a} :: GeospatialMapVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+geospatialMapVisual_visualId :: Lens.Lens' GeospatialMapVisual Prelude.Text
+geospatialMapVisual_visualId = Lens.lens (\GeospatialMapVisual' {visualId} -> visualId) (\s@GeospatialMapVisual' {} a -> s {visualId = a} :: GeospatialMapVisual)
+
+instance Data.FromJSON GeospatialMapVisual where
+  parseJSON =
+    Data.withObject
+      "GeospatialMapVisual"
+      ( \x ->
+          GeospatialMapVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable GeospatialMapVisual where
+  hashWithSalt _salt GeospatialMapVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData GeospatialMapVisual where
+  rnf GeospatialMapVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON GeospatialMapVisual where
+  toJSON GeospatialMapVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialPointStyleOptions.hs b/gen/Amazonka/QuickSight/Types/GeospatialPointStyleOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialPointStyleOptions.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GeospatialPointStyleOptions
+-- 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.QuickSight.Types.GeospatialPointStyleOptions 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.QuickSight.Types.ClusterMarkerConfiguration
+import Amazonka.QuickSight.Types.GeospatialSelectedPointStyle
+
+-- | The point style of the geospatial map.
+--
+-- /See:/ 'newGeospatialPointStyleOptions' smart constructor.
+data GeospatialPointStyleOptions = GeospatialPointStyleOptions'
+  { -- | The cluster marker configuration of the geospatial point style.
+    clusterMarkerConfiguration :: Prelude.Maybe ClusterMarkerConfiguration,
+    -- | The selected point styles (point, cluster) of the geospatial map.
+    selectedPointStyle :: Prelude.Maybe GeospatialSelectedPointStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialPointStyleOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clusterMarkerConfiguration', 'geospatialPointStyleOptions_clusterMarkerConfiguration' - The cluster marker configuration of the geospatial point style.
+--
+-- 'selectedPointStyle', 'geospatialPointStyleOptions_selectedPointStyle' - The selected point styles (point, cluster) of the geospatial map.
+newGeospatialPointStyleOptions ::
+  GeospatialPointStyleOptions
+newGeospatialPointStyleOptions =
+  GeospatialPointStyleOptions'
+    { clusterMarkerConfiguration =
+        Prelude.Nothing,
+      selectedPointStyle = Prelude.Nothing
+    }
+
+-- | The cluster marker configuration of the geospatial point style.
+geospatialPointStyleOptions_clusterMarkerConfiguration :: Lens.Lens' GeospatialPointStyleOptions (Prelude.Maybe ClusterMarkerConfiguration)
+geospatialPointStyleOptions_clusterMarkerConfiguration = Lens.lens (\GeospatialPointStyleOptions' {clusterMarkerConfiguration} -> clusterMarkerConfiguration) (\s@GeospatialPointStyleOptions' {} a -> s {clusterMarkerConfiguration = a} :: GeospatialPointStyleOptions)
+
+-- | The selected point styles (point, cluster) of the geospatial map.
+geospatialPointStyleOptions_selectedPointStyle :: Lens.Lens' GeospatialPointStyleOptions (Prelude.Maybe GeospatialSelectedPointStyle)
+geospatialPointStyleOptions_selectedPointStyle = Lens.lens (\GeospatialPointStyleOptions' {selectedPointStyle} -> selectedPointStyle) (\s@GeospatialPointStyleOptions' {} a -> s {selectedPointStyle = a} :: GeospatialPointStyleOptions)
+
+instance Data.FromJSON GeospatialPointStyleOptions where
+  parseJSON =
+    Data.withObject
+      "GeospatialPointStyleOptions"
+      ( \x ->
+          GeospatialPointStyleOptions'
+            Prelude.<$> (x Data..:? "ClusterMarkerConfiguration")
+            Prelude.<*> (x Data..:? "SelectedPointStyle")
+      )
+
+instance Prelude.Hashable GeospatialPointStyleOptions where
+  hashWithSalt _salt GeospatialPointStyleOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` clusterMarkerConfiguration
+      `Prelude.hashWithSalt` selectedPointStyle
+
+instance Prelude.NFData GeospatialPointStyleOptions where
+  rnf GeospatialPointStyleOptions' {..} =
+    Prelude.rnf clusterMarkerConfiguration
+      `Prelude.seq` Prelude.rnf selectedPointStyle
+
+instance Data.ToJSON GeospatialPointStyleOptions where
+  toJSON GeospatialPointStyleOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClusterMarkerConfiguration" Data..=)
+              Prelude.<$> clusterMarkerConfiguration,
+            ("SelectedPointStyle" Data..=)
+              Prelude.<$> selectedPointStyle
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialSelectedPointStyle.hs b/gen/Amazonka/QuickSight/Types/GeospatialSelectedPointStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialSelectedPointStyle.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.QuickSight.Types.GeospatialSelectedPointStyle
+-- 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.QuickSight.Types.GeospatialSelectedPointStyle
+  ( GeospatialSelectedPointStyle
+      ( ..,
+        GeospatialSelectedPointStyle_CLUSTER,
+        GeospatialSelectedPointStyle_POINT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GeospatialSelectedPointStyle = GeospatialSelectedPointStyle'
+  { fromGeospatialSelectedPointStyle ::
+      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 GeospatialSelectedPointStyle_CLUSTER :: GeospatialSelectedPointStyle
+pattern GeospatialSelectedPointStyle_CLUSTER = GeospatialSelectedPointStyle' "CLUSTER"
+
+pattern GeospatialSelectedPointStyle_POINT :: GeospatialSelectedPointStyle
+pattern GeospatialSelectedPointStyle_POINT = GeospatialSelectedPointStyle' "POINT"
+
+{-# COMPLETE
+  GeospatialSelectedPointStyle_CLUSTER,
+  GeospatialSelectedPointStyle_POINT,
+  GeospatialSelectedPointStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/GeospatialWindowOptions.hs b/gen/Amazonka/QuickSight/Types/GeospatialWindowOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GeospatialWindowOptions.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GeospatialWindowOptions
+-- 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.QuickSight.Types.GeospatialWindowOptions 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.QuickSight.Types.GeospatialCoordinateBounds
+import Amazonka.QuickSight.Types.MapZoomMode
+
+-- | The window options of the geospatial map visual.
+--
+-- /See:/ 'newGeospatialWindowOptions' smart constructor.
+data GeospatialWindowOptions = GeospatialWindowOptions'
+  { -- | The bounds options (north, south, west, east) of the geospatial window
+    -- options.
+    bounds :: Prelude.Maybe GeospatialCoordinateBounds,
+    -- | The map zoom modes (manual, auto) of the geospatial window options.
+    mapZoomMode :: Prelude.Maybe MapZoomMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeospatialWindowOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bounds', 'geospatialWindowOptions_bounds' - The bounds options (north, south, west, east) of the geospatial window
+-- options.
+--
+-- 'mapZoomMode', 'geospatialWindowOptions_mapZoomMode' - The map zoom modes (manual, auto) of the geospatial window options.
+newGeospatialWindowOptions ::
+  GeospatialWindowOptions
+newGeospatialWindowOptions =
+  GeospatialWindowOptions'
+    { bounds = Prelude.Nothing,
+      mapZoomMode = Prelude.Nothing
+    }
+
+-- | The bounds options (north, south, west, east) of the geospatial window
+-- options.
+geospatialWindowOptions_bounds :: Lens.Lens' GeospatialWindowOptions (Prelude.Maybe GeospatialCoordinateBounds)
+geospatialWindowOptions_bounds = Lens.lens (\GeospatialWindowOptions' {bounds} -> bounds) (\s@GeospatialWindowOptions' {} a -> s {bounds = a} :: GeospatialWindowOptions)
+
+-- | The map zoom modes (manual, auto) of the geospatial window options.
+geospatialWindowOptions_mapZoomMode :: Lens.Lens' GeospatialWindowOptions (Prelude.Maybe MapZoomMode)
+geospatialWindowOptions_mapZoomMode = Lens.lens (\GeospatialWindowOptions' {mapZoomMode} -> mapZoomMode) (\s@GeospatialWindowOptions' {} a -> s {mapZoomMode = a} :: GeospatialWindowOptions)
+
+instance Data.FromJSON GeospatialWindowOptions where
+  parseJSON =
+    Data.withObject
+      "GeospatialWindowOptions"
+      ( \x ->
+          GeospatialWindowOptions'
+            Prelude.<$> (x Data..:? "Bounds")
+            Prelude.<*> (x Data..:? "MapZoomMode")
+      )
+
+instance Prelude.Hashable GeospatialWindowOptions where
+  hashWithSalt _salt GeospatialWindowOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` bounds
+      `Prelude.hashWithSalt` mapZoomMode
+
+instance Prelude.NFData GeospatialWindowOptions where
+  rnf GeospatialWindowOptions' {..} =
+    Prelude.rnf bounds
+      `Prelude.seq` Prelude.rnf mapZoomMode
+
+instance Data.ToJSON GeospatialWindowOptions where
+  toJSON GeospatialWindowOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bounds" Data..=) Prelude.<$> bounds,
+            ("MapZoomMode" Data..=) Prelude.<$> mapZoomMode
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GlobalTableBorderOptions.hs b/gen/Amazonka/QuickSight/Types/GlobalTableBorderOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GlobalTableBorderOptions.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GlobalTableBorderOptions
+-- 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.QuickSight.Types.GlobalTableBorderOptions 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.QuickSight.Types.TableBorderOptions
+import Amazonka.QuickSight.Types.TableSideBorderOptions
+
+-- | Determines the border options for a table visual.
+--
+-- /See:/ 'newGlobalTableBorderOptions' smart constructor.
+data GlobalTableBorderOptions = GlobalTableBorderOptions'
+  { -- | Determines the options for side specific border.
+    sideSpecificBorder :: Prelude.Maybe TableSideBorderOptions,
+    -- | Determines the options for uniform border.
+    uniformBorder :: Prelude.Maybe TableBorderOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GlobalTableBorderOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sideSpecificBorder', 'globalTableBorderOptions_sideSpecificBorder' - Determines the options for side specific border.
+--
+-- 'uniformBorder', 'globalTableBorderOptions_uniformBorder' - Determines the options for uniform border.
+newGlobalTableBorderOptions ::
+  GlobalTableBorderOptions
+newGlobalTableBorderOptions =
+  GlobalTableBorderOptions'
+    { sideSpecificBorder =
+        Prelude.Nothing,
+      uniformBorder = Prelude.Nothing
+    }
+
+-- | Determines the options for side specific border.
+globalTableBorderOptions_sideSpecificBorder :: Lens.Lens' GlobalTableBorderOptions (Prelude.Maybe TableSideBorderOptions)
+globalTableBorderOptions_sideSpecificBorder = Lens.lens (\GlobalTableBorderOptions' {sideSpecificBorder} -> sideSpecificBorder) (\s@GlobalTableBorderOptions' {} a -> s {sideSpecificBorder = a} :: GlobalTableBorderOptions)
+
+-- | Determines the options for uniform border.
+globalTableBorderOptions_uniformBorder :: Lens.Lens' GlobalTableBorderOptions (Prelude.Maybe TableBorderOptions)
+globalTableBorderOptions_uniformBorder = Lens.lens (\GlobalTableBorderOptions' {uniformBorder} -> uniformBorder) (\s@GlobalTableBorderOptions' {} a -> s {uniformBorder = a} :: GlobalTableBorderOptions)
+
+instance Data.FromJSON GlobalTableBorderOptions where
+  parseJSON =
+    Data.withObject
+      "GlobalTableBorderOptions"
+      ( \x ->
+          GlobalTableBorderOptions'
+            Prelude.<$> (x Data..:? "SideSpecificBorder")
+            Prelude.<*> (x Data..:? "UniformBorder")
+      )
+
+instance Prelude.Hashable GlobalTableBorderOptions where
+  hashWithSalt _salt GlobalTableBorderOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` sideSpecificBorder
+      `Prelude.hashWithSalt` uniformBorder
+
+instance Prelude.NFData GlobalTableBorderOptions where
+  rnf GlobalTableBorderOptions' {..} =
+    Prelude.rnf sideSpecificBorder
+      `Prelude.seq` Prelude.rnf uniformBorder
+
+instance Data.ToJSON GlobalTableBorderOptions where
+  toJSON GlobalTableBorderOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SideSpecificBorder" Data..=)
+              Prelude.<$> sideSpecificBorder,
+            ("UniformBorder" Data..=) Prelude.<$> uniformBorder
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GradientColor.hs b/gen/Amazonka/QuickSight/Types/GradientColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GradientColor.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.QuickSight.Types.GradientColor
+-- 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.QuickSight.Types.GradientColor 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.QuickSight.Types.GradientStop
+
+-- | Determines the gradient color settings.
+--
+-- /See:/ 'newGradientColor' smart constructor.
+data GradientColor = GradientColor'
+  { -- | The list of gradient color stops.
+    stops :: Prelude.Maybe [GradientStop]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GradientColor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'stops', 'gradientColor_stops' - The list of gradient color stops.
+newGradientColor ::
+  GradientColor
+newGradientColor =
+  GradientColor' {stops = Prelude.Nothing}
+
+-- | The list of gradient color stops.
+gradientColor_stops :: Lens.Lens' GradientColor (Prelude.Maybe [GradientStop])
+gradientColor_stops = Lens.lens (\GradientColor' {stops} -> stops) (\s@GradientColor' {} a -> s {stops = a} :: GradientColor) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON GradientColor where
+  parseJSON =
+    Data.withObject
+      "GradientColor"
+      ( \x ->
+          GradientColor'
+            Prelude.<$> (x Data..:? "Stops" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable GradientColor where
+  hashWithSalt _salt GradientColor' {..} =
+    _salt `Prelude.hashWithSalt` stops
+
+instance Prelude.NFData GradientColor where
+  rnf GradientColor' {..} = Prelude.rnf stops
+
+instance Data.ToJSON GradientColor where
+  toJSON GradientColor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Stops" Data..=) Prelude.<$> stops]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GradientStop.hs b/gen/Amazonka/QuickSight/Types/GradientStop.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GradientStop.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GradientStop
+-- 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.QuickSight.Types.GradientStop 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
+
+-- | Determines the gradient stop configuration.
+--
+-- /See:/ 'newGradientStop' smart constructor.
+data GradientStop = GradientStop'
+  { -- | Determines the color.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | Determines the data value.
+    dataValue :: Prelude.Maybe Prelude.Double,
+    -- | Determines gradient offset value.
+    gradientOffset :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GradientStop' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'gradientStop_color' - Determines the color.
+--
+-- 'dataValue', 'gradientStop_dataValue' - Determines the data value.
+--
+-- 'gradientOffset', 'gradientStop_gradientOffset' - Determines gradient offset value.
+newGradientStop ::
+  -- | 'gradientOffset'
+  Prelude.Double ->
+  GradientStop
+newGradientStop pGradientOffset_ =
+  GradientStop'
+    { color = Prelude.Nothing,
+      dataValue = Prelude.Nothing,
+      gradientOffset = pGradientOffset_
+    }
+
+-- | Determines the color.
+gradientStop_color :: Lens.Lens' GradientStop (Prelude.Maybe Prelude.Text)
+gradientStop_color = Lens.lens (\GradientStop' {color} -> color) (\s@GradientStop' {} a -> s {color = a} :: GradientStop)
+
+-- | Determines the data value.
+gradientStop_dataValue :: Lens.Lens' GradientStop (Prelude.Maybe Prelude.Double)
+gradientStop_dataValue = Lens.lens (\GradientStop' {dataValue} -> dataValue) (\s@GradientStop' {} a -> s {dataValue = a} :: GradientStop)
+
+-- | Determines gradient offset value.
+gradientStop_gradientOffset :: Lens.Lens' GradientStop Prelude.Double
+gradientStop_gradientOffset = Lens.lens (\GradientStop' {gradientOffset} -> gradientOffset) (\s@GradientStop' {} a -> s {gradientOffset = a} :: GradientStop)
+
+instance Data.FromJSON GradientStop where
+  parseJSON =
+    Data.withObject
+      "GradientStop"
+      ( \x ->
+          GradientStop'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "DataValue")
+            Prelude.<*> (x Data..: "GradientOffset")
+      )
+
+instance Prelude.Hashable GradientStop where
+  hashWithSalt _salt GradientStop' {..} =
+    _salt
+      `Prelude.hashWithSalt` color
+      `Prelude.hashWithSalt` dataValue
+      `Prelude.hashWithSalt` gradientOffset
+
+instance Prelude.NFData GradientStop where
+  rnf GradientStop' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf dataValue
+      `Prelude.seq` Prelude.rnf gradientOffset
+
+instance Data.ToJSON GradientStop where
+  toJSON GradientStop' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("DataValue" Data..=) Prelude.<$> dataValue,
+            Prelude.Just
+              ("GradientOffset" Data..= gradientOffset)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GridLayoutCanvasSizeOptions.hs b/gen/Amazonka/QuickSight/Types/GridLayoutCanvasSizeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GridLayoutCanvasSizeOptions.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.QuickSight.Types.GridLayoutCanvasSizeOptions
+-- 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.QuickSight.Types.GridLayoutCanvasSizeOptions 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.QuickSight.Types.GridLayoutScreenCanvasSizeOptions
+
+-- | Configuration options for the canvas of a grid layout.
+--
+-- /See:/ 'newGridLayoutCanvasSizeOptions' smart constructor.
+data GridLayoutCanvasSizeOptions = GridLayoutCanvasSizeOptions'
+  { -- | The options that determine the sizing of the canvas used in a grid
+    -- layout.
+    screenCanvasSizeOptions :: Prelude.Maybe GridLayoutScreenCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GridLayoutCanvasSizeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'screenCanvasSizeOptions', 'gridLayoutCanvasSizeOptions_screenCanvasSizeOptions' - The options that determine the sizing of the canvas used in a grid
+-- layout.
+newGridLayoutCanvasSizeOptions ::
+  GridLayoutCanvasSizeOptions
+newGridLayoutCanvasSizeOptions =
+  GridLayoutCanvasSizeOptions'
+    { screenCanvasSizeOptions =
+        Prelude.Nothing
+    }
+
+-- | The options that determine the sizing of the canvas used in a grid
+-- layout.
+gridLayoutCanvasSizeOptions_screenCanvasSizeOptions :: Lens.Lens' GridLayoutCanvasSizeOptions (Prelude.Maybe GridLayoutScreenCanvasSizeOptions)
+gridLayoutCanvasSizeOptions_screenCanvasSizeOptions = Lens.lens (\GridLayoutCanvasSizeOptions' {screenCanvasSizeOptions} -> screenCanvasSizeOptions) (\s@GridLayoutCanvasSizeOptions' {} a -> s {screenCanvasSizeOptions = a} :: GridLayoutCanvasSizeOptions)
+
+instance Data.FromJSON GridLayoutCanvasSizeOptions where
+  parseJSON =
+    Data.withObject
+      "GridLayoutCanvasSizeOptions"
+      ( \x ->
+          GridLayoutCanvasSizeOptions'
+            Prelude.<$> (x Data..:? "ScreenCanvasSizeOptions")
+      )
+
+instance Prelude.Hashable GridLayoutCanvasSizeOptions where
+  hashWithSalt _salt GridLayoutCanvasSizeOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` screenCanvasSizeOptions
+
+instance Prelude.NFData GridLayoutCanvasSizeOptions where
+  rnf GridLayoutCanvasSizeOptions' {..} =
+    Prelude.rnf screenCanvasSizeOptions
+
+instance Data.ToJSON GridLayoutCanvasSizeOptions where
+  toJSON GridLayoutCanvasSizeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ScreenCanvasSizeOptions" Data..=)
+              Prelude.<$> screenCanvasSizeOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GridLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/GridLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GridLayoutConfiguration.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.QuickSight.Types.GridLayoutConfiguration
+-- 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.QuickSight.Types.GridLayoutConfiguration 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.QuickSight.Types.GridLayoutCanvasSizeOptions
+import Amazonka.QuickSight.Types.GridLayoutElement
+
+-- | The configuration for a grid layout. Also called a tiled layout.
+--
+-- Visuals snap to a grid with standard spacing and alignment. Dashboards
+-- are displayed as designed, with options to fit to screen or view at
+-- actual size.
+--
+-- /See:/ 'newGridLayoutConfiguration' smart constructor.
+data GridLayoutConfiguration = GridLayoutConfiguration'
+  { canvasSizeOptions :: Prelude.Maybe GridLayoutCanvasSizeOptions,
+    -- | The elements that are included in a grid layout.
+    elements :: [GridLayoutElement]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GridLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'canvasSizeOptions', 'gridLayoutConfiguration_canvasSizeOptions' - Undocumented member.
+--
+-- 'elements', 'gridLayoutConfiguration_elements' - The elements that are included in a grid layout.
+newGridLayoutConfiguration ::
+  GridLayoutConfiguration
+newGridLayoutConfiguration =
+  GridLayoutConfiguration'
+    { canvasSizeOptions =
+        Prelude.Nothing,
+      elements = Prelude.mempty
+    }
+
+-- | Undocumented member.
+gridLayoutConfiguration_canvasSizeOptions :: Lens.Lens' GridLayoutConfiguration (Prelude.Maybe GridLayoutCanvasSizeOptions)
+gridLayoutConfiguration_canvasSizeOptions = Lens.lens (\GridLayoutConfiguration' {canvasSizeOptions} -> canvasSizeOptions) (\s@GridLayoutConfiguration' {} a -> s {canvasSizeOptions = a} :: GridLayoutConfiguration)
+
+-- | The elements that are included in a grid layout.
+gridLayoutConfiguration_elements :: Lens.Lens' GridLayoutConfiguration [GridLayoutElement]
+gridLayoutConfiguration_elements = Lens.lens (\GridLayoutConfiguration' {elements} -> elements) (\s@GridLayoutConfiguration' {} a -> s {elements = a} :: GridLayoutConfiguration) Prelude.. Lens.coerced
+
+instance Data.FromJSON GridLayoutConfiguration where
+  parseJSON =
+    Data.withObject
+      "GridLayoutConfiguration"
+      ( \x ->
+          GridLayoutConfiguration'
+            Prelude.<$> (x Data..:? "CanvasSizeOptions")
+            Prelude.<*> (x Data..:? "Elements" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable GridLayoutConfiguration where
+  hashWithSalt _salt GridLayoutConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` canvasSizeOptions
+      `Prelude.hashWithSalt` elements
+
+instance Prelude.NFData GridLayoutConfiguration where
+  rnf GridLayoutConfiguration' {..} =
+    Prelude.rnf canvasSizeOptions
+      `Prelude.seq` Prelude.rnf elements
+
+instance Data.ToJSON GridLayoutConfiguration where
+  toJSON GridLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CanvasSizeOptions" Data..=)
+              Prelude.<$> canvasSizeOptions,
+            Prelude.Just ("Elements" Data..= elements)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GridLayoutElement.hs b/gen/Amazonka/QuickSight/Types/GridLayoutElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GridLayoutElement.hs
@@ -0,0 +1,158 @@
+{-# 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.QuickSight.Types.GridLayoutElement
+-- 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.QuickSight.Types.GridLayoutElement 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.QuickSight.Types.LayoutElementType
+
+-- | An element within a grid layout.
+--
+-- /See:/ 'newGridLayoutElement' smart constructor.
+data GridLayoutElement = GridLayoutElement'
+  { -- | The column index for the upper left corner of an element.
+    columnIndex :: Prelude.Maybe Prelude.Natural,
+    -- | The row index for the upper left corner of an element.
+    rowIndex :: Prelude.Maybe Prelude.Natural,
+    -- | A unique identifier for an element within a grid layout.
+    elementId :: Prelude.Text,
+    -- | The type of element.
+    elementType :: LayoutElementType,
+    -- | The width of a grid element expressed as a number of grid columns.
+    columnSpan :: Prelude.Natural,
+    -- | The height of a grid element expressed as a number of grid rows.
+    rowSpan :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GridLayoutElement' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnIndex', 'gridLayoutElement_columnIndex' - The column index for the upper left corner of an element.
+--
+-- 'rowIndex', 'gridLayoutElement_rowIndex' - The row index for the upper left corner of an element.
+--
+-- 'elementId', 'gridLayoutElement_elementId' - A unique identifier for an element within a grid layout.
+--
+-- 'elementType', 'gridLayoutElement_elementType' - The type of element.
+--
+-- 'columnSpan', 'gridLayoutElement_columnSpan' - The width of a grid element expressed as a number of grid columns.
+--
+-- 'rowSpan', 'gridLayoutElement_rowSpan' - The height of a grid element expressed as a number of grid rows.
+newGridLayoutElement ::
+  -- | 'elementId'
+  Prelude.Text ->
+  -- | 'elementType'
+  LayoutElementType ->
+  -- | 'columnSpan'
+  Prelude.Natural ->
+  -- | 'rowSpan'
+  Prelude.Natural ->
+  GridLayoutElement
+newGridLayoutElement
+  pElementId_
+  pElementType_
+  pColumnSpan_
+  pRowSpan_ =
+    GridLayoutElement'
+      { columnIndex = Prelude.Nothing,
+        rowIndex = Prelude.Nothing,
+        elementId = pElementId_,
+        elementType = pElementType_,
+        columnSpan = pColumnSpan_,
+        rowSpan = pRowSpan_
+      }
+
+-- | The column index for the upper left corner of an element.
+gridLayoutElement_columnIndex :: Lens.Lens' GridLayoutElement (Prelude.Maybe Prelude.Natural)
+gridLayoutElement_columnIndex = Lens.lens (\GridLayoutElement' {columnIndex} -> columnIndex) (\s@GridLayoutElement' {} a -> s {columnIndex = a} :: GridLayoutElement)
+
+-- | The row index for the upper left corner of an element.
+gridLayoutElement_rowIndex :: Lens.Lens' GridLayoutElement (Prelude.Maybe Prelude.Natural)
+gridLayoutElement_rowIndex = Lens.lens (\GridLayoutElement' {rowIndex} -> rowIndex) (\s@GridLayoutElement' {} a -> s {rowIndex = a} :: GridLayoutElement)
+
+-- | A unique identifier for an element within a grid layout.
+gridLayoutElement_elementId :: Lens.Lens' GridLayoutElement Prelude.Text
+gridLayoutElement_elementId = Lens.lens (\GridLayoutElement' {elementId} -> elementId) (\s@GridLayoutElement' {} a -> s {elementId = a} :: GridLayoutElement)
+
+-- | The type of element.
+gridLayoutElement_elementType :: Lens.Lens' GridLayoutElement LayoutElementType
+gridLayoutElement_elementType = Lens.lens (\GridLayoutElement' {elementType} -> elementType) (\s@GridLayoutElement' {} a -> s {elementType = a} :: GridLayoutElement)
+
+-- | The width of a grid element expressed as a number of grid columns.
+gridLayoutElement_columnSpan :: Lens.Lens' GridLayoutElement Prelude.Natural
+gridLayoutElement_columnSpan = Lens.lens (\GridLayoutElement' {columnSpan} -> columnSpan) (\s@GridLayoutElement' {} a -> s {columnSpan = a} :: GridLayoutElement)
+
+-- | The height of a grid element expressed as a number of grid rows.
+gridLayoutElement_rowSpan :: Lens.Lens' GridLayoutElement Prelude.Natural
+gridLayoutElement_rowSpan = Lens.lens (\GridLayoutElement' {rowSpan} -> rowSpan) (\s@GridLayoutElement' {} a -> s {rowSpan = a} :: GridLayoutElement)
+
+instance Data.FromJSON GridLayoutElement where
+  parseJSON =
+    Data.withObject
+      "GridLayoutElement"
+      ( \x ->
+          GridLayoutElement'
+            Prelude.<$> (x Data..:? "ColumnIndex")
+            Prelude.<*> (x Data..:? "RowIndex")
+            Prelude.<*> (x Data..: "ElementId")
+            Prelude.<*> (x Data..: "ElementType")
+            Prelude.<*> (x Data..: "ColumnSpan")
+            Prelude.<*> (x Data..: "RowSpan")
+      )
+
+instance Prelude.Hashable GridLayoutElement where
+  hashWithSalt _salt GridLayoutElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnIndex
+      `Prelude.hashWithSalt` rowIndex
+      `Prelude.hashWithSalt` elementId
+      `Prelude.hashWithSalt` elementType
+      `Prelude.hashWithSalt` columnSpan
+      `Prelude.hashWithSalt` rowSpan
+
+instance Prelude.NFData GridLayoutElement where
+  rnf GridLayoutElement' {..} =
+    Prelude.rnf columnIndex
+      `Prelude.seq` Prelude.rnf rowIndex
+      `Prelude.seq` Prelude.rnf elementId
+      `Prelude.seq` Prelude.rnf elementType
+      `Prelude.seq` Prelude.rnf columnSpan
+      `Prelude.seq` Prelude.rnf rowSpan
+
+instance Data.ToJSON GridLayoutElement where
+  toJSON GridLayoutElement' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnIndex" Data..=) Prelude.<$> columnIndex,
+            ("RowIndex" Data..=) Prelude.<$> rowIndex,
+            Prelude.Just ("ElementId" Data..= elementId),
+            Prelude.Just ("ElementType" Data..= elementType),
+            Prelude.Just ("ColumnSpan" Data..= columnSpan),
+            Prelude.Just ("RowSpan" Data..= rowSpan)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GridLayoutScreenCanvasSizeOptions.hs b/gen/Amazonka/QuickSight/Types/GridLayoutScreenCanvasSizeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GridLayoutScreenCanvasSizeOptions.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GridLayoutScreenCanvasSizeOptions
+-- 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.QuickSight.Types.GridLayoutScreenCanvasSizeOptions 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.QuickSight.Types.ResizeOption
+
+-- | The options that determine the sizing of the canvas used in a grid
+-- layout.
+--
+-- /See:/ 'newGridLayoutScreenCanvasSizeOptions' smart constructor.
+data GridLayoutScreenCanvasSizeOptions = GridLayoutScreenCanvasSizeOptions'
+  { -- | The width that the view port will be optimized for when the layout
+    -- renders.
+    optimizedViewPortWidth :: Prelude.Maybe Prelude.Text,
+    -- | This value determines the layout behavior when the viewport is resized.
+    --
+    -- -   @FIXED@: A fixed width will be used when optimizing the layout. In
+    --     the Amazon QuickSight console, this option is called @Classic@.
+    --
+    -- -   @RESPONSIVE@: The width of the canvas will be responsive and
+    --     optimized to the view port. In the Amazon QuickSight console, this
+    --     option is called @Tiled@.
+    resizeOption :: ResizeOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GridLayoutScreenCanvasSizeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'optimizedViewPortWidth', 'gridLayoutScreenCanvasSizeOptions_optimizedViewPortWidth' - The width that the view port will be optimized for when the layout
+-- renders.
+--
+-- 'resizeOption', 'gridLayoutScreenCanvasSizeOptions_resizeOption' - This value determines the layout behavior when the viewport is resized.
+--
+-- -   @FIXED@: A fixed width will be used when optimizing the layout. In
+--     the Amazon QuickSight console, this option is called @Classic@.
+--
+-- -   @RESPONSIVE@: The width of the canvas will be responsive and
+--     optimized to the view port. In the Amazon QuickSight console, this
+--     option is called @Tiled@.
+newGridLayoutScreenCanvasSizeOptions ::
+  -- | 'resizeOption'
+  ResizeOption ->
+  GridLayoutScreenCanvasSizeOptions
+newGridLayoutScreenCanvasSizeOptions pResizeOption_ =
+  GridLayoutScreenCanvasSizeOptions'
+    { optimizedViewPortWidth =
+        Prelude.Nothing,
+      resizeOption = pResizeOption_
+    }
+
+-- | The width that the view port will be optimized for when the layout
+-- renders.
+gridLayoutScreenCanvasSizeOptions_optimizedViewPortWidth :: Lens.Lens' GridLayoutScreenCanvasSizeOptions (Prelude.Maybe Prelude.Text)
+gridLayoutScreenCanvasSizeOptions_optimizedViewPortWidth = Lens.lens (\GridLayoutScreenCanvasSizeOptions' {optimizedViewPortWidth} -> optimizedViewPortWidth) (\s@GridLayoutScreenCanvasSizeOptions' {} a -> s {optimizedViewPortWidth = a} :: GridLayoutScreenCanvasSizeOptions)
+
+-- | This value determines the layout behavior when the viewport is resized.
+--
+-- -   @FIXED@: A fixed width will be used when optimizing the layout. In
+--     the Amazon QuickSight console, this option is called @Classic@.
+--
+-- -   @RESPONSIVE@: The width of the canvas will be responsive and
+--     optimized to the view port. In the Amazon QuickSight console, this
+--     option is called @Tiled@.
+gridLayoutScreenCanvasSizeOptions_resizeOption :: Lens.Lens' GridLayoutScreenCanvasSizeOptions ResizeOption
+gridLayoutScreenCanvasSizeOptions_resizeOption = Lens.lens (\GridLayoutScreenCanvasSizeOptions' {resizeOption} -> resizeOption) (\s@GridLayoutScreenCanvasSizeOptions' {} a -> s {resizeOption = a} :: GridLayoutScreenCanvasSizeOptions)
+
+instance
+  Data.FromJSON
+    GridLayoutScreenCanvasSizeOptions
+  where
+  parseJSON =
+    Data.withObject
+      "GridLayoutScreenCanvasSizeOptions"
+      ( \x ->
+          GridLayoutScreenCanvasSizeOptions'
+            Prelude.<$> (x Data..:? "OptimizedViewPortWidth")
+            Prelude.<*> (x Data..: "ResizeOption")
+      )
+
+instance
+  Prelude.Hashable
+    GridLayoutScreenCanvasSizeOptions
+  where
+  hashWithSalt
+    _salt
+    GridLayoutScreenCanvasSizeOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` optimizedViewPortWidth
+        `Prelude.hashWithSalt` resizeOption
+
+instance
+  Prelude.NFData
+    GridLayoutScreenCanvasSizeOptions
+  where
+  rnf GridLayoutScreenCanvasSizeOptions' {..} =
+    Prelude.rnf optimizedViewPortWidth
+      `Prelude.seq` Prelude.rnf resizeOption
+
+instance
+  Data.ToJSON
+    GridLayoutScreenCanvasSizeOptions
+  where
+  toJSON GridLayoutScreenCanvasSizeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OptimizedViewPortWidth" Data..=)
+              Prelude.<$> optimizedViewPortWidth,
+            Prelude.Just ("ResizeOption" Data..= resizeOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Group.hs b/gen/Amazonka/QuickSight/Types/Group.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Group.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.Group
+-- 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.QuickSight.Types.Group 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 /group/ in Amazon QuickSight consists of a set of users. You can use
+-- groups to make it easier to manage access and security.
+--
+-- /See:/ 'newGroup' smart constructor.
+data Group = Group'
+  { -- | The Amazon Resource Name (ARN) for the group.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The group description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the group.
+    groupName :: Prelude.Maybe Prelude.Text,
+    -- | The principal ID of the group.
+    principalId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Group' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'group_arn' - The Amazon Resource Name (ARN) for the group.
+--
+-- 'description', 'group_description' - The group description.
+--
+-- 'groupName', 'group_groupName' - The name of the group.
+--
+-- 'principalId', 'group_principalId' - The principal ID of the group.
+newGroup ::
+  Group
+newGroup =
+  Group'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      groupName = Prelude.Nothing,
+      principalId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for the group.
+group_arn :: Lens.Lens' Group (Prelude.Maybe Prelude.Text)
+group_arn = Lens.lens (\Group' {arn} -> arn) (\s@Group' {} a -> s {arn = a} :: Group)
+
+-- | The group description.
+group_description :: Lens.Lens' Group (Prelude.Maybe Prelude.Text)
+group_description = Lens.lens (\Group' {description} -> description) (\s@Group' {} a -> s {description = a} :: Group)
+
+-- | The name of the group.
+group_groupName :: Lens.Lens' Group (Prelude.Maybe Prelude.Text)
+group_groupName = Lens.lens (\Group' {groupName} -> groupName) (\s@Group' {} a -> s {groupName = a} :: Group)
+
+-- | The principal ID of the group.
+group_principalId :: Lens.Lens' Group (Prelude.Maybe Prelude.Text)
+group_principalId = Lens.lens (\Group' {principalId} -> principalId) (\s@Group' {} a -> s {principalId = a} :: Group)
+
+instance Data.FromJSON Group where
+  parseJSON =
+    Data.withObject
+      "Group"
+      ( \x ->
+          Group'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "GroupName")
+            Prelude.<*> (x Data..:? "PrincipalId")
+      )
+
+instance Prelude.Hashable Group where
+  hashWithSalt _salt Group' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` principalId
+
+instance Prelude.NFData Group where
+  rnf Group' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf principalId
diff --git a/gen/Amazonka/QuickSight/Types/GroupFilterAttribute.hs b/gen/Amazonka/QuickSight/Types/GroupFilterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GroupFilterAttribute.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.QuickSight.Types.GroupFilterAttribute
+-- 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.QuickSight.Types.GroupFilterAttribute
+  ( GroupFilterAttribute
+      ( ..,
+        GroupFilterAttribute_GROUP_NAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GroupFilterAttribute = GroupFilterAttribute'
+  { fromGroupFilterAttribute ::
+      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 GroupFilterAttribute_GROUP_NAME :: GroupFilterAttribute
+pattern GroupFilterAttribute_GROUP_NAME = GroupFilterAttribute' "GROUP_NAME"
+
+{-# COMPLETE
+  GroupFilterAttribute_GROUP_NAME,
+  GroupFilterAttribute'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/GroupFilterOperator.hs b/gen/Amazonka/QuickSight/Types/GroupFilterOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GroupFilterOperator.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.QuickSight.Types.GroupFilterOperator
+-- 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.QuickSight.Types.GroupFilterOperator
+  ( GroupFilterOperator
+      ( ..,
+        GroupFilterOperator_StartsWith
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GroupFilterOperator = GroupFilterOperator'
+  { fromGroupFilterOperator ::
+      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 GroupFilterOperator_StartsWith :: GroupFilterOperator
+pattern GroupFilterOperator_StartsWith = GroupFilterOperator' "StartsWith"
+
+{-# COMPLETE
+  GroupFilterOperator_StartsWith,
+  GroupFilterOperator'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/GroupMember.hs b/gen/Amazonka/QuickSight/Types/GroupMember.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GroupMember.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GroupMember
+-- 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.QuickSight.Types.GroupMember 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 member of an Amazon QuickSight group. Currently, group members must be
+-- users. Groups can\'t be members of another group. .
+--
+-- /See:/ 'newGroupMember' smart constructor.
+data GroupMember = GroupMember'
+  { -- | The Amazon Resource Name (ARN) for the group member (user).
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the group member (user).
+    memberName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GroupMember' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'groupMember_arn' - The Amazon Resource Name (ARN) for the group member (user).
+--
+-- 'memberName', 'groupMember_memberName' - The name of the group member (user).
+newGroupMember ::
+  GroupMember
+newGroupMember =
+  GroupMember'
+    { arn = Prelude.Nothing,
+      memberName = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for the group member (user).
+groupMember_arn :: Lens.Lens' GroupMember (Prelude.Maybe Prelude.Text)
+groupMember_arn = Lens.lens (\GroupMember' {arn} -> arn) (\s@GroupMember' {} a -> s {arn = a} :: GroupMember)
+
+-- | The name of the group member (user).
+groupMember_memberName :: Lens.Lens' GroupMember (Prelude.Maybe Prelude.Text)
+groupMember_memberName = Lens.lens (\GroupMember' {memberName} -> memberName) (\s@GroupMember' {} a -> s {memberName = a} :: GroupMember)
+
+instance Data.FromJSON GroupMember where
+  parseJSON =
+    Data.withObject
+      "GroupMember"
+      ( \x ->
+          GroupMember'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "MemberName")
+      )
+
+instance Prelude.Hashable GroupMember where
+  hashWithSalt _salt GroupMember' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` memberName
+
+instance Prelude.NFData GroupMember where
+  rnf GroupMember' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf memberName
diff --git a/gen/Amazonka/QuickSight/Types/GroupSearchFilter.hs b/gen/Amazonka/QuickSight/Types/GroupSearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GroupSearchFilter.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GroupSearchFilter
+-- 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.QuickSight.Types.GroupSearchFilter 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.QuickSight.Types.GroupFilterAttribute
+import Amazonka.QuickSight.Types.GroupFilterOperator
+
+-- | A @GroupSearchFilter@ object that you want to apply to your search.
+--
+-- /See:/ 'newGroupSearchFilter' smart constructor.
+data GroupSearchFilter = GroupSearchFilter'
+  { -- | The comparison operator that you want to use as a filter, for example
+    -- @\"Operator\": \"StartsWith\"@. Currently, the only supported operator
+    -- is @StartsWith@.
+    operator :: GroupFilterOperator,
+    -- | The name of the value that you want to use as a filter, for example
+    -- @\"Name\": \"GROUP_NAME\"@. Currently, the only supported name is
+    -- @GROUP_NAME@.
+    name :: GroupFilterAttribute,
+    -- | The value of the named item, in this case @GROUP_NAME@, that you want to
+    -- use as a filter.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GroupSearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'operator', 'groupSearchFilter_operator' - The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StartsWith\"@. Currently, the only supported operator
+-- is @StartsWith@.
+--
+-- 'name', 'groupSearchFilter_name' - The name of the value that you want to use as a filter, for example
+-- @\"Name\": \"GROUP_NAME\"@. Currently, the only supported name is
+-- @GROUP_NAME@.
+--
+-- 'value', 'groupSearchFilter_value' - The value of the named item, in this case @GROUP_NAME@, that you want to
+-- use as a filter.
+newGroupSearchFilter ::
+  -- | 'operator'
+  GroupFilterOperator ->
+  -- | 'name'
+  GroupFilterAttribute ->
+  -- | 'value'
+  Prelude.Text ->
+  GroupSearchFilter
+newGroupSearchFilter pOperator_ pName_ pValue_ =
+  GroupSearchFilter'
+    { operator = pOperator_,
+      name = pName_,
+      value = pValue_
+    }
+
+-- | The comparison operator that you want to use as a filter, for example
+-- @\"Operator\": \"StartsWith\"@. Currently, the only supported operator
+-- is @StartsWith@.
+groupSearchFilter_operator :: Lens.Lens' GroupSearchFilter GroupFilterOperator
+groupSearchFilter_operator = Lens.lens (\GroupSearchFilter' {operator} -> operator) (\s@GroupSearchFilter' {} a -> s {operator = a} :: GroupSearchFilter)
+
+-- | The name of the value that you want to use as a filter, for example
+-- @\"Name\": \"GROUP_NAME\"@. Currently, the only supported name is
+-- @GROUP_NAME@.
+groupSearchFilter_name :: Lens.Lens' GroupSearchFilter GroupFilterAttribute
+groupSearchFilter_name = Lens.lens (\GroupSearchFilter' {name} -> name) (\s@GroupSearchFilter' {} a -> s {name = a} :: GroupSearchFilter)
+
+-- | The value of the named item, in this case @GROUP_NAME@, that you want to
+-- use as a filter.
+groupSearchFilter_value :: Lens.Lens' GroupSearchFilter Prelude.Text
+groupSearchFilter_value = Lens.lens (\GroupSearchFilter' {value} -> value) (\s@GroupSearchFilter' {} a -> s {value = a} :: GroupSearchFilter)
+
+instance Prelude.Hashable GroupSearchFilter where
+  hashWithSalt _salt GroupSearchFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData GroupSearchFilter where
+  rnf GroupSearchFilter' {..} =
+    Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON GroupSearchFilter where
+  toJSON GroupSearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Operator" Data..= operator),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GrowthRateComputation.hs b/gen/Amazonka/QuickSight/Types/GrowthRateComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GrowthRateComputation.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.GrowthRateComputation
+-- 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.QuickSight.Types.GrowthRateComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The growth rate computation configuration.
+--
+-- /See:/ 'newGrowthRateComputation' smart constructor.
+data GrowthRateComputation = GrowthRateComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The period size setup of a growth rate computation.
+    periodSize :: Prelude.Maybe Prelude.Natural,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GrowthRateComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'growthRateComputation_name' - The name of a computation.
+--
+-- 'periodSize', 'growthRateComputation_periodSize' - The period size setup of a growth rate computation.
+--
+-- 'value', 'growthRateComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'growthRateComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'growthRateComputation_time' - The time field that is used in a computation.
+newGrowthRateComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  GrowthRateComputation
+newGrowthRateComputation pComputationId_ pTime_ =
+  GrowthRateComputation'
+    { name = Prelude.Nothing,
+      periodSize = Prelude.Nothing,
+      value = Prelude.Nothing,
+      computationId = pComputationId_,
+      time = pTime_
+    }
+
+-- | The name of a computation.
+growthRateComputation_name :: Lens.Lens' GrowthRateComputation (Prelude.Maybe Prelude.Text)
+growthRateComputation_name = Lens.lens (\GrowthRateComputation' {name} -> name) (\s@GrowthRateComputation' {} a -> s {name = a} :: GrowthRateComputation)
+
+-- | The period size setup of a growth rate computation.
+growthRateComputation_periodSize :: Lens.Lens' GrowthRateComputation (Prelude.Maybe Prelude.Natural)
+growthRateComputation_periodSize = Lens.lens (\GrowthRateComputation' {periodSize} -> periodSize) (\s@GrowthRateComputation' {} a -> s {periodSize = a} :: GrowthRateComputation)
+
+-- | The value field that is used in a computation.
+growthRateComputation_value :: Lens.Lens' GrowthRateComputation (Prelude.Maybe MeasureField)
+growthRateComputation_value = Lens.lens (\GrowthRateComputation' {value} -> value) (\s@GrowthRateComputation' {} a -> s {value = a} :: GrowthRateComputation)
+
+-- | The ID for a computation.
+growthRateComputation_computationId :: Lens.Lens' GrowthRateComputation Prelude.Text
+growthRateComputation_computationId = Lens.lens (\GrowthRateComputation' {computationId} -> computationId) (\s@GrowthRateComputation' {} a -> s {computationId = a} :: GrowthRateComputation)
+
+-- | The time field that is used in a computation.
+growthRateComputation_time :: Lens.Lens' GrowthRateComputation DimensionField
+growthRateComputation_time = Lens.lens (\GrowthRateComputation' {time} -> time) (\s@GrowthRateComputation' {} a -> s {time = a} :: GrowthRateComputation)
+
+instance Data.FromJSON GrowthRateComputation where
+  parseJSON =
+    Data.withObject
+      "GrowthRateComputation"
+      ( \x ->
+          GrowthRateComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PeriodSize")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+      )
+
+instance Prelude.Hashable GrowthRateComputation where
+  hashWithSalt _salt GrowthRateComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` periodSize
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+
+instance Prelude.NFData GrowthRateComputation where
+  rnf GrowthRateComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf periodSize
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+
+instance Data.ToJSON GrowthRateComputation where
+  toJSON GrowthRateComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("PeriodSize" Data..=) Prelude.<$> periodSize,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/GutterStyle.hs b/gen/Amazonka/QuickSight/Types/GutterStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/GutterStyle.hs
@@ -0,0 +1,74 @@
+{-# 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.QuickSight.Types.GutterStyle
+-- 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.QuickSight.Types.GutterStyle 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 display options for gutter spacing between tiles on a sheet.
+--
+-- /See:/ 'newGutterStyle' smart constructor.
+data GutterStyle = GutterStyle'
+  { -- | This Boolean value controls whether to display a gutter space between
+    -- sheet tiles.
+    show :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GutterStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'show', 'gutterStyle_show' - This Boolean value controls whether to display a gutter space between
+-- sheet tiles.
+newGutterStyle ::
+  GutterStyle
+newGutterStyle = GutterStyle' {show = Prelude.Nothing}
+
+-- | This Boolean value controls whether to display a gutter space between
+-- sheet tiles.
+gutterStyle_show :: Lens.Lens' GutterStyle (Prelude.Maybe Prelude.Bool)
+gutterStyle_show = Lens.lens (\GutterStyle' {show} -> show) (\s@GutterStyle' {} a -> s {show = a} :: GutterStyle)
+
+instance Data.FromJSON GutterStyle where
+  parseJSON =
+    Data.withObject
+      "GutterStyle"
+      (\x -> GutterStyle' Prelude.<$> (x Data..:? "Show"))
+
+instance Prelude.Hashable GutterStyle where
+  hashWithSalt _salt GutterStyle' {..} =
+    _salt `Prelude.hashWithSalt` show
+
+instance Prelude.NFData GutterStyle where
+  rnf GutterStyle' {..} = Prelude.rnf show
+
+instance Data.ToJSON GutterStyle where
+  toJSON GutterStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Show" Data..=) Prelude.<$> show]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HeaderFooterSectionConfiguration.hs b/gen/Amazonka/QuickSight/Types/HeaderFooterSectionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HeaderFooterSectionConfiguration.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.HeaderFooterSectionConfiguration
+-- 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.QuickSight.Types.HeaderFooterSectionConfiguration 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.QuickSight.Types.SectionLayoutConfiguration
+import Amazonka.QuickSight.Types.SectionStyle
+
+-- | The configuration of a header or footer section.
+--
+-- /See:/ 'newHeaderFooterSectionConfiguration' smart constructor.
+data HeaderFooterSectionConfiguration = HeaderFooterSectionConfiguration'
+  { -- | The style options of a header or footer section.
+    style :: Prelude.Maybe SectionStyle,
+    -- | The unique identifier of the header or footer section.
+    sectionId :: Prelude.Text,
+    -- | The layout configuration of the header or footer section.
+    layout :: SectionLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HeaderFooterSectionConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'style', 'headerFooterSectionConfiguration_style' - The style options of a header or footer section.
+--
+-- 'sectionId', 'headerFooterSectionConfiguration_sectionId' - The unique identifier of the header or footer section.
+--
+-- 'layout', 'headerFooterSectionConfiguration_layout' - The layout configuration of the header or footer section.
+newHeaderFooterSectionConfiguration ::
+  -- | 'sectionId'
+  Prelude.Text ->
+  -- | 'layout'
+  SectionLayoutConfiguration ->
+  HeaderFooterSectionConfiguration
+newHeaderFooterSectionConfiguration
+  pSectionId_
+  pLayout_ =
+    HeaderFooterSectionConfiguration'
+      { style =
+          Prelude.Nothing,
+        sectionId = pSectionId_,
+        layout = pLayout_
+      }
+
+-- | The style options of a header or footer section.
+headerFooterSectionConfiguration_style :: Lens.Lens' HeaderFooterSectionConfiguration (Prelude.Maybe SectionStyle)
+headerFooterSectionConfiguration_style = Lens.lens (\HeaderFooterSectionConfiguration' {style} -> style) (\s@HeaderFooterSectionConfiguration' {} a -> s {style = a} :: HeaderFooterSectionConfiguration)
+
+-- | The unique identifier of the header or footer section.
+headerFooterSectionConfiguration_sectionId :: Lens.Lens' HeaderFooterSectionConfiguration Prelude.Text
+headerFooterSectionConfiguration_sectionId = Lens.lens (\HeaderFooterSectionConfiguration' {sectionId} -> sectionId) (\s@HeaderFooterSectionConfiguration' {} a -> s {sectionId = a} :: HeaderFooterSectionConfiguration)
+
+-- | The layout configuration of the header or footer section.
+headerFooterSectionConfiguration_layout :: Lens.Lens' HeaderFooterSectionConfiguration SectionLayoutConfiguration
+headerFooterSectionConfiguration_layout = Lens.lens (\HeaderFooterSectionConfiguration' {layout} -> layout) (\s@HeaderFooterSectionConfiguration' {} a -> s {layout = a} :: HeaderFooterSectionConfiguration)
+
+instance
+  Data.FromJSON
+    HeaderFooterSectionConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "HeaderFooterSectionConfiguration"
+      ( \x ->
+          HeaderFooterSectionConfiguration'
+            Prelude.<$> (x Data..:? "Style")
+            Prelude.<*> (x Data..: "SectionId")
+            Prelude.<*> (x Data..: "Layout")
+      )
+
+instance
+  Prelude.Hashable
+    HeaderFooterSectionConfiguration
+  where
+  hashWithSalt
+    _salt
+    HeaderFooterSectionConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` style
+        `Prelude.hashWithSalt` sectionId
+        `Prelude.hashWithSalt` layout
+
+instance
+  Prelude.NFData
+    HeaderFooterSectionConfiguration
+  where
+  rnf HeaderFooterSectionConfiguration' {..} =
+    Prelude.rnf style
+      `Prelude.seq` Prelude.rnf sectionId
+      `Prelude.seq` Prelude.rnf layout
+
+instance Data.ToJSON HeaderFooterSectionConfiguration where
+  toJSON HeaderFooterSectionConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Style" Data..=) Prelude.<$> style,
+            Prelude.Just ("SectionId" Data..= sectionId),
+            Prelude.Just ("Layout" Data..= layout)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HeatMapAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/HeatMapAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HeatMapAggregatedFieldWells.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.HeatMapAggregatedFieldWells
+-- 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.QuickSight.Types.HeatMapAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field wells of a heat map.
+--
+-- /See:/ 'newHeatMapAggregatedFieldWells' smart constructor.
+data HeatMapAggregatedFieldWells = HeatMapAggregatedFieldWells'
+  { -- | The columns field well of a heat map.
+    columns :: Prelude.Maybe [DimensionField],
+    -- | The rows field well of a heat map.
+    rows :: Prelude.Maybe [DimensionField],
+    -- | The values field well of a heat map.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HeatMapAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columns', 'heatMapAggregatedFieldWells_columns' - The columns field well of a heat map.
+--
+-- 'rows', 'heatMapAggregatedFieldWells_rows' - The rows field well of a heat map.
+--
+-- 'values', 'heatMapAggregatedFieldWells_values' - The values field well of a heat map.
+newHeatMapAggregatedFieldWells ::
+  HeatMapAggregatedFieldWells
+newHeatMapAggregatedFieldWells =
+  HeatMapAggregatedFieldWells'
+    { columns =
+        Prelude.Nothing,
+      rows = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The columns field well of a heat map.
+heatMapAggregatedFieldWells_columns :: Lens.Lens' HeatMapAggregatedFieldWells (Prelude.Maybe [DimensionField])
+heatMapAggregatedFieldWells_columns = Lens.lens (\HeatMapAggregatedFieldWells' {columns} -> columns) (\s@HeatMapAggregatedFieldWells' {} a -> s {columns = a} :: HeatMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The rows field well of a heat map.
+heatMapAggregatedFieldWells_rows :: Lens.Lens' HeatMapAggregatedFieldWells (Prelude.Maybe [DimensionField])
+heatMapAggregatedFieldWells_rows = Lens.lens (\HeatMapAggregatedFieldWells' {rows} -> rows) (\s@HeatMapAggregatedFieldWells' {} a -> s {rows = a} :: HeatMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The values field well of a heat map.
+heatMapAggregatedFieldWells_values :: Lens.Lens' HeatMapAggregatedFieldWells (Prelude.Maybe [MeasureField])
+heatMapAggregatedFieldWells_values = Lens.lens (\HeatMapAggregatedFieldWells' {values} -> values) (\s@HeatMapAggregatedFieldWells' {} a -> s {values = a} :: HeatMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON HeatMapAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "HeatMapAggregatedFieldWells"
+      ( \x ->
+          HeatMapAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Columns" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Rows" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable HeatMapAggregatedFieldWells where
+  hashWithSalt _salt HeatMapAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` columns
+      `Prelude.hashWithSalt` rows
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData HeatMapAggregatedFieldWells where
+  rnf HeatMapAggregatedFieldWells' {..} =
+    Prelude.rnf columns
+      `Prelude.seq` Prelude.rnf rows
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON HeatMapAggregatedFieldWells where
+  toJSON HeatMapAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Columns" Data..=) Prelude.<$> columns,
+            ("Rows" Data..=) Prelude.<$> rows,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HeatMapConfiguration.hs b/gen/Amazonka/QuickSight/Types/HeatMapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HeatMapConfiguration.hs
@@ -0,0 +1,181 @@
+{-# 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.QuickSight.Types.HeatMapConfiguration
+-- 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.QuickSight.Types.HeatMapConfiguration 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.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ColorScale
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.HeatMapFieldWells
+import Amazonka.QuickSight.Types.HeatMapSortConfiguration
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+
+-- | The configuration of a heat map.
+--
+-- /See:/ 'newHeatMapConfiguration' smart constructor.
+data HeatMapConfiguration = HeatMapConfiguration'
+  { -- | The color options (gradient color, point of divergence) in a heat map.
+    colorScale :: Prelude.Maybe ColorScale,
+    -- | The label options of the column that is displayed in a heat map.
+    columnLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The options that determine if visual data labels are displayed.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe HeatMapFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The label options of the row that is displayed in a @heat map@.
+    rowLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The sort configuration of a heat map.
+    sortConfiguration :: Prelude.Maybe HeatMapSortConfiguration,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HeatMapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'colorScale', 'heatMapConfiguration_colorScale' - The color options (gradient color, point of divergence) in a heat map.
+--
+-- 'columnLabelOptions', 'heatMapConfiguration_columnLabelOptions' - The label options of the column that is displayed in a heat map.
+--
+-- 'dataLabels', 'heatMapConfiguration_dataLabels' - The options that determine if visual data labels are displayed.
+--
+-- 'fieldWells', 'heatMapConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'heatMapConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'rowLabelOptions', 'heatMapConfiguration_rowLabelOptions' - The label options of the row that is displayed in a @heat map@.
+--
+-- 'sortConfiguration', 'heatMapConfiguration_sortConfiguration' - The sort configuration of a heat map.
+--
+-- 'tooltip', 'heatMapConfiguration_tooltip' - The tooltip display setup of the visual.
+newHeatMapConfiguration ::
+  HeatMapConfiguration
+newHeatMapConfiguration =
+  HeatMapConfiguration'
+    { colorScale = Prelude.Nothing,
+      columnLabelOptions = Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      rowLabelOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing
+    }
+
+-- | The color options (gradient color, point of divergence) in a heat map.
+heatMapConfiguration_colorScale :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe ColorScale)
+heatMapConfiguration_colorScale = Lens.lens (\HeatMapConfiguration' {colorScale} -> colorScale) (\s@HeatMapConfiguration' {} a -> s {colorScale = a} :: HeatMapConfiguration)
+
+-- | The label options of the column that is displayed in a heat map.
+heatMapConfiguration_columnLabelOptions :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+heatMapConfiguration_columnLabelOptions = Lens.lens (\HeatMapConfiguration' {columnLabelOptions} -> columnLabelOptions) (\s@HeatMapConfiguration' {} a -> s {columnLabelOptions = a} :: HeatMapConfiguration)
+
+-- | The options that determine if visual data labels are displayed.
+heatMapConfiguration_dataLabels :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe DataLabelOptions)
+heatMapConfiguration_dataLabels = Lens.lens (\HeatMapConfiguration' {dataLabels} -> dataLabels) (\s@HeatMapConfiguration' {} a -> s {dataLabels = a} :: HeatMapConfiguration)
+
+-- | The field wells of the visual.
+heatMapConfiguration_fieldWells :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe HeatMapFieldWells)
+heatMapConfiguration_fieldWells = Lens.lens (\HeatMapConfiguration' {fieldWells} -> fieldWells) (\s@HeatMapConfiguration' {} a -> s {fieldWells = a} :: HeatMapConfiguration)
+
+-- | The legend display setup of the visual.
+heatMapConfiguration_legend :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe LegendOptions)
+heatMapConfiguration_legend = Lens.lens (\HeatMapConfiguration' {legend} -> legend) (\s@HeatMapConfiguration' {} a -> s {legend = a} :: HeatMapConfiguration)
+
+-- | The label options of the row that is displayed in a @heat map@.
+heatMapConfiguration_rowLabelOptions :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+heatMapConfiguration_rowLabelOptions = Lens.lens (\HeatMapConfiguration' {rowLabelOptions} -> rowLabelOptions) (\s@HeatMapConfiguration' {} a -> s {rowLabelOptions = a} :: HeatMapConfiguration)
+
+-- | The sort configuration of a heat map.
+heatMapConfiguration_sortConfiguration :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe HeatMapSortConfiguration)
+heatMapConfiguration_sortConfiguration = Lens.lens (\HeatMapConfiguration' {sortConfiguration} -> sortConfiguration) (\s@HeatMapConfiguration' {} a -> s {sortConfiguration = a} :: HeatMapConfiguration)
+
+-- | The tooltip display setup of the visual.
+heatMapConfiguration_tooltip :: Lens.Lens' HeatMapConfiguration (Prelude.Maybe TooltipOptions)
+heatMapConfiguration_tooltip = Lens.lens (\HeatMapConfiguration' {tooltip} -> tooltip) (\s@HeatMapConfiguration' {} a -> s {tooltip = a} :: HeatMapConfiguration)
+
+instance Data.FromJSON HeatMapConfiguration where
+  parseJSON =
+    Data.withObject
+      "HeatMapConfiguration"
+      ( \x ->
+          HeatMapConfiguration'
+            Prelude.<$> (x Data..:? "ColorScale")
+            Prelude.<*> (x Data..:? "ColumnLabelOptions")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "RowLabelOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+      )
+
+instance Prelude.Hashable HeatMapConfiguration where
+  hashWithSalt _salt HeatMapConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` colorScale
+      `Prelude.hashWithSalt` columnLabelOptions
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` rowLabelOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+
+instance Prelude.NFData HeatMapConfiguration where
+  rnf HeatMapConfiguration' {..} =
+    Prelude.rnf colorScale
+      `Prelude.seq` Prelude.rnf columnLabelOptions
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf rowLabelOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+
+instance Data.ToJSON HeatMapConfiguration where
+  toJSON HeatMapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColorScale" Data..=) Prelude.<$> colorScale,
+            ("ColumnLabelOptions" Data..=)
+              Prelude.<$> columnLabelOptions,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("RowLabelOptions" Data..=)
+              Prelude.<$> rowLabelOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HeatMapFieldWells.hs b/gen/Amazonka/QuickSight/Types/HeatMapFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HeatMapFieldWells.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.QuickSight.Types.HeatMapFieldWells
+-- 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.QuickSight.Types.HeatMapFieldWells 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.QuickSight.Types.HeatMapAggregatedFieldWells
+
+-- | The field well configuration of a heat map.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newHeatMapFieldWells' smart constructor.
+data HeatMapFieldWells = HeatMapFieldWells'
+  { -- | The aggregated field wells of a heat map.
+    heatMapAggregatedFieldWells :: Prelude.Maybe HeatMapAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HeatMapFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'heatMapAggregatedFieldWells', 'heatMapFieldWells_heatMapAggregatedFieldWells' - The aggregated field wells of a heat map.
+newHeatMapFieldWells ::
+  HeatMapFieldWells
+newHeatMapFieldWells =
+  HeatMapFieldWells'
+    { heatMapAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a heat map.
+heatMapFieldWells_heatMapAggregatedFieldWells :: Lens.Lens' HeatMapFieldWells (Prelude.Maybe HeatMapAggregatedFieldWells)
+heatMapFieldWells_heatMapAggregatedFieldWells = Lens.lens (\HeatMapFieldWells' {heatMapAggregatedFieldWells} -> heatMapAggregatedFieldWells) (\s@HeatMapFieldWells' {} a -> s {heatMapAggregatedFieldWells = a} :: HeatMapFieldWells)
+
+instance Data.FromJSON HeatMapFieldWells where
+  parseJSON =
+    Data.withObject
+      "HeatMapFieldWells"
+      ( \x ->
+          HeatMapFieldWells'
+            Prelude.<$> (x Data..:? "HeatMapAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable HeatMapFieldWells where
+  hashWithSalt _salt HeatMapFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` heatMapAggregatedFieldWells
+
+instance Prelude.NFData HeatMapFieldWells where
+  rnf HeatMapFieldWells' {..} =
+    Prelude.rnf heatMapAggregatedFieldWells
+
+instance Data.ToJSON HeatMapFieldWells where
+  toJSON HeatMapFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HeatMapAggregatedFieldWells" Data..=)
+              Prelude.<$> heatMapAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HeatMapSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/HeatMapSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HeatMapSortConfiguration.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.HeatMapSortConfiguration
+-- 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.QuickSight.Types.HeatMapSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a heat map.
+--
+-- /See:/ 'newHeatMapSortConfiguration' smart constructor.
+data HeatMapSortConfiguration = HeatMapSortConfiguration'
+  { -- | The limit on the number of columns that are displayed in a heat map.
+    heatMapColumnItemsLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The column sort configuration for heat map for columns that aren\'t a
+    -- part of a field well.
+    heatMapColumnSort :: Prelude.Maybe [FieldSortOptions],
+    -- | The limit on the number of rows that are displayed in a heat map.
+    heatMapRowItemsLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The field sort configuration of the rows fields.
+    heatMapRowSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HeatMapSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'heatMapColumnItemsLimitConfiguration', 'heatMapSortConfiguration_heatMapColumnItemsLimitConfiguration' - The limit on the number of columns that are displayed in a heat map.
+--
+-- 'heatMapColumnSort', 'heatMapSortConfiguration_heatMapColumnSort' - The column sort configuration for heat map for columns that aren\'t a
+-- part of a field well.
+--
+-- 'heatMapRowItemsLimitConfiguration', 'heatMapSortConfiguration_heatMapRowItemsLimitConfiguration' - The limit on the number of rows that are displayed in a heat map.
+--
+-- 'heatMapRowSort', 'heatMapSortConfiguration_heatMapRowSort' - The field sort configuration of the rows fields.
+newHeatMapSortConfiguration ::
+  HeatMapSortConfiguration
+newHeatMapSortConfiguration =
+  HeatMapSortConfiguration'
+    { heatMapColumnItemsLimitConfiguration =
+        Prelude.Nothing,
+      heatMapColumnSort = Prelude.Nothing,
+      heatMapRowItemsLimitConfiguration =
+        Prelude.Nothing,
+      heatMapRowSort = Prelude.Nothing
+    }
+
+-- | The limit on the number of columns that are displayed in a heat map.
+heatMapSortConfiguration_heatMapColumnItemsLimitConfiguration :: Lens.Lens' HeatMapSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+heatMapSortConfiguration_heatMapColumnItemsLimitConfiguration = Lens.lens (\HeatMapSortConfiguration' {heatMapColumnItemsLimitConfiguration} -> heatMapColumnItemsLimitConfiguration) (\s@HeatMapSortConfiguration' {} a -> s {heatMapColumnItemsLimitConfiguration = a} :: HeatMapSortConfiguration)
+
+-- | The column sort configuration for heat map for columns that aren\'t a
+-- part of a field well.
+heatMapSortConfiguration_heatMapColumnSort :: Lens.Lens' HeatMapSortConfiguration (Prelude.Maybe [FieldSortOptions])
+heatMapSortConfiguration_heatMapColumnSort = Lens.lens (\HeatMapSortConfiguration' {heatMapColumnSort} -> heatMapColumnSort) (\s@HeatMapSortConfiguration' {} a -> s {heatMapColumnSort = a} :: HeatMapSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The limit on the number of rows that are displayed in a heat map.
+heatMapSortConfiguration_heatMapRowItemsLimitConfiguration :: Lens.Lens' HeatMapSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+heatMapSortConfiguration_heatMapRowItemsLimitConfiguration = Lens.lens (\HeatMapSortConfiguration' {heatMapRowItemsLimitConfiguration} -> heatMapRowItemsLimitConfiguration) (\s@HeatMapSortConfiguration' {} a -> s {heatMapRowItemsLimitConfiguration = a} :: HeatMapSortConfiguration)
+
+-- | The field sort configuration of the rows fields.
+heatMapSortConfiguration_heatMapRowSort :: Lens.Lens' HeatMapSortConfiguration (Prelude.Maybe [FieldSortOptions])
+heatMapSortConfiguration_heatMapRowSort = Lens.lens (\HeatMapSortConfiguration' {heatMapRowSort} -> heatMapRowSort) (\s@HeatMapSortConfiguration' {} a -> s {heatMapRowSort = a} :: HeatMapSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON HeatMapSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "HeatMapSortConfiguration"
+      ( \x ->
+          HeatMapSortConfiguration'
+            Prelude.<$> (x Data..:? "HeatMapColumnItemsLimitConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "HeatMapColumnSort"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "HeatMapRowItemsLimitConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "HeatMapRowSort"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable HeatMapSortConfiguration where
+  hashWithSalt _salt HeatMapSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` heatMapColumnItemsLimitConfiguration
+      `Prelude.hashWithSalt` heatMapColumnSort
+      `Prelude.hashWithSalt` heatMapRowItemsLimitConfiguration
+      `Prelude.hashWithSalt` heatMapRowSort
+
+instance Prelude.NFData HeatMapSortConfiguration where
+  rnf HeatMapSortConfiguration' {..} =
+    Prelude.rnf heatMapColumnItemsLimitConfiguration
+      `Prelude.seq` Prelude.rnf heatMapColumnSort
+      `Prelude.seq` Prelude.rnf heatMapRowItemsLimitConfiguration
+      `Prelude.seq` Prelude.rnf heatMapRowSort
+
+instance Data.ToJSON HeatMapSortConfiguration where
+  toJSON HeatMapSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HeatMapColumnItemsLimitConfiguration" Data..=)
+              Prelude.<$> heatMapColumnItemsLimitConfiguration,
+            ("HeatMapColumnSort" Data..=)
+              Prelude.<$> heatMapColumnSort,
+            ("HeatMapRowItemsLimitConfiguration" Data..=)
+              Prelude.<$> heatMapRowItemsLimitConfiguration,
+            ("HeatMapRowSort" Data..=)
+              Prelude.<$> heatMapRowSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HeatMapVisual.hs b/gen/Amazonka/QuickSight/Types/HeatMapVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HeatMapVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.HeatMapVisual
+-- 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.QuickSight.Types.HeatMapVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.HeatMapConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A heat map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/heat-map.html Using heat maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newHeatMapVisual' smart constructor.
+data HeatMapVisual = HeatMapVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a heat map.
+    chartConfiguration :: Prelude.Maybe HeatMapConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HeatMapVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'heatMapVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'heatMapVisual_chartConfiguration' - The configuration of a heat map.
+--
+-- 'columnHierarchies', 'heatMapVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'heatMapVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'heatMapVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'heatMapVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newHeatMapVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  HeatMapVisual
+newHeatMapVisual pVisualId_ =
+  HeatMapVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+heatMapVisual_actions :: Lens.Lens' HeatMapVisual (Prelude.Maybe [VisualCustomAction])
+heatMapVisual_actions = Lens.lens (\HeatMapVisual' {actions} -> actions) (\s@HeatMapVisual' {} a -> s {actions = a} :: HeatMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a heat map.
+heatMapVisual_chartConfiguration :: Lens.Lens' HeatMapVisual (Prelude.Maybe HeatMapConfiguration)
+heatMapVisual_chartConfiguration = Lens.lens (\HeatMapVisual' {chartConfiguration} -> chartConfiguration) (\s@HeatMapVisual' {} a -> s {chartConfiguration = a} :: HeatMapVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+heatMapVisual_columnHierarchies :: Lens.Lens' HeatMapVisual (Prelude.Maybe [ColumnHierarchy])
+heatMapVisual_columnHierarchies = Lens.lens (\HeatMapVisual' {columnHierarchies} -> columnHierarchies) (\s@HeatMapVisual' {} a -> s {columnHierarchies = a} :: HeatMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+heatMapVisual_subtitle :: Lens.Lens' HeatMapVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+heatMapVisual_subtitle = Lens.lens (\HeatMapVisual' {subtitle} -> subtitle) (\s@HeatMapVisual' {} a -> s {subtitle = a} :: HeatMapVisual)
+
+-- | The title that is displayed on the visual.
+heatMapVisual_title :: Lens.Lens' HeatMapVisual (Prelude.Maybe VisualTitleLabelOptions)
+heatMapVisual_title = Lens.lens (\HeatMapVisual' {title} -> title) (\s@HeatMapVisual' {} a -> s {title = a} :: HeatMapVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+heatMapVisual_visualId :: Lens.Lens' HeatMapVisual Prelude.Text
+heatMapVisual_visualId = Lens.lens (\HeatMapVisual' {visualId} -> visualId) (\s@HeatMapVisual' {} a -> s {visualId = a} :: HeatMapVisual)
+
+instance Data.FromJSON HeatMapVisual where
+  parseJSON =
+    Data.withObject
+      "HeatMapVisual"
+      ( \x ->
+          HeatMapVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable HeatMapVisual where
+  hashWithSalt _salt HeatMapVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData HeatMapVisual where
+  rnf HeatMapVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON HeatMapVisual where
+  toJSON HeatMapVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HistogramAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/HistogramAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HistogramAggregatedFieldWells.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.QuickSight.Types.HistogramAggregatedFieldWells
+-- 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.QuickSight.Types.HistogramAggregatedFieldWells 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.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a histogram.
+--
+-- /See:/ 'newHistogramAggregatedFieldWells' smart constructor.
+data HistogramAggregatedFieldWells = HistogramAggregatedFieldWells'
+  { -- | The value field wells of a histogram. Values are aggregated by @COUNT@
+    -- or @DISTINCT_COUNT@.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HistogramAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'values', 'histogramAggregatedFieldWells_values' - The value field wells of a histogram. Values are aggregated by @COUNT@
+-- or @DISTINCT_COUNT@.
+newHistogramAggregatedFieldWells ::
+  HistogramAggregatedFieldWells
+newHistogramAggregatedFieldWells =
+  HistogramAggregatedFieldWells'
+    { values =
+        Prelude.Nothing
+    }
+
+-- | The value field wells of a histogram. Values are aggregated by @COUNT@
+-- or @DISTINCT_COUNT@.
+histogramAggregatedFieldWells_values :: Lens.Lens' HistogramAggregatedFieldWells (Prelude.Maybe [MeasureField])
+histogramAggregatedFieldWells_values = Lens.lens (\HistogramAggregatedFieldWells' {values} -> values) (\s@HistogramAggregatedFieldWells' {} a -> s {values = a} :: HistogramAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON HistogramAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "HistogramAggregatedFieldWells"
+      ( \x ->
+          HistogramAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    HistogramAggregatedFieldWells
+  where
+  hashWithSalt _salt HistogramAggregatedFieldWells' {..} =
+    _salt `Prelude.hashWithSalt` values
+
+instance Prelude.NFData HistogramAggregatedFieldWells where
+  rnf HistogramAggregatedFieldWells' {..} =
+    Prelude.rnf values
+
+instance Data.ToJSON HistogramAggregatedFieldWells where
+  toJSON HistogramAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Values" Data..=) Prelude.<$> values]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HistogramBinOptions.hs b/gen/Amazonka/QuickSight/Types/HistogramBinOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HistogramBinOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.HistogramBinOptions
+-- 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.QuickSight.Types.HistogramBinOptions 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.QuickSight.Types.BinCountOptions
+import Amazonka.QuickSight.Types.BinWidthOptions
+import Amazonka.QuickSight.Types.HistogramBinType
+
+-- | The options that determine the presentation of histogram bins.
+--
+-- /See:/ 'newHistogramBinOptions' smart constructor.
+data HistogramBinOptions = HistogramBinOptions'
+  { -- | The options that determine the bin count of a histogram.
+    binCount :: Prelude.Maybe BinCountOptions,
+    -- | The options that determine the bin width of a histogram.
+    binWidth :: Prelude.Maybe BinWidthOptions,
+    -- | The options that determine the selected bin type.
+    selectedBinType :: Prelude.Maybe HistogramBinType,
+    -- | The options that determine the bin start value.
+    startValue :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HistogramBinOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'binCount', 'histogramBinOptions_binCount' - The options that determine the bin count of a histogram.
+--
+-- 'binWidth', 'histogramBinOptions_binWidth' - The options that determine the bin width of a histogram.
+--
+-- 'selectedBinType', 'histogramBinOptions_selectedBinType' - The options that determine the selected bin type.
+--
+-- 'startValue', 'histogramBinOptions_startValue' - The options that determine the bin start value.
+newHistogramBinOptions ::
+  HistogramBinOptions
+newHistogramBinOptions =
+  HistogramBinOptions'
+    { binCount = Prelude.Nothing,
+      binWidth = Prelude.Nothing,
+      selectedBinType = Prelude.Nothing,
+      startValue = Prelude.Nothing
+    }
+
+-- | The options that determine the bin count of a histogram.
+histogramBinOptions_binCount :: Lens.Lens' HistogramBinOptions (Prelude.Maybe BinCountOptions)
+histogramBinOptions_binCount = Lens.lens (\HistogramBinOptions' {binCount} -> binCount) (\s@HistogramBinOptions' {} a -> s {binCount = a} :: HistogramBinOptions)
+
+-- | The options that determine the bin width of a histogram.
+histogramBinOptions_binWidth :: Lens.Lens' HistogramBinOptions (Prelude.Maybe BinWidthOptions)
+histogramBinOptions_binWidth = Lens.lens (\HistogramBinOptions' {binWidth} -> binWidth) (\s@HistogramBinOptions' {} a -> s {binWidth = a} :: HistogramBinOptions)
+
+-- | The options that determine the selected bin type.
+histogramBinOptions_selectedBinType :: Lens.Lens' HistogramBinOptions (Prelude.Maybe HistogramBinType)
+histogramBinOptions_selectedBinType = Lens.lens (\HistogramBinOptions' {selectedBinType} -> selectedBinType) (\s@HistogramBinOptions' {} a -> s {selectedBinType = a} :: HistogramBinOptions)
+
+-- | The options that determine the bin start value.
+histogramBinOptions_startValue :: Lens.Lens' HistogramBinOptions (Prelude.Maybe Prelude.Double)
+histogramBinOptions_startValue = Lens.lens (\HistogramBinOptions' {startValue} -> startValue) (\s@HistogramBinOptions' {} a -> s {startValue = a} :: HistogramBinOptions)
+
+instance Data.FromJSON HistogramBinOptions where
+  parseJSON =
+    Data.withObject
+      "HistogramBinOptions"
+      ( \x ->
+          HistogramBinOptions'
+            Prelude.<$> (x Data..:? "BinCount")
+            Prelude.<*> (x Data..:? "BinWidth")
+            Prelude.<*> (x Data..:? "SelectedBinType")
+            Prelude.<*> (x Data..:? "StartValue")
+      )
+
+instance Prelude.Hashable HistogramBinOptions where
+  hashWithSalt _salt HistogramBinOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` binCount
+      `Prelude.hashWithSalt` binWidth
+      `Prelude.hashWithSalt` selectedBinType
+      `Prelude.hashWithSalt` startValue
+
+instance Prelude.NFData HistogramBinOptions where
+  rnf HistogramBinOptions' {..} =
+    Prelude.rnf binCount
+      `Prelude.seq` Prelude.rnf binWidth
+      `Prelude.seq` Prelude.rnf selectedBinType
+      `Prelude.seq` Prelude.rnf startValue
+
+instance Data.ToJSON HistogramBinOptions where
+  toJSON HistogramBinOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BinCount" Data..=) Prelude.<$> binCount,
+            ("BinWidth" Data..=) Prelude.<$> binWidth,
+            ("SelectedBinType" Data..=)
+              Prelude.<$> selectedBinType,
+            ("StartValue" Data..=) Prelude.<$> startValue
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HistogramBinType.hs b/gen/Amazonka/QuickSight/Types/HistogramBinType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HistogramBinType.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.QuickSight.Types.HistogramBinType
+-- 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.QuickSight.Types.HistogramBinType
+  ( HistogramBinType
+      ( ..,
+        HistogramBinType_BIN_COUNT,
+        HistogramBinType_BIN_WIDTH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HistogramBinType = HistogramBinType'
+  { fromHistogramBinType ::
+      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 HistogramBinType_BIN_COUNT :: HistogramBinType
+pattern HistogramBinType_BIN_COUNT = HistogramBinType' "BIN_COUNT"
+
+pattern HistogramBinType_BIN_WIDTH :: HistogramBinType
+pattern HistogramBinType_BIN_WIDTH = HistogramBinType' "BIN_WIDTH"
+
+{-# COMPLETE
+  HistogramBinType_BIN_COUNT,
+  HistogramBinType_BIN_WIDTH,
+  HistogramBinType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/HistogramConfiguration.hs b/gen/Amazonka/QuickSight/Types/HistogramConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HistogramConfiguration.hs
@@ -0,0 +1,182 @@
+{-# 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.QuickSight.Types.HistogramConfiguration
+-- 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.QuickSight.Types.HistogramConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.HistogramBinOptions
+import Amazonka.QuickSight.Types.HistogramFieldWells
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration for a @HistogramVisual@.
+--
+-- /See:/ 'newHistogramConfiguration' smart constructor.
+data HistogramConfiguration = HistogramConfiguration'
+  { -- | The options that determine the presentation of histogram bins.
+    binOptions :: Prelude.Maybe HistogramBinOptions,
+    -- | The data label configuration of a histogram.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field well configuration of a histogram.
+    fieldWells :: Prelude.Maybe HistogramFieldWells,
+    -- | The tooltip configuration of a histogram.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The visual palette configuration of a histogram.
+    visualPalette :: Prelude.Maybe VisualPalette,
+    -- | The options that determine the presentation of the x-axis.
+    xAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The options that determine the presentation of the x-axis label.
+    xAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The options that determine the presentation of the y-axis.
+    yAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HistogramConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'binOptions', 'histogramConfiguration_binOptions' - The options that determine the presentation of histogram bins.
+--
+-- 'dataLabels', 'histogramConfiguration_dataLabels' - The data label configuration of a histogram.
+--
+-- 'fieldWells', 'histogramConfiguration_fieldWells' - The field well configuration of a histogram.
+--
+-- 'tooltip', 'histogramConfiguration_tooltip' - The tooltip configuration of a histogram.
+--
+-- 'visualPalette', 'histogramConfiguration_visualPalette' - The visual palette configuration of a histogram.
+--
+-- 'xAxisDisplayOptions', 'histogramConfiguration_xAxisDisplayOptions' - The options that determine the presentation of the x-axis.
+--
+-- 'xAxisLabelOptions', 'histogramConfiguration_xAxisLabelOptions' - The options that determine the presentation of the x-axis label.
+--
+-- 'yAxisDisplayOptions', 'histogramConfiguration_yAxisDisplayOptions' - The options that determine the presentation of the y-axis.
+newHistogramConfiguration ::
+  HistogramConfiguration
+newHistogramConfiguration =
+  HistogramConfiguration'
+    { binOptions =
+        Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      visualPalette = Prelude.Nothing,
+      xAxisDisplayOptions = Prelude.Nothing,
+      xAxisLabelOptions = Prelude.Nothing,
+      yAxisDisplayOptions = Prelude.Nothing
+    }
+
+-- | The options that determine the presentation of histogram bins.
+histogramConfiguration_binOptions :: Lens.Lens' HistogramConfiguration (Prelude.Maybe HistogramBinOptions)
+histogramConfiguration_binOptions = Lens.lens (\HistogramConfiguration' {binOptions} -> binOptions) (\s@HistogramConfiguration' {} a -> s {binOptions = a} :: HistogramConfiguration)
+
+-- | The data label configuration of a histogram.
+histogramConfiguration_dataLabels :: Lens.Lens' HistogramConfiguration (Prelude.Maybe DataLabelOptions)
+histogramConfiguration_dataLabels = Lens.lens (\HistogramConfiguration' {dataLabels} -> dataLabels) (\s@HistogramConfiguration' {} a -> s {dataLabels = a} :: HistogramConfiguration)
+
+-- | The field well configuration of a histogram.
+histogramConfiguration_fieldWells :: Lens.Lens' HistogramConfiguration (Prelude.Maybe HistogramFieldWells)
+histogramConfiguration_fieldWells = Lens.lens (\HistogramConfiguration' {fieldWells} -> fieldWells) (\s@HistogramConfiguration' {} a -> s {fieldWells = a} :: HistogramConfiguration)
+
+-- | The tooltip configuration of a histogram.
+histogramConfiguration_tooltip :: Lens.Lens' HistogramConfiguration (Prelude.Maybe TooltipOptions)
+histogramConfiguration_tooltip = Lens.lens (\HistogramConfiguration' {tooltip} -> tooltip) (\s@HistogramConfiguration' {} a -> s {tooltip = a} :: HistogramConfiguration)
+
+-- | The visual palette configuration of a histogram.
+histogramConfiguration_visualPalette :: Lens.Lens' HistogramConfiguration (Prelude.Maybe VisualPalette)
+histogramConfiguration_visualPalette = Lens.lens (\HistogramConfiguration' {visualPalette} -> visualPalette) (\s@HistogramConfiguration' {} a -> s {visualPalette = a} :: HistogramConfiguration)
+
+-- | The options that determine the presentation of the x-axis.
+histogramConfiguration_xAxisDisplayOptions :: Lens.Lens' HistogramConfiguration (Prelude.Maybe AxisDisplayOptions)
+histogramConfiguration_xAxisDisplayOptions = Lens.lens (\HistogramConfiguration' {xAxisDisplayOptions} -> xAxisDisplayOptions) (\s@HistogramConfiguration' {} a -> s {xAxisDisplayOptions = a} :: HistogramConfiguration)
+
+-- | The options that determine the presentation of the x-axis label.
+histogramConfiguration_xAxisLabelOptions :: Lens.Lens' HistogramConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+histogramConfiguration_xAxisLabelOptions = Lens.lens (\HistogramConfiguration' {xAxisLabelOptions} -> xAxisLabelOptions) (\s@HistogramConfiguration' {} a -> s {xAxisLabelOptions = a} :: HistogramConfiguration)
+
+-- | The options that determine the presentation of the y-axis.
+histogramConfiguration_yAxisDisplayOptions :: Lens.Lens' HistogramConfiguration (Prelude.Maybe AxisDisplayOptions)
+histogramConfiguration_yAxisDisplayOptions = Lens.lens (\HistogramConfiguration' {yAxisDisplayOptions} -> yAxisDisplayOptions) (\s@HistogramConfiguration' {} a -> s {yAxisDisplayOptions = a} :: HistogramConfiguration)
+
+instance Data.FromJSON HistogramConfiguration where
+  parseJSON =
+    Data.withObject
+      "HistogramConfiguration"
+      ( \x ->
+          HistogramConfiguration'
+            Prelude.<$> (x Data..:? "BinOptions")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "VisualPalette")
+            Prelude.<*> (x Data..:? "XAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "XAxisLabelOptions")
+            Prelude.<*> (x Data..:? "YAxisDisplayOptions")
+      )
+
+instance Prelude.Hashable HistogramConfiguration where
+  hashWithSalt _salt HistogramConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` binOptions
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` visualPalette
+      `Prelude.hashWithSalt` xAxisDisplayOptions
+      `Prelude.hashWithSalt` xAxisLabelOptions
+      `Prelude.hashWithSalt` yAxisDisplayOptions
+
+instance Prelude.NFData HistogramConfiguration where
+  rnf HistogramConfiguration' {..} =
+    Prelude.rnf binOptions
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf visualPalette
+      `Prelude.seq` Prelude.rnf xAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf xAxisLabelOptions
+      `Prelude.seq` Prelude.rnf yAxisDisplayOptions
+
+instance Data.ToJSON HistogramConfiguration where
+  toJSON HistogramConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BinOptions" Data..=) Prelude.<$> binOptions,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette,
+            ("XAxisDisplayOptions" Data..=)
+              Prelude.<$> xAxisDisplayOptions,
+            ("XAxisLabelOptions" Data..=)
+              Prelude.<$> xAxisLabelOptions,
+            ("YAxisDisplayOptions" Data..=)
+              Prelude.<$> yAxisDisplayOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HistogramFieldWells.hs b/gen/Amazonka/QuickSight/Types/HistogramFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HistogramFieldWells.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.HistogramFieldWells
+-- 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.QuickSight.Types.HistogramFieldWells 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.QuickSight.Types.HistogramAggregatedFieldWells
+
+-- | The field well configuration of a histogram.
+--
+-- /See:/ 'newHistogramFieldWells' smart constructor.
+data HistogramFieldWells = HistogramFieldWells'
+  { -- | The field well configuration of a histogram.
+    histogramAggregatedFieldWells :: Prelude.Maybe HistogramAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HistogramFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'histogramAggregatedFieldWells', 'histogramFieldWells_histogramAggregatedFieldWells' - The field well configuration of a histogram.
+newHistogramFieldWells ::
+  HistogramFieldWells
+newHistogramFieldWells =
+  HistogramFieldWells'
+    { histogramAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The field well configuration of a histogram.
+histogramFieldWells_histogramAggregatedFieldWells :: Lens.Lens' HistogramFieldWells (Prelude.Maybe HistogramAggregatedFieldWells)
+histogramFieldWells_histogramAggregatedFieldWells = Lens.lens (\HistogramFieldWells' {histogramAggregatedFieldWells} -> histogramAggregatedFieldWells) (\s@HistogramFieldWells' {} a -> s {histogramAggregatedFieldWells = a} :: HistogramFieldWells)
+
+instance Data.FromJSON HistogramFieldWells where
+  parseJSON =
+    Data.withObject
+      "HistogramFieldWells"
+      ( \x ->
+          HistogramFieldWells'
+            Prelude.<$> (x Data..:? "HistogramAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable HistogramFieldWells where
+  hashWithSalt _salt HistogramFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` histogramAggregatedFieldWells
+
+instance Prelude.NFData HistogramFieldWells where
+  rnf HistogramFieldWells' {..} =
+    Prelude.rnf histogramAggregatedFieldWells
+
+instance Data.ToJSON HistogramFieldWells where
+  toJSON HistogramFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HistogramAggregatedFieldWells" Data..=)
+              Prelude.<$> histogramAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HistogramVisual.hs b/gen/Amazonka/QuickSight/Types/HistogramVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HistogramVisual.hs
@@ -0,0 +1,149 @@
+{-# 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.QuickSight.Types.HistogramVisual
+-- 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.QuickSight.Types.HistogramVisual 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.QuickSight.Types.HistogramConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A histogram.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/histogram-charts.html Using histograms>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newHistogramVisual' smart constructor.
+data HistogramVisual = HistogramVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration for a @HistogramVisual@.
+    chartConfiguration :: Prelude.Maybe HistogramConfiguration,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HistogramVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'histogramVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'histogramVisual_chartConfiguration' - The configuration for a @HistogramVisual@.
+--
+-- 'subtitle', 'histogramVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'histogramVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'histogramVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newHistogramVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  HistogramVisual
+newHistogramVisual pVisualId_ =
+  HistogramVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+histogramVisual_actions :: Lens.Lens' HistogramVisual (Prelude.Maybe [VisualCustomAction])
+histogramVisual_actions = Lens.lens (\HistogramVisual' {actions} -> actions) (\s@HistogramVisual' {} a -> s {actions = a} :: HistogramVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration for a @HistogramVisual@.
+histogramVisual_chartConfiguration :: Lens.Lens' HistogramVisual (Prelude.Maybe HistogramConfiguration)
+histogramVisual_chartConfiguration = Lens.lens (\HistogramVisual' {chartConfiguration} -> chartConfiguration) (\s@HistogramVisual' {} a -> s {chartConfiguration = a} :: HistogramVisual)
+
+-- | The subtitle that is displayed on the visual.
+histogramVisual_subtitle :: Lens.Lens' HistogramVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+histogramVisual_subtitle = Lens.lens (\HistogramVisual' {subtitle} -> subtitle) (\s@HistogramVisual' {} a -> s {subtitle = a} :: HistogramVisual)
+
+-- | The title that is displayed on the visual.
+histogramVisual_title :: Lens.Lens' HistogramVisual (Prelude.Maybe VisualTitleLabelOptions)
+histogramVisual_title = Lens.lens (\HistogramVisual' {title} -> title) (\s@HistogramVisual' {} a -> s {title = a} :: HistogramVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+histogramVisual_visualId :: Lens.Lens' HistogramVisual Prelude.Text
+histogramVisual_visualId = Lens.lens (\HistogramVisual' {visualId} -> visualId) (\s@HistogramVisual' {} a -> s {visualId = a} :: HistogramVisual)
+
+instance Data.FromJSON HistogramVisual where
+  parseJSON =
+    Data.withObject
+      "HistogramVisual"
+      ( \x ->
+          HistogramVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable HistogramVisual where
+  hashWithSalt _salt HistogramVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData HistogramVisual where
+  rnf HistogramVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON HistogramVisual where
+  toJSON HistogramVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/HorizontalTextAlignment.hs b/gen/Amazonka/QuickSight/Types/HorizontalTextAlignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/HorizontalTextAlignment.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.QuickSight.Types.HorizontalTextAlignment
+-- 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.QuickSight.Types.HorizontalTextAlignment
+  ( HorizontalTextAlignment
+      ( ..,
+        HorizontalTextAlignment_AUTO,
+        HorizontalTextAlignment_CENTER,
+        HorizontalTextAlignment_LEFT,
+        HorizontalTextAlignment_RIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HorizontalTextAlignment = HorizontalTextAlignment'
+  { fromHorizontalTextAlignment ::
+      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 HorizontalTextAlignment_AUTO :: HorizontalTextAlignment
+pattern HorizontalTextAlignment_AUTO = HorizontalTextAlignment' "AUTO"
+
+pattern HorizontalTextAlignment_CENTER :: HorizontalTextAlignment
+pattern HorizontalTextAlignment_CENTER = HorizontalTextAlignment' "CENTER"
+
+pattern HorizontalTextAlignment_LEFT :: HorizontalTextAlignment
+pattern HorizontalTextAlignment_LEFT = HorizontalTextAlignment' "LEFT"
+
+pattern HorizontalTextAlignment_RIGHT :: HorizontalTextAlignment
+pattern HorizontalTextAlignment_RIGHT = HorizontalTextAlignment' "RIGHT"
+
+{-# COMPLETE
+  HorizontalTextAlignment_AUTO,
+  HorizontalTextAlignment_CENTER,
+  HorizontalTextAlignment_LEFT,
+  HorizontalTextAlignment_RIGHT,
+  HorizontalTextAlignment'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IAMPolicyAssignment.hs b/gen/Amazonka/QuickSight/Types/IAMPolicyAssignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IAMPolicyAssignment.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.IAMPolicyAssignment
+-- 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.QuickSight.Types.IAMPolicyAssignment 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.QuickSight.Types.AssignmentStatus
+
+-- | An Identity and Access Management (IAM) policy assignment.
+--
+-- /See:/ 'newIAMPolicyAssignment' smart constructor.
+data IAMPolicyAssignment = IAMPolicyAssignment'
+  { -- | Assignment ID.
+    assignmentId :: Prelude.Maybe Prelude.Text,
+    -- | Assignment name.
+    assignmentName :: Prelude.Maybe Prelude.Text,
+    -- | Assignment status.
+    assignmentStatus :: Prelude.Maybe AssignmentStatus,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Maybe Prelude.Text,
+    -- | Identities.
+    identities :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | The Amazon Resource Name (ARN) for the IAM policy.
+    policyArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IAMPolicyAssignment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentId', 'iAMPolicyAssignment_assignmentId' - Assignment ID.
+--
+-- 'assignmentName', 'iAMPolicyAssignment_assignmentName' - Assignment name.
+--
+-- 'assignmentStatus', 'iAMPolicyAssignment_assignmentStatus' - Assignment status.
+--
+-- 'awsAccountId', 'iAMPolicyAssignment_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'identities', 'iAMPolicyAssignment_identities' - Identities.
+--
+-- 'policyArn', 'iAMPolicyAssignment_policyArn' - The Amazon Resource Name (ARN) for the IAM policy.
+newIAMPolicyAssignment ::
+  IAMPolicyAssignment
+newIAMPolicyAssignment =
+  IAMPolicyAssignment'
+    { assignmentId =
+        Prelude.Nothing,
+      assignmentName = Prelude.Nothing,
+      assignmentStatus = Prelude.Nothing,
+      awsAccountId = Prelude.Nothing,
+      identities = Prelude.Nothing,
+      policyArn = Prelude.Nothing
+    }
+
+-- | Assignment ID.
+iAMPolicyAssignment_assignmentId :: Lens.Lens' IAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+iAMPolicyAssignment_assignmentId = Lens.lens (\IAMPolicyAssignment' {assignmentId} -> assignmentId) (\s@IAMPolicyAssignment' {} a -> s {assignmentId = a} :: IAMPolicyAssignment)
+
+-- | Assignment name.
+iAMPolicyAssignment_assignmentName :: Lens.Lens' IAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+iAMPolicyAssignment_assignmentName = Lens.lens (\IAMPolicyAssignment' {assignmentName} -> assignmentName) (\s@IAMPolicyAssignment' {} a -> s {assignmentName = a} :: IAMPolicyAssignment)
+
+-- | Assignment status.
+iAMPolicyAssignment_assignmentStatus :: Lens.Lens' IAMPolicyAssignment (Prelude.Maybe AssignmentStatus)
+iAMPolicyAssignment_assignmentStatus = Lens.lens (\IAMPolicyAssignment' {assignmentStatus} -> assignmentStatus) (\s@IAMPolicyAssignment' {} a -> s {assignmentStatus = a} :: IAMPolicyAssignment)
+
+-- | The Amazon Web Services account ID.
+iAMPolicyAssignment_awsAccountId :: Lens.Lens' IAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+iAMPolicyAssignment_awsAccountId = Lens.lens (\IAMPolicyAssignment' {awsAccountId} -> awsAccountId) (\s@IAMPolicyAssignment' {} a -> s {awsAccountId = a} :: IAMPolicyAssignment)
+
+-- | Identities.
+iAMPolicyAssignment_identities :: Lens.Lens' IAMPolicyAssignment (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+iAMPolicyAssignment_identities = Lens.lens (\IAMPolicyAssignment' {identities} -> identities) (\s@IAMPolicyAssignment' {} a -> s {identities = a} :: IAMPolicyAssignment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) for the IAM policy.
+iAMPolicyAssignment_policyArn :: Lens.Lens' IAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+iAMPolicyAssignment_policyArn = Lens.lens (\IAMPolicyAssignment' {policyArn} -> policyArn) (\s@IAMPolicyAssignment' {} a -> s {policyArn = a} :: IAMPolicyAssignment)
+
+instance Data.FromJSON IAMPolicyAssignment where
+  parseJSON =
+    Data.withObject
+      "IAMPolicyAssignment"
+      ( \x ->
+          IAMPolicyAssignment'
+            Prelude.<$> (x Data..:? "AssignmentId")
+            Prelude.<*> (x Data..:? "AssignmentName")
+            Prelude.<*> (x Data..:? "AssignmentStatus")
+            Prelude.<*> (x Data..:? "AwsAccountId")
+            Prelude.<*> (x Data..:? "Identities" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "PolicyArn")
+      )
+
+instance Prelude.Hashable IAMPolicyAssignment where
+  hashWithSalt _salt IAMPolicyAssignment' {..} =
+    _salt
+      `Prelude.hashWithSalt` assignmentId
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` assignmentStatus
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` identities
+      `Prelude.hashWithSalt` policyArn
+
+instance Prelude.NFData IAMPolicyAssignment where
+  rnf IAMPolicyAssignment' {..} =
+    Prelude.rnf assignmentId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf assignmentStatus
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf identities
+      `Prelude.seq` Prelude.rnf policyArn
diff --git a/gen/Amazonka/QuickSight/Types/IAMPolicyAssignmentSummary.hs b/gen/Amazonka/QuickSight/Types/IAMPolicyAssignmentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IAMPolicyAssignmentSummary.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.QuickSight.Types.IAMPolicyAssignmentSummary
+-- 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.QuickSight.Types.IAMPolicyAssignmentSummary 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.QuickSight.Types.AssignmentStatus
+
+-- | IAM policy assignment summary.
+--
+-- /See:/ 'newIAMPolicyAssignmentSummary' smart constructor.
+data IAMPolicyAssignmentSummary = IAMPolicyAssignmentSummary'
+  { -- | Assignment name.
+    assignmentName :: Prelude.Maybe Prelude.Text,
+    -- | Assignment status.
+    assignmentStatus :: Prelude.Maybe AssignmentStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IAMPolicyAssignmentSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentName', 'iAMPolicyAssignmentSummary_assignmentName' - Assignment name.
+--
+-- 'assignmentStatus', 'iAMPolicyAssignmentSummary_assignmentStatus' - Assignment status.
+newIAMPolicyAssignmentSummary ::
+  IAMPolicyAssignmentSummary
+newIAMPolicyAssignmentSummary =
+  IAMPolicyAssignmentSummary'
+    { assignmentName =
+        Prelude.Nothing,
+      assignmentStatus = Prelude.Nothing
+    }
+
+-- | Assignment name.
+iAMPolicyAssignmentSummary_assignmentName :: Lens.Lens' IAMPolicyAssignmentSummary (Prelude.Maybe Prelude.Text)
+iAMPolicyAssignmentSummary_assignmentName = Lens.lens (\IAMPolicyAssignmentSummary' {assignmentName} -> assignmentName) (\s@IAMPolicyAssignmentSummary' {} a -> s {assignmentName = a} :: IAMPolicyAssignmentSummary)
+
+-- | Assignment status.
+iAMPolicyAssignmentSummary_assignmentStatus :: Lens.Lens' IAMPolicyAssignmentSummary (Prelude.Maybe AssignmentStatus)
+iAMPolicyAssignmentSummary_assignmentStatus = Lens.lens (\IAMPolicyAssignmentSummary' {assignmentStatus} -> assignmentStatus) (\s@IAMPolicyAssignmentSummary' {} a -> s {assignmentStatus = a} :: IAMPolicyAssignmentSummary)
+
+instance Data.FromJSON IAMPolicyAssignmentSummary where
+  parseJSON =
+    Data.withObject
+      "IAMPolicyAssignmentSummary"
+      ( \x ->
+          IAMPolicyAssignmentSummary'
+            Prelude.<$> (x Data..:? "AssignmentName")
+            Prelude.<*> (x Data..:? "AssignmentStatus")
+      )
+
+instance Prelude.Hashable IAMPolicyAssignmentSummary where
+  hashWithSalt _salt IAMPolicyAssignmentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` assignmentStatus
+
+instance Prelude.NFData IAMPolicyAssignmentSummary where
+  rnf IAMPolicyAssignmentSummary' {..} =
+    Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf assignmentStatus
diff --git a/gen/Amazonka/QuickSight/Types/Icon.hs b/gen/Amazonka/QuickSight/Types/Icon.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Icon.hs
@@ -0,0 +1,188 @@
+{-# 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.QuickSight.Types.Icon
+-- 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.QuickSight.Types.Icon
+  ( Icon
+      ( ..,
+        Icon_ARROW_DOWN,
+        Icon_ARROW_DOWN_LEFT,
+        Icon_ARROW_DOWN_RIGHT,
+        Icon_ARROW_LEFT,
+        Icon_ARROW_RIGHT,
+        Icon_ARROW_UP,
+        Icon_ARROW_UP_LEFT,
+        Icon_ARROW_UP_RIGHT,
+        Icon_CARET_DOWN,
+        Icon_CARET_UP,
+        Icon_CHECKMARK,
+        Icon_CIRCLE,
+        Icon_FACE_DOWN,
+        Icon_FACE_FLAT,
+        Icon_FACE_UP,
+        Icon_FLAG,
+        Icon_MINUS,
+        Icon_ONE_BAR,
+        Icon_PLUS,
+        Icon_SQUARE,
+        Icon_THREE_BAR,
+        Icon_THUMBS_DOWN,
+        Icon_THUMBS_UP,
+        Icon_TRIANGLE,
+        Icon_TWO_BAR,
+        Icon_X
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Icon = Icon' {fromIcon :: 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 Icon_ARROW_DOWN :: Icon
+pattern Icon_ARROW_DOWN = Icon' "ARROW_DOWN"
+
+pattern Icon_ARROW_DOWN_LEFT :: Icon
+pattern Icon_ARROW_DOWN_LEFT = Icon' "ARROW_DOWN_LEFT"
+
+pattern Icon_ARROW_DOWN_RIGHT :: Icon
+pattern Icon_ARROW_DOWN_RIGHT = Icon' "ARROW_DOWN_RIGHT"
+
+pattern Icon_ARROW_LEFT :: Icon
+pattern Icon_ARROW_LEFT = Icon' "ARROW_LEFT"
+
+pattern Icon_ARROW_RIGHT :: Icon
+pattern Icon_ARROW_RIGHT = Icon' "ARROW_RIGHT"
+
+pattern Icon_ARROW_UP :: Icon
+pattern Icon_ARROW_UP = Icon' "ARROW_UP"
+
+pattern Icon_ARROW_UP_LEFT :: Icon
+pattern Icon_ARROW_UP_LEFT = Icon' "ARROW_UP_LEFT"
+
+pattern Icon_ARROW_UP_RIGHT :: Icon
+pattern Icon_ARROW_UP_RIGHT = Icon' "ARROW_UP_RIGHT"
+
+pattern Icon_CARET_DOWN :: Icon
+pattern Icon_CARET_DOWN = Icon' "CARET_DOWN"
+
+pattern Icon_CARET_UP :: Icon
+pattern Icon_CARET_UP = Icon' "CARET_UP"
+
+pattern Icon_CHECKMARK :: Icon
+pattern Icon_CHECKMARK = Icon' "CHECKMARK"
+
+pattern Icon_CIRCLE :: Icon
+pattern Icon_CIRCLE = Icon' "CIRCLE"
+
+pattern Icon_FACE_DOWN :: Icon
+pattern Icon_FACE_DOWN = Icon' "FACE_DOWN"
+
+pattern Icon_FACE_FLAT :: Icon
+pattern Icon_FACE_FLAT = Icon' "FACE_FLAT"
+
+pattern Icon_FACE_UP :: Icon
+pattern Icon_FACE_UP = Icon' "FACE_UP"
+
+pattern Icon_FLAG :: Icon
+pattern Icon_FLAG = Icon' "FLAG"
+
+pattern Icon_MINUS :: Icon
+pattern Icon_MINUS = Icon' "MINUS"
+
+pattern Icon_ONE_BAR :: Icon
+pattern Icon_ONE_BAR = Icon' "ONE_BAR"
+
+pattern Icon_PLUS :: Icon
+pattern Icon_PLUS = Icon' "PLUS"
+
+pattern Icon_SQUARE :: Icon
+pattern Icon_SQUARE = Icon' "SQUARE"
+
+pattern Icon_THREE_BAR :: Icon
+pattern Icon_THREE_BAR = Icon' "THREE_BAR"
+
+pattern Icon_THUMBS_DOWN :: Icon
+pattern Icon_THUMBS_DOWN = Icon' "THUMBS_DOWN"
+
+pattern Icon_THUMBS_UP :: Icon
+pattern Icon_THUMBS_UP = Icon' "THUMBS_UP"
+
+pattern Icon_TRIANGLE :: Icon
+pattern Icon_TRIANGLE = Icon' "TRIANGLE"
+
+pattern Icon_TWO_BAR :: Icon
+pattern Icon_TWO_BAR = Icon' "TWO_BAR"
+
+pattern Icon_X :: Icon
+pattern Icon_X = Icon' "X"
+
+{-# COMPLETE
+  Icon_ARROW_DOWN,
+  Icon_ARROW_DOWN_LEFT,
+  Icon_ARROW_DOWN_RIGHT,
+  Icon_ARROW_LEFT,
+  Icon_ARROW_RIGHT,
+  Icon_ARROW_UP,
+  Icon_ARROW_UP_LEFT,
+  Icon_ARROW_UP_RIGHT,
+  Icon_CARET_DOWN,
+  Icon_CARET_UP,
+  Icon_CHECKMARK,
+  Icon_CIRCLE,
+  Icon_FACE_DOWN,
+  Icon_FACE_FLAT,
+  Icon_FACE_UP,
+  Icon_FLAG,
+  Icon_MINUS,
+  Icon_ONE_BAR,
+  Icon_PLUS,
+  Icon_SQUARE,
+  Icon_THREE_BAR,
+  Icon_THUMBS_DOWN,
+  Icon_THUMBS_UP,
+  Icon_TRIANGLE,
+  Icon_TWO_BAR,
+  Icon_X,
+  Icon'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IdentityStore.hs b/gen/Amazonka/QuickSight/Types/IdentityStore.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IdentityStore.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.QuickSight.Types.IdentityStore
+-- 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.QuickSight.Types.IdentityStore
+  ( IdentityStore
+      ( ..,
+        IdentityStore_QUICKSIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IdentityStore = IdentityStore'
+  { fromIdentityStore ::
+      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 IdentityStore_QUICKSIGHT :: IdentityStore
+pattern IdentityStore_QUICKSIGHT = IdentityStore' "QUICKSIGHT"
+
+{-# COMPLETE
+  IdentityStore_QUICKSIGHT,
+  IdentityStore'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IdentityType.hs b/gen/Amazonka/QuickSight/Types/IdentityType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IdentityType.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.QuickSight.Types.IdentityType
+-- 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.QuickSight.Types.IdentityType
+  ( IdentityType
+      ( ..,
+        IdentityType_IAM,
+        IdentityType_QUICKSIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IdentityType = IdentityType'
+  { fromIdentityType ::
+      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 IdentityType_IAM :: IdentityType
+pattern IdentityType_IAM = IdentityType' "IAM"
+
+pattern IdentityType_QUICKSIGHT :: IdentityType
+pattern IdentityType_QUICKSIGHT = IdentityType' "QUICKSIGHT"
+
+{-# COMPLETE
+  IdentityType_IAM,
+  IdentityType_QUICKSIGHT,
+  IdentityType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Ingestion.hs b/gen/Amazonka/QuickSight/Types/Ingestion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Ingestion.hs
@@ -0,0 +1,202 @@
+{-# 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.QuickSight.Types.Ingestion
+-- 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.QuickSight.Types.Ingestion 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.QuickSight.Types.ErrorInfo
+import Amazonka.QuickSight.Types.IngestionRequestSource
+import Amazonka.QuickSight.Types.IngestionRequestType
+import Amazonka.QuickSight.Types.IngestionStatus
+import Amazonka.QuickSight.Types.QueueInfo
+import Amazonka.QuickSight.Types.RowInfo
+
+-- | Information about the SPICE ingestion for a dataset.
+--
+-- /See:/ 'newIngestion' smart constructor.
+data Ingestion = Ingestion'
+  { -- | Error information for this ingestion.
+    errorInfo :: Prelude.Maybe ErrorInfo,
+    -- | Ingestion ID.
+    ingestionId :: Prelude.Maybe Prelude.Text,
+    -- | The size of the data ingested, in bytes.
+    ingestionSizeInBytes :: Prelude.Maybe Prelude.Integer,
+    -- | The time that this ingestion took, measured in seconds.
+    ingestionTimeInSeconds :: Prelude.Maybe Prelude.Integer,
+    queueInfo :: Prelude.Maybe QueueInfo,
+    -- | Event source for this ingestion.
+    requestSource :: Prelude.Maybe IngestionRequestSource,
+    -- | Type of this ingestion.
+    requestType :: Prelude.Maybe IngestionRequestType,
+    rowInfo :: Prelude.Maybe RowInfo,
+    -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Text,
+    -- | Ingestion status.
+    ingestionStatus :: IngestionStatus,
+    -- | The time that this ingestion started.
+    createdTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Ingestion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorInfo', 'ingestion_errorInfo' - Error information for this ingestion.
+--
+-- 'ingestionId', 'ingestion_ingestionId' - Ingestion ID.
+--
+-- 'ingestionSizeInBytes', 'ingestion_ingestionSizeInBytes' - The size of the data ingested, in bytes.
+--
+-- 'ingestionTimeInSeconds', 'ingestion_ingestionTimeInSeconds' - The time that this ingestion took, measured in seconds.
+--
+-- 'queueInfo', 'ingestion_queueInfo' - Undocumented member.
+--
+-- 'requestSource', 'ingestion_requestSource' - Event source for this ingestion.
+--
+-- 'requestType', 'ingestion_requestType' - Type of this ingestion.
+--
+-- 'rowInfo', 'ingestion_rowInfo' - Undocumented member.
+--
+-- 'arn', 'ingestion_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'ingestionStatus', 'ingestion_ingestionStatus' - Ingestion status.
+--
+-- 'createdTime', 'ingestion_createdTime' - The time that this ingestion started.
+newIngestion ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'ingestionStatus'
+  IngestionStatus ->
+  -- | 'createdTime'
+  Prelude.UTCTime ->
+  Ingestion
+newIngestion pArn_ pIngestionStatus_ pCreatedTime_ =
+  Ingestion'
+    { errorInfo = Prelude.Nothing,
+      ingestionId = Prelude.Nothing,
+      ingestionSizeInBytes = Prelude.Nothing,
+      ingestionTimeInSeconds = Prelude.Nothing,
+      queueInfo = Prelude.Nothing,
+      requestSource = Prelude.Nothing,
+      requestType = Prelude.Nothing,
+      rowInfo = Prelude.Nothing,
+      arn = pArn_,
+      ingestionStatus = pIngestionStatus_,
+      createdTime = Data._Time Lens.# pCreatedTime_
+    }
+
+-- | Error information for this ingestion.
+ingestion_errorInfo :: Lens.Lens' Ingestion (Prelude.Maybe ErrorInfo)
+ingestion_errorInfo = Lens.lens (\Ingestion' {errorInfo} -> errorInfo) (\s@Ingestion' {} a -> s {errorInfo = a} :: Ingestion)
+
+-- | Ingestion ID.
+ingestion_ingestionId :: Lens.Lens' Ingestion (Prelude.Maybe Prelude.Text)
+ingestion_ingestionId = Lens.lens (\Ingestion' {ingestionId} -> ingestionId) (\s@Ingestion' {} a -> s {ingestionId = a} :: Ingestion)
+
+-- | The size of the data ingested, in bytes.
+ingestion_ingestionSizeInBytes :: Lens.Lens' Ingestion (Prelude.Maybe Prelude.Integer)
+ingestion_ingestionSizeInBytes = Lens.lens (\Ingestion' {ingestionSizeInBytes} -> ingestionSizeInBytes) (\s@Ingestion' {} a -> s {ingestionSizeInBytes = a} :: Ingestion)
+
+-- | The time that this ingestion took, measured in seconds.
+ingestion_ingestionTimeInSeconds :: Lens.Lens' Ingestion (Prelude.Maybe Prelude.Integer)
+ingestion_ingestionTimeInSeconds = Lens.lens (\Ingestion' {ingestionTimeInSeconds} -> ingestionTimeInSeconds) (\s@Ingestion' {} a -> s {ingestionTimeInSeconds = a} :: Ingestion)
+
+-- | Undocumented member.
+ingestion_queueInfo :: Lens.Lens' Ingestion (Prelude.Maybe QueueInfo)
+ingestion_queueInfo = Lens.lens (\Ingestion' {queueInfo} -> queueInfo) (\s@Ingestion' {} a -> s {queueInfo = a} :: Ingestion)
+
+-- | Event source for this ingestion.
+ingestion_requestSource :: Lens.Lens' Ingestion (Prelude.Maybe IngestionRequestSource)
+ingestion_requestSource = Lens.lens (\Ingestion' {requestSource} -> requestSource) (\s@Ingestion' {} a -> s {requestSource = a} :: Ingestion)
+
+-- | Type of this ingestion.
+ingestion_requestType :: Lens.Lens' Ingestion (Prelude.Maybe IngestionRequestType)
+ingestion_requestType = Lens.lens (\Ingestion' {requestType} -> requestType) (\s@Ingestion' {} a -> s {requestType = a} :: Ingestion)
+
+-- | Undocumented member.
+ingestion_rowInfo :: Lens.Lens' Ingestion (Prelude.Maybe RowInfo)
+ingestion_rowInfo = Lens.lens (\Ingestion' {rowInfo} -> rowInfo) (\s@Ingestion' {} a -> s {rowInfo = a} :: Ingestion)
+
+-- | The Amazon Resource Name (ARN) of the resource.
+ingestion_arn :: Lens.Lens' Ingestion Prelude.Text
+ingestion_arn = Lens.lens (\Ingestion' {arn} -> arn) (\s@Ingestion' {} a -> s {arn = a} :: Ingestion)
+
+-- | Ingestion status.
+ingestion_ingestionStatus :: Lens.Lens' Ingestion IngestionStatus
+ingestion_ingestionStatus = Lens.lens (\Ingestion' {ingestionStatus} -> ingestionStatus) (\s@Ingestion' {} a -> s {ingestionStatus = a} :: Ingestion)
+
+-- | The time that this ingestion started.
+ingestion_createdTime :: Lens.Lens' Ingestion Prelude.UTCTime
+ingestion_createdTime = Lens.lens (\Ingestion' {createdTime} -> createdTime) (\s@Ingestion' {} a -> s {createdTime = a} :: Ingestion) Prelude.. Data._Time
+
+instance Data.FromJSON Ingestion where
+  parseJSON =
+    Data.withObject
+      "Ingestion"
+      ( \x ->
+          Ingestion'
+            Prelude.<$> (x Data..:? "ErrorInfo")
+            Prelude.<*> (x Data..:? "IngestionId")
+            Prelude.<*> (x Data..:? "IngestionSizeInBytes")
+            Prelude.<*> (x Data..:? "IngestionTimeInSeconds")
+            Prelude.<*> (x Data..:? "QueueInfo")
+            Prelude.<*> (x Data..:? "RequestSource")
+            Prelude.<*> (x Data..:? "RequestType")
+            Prelude.<*> (x Data..:? "RowInfo")
+            Prelude.<*> (x Data..: "Arn")
+            Prelude.<*> (x Data..: "IngestionStatus")
+            Prelude.<*> (x Data..: "CreatedTime")
+      )
+
+instance Prelude.Hashable Ingestion where
+  hashWithSalt _salt Ingestion' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorInfo
+      `Prelude.hashWithSalt` ingestionId
+      `Prelude.hashWithSalt` ingestionSizeInBytes
+      `Prelude.hashWithSalt` ingestionTimeInSeconds
+      `Prelude.hashWithSalt` queueInfo
+      `Prelude.hashWithSalt` requestSource
+      `Prelude.hashWithSalt` requestType
+      `Prelude.hashWithSalt` rowInfo
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` ingestionStatus
+      `Prelude.hashWithSalt` createdTime
+
+instance Prelude.NFData Ingestion where
+  rnf Ingestion' {..} =
+    Prelude.rnf errorInfo
+      `Prelude.seq` Prelude.rnf ingestionId
+      `Prelude.seq` Prelude.rnf ingestionSizeInBytes
+      `Prelude.seq` Prelude.rnf ingestionTimeInSeconds
+      `Prelude.seq` Prelude.rnf queueInfo
+      `Prelude.seq` Prelude.rnf requestSource
+      `Prelude.seq` Prelude.rnf requestType
+      `Prelude.seq` Prelude.rnf rowInfo
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf ingestionStatus
+      `Prelude.seq` Prelude.rnf createdTime
diff --git a/gen/Amazonka/QuickSight/Types/IngestionErrorType.hs b/gen/Amazonka/QuickSight/Types/IngestionErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IngestionErrorType.hs
@@ -0,0 +1,281 @@
+{-# 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.QuickSight.Types.IngestionErrorType
+-- 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.QuickSight.Types.IngestionErrorType
+  ( IngestionErrorType
+      ( ..,
+        IngestionErrorType_ACCOUNT_CAPACITY_LIMIT_EXCEEDED,
+        IngestionErrorType_CONNECTION_FAILURE,
+        IngestionErrorType_CURSOR_NOT_ENABLED,
+        IngestionErrorType_CUSTOMER_ERROR,
+        IngestionErrorType_DATA_SET_DELETED,
+        IngestionErrorType_DATA_SET_NOT_SPICE,
+        IngestionErrorType_DATA_SET_SIZE_LIMIT_EXCEEDED,
+        IngestionErrorType_DATA_SOURCE_AUTH_FAILED,
+        IngestionErrorType_DATA_SOURCE_CONNECTION_FAILED,
+        IngestionErrorType_DATA_SOURCE_NOT_FOUND,
+        IngestionErrorType_DATA_TOLERANCE_EXCEPTION,
+        IngestionErrorType_ELASTICSEARCH_CURSOR_NOT_ENABLED,
+        IngestionErrorType_FAILURE_TO_ASSUME_ROLE,
+        IngestionErrorType_FAILURE_TO_PROCESS_JSON_FILE,
+        IngestionErrorType_IAM_ROLE_NOT_AVAILABLE,
+        IngestionErrorType_INGESTION_CANCELED,
+        IngestionErrorType_INGESTION_SUPERSEDED,
+        IngestionErrorType_INTERNAL_SERVICE_ERROR,
+        IngestionErrorType_INVALID_DATAPREP_SYNTAX,
+        IngestionErrorType_INVALID_DATA_SOURCE_CONFIG,
+        IngestionErrorType_INVALID_DATE_FORMAT,
+        IngestionErrorType_IOT_DATA_SET_FILE_EMPTY,
+        IngestionErrorType_IOT_FILE_NOT_FOUND,
+        IngestionErrorType_OAUTH_TOKEN_FAILURE,
+        IngestionErrorType_PASSWORD_AUTHENTICATION_FAILURE,
+        IngestionErrorType_PERMISSION_DENIED,
+        IngestionErrorType_PERMISSION_NOT_FOUND,
+        IngestionErrorType_QUERY_TIMEOUT,
+        IngestionErrorType_REFRESH_SUPPRESSED_BY_EDIT,
+        IngestionErrorType_ROW_SIZE_LIMIT_EXCEEDED,
+        IngestionErrorType_S3_FILE_INACCESSIBLE,
+        IngestionErrorType_S3_MANIFEST_ERROR,
+        IngestionErrorType_S3_UPLOADED_FILE_DELETED,
+        IngestionErrorType_SOURCE_API_LIMIT_EXCEEDED_FAILURE,
+        IngestionErrorType_SOURCE_RESOURCE_LIMIT_EXCEEDED,
+        IngestionErrorType_SPICE_TABLE_NOT_FOUND,
+        IngestionErrorType_SQL_EXCEPTION,
+        IngestionErrorType_SQL_INVALID_PARAMETER_VALUE,
+        IngestionErrorType_SQL_NUMERIC_OVERFLOW,
+        IngestionErrorType_SQL_SCHEMA_MISMATCH_ERROR,
+        IngestionErrorType_SQL_TABLE_NOT_FOUND,
+        IngestionErrorType_SSL_CERTIFICATE_VALIDATION_FAILURE,
+        IngestionErrorType_UNRESOLVABLE_HOST,
+        IngestionErrorType_UNROUTABLE_HOST
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IngestionErrorType = IngestionErrorType'
+  { fromIngestionErrorType ::
+      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 IngestionErrorType_ACCOUNT_CAPACITY_LIMIT_EXCEEDED :: IngestionErrorType
+pattern IngestionErrorType_ACCOUNT_CAPACITY_LIMIT_EXCEEDED = IngestionErrorType' "ACCOUNT_CAPACITY_LIMIT_EXCEEDED"
+
+pattern IngestionErrorType_CONNECTION_FAILURE :: IngestionErrorType
+pattern IngestionErrorType_CONNECTION_FAILURE = IngestionErrorType' "CONNECTION_FAILURE"
+
+pattern IngestionErrorType_CURSOR_NOT_ENABLED :: IngestionErrorType
+pattern IngestionErrorType_CURSOR_NOT_ENABLED = IngestionErrorType' "CURSOR_NOT_ENABLED"
+
+pattern IngestionErrorType_CUSTOMER_ERROR :: IngestionErrorType
+pattern IngestionErrorType_CUSTOMER_ERROR = IngestionErrorType' "CUSTOMER_ERROR"
+
+pattern IngestionErrorType_DATA_SET_DELETED :: IngestionErrorType
+pattern IngestionErrorType_DATA_SET_DELETED = IngestionErrorType' "DATA_SET_DELETED"
+
+pattern IngestionErrorType_DATA_SET_NOT_SPICE :: IngestionErrorType
+pattern IngestionErrorType_DATA_SET_NOT_SPICE = IngestionErrorType' "DATA_SET_NOT_SPICE"
+
+pattern IngestionErrorType_DATA_SET_SIZE_LIMIT_EXCEEDED :: IngestionErrorType
+pattern IngestionErrorType_DATA_SET_SIZE_LIMIT_EXCEEDED = IngestionErrorType' "DATA_SET_SIZE_LIMIT_EXCEEDED"
+
+pattern IngestionErrorType_DATA_SOURCE_AUTH_FAILED :: IngestionErrorType
+pattern IngestionErrorType_DATA_SOURCE_AUTH_FAILED = IngestionErrorType' "DATA_SOURCE_AUTH_FAILED"
+
+pattern IngestionErrorType_DATA_SOURCE_CONNECTION_FAILED :: IngestionErrorType
+pattern IngestionErrorType_DATA_SOURCE_CONNECTION_FAILED = IngestionErrorType' "DATA_SOURCE_CONNECTION_FAILED"
+
+pattern IngestionErrorType_DATA_SOURCE_NOT_FOUND :: IngestionErrorType
+pattern IngestionErrorType_DATA_SOURCE_NOT_FOUND = IngestionErrorType' "DATA_SOURCE_NOT_FOUND"
+
+pattern IngestionErrorType_DATA_TOLERANCE_EXCEPTION :: IngestionErrorType
+pattern IngestionErrorType_DATA_TOLERANCE_EXCEPTION = IngestionErrorType' "DATA_TOLERANCE_EXCEPTION"
+
+pattern IngestionErrorType_ELASTICSEARCH_CURSOR_NOT_ENABLED :: IngestionErrorType
+pattern IngestionErrorType_ELASTICSEARCH_CURSOR_NOT_ENABLED = IngestionErrorType' "ELASTICSEARCH_CURSOR_NOT_ENABLED"
+
+pattern IngestionErrorType_FAILURE_TO_ASSUME_ROLE :: IngestionErrorType
+pattern IngestionErrorType_FAILURE_TO_ASSUME_ROLE = IngestionErrorType' "FAILURE_TO_ASSUME_ROLE"
+
+pattern IngestionErrorType_FAILURE_TO_PROCESS_JSON_FILE :: IngestionErrorType
+pattern IngestionErrorType_FAILURE_TO_PROCESS_JSON_FILE = IngestionErrorType' "FAILURE_TO_PROCESS_JSON_FILE"
+
+pattern IngestionErrorType_IAM_ROLE_NOT_AVAILABLE :: IngestionErrorType
+pattern IngestionErrorType_IAM_ROLE_NOT_AVAILABLE = IngestionErrorType' "IAM_ROLE_NOT_AVAILABLE"
+
+pattern IngestionErrorType_INGESTION_CANCELED :: IngestionErrorType
+pattern IngestionErrorType_INGESTION_CANCELED = IngestionErrorType' "INGESTION_CANCELED"
+
+pattern IngestionErrorType_INGESTION_SUPERSEDED :: IngestionErrorType
+pattern IngestionErrorType_INGESTION_SUPERSEDED = IngestionErrorType' "INGESTION_SUPERSEDED"
+
+pattern IngestionErrorType_INTERNAL_SERVICE_ERROR :: IngestionErrorType
+pattern IngestionErrorType_INTERNAL_SERVICE_ERROR = IngestionErrorType' "INTERNAL_SERVICE_ERROR"
+
+pattern IngestionErrorType_INVALID_DATAPREP_SYNTAX :: IngestionErrorType
+pattern IngestionErrorType_INVALID_DATAPREP_SYNTAX = IngestionErrorType' "INVALID_DATAPREP_SYNTAX"
+
+pattern IngestionErrorType_INVALID_DATA_SOURCE_CONFIG :: IngestionErrorType
+pattern IngestionErrorType_INVALID_DATA_SOURCE_CONFIG = IngestionErrorType' "INVALID_DATA_SOURCE_CONFIG"
+
+pattern IngestionErrorType_INVALID_DATE_FORMAT :: IngestionErrorType
+pattern IngestionErrorType_INVALID_DATE_FORMAT = IngestionErrorType' "INVALID_DATE_FORMAT"
+
+pattern IngestionErrorType_IOT_DATA_SET_FILE_EMPTY :: IngestionErrorType
+pattern IngestionErrorType_IOT_DATA_SET_FILE_EMPTY = IngestionErrorType' "IOT_DATA_SET_FILE_EMPTY"
+
+pattern IngestionErrorType_IOT_FILE_NOT_FOUND :: IngestionErrorType
+pattern IngestionErrorType_IOT_FILE_NOT_FOUND = IngestionErrorType' "IOT_FILE_NOT_FOUND"
+
+pattern IngestionErrorType_OAUTH_TOKEN_FAILURE :: IngestionErrorType
+pattern IngestionErrorType_OAUTH_TOKEN_FAILURE = IngestionErrorType' "OAUTH_TOKEN_FAILURE"
+
+pattern IngestionErrorType_PASSWORD_AUTHENTICATION_FAILURE :: IngestionErrorType
+pattern IngestionErrorType_PASSWORD_AUTHENTICATION_FAILURE = IngestionErrorType' "PASSWORD_AUTHENTICATION_FAILURE"
+
+pattern IngestionErrorType_PERMISSION_DENIED :: IngestionErrorType
+pattern IngestionErrorType_PERMISSION_DENIED = IngestionErrorType' "PERMISSION_DENIED"
+
+pattern IngestionErrorType_PERMISSION_NOT_FOUND :: IngestionErrorType
+pattern IngestionErrorType_PERMISSION_NOT_FOUND = IngestionErrorType' "PERMISSION_NOT_FOUND"
+
+pattern IngestionErrorType_QUERY_TIMEOUT :: IngestionErrorType
+pattern IngestionErrorType_QUERY_TIMEOUT = IngestionErrorType' "QUERY_TIMEOUT"
+
+pattern IngestionErrorType_REFRESH_SUPPRESSED_BY_EDIT :: IngestionErrorType
+pattern IngestionErrorType_REFRESH_SUPPRESSED_BY_EDIT = IngestionErrorType' "REFRESH_SUPPRESSED_BY_EDIT"
+
+pattern IngestionErrorType_ROW_SIZE_LIMIT_EXCEEDED :: IngestionErrorType
+pattern IngestionErrorType_ROW_SIZE_LIMIT_EXCEEDED = IngestionErrorType' "ROW_SIZE_LIMIT_EXCEEDED"
+
+pattern IngestionErrorType_S3_FILE_INACCESSIBLE :: IngestionErrorType
+pattern IngestionErrorType_S3_FILE_INACCESSIBLE = IngestionErrorType' "S3_FILE_INACCESSIBLE"
+
+pattern IngestionErrorType_S3_MANIFEST_ERROR :: IngestionErrorType
+pattern IngestionErrorType_S3_MANIFEST_ERROR = IngestionErrorType' "S3_MANIFEST_ERROR"
+
+pattern IngestionErrorType_S3_UPLOADED_FILE_DELETED :: IngestionErrorType
+pattern IngestionErrorType_S3_UPLOADED_FILE_DELETED = IngestionErrorType' "S3_UPLOADED_FILE_DELETED"
+
+pattern IngestionErrorType_SOURCE_API_LIMIT_EXCEEDED_FAILURE :: IngestionErrorType
+pattern IngestionErrorType_SOURCE_API_LIMIT_EXCEEDED_FAILURE = IngestionErrorType' "SOURCE_API_LIMIT_EXCEEDED_FAILURE"
+
+pattern IngestionErrorType_SOURCE_RESOURCE_LIMIT_EXCEEDED :: IngestionErrorType
+pattern IngestionErrorType_SOURCE_RESOURCE_LIMIT_EXCEEDED = IngestionErrorType' "SOURCE_RESOURCE_LIMIT_EXCEEDED"
+
+pattern IngestionErrorType_SPICE_TABLE_NOT_FOUND :: IngestionErrorType
+pattern IngestionErrorType_SPICE_TABLE_NOT_FOUND = IngestionErrorType' "SPICE_TABLE_NOT_FOUND"
+
+pattern IngestionErrorType_SQL_EXCEPTION :: IngestionErrorType
+pattern IngestionErrorType_SQL_EXCEPTION = IngestionErrorType' "SQL_EXCEPTION"
+
+pattern IngestionErrorType_SQL_INVALID_PARAMETER_VALUE :: IngestionErrorType
+pattern IngestionErrorType_SQL_INVALID_PARAMETER_VALUE = IngestionErrorType' "SQL_INVALID_PARAMETER_VALUE"
+
+pattern IngestionErrorType_SQL_NUMERIC_OVERFLOW :: IngestionErrorType
+pattern IngestionErrorType_SQL_NUMERIC_OVERFLOW = IngestionErrorType' "SQL_NUMERIC_OVERFLOW"
+
+pattern IngestionErrorType_SQL_SCHEMA_MISMATCH_ERROR :: IngestionErrorType
+pattern IngestionErrorType_SQL_SCHEMA_MISMATCH_ERROR = IngestionErrorType' "SQL_SCHEMA_MISMATCH_ERROR"
+
+pattern IngestionErrorType_SQL_TABLE_NOT_FOUND :: IngestionErrorType
+pattern IngestionErrorType_SQL_TABLE_NOT_FOUND = IngestionErrorType' "SQL_TABLE_NOT_FOUND"
+
+pattern IngestionErrorType_SSL_CERTIFICATE_VALIDATION_FAILURE :: IngestionErrorType
+pattern IngestionErrorType_SSL_CERTIFICATE_VALIDATION_FAILURE = IngestionErrorType' "SSL_CERTIFICATE_VALIDATION_FAILURE"
+
+pattern IngestionErrorType_UNRESOLVABLE_HOST :: IngestionErrorType
+pattern IngestionErrorType_UNRESOLVABLE_HOST = IngestionErrorType' "UNRESOLVABLE_HOST"
+
+pattern IngestionErrorType_UNROUTABLE_HOST :: IngestionErrorType
+pattern IngestionErrorType_UNROUTABLE_HOST = IngestionErrorType' "UNROUTABLE_HOST"
+
+{-# COMPLETE
+  IngestionErrorType_ACCOUNT_CAPACITY_LIMIT_EXCEEDED,
+  IngestionErrorType_CONNECTION_FAILURE,
+  IngestionErrorType_CURSOR_NOT_ENABLED,
+  IngestionErrorType_CUSTOMER_ERROR,
+  IngestionErrorType_DATA_SET_DELETED,
+  IngestionErrorType_DATA_SET_NOT_SPICE,
+  IngestionErrorType_DATA_SET_SIZE_LIMIT_EXCEEDED,
+  IngestionErrorType_DATA_SOURCE_AUTH_FAILED,
+  IngestionErrorType_DATA_SOURCE_CONNECTION_FAILED,
+  IngestionErrorType_DATA_SOURCE_NOT_FOUND,
+  IngestionErrorType_DATA_TOLERANCE_EXCEPTION,
+  IngestionErrorType_ELASTICSEARCH_CURSOR_NOT_ENABLED,
+  IngestionErrorType_FAILURE_TO_ASSUME_ROLE,
+  IngestionErrorType_FAILURE_TO_PROCESS_JSON_FILE,
+  IngestionErrorType_IAM_ROLE_NOT_AVAILABLE,
+  IngestionErrorType_INGESTION_CANCELED,
+  IngestionErrorType_INGESTION_SUPERSEDED,
+  IngestionErrorType_INTERNAL_SERVICE_ERROR,
+  IngestionErrorType_INVALID_DATAPREP_SYNTAX,
+  IngestionErrorType_INVALID_DATA_SOURCE_CONFIG,
+  IngestionErrorType_INVALID_DATE_FORMAT,
+  IngestionErrorType_IOT_DATA_SET_FILE_EMPTY,
+  IngestionErrorType_IOT_FILE_NOT_FOUND,
+  IngestionErrorType_OAUTH_TOKEN_FAILURE,
+  IngestionErrorType_PASSWORD_AUTHENTICATION_FAILURE,
+  IngestionErrorType_PERMISSION_DENIED,
+  IngestionErrorType_PERMISSION_NOT_FOUND,
+  IngestionErrorType_QUERY_TIMEOUT,
+  IngestionErrorType_REFRESH_SUPPRESSED_BY_EDIT,
+  IngestionErrorType_ROW_SIZE_LIMIT_EXCEEDED,
+  IngestionErrorType_S3_FILE_INACCESSIBLE,
+  IngestionErrorType_S3_MANIFEST_ERROR,
+  IngestionErrorType_S3_UPLOADED_FILE_DELETED,
+  IngestionErrorType_SOURCE_API_LIMIT_EXCEEDED_FAILURE,
+  IngestionErrorType_SOURCE_RESOURCE_LIMIT_EXCEEDED,
+  IngestionErrorType_SPICE_TABLE_NOT_FOUND,
+  IngestionErrorType_SQL_EXCEPTION,
+  IngestionErrorType_SQL_INVALID_PARAMETER_VALUE,
+  IngestionErrorType_SQL_NUMERIC_OVERFLOW,
+  IngestionErrorType_SQL_SCHEMA_MISMATCH_ERROR,
+  IngestionErrorType_SQL_TABLE_NOT_FOUND,
+  IngestionErrorType_SSL_CERTIFICATE_VALIDATION_FAILURE,
+  IngestionErrorType_UNRESOLVABLE_HOST,
+  IngestionErrorType_UNROUTABLE_HOST,
+  IngestionErrorType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IngestionRequestSource.hs b/gen/Amazonka/QuickSight/Types/IngestionRequestSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IngestionRequestSource.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.QuickSight.Types.IngestionRequestSource
+-- 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.QuickSight.Types.IngestionRequestSource
+  ( IngestionRequestSource
+      ( ..,
+        IngestionRequestSource_MANUAL,
+        IngestionRequestSource_SCHEDULED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IngestionRequestSource = IngestionRequestSource'
+  { fromIngestionRequestSource ::
+      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 IngestionRequestSource_MANUAL :: IngestionRequestSource
+pattern IngestionRequestSource_MANUAL = IngestionRequestSource' "MANUAL"
+
+pattern IngestionRequestSource_SCHEDULED :: IngestionRequestSource
+pattern IngestionRequestSource_SCHEDULED = IngestionRequestSource' "SCHEDULED"
+
+{-# COMPLETE
+  IngestionRequestSource_MANUAL,
+  IngestionRequestSource_SCHEDULED,
+  IngestionRequestSource'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IngestionRequestType.hs b/gen/Amazonka/QuickSight/Types/IngestionRequestType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IngestionRequestType.hs
@@ -0,0 +1,83 @@
+{-# 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.QuickSight.Types.IngestionRequestType
+-- 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.QuickSight.Types.IngestionRequestType
+  ( IngestionRequestType
+      ( ..,
+        IngestionRequestType_EDIT,
+        IngestionRequestType_FULL_REFRESH,
+        IngestionRequestType_INCREMENTAL_REFRESH,
+        IngestionRequestType_INITIAL_INGESTION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This defines the type of ingestion request. This is returned as part of
+-- create ingestion response.
+newtype IngestionRequestType = IngestionRequestType'
+  { fromIngestionRequestType ::
+      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 IngestionRequestType_EDIT :: IngestionRequestType
+pattern IngestionRequestType_EDIT = IngestionRequestType' "EDIT"
+
+pattern IngestionRequestType_FULL_REFRESH :: IngestionRequestType
+pattern IngestionRequestType_FULL_REFRESH = IngestionRequestType' "FULL_REFRESH"
+
+pattern IngestionRequestType_INCREMENTAL_REFRESH :: IngestionRequestType
+pattern IngestionRequestType_INCREMENTAL_REFRESH = IngestionRequestType' "INCREMENTAL_REFRESH"
+
+pattern IngestionRequestType_INITIAL_INGESTION :: IngestionRequestType
+pattern IngestionRequestType_INITIAL_INGESTION = IngestionRequestType' "INITIAL_INGESTION"
+
+{-# COMPLETE
+  IngestionRequestType_EDIT,
+  IngestionRequestType_FULL_REFRESH,
+  IngestionRequestType_INCREMENTAL_REFRESH,
+  IngestionRequestType_INITIAL_INGESTION,
+  IngestionRequestType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IngestionStatus.hs b/gen/Amazonka/QuickSight/Types/IngestionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IngestionStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.IngestionStatus
+-- 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.QuickSight.Types.IngestionStatus
+  ( IngestionStatus
+      ( ..,
+        IngestionStatus_CANCELLED,
+        IngestionStatus_COMPLETED,
+        IngestionStatus_FAILED,
+        IngestionStatus_INITIALIZED,
+        IngestionStatus_QUEUED,
+        IngestionStatus_RUNNING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IngestionStatus = IngestionStatus'
+  { fromIngestionStatus ::
+      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 IngestionStatus_CANCELLED :: IngestionStatus
+pattern IngestionStatus_CANCELLED = IngestionStatus' "CANCELLED"
+
+pattern IngestionStatus_COMPLETED :: IngestionStatus
+pattern IngestionStatus_COMPLETED = IngestionStatus' "COMPLETED"
+
+pattern IngestionStatus_FAILED :: IngestionStatus
+pattern IngestionStatus_FAILED = IngestionStatus' "FAILED"
+
+pattern IngestionStatus_INITIALIZED :: IngestionStatus
+pattern IngestionStatus_INITIALIZED = IngestionStatus' "INITIALIZED"
+
+pattern IngestionStatus_QUEUED :: IngestionStatus
+pattern IngestionStatus_QUEUED = IngestionStatus' "QUEUED"
+
+pattern IngestionStatus_RUNNING :: IngestionStatus
+pattern IngestionStatus_RUNNING = IngestionStatus' "RUNNING"
+
+{-# COMPLETE
+  IngestionStatus_CANCELLED,
+  IngestionStatus_COMPLETED,
+  IngestionStatus_FAILED,
+  IngestionStatus_INITIALIZED,
+  IngestionStatus_QUEUED,
+  IngestionStatus_RUNNING,
+  IngestionStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/IngestionType.hs b/gen/Amazonka/QuickSight/Types/IngestionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IngestionType.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.IngestionType
+-- 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.QuickSight.Types.IngestionType
+  ( IngestionType
+      ( ..,
+        IngestionType_FULL_REFRESH,
+        IngestionType_INCREMENTAL_REFRESH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This defines the type of ingestion user wants to trigger. This is part
+-- of create ingestion request.
+newtype IngestionType = IngestionType'
+  { fromIngestionType ::
+      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 IngestionType_FULL_REFRESH :: IngestionType
+pattern IngestionType_FULL_REFRESH = IngestionType' "FULL_REFRESH"
+
+pattern IngestionType_INCREMENTAL_REFRESH :: IngestionType
+pattern IngestionType_INCREMENTAL_REFRESH = IngestionType' "INCREMENTAL_REFRESH"
+
+{-# COMPLETE
+  IngestionType_FULL_REFRESH,
+  IngestionType_INCREMENTAL_REFRESH,
+  IngestionType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/InputColumn.hs b/gen/Amazonka/QuickSight/Types/InputColumn.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/InputColumn.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.InputColumn
+-- 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.QuickSight.Types.InputColumn 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.QuickSight.Types.InputColumnDataType
+
+-- | Metadata for a column that is used as the input of a transform
+-- operation.
+--
+-- /See:/ 'newInputColumn' smart constructor.
+data InputColumn = InputColumn'
+  { -- | The name of this column in the underlying data source.
+    name :: Prelude.Text,
+    -- | The data type of the column.
+    type' :: InputColumnDataType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputColumn' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'inputColumn_name' - The name of this column in the underlying data source.
+--
+-- 'type'', 'inputColumn_type' - The data type of the column.
+newInputColumn ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  InputColumnDataType ->
+  InputColumn
+newInputColumn pName_ pType_ =
+  InputColumn' {name = pName_, type' = pType_}
+
+-- | The name of this column in the underlying data source.
+inputColumn_name :: Lens.Lens' InputColumn Prelude.Text
+inputColumn_name = Lens.lens (\InputColumn' {name} -> name) (\s@InputColumn' {} a -> s {name = a} :: InputColumn)
+
+-- | The data type of the column.
+inputColumn_type :: Lens.Lens' InputColumn InputColumnDataType
+inputColumn_type = Lens.lens (\InputColumn' {type'} -> type') (\s@InputColumn' {} a -> s {type' = a} :: InputColumn)
+
+instance Data.FromJSON InputColumn where
+  parseJSON =
+    Data.withObject
+      "InputColumn"
+      ( \x ->
+          InputColumn'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable InputColumn where
+  hashWithSalt _salt InputColumn' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData InputColumn where
+  rnf InputColumn' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON InputColumn where
+  toJSON InputColumn' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/InputColumnDataType.hs b/gen/Amazonka/QuickSight/Types/InputColumnDataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/InputColumnDataType.hs
@@ -0,0 +1,96 @@
+{-# 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.QuickSight.Types.InputColumnDataType
+-- 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.QuickSight.Types.InputColumnDataType
+  ( InputColumnDataType
+      ( ..,
+        InputColumnDataType_BIT,
+        InputColumnDataType_BOOLEAN,
+        InputColumnDataType_DATETIME,
+        InputColumnDataType_DECIMAL,
+        InputColumnDataType_INTEGER,
+        InputColumnDataType_JSON,
+        InputColumnDataType_STRING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InputColumnDataType = InputColumnDataType'
+  { fromInputColumnDataType ::
+      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 InputColumnDataType_BIT :: InputColumnDataType
+pattern InputColumnDataType_BIT = InputColumnDataType' "BIT"
+
+pattern InputColumnDataType_BOOLEAN :: InputColumnDataType
+pattern InputColumnDataType_BOOLEAN = InputColumnDataType' "BOOLEAN"
+
+pattern InputColumnDataType_DATETIME :: InputColumnDataType
+pattern InputColumnDataType_DATETIME = InputColumnDataType' "DATETIME"
+
+pattern InputColumnDataType_DECIMAL :: InputColumnDataType
+pattern InputColumnDataType_DECIMAL = InputColumnDataType' "DECIMAL"
+
+pattern InputColumnDataType_INTEGER :: InputColumnDataType
+pattern InputColumnDataType_INTEGER = InputColumnDataType' "INTEGER"
+
+pattern InputColumnDataType_JSON :: InputColumnDataType
+pattern InputColumnDataType_JSON = InputColumnDataType' "JSON"
+
+pattern InputColumnDataType_STRING :: InputColumnDataType
+pattern InputColumnDataType_STRING = InputColumnDataType' "STRING"
+
+{-# COMPLETE
+  InputColumnDataType_BIT,
+  InputColumnDataType_BOOLEAN,
+  InputColumnDataType_DATETIME,
+  InputColumnDataType_DECIMAL,
+  InputColumnDataType_INTEGER,
+  InputColumnDataType_JSON,
+  InputColumnDataType_STRING,
+  InputColumnDataType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/InsightConfiguration.hs b/gen/Amazonka/QuickSight/Types/InsightConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/InsightConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.InsightConfiguration
+-- 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.QuickSight.Types.InsightConfiguration 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.QuickSight.Types.Computation
+import Amazonka.QuickSight.Types.CustomNarrativeOptions
+
+-- | The configuration of an insight visual.
+--
+-- /See:/ 'newInsightConfiguration' smart constructor.
+data InsightConfiguration = InsightConfiguration'
+  { -- | The computations configurations of the insight visual
+    computations :: Prelude.Maybe [Computation],
+    -- | The custom narrative of the insight visual.
+    customNarrative :: Prelude.Maybe CustomNarrativeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InsightConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'computations', 'insightConfiguration_computations' - The computations configurations of the insight visual
+--
+-- 'customNarrative', 'insightConfiguration_customNarrative' - The custom narrative of the insight visual.
+newInsightConfiguration ::
+  InsightConfiguration
+newInsightConfiguration =
+  InsightConfiguration'
+    { computations =
+        Prelude.Nothing,
+      customNarrative = Prelude.Nothing
+    }
+
+-- | The computations configurations of the insight visual
+insightConfiguration_computations :: Lens.Lens' InsightConfiguration (Prelude.Maybe [Computation])
+insightConfiguration_computations = Lens.lens (\InsightConfiguration' {computations} -> computations) (\s@InsightConfiguration' {} a -> s {computations = a} :: InsightConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The custom narrative of the insight visual.
+insightConfiguration_customNarrative :: Lens.Lens' InsightConfiguration (Prelude.Maybe CustomNarrativeOptions)
+insightConfiguration_customNarrative = Lens.lens (\InsightConfiguration' {customNarrative} -> customNarrative) (\s@InsightConfiguration' {} a -> s {customNarrative = a} :: InsightConfiguration)
+
+instance Data.FromJSON InsightConfiguration where
+  parseJSON =
+    Data.withObject
+      "InsightConfiguration"
+      ( \x ->
+          InsightConfiguration'
+            Prelude.<$> (x Data..:? "Computations" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "CustomNarrative")
+      )
+
+instance Prelude.Hashable InsightConfiguration where
+  hashWithSalt _salt InsightConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` computations
+      `Prelude.hashWithSalt` customNarrative
+
+instance Prelude.NFData InsightConfiguration where
+  rnf InsightConfiguration' {..} =
+    Prelude.rnf computations
+      `Prelude.seq` Prelude.rnf customNarrative
+
+instance Data.ToJSON InsightConfiguration where
+  toJSON InsightConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Computations" Data..=) Prelude.<$> computations,
+            ("CustomNarrative" Data..=)
+              Prelude.<$> customNarrative
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/InsightVisual.hs b/gen/Amazonka/QuickSight/Types/InsightVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/InsightVisual.hs
@@ -0,0 +1,165 @@
+{-# 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.QuickSight.Types.InsightVisual
+-- 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.QuickSight.Types.InsightVisual 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.QuickSight.Types.InsightConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | An insight visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/computational-insights.html Working with insights>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newInsightVisual' smart constructor.
+data InsightVisual = InsightVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of an insight visual.
+    insightConfiguration :: Prelude.Maybe InsightConfiguration,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text,
+    -- | The dataset that is used in the insight visual.
+    dataSetIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InsightVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'insightVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'insightConfiguration', 'insightVisual_insightConfiguration' - The configuration of an insight visual.
+--
+-- 'subtitle', 'insightVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'insightVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'insightVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+--
+-- 'dataSetIdentifier', 'insightVisual_dataSetIdentifier' - The dataset that is used in the insight visual.
+newInsightVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  -- | 'dataSetIdentifier'
+  Prelude.Text ->
+  InsightVisual
+newInsightVisual pVisualId_ pDataSetIdentifier_ =
+  InsightVisual'
+    { actions = Prelude.Nothing,
+      insightConfiguration = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_,
+      dataSetIdentifier = pDataSetIdentifier_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+insightVisual_actions :: Lens.Lens' InsightVisual (Prelude.Maybe [VisualCustomAction])
+insightVisual_actions = Lens.lens (\InsightVisual' {actions} -> actions) (\s@InsightVisual' {} a -> s {actions = a} :: InsightVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of an insight visual.
+insightVisual_insightConfiguration :: Lens.Lens' InsightVisual (Prelude.Maybe InsightConfiguration)
+insightVisual_insightConfiguration = Lens.lens (\InsightVisual' {insightConfiguration} -> insightConfiguration) (\s@InsightVisual' {} a -> s {insightConfiguration = a} :: InsightVisual)
+
+-- | The subtitle that is displayed on the visual.
+insightVisual_subtitle :: Lens.Lens' InsightVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+insightVisual_subtitle = Lens.lens (\InsightVisual' {subtitle} -> subtitle) (\s@InsightVisual' {} a -> s {subtitle = a} :: InsightVisual)
+
+-- | The title that is displayed on the visual.
+insightVisual_title :: Lens.Lens' InsightVisual (Prelude.Maybe VisualTitleLabelOptions)
+insightVisual_title = Lens.lens (\InsightVisual' {title} -> title) (\s@InsightVisual' {} a -> s {title = a} :: InsightVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+insightVisual_visualId :: Lens.Lens' InsightVisual Prelude.Text
+insightVisual_visualId = Lens.lens (\InsightVisual' {visualId} -> visualId) (\s@InsightVisual' {} a -> s {visualId = a} :: InsightVisual)
+
+-- | The dataset that is used in the insight visual.
+insightVisual_dataSetIdentifier :: Lens.Lens' InsightVisual Prelude.Text
+insightVisual_dataSetIdentifier = Lens.lens (\InsightVisual' {dataSetIdentifier} -> dataSetIdentifier) (\s@InsightVisual' {} a -> s {dataSetIdentifier = a} :: InsightVisual)
+
+instance Data.FromJSON InsightVisual where
+  parseJSON =
+    Data.withObject
+      "InsightVisual"
+      ( \x ->
+          InsightVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "InsightConfiguration")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+            Prelude.<*> (x Data..: "DataSetIdentifier")
+      )
+
+instance Prelude.Hashable InsightVisual where
+  hashWithSalt _salt InsightVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` insightConfiguration
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+      `Prelude.hashWithSalt` dataSetIdentifier
+
+instance Prelude.NFData InsightVisual where
+  rnf InsightVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf insightConfiguration
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+      `Prelude.seq` Prelude.rnf dataSetIdentifier
+
+instance Data.ToJSON InsightVisual where
+  toJSON InsightVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("InsightConfiguration" Data..=)
+              Prelude.<$> insightConfiguration,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId),
+            Prelude.Just
+              ("DataSetIdentifier" Data..= dataSetIdentifier)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/IntegerDefaultValues.hs b/gen/Amazonka/QuickSight/Types/IntegerDefaultValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IntegerDefaultValues.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.IntegerDefaultValues
+-- 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.QuickSight.Types.IntegerDefaultValues 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.QuickSight.Types.DynamicDefaultValue
+
+-- | The default values of the @IntegerParameterDeclaration@.
+--
+-- /See:/ 'newIntegerDefaultValues' smart constructor.
+data IntegerDefaultValues = IntegerDefaultValues'
+  { -- | The dynamic value of the @IntegerDefaultValues@. Different defaults are
+    -- displayed according to users, groups, and values mapping.
+    dynamicValue :: Prelude.Maybe DynamicDefaultValue,
+    -- | The static values of the @IntegerDefaultValues@.
+    staticValues :: Prelude.Maybe [Data.Sensitive Prelude.Integer]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IntegerDefaultValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dynamicValue', 'integerDefaultValues_dynamicValue' - The dynamic value of the @IntegerDefaultValues@. Different defaults are
+-- displayed according to users, groups, and values mapping.
+--
+-- 'staticValues', 'integerDefaultValues_staticValues' - The static values of the @IntegerDefaultValues@.
+newIntegerDefaultValues ::
+  IntegerDefaultValues
+newIntegerDefaultValues =
+  IntegerDefaultValues'
+    { dynamicValue =
+        Prelude.Nothing,
+      staticValues = Prelude.Nothing
+    }
+
+-- | The dynamic value of the @IntegerDefaultValues@. Different defaults are
+-- displayed according to users, groups, and values mapping.
+integerDefaultValues_dynamicValue :: Lens.Lens' IntegerDefaultValues (Prelude.Maybe DynamicDefaultValue)
+integerDefaultValues_dynamicValue = Lens.lens (\IntegerDefaultValues' {dynamicValue} -> dynamicValue) (\s@IntegerDefaultValues' {} a -> s {dynamicValue = a} :: IntegerDefaultValues)
+
+-- | The static values of the @IntegerDefaultValues@.
+integerDefaultValues_staticValues :: Lens.Lens' IntegerDefaultValues (Prelude.Maybe [Prelude.Integer])
+integerDefaultValues_staticValues = Lens.lens (\IntegerDefaultValues' {staticValues} -> staticValues) (\s@IntegerDefaultValues' {} a -> s {staticValues = a} :: IntegerDefaultValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON IntegerDefaultValues where
+  parseJSON =
+    Data.withObject
+      "IntegerDefaultValues"
+      ( \x ->
+          IntegerDefaultValues'
+            Prelude.<$> (x Data..:? "DynamicValue")
+            Prelude.<*> (x Data..:? "StaticValues" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable IntegerDefaultValues where
+  hashWithSalt _salt IntegerDefaultValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` dynamicValue
+      `Prelude.hashWithSalt` staticValues
+
+instance Prelude.NFData IntegerDefaultValues where
+  rnf IntegerDefaultValues' {..} =
+    Prelude.rnf dynamicValue
+      `Prelude.seq` Prelude.rnf staticValues
+
+instance Data.ToJSON IntegerDefaultValues where
+  toJSON IntegerDefaultValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DynamicValue" Data..=) Prelude.<$> dynamicValue,
+            ("StaticValues" Data..=) Prelude.<$> staticValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/IntegerParameter.hs b/gen/Amazonka/QuickSight/Types/IntegerParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IntegerParameter.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.QuickSight.Types.IntegerParameter
+-- 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.QuickSight.Types.IntegerParameter 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
+
+-- | An integer parameter.
+--
+-- /See:/ 'newIntegerParameter' smart constructor.
+data IntegerParameter = IntegerParameter'
+  { -- | The name of the integer parameter.
+    name :: Prelude.Text,
+    -- | The values for the integer parameter.
+    values :: [Data.Sensitive Prelude.Integer]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IntegerParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'integerParameter_name' - The name of the integer parameter.
+--
+-- 'values', 'integerParameter_values' - The values for the integer parameter.
+newIntegerParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  IntegerParameter
+newIntegerParameter pName_ =
+  IntegerParameter'
+    { name = pName_,
+      values = Prelude.mempty
+    }
+
+-- | The name of the integer parameter.
+integerParameter_name :: Lens.Lens' IntegerParameter Prelude.Text
+integerParameter_name = Lens.lens (\IntegerParameter' {name} -> name) (\s@IntegerParameter' {} a -> s {name = a} :: IntegerParameter)
+
+-- | The values for the integer parameter.
+integerParameter_values :: Lens.Lens' IntegerParameter [Prelude.Integer]
+integerParameter_values = Lens.lens (\IntegerParameter' {values} -> values) (\s@IntegerParameter' {} a -> s {values = a} :: IntegerParameter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable IntegerParameter where
+  hashWithSalt _salt IntegerParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData IntegerParameter where
+  rnf IntegerParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON IntegerParameter where
+  toJSON IntegerParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/IntegerParameterDeclaration.hs b/gen/Amazonka/QuickSight/Types/IntegerParameterDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IntegerParameterDeclaration.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.IntegerParameterDeclaration
+-- 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.QuickSight.Types.IntegerParameterDeclaration 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.QuickSight.Types.IntegerDefaultValues
+import Amazonka.QuickSight.Types.IntegerValueWhenUnsetConfiguration
+import Amazonka.QuickSight.Types.ParameterValueType
+
+-- | A parameter declaration for the @Integer@ data type.
+--
+-- /See:/ 'newIntegerParameterDeclaration' smart constructor.
+data IntegerParameterDeclaration = IntegerParameterDeclaration'
+  { -- | The default values of a parameter. If the parameter is a single-value
+    -- parameter, a maximum of one default value can be provided.
+    defaultValues :: Prelude.Maybe IntegerDefaultValues,
+    -- | A parameter declaration for the @Integer@ data type.
+    valueWhenUnset :: Prelude.Maybe IntegerValueWhenUnsetConfiguration,
+    -- | The value type determines whether the parameter is a single-value or
+    -- multi-value parameter.
+    parameterValueType :: ParameterValueType,
+    -- | The name of the parameter that is being declared.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IntegerParameterDeclaration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultValues', 'integerParameterDeclaration_defaultValues' - The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+--
+-- 'valueWhenUnset', 'integerParameterDeclaration_valueWhenUnset' - A parameter declaration for the @Integer@ data type.
+--
+-- 'parameterValueType', 'integerParameterDeclaration_parameterValueType' - The value type determines whether the parameter is a single-value or
+-- multi-value parameter.
+--
+-- 'name', 'integerParameterDeclaration_name' - The name of the parameter that is being declared.
+newIntegerParameterDeclaration ::
+  -- | 'parameterValueType'
+  ParameterValueType ->
+  -- | 'name'
+  Prelude.Text ->
+  IntegerParameterDeclaration
+newIntegerParameterDeclaration
+  pParameterValueType_
+  pName_ =
+    IntegerParameterDeclaration'
+      { defaultValues =
+          Prelude.Nothing,
+        valueWhenUnset = Prelude.Nothing,
+        parameterValueType = pParameterValueType_,
+        name = pName_
+      }
+
+-- | The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+integerParameterDeclaration_defaultValues :: Lens.Lens' IntegerParameterDeclaration (Prelude.Maybe IntegerDefaultValues)
+integerParameterDeclaration_defaultValues = Lens.lens (\IntegerParameterDeclaration' {defaultValues} -> defaultValues) (\s@IntegerParameterDeclaration' {} a -> s {defaultValues = a} :: IntegerParameterDeclaration)
+
+-- | A parameter declaration for the @Integer@ data type.
+integerParameterDeclaration_valueWhenUnset :: Lens.Lens' IntegerParameterDeclaration (Prelude.Maybe IntegerValueWhenUnsetConfiguration)
+integerParameterDeclaration_valueWhenUnset = Lens.lens (\IntegerParameterDeclaration' {valueWhenUnset} -> valueWhenUnset) (\s@IntegerParameterDeclaration' {} a -> s {valueWhenUnset = a} :: IntegerParameterDeclaration)
+
+-- | The value type determines whether the parameter is a single-value or
+-- multi-value parameter.
+integerParameterDeclaration_parameterValueType :: Lens.Lens' IntegerParameterDeclaration ParameterValueType
+integerParameterDeclaration_parameterValueType = Lens.lens (\IntegerParameterDeclaration' {parameterValueType} -> parameterValueType) (\s@IntegerParameterDeclaration' {} a -> s {parameterValueType = a} :: IntegerParameterDeclaration)
+
+-- | The name of the parameter that is being declared.
+integerParameterDeclaration_name :: Lens.Lens' IntegerParameterDeclaration Prelude.Text
+integerParameterDeclaration_name = Lens.lens (\IntegerParameterDeclaration' {name} -> name) (\s@IntegerParameterDeclaration' {} a -> s {name = a} :: IntegerParameterDeclaration)
+
+instance Data.FromJSON IntegerParameterDeclaration where
+  parseJSON =
+    Data.withObject
+      "IntegerParameterDeclaration"
+      ( \x ->
+          IntegerParameterDeclaration'
+            Prelude.<$> (x Data..:? "DefaultValues")
+            Prelude.<*> (x Data..:? "ValueWhenUnset")
+            Prelude.<*> (x Data..: "ParameterValueType")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable IntegerParameterDeclaration where
+  hashWithSalt _salt IntegerParameterDeclaration' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultValues
+      `Prelude.hashWithSalt` valueWhenUnset
+      `Prelude.hashWithSalt` parameterValueType
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData IntegerParameterDeclaration where
+  rnf IntegerParameterDeclaration' {..} =
+    Prelude.rnf defaultValues
+      `Prelude.seq` Prelude.rnf valueWhenUnset
+      `Prelude.seq` Prelude.rnf parameterValueType
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON IntegerParameterDeclaration where
+  toJSON IntegerParameterDeclaration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultValues" Data..=) Prelude.<$> defaultValues,
+            ("ValueWhenUnset" Data..=)
+              Prelude.<$> valueWhenUnset,
+            Prelude.Just
+              ("ParameterValueType" Data..= parameterValueType),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/IntegerValueWhenUnsetConfiguration.hs b/gen/Amazonka/QuickSight/Types/IntegerValueWhenUnsetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/IntegerValueWhenUnsetConfiguration.hs
@@ -0,0 +1,128 @@
+{-# 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.QuickSight.Types.IntegerValueWhenUnsetConfiguration
+-- 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.QuickSight.Types.IntegerValueWhenUnsetConfiguration 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.QuickSight.Types.ValueWhenUnsetOption
+
+-- | A parameter declaration for the @Integer@ data type.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newIntegerValueWhenUnsetConfiguration' smart constructor.
+data IntegerValueWhenUnsetConfiguration = IntegerValueWhenUnsetConfiguration'
+  { -- | A custom value that\'s used when the value of a parameter isn\'t set.
+    customValue :: Prelude.Maybe (Data.Sensitive Prelude.Integer),
+    -- | The built-in options for default values. The value can be one of the
+    -- following:
+    --
+    -- -   @RECOMMENDED@: The recommended value.
+    --
+    -- -   @NULL@: The @NULL@ value.
+    valueWhenUnsetOption :: Prelude.Maybe ValueWhenUnsetOption
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IntegerValueWhenUnsetConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customValue', 'integerValueWhenUnsetConfiguration_customValue' - A custom value that\'s used when the value of a parameter isn\'t set.
+--
+-- 'valueWhenUnsetOption', 'integerValueWhenUnsetConfiguration_valueWhenUnsetOption' - The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+newIntegerValueWhenUnsetConfiguration ::
+  IntegerValueWhenUnsetConfiguration
+newIntegerValueWhenUnsetConfiguration =
+  IntegerValueWhenUnsetConfiguration'
+    { customValue =
+        Prelude.Nothing,
+      valueWhenUnsetOption = Prelude.Nothing
+    }
+
+-- | A custom value that\'s used when the value of a parameter isn\'t set.
+integerValueWhenUnsetConfiguration_customValue :: Lens.Lens' IntegerValueWhenUnsetConfiguration (Prelude.Maybe Prelude.Integer)
+integerValueWhenUnsetConfiguration_customValue = Lens.lens (\IntegerValueWhenUnsetConfiguration' {customValue} -> customValue) (\s@IntegerValueWhenUnsetConfiguration' {} a -> s {customValue = a} :: IntegerValueWhenUnsetConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+integerValueWhenUnsetConfiguration_valueWhenUnsetOption :: Lens.Lens' IntegerValueWhenUnsetConfiguration (Prelude.Maybe ValueWhenUnsetOption)
+integerValueWhenUnsetConfiguration_valueWhenUnsetOption = Lens.lens (\IntegerValueWhenUnsetConfiguration' {valueWhenUnsetOption} -> valueWhenUnsetOption) (\s@IntegerValueWhenUnsetConfiguration' {} a -> s {valueWhenUnsetOption = a} :: IntegerValueWhenUnsetConfiguration)
+
+instance
+  Data.FromJSON
+    IntegerValueWhenUnsetConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "IntegerValueWhenUnsetConfiguration"
+      ( \x ->
+          IntegerValueWhenUnsetConfiguration'
+            Prelude.<$> (x Data..:? "CustomValue")
+            Prelude.<*> (x Data..:? "ValueWhenUnsetOption")
+      )
+
+instance
+  Prelude.Hashable
+    IntegerValueWhenUnsetConfiguration
+  where
+  hashWithSalt
+    _salt
+    IntegerValueWhenUnsetConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customValue
+        `Prelude.hashWithSalt` valueWhenUnsetOption
+
+instance
+  Prelude.NFData
+    IntegerValueWhenUnsetConfiguration
+  where
+  rnf IntegerValueWhenUnsetConfiguration' {..} =
+    Prelude.rnf customValue
+      `Prelude.seq` Prelude.rnf valueWhenUnsetOption
+
+instance
+  Data.ToJSON
+    IntegerValueWhenUnsetConfiguration
+  where
+  toJSON IntegerValueWhenUnsetConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomValue" Data..=) Prelude.<$> customValue,
+            ("ValueWhenUnsetOption" Data..=)
+              Prelude.<$> valueWhenUnsetOption
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ItemsLimitConfiguration.hs b/gen/Amazonka/QuickSight/Types/ItemsLimitConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ItemsLimitConfiguration.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.ItemsLimitConfiguration
+-- 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.QuickSight.Types.ItemsLimitConfiguration 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.QuickSight.Types.OtherCategories
+
+-- | The limit configuration of the visual display for an axis.
+--
+-- /See:/ 'newItemsLimitConfiguration' smart constructor.
+data ItemsLimitConfiguration = ItemsLimitConfiguration'
+  { -- | The limit on how many items of a field are showed in the chart. For
+    -- example, the number of slices that are displayed in a pie chart.
+    itemsLimit :: Prelude.Maybe Prelude.Integer,
+    -- | The @Show other@ of an axis in the chart. Choose one of the following
+    -- options:
+    --
+    -- -   @INCLUDE@
+    --
+    -- -   @EXCLUDE@
+    otherCategories :: Prelude.Maybe OtherCategories
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ItemsLimitConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'itemsLimit', 'itemsLimitConfiguration_itemsLimit' - The limit on how many items of a field are showed in the chart. For
+-- example, the number of slices that are displayed in a pie chart.
+--
+-- 'otherCategories', 'itemsLimitConfiguration_otherCategories' - The @Show other@ of an axis in the chart. Choose one of the following
+-- options:
+--
+-- -   @INCLUDE@
+--
+-- -   @EXCLUDE@
+newItemsLimitConfiguration ::
+  ItemsLimitConfiguration
+newItemsLimitConfiguration =
+  ItemsLimitConfiguration'
+    { itemsLimit =
+        Prelude.Nothing,
+      otherCategories = Prelude.Nothing
+    }
+
+-- | The limit on how many items of a field are showed in the chart. For
+-- example, the number of slices that are displayed in a pie chart.
+itemsLimitConfiguration_itemsLimit :: Lens.Lens' ItemsLimitConfiguration (Prelude.Maybe Prelude.Integer)
+itemsLimitConfiguration_itemsLimit = Lens.lens (\ItemsLimitConfiguration' {itemsLimit} -> itemsLimit) (\s@ItemsLimitConfiguration' {} a -> s {itemsLimit = a} :: ItemsLimitConfiguration)
+
+-- | The @Show other@ of an axis in the chart. Choose one of the following
+-- options:
+--
+-- -   @INCLUDE@
+--
+-- -   @EXCLUDE@
+itemsLimitConfiguration_otherCategories :: Lens.Lens' ItemsLimitConfiguration (Prelude.Maybe OtherCategories)
+itemsLimitConfiguration_otherCategories = Lens.lens (\ItemsLimitConfiguration' {otherCategories} -> otherCategories) (\s@ItemsLimitConfiguration' {} a -> s {otherCategories = a} :: ItemsLimitConfiguration)
+
+instance Data.FromJSON ItemsLimitConfiguration where
+  parseJSON =
+    Data.withObject
+      "ItemsLimitConfiguration"
+      ( \x ->
+          ItemsLimitConfiguration'
+            Prelude.<$> (x Data..:? "ItemsLimit")
+            Prelude.<*> (x Data..:? "OtherCategories")
+      )
+
+instance Prelude.Hashable ItemsLimitConfiguration where
+  hashWithSalt _salt ItemsLimitConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` itemsLimit
+      `Prelude.hashWithSalt` otherCategories
+
+instance Prelude.NFData ItemsLimitConfiguration where
+  rnf ItemsLimitConfiguration' {..} =
+    Prelude.rnf itemsLimit
+      `Prelude.seq` Prelude.rnf otherCategories
+
+instance Data.ToJSON ItemsLimitConfiguration where
+  toJSON ItemsLimitConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ItemsLimit" Data..=) Prelude.<$> itemsLimit,
+            ("OtherCategories" Data..=)
+              Prelude.<$> otherCategories
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/JiraParameters.hs b/gen/Amazonka/QuickSight/Types/JiraParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/JiraParameters.hs
@@ -0,0 +1,77 @@
+{-# 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.QuickSight.Types.JiraParameters
+-- 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.QuickSight.Types.JiraParameters 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 parameters for Jira.
+--
+-- /See:/ 'newJiraParameters' smart constructor.
+data JiraParameters = JiraParameters'
+  { -- | The base URL of the Jira site.
+    siteBaseUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JiraParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteBaseUrl', 'jiraParameters_siteBaseUrl' - The base URL of the Jira site.
+newJiraParameters ::
+  -- | 'siteBaseUrl'
+  Prelude.Text ->
+  JiraParameters
+newJiraParameters pSiteBaseUrl_ =
+  JiraParameters' {siteBaseUrl = pSiteBaseUrl_}
+
+-- | The base URL of the Jira site.
+jiraParameters_siteBaseUrl :: Lens.Lens' JiraParameters Prelude.Text
+jiraParameters_siteBaseUrl = Lens.lens (\JiraParameters' {siteBaseUrl} -> siteBaseUrl) (\s@JiraParameters' {} a -> s {siteBaseUrl = a} :: JiraParameters)
+
+instance Data.FromJSON JiraParameters where
+  parseJSON =
+    Data.withObject
+      "JiraParameters"
+      ( \x ->
+          JiraParameters'
+            Prelude.<$> (x Data..: "SiteBaseUrl")
+      )
+
+instance Prelude.Hashable JiraParameters where
+  hashWithSalt _salt JiraParameters' {..} =
+    _salt `Prelude.hashWithSalt` siteBaseUrl
+
+instance Prelude.NFData JiraParameters where
+  rnf JiraParameters' {..} = Prelude.rnf siteBaseUrl
+
+instance Data.ToJSON JiraParameters where
+  toJSON JiraParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("SiteBaseUrl" Data..= siteBaseUrl)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/JoinInstruction.hs b/gen/Amazonka/QuickSight/Types/JoinInstruction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/JoinInstruction.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.JoinInstruction
+-- 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.QuickSight.Types.JoinInstruction 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.QuickSight.Types.JoinKeyProperties
+import Amazonka.QuickSight.Types.JoinType
+
+-- | The instructions associated with a join.
+--
+-- /See:/ 'newJoinInstruction' smart constructor.
+data JoinInstruction = JoinInstruction'
+  { -- | Join key properties of the left operand.
+    leftJoinKeyProperties :: Prelude.Maybe JoinKeyProperties,
+    -- | Join key properties of the right operand.
+    rightJoinKeyProperties :: Prelude.Maybe JoinKeyProperties,
+    -- | The operand on the left side of a join.
+    leftOperand :: Prelude.Text,
+    -- | The operand on the right side of a join.
+    rightOperand :: Prelude.Text,
+    -- | The type of join that it is.
+    type' :: JoinType,
+    -- | The join instructions provided in the @ON@ clause of a join.
+    onClause :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JoinInstruction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'leftJoinKeyProperties', 'joinInstruction_leftJoinKeyProperties' - Join key properties of the left operand.
+--
+-- 'rightJoinKeyProperties', 'joinInstruction_rightJoinKeyProperties' - Join key properties of the right operand.
+--
+-- 'leftOperand', 'joinInstruction_leftOperand' - The operand on the left side of a join.
+--
+-- 'rightOperand', 'joinInstruction_rightOperand' - The operand on the right side of a join.
+--
+-- 'type'', 'joinInstruction_type' - The type of join that it is.
+--
+-- 'onClause', 'joinInstruction_onClause' - The join instructions provided in the @ON@ clause of a join.
+newJoinInstruction ::
+  -- | 'leftOperand'
+  Prelude.Text ->
+  -- | 'rightOperand'
+  Prelude.Text ->
+  -- | 'type''
+  JoinType ->
+  -- | 'onClause'
+  Prelude.Text ->
+  JoinInstruction
+newJoinInstruction
+  pLeftOperand_
+  pRightOperand_
+  pType_
+  pOnClause_ =
+    JoinInstruction'
+      { leftJoinKeyProperties =
+          Prelude.Nothing,
+        rightJoinKeyProperties = Prelude.Nothing,
+        leftOperand = pLeftOperand_,
+        rightOperand = pRightOperand_,
+        type' = pType_,
+        onClause = pOnClause_
+      }
+
+-- | Join key properties of the left operand.
+joinInstruction_leftJoinKeyProperties :: Lens.Lens' JoinInstruction (Prelude.Maybe JoinKeyProperties)
+joinInstruction_leftJoinKeyProperties = Lens.lens (\JoinInstruction' {leftJoinKeyProperties} -> leftJoinKeyProperties) (\s@JoinInstruction' {} a -> s {leftJoinKeyProperties = a} :: JoinInstruction)
+
+-- | Join key properties of the right operand.
+joinInstruction_rightJoinKeyProperties :: Lens.Lens' JoinInstruction (Prelude.Maybe JoinKeyProperties)
+joinInstruction_rightJoinKeyProperties = Lens.lens (\JoinInstruction' {rightJoinKeyProperties} -> rightJoinKeyProperties) (\s@JoinInstruction' {} a -> s {rightJoinKeyProperties = a} :: JoinInstruction)
+
+-- | The operand on the left side of a join.
+joinInstruction_leftOperand :: Lens.Lens' JoinInstruction Prelude.Text
+joinInstruction_leftOperand = Lens.lens (\JoinInstruction' {leftOperand} -> leftOperand) (\s@JoinInstruction' {} a -> s {leftOperand = a} :: JoinInstruction)
+
+-- | The operand on the right side of a join.
+joinInstruction_rightOperand :: Lens.Lens' JoinInstruction Prelude.Text
+joinInstruction_rightOperand = Lens.lens (\JoinInstruction' {rightOperand} -> rightOperand) (\s@JoinInstruction' {} a -> s {rightOperand = a} :: JoinInstruction)
+
+-- | The type of join that it is.
+joinInstruction_type :: Lens.Lens' JoinInstruction JoinType
+joinInstruction_type = Lens.lens (\JoinInstruction' {type'} -> type') (\s@JoinInstruction' {} a -> s {type' = a} :: JoinInstruction)
+
+-- | The join instructions provided in the @ON@ clause of a join.
+joinInstruction_onClause :: Lens.Lens' JoinInstruction Prelude.Text
+joinInstruction_onClause = Lens.lens (\JoinInstruction' {onClause} -> onClause) (\s@JoinInstruction' {} a -> s {onClause = a} :: JoinInstruction)
+
+instance Data.FromJSON JoinInstruction where
+  parseJSON =
+    Data.withObject
+      "JoinInstruction"
+      ( \x ->
+          JoinInstruction'
+            Prelude.<$> (x Data..:? "LeftJoinKeyProperties")
+            Prelude.<*> (x Data..:? "RightJoinKeyProperties")
+            Prelude.<*> (x Data..: "LeftOperand")
+            Prelude.<*> (x Data..: "RightOperand")
+            Prelude.<*> (x Data..: "Type")
+            Prelude.<*> (x Data..: "OnClause")
+      )
+
+instance Prelude.Hashable JoinInstruction where
+  hashWithSalt _salt JoinInstruction' {..} =
+    _salt
+      `Prelude.hashWithSalt` leftJoinKeyProperties
+      `Prelude.hashWithSalt` rightJoinKeyProperties
+      `Prelude.hashWithSalt` leftOperand
+      `Prelude.hashWithSalt` rightOperand
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` onClause
+
+instance Prelude.NFData JoinInstruction where
+  rnf JoinInstruction' {..} =
+    Prelude.rnf leftJoinKeyProperties
+      `Prelude.seq` Prelude.rnf rightJoinKeyProperties
+      `Prelude.seq` Prelude.rnf leftOperand
+      `Prelude.seq` Prelude.rnf rightOperand
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf onClause
+
+instance Data.ToJSON JoinInstruction where
+  toJSON JoinInstruction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LeftJoinKeyProperties" Data..=)
+              Prelude.<$> leftJoinKeyProperties,
+            ("RightJoinKeyProperties" Data..=)
+              Prelude.<$> rightJoinKeyProperties,
+            Prelude.Just ("LeftOperand" Data..= leftOperand),
+            Prelude.Just ("RightOperand" Data..= rightOperand),
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("OnClause" Data..= onClause)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/JoinKeyProperties.hs b/gen/Amazonka/QuickSight/Types/JoinKeyProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/JoinKeyProperties.hs
@@ -0,0 +1,81 @@
+{-# 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.QuickSight.Types.JoinKeyProperties
+-- 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.QuickSight.Types.JoinKeyProperties 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
+
+-- | Properties associated with the columns participating in a join.
+--
+-- /See:/ 'newJoinKeyProperties' smart constructor.
+data JoinKeyProperties = JoinKeyProperties'
+  { -- | A value that indicates that a row in a table is uniquely identified by
+    -- the columns in a join key. This is used by Amazon QuickSight to optimize
+    -- query performance.
+    uniqueKey :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JoinKeyProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'uniqueKey', 'joinKeyProperties_uniqueKey' - A value that indicates that a row in a table is uniquely identified by
+-- the columns in a join key. This is used by Amazon QuickSight to optimize
+-- query performance.
+newJoinKeyProperties ::
+  JoinKeyProperties
+newJoinKeyProperties =
+  JoinKeyProperties' {uniqueKey = Prelude.Nothing}
+
+-- | A value that indicates that a row in a table is uniquely identified by
+-- the columns in a join key. This is used by Amazon QuickSight to optimize
+-- query performance.
+joinKeyProperties_uniqueKey :: Lens.Lens' JoinKeyProperties (Prelude.Maybe Prelude.Bool)
+joinKeyProperties_uniqueKey = Lens.lens (\JoinKeyProperties' {uniqueKey} -> uniqueKey) (\s@JoinKeyProperties' {} a -> s {uniqueKey = a} :: JoinKeyProperties)
+
+instance Data.FromJSON JoinKeyProperties where
+  parseJSON =
+    Data.withObject
+      "JoinKeyProperties"
+      ( \x ->
+          JoinKeyProperties'
+            Prelude.<$> (x Data..:? "UniqueKey")
+      )
+
+instance Prelude.Hashable JoinKeyProperties where
+  hashWithSalt _salt JoinKeyProperties' {..} =
+    _salt `Prelude.hashWithSalt` uniqueKey
+
+instance Prelude.NFData JoinKeyProperties where
+  rnf JoinKeyProperties' {..} = Prelude.rnf uniqueKey
+
+instance Data.ToJSON JoinKeyProperties where
+  toJSON JoinKeyProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("UniqueKey" Data..=) Prelude.<$> uniqueKey]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/JoinType.hs b/gen/Amazonka/QuickSight/Types/JoinType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/JoinType.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.QuickSight.Types.JoinType
+-- 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.QuickSight.Types.JoinType
+  ( JoinType
+      ( ..,
+        JoinType_INNER,
+        JoinType_LEFT,
+        JoinType_OUTER,
+        JoinType_RIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JoinType = JoinType'
+  { fromJoinType ::
+      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 JoinType_INNER :: JoinType
+pattern JoinType_INNER = JoinType' "INNER"
+
+pattern JoinType_LEFT :: JoinType
+pattern JoinType_LEFT = JoinType' "LEFT"
+
+pattern JoinType_OUTER :: JoinType
+pattern JoinType_OUTER = JoinType' "OUTER"
+
+pattern JoinType_RIGHT :: JoinType
+pattern JoinType_RIGHT = JoinType' "RIGHT"
+
+{-# COMPLETE
+  JoinType_INNER,
+  JoinType_LEFT,
+  JoinType_OUTER,
+  JoinType_RIGHT,
+  JoinType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/KPIConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/KPIConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIConditionalFormatting.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.QuickSight.Types.KPIConditionalFormatting
+-- 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.QuickSight.Types.KPIConditionalFormatting 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.QuickSight.Types.KPIConditionalFormattingOption
+
+-- | The conditional formatting of a KPI visual.
+--
+-- /See:/ 'newKPIConditionalFormatting' smart constructor.
+data KPIConditionalFormatting = KPIConditionalFormatting'
+  { -- | The conditional formatting options of a KPI visual.
+    conditionalFormattingOptions :: Prelude.Maybe [KPIConditionalFormattingOption]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conditionalFormattingOptions', 'kPIConditionalFormatting_conditionalFormattingOptions' - The conditional formatting options of a KPI visual.
+newKPIConditionalFormatting ::
+  KPIConditionalFormatting
+newKPIConditionalFormatting =
+  KPIConditionalFormatting'
+    { conditionalFormattingOptions =
+        Prelude.Nothing
+    }
+
+-- | The conditional formatting options of a KPI visual.
+kPIConditionalFormatting_conditionalFormattingOptions :: Lens.Lens' KPIConditionalFormatting (Prelude.Maybe [KPIConditionalFormattingOption])
+kPIConditionalFormatting_conditionalFormattingOptions = Lens.lens (\KPIConditionalFormatting' {conditionalFormattingOptions} -> conditionalFormattingOptions) (\s@KPIConditionalFormatting' {} a -> s {conditionalFormattingOptions = a} :: KPIConditionalFormatting) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON KPIConditionalFormatting where
+  parseJSON =
+    Data.withObject
+      "KPIConditionalFormatting"
+      ( \x ->
+          KPIConditionalFormatting'
+            Prelude.<$> ( x
+                            Data..:? "ConditionalFormattingOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable KPIConditionalFormatting where
+  hashWithSalt _salt KPIConditionalFormatting' {..} =
+    _salt
+      `Prelude.hashWithSalt` conditionalFormattingOptions
+
+instance Prelude.NFData KPIConditionalFormatting where
+  rnf KPIConditionalFormatting' {..} =
+    Prelude.rnf conditionalFormattingOptions
+
+instance Data.ToJSON KPIConditionalFormatting where
+  toJSON KPIConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConditionalFormattingOptions" Data..=)
+              Prelude.<$> conditionalFormattingOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIConditionalFormattingOption.hs b/gen/Amazonka/QuickSight/Types/KPIConditionalFormattingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIConditionalFormattingOption.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.KPIConditionalFormattingOption
+-- 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.QuickSight.Types.KPIConditionalFormattingOption 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.QuickSight.Types.KPIPrimaryValueConditionalFormatting
+import Amazonka.QuickSight.Types.KPIProgressBarConditionalFormatting
+
+-- | The conditional formatting options of a KPI visual.
+--
+-- /See:/ 'newKPIConditionalFormattingOption' smart constructor.
+data KPIConditionalFormattingOption = KPIConditionalFormattingOption'
+  { -- | The conditional formatting for the primary value of a KPI visual.
+    primaryValue :: Prelude.Maybe KPIPrimaryValueConditionalFormatting,
+    -- | The conditional formatting for the progress bar of a KPI visual.
+    progressBar :: Prelude.Maybe KPIProgressBarConditionalFormatting
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIConditionalFormattingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'primaryValue', 'kPIConditionalFormattingOption_primaryValue' - The conditional formatting for the primary value of a KPI visual.
+--
+-- 'progressBar', 'kPIConditionalFormattingOption_progressBar' - The conditional formatting for the progress bar of a KPI visual.
+newKPIConditionalFormattingOption ::
+  KPIConditionalFormattingOption
+newKPIConditionalFormattingOption =
+  KPIConditionalFormattingOption'
+    { primaryValue =
+        Prelude.Nothing,
+      progressBar = Prelude.Nothing
+    }
+
+-- | The conditional formatting for the primary value of a KPI visual.
+kPIConditionalFormattingOption_primaryValue :: Lens.Lens' KPIConditionalFormattingOption (Prelude.Maybe KPIPrimaryValueConditionalFormatting)
+kPIConditionalFormattingOption_primaryValue = Lens.lens (\KPIConditionalFormattingOption' {primaryValue} -> primaryValue) (\s@KPIConditionalFormattingOption' {} a -> s {primaryValue = a} :: KPIConditionalFormattingOption)
+
+-- | The conditional formatting for the progress bar of a KPI visual.
+kPIConditionalFormattingOption_progressBar :: Lens.Lens' KPIConditionalFormattingOption (Prelude.Maybe KPIProgressBarConditionalFormatting)
+kPIConditionalFormattingOption_progressBar = Lens.lens (\KPIConditionalFormattingOption' {progressBar} -> progressBar) (\s@KPIConditionalFormattingOption' {} a -> s {progressBar = a} :: KPIConditionalFormattingOption)
+
+instance Data.FromJSON KPIConditionalFormattingOption where
+  parseJSON =
+    Data.withObject
+      "KPIConditionalFormattingOption"
+      ( \x ->
+          KPIConditionalFormattingOption'
+            Prelude.<$> (x Data..:? "PrimaryValue")
+            Prelude.<*> (x Data..:? "ProgressBar")
+      )
+
+instance
+  Prelude.Hashable
+    KPIConditionalFormattingOption
+  where
+  hashWithSalt
+    _salt
+    KPIConditionalFormattingOption' {..} =
+      _salt
+        `Prelude.hashWithSalt` primaryValue
+        `Prelude.hashWithSalt` progressBar
+
+instance
+  Prelude.NFData
+    KPIConditionalFormattingOption
+  where
+  rnf KPIConditionalFormattingOption' {..} =
+    Prelude.rnf primaryValue
+      `Prelude.seq` Prelude.rnf progressBar
+
+instance Data.ToJSON KPIConditionalFormattingOption where
+  toJSON KPIConditionalFormattingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PrimaryValue" Data..=) Prelude.<$> primaryValue,
+            ("ProgressBar" Data..=) Prelude.<$> progressBar
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIConfiguration.hs b/gen/Amazonka/QuickSight/Types/KPIConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIConfiguration.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.KPIConfiguration
+-- 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.QuickSight.Types.KPIConfiguration 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.QuickSight.Types.KPIFieldWells
+import Amazonka.QuickSight.Types.KPIOptions
+import Amazonka.QuickSight.Types.KPISortConfiguration
+
+-- | The configuration of a KPI visual.
+--
+-- /See:/ 'newKPIConfiguration' smart constructor.
+data KPIConfiguration = KPIConfiguration'
+  { -- | The field well configuration of a KPI visual.
+    fieldWells :: Prelude.Maybe KPIFieldWells,
+    -- | The options that determine the presentation of a KPI visual.
+    kPIOptions :: Prelude.Maybe KPIOptions,
+    -- | The sort configuration of a KPI visual.
+    sortConfiguration :: Prelude.Maybe KPISortConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldWells', 'kPIConfiguration_fieldWells' - The field well configuration of a KPI visual.
+--
+-- 'kPIOptions', 'kPIConfiguration_kPIOptions' - The options that determine the presentation of a KPI visual.
+--
+-- 'sortConfiguration', 'kPIConfiguration_sortConfiguration' - The sort configuration of a KPI visual.
+newKPIConfiguration ::
+  KPIConfiguration
+newKPIConfiguration =
+  KPIConfiguration'
+    { fieldWells = Prelude.Nothing,
+      kPIOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing
+    }
+
+-- | The field well configuration of a KPI visual.
+kPIConfiguration_fieldWells :: Lens.Lens' KPIConfiguration (Prelude.Maybe KPIFieldWells)
+kPIConfiguration_fieldWells = Lens.lens (\KPIConfiguration' {fieldWells} -> fieldWells) (\s@KPIConfiguration' {} a -> s {fieldWells = a} :: KPIConfiguration)
+
+-- | The options that determine the presentation of a KPI visual.
+kPIConfiguration_kPIOptions :: Lens.Lens' KPIConfiguration (Prelude.Maybe KPIOptions)
+kPIConfiguration_kPIOptions = Lens.lens (\KPIConfiguration' {kPIOptions} -> kPIOptions) (\s@KPIConfiguration' {} a -> s {kPIOptions = a} :: KPIConfiguration)
+
+-- | The sort configuration of a KPI visual.
+kPIConfiguration_sortConfiguration :: Lens.Lens' KPIConfiguration (Prelude.Maybe KPISortConfiguration)
+kPIConfiguration_sortConfiguration = Lens.lens (\KPIConfiguration' {sortConfiguration} -> sortConfiguration) (\s@KPIConfiguration' {} a -> s {sortConfiguration = a} :: KPIConfiguration)
+
+instance Data.FromJSON KPIConfiguration where
+  parseJSON =
+    Data.withObject
+      "KPIConfiguration"
+      ( \x ->
+          KPIConfiguration'
+            Prelude.<$> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "KPIOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+      )
+
+instance Prelude.Hashable KPIConfiguration where
+  hashWithSalt _salt KPIConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` kPIOptions
+      `Prelude.hashWithSalt` sortConfiguration
+
+instance Prelude.NFData KPIConfiguration where
+  rnf KPIConfiguration' {..} =
+    Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf kPIOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+
+instance Data.ToJSON KPIConfiguration where
+  toJSON KPIConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("KPIOptions" Data..=) Prelude.<$> kPIOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIFieldWells.hs b/gen/Amazonka/QuickSight/Types/KPIFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIFieldWells.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.KPIFieldWells
+-- 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.QuickSight.Types.KPIFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a KPI visual.
+--
+-- /See:/ 'newKPIFieldWells' smart constructor.
+data KPIFieldWells = KPIFieldWells'
+  { -- | The target value field wells of a KPI visual.
+    targetValues :: Prelude.Maybe [MeasureField],
+    -- | The trend group field wells of a KPI visual.
+    trendGroups :: Prelude.Maybe [DimensionField],
+    -- | The value field wells of a KPI visual.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'targetValues', 'kPIFieldWells_targetValues' - The target value field wells of a KPI visual.
+--
+-- 'trendGroups', 'kPIFieldWells_trendGroups' - The trend group field wells of a KPI visual.
+--
+-- 'values', 'kPIFieldWells_values' - The value field wells of a KPI visual.
+newKPIFieldWells ::
+  KPIFieldWells
+newKPIFieldWells =
+  KPIFieldWells'
+    { targetValues = Prelude.Nothing,
+      trendGroups = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The target value field wells of a KPI visual.
+kPIFieldWells_targetValues :: Lens.Lens' KPIFieldWells (Prelude.Maybe [MeasureField])
+kPIFieldWells_targetValues = Lens.lens (\KPIFieldWells' {targetValues} -> targetValues) (\s@KPIFieldWells' {} a -> s {targetValues = a} :: KPIFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The trend group field wells of a KPI visual.
+kPIFieldWells_trendGroups :: Lens.Lens' KPIFieldWells (Prelude.Maybe [DimensionField])
+kPIFieldWells_trendGroups = Lens.lens (\KPIFieldWells' {trendGroups} -> trendGroups) (\s@KPIFieldWells' {} a -> s {trendGroups = a} :: KPIFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a KPI visual.
+kPIFieldWells_values :: Lens.Lens' KPIFieldWells (Prelude.Maybe [MeasureField])
+kPIFieldWells_values = Lens.lens (\KPIFieldWells' {values} -> values) (\s@KPIFieldWells' {} a -> s {values = a} :: KPIFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON KPIFieldWells where
+  parseJSON =
+    Data.withObject
+      "KPIFieldWells"
+      ( \x ->
+          KPIFieldWells'
+            Prelude.<$> (x Data..:? "TargetValues" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TrendGroups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable KPIFieldWells where
+  hashWithSalt _salt KPIFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` targetValues
+      `Prelude.hashWithSalt` trendGroups
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData KPIFieldWells where
+  rnf KPIFieldWells' {..} =
+    Prelude.rnf targetValues
+      `Prelude.seq` Prelude.rnf trendGroups
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON KPIFieldWells where
+  toJSON KPIFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TargetValues" Data..=) Prelude.<$> targetValues,
+            ("TrendGroups" Data..=) Prelude.<$> trendGroups,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIOptions.hs b/gen/Amazonka/QuickSight/Types/KPIOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIOptions.hs
@@ -0,0 +1,177 @@
+{-# 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.QuickSight.Types.KPIOptions
+-- 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.QuickSight.Types.KPIOptions 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.QuickSight.Types.ComparisonConfiguration
+import Amazonka.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.PrimaryValueDisplayType
+import Amazonka.QuickSight.Types.ProgressBarOptions
+import Amazonka.QuickSight.Types.SecondaryValueOptions
+import Amazonka.QuickSight.Types.TrendArrowOptions
+
+-- | The options that determine the presentation of a KPI visual.
+--
+-- /See:/ 'newKPIOptions' smart constructor.
+data KPIOptions = KPIOptions'
+  { -- | The comparison configuration of a KPI visual.
+    comparison :: Prelude.Maybe ComparisonConfiguration,
+    -- | The options that determine the primary value display type.
+    primaryValueDisplayType :: Prelude.Maybe PrimaryValueDisplayType,
+    -- | The options that determine the primary value font configuration.
+    primaryValueFontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | The options that determine the presentation of the progress bar of a KPI
+    -- visual.
+    progressBar :: Prelude.Maybe ProgressBarOptions,
+    -- | The options that determine the presentation of the secondary value of a
+    -- KPI visual.
+    secondaryValue :: Prelude.Maybe SecondaryValueOptions,
+    -- | The options that determine the secondary value font configuration.
+    secondaryValueFontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | The options that determine the presentation of trend arrows in a KPI
+    -- visual.
+    trendArrows :: Prelude.Maybe TrendArrowOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'comparison', 'kPIOptions_comparison' - The comparison configuration of a KPI visual.
+--
+-- 'primaryValueDisplayType', 'kPIOptions_primaryValueDisplayType' - The options that determine the primary value display type.
+--
+-- 'primaryValueFontConfiguration', 'kPIOptions_primaryValueFontConfiguration' - The options that determine the primary value font configuration.
+--
+-- 'progressBar', 'kPIOptions_progressBar' - The options that determine the presentation of the progress bar of a KPI
+-- visual.
+--
+-- 'secondaryValue', 'kPIOptions_secondaryValue' - The options that determine the presentation of the secondary value of a
+-- KPI visual.
+--
+-- 'secondaryValueFontConfiguration', 'kPIOptions_secondaryValueFontConfiguration' - The options that determine the secondary value font configuration.
+--
+-- 'trendArrows', 'kPIOptions_trendArrows' - The options that determine the presentation of trend arrows in a KPI
+-- visual.
+newKPIOptions ::
+  KPIOptions
+newKPIOptions =
+  KPIOptions'
+    { comparison = Prelude.Nothing,
+      primaryValueDisplayType = Prelude.Nothing,
+      primaryValueFontConfiguration = Prelude.Nothing,
+      progressBar = Prelude.Nothing,
+      secondaryValue = Prelude.Nothing,
+      secondaryValueFontConfiguration = Prelude.Nothing,
+      trendArrows = Prelude.Nothing
+    }
+
+-- | The comparison configuration of a KPI visual.
+kPIOptions_comparison :: Lens.Lens' KPIOptions (Prelude.Maybe ComparisonConfiguration)
+kPIOptions_comparison = Lens.lens (\KPIOptions' {comparison} -> comparison) (\s@KPIOptions' {} a -> s {comparison = a} :: KPIOptions)
+
+-- | The options that determine the primary value display type.
+kPIOptions_primaryValueDisplayType :: Lens.Lens' KPIOptions (Prelude.Maybe PrimaryValueDisplayType)
+kPIOptions_primaryValueDisplayType = Lens.lens (\KPIOptions' {primaryValueDisplayType} -> primaryValueDisplayType) (\s@KPIOptions' {} a -> s {primaryValueDisplayType = a} :: KPIOptions)
+
+-- | The options that determine the primary value font configuration.
+kPIOptions_primaryValueFontConfiguration :: Lens.Lens' KPIOptions (Prelude.Maybe FontConfiguration)
+kPIOptions_primaryValueFontConfiguration = Lens.lens (\KPIOptions' {primaryValueFontConfiguration} -> primaryValueFontConfiguration) (\s@KPIOptions' {} a -> s {primaryValueFontConfiguration = a} :: KPIOptions)
+
+-- | The options that determine the presentation of the progress bar of a KPI
+-- visual.
+kPIOptions_progressBar :: Lens.Lens' KPIOptions (Prelude.Maybe ProgressBarOptions)
+kPIOptions_progressBar = Lens.lens (\KPIOptions' {progressBar} -> progressBar) (\s@KPIOptions' {} a -> s {progressBar = a} :: KPIOptions)
+
+-- | The options that determine the presentation of the secondary value of a
+-- KPI visual.
+kPIOptions_secondaryValue :: Lens.Lens' KPIOptions (Prelude.Maybe SecondaryValueOptions)
+kPIOptions_secondaryValue = Lens.lens (\KPIOptions' {secondaryValue} -> secondaryValue) (\s@KPIOptions' {} a -> s {secondaryValue = a} :: KPIOptions)
+
+-- | The options that determine the secondary value font configuration.
+kPIOptions_secondaryValueFontConfiguration :: Lens.Lens' KPIOptions (Prelude.Maybe FontConfiguration)
+kPIOptions_secondaryValueFontConfiguration = Lens.lens (\KPIOptions' {secondaryValueFontConfiguration} -> secondaryValueFontConfiguration) (\s@KPIOptions' {} a -> s {secondaryValueFontConfiguration = a} :: KPIOptions)
+
+-- | The options that determine the presentation of trend arrows in a KPI
+-- visual.
+kPIOptions_trendArrows :: Lens.Lens' KPIOptions (Prelude.Maybe TrendArrowOptions)
+kPIOptions_trendArrows = Lens.lens (\KPIOptions' {trendArrows} -> trendArrows) (\s@KPIOptions' {} a -> s {trendArrows = a} :: KPIOptions)
+
+instance Data.FromJSON KPIOptions where
+  parseJSON =
+    Data.withObject
+      "KPIOptions"
+      ( \x ->
+          KPIOptions'
+            Prelude.<$> (x Data..:? "Comparison")
+            Prelude.<*> (x Data..:? "PrimaryValueDisplayType")
+            Prelude.<*> (x Data..:? "PrimaryValueFontConfiguration")
+            Prelude.<*> (x Data..:? "ProgressBar")
+            Prelude.<*> (x Data..:? "SecondaryValue")
+            Prelude.<*> (x Data..:? "SecondaryValueFontConfiguration")
+            Prelude.<*> (x Data..:? "TrendArrows")
+      )
+
+instance Prelude.Hashable KPIOptions where
+  hashWithSalt _salt KPIOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` comparison
+      `Prelude.hashWithSalt` primaryValueDisplayType
+      `Prelude.hashWithSalt` primaryValueFontConfiguration
+      `Prelude.hashWithSalt` progressBar
+      `Prelude.hashWithSalt` secondaryValue
+      `Prelude.hashWithSalt` secondaryValueFontConfiguration
+      `Prelude.hashWithSalt` trendArrows
+
+instance Prelude.NFData KPIOptions where
+  rnf KPIOptions' {..} =
+    Prelude.rnf comparison
+      `Prelude.seq` Prelude.rnf primaryValueDisplayType
+      `Prelude.seq` Prelude.rnf primaryValueFontConfiguration
+      `Prelude.seq` Prelude.rnf progressBar
+      `Prelude.seq` Prelude.rnf secondaryValue
+      `Prelude.seq` Prelude.rnf secondaryValueFontConfiguration
+      `Prelude.seq` Prelude.rnf trendArrows
+
+instance Data.ToJSON KPIOptions where
+  toJSON KPIOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Comparison" Data..=) Prelude.<$> comparison,
+            ("PrimaryValueDisplayType" Data..=)
+              Prelude.<$> primaryValueDisplayType,
+            ("PrimaryValueFontConfiguration" Data..=)
+              Prelude.<$> primaryValueFontConfiguration,
+            ("ProgressBar" Data..=) Prelude.<$> progressBar,
+            ("SecondaryValue" Data..=)
+              Prelude.<$> secondaryValue,
+            ("SecondaryValueFontConfiguration" Data..=)
+              Prelude.<$> secondaryValueFontConfiguration,
+            ("TrendArrows" Data..=) Prelude.<$> trendArrows
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIPrimaryValueConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/KPIPrimaryValueConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIPrimaryValueConditionalFormatting.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.KPIPrimaryValueConditionalFormatting
+-- 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.QuickSight.Types.KPIPrimaryValueConditionalFormatting 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.QuickSight.Types.ConditionalFormattingColor
+import Amazonka.QuickSight.Types.ConditionalFormattingIcon
+
+-- | The conditional formatting for the primary value of a KPI visual.
+--
+-- /See:/ 'newKPIPrimaryValueConditionalFormatting' smart constructor.
+data KPIPrimaryValueConditionalFormatting = KPIPrimaryValueConditionalFormatting'
+  { -- | The conditional formatting of the primary value\'s icon.
+    icon :: Prelude.Maybe ConditionalFormattingIcon,
+    -- | The conditional formatting of the primary value\'s text color.
+    textColor :: Prelude.Maybe ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIPrimaryValueConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'icon', 'kPIPrimaryValueConditionalFormatting_icon' - The conditional formatting of the primary value\'s icon.
+--
+-- 'textColor', 'kPIPrimaryValueConditionalFormatting_textColor' - The conditional formatting of the primary value\'s text color.
+newKPIPrimaryValueConditionalFormatting ::
+  KPIPrimaryValueConditionalFormatting
+newKPIPrimaryValueConditionalFormatting =
+  KPIPrimaryValueConditionalFormatting'
+    { icon =
+        Prelude.Nothing,
+      textColor = Prelude.Nothing
+    }
+
+-- | The conditional formatting of the primary value\'s icon.
+kPIPrimaryValueConditionalFormatting_icon :: Lens.Lens' KPIPrimaryValueConditionalFormatting (Prelude.Maybe ConditionalFormattingIcon)
+kPIPrimaryValueConditionalFormatting_icon = Lens.lens (\KPIPrimaryValueConditionalFormatting' {icon} -> icon) (\s@KPIPrimaryValueConditionalFormatting' {} a -> s {icon = a} :: KPIPrimaryValueConditionalFormatting)
+
+-- | The conditional formatting of the primary value\'s text color.
+kPIPrimaryValueConditionalFormatting_textColor :: Lens.Lens' KPIPrimaryValueConditionalFormatting (Prelude.Maybe ConditionalFormattingColor)
+kPIPrimaryValueConditionalFormatting_textColor = Lens.lens (\KPIPrimaryValueConditionalFormatting' {textColor} -> textColor) (\s@KPIPrimaryValueConditionalFormatting' {} a -> s {textColor = a} :: KPIPrimaryValueConditionalFormatting)
+
+instance
+  Data.FromJSON
+    KPIPrimaryValueConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "KPIPrimaryValueConditionalFormatting"
+      ( \x ->
+          KPIPrimaryValueConditionalFormatting'
+            Prelude.<$> (x Data..:? "Icon")
+            Prelude.<*> (x Data..:? "TextColor")
+      )
+
+instance
+  Prelude.Hashable
+    KPIPrimaryValueConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    KPIPrimaryValueConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` icon
+        `Prelude.hashWithSalt` textColor
+
+instance
+  Prelude.NFData
+    KPIPrimaryValueConditionalFormatting
+  where
+  rnf KPIPrimaryValueConditionalFormatting' {..} =
+    Prelude.rnf icon
+      `Prelude.seq` Prelude.rnf textColor
+
+instance
+  Data.ToJSON
+    KPIPrimaryValueConditionalFormatting
+  where
+  toJSON KPIPrimaryValueConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Icon" Data..=) Prelude.<$> icon,
+            ("TextColor" Data..=) Prelude.<$> textColor
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIProgressBarConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/KPIProgressBarConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIProgressBarConditionalFormatting.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.QuickSight.Types.KPIProgressBarConditionalFormatting
+-- 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.QuickSight.Types.KPIProgressBarConditionalFormatting 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.QuickSight.Types.ConditionalFormattingColor
+
+-- | The conditional formatting for the progress bar of a KPI visual.
+--
+-- /See:/ 'newKPIProgressBarConditionalFormatting' smart constructor.
+data KPIProgressBarConditionalFormatting = KPIProgressBarConditionalFormatting'
+  { -- | The conditional formatting of the progress bar\'s foreground color.
+    foregroundColor :: Prelude.Maybe ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIProgressBarConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'foregroundColor', 'kPIProgressBarConditionalFormatting_foregroundColor' - The conditional formatting of the progress bar\'s foreground color.
+newKPIProgressBarConditionalFormatting ::
+  KPIProgressBarConditionalFormatting
+newKPIProgressBarConditionalFormatting =
+  KPIProgressBarConditionalFormatting'
+    { foregroundColor =
+        Prelude.Nothing
+    }
+
+-- | The conditional formatting of the progress bar\'s foreground color.
+kPIProgressBarConditionalFormatting_foregroundColor :: Lens.Lens' KPIProgressBarConditionalFormatting (Prelude.Maybe ConditionalFormattingColor)
+kPIProgressBarConditionalFormatting_foregroundColor = Lens.lens (\KPIProgressBarConditionalFormatting' {foregroundColor} -> foregroundColor) (\s@KPIProgressBarConditionalFormatting' {} a -> s {foregroundColor = a} :: KPIProgressBarConditionalFormatting)
+
+instance
+  Data.FromJSON
+    KPIProgressBarConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "KPIProgressBarConditionalFormatting"
+      ( \x ->
+          KPIProgressBarConditionalFormatting'
+            Prelude.<$> (x Data..:? "ForegroundColor")
+      )
+
+instance
+  Prelude.Hashable
+    KPIProgressBarConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    KPIProgressBarConditionalFormatting' {..} =
+      _salt `Prelude.hashWithSalt` foregroundColor
+
+instance
+  Prelude.NFData
+    KPIProgressBarConditionalFormatting
+  where
+  rnf KPIProgressBarConditionalFormatting' {..} =
+    Prelude.rnf foregroundColor
+
+instance
+  Data.ToJSON
+    KPIProgressBarConditionalFormatting
+  where
+  toJSON KPIProgressBarConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ForegroundColor" Data..=)
+              Prelude.<$> foregroundColor
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPISortConfiguration.hs b/gen/Amazonka/QuickSight/Types/KPISortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPISortConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.KPISortConfiguration
+-- 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.QuickSight.Types.KPISortConfiguration 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.QuickSight.Types.FieldSortOptions
+
+-- | The sort configuration of a KPI visual.
+--
+-- /See:/ 'newKPISortConfiguration' smart constructor.
+data KPISortConfiguration = KPISortConfiguration'
+  { -- | The sort configuration of the trend group fields.
+    trendGroupSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPISortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'trendGroupSort', 'kPISortConfiguration_trendGroupSort' - The sort configuration of the trend group fields.
+newKPISortConfiguration ::
+  KPISortConfiguration
+newKPISortConfiguration =
+  KPISortConfiguration'
+    { trendGroupSort =
+        Prelude.Nothing
+    }
+
+-- | The sort configuration of the trend group fields.
+kPISortConfiguration_trendGroupSort :: Lens.Lens' KPISortConfiguration (Prelude.Maybe [FieldSortOptions])
+kPISortConfiguration_trendGroupSort = Lens.lens (\KPISortConfiguration' {trendGroupSort} -> trendGroupSort) (\s@KPISortConfiguration' {} a -> s {trendGroupSort = a} :: KPISortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON KPISortConfiguration where
+  parseJSON =
+    Data.withObject
+      "KPISortConfiguration"
+      ( \x ->
+          KPISortConfiguration'
+            Prelude.<$> ( x
+                            Data..:? "TrendGroupSort"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable KPISortConfiguration where
+  hashWithSalt _salt KPISortConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` trendGroupSort
+
+instance Prelude.NFData KPISortConfiguration where
+  rnf KPISortConfiguration' {..} =
+    Prelude.rnf trendGroupSort
+
+instance Data.ToJSON KPISortConfiguration where
+  toJSON KPISortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TrendGroupSort" Data..=)
+              Prelude.<$> trendGroupSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/KPIVisual.hs b/gen/Amazonka/QuickSight/Types/KPIVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/KPIVisual.hs
@@ -0,0 +1,182 @@
+{-# 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.QuickSight.Types.KPIVisual
+-- 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.QuickSight.Types.KPIVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.KPIConditionalFormatting
+import Amazonka.QuickSight.Types.KPIConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A key performance indicator (KPI).
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/kpi.html Using KPIs>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newKPIVisual' smart constructor.
+data KPIVisual = KPIVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a KPI visual.
+    chartConfiguration :: Prelude.Maybe KPIConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The conditional formatting of a KPI visual.
+    conditionalFormatting :: Prelude.Maybe KPIConditionalFormatting,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KPIVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'kPIVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'kPIVisual_chartConfiguration' - The configuration of a KPI visual.
+--
+-- 'columnHierarchies', 'kPIVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'conditionalFormatting', 'kPIVisual_conditionalFormatting' - The conditional formatting of a KPI visual.
+--
+-- 'subtitle', 'kPIVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'kPIVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'kPIVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newKPIVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  KPIVisual
+newKPIVisual pVisualId_ =
+  KPIVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      conditionalFormatting = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+kPIVisual_actions :: Lens.Lens' KPIVisual (Prelude.Maybe [VisualCustomAction])
+kPIVisual_actions = Lens.lens (\KPIVisual' {actions} -> actions) (\s@KPIVisual' {} a -> s {actions = a} :: KPIVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a KPI visual.
+kPIVisual_chartConfiguration :: Lens.Lens' KPIVisual (Prelude.Maybe KPIConfiguration)
+kPIVisual_chartConfiguration = Lens.lens (\KPIVisual' {chartConfiguration} -> chartConfiguration) (\s@KPIVisual' {} a -> s {chartConfiguration = a} :: KPIVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+kPIVisual_columnHierarchies :: Lens.Lens' KPIVisual (Prelude.Maybe [ColumnHierarchy])
+kPIVisual_columnHierarchies = Lens.lens (\KPIVisual' {columnHierarchies} -> columnHierarchies) (\s@KPIVisual' {} a -> s {columnHierarchies = a} :: KPIVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The conditional formatting of a KPI visual.
+kPIVisual_conditionalFormatting :: Lens.Lens' KPIVisual (Prelude.Maybe KPIConditionalFormatting)
+kPIVisual_conditionalFormatting = Lens.lens (\KPIVisual' {conditionalFormatting} -> conditionalFormatting) (\s@KPIVisual' {} a -> s {conditionalFormatting = a} :: KPIVisual)
+
+-- | The subtitle that is displayed on the visual.
+kPIVisual_subtitle :: Lens.Lens' KPIVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+kPIVisual_subtitle = Lens.lens (\KPIVisual' {subtitle} -> subtitle) (\s@KPIVisual' {} a -> s {subtitle = a} :: KPIVisual)
+
+-- | The title that is displayed on the visual.
+kPIVisual_title :: Lens.Lens' KPIVisual (Prelude.Maybe VisualTitleLabelOptions)
+kPIVisual_title = Lens.lens (\KPIVisual' {title} -> title) (\s@KPIVisual' {} a -> s {title = a} :: KPIVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+kPIVisual_visualId :: Lens.Lens' KPIVisual Prelude.Text
+kPIVisual_visualId = Lens.lens (\KPIVisual' {visualId} -> visualId) (\s@KPIVisual' {} a -> s {visualId = a} :: KPIVisual)
+
+instance Data.FromJSON KPIVisual where
+  parseJSON =
+    Data.withObject
+      "KPIVisual"
+      ( \x ->
+          KPIVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "ConditionalFormatting")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable KPIVisual where
+  hashWithSalt _salt KPIVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` conditionalFormatting
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData KPIVisual where
+  rnf KPIVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf conditionalFormatting
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON KPIVisual where
+  toJSON KPIVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("ConditionalFormatting" Data..=)
+              Prelude.<$> conditionalFormatting,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LabelOptions.hs b/gen/Amazonka/QuickSight/Types/LabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LabelOptions.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.LabelOptions
+-- 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.QuickSight.Types.LabelOptions 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.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The share label options for the labels.
+--
+-- /See:/ 'newLabelOptions' smart constructor.
+data LabelOptions = LabelOptions'
+  { -- | The text for the label.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The font configuration of the label.
+    fontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | Determines whether or not the label is visible.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'labelOptions_customLabel' - The text for the label.
+--
+-- 'fontConfiguration', 'labelOptions_fontConfiguration' - The font configuration of the label.
+--
+-- 'visibility', 'labelOptions_visibility' - Determines whether or not the label is visible.
+newLabelOptions ::
+  LabelOptions
+newLabelOptions =
+  LabelOptions'
+    { customLabel = Prelude.Nothing,
+      fontConfiguration = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The text for the label.
+labelOptions_customLabel :: Lens.Lens' LabelOptions (Prelude.Maybe Prelude.Text)
+labelOptions_customLabel = Lens.lens (\LabelOptions' {customLabel} -> customLabel) (\s@LabelOptions' {} a -> s {customLabel = a} :: LabelOptions)
+
+-- | The font configuration of the label.
+labelOptions_fontConfiguration :: Lens.Lens' LabelOptions (Prelude.Maybe FontConfiguration)
+labelOptions_fontConfiguration = Lens.lens (\LabelOptions' {fontConfiguration} -> fontConfiguration) (\s@LabelOptions' {} a -> s {fontConfiguration = a} :: LabelOptions)
+
+-- | Determines whether or not the label is visible.
+labelOptions_visibility :: Lens.Lens' LabelOptions (Prelude.Maybe Visibility)
+labelOptions_visibility = Lens.lens (\LabelOptions' {visibility} -> visibility) (\s@LabelOptions' {} a -> s {visibility = a} :: LabelOptions)
+
+instance Data.FromJSON LabelOptions where
+  parseJSON =
+    Data.withObject
+      "LabelOptions"
+      ( \x ->
+          LabelOptions'
+            Prelude.<$> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "FontConfiguration")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable LabelOptions where
+  hashWithSalt _salt LabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` fontConfiguration
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData LabelOptions where
+  rnf LabelOptions' {..} =
+    Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf fontConfiguration
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON LabelOptions where
+  toJSON LabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("FontConfiguration" Data..=)
+              Prelude.<$> fontConfiguration,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Layout.hs b/gen/Amazonka/QuickSight/Types/Layout.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Layout.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.QuickSight.Types.Layout
+-- 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.QuickSight.Types.Layout 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.QuickSight.Types.LayoutConfiguration
+
+-- | A @Layout@ defines the placement of elements within a sheet.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/types-of-layout.html Types of layout>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newLayout' smart constructor.
+data Layout = Layout'
+  { -- | The configuration that determines what the type of layout for a sheet.
+    configuration :: LayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Layout' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configuration', 'layout_configuration' - The configuration that determines what the type of layout for a sheet.
+newLayout ::
+  -- | 'configuration'
+  LayoutConfiguration ->
+  Layout
+newLayout pConfiguration_ =
+  Layout' {configuration = pConfiguration_}
+
+-- | The configuration that determines what the type of layout for a sheet.
+layout_configuration :: Lens.Lens' Layout LayoutConfiguration
+layout_configuration = Lens.lens (\Layout' {configuration} -> configuration) (\s@Layout' {} a -> s {configuration = a} :: Layout)
+
+instance Data.FromJSON Layout where
+  parseJSON =
+    Data.withObject
+      "Layout"
+      ( \x ->
+          Layout' Prelude.<$> (x Data..: "Configuration")
+      )
+
+instance Prelude.Hashable Layout where
+  hashWithSalt _salt Layout' {..} =
+    _salt `Prelude.hashWithSalt` configuration
+
+instance Prelude.NFData Layout where
+  rnf Layout' {..} = Prelude.rnf configuration
+
+instance Data.ToJSON Layout where
+  toJSON Layout' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("Configuration" Data..= configuration)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/LayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LayoutConfiguration.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.LayoutConfiguration
+-- 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.QuickSight.Types.LayoutConfiguration 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.QuickSight.Types.FreeFormLayoutConfiguration
+import Amazonka.QuickSight.Types.GridLayoutConfiguration
+import Amazonka.QuickSight.Types.SectionBasedLayoutConfiguration
+
+-- | The configuration that determines what the type of layout will be used
+-- on a sheet.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newLayoutConfiguration' smart constructor.
+data LayoutConfiguration = LayoutConfiguration'
+  { -- | A free-form is optimized for a fixed width and has more control over the
+    -- exact placement of layout elements.
+    freeFormLayout :: Prelude.Maybe FreeFormLayoutConfiguration,
+    -- | A type of layout that can be used on a sheet. In a grid layout, visuals
+    -- snap to a grid with standard spacing and alignment. Dashboards are
+    -- displayed as designed, with options to fit to screen or view at actual
+    -- size. A grid layout can be configured to behave in one of two ways when
+    -- the viewport is resized: @FIXED@ or @RESPONSIVE@.
+    gridLayout :: Prelude.Maybe GridLayoutConfiguration,
+    -- | A section based layout organizes visuals into multiple sections and has
+    -- customized header, footer and page break.
+    sectionBasedLayout :: Prelude.Maybe SectionBasedLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'freeFormLayout', 'layoutConfiguration_freeFormLayout' - A free-form is optimized for a fixed width and has more control over the
+-- exact placement of layout elements.
+--
+-- 'gridLayout', 'layoutConfiguration_gridLayout' - A type of layout that can be used on a sheet. In a grid layout, visuals
+-- snap to a grid with standard spacing and alignment. Dashboards are
+-- displayed as designed, with options to fit to screen or view at actual
+-- size. A grid layout can be configured to behave in one of two ways when
+-- the viewport is resized: @FIXED@ or @RESPONSIVE@.
+--
+-- 'sectionBasedLayout', 'layoutConfiguration_sectionBasedLayout' - A section based layout organizes visuals into multiple sections and has
+-- customized header, footer and page break.
+newLayoutConfiguration ::
+  LayoutConfiguration
+newLayoutConfiguration =
+  LayoutConfiguration'
+    { freeFormLayout =
+        Prelude.Nothing,
+      gridLayout = Prelude.Nothing,
+      sectionBasedLayout = Prelude.Nothing
+    }
+
+-- | A free-form is optimized for a fixed width and has more control over the
+-- exact placement of layout elements.
+layoutConfiguration_freeFormLayout :: Lens.Lens' LayoutConfiguration (Prelude.Maybe FreeFormLayoutConfiguration)
+layoutConfiguration_freeFormLayout = Lens.lens (\LayoutConfiguration' {freeFormLayout} -> freeFormLayout) (\s@LayoutConfiguration' {} a -> s {freeFormLayout = a} :: LayoutConfiguration)
+
+-- | A type of layout that can be used on a sheet. In a grid layout, visuals
+-- snap to a grid with standard spacing and alignment. Dashboards are
+-- displayed as designed, with options to fit to screen or view at actual
+-- size. A grid layout can be configured to behave in one of two ways when
+-- the viewport is resized: @FIXED@ or @RESPONSIVE@.
+layoutConfiguration_gridLayout :: Lens.Lens' LayoutConfiguration (Prelude.Maybe GridLayoutConfiguration)
+layoutConfiguration_gridLayout = Lens.lens (\LayoutConfiguration' {gridLayout} -> gridLayout) (\s@LayoutConfiguration' {} a -> s {gridLayout = a} :: LayoutConfiguration)
+
+-- | A section based layout organizes visuals into multiple sections and has
+-- customized header, footer and page break.
+layoutConfiguration_sectionBasedLayout :: Lens.Lens' LayoutConfiguration (Prelude.Maybe SectionBasedLayoutConfiguration)
+layoutConfiguration_sectionBasedLayout = Lens.lens (\LayoutConfiguration' {sectionBasedLayout} -> sectionBasedLayout) (\s@LayoutConfiguration' {} a -> s {sectionBasedLayout = a} :: LayoutConfiguration)
+
+instance Data.FromJSON LayoutConfiguration where
+  parseJSON =
+    Data.withObject
+      "LayoutConfiguration"
+      ( \x ->
+          LayoutConfiguration'
+            Prelude.<$> (x Data..:? "FreeFormLayout")
+            Prelude.<*> (x Data..:? "GridLayout")
+            Prelude.<*> (x Data..:? "SectionBasedLayout")
+      )
+
+instance Prelude.Hashable LayoutConfiguration where
+  hashWithSalt _salt LayoutConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` freeFormLayout
+      `Prelude.hashWithSalt` gridLayout
+      `Prelude.hashWithSalt` sectionBasedLayout
+
+instance Prelude.NFData LayoutConfiguration where
+  rnf LayoutConfiguration' {..} =
+    Prelude.rnf freeFormLayout
+      `Prelude.seq` Prelude.rnf gridLayout
+      `Prelude.seq` Prelude.rnf sectionBasedLayout
+
+instance Data.ToJSON LayoutConfiguration where
+  toJSON LayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FreeFormLayout" Data..=)
+              Prelude.<$> freeFormLayout,
+            ("GridLayout" Data..=) Prelude.<$> gridLayout,
+            ("SectionBasedLayout" Data..=)
+              Prelude.<$> sectionBasedLayout
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LayoutElementType.hs b/gen/Amazonka/QuickSight/Types/LayoutElementType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LayoutElementType.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.QuickSight.Types.LayoutElementType
+-- 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.QuickSight.Types.LayoutElementType
+  ( LayoutElementType
+      ( ..,
+        LayoutElementType_FILTER_CONTROL,
+        LayoutElementType_PARAMETER_CONTROL,
+        LayoutElementType_TEXT_BOX,
+        LayoutElementType_VISUAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LayoutElementType = LayoutElementType'
+  { fromLayoutElementType ::
+      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 LayoutElementType_FILTER_CONTROL :: LayoutElementType
+pattern LayoutElementType_FILTER_CONTROL = LayoutElementType' "FILTER_CONTROL"
+
+pattern LayoutElementType_PARAMETER_CONTROL :: LayoutElementType
+pattern LayoutElementType_PARAMETER_CONTROL = LayoutElementType' "PARAMETER_CONTROL"
+
+pattern LayoutElementType_TEXT_BOX :: LayoutElementType
+pattern LayoutElementType_TEXT_BOX = LayoutElementType' "TEXT_BOX"
+
+pattern LayoutElementType_VISUAL :: LayoutElementType
+pattern LayoutElementType_VISUAL = LayoutElementType' "VISUAL"
+
+{-# COMPLETE
+  LayoutElementType_FILTER_CONTROL,
+  LayoutElementType_PARAMETER_CONTROL,
+  LayoutElementType_TEXT_BOX,
+  LayoutElementType_VISUAL,
+  LayoutElementType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/LegendOptions.hs b/gen/Amazonka/QuickSight/Types/LegendOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LegendOptions.hs
@@ -0,0 +1,165 @@
+{-# 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.QuickSight.Types.LegendOptions
+-- 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.QuickSight.Types.LegendOptions 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.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.LegendPosition
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options for the legend setup of a visual.
+--
+-- /See:/ 'newLegendOptions' smart constructor.
+data LegendOptions = LegendOptions'
+  { -- | The height of the legend. If this value is omitted, a default height is
+    -- used when rendering.
+    height :: Prelude.Maybe Prelude.Text,
+    -- | The positions for the legend. Choose one of the following options:
+    --
+    -- -   @AUTO@
+    --
+    -- -   @RIGHT@
+    --
+    -- -   @BOTTOM@
+    --
+    -- -   @LEFT@
+    position :: Prelude.Maybe LegendPosition,
+    -- | The custom title for the legend.
+    title :: Prelude.Maybe LabelOptions,
+    -- | Determines whether or not the legend is visible.
+    visibility :: Prelude.Maybe Visibility,
+    -- | The width of the legend. If this value is omitted, a default width is
+    -- used when rendering.
+    width :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LegendOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'height', 'legendOptions_height' - The height of the legend. If this value is omitted, a default height is
+-- used when rendering.
+--
+-- 'position', 'legendOptions_position' - The positions for the legend. Choose one of the following options:
+--
+-- -   @AUTO@
+--
+-- -   @RIGHT@
+--
+-- -   @BOTTOM@
+--
+-- -   @LEFT@
+--
+-- 'title', 'legendOptions_title' - The custom title for the legend.
+--
+-- 'visibility', 'legendOptions_visibility' - Determines whether or not the legend is visible.
+--
+-- 'width', 'legendOptions_width' - The width of the legend. If this value is omitted, a default width is
+-- used when rendering.
+newLegendOptions ::
+  LegendOptions
+newLegendOptions =
+  LegendOptions'
+    { height = Prelude.Nothing,
+      position = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | The height of the legend. If this value is omitted, a default height is
+-- used when rendering.
+legendOptions_height :: Lens.Lens' LegendOptions (Prelude.Maybe Prelude.Text)
+legendOptions_height = Lens.lens (\LegendOptions' {height} -> height) (\s@LegendOptions' {} a -> s {height = a} :: LegendOptions)
+
+-- | The positions for the legend. Choose one of the following options:
+--
+-- -   @AUTO@
+--
+-- -   @RIGHT@
+--
+-- -   @BOTTOM@
+--
+-- -   @LEFT@
+legendOptions_position :: Lens.Lens' LegendOptions (Prelude.Maybe LegendPosition)
+legendOptions_position = Lens.lens (\LegendOptions' {position} -> position) (\s@LegendOptions' {} a -> s {position = a} :: LegendOptions)
+
+-- | The custom title for the legend.
+legendOptions_title :: Lens.Lens' LegendOptions (Prelude.Maybe LabelOptions)
+legendOptions_title = Lens.lens (\LegendOptions' {title} -> title) (\s@LegendOptions' {} a -> s {title = a} :: LegendOptions)
+
+-- | Determines whether or not the legend is visible.
+legendOptions_visibility :: Lens.Lens' LegendOptions (Prelude.Maybe Visibility)
+legendOptions_visibility = Lens.lens (\LegendOptions' {visibility} -> visibility) (\s@LegendOptions' {} a -> s {visibility = a} :: LegendOptions)
+
+-- | The width of the legend. If this value is omitted, a default width is
+-- used when rendering.
+legendOptions_width :: Lens.Lens' LegendOptions (Prelude.Maybe Prelude.Text)
+legendOptions_width = Lens.lens (\LegendOptions' {width} -> width) (\s@LegendOptions' {} a -> s {width = a} :: LegendOptions)
+
+instance Data.FromJSON LegendOptions where
+  parseJSON =
+    Data.withObject
+      "LegendOptions"
+      ( \x ->
+          LegendOptions'
+            Prelude.<$> (x Data..:? "Height")
+            Prelude.<*> (x Data..:? "Position")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..:? "Width")
+      )
+
+instance Prelude.Hashable LegendOptions where
+  hashWithSalt _salt LegendOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData LegendOptions where
+  rnf LegendOptions' {..} =
+    Prelude.rnf height
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON LegendOptions where
+  toJSON LegendOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Height" Data..=) Prelude.<$> height,
+            ("Position" Data..=) Prelude.<$> position,
+            ("Title" Data..=) Prelude.<$> title,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            ("Width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LegendPosition.hs b/gen/Amazonka/QuickSight/Types/LegendPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LegendPosition.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.QuickSight.Types.LegendPosition
+-- 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.QuickSight.Types.LegendPosition
+  ( LegendPosition
+      ( ..,
+        LegendPosition_AUTO,
+        LegendPosition_BOTTOM,
+        LegendPosition_RIGHT,
+        LegendPosition_TOP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LegendPosition = LegendPosition'
+  { fromLegendPosition ::
+      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 LegendPosition_AUTO :: LegendPosition
+pattern LegendPosition_AUTO = LegendPosition' "AUTO"
+
+pattern LegendPosition_BOTTOM :: LegendPosition
+pattern LegendPosition_BOTTOM = LegendPosition' "BOTTOM"
+
+pattern LegendPosition_RIGHT :: LegendPosition
+pattern LegendPosition_RIGHT = LegendPosition' "RIGHT"
+
+pattern LegendPosition_TOP :: LegendPosition
+pattern LegendPosition_TOP = LegendPosition' "TOP"
+
+{-# COMPLETE
+  LegendPosition_AUTO,
+  LegendPosition_BOTTOM,
+  LegendPosition_RIGHT,
+  LegendPosition_TOP,
+  LegendPosition'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/LineChartAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/LineChartAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartAggregatedFieldWells.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.LineChartAggregatedFieldWells
+-- 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.QuickSight.Types.LineChartAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a line chart.
+--
+-- /See:/ 'newLineChartAggregatedFieldWells' smart constructor.
+data LineChartAggregatedFieldWells = LineChartAggregatedFieldWells'
+  { -- | The category field wells of a line chart. Values are grouped by category
+    -- fields.
+    category :: Prelude.Maybe [DimensionField],
+    -- | The color field wells of a line chart. Values are grouped by category
+    -- fields.
+    colors :: Prelude.Maybe [DimensionField],
+    -- | The small multiples field well of a line chart.
+    smallMultiples :: Prelude.Maybe [DimensionField],
+    -- | The value field wells of a line chart. Values are aggregated based on
+    -- categories.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'category', 'lineChartAggregatedFieldWells_category' - The category field wells of a line chart. Values are grouped by category
+-- fields.
+--
+-- 'colors', 'lineChartAggregatedFieldWells_colors' - The color field wells of a line chart. Values are grouped by category
+-- fields.
+--
+-- 'smallMultiples', 'lineChartAggregatedFieldWells_smallMultiples' - The small multiples field well of a line chart.
+--
+-- 'values', 'lineChartAggregatedFieldWells_values' - The value field wells of a line chart. Values are aggregated based on
+-- categories.
+newLineChartAggregatedFieldWells ::
+  LineChartAggregatedFieldWells
+newLineChartAggregatedFieldWells =
+  LineChartAggregatedFieldWells'
+    { category =
+        Prelude.Nothing,
+      colors = Prelude.Nothing,
+      smallMultiples = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The category field wells of a line chart. Values are grouped by category
+-- fields.
+lineChartAggregatedFieldWells_category :: Lens.Lens' LineChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+lineChartAggregatedFieldWells_category = Lens.lens (\LineChartAggregatedFieldWells' {category} -> category) (\s@LineChartAggregatedFieldWells' {} a -> s {category = a} :: LineChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The color field wells of a line chart. Values are grouped by category
+-- fields.
+lineChartAggregatedFieldWells_colors :: Lens.Lens' LineChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+lineChartAggregatedFieldWells_colors = Lens.lens (\LineChartAggregatedFieldWells' {colors} -> colors) (\s@LineChartAggregatedFieldWells' {} a -> s {colors = a} :: LineChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The small multiples field well of a line chart.
+lineChartAggregatedFieldWells_smallMultiples :: Lens.Lens' LineChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+lineChartAggregatedFieldWells_smallMultiples = Lens.lens (\LineChartAggregatedFieldWells' {smallMultiples} -> smallMultiples) (\s@LineChartAggregatedFieldWells' {} a -> s {smallMultiples = a} :: LineChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a line chart. Values are aggregated based on
+-- categories.
+lineChartAggregatedFieldWells_values :: Lens.Lens' LineChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+lineChartAggregatedFieldWells_values = Lens.lens (\LineChartAggregatedFieldWells' {values} -> values) (\s@LineChartAggregatedFieldWells' {} a -> s {values = a} :: LineChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LineChartAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "LineChartAggregatedFieldWells"
+      ( \x ->
+          LineChartAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Category" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Colors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiples" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    LineChartAggregatedFieldWells
+  where
+  hashWithSalt _salt LineChartAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` colors
+      `Prelude.hashWithSalt` smallMultiples
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData LineChartAggregatedFieldWells where
+  rnf LineChartAggregatedFieldWells' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf smallMultiples
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON LineChartAggregatedFieldWells where
+  toJSON LineChartAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Category" Data..=) Prelude.<$> category,
+            ("Colors" Data..=) Prelude.<$> colors,
+            ("SmallMultiples" Data..=)
+              Prelude.<$> smallMultiples,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/LineChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartConfiguration.hs
@@ -0,0 +1,352 @@
+{-# 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.QuickSight.Types.LineChartConfiguration
+-- 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.QuickSight.Types.LineChartConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ContributionAnalysisDefault
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.ForecastConfiguration
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.LineChartDefaultSeriesSettings
+import Amazonka.QuickSight.Types.LineChartFieldWells
+import Amazonka.QuickSight.Types.LineChartSortConfiguration
+import Amazonka.QuickSight.Types.LineChartType
+import Amazonka.QuickSight.Types.LineSeriesAxisDisplayOptions
+import Amazonka.QuickSight.Types.ReferenceLine
+import Amazonka.QuickSight.Types.SeriesItem
+import Amazonka.QuickSight.Types.SmallMultiplesOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a line chart.
+--
+-- /See:/ 'newLineChartConfiguration' smart constructor.
+data LineChartConfiguration = LineChartConfiguration'
+  { -- | The default configuration of a line chart\'s contribution analysis.
+    contributionAnalysisDefaults :: Prelude.Maybe (Prelude.NonEmpty ContributionAnalysisDefault),
+    -- | The data label configuration of a line chart.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The options that determine the default presentation of all line series
+    -- in @LineChartVisual@.
+    defaultSeriesSettings :: Prelude.Maybe LineChartDefaultSeriesSettings,
+    -- | The field well configuration of a line chart.
+    fieldWells :: Prelude.Maybe LineChartFieldWells,
+    -- | The forecast configuration of a line chart.
+    forecastConfigurations :: Prelude.Maybe [ForecastConfiguration],
+    -- | The legend configuration of a line chart.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The series axis configuration of a line chart.
+    primaryYAxisDisplayOptions :: Prelude.Maybe LineSeriesAxisDisplayOptions,
+    -- | The options that determine the presentation of the y-axis label.
+    primaryYAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The reference lines configuration of a line chart.
+    referenceLines :: Prelude.Maybe [ReferenceLine],
+    -- | The series axis configuration of a line chart.
+    secondaryYAxisDisplayOptions :: Prelude.Maybe LineSeriesAxisDisplayOptions,
+    -- | The options that determine the presentation of the secondary y-axis
+    -- label.
+    secondaryYAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The series item configuration of a line chart.
+    series :: Prelude.Maybe [SeriesItem],
+    -- | The small multiples setup for the visual.
+    smallMultiplesOptions :: Prelude.Maybe SmallMultiplesOptions,
+    -- | The sort configuration of a line chart.
+    sortConfiguration :: Prelude.Maybe LineChartSortConfiguration,
+    -- | The tooltip configuration of a line chart.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | Determines the type of the line chart.
+    type' :: Prelude.Maybe LineChartType,
+    -- | The visual palette configuration of a line chart.
+    visualPalette :: Prelude.Maybe VisualPalette,
+    -- | The options that determine the presentation of the x-axis.
+    xAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The options that determine the presentation of the x-axis label.
+    xAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'contributionAnalysisDefaults', 'lineChartConfiguration_contributionAnalysisDefaults' - The default configuration of a line chart\'s contribution analysis.
+--
+-- 'dataLabels', 'lineChartConfiguration_dataLabels' - The data label configuration of a line chart.
+--
+-- 'defaultSeriesSettings', 'lineChartConfiguration_defaultSeriesSettings' - The options that determine the default presentation of all line series
+-- in @LineChartVisual@.
+--
+-- 'fieldWells', 'lineChartConfiguration_fieldWells' - The field well configuration of a line chart.
+--
+-- 'forecastConfigurations', 'lineChartConfiguration_forecastConfigurations' - The forecast configuration of a line chart.
+--
+-- 'legend', 'lineChartConfiguration_legend' - The legend configuration of a line chart.
+--
+-- 'primaryYAxisDisplayOptions', 'lineChartConfiguration_primaryYAxisDisplayOptions' - The series axis configuration of a line chart.
+--
+-- 'primaryYAxisLabelOptions', 'lineChartConfiguration_primaryYAxisLabelOptions' - The options that determine the presentation of the y-axis label.
+--
+-- 'referenceLines', 'lineChartConfiguration_referenceLines' - The reference lines configuration of a line chart.
+--
+-- 'secondaryYAxisDisplayOptions', 'lineChartConfiguration_secondaryYAxisDisplayOptions' - The series axis configuration of a line chart.
+--
+-- 'secondaryYAxisLabelOptions', 'lineChartConfiguration_secondaryYAxisLabelOptions' - The options that determine the presentation of the secondary y-axis
+-- label.
+--
+-- 'series', 'lineChartConfiguration_series' - The series item configuration of a line chart.
+--
+-- 'smallMultiplesOptions', 'lineChartConfiguration_smallMultiplesOptions' - The small multiples setup for the visual.
+--
+-- 'sortConfiguration', 'lineChartConfiguration_sortConfiguration' - The sort configuration of a line chart.
+--
+-- 'tooltip', 'lineChartConfiguration_tooltip' - The tooltip configuration of a line chart.
+--
+-- 'type'', 'lineChartConfiguration_type' - Determines the type of the line chart.
+--
+-- 'visualPalette', 'lineChartConfiguration_visualPalette' - The visual palette configuration of a line chart.
+--
+-- 'xAxisDisplayOptions', 'lineChartConfiguration_xAxisDisplayOptions' - The options that determine the presentation of the x-axis.
+--
+-- 'xAxisLabelOptions', 'lineChartConfiguration_xAxisLabelOptions' - The options that determine the presentation of the x-axis label.
+newLineChartConfiguration ::
+  LineChartConfiguration
+newLineChartConfiguration =
+  LineChartConfiguration'
+    { contributionAnalysisDefaults =
+        Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      defaultSeriesSettings = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      forecastConfigurations = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      primaryYAxisDisplayOptions = Prelude.Nothing,
+      primaryYAxisLabelOptions = Prelude.Nothing,
+      referenceLines = Prelude.Nothing,
+      secondaryYAxisDisplayOptions = Prelude.Nothing,
+      secondaryYAxisLabelOptions = Prelude.Nothing,
+      series = Prelude.Nothing,
+      smallMultiplesOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      visualPalette = Prelude.Nothing,
+      xAxisDisplayOptions = Prelude.Nothing,
+      xAxisLabelOptions = Prelude.Nothing
+    }
+
+-- | The default configuration of a line chart\'s contribution analysis.
+lineChartConfiguration_contributionAnalysisDefaults :: Lens.Lens' LineChartConfiguration (Prelude.Maybe (Prelude.NonEmpty ContributionAnalysisDefault))
+lineChartConfiguration_contributionAnalysisDefaults = Lens.lens (\LineChartConfiguration' {contributionAnalysisDefaults} -> contributionAnalysisDefaults) (\s@LineChartConfiguration' {} a -> s {contributionAnalysisDefaults = a} :: LineChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The data label configuration of a line chart.
+lineChartConfiguration_dataLabels :: Lens.Lens' LineChartConfiguration (Prelude.Maybe DataLabelOptions)
+lineChartConfiguration_dataLabels = Lens.lens (\LineChartConfiguration' {dataLabels} -> dataLabels) (\s@LineChartConfiguration' {} a -> s {dataLabels = a} :: LineChartConfiguration)
+
+-- | The options that determine the default presentation of all line series
+-- in @LineChartVisual@.
+lineChartConfiguration_defaultSeriesSettings :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LineChartDefaultSeriesSettings)
+lineChartConfiguration_defaultSeriesSettings = Lens.lens (\LineChartConfiguration' {defaultSeriesSettings} -> defaultSeriesSettings) (\s@LineChartConfiguration' {} a -> s {defaultSeriesSettings = a} :: LineChartConfiguration)
+
+-- | The field well configuration of a line chart.
+lineChartConfiguration_fieldWells :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LineChartFieldWells)
+lineChartConfiguration_fieldWells = Lens.lens (\LineChartConfiguration' {fieldWells} -> fieldWells) (\s@LineChartConfiguration' {} a -> s {fieldWells = a} :: LineChartConfiguration)
+
+-- | The forecast configuration of a line chart.
+lineChartConfiguration_forecastConfigurations :: Lens.Lens' LineChartConfiguration (Prelude.Maybe [ForecastConfiguration])
+lineChartConfiguration_forecastConfigurations = Lens.lens (\LineChartConfiguration' {forecastConfigurations} -> forecastConfigurations) (\s@LineChartConfiguration' {} a -> s {forecastConfigurations = a} :: LineChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The legend configuration of a line chart.
+lineChartConfiguration_legend :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LegendOptions)
+lineChartConfiguration_legend = Lens.lens (\LineChartConfiguration' {legend} -> legend) (\s@LineChartConfiguration' {} a -> s {legend = a} :: LineChartConfiguration)
+
+-- | The series axis configuration of a line chart.
+lineChartConfiguration_primaryYAxisDisplayOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LineSeriesAxisDisplayOptions)
+lineChartConfiguration_primaryYAxisDisplayOptions = Lens.lens (\LineChartConfiguration' {primaryYAxisDisplayOptions} -> primaryYAxisDisplayOptions) (\s@LineChartConfiguration' {} a -> s {primaryYAxisDisplayOptions = a} :: LineChartConfiguration)
+
+-- | The options that determine the presentation of the y-axis label.
+lineChartConfiguration_primaryYAxisLabelOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+lineChartConfiguration_primaryYAxisLabelOptions = Lens.lens (\LineChartConfiguration' {primaryYAxisLabelOptions} -> primaryYAxisLabelOptions) (\s@LineChartConfiguration' {} a -> s {primaryYAxisLabelOptions = a} :: LineChartConfiguration)
+
+-- | The reference lines configuration of a line chart.
+lineChartConfiguration_referenceLines :: Lens.Lens' LineChartConfiguration (Prelude.Maybe [ReferenceLine])
+lineChartConfiguration_referenceLines = Lens.lens (\LineChartConfiguration' {referenceLines} -> referenceLines) (\s@LineChartConfiguration' {} a -> s {referenceLines = a} :: LineChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The series axis configuration of a line chart.
+lineChartConfiguration_secondaryYAxisDisplayOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LineSeriesAxisDisplayOptions)
+lineChartConfiguration_secondaryYAxisDisplayOptions = Lens.lens (\LineChartConfiguration' {secondaryYAxisDisplayOptions} -> secondaryYAxisDisplayOptions) (\s@LineChartConfiguration' {} a -> s {secondaryYAxisDisplayOptions = a} :: LineChartConfiguration)
+
+-- | The options that determine the presentation of the secondary y-axis
+-- label.
+lineChartConfiguration_secondaryYAxisLabelOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+lineChartConfiguration_secondaryYAxisLabelOptions = Lens.lens (\LineChartConfiguration' {secondaryYAxisLabelOptions} -> secondaryYAxisLabelOptions) (\s@LineChartConfiguration' {} a -> s {secondaryYAxisLabelOptions = a} :: LineChartConfiguration)
+
+-- | The series item configuration of a line chart.
+lineChartConfiguration_series :: Lens.Lens' LineChartConfiguration (Prelude.Maybe [SeriesItem])
+lineChartConfiguration_series = Lens.lens (\LineChartConfiguration' {series} -> series) (\s@LineChartConfiguration' {} a -> s {series = a} :: LineChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The small multiples setup for the visual.
+lineChartConfiguration_smallMultiplesOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe SmallMultiplesOptions)
+lineChartConfiguration_smallMultiplesOptions = Lens.lens (\LineChartConfiguration' {smallMultiplesOptions} -> smallMultiplesOptions) (\s@LineChartConfiguration' {} a -> s {smallMultiplesOptions = a} :: LineChartConfiguration)
+
+-- | The sort configuration of a line chart.
+lineChartConfiguration_sortConfiguration :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LineChartSortConfiguration)
+lineChartConfiguration_sortConfiguration = Lens.lens (\LineChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@LineChartConfiguration' {} a -> s {sortConfiguration = a} :: LineChartConfiguration)
+
+-- | The tooltip configuration of a line chart.
+lineChartConfiguration_tooltip :: Lens.Lens' LineChartConfiguration (Prelude.Maybe TooltipOptions)
+lineChartConfiguration_tooltip = Lens.lens (\LineChartConfiguration' {tooltip} -> tooltip) (\s@LineChartConfiguration' {} a -> s {tooltip = a} :: LineChartConfiguration)
+
+-- | Determines the type of the line chart.
+lineChartConfiguration_type :: Lens.Lens' LineChartConfiguration (Prelude.Maybe LineChartType)
+lineChartConfiguration_type = Lens.lens (\LineChartConfiguration' {type'} -> type') (\s@LineChartConfiguration' {} a -> s {type' = a} :: LineChartConfiguration)
+
+-- | The visual palette configuration of a line chart.
+lineChartConfiguration_visualPalette :: Lens.Lens' LineChartConfiguration (Prelude.Maybe VisualPalette)
+lineChartConfiguration_visualPalette = Lens.lens (\LineChartConfiguration' {visualPalette} -> visualPalette) (\s@LineChartConfiguration' {} a -> s {visualPalette = a} :: LineChartConfiguration)
+
+-- | The options that determine the presentation of the x-axis.
+lineChartConfiguration_xAxisDisplayOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+lineChartConfiguration_xAxisDisplayOptions = Lens.lens (\LineChartConfiguration' {xAxisDisplayOptions} -> xAxisDisplayOptions) (\s@LineChartConfiguration' {} a -> s {xAxisDisplayOptions = a} :: LineChartConfiguration)
+
+-- | The options that determine the presentation of the x-axis label.
+lineChartConfiguration_xAxisLabelOptions :: Lens.Lens' LineChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+lineChartConfiguration_xAxisLabelOptions = Lens.lens (\LineChartConfiguration' {xAxisLabelOptions} -> xAxisLabelOptions) (\s@LineChartConfiguration' {} a -> s {xAxisLabelOptions = a} :: LineChartConfiguration)
+
+instance Data.FromJSON LineChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "LineChartConfiguration"
+      ( \x ->
+          LineChartConfiguration'
+            Prelude.<$> (x Data..:? "ContributionAnalysisDefaults")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "DefaultSeriesSettings")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> ( x
+                            Data..:? "ForecastConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "PrimaryYAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "PrimaryYAxisLabelOptions")
+            Prelude.<*> (x Data..:? "ReferenceLines" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SecondaryYAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "SecondaryYAxisLabelOptions")
+            Prelude.<*> (x Data..:? "Series" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiplesOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "VisualPalette")
+            Prelude.<*> (x Data..:? "XAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "XAxisLabelOptions")
+      )
+
+instance Prelude.Hashable LineChartConfiguration where
+  hashWithSalt _salt LineChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` contributionAnalysisDefaults
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` defaultSeriesSettings
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` forecastConfigurations
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` primaryYAxisDisplayOptions
+      `Prelude.hashWithSalt` primaryYAxisLabelOptions
+      `Prelude.hashWithSalt` referenceLines
+      `Prelude.hashWithSalt` secondaryYAxisDisplayOptions
+      `Prelude.hashWithSalt` secondaryYAxisLabelOptions
+      `Prelude.hashWithSalt` series
+      `Prelude.hashWithSalt` smallMultiplesOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` visualPalette
+      `Prelude.hashWithSalt` xAxisDisplayOptions
+      `Prelude.hashWithSalt` xAxisLabelOptions
+
+instance Prelude.NFData LineChartConfiguration where
+  rnf LineChartConfiguration' {..} =
+    Prelude.rnf contributionAnalysisDefaults
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf defaultSeriesSettings
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf forecastConfigurations
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf primaryYAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf primaryYAxisLabelOptions
+      `Prelude.seq` Prelude.rnf referenceLines
+      `Prelude.seq` Prelude.rnf secondaryYAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf secondaryYAxisLabelOptions
+      `Prelude.seq` Prelude.rnf series
+      `Prelude.seq` Prelude.rnf smallMultiplesOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf visualPalette
+      `Prelude.seq` Prelude.rnf xAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf xAxisLabelOptions
+
+instance Data.ToJSON LineChartConfiguration where
+  toJSON LineChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContributionAnalysisDefaults" Data..=)
+              Prelude.<$> contributionAnalysisDefaults,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("DefaultSeriesSettings" Data..=)
+              Prelude.<$> defaultSeriesSettings,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("ForecastConfigurations" Data..=)
+              Prelude.<$> forecastConfigurations,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("PrimaryYAxisDisplayOptions" Data..=)
+              Prelude.<$> primaryYAxisDisplayOptions,
+            ("PrimaryYAxisLabelOptions" Data..=)
+              Prelude.<$> primaryYAxisLabelOptions,
+            ("ReferenceLines" Data..=)
+              Prelude.<$> referenceLines,
+            ("SecondaryYAxisDisplayOptions" Data..=)
+              Prelude.<$> secondaryYAxisDisplayOptions,
+            ("SecondaryYAxisLabelOptions" Data..=)
+              Prelude.<$> secondaryYAxisLabelOptions,
+            ("Series" Data..=) Prelude.<$> series,
+            ("SmallMultiplesOptions" Data..=)
+              Prelude.<$> smallMultiplesOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("Type" Data..=) Prelude.<$> type',
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette,
+            ("XAxisDisplayOptions" Data..=)
+              Prelude.<$> xAxisDisplayOptions,
+            ("XAxisLabelOptions" Data..=)
+              Prelude.<$> xAxisLabelOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartDefaultSeriesSettings.hs b/gen/Amazonka/QuickSight/Types/LineChartDefaultSeriesSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartDefaultSeriesSettings.hs
@@ -0,0 +1,121 @@
+{-# 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.QuickSight.Types.LineChartDefaultSeriesSettings
+-- 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.QuickSight.Types.LineChartDefaultSeriesSettings 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.QuickSight.Types.AxisBinding
+import Amazonka.QuickSight.Types.LineChartLineStyleSettings
+import Amazonka.QuickSight.Types.LineChartMarkerStyleSettings
+
+-- | The options that determine the default presentation of all line series
+-- in @LineChartVisual@.
+--
+-- /See:/ 'newLineChartDefaultSeriesSettings' smart constructor.
+data LineChartDefaultSeriesSettings = LineChartDefaultSeriesSettings'
+  { -- | The axis to which you are binding all line series to.
+    axisBinding :: Prelude.Maybe AxisBinding,
+    -- | Line styles options for all line series in the visual.
+    lineStyleSettings :: Prelude.Maybe LineChartLineStyleSettings,
+    -- | Marker styles options for all line series in the visual.
+    markerStyleSettings :: Prelude.Maybe LineChartMarkerStyleSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartDefaultSeriesSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'axisBinding', 'lineChartDefaultSeriesSettings_axisBinding' - The axis to which you are binding all line series to.
+--
+-- 'lineStyleSettings', 'lineChartDefaultSeriesSettings_lineStyleSettings' - Line styles options for all line series in the visual.
+--
+-- 'markerStyleSettings', 'lineChartDefaultSeriesSettings_markerStyleSettings' - Marker styles options for all line series in the visual.
+newLineChartDefaultSeriesSettings ::
+  LineChartDefaultSeriesSettings
+newLineChartDefaultSeriesSettings =
+  LineChartDefaultSeriesSettings'
+    { axisBinding =
+        Prelude.Nothing,
+      lineStyleSettings = Prelude.Nothing,
+      markerStyleSettings = Prelude.Nothing
+    }
+
+-- | The axis to which you are binding all line series to.
+lineChartDefaultSeriesSettings_axisBinding :: Lens.Lens' LineChartDefaultSeriesSettings (Prelude.Maybe AxisBinding)
+lineChartDefaultSeriesSettings_axisBinding = Lens.lens (\LineChartDefaultSeriesSettings' {axisBinding} -> axisBinding) (\s@LineChartDefaultSeriesSettings' {} a -> s {axisBinding = a} :: LineChartDefaultSeriesSettings)
+
+-- | Line styles options for all line series in the visual.
+lineChartDefaultSeriesSettings_lineStyleSettings :: Lens.Lens' LineChartDefaultSeriesSettings (Prelude.Maybe LineChartLineStyleSettings)
+lineChartDefaultSeriesSettings_lineStyleSettings = Lens.lens (\LineChartDefaultSeriesSettings' {lineStyleSettings} -> lineStyleSettings) (\s@LineChartDefaultSeriesSettings' {} a -> s {lineStyleSettings = a} :: LineChartDefaultSeriesSettings)
+
+-- | Marker styles options for all line series in the visual.
+lineChartDefaultSeriesSettings_markerStyleSettings :: Lens.Lens' LineChartDefaultSeriesSettings (Prelude.Maybe LineChartMarkerStyleSettings)
+lineChartDefaultSeriesSettings_markerStyleSettings = Lens.lens (\LineChartDefaultSeriesSettings' {markerStyleSettings} -> markerStyleSettings) (\s@LineChartDefaultSeriesSettings' {} a -> s {markerStyleSettings = a} :: LineChartDefaultSeriesSettings)
+
+instance Data.FromJSON LineChartDefaultSeriesSettings where
+  parseJSON =
+    Data.withObject
+      "LineChartDefaultSeriesSettings"
+      ( \x ->
+          LineChartDefaultSeriesSettings'
+            Prelude.<$> (x Data..:? "AxisBinding")
+            Prelude.<*> (x Data..:? "LineStyleSettings")
+            Prelude.<*> (x Data..:? "MarkerStyleSettings")
+      )
+
+instance
+  Prelude.Hashable
+    LineChartDefaultSeriesSettings
+  where
+  hashWithSalt
+    _salt
+    LineChartDefaultSeriesSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` axisBinding
+        `Prelude.hashWithSalt` lineStyleSettings
+        `Prelude.hashWithSalt` markerStyleSettings
+
+instance
+  Prelude.NFData
+    LineChartDefaultSeriesSettings
+  where
+  rnf LineChartDefaultSeriesSettings' {..} =
+    Prelude.rnf axisBinding
+      `Prelude.seq` Prelude.rnf lineStyleSettings
+      `Prelude.seq` Prelude.rnf markerStyleSettings
+
+instance Data.ToJSON LineChartDefaultSeriesSettings where
+  toJSON LineChartDefaultSeriesSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AxisBinding" Data..=) Prelude.<$> axisBinding,
+            ("LineStyleSettings" Data..=)
+              Prelude.<$> lineStyleSettings,
+            ("MarkerStyleSettings" Data..=)
+              Prelude.<$> markerStyleSettings
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/LineChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartFieldWells.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.LineChartFieldWells
+-- 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.QuickSight.Types.LineChartFieldWells 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.QuickSight.Types.LineChartAggregatedFieldWells
+
+-- | The field well configuration of a line chart.
+--
+-- /See:/ 'newLineChartFieldWells' smart constructor.
+data LineChartFieldWells = LineChartFieldWells'
+  { -- | The field well configuration of a line chart.
+    lineChartAggregatedFieldWells :: Prelude.Maybe LineChartAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lineChartAggregatedFieldWells', 'lineChartFieldWells_lineChartAggregatedFieldWells' - The field well configuration of a line chart.
+newLineChartFieldWells ::
+  LineChartFieldWells
+newLineChartFieldWells =
+  LineChartFieldWells'
+    { lineChartAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The field well configuration of a line chart.
+lineChartFieldWells_lineChartAggregatedFieldWells :: Lens.Lens' LineChartFieldWells (Prelude.Maybe LineChartAggregatedFieldWells)
+lineChartFieldWells_lineChartAggregatedFieldWells = Lens.lens (\LineChartFieldWells' {lineChartAggregatedFieldWells} -> lineChartAggregatedFieldWells) (\s@LineChartFieldWells' {} a -> s {lineChartAggregatedFieldWells = a} :: LineChartFieldWells)
+
+instance Data.FromJSON LineChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "LineChartFieldWells"
+      ( \x ->
+          LineChartFieldWells'
+            Prelude.<$> (x Data..:? "LineChartAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable LineChartFieldWells where
+  hashWithSalt _salt LineChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` lineChartAggregatedFieldWells
+
+instance Prelude.NFData LineChartFieldWells where
+  rnf LineChartFieldWells' {..} =
+    Prelude.rnf lineChartAggregatedFieldWells
+
+instance Data.ToJSON LineChartFieldWells where
+  toJSON LineChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LineChartAggregatedFieldWells" Data..=)
+              Prelude.<$> lineChartAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartLineStyle.hs b/gen/Amazonka/QuickSight/Types/LineChartLineStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartLineStyle.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.QuickSight.Types.LineChartLineStyle
+-- 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.QuickSight.Types.LineChartLineStyle
+  ( LineChartLineStyle
+      ( ..,
+        LineChartLineStyle_DASHED,
+        LineChartLineStyle_DOTTED,
+        LineChartLineStyle_SOLID
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LineChartLineStyle = LineChartLineStyle'
+  { fromLineChartLineStyle ::
+      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 LineChartLineStyle_DASHED :: LineChartLineStyle
+pattern LineChartLineStyle_DASHED = LineChartLineStyle' "DASHED"
+
+pattern LineChartLineStyle_DOTTED :: LineChartLineStyle
+pattern LineChartLineStyle_DOTTED = LineChartLineStyle' "DOTTED"
+
+pattern LineChartLineStyle_SOLID :: LineChartLineStyle
+pattern LineChartLineStyle_SOLID = LineChartLineStyle' "SOLID"
+
+{-# COMPLETE
+  LineChartLineStyle_DASHED,
+  LineChartLineStyle_DOTTED,
+  LineChartLineStyle_SOLID,
+  LineChartLineStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/LineChartLineStyleSettings.hs b/gen/Amazonka/QuickSight/Types/LineChartLineStyleSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartLineStyleSettings.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.QuickSight.Types.LineChartLineStyleSettings
+-- 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.QuickSight.Types.LineChartLineStyleSettings 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.QuickSight.Types.LineChartLineStyle
+import Amazonka.QuickSight.Types.LineInterpolation
+import Amazonka.QuickSight.Types.Visibility
+
+-- | Line styles options for a line series in @LineChartVisual@.
+--
+-- /See:/ 'newLineChartLineStyleSettings' smart constructor.
+data LineChartLineStyleSettings = LineChartLineStyleSettings'
+  { -- | Interpolation style for line series.
+    --
+    -- -   @LINEAR@: Show as default, linear style.
+    --
+    -- -   @SMOOTH@: Show as a smooth curve.
+    --
+    -- -   @STEPPED@: Show steps in line.
+    lineInterpolation :: Prelude.Maybe LineInterpolation,
+    -- | Line style for line series.
+    --
+    -- -   @SOLID@: Show as a solid line.
+    --
+    -- -   @DOTTED@: Show as a dotted line.
+    --
+    -- -   @DASHED@: Show as a dashed line.
+    lineStyle :: Prelude.Maybe LineChartLineStyle,
+    -- | Configuration option that determines whether to show the line for the
+    -- series.
+    lineVisibility :: Prelude.Maybe Visibility,
+    -- | Width that determines the line thickness.
+    lineWidth :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartLineStyleSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lineInterpolation', 'lineChartLineStyleSettings_lineInterpolation' - Interpolation style for line series.
+--
+-- -   @LINEAR@: Show as default, linear style.
+--
+-- -   @SMOOTH@: Show as a smooth curve.
+--
+-- -   @STEPPED@: Show steps in line.
+--
+-- 'lineStyle', 'lineChartLineStyleSettings_lineStyle' - Line style for line series.
+--
+-- -   @SOLID@: Show as a solid line.
+--
+-- -   @DOTTED@: Show as a dotted line.
+--
+-- -   @DASHED@: Show as a dashed line.
+--
+-- 'lineVisibility', 'lineChartLineStyleSettings_lineVisibility' - Configuration option that determines whether to show the line for the
+-- series.
+--
+-- 'lineWidth', 'lineChartLineStyleSettings_lineWidth' - Width that determines the line thickness.
+newLineChartLineStyleSettings ::
+  LineChartLineStyleSettings
+newLineChartLineStyleSettings =
+  LineChartLineStyleSettings'
+    { lineInterpolation =
+        Prelude.Nothing,
+      lineStyle = Prelude.Nothing,
+      lineVisibility = Prelude.Nothing,
+      lineWidth = Prelude.Nothing
+    }
+
+-- | Interpolation style for line series.
+--
+-- -   @LINEAR@: Show as default, linear style.
+--
+-- -   @SMOOTH@: Show as a smooth curve.
+--
+-- -   @STEPPED@: Show steps in line.
+lineChartLineStyleSettings_lineInterpolation :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe LineInterpolation)
+lineChartLineStyleSettings_lineInterpolation = Lens.lens (\LineChartLineStyleSettings' {lineInterpolation} -> lineInterpolation) (\s@LineChartLineStyleSettings' {} a -> s {lineInterpolation = a} :: LineChartLineStyleSettings)
+
+-- | Line style for line series.
+--
+-- -   @SOLID@: Show as a solid line.
+--
+-- -   @DOTTED@: Show as a dotted line.
+--
+-- -   @DASHED@: Show as a dashed line.
+lineChartLineStyleSettings_lineStyle :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe LineChartLineStyle)
+lineChartLineStyleSettings_lineStyle = Lens.lens (\LineChartLineStyleSettings' {lineStyle} -> lineStyle) (\s@LineChartLineStyleSettings' {} a -> s {lineStyle = a} :: LineChartLineStyleSettings)
+
+-- | Configuration option that determines whether to show the line for the
+-- series.
+lineChartLineStyleSettings_lineVisibility :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe Visibility)
+lineChartLineStyleSettings_lineVisibility = Lens.lens (\LineChartLineStyleSettings' {lineVisibility} -> lineVisibility) (\s@LineChartLineStyleSettings' {} a -> s {lineVisibility = a} :: LineChartLineStyleSettings)
+
+-- | Width that determines the line thickness.
+lineChartLineStyleSettings_lineWidth :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe Prelude.Text)
+lineChartLineStyleSettings_lineWidth = Lens.lens (\LineChartLineStyleSettings' {lineWidth} -> lineWidth) (\s@LineChartLineStyleSettings' {} a -> s {lineWidth = a} :: LineChartLineStyleSettings)
+
+instance Data.FromJSON LineChartLineStyleSettings where
+  parseJSON =
+    Data.withObject
+      "LineChartLineStyleSettings"
+      ( \x ->
+          LineChartLineStyleSettings'
+            Prelude.<$> (x Data..:? "LineInterpolation")
+            Prelude.<*> (x Data..:? "LineStyle")
+            Prelude.<*> (x Data..:? "LineVisibility")
+            Prelude.<*> (x Data..:? "LineWidth")
+      )
+
+instance Prelude.Hashable LineChartLineStyleSettings where
+  hashWithSalt _salt LineChartLineStyleSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` lineInterpolation
+      `Prelude.hashWithSalt` lineStyle
+      `Prelude.hashWithSalt` lineVisibility
+      `Prelude.hashWithSalt` lineWidth
+
+instance Prelude.NFData LineChartLineStyleSettings where
+  rnf LineChartLineStyleSettings' {..} =
+    Prelude.rnf lineInterpolation
+      `Prelude.seq` Prelude.rnf lineStyle
+      `Prelude.seq` Prelude.rnf lineVisibility
+      `Prelude.seq` Prelude.rnf lineWidth
+
+instance Data.ToJSON LineChartLineStyleSettings where
+  toJSON LineChartLineStyleSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LineInterpolation" Data..=)
+              Prelude.<$> lineInterpolation,
+            ("LineStyle" Data..=) Prelude.<$> lineStyle,
+            ("LineVisibility" Data..=)
+              Prelude.<$> lineVisibility,
+            ("LineWidth" Data..=) Prelude.<$> lineWidth
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartMarkerShape.hs b/gen/Amazonka/QuickSight/Types/LineChartMarkerShape.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartMarkerShape.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.QuickSight.Types.LineChartMarkerShape
+-- 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.QuickSight.Types.LineChartMarkerShape
+  ( LineChartMarkerShape
+      ( ..,
+        LineChartMarkerShape_CIRCLE,
+        LineChartMarkerShape_DIAMOND,
+        LineChartMarkerShape_ROUNDED_SQUARE,
+        LineChartMarkerShape_SQUARE,
+        LineChartMarkerShape_TRIANGLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LineChartMarkerShape = LineChartMarkerShape'
+  { fromLineChartMarkerShape ::
+      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 LineChartMarkerShape_CIRCLE :: LineChartMarkerShape
+pattern LineChartMarkerShape_CIRCLE = LineChartMarkerShape' "CIRCLE"
+
+pattern LineChartMarkerShape_DIAMOND :: LineChartMarkerShape
+pattern LineChartMarkerShape_DIAMOND = LineChartMarkerShape' "DIAMOND"
+
+pattern LineChartMarkerShape_ROUNDED_SQUARE :: LineChartMarkerShape
+pattern LineChartMarkerShape_ROUNDED_SQUARE = LineChartMarkerShape' "ROUNDED_SQUARE"
+
+pattern LineChartMarkerShape_SQUARE :: LineChartMarkerShape
+pattern LineChartMarkerShape_SQUARE = LineChartMarkerShape' "SQUARE"
+
+pattern LineChartMarkerShape_TRIANGLE :: LineChartMarkerShape
+pattern LineChartMarkerShape_TRIANGLE = LineChartMarkerShape' "TRIANGLE"
+
+{-# COMPLETE
+  LineChartMarkerShape_CIRCLE,
+  LineChartMarkerShape_DIAMOND,
+  LineChartMarkerShape_ROUNDED_SQUARE,
+  LineChartMarkerShape_SQUARE,
+  LineChartMarkerShape_TRIANGLE,
+  LineChartMarkerShape'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/LineChartMarkerStyleSettings.hs b/gen/Amazonka/QuickSight/Types/LineChartMarkerStyleSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartMarkerStyleSettings.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.LineChartMarkerStyleSettings
+-- 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.QuickSight.Types.LineChartMarkerStyleSettings 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.QuickSight.Types.LineChartMarkerShape
+import Amazonka.QuickSight.Types.Visibility
+
+-- | Marker styles options for a line series in @LineChartVisual@.
+--
+-- /See:/ 'newLineChartMarkerStyleSettings' smart constructor.
+data LineChartMarkerStyleSettings = LineChartMarkerStyleSettings'
+  { -- | Color of marker in the series.
+    markerColor :: Prelude.Maybe Prelude.Text,
+    -- | Shape option for markers in the series.
+    --
+    -- -   @CIRCLE@: Show marker as a circle.
+    --
+    -- -   @TRIANGLE@: Show marker as a triangle.
+    --
+    -- -   @SQUARE@: Show marker as a square.
+    --
+    -- -   @DIAMOND@: Show marker as a diamond.
+    --
+    -- -   @ROUNDED_SQUARE@: Show marker as a rounded square.
+    markerShape :: Prelude.Maybe LineChartMarkerShape,
+    -- | Size of marker in the series.
+    markerSize :: Prelude.Maybe Prelude.Text,
+    -- | Configuration option that determines whether to show the markers in the
+    -- series.
+    markerVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartMarkerStyleSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'markerColor', 'lineChartMarkerStyleSettings_markerColor' - Color of marker in the series.
+--
+-- 'markerShape', 'lineChartMarkerStyleSettings_markerShape' - Shape option for markers in the series.
+--
+-- -   @CIRCLE@: Show marker as a circle.
+--
+-- -   @TRIANGLE@: Show marker as a triangle.
+--
+-- -   @SQUARE@: Show marker as a square.
+--
+-- -   @DIAMOND@: Show marker as a diamond.
+--
+-- -   @ROUNDED_SQUARE@: Show marker as a rounded square.
+--
+-- 'markerSize', 'lineChartMarkerStyleSettings_markerSize' - Size of marker in the series.
+--
+-- 'markerVisibility', 'lineChartMarkerStyleSettings_markerVisibility' - Configuration option that determines whether to show the markers in the
+-- series.
+newLineChartMarkerStyleSettings ::
+  LineChartMarkerStyleSettings
+newLineChartMarkerStyleSettings =
+  LineChartMarkerStyleSettings'
+    { markerColor =
+        Prelude.Nothing,
+      markerShape = Prelude.Nothing,
+      markerSize = Prelude.Nothing,
+      markerVisibility = Prelude.Nothing
+    }
+
+-- | Color of marker in the series.
+lineChartMarkerStyleSettings_markerColor :: Lens.Lens' LineChartMarkerStyleSettings (Prelude.Maybe Prelude.Text)
+lineChartMarkerStyleSettings_markerColor = Lens.lens (\LineChartMarkerStyleSettings' {markerColor} -> markerColor) (\s@LineChartMarkerStyleSettings' {} a -> s {markerColor = a} :: LineChartMarkerStyleSettings)
+
+-- | Shape option for markers in the series.
+--
+-- -   @CIRCLE@: Show marker as a circle.
+--
+-- -   @TRIANGLE@: Show marker as a triangle.
+--
+-- -   @SQUARE@: Show marker as a square.
+--
+-- -   @DIAMOND@: Show marker as a diamond.
+--
+-- -   @ROUNDED_SQUARE@: Show marker as a rounded square.
+lineChartMarkerStyleSettings_markerShape :: Lens.Lens' LineChartMarkerStyleSettings (Prelude.Maybe LineChartMarkerShape)
+lineChartMarkerStyleSettings_markerShape = Lens.lens (\LineChartMarkerStyleSettings' {markerShape} -> markerShape) (\s@LineChartMarkerStyleSettings' {} a -> s {markerShape = a} :: LineChartMarkerStyleSettings)
+
+-- | Size of marker in the series.
+lineChartMarkerStyleSettings_markerSize :: Lens.Lens' LineChartMarkerStyleSettings (Prelude.Maybe Prelude.Text)
+lineChartMarkerStyleSettings_markerSize = Lens.lens (\LineChartMarkerStyleSettings' {markerSize} -> markerSize) (\s@LineChartMarkerStyleSettings' {} a -> s {markerSize = a} :: LineChartMarkerStyleSettings)
+
+-- | Configuration option that determines whether to show the markers in the
+-- series.
+lineChartMarkerStyleSettings_markerVisibility :: Lens.Lens' LineChartMarkerStyleSettings (Prelude.Maybe Visibility)
+lineChartMarkerStyleSettings_markerVisibility = Lens.lens (\LineChartMarkerStyleSettings' {markerVisibility} -> markerVisibility) (\s@LineChartMarkerStyleSettings' {} a -> s {markerVisibility = a} :: LineChartMarkerStyleSettings)
+
+instance Data.FromJSON LineChartMarkerStyleSettings where
+  parseJSON =
+    Data.withObject
+      "LineChartMarkerStyleSettings"
+      ( \x ->
+          LineChartMarkerStyleSettings'
+            Prelude.<$> (x Data..:? "MarkerColor")
+            Prelude.<*> (x Data..:? "MarkerShape")
+            Prelude.<*> (x Data..:? "MarkerSize")
+            Prelude.<*> (x Data..:? "MarkerVisibility")
+      )
+
+instance
+  Prelude.Hashable
+    LineChartMarkerStyleSettings
+  where
+  hashWithSalt _salt LineChartMarkerStyleSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` markerColor
+      `Prelude.hashWithSalt` markerShape
+      `Prelude.hashWithSalt` markerSize
+      `Prelude.hashWithSalt` markerVisibility
+
+instance Prelude.NFData LineChartMarkerStyleSettings where
+  rnf LineChartMarkerStyleSettings' {..} =
+    Prelude.rnf markerColor
+      `Prelude.seq` Prelude.rnf markerShape
+      `Prelude.seq` Prelude.rnf markerSize
+      `Prelude.seq` Prelude.rnf markerVisibility
+
+instance Data.ToJSON LineChartMarkerStyleSettings where
+  toJSON LineChartMarkerStyleSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MarkerColor" Data..=) Prelude.<$> markerColor,
+            ("MarkerShape" Data..=) Prelude.<$> markerShape,
+            ("MarkerSize" Data..=) Prelude.<$> markerSize,
+            ("MarkerVisibility" Data..=)
+              Prelude.<$> markerVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartSeriesSettings.hs b/gen/Amazonka/QuickSight/Types/LineChartSeriesSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartSeriesSettings.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.LineChartSeriesSettings
+-- 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.QuickSight.Types.LineChartSeriesSettings 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.QuickSight.Types.LineChartLineStyleSettings
+import Amazonka.QuickSight.Types.LineChartMarkerStyleSettings
+
+-- | The options that determine the presentation of a line series in the
+-- visual
+--
+-- /See:/ 'newLineChartSeriesSettings' smart constructor.
+data LineChartSeriesSettings = LineChartSeriesSettings'
+  { -- | Line styles options for a line series in @LineChartVisual@.
+    lineStyleSettings :: Prelude.Maybe LineChartLineStyleSettings,
+    -- | Marker styles options for a line series in @LineChartVisual@.
+    markerStyleSettings :: Prelude.Maybe LineChartMarkerStyleSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartSeriesSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lineStyleSettings', 'lineChartSeriesSettings_lineStyleSettings' - Line styles options for a line series in @LineChartVisual@.
+--
+-- 'markerStyleSettings', 'lineChartSeriesSettings_markerStyleSettings' - Marker styles options for a line series in @LineChartVisual@.
+newLineChartSeriesSettings ::
+  LineChartSeriesSettings
+newLineChartSeriesSettings =
+  LineChartSeriesSettings'
+    { lineStyleSettings =
+        Prelude.Nothing,
+      markerStyleSettings = Prelude.Nothing
+    }
+
+-- | Line styles options for a line series in @LineChartVisual@.
+lineChartSeriesSettings_lineStyleSettings :: Lens.Lens' LineChartSeriesSettings (Prelude.Maybe LineChartLineStyleSettings)
+lineChartSeriesSettings_lineStyleSettings = Lens.lens (\LineChartSeriesSettings' {lineStyleSettings} -> lineStyleSettings) (\s@LineChartSeriesSettings' {} a -> s {lineStyleSettings = a} :: LineChartSeriesSettings)
+
+-- | Marker styles options for a line series in @LineChartVisual@.
+lineChartSeriesSettings_markerStyleSettings :: Lens.Lens' LineChartSeriesSettings (Prelude.Maybe LineChartMarkerStyleSettings)
+lineChartSeriesSettings_markerStyleSettings = Lens.lens (\LineChartSeriesSettings' {markerStyleSettings} -> markerStyleSettings) (\s@LineChartSeriesSettings' {} a -> s {markerStyleSettings = a} :: LineChartSeriesSettings)
+
+instance Data.FromJSON LineChartSeriesSettings where
+  parseJSON =
+    Data.withObject
+      "LineChartSeriesSettings"
+      ( \x ->
+          LineChartSeriesSettings'
+            Prelude.<$> (x Data..:? "LineStyleSettings")
+            Prelude.<*> (x Data..:? "MarkerStyleSettings")
+      )
+
+instance Prelude.Hashable LineChartSeriesSettings where
+  hashWithSalt _salt LineChartSeriesSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` lineStyleSettings
+      `Prelude.hashWithSalt` markerStyleSettings
+
+instance Prelude.NFData LineChartSeriesSettings where
+  rnf LineChartSeriesSettings' {..} =
+    Prelude.rnf lineStyleSettings
+      `Prelude.seq` Prelude.rnf markerStyleSettings
+
+instance Data.ToJSON LineChartSeriesSettings where
+  toJSON LineChartSeriesSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LineStyleSettings" Data..=)
+              Prelude.<$> lineStyleSettings,
+            ("MarkerStyleSettings" Data..=)
+              Prelude.<$> markerStyleSettings
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/LineChartSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartSortConfiguration.hs
@@ -0,0 +1,146 @@
+{-# 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.QuickSight.Types.LineChartSortConfiguration
+-- 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.QuickSight.Types.LineChartSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a line chart.
+--
+-- /See:/ 'newLineChartSortConfiguration' smart constructor.
+data LineChartSortConfiguration = LineChartSortConfiguration'
+  { -- | The limit on the number of categories that are displayed in a line
+    -- chart.
+    categoryItemsLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the category fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions],
+    -- | The limit on the number of lines that are displayed in a line chart.
+    colorItemsLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The limit on the number of small multiples panels that are displayed.
+    smallMultiplesLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the small multiples field.
+    smallMultiplesSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryItemsLimitConfiguration', 'lineChartSortConfiguration_categoryItemsLimitConfiguration' - The limit on the number of categories that are displayed in a line
+-- chart.
+--
+-- 'categorySort', 'lineChartSortConfiguration_categorySort' - The sort configuration of the category fields.
+--
+-- 'colorItemsLimitConfiguration', 'lineChartSortConfiguration_colorItemsLimitConfiguration' - The limit on the number of lines that are displayed in a line chart.
+--
+-- 'smallMultiplesLimitConfiguration', 'lineChartSortConfiguration_smallMultiplesLimitConfiguration' - The limit on the number of small multiples panels that are displayed.
+--
+-- 'smallMultiplesSort', 'lineChartSortConfiguration_smallMultiplesSort' - The sort configuration of the small multiples field.
+newLineChartSortConfiguration ::
+  LineChartSortConfiguration
+newLineChartSortConfiguration =
+  LineChartSortConfiguration'
+    { categoryItemsLimitConfiguration =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing,
+      colorItemsLimitConfiguration = Prelude.Nothing,
+      smallMultiplesLimitConfiguration =
+        Prelude.Nothing,
+      smallMultiplesSort = Prelude.Nothing
+    }
+
+-- | The limit on the number of categories that are displayed in a line
+-- chart.
+lineChartSortConfiguration_categoryItemsLimitConfiguration :: Lens.Lens' LineChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+lineChartSortConfiguration_categoryItemsLimitConfiguration = Lens.lens (\LineChartSortConfiguration' {categoryItemsLimitConfiguration} -> categoryItemsLimitConfiguration) (\s@LineChartSortConfiguration' {} a -> s {categoryItemsLimitConfiguration = a} :: LineChartSortConfiguration)
+
+-- | The sort configuration of the category fields.
+lineChartSortConfiguration_categorySort :: Lens.Lens' LineChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+lineChartSortConfiguration_categorySort = Lens.lens (\LineChartSortConfiguration' {categorySort} -> categorySort) (\s@LineChartSortConfiguration' {} a -> s {categorySort = a} :: LineChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The limit on the number of lines that are displayed in a line chart.
+lineChartSortConfiguration_colorItemsLimitConfiguration :: Lens.Lens' LineChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+lineChartSortConfiguration_colorItemsLimitConfiguration = Lens.lens (\LineChartSortConfiguration' {colorItemsLimitConfiguration} -> colorItemsLimitConfiguration) (\s@LineChartSortConfiguration' {} a -> s {colorItemsLimitConfiguration = a} :: LineChartSortConfiguration)
+
+-- | The limit on the number of small multiples panels that are displayed.
+lineChartSortConfiguration_smallMultiplesLimitConfiguration :: Lens.Lens' LineChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+lineChartSortConfiguration_smallMultiplesLimitConfiguration = Lens.lens (\LineChartSortConfiguration' {smallMultiplesLimitConfiguration} -> smallMultiplesLimitConfiguration) (\s@LineChartSortConfiguration' {} a -> s {smallMultiplesLimitConfiguration = a} :: LineChartSortConfiguration)
+
+-- | The sort configuration of the small multiples field.
+lineChartSortConfiguration_smallMultiplesSort :: Lens.Lens' LineChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+lineChartSortConfiguration_smallMultiplesSort = Lens.lens (\LineChartSortConfiguration' {smallMultiplesSort} -> smallMultiplesSort) (\s@LineChartSortConfiguration' {} a -> s {smallMultiplesSort = a} :: LineChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LineChartSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "LineChartSortConfiguration"
+      ( \x ->
+          LineChartSortConfiguration'
+            Prelude.<$> (x Data..:? "CategoryItemsLimitConfiguration")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ColorItemsLimitConfiguration")
+            Prelude.<*> (x Data..:? "SmallMultiplesLimitConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "SmallMultiplesSort"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable LineChartSortConfiguration where
+  hashWithSalt _salt LineChartSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryItemsLimitConfiguration
+      `Prelude.hashWithSalt` categorySort
+      `Prelude.hashWithSalt` colorItemsLimitConfiguration
+      `Prelude.hashWithSalt` smallMultiplesLimitConfiguration
+      `Prelude.hashWithSalt` smallMultiplesSort
+
+instance Prelude.NFData LineChartSortConfiguration where
+  rnf LineChartSortConfiguration' {..} =
+    Prelude.rnf categoryItemsLimitConfiguration
+      `Prelude.seq` Prelude.rnf categorySort
+      `Prelude.seq` Prelude.rnf colorItemsLimitConfiguration
+      `Prelude.seq` Prelude.rnf smallMultiplesLimitConfiguration
+      `Prelude.seq` Prelude.rnf smallMultiplesSort
+
+instance Data.ToJSON LineChartSortConfiguration where
+  toJSON LineChartSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryItemsLimitConfiguration" Data..=)
+              Prelude.<$> categoryItemsLimitConfiguration,
+            ("CategorySort" Data..=) Prelude.<$> categorySort,
+            ("ColorItemsLimitConfiguration" Data..=)
+              Prelude.<$> colorItemsLimitConfiguration,
+            ("SmallMultiplesLimitConfiguration" Data..=)
+              Prelude.<$> smallMultiplesLimitConfiguration,
+            ("SmallMultiplesSort" Data..=)
+              Prelude.<$> smallMultiplesSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineChartType.hs b/gen/Amazonka/QuickSight/Types/LineChartType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartType.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.QuickSight.Types.LineChartType
+-- 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.QuickSight.Types.LineChartType
+  ( LineChartType
+      ( ..,
+        LineChartType_AREA,
+        LineChartType_LINE,
+        LineChartType_STACKED_AREA
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LineChartType = LineChartType'
+  { fromLineChartType ::
+      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 LineChartType_AREA :: LineChartType
+pattern LineChartType_AREA = LineChartType' "AREA"
+
+pattern LineChartType_LINE :: LineChartType
+pattern LineChartType_LINE = LineChartType' "LINE"
+
+pattern LineChartType_STACKED_AREA :: LineChartType
+pattern LineChartType_STACKED_AREA = LineChartType' "STACKED_AREA"
+
+{-# COMPLETE
+  LineChartType_AREA,
+  LineChartType_LINE,
+  LineChartType_STACKED_AREA,
+  LineChartType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/LineChartVisual.hs b/gen/Amazonka/QuickSight/Types/LineChartVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineChartVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.LineChartVisual
+-- 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.QuickSight.Types.LineChartVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.LineChartConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A line chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/line-charts.html Using line charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newLineChartVisual' smart constructor.
+data LineChartVisual = LineChartVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a line chart.
+    chartConfiguration :: Prelude.Maybe LineChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineChartVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'lineChartVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'lineChartVisual_chartConfiguration' - The configuration of a line chart.
+--
+-- 'columnHierarchies', 'lineChartVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'lineChartVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'lineChartVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'lineChartVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newLineChartVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  LineChartVisual
+newLineChartVisual pVisualId_ =
+  LineChartVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+lineChartVisual_actions :: Lens.Lens' LineChartVisual (Prelude.Maybe [VisualCustomAction])
+lineChartVisual_actions = Lens.lens (\LineChartVisual' {actions} -> actions) (\s@LineChartVisual' {} a -> s {actions = a} :: LineChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a line chart.
+lineChartVisual_chartConfiguration :: Lens.Lens' LineChartVisual (Prelude.Maybe LineChartConfiguration)
+lineChartVisual_chartConfiguration = Lens.lens (\LineChartVisual' {chartConfiguration} -> chartConfiguration) (\s@LineChartVisual' {} a -> s {chartConfiguration = a} :: LineChartVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+lineChartVisual_columnHierarchies :: Lens.Lens' LineChartVisual (Prelude.Maybe [ColumnHierarchy])
+lineChartVisual_columnHierarchies = Lens.lens (\LineChartVisual' {columnHierarchies} -> columnHierarchies) (\s@LineChartVisual' {} a -> s {columnHierarchies = a} :: LineChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+lineChartVisual_subtitle :: Lens.Lens' LineChartVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+lineChartVisual_subtitle = Lens.lens (\LineChartVisual' {subtitle} -> subtitle) (\s@LineChartVisual' {} a -> s {subtitle = a} :: LineChartVisual)
+
+-- | The title that is displayed on the visual.
+lineChartVisual_title :: Lens.Lens' LineChartVisual (Prelude.Maybe VisualTitleLabelOptions)
+lineChartVisual_title = Lens.lens (\LineChartVisual' {title} -> title) (\s@LineChartVisual' {} a -> s {title = a} :: LineChartVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+lineChartVisual_visualId :: Lens.Lens' LineChartVisual Prelude.Text
+lineChartVisual_visualId = Lens.lens (\LineChartVisual' {visualId} -> visualId) (\s@LineChartVisual' {} a -> s {visualId = a} :: LineChartVisual)
+
+instance Data.FromJSON LineChartVisual where
+  parseJSON =
+    Data.withObject
+      "LineChartVisual"
+      ( \x ->
+          LineChartVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable LineChartVisual where
+  hashWithSalt _salt LineChartVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData LineChartVisual where
+  rnf LineChartVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON LineChartVisual where
+  toJSON LineChartVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LineInterpolation.hs b/gen/Amazonka/QuickSight/Types/LineInterpolation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineInterpolation.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.QuickSight.Types.LineInterpolation
+-- 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.QuickSight.Types.LineInterpolation
+  ( LineInterpolation
+      ( ..,
+        LineInterpolation_LINEAR,
+        LineInterpolation_SMOOTH,
+        LineInterpolation_STEPPED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LineInterpolation = LineInterpolation'
+  { fromLineInterpolation ::
+      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 LineInterpolation_LINEAR :: LineInterpolation
+pattern LineInterpolation_LINEAR = LineInterpolation' "LINEAR"
+
+pattern LineInterpolation_SMOOTH :: LineInterpolation
+pattern LineInterpolation_SMOOTH = LineInterpolation' "SMOOTH"
+
+pattern LineInterpolation_STEPPED :: LineInterpolation
+pattern LineInterpolation_STEPPED = LineInterpolation' "STEPPED"
+
+{-# COMPLETE
+  LineInterpolation_LINEAR,
+  LineInterpolation_SMOOTH,
+  LineInterpolation_STEPPED,
+  LineInterpolation'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/LineSeriesAxisDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/LineSeriesAxisDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LineSeriesAxisDisplayOptions.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.QuickSight.Types.LineSeriesAxisDisplayOptions
+-- 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.QuickSight.Types.LineSeriesAxisDisplayOptions 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.MissingDataConfiguration
+
+-- | The series axis configuration of a line chart.
+--
+-- /See:/ 'newLineSeriesAxisDisplayOptions' smart constructor.
+data LineSeriesAxisDisplayOptions = LineSeriesAxisDisplayOptions'
+  { -- | The options that determine the presentation of the line series axis.
+    axisOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The configuration options that determine how missing data is treated
+    -- during the rendering of a line chart.
+    missingDataConfigurations :: Prelude.Maybe [MissingDataConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineSeriesAxisDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'axisOptions', 'lineSeriesAxisDisplayOptions_axisOptions' - The options that determine the presentation of the line series axis.
+--
+-- 'missingDataConfigurations', 'lineSeriesAxisDisplayOptions_missingDataConfigurations' - The configuration options that determine how missing data is treated
+-- during the rendering of a line chart.
+newLineSeriesAxisDisplayOptions ::
+  LineSeriesAxisDisplayOptions
+newLineSeriesAxisDisplayOptions =
+  LineSeriesAxisDisplayOptions'
+    { axisOptions =
+        Prelude.Nothing,
+      missingDataConfigurations = Prelude.Nothing
+    }
+
+-- | The options that determine the presentation of the line series axis.
+lineSeriesAxisDisplayOptions_axisOptions :: Lens.Lens' LineSeriesAxisDisplayOptions (Prelude.Maybe AxisDisplayOptions)
+lineSeriesAxisDisplayOptions_axisOptions = Lens.lens (\LineSeriesAxisDisplayOptions' {axisOptions} -> axisOptions) (\s@LineSeriesAxisDisplayOptions' {} a -> s {axisOptions = a} :: LineSeriesAxisDisplayOptions)
+
+-- | The configuration options that determine how missing data is treated
+-- during the rendering of a line chart.
+lineSeriesAxisDisplayOptions_missingDataConfigurations :: Lens.Lens' LineSeriesAxisDisplayOptions (Prelude.Maybe [MissingDataConfiguration])
+lineSeriesAxisDisplayOptions_missingDataConfigurations = Lens.lens (\LineSeriesAxisDisplayOptions' {missingDataConfigurations} -> missingDataConfigurations) (\s@LineSeriesAxisDisplayOptions' {} a -> s {missingDataConfigurations = a} :: LineSeriesAxisDisplayOptions) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LineSeriesAxisDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "LineSeriesAxisDisplayOptions"
+      ( \x ->
+          LineSeriesAxisDisplayOptions'
+            Prelude.<$> (x Data..:? "AxisOptions")
+            Prelude.<*> ( x
+                            Data..:? "MissingDataConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    LineSeriesAxisDisplayOptions
+  where
+  hashWithSalt _salt LineSeriesAxisDisplayOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` axisOptions
+      `Prelude.hashWithSalt` missingDataConfigurations
+
+instance Prelude.NFData LineSeriesAxisDisplayOptions where
+  rnf LineSeriesAxisDisplayOptions' {..} =
+    Prelude.rnf axisOptions
+      `Prelude.seq` Prelude.rnf missingDataConfigurations
+
+instance Data.ToJSON LineSeriesAxisDisplayOptions where
+  toJSON LineSeriesAxisDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AxisOptions" Data..=) Prelude.<$> axisOptions,
+            ("MissingDataConfigurations" Data..=)
+              Prelude.<$> missingDataConfigurations
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LinkSharingConfiguration.hs b/gen/Amazonka/QuickSight/Types/LinkSharingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LinkSharingConfiguration.hs
@@ -0,0 +1,74 @@
+{-# 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.QuickSight.Types.LinkSharingConfiguration
+-- 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.QuickSight.Types.LinkSharingConfiguration 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.QuickSight.Types.ResourcePermission
+
+-- | A structure that contains the configuration of a shareable link to the
+-- dashboard.
+--
+-- /See:/ 'newLinkSharingConfiguration' smart constructor.
+data LinkSharingConfiguration = LinkSharingConfiguration'
+  { -- | A structure that contains the permissions of a shareable link.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LinkSharingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissions', 'linkSharingConfiguration_permissions' - A structure that contains the permissions of a shareable link.
+newLinkSharingConfiguration ::
+  LinkSharingConfiguration
+newLinkSharingConfiguration =
+  LinkSharingConfiguration'
+    { permissions =
+        Prelude.Nothing
+    }
+
+-- | A structure that contains the permissions of a shareable link.
+linkSharingConfiguration_permissions :: Lens.Lens' LinkSharingConfiguration (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+linkSharingConfiguration_permissions = Lens.lens (\LinkSharingConfiguration' {permissions} -> permissions) (\s@LinkSharingConfiguration' {} a -> s {permissions = a} :: LinkSharingConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LinkSharingConfiguration where
+  parseJSON =
+    Data.withObject
+      "LinkSharingConfiguration"
+      ( \x ->
+          LinkSharingConfiguration'
+            Prelude.<$> (x Data..:? "Permissions")
+      )
+
+instance Prelude.Hashable LinkSharingConfiguration where
+  hashWithSalt _salt LinkSharingConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` permissions
+
+instance Prelude.NFData LinkSharingConfiguration where
+  rnf LinkSharingConfiguration' {..} =
+    Prelude.rnf permissions
diff --git a/gen/Amazonka/QuickSight/Types/ListControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/ListControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ListControlDisplayOptions.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.ListControlDisplayOptions
+-- 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.QuickSight.Types.ListControlDisplayOptions 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.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.ListControlSearchOptions
+import Amazonka.QuickSight.Types.ListControlSelectAllOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newListControlDisplayOptions' smart constructor.
+data ListControlDisplayOptions = ListControlDisplayOptions'
+  { -- | The configuration of the search options in a list control.
+    searchOptions :: Prelude.Maybe ListControlSearchOptions,
+    -- | The configuration of the @Select all@ options in a list control.
+    selectAllOptions :: Prelude.Maybe ListControlSelectAllOptions,
+    -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'searchOptions', 'listControlDisplayOptions_searchOptions' - The configuration of the search options in a list control.
+--
+-- 'selectAllOptions', 'listControlDisplayOptions_selectAllOptions' - The configuration of the @Select all@ options in a list control.
+--
+-- 'titleOptions', 'listControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newListControlDisplayOptions ::
+  ListControlDisplayOptions
+newListControlDisplayOptions =
+  ListControlDisplayOptions'
+    { searchOptions =
+        Prelude.Nothing,
+      selectAllOptions = Prelude.Nothing,
+      titleOptions = Prelude.Nothing
+    }
+
+-- | The configuration of the search options in a list control.
+listControlDisplayOptions_searchOptions :: Lens.Lens' ListControlDisplayOptions (Prelude.Maybe ListControlSearchOptions)
+listControlDisplayOptions_searchOptions = Lens.lens (\ListControlDisplayOptions' {searchOptions} -> searchOptions) (\s@ListControlDisplayOptions' {} a -> s {searchOptions = a} :: ListControlDisplayOptions)
+
+-- | The configuration of the @Select all@ options in a list control.
+listControlDisplayOptions_selectAllOptions :: Lens.Lens' ListControlDisplayOptions (Prelude.Maybe ListControlSelectAllOptions)
+listControlDisplayOptions_selectAllOptions = Lens.lens (\ListControlDisplayOptions' {selectAllOptions} -> selectAllOptions) (\s@ListControlDisplayOptions' {} a -> s {selectAllOptions = a} :: ListControlDisplayOptions)
+
+-- | The options to configure the title visibility, name, and font size.
+listControlDisplayOptions_titleOptions :: Lens.Lens' ListControlDisplayOptions (Prelude.Maybe LabelOptions)
+listControlDisplayOptions_titleOptions = Lens.lens (\ListControlDisplayOptions' {titleOptions} -> titleOptions) (\s@ListControlDisplayOptions' {} a -> s {titleOptions = a} :: ListControlDisplayOptions)
+
+instance Data.FromJSON ListControlDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "ListControlDisplayOptions"
+      ( \x ->
+          ListControlDisplayOptions'
+            Prelude.<$> (x Data..:? "SearchOptions")
+            Prelude.<*> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..:? "TitleOptions")
+      )
+
+instance Prelude.Hashable ListControlDisplayOptions where
+  hashWithSalt _salt ListControlDisplayOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` searchOptions
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` titleOptions
+
+instance Prelude.NFData ListControlDisplayOptions where
+  rnf ListControlDisplayOptions' {..} =
+    Prelude.rnf searchOptions
+      `Prelude.seq` Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf titleOptions
+
+instance Data.ToJSON ListControlDisplayOptions where
+  toJSON ListControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SearchOptions" Data..=) Prelude.<$> searchOptions,
+            ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            ("TitleOptions" Data..=) Prelude.<$> titleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ListControlSearchOptions.hs b/gen/Amazonka/QuickSight/Types/ListControlSearchOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ListControlSearchOptions.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ListControlSearchOptions
+-- 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.QuickSight.Types.ListControlSearchOptions 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.QuickSight.Types.Visibility
+
+-- | The configuration of the search options in a list control.
+--
+-- /See:/ 'newListControlSearchOptions' smart constructor.
+data ListControlSearchOptions = ListControlSearchOptions'
+  { -- | The visibility configuration of the search options in a list control.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListControlSearchOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'listControlSearchOptions_visibility' - The visibility configuration of the search options in a list control.
+newListControlSearchOptions ::
+  ListControlSearchOptions
+newListControlSearchOptions =
+  ListControlSearchOptions'
+    { visibility =
+        Prelude.Nothing
+    }
+
+-- | The visibility configuration of the search options in a list control.
+listControlSearchOptions_visibility :: Lens.Lens' ListControlSearchOptions (Prelude.Maybe Visibility)
+listControlSearchOptions_visibility = Lens.lens (\ListControlSearchOptions' {visibility} -> visibility) (\s@ListControlSearchOptions' {} a -> s {visibility = a} :: ListControlSearchOptions)
+
+instance Data.FromJSON ListControlSearchOptions where
+  parseJSON =
+    Data.withObject
+      "ListControlSearchOptions"
+      ( \x ->
+          ListControlSearchOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable ListControlSearchOptions where
+  hashWithSalt _salt ListControlSearchOptions' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData ListControlSearchOptions where
+  rnf ListControlSearchOptions' {..} =
+    Prelude.rnf visibility
+
+instance Data.ToJSON ListControlSearchOptions where
+  toJSON ListControlSearchOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ListControlSelectAllOptions.hs b/gen/Amazonka/QuickSight/Types/ListControlSelectAllOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ListControlSelectAllOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ListControlSelectAllOptions
+-- 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.QuickSight.Types.ListControlSelectAllOptions 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.QuickSight.Types.Visibility
+
+-- | The configuration of the @Select all@ options in a list control.
+--
+-- /See:/ 'newListControlSelectAllOptions' smart constructor.
+data ListControlSelectAllOptions = ListControlSelectAllOptions'
+  { -- | The visibility configuration of the @Select all@ options in a list
+    -- control.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListControlSelectAllOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'listControlSelectAllOptions_visibility' - The visibility configuration of the @Select all@ options in a list
+-- control.
+newListControlSelectAllOptions ::
+  ListControlSelectAllOptions
+newListControlSelectAllOptions =
+  ListControlSelectAllOptions'
+    { visibility =
+        Prelude.Nothing
+    }
+
+-- | The visibility configuration of the @Select all@ options in a list
+-- control.
+listControlSelectAllOptions_visibility :: Lens.Lens' ListControlSelectAllOptions (Prelude.Maybe Visibility)
+listControlSelectAllOptions_visibility = Lens.lens (\ListControlSelectAllOptions' {visibility} -> visibility) (\s@ListControlSelectAllOptions' {} a -> s {visibility = a} :: ListControlSelectAllOptions)
+
+instance Data.FromJSON ListControlSelectAllOptions where
+  parseJSON =
+    Data.withObject
+      "ListControlSelectAllOptions"
+      ( \x ->
+          ListControlSelectAllOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable ListControlSelectAllOptions where
+  hashWithSalt _salt ListControlSelectAllOptions' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData ListControlSelectAllOptions where
+  rnf ListControlSelectAllOptions' {..} =
+    Prelude.rnf visibility
+
+instance Data.ToJSON ListControlSelectAllOptions where
+  toJSON ListControlSelectAllOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LoadingAnimation.hs b/gen/Amazonka/QuickSight/Types/LoadingAnimation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LoadingAnimation.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.QuickSight.Types.LoadingAnimation
+-- 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.QuickSight.Types.LoadingAnimation 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.QuickSight.Types.Visibility
+
+-- | The configuration of loading animation in free-form layout.
+--
+-- /See:/ 'newLoadingAnimation' smart constructor.
+data LoadingAnimation = LoadingAnimation'
+  { -- | The visibility configuration of @LoadingAnimation@.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LoadingAnimation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'loadingAnimation_visibility' - The visibility configuration of @LoadingAnimation@.
+newLoadingAnimation ::
+  LoadingAnimation
+newLoadingAnimation =
+  LoadingAnimation' {visibility = Prelude.Nothing}
+
+-- | The visibility configuration of @LoadingAnimation@.
+loadingAnimation_visibility :: Lens.Lens' LoadingAnimation (Prelude.Maybe Visibility)
+loadingAnimation_visibility = Lens.lens (\LoadingAnimation' {visibility} -> visibility) (\s@LoadingAnimation' {} a -> s {visibility = a} :: LoadingAnimation)
+
+instance Data.FromJSON LoadingAnimation where
+  parseJSON =
+    Data.withObject
+      "LoadingAnimation"
+      ( \x ->
+          LoadingAnimation'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable LoadingAnimation where
+  hashWithSalt _salt LoadingAnimation' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData LoadingAnimation where
+  rnf LoadingAnimation' {..} = Prelude.rnf visibility
+
+instance Data.ToJSON LoadingAnimation where
+  toJSON LoadingAnimation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LocalNavigationConfiguration.hs b/gen/Amazonka/QuickSight/Types/LocalNavigationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LocalNavigationConfiguration.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.QuickSight.Types.LocalNavigationConfiguration
+-- 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.QuickSight.Types.LocalNavigationConfiguration 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 navigation configuration for @CustomActionNavigationOperation@.
+--
+-- /See:/ 'newLocalNavigationConfiguration' smart constructor.
+data LocalNavigationConfiguration = LocalNavigationConfiguration'
+  { -- | The sheet that is targeted for navigation in the same analysis.
+    targetSheetId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LocalNavigationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'targetSheetId', 'localNavigationConfiguration_targetSheetId' - The sheet that is targeted for navigation in the same analysis.
+newLocalNavigationConfiguration ::
+  -- | 'targetSheetId'
+  Prelude.Text ->
+  LocalNavigationConfiguration
+newLocalNavigationConfiguration pTargetSheetId_ =
+  LocalNavigationConfiguration'
+    { targetSheetId =
+        pTargetSheetId_
+    }
+
+-- | The sheet that is targeted for navigation in the same analysis.
+localNavigationConfiguration_targetSheetId :: Lens.Lens' LocalNavigationConfiguration Prelude.Text
+localNavigationConfiguration_targetSheetId = Lens.lens (\LocalNavigationConfiguration' {targetSheetId} -> targetSheetId) (\s@LocalNavigationConfiguration' {} a -> s {targetSheetId = a} :: LocalNavigationConfiguration)
+
+instance Data.FromJSON LocalNavigationConfiguration where
+  parseJSON =
+    Data.withObject
+      "LocalNavigationConfiguration"
+      ( \x ->
+          LocalNavigationConfiguration'
+            Prelude.<$> (x Data..: "TargetSheetId")
+      )
+
+instance
+  Prelude.Hashable
+    LocalNavigationConfiguration
+  where
+  hashWithSalt _salt LocalNavigationConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` targetSheetId
+
+instance Prelude.NFData LocalNavigationConfiguration where
+  rnf LocalNavigationConfiguration' {..} =
+    Prelude.rnf targetSheetId
+
+instance Data.ToJSON LocalNavigationConfiguration where
+  toJSON LocalNavigationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TargetSheetId" Data..= targetSheetId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LogicalTable.hs b/gen/Amazonka/QuickSight/Types/LogicalTable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LogicalTable.hs
@@ -0,0 +1,117 @@
+{-# 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.QuickSight.Types.LogicalTable
+-- 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.QuickSight.Types.LogicalTable 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.QuickSight.Types.LogicalTableSource
+import Amazonka.QuickSight.Types.TransformOperation
+
+-- | A /logical table/ is a unit that joins and that data transformations
+-- operate on. A logical table has a source, which can be either a physical
+-- table or result of a join. When a logical table points to a physical
+-- table, the logical table acts as a mutable copy of that physical table
+-- through transform operations.
+--
+-- /See:/ 'newLogicalTable' smart constructor.
+data LogicalTable = LogicalTable'
+  { -- | Transform operations that act on this logical table.
+    dataTransforms :: Prelude.Maybe (Prelude.NonEmpty TransformOperation),
+    -- | A display name for the logical table.
+    alias :: Prelude.Text,
+    -- | Source of this logical table.
+    source :: LogicalTableSource
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LogicalTable' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataTransforms', 'logicalTable_dataTransforms' - Transform operations that act on this logical table.
+--
+-- 'alias', 'logicalTable_alias' - A display name for the logical table.
+--
+-- 'source', 'logicalTable_source' - Source of this logical table.
+newLogicalTable ::
+  -- | 'alias'
+  Prelude.Text ->
+  -- | 'source'
+  LogicalTableSource ->
+  LogicalTable
+newLogicalTable pAlias_ pSource_ =
+  LogicalTable'
+    { dataTransforms = Prelude.Nothing,
+      alias = pAlias_,
+      source = pSource_
+    }
+
+-- | Transform operations that act on this logical table.
+logicalTable_dataTransforms :: Lens.Lens' LogicalTable (Prelude.Maybe (Prelude.NonEmpty TransformOperation))
+logicalTable_dataTransforms = Lens.lens (\LogicalTable' {dataTransforms} -> dataTransforms) (\s@LogicalTable' {} a -> s {dataTransforms = a} :: LogicalTable) Prelude.. Lens.mapping Lens.coerced
+
+-- | A display name for the logical table.
+logicalTable_alias :: Lens.Lens' LogicalTable Prelude.Text
+logicalTable_alias = Lens.lens (\LogicalTable' {alias} -> alias) (\s@LogicalTable' {} a -> s {alias = a} :: LogicalTable)
+
+-- | Source of this logical table.
+logicalTable_source :: Lens.Lens' LogicalTable LogicalTableSource
+logicalTable_source = Lens.lens (\LogicalTable' {source} -> source) (\s@LogicalTable' {} a -> s {source = a} :: LogicalTable)
+
+instance Data.FromJSON LogicalTable where
+  parseJSON =
+    Data.withObject
+      "LogicalTable"
+      ( \x ->
+          LogicalTable'
+            Prelude.<$> (x Data..:? "DataTransforms")
+            Prelude.<*> (x Data..: "Alias")
+            Prelude.<*> (x Data..: "Source")
+      )
+
+instance Prelude.Hashable LogicalTable where
+  hashWithSalt _salt LogicalTable' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataTransforms
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` source
+
+instance Prelude.NFData LogicalTable where
+  rnf LogicalTable' {..} =
+    Prelude.rnf dataTransforms
+      `Prelude.seq` Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf source
+
+instance Data.ToJSON LogicalTable where
+  toJSON LogicalTable' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataTransforms" Data..=)
+              Prelude.<$> dataTransforms,
+            Prelude.Just ("Alias" Data..= alias),
+            Prelude.Just ("Source" Data..= source)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LogicalTableSource.hs b/gen/Amazonka/QuickSight/Types/LogicalTableSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LogicalTableSource.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.LogicalTableSource
+-- 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.QuickSight.Types.LogicalTableSource 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.QuickSight.Types.JoinInstruction
+
+-- | Information about the source of a logical table. This is a variant type
+-- structure. For this structure to be valid, only one of the attributes
+-- can be non-null.
+--
+-- /See:/ 'newLogicalTableSource' smart constructor.
+data LogicalTableSource = LogicalTableSource'
+  { -- | The Amazon Resource Number (ARN) of the parent dataset.
+    dataSetArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the result of a join of two logical tables.
+    joinInstruction :: Prelude.Maybe JoinInstruction,
+    -- | Physical table ID.
+    physicalTableId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LogicalTableSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetArn', 'logicalTableSource_dataSetArn' - The Amazon Resource Number (ARN) of the parent dataset.
+--
+-- 'joinInstruction', 'logicalTableSource_joinInstruction' - Specifies the result of a join of two logical tables.
+--
+-- 'physicalTableId', 'logicalTableSource_physicalTableId' - Physical table ID.
+newLogicalTableSource ::
+  LogicalTableSource
+newLogicalTableSource =
+  LogicalTableSource'
+    { dataSetArn = Prelude.Nothing,
+      joinInstruction = Prelude.Nothing,
+      physicalTableId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Number (ARN) of the parent dataset.
+logicalTableSource_dataSetArn :: Lens.Lens' LogicalTableSource (Prelude.Maybe Prelude.Text)
+logicalTableSource_dataSetArn = Lens.lens (\LogicalTableSource' {dataSetArn} -> dataSetArn) (\s@LogicalTableSource' {} a -> s {dataSetArn = a} :: LogicalTableSource)
+
+-- | Specifies the result of a join of two logical tables.
+logicalTableSource_joinInstruction :: Lens.Lens' LogicalTableSource (Prelude.Maybe JoinInstruction)
+logicalTableSource_joinInstruction = Lens.lens (\LogicalTableSource' {joinInstruction} -> joinInstruction) (\s@LogicalTableSource' {} a -> s {joinInstruction = a} :: LogicalTableSource)
+
+-- | Physical table ID.
+logicalTableSource_physicalTableId :: Lens.Lens' LogicalTableSource (Prelude.Maybe Prelude.Text)
+logicalTableSource_physicalTableId = Lens.lens (\LogicalTableSource' {physicalTableId} -> physicalTableId) (\s@LogicalTableSource' {} a -> s {physicalTableId = a} :: LogicalTableSource)
+
+instance Data.FromJSON LogicalTableSource where
+  parseJSON =
+    Data.withObject
+      "LogicalTableSource"
+      ( \x ->
+          LogicalTableSource'
+            Prelude.<$> (x Data..:? "DataSetArn")
+            Prelude.<*> (x Data..:? "JoinInstruction")
+            Prelude.<*> (x Data..:? "PhysicalTableId")
+      )
+
+instance Prelude.Hashable LogicalTableSource where
+  hashWithSalt _salt LogicalTableSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetArn
+      `Prelude.hashWithSalt` joinInstruction
+      `Prelude.hashWithSalt` physicalTableId
+
+instance Prelude.NFData LogicalTableSource where
+  rnf LogicalTableSource' {..} =
+    Prelude.rnf dataSetArn
+      `Prelude.seq` Prelude.rnf joinInstruction
+      `Prelude.seq` Prelude.rnf physicalTableId
+
+instance Data.ToJSON LogicalTableSource where
+  toJSON LogicalTableSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataSetArn" Data..=) Prelude.<$> dataSetArn,
+            ("JoinInstruction" Data..=)
+              Prelude.<$> joinInstruction,
+            ("PhysicalTableId" Data..=)
+              Prelude.<$> physicalTableId
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/LongFormatText.hs b/gen/Amazonka/QuickSight/Types/LongFormatText.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/LongFormatText.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.QuickSight.Types.LongFormatText
+-- 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.QuickSight.Types.LongFormatText 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 text format for a subtitle.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newLongFormatText' smart constructor.
+data LongFormatText = LongFormatText'
+  { -- | Plain text format.
+    plainText :: Prelude.Maybe Prelude.Text,
+    -- | Rich text. Examples of rich text include bold, underline, and italics.
+    richText :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LongFormatText' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'plainText', 'longFormatText_plainText' - Plain text format.
+--
+-- 'richText', 'longFormatText_richText' - Rich text. Examples of rich text include bold, underline, and italics.
+newLongFormatText ::
+  LongFormatText
+newLongFormatText =
+  LongFormatText'
+    { plainText = Prelude.Nothing,
+      richText = Prelude.Nothing
+    }
+
+-- | Plain text format.
+longFormatText_plainText :: Lens.Lens' LongFormatText (Prelude.Maybe Prelude.Text)
+longFormatText_plainText = Lens.lens (\LongFormatText' {plainText} -> plainText) (\s@LongFormatText' {} a -> s {plainText = a} :: LongFormatText)
+
+-- | Rich text. Examples of rich text include bold, underline, and italics.
+longFormatText_richText :: Lens.Lens' LongFormatText (Prelude.Maybe Prelude.Text)
+longFormatText_richText = Lens.lens (\LongFormatText' {richText} -> richText) (\s@LongFormatText' {} a -> s {richText = a} :: LongFormatText)
+
+instance Data.FromJSON LongFormatText where
+  parseJSON =
+    Data.withObject
+      "LongFormatText"
+      ( \x ->
+          LongFormatText'
+            Prelude.<$> (x Data..:? "PlainText")
+            Prelude.<*> (x Data..:? "RichText")
+      )
+
+instance Prelude.Hashable LongFormatText where
+  hashWithSalt _salt LongFormatText' {..} =
+    _salt
+      `Prelude.hashWithSalt` plainText
+      `Prelude.hashWithSalt` richText
+
+instance Prelude.NFData LongFormatText where
+  rnf LongFormatText' {..} =
+    Prelude.rnf plainText
+      `Prelude.seq` Prelude.rnf richText
+
+instance Data.ToJSON LongFormatText where
+  toJSON LongFormatText' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PlainText" Data..=) Prelude.<$> plainText,
+            ("RichText" Data..=) Prelude.<$> richText
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ManifestFileLocation.hs b/gen/Amazonka/QuickSight/Types/ManifestFileLocation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ManifestFileLocation.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.QuickSight.Types.ManifestFileLocation
+-- 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.QuickSight.Types.ManifestFileLocation 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
+
+-- | Amazon S3 manifest file location.
+--
+-- /See:/ 'newManifestFileLocation' smart constructor.
+data ManifestFileLocation = ManifestFileLocation'
+  { -- | Amazon S3 bucket.
+    bucket :: Prelude.Text,
+    -- | Amazon S3 key that identifies an object.
+    key :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ManifestFileLocation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucket', 'manifestFileLocation_bucket' - Amazon S3 bucket.
+--
+-- 'key', 'manifestFileLocation_key' - Amazon S3 key that identifies an object.
+newManifestFileLocation ::
+  -- | 'bucket'
+  Prelude.Text ->
+  -- | 'key'
+  Prelude.Text ->
+  ManifestFileLocation
+newManifestFileLocation pBucket_ pKey_ =
+  ManifestFileLocation'
+    { bucket = pBucket_,
+      key = pKey_
+    }
+
+-- | Amazon S3 bucket.
+manifestFileLocation_bucket :: Lens.Lens' ManifestFileLocation Prelude.Text
+manifestFileLocation_bucket = Lens.lens (\ManifestFileLocation' {bucket} -> bucket) (\s@ManifestFileLocation' {} a -> s {bucket = a} :: ManifestFileLocation)
+
+-- | Amazon S3 key that identifies an object.
+manifestFileLocation_key :: Lens.Lens' ManifestFileLocation Prelude.Text
+manifestFileLocation_key = Lens.lens (\ManifestFileLocation' {key} -> key) (\s@ManifestFileLocation' {} a -> s {key = a} :: ManifestFileLocation)
+
+instance Data.FromJSON ManifestFileLocation where
+  parseJSON =
+    Data.withObject
+      "ManifestFileLocation"
+      ( \x ->
+          ManifestFileLocation'
+            Prelude.<$> (x Data..: "Bucket")
+            Prelude.<*> (x Data..: "Key")
+      )
+
+instance Prelude.Hashable ManifestFileLocation where
+  hashWithSalt _salt ManifestFileLocation' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucket
+      `Prelude.hashWithSalt` key
+
+instance Prelude.NFData ManifestFileLocation where
+  rnf ManifestFileLocation' {..} =
+    Prelude.rnf bucket `Prelude.seq` Prelude.rnf key
+
+instance Data.ToJSON ManifestFileLocation where
+  toJSON ManifestFileLocation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Bucket" Data..= bucket),
+            Prelude.Just ("Key" Data..= key)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MapZoomMode.hs b/gen/Amazonka/QuickSight/Types/MapZoomMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MapZoomMode.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.QuickSight.Types.MapZoomMode
+-- 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.QuickSight.Types.MapZoomMode
+  ( MapZoomMode
+      ( ..,
+        MapZoomMode_AUTO,
+        MapZoomMode_MANUAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MapZoomMode = MapZoomMode'
+  { fromMapZoomMode ::
+      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 MapZoomMode_AUTO :: MapZoomMode
+pattern MapZoomMode_AUTO = MapZoomMode' "AUTO"
+
+pattern MapZoomMode_MANUAL :: MapZoomMode
+pattern MapZoomMode_MANUAL = MapZoomMode' "MANUAL"
+
+{-# COMPLETE
+  MapZoomMode_AUTO,
+  MapZoomMode_MANUAL,
+  MapZoomMode'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/MarginStyle.hs b/gen/Amazonka/QuickSight/Types/MarginStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MarginStyle.hs
@@ -0,0 +1,71 @@
+{-# 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.QuickSight.Types.MarginStyle
+-- 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.QuickSight.Types.MarginStyle 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 display options for margins around the outside edge of sheets.
+--
+-- /See:/ 'newMarginStyle' smart constructor.
+data MarginStyle = MarginStyle'
+  { -- | This Boolean value controls whether to display sheet margins.
+    show :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MarginStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'show', 'marginStyle_show' - This Boolean value controls whether to display sheet margins.
+newMarginStyle ::
+  MarginStyle
+newMarginStyle = MarginStyle' {show = Prelude.Nothing}
+
+-- | This Boolean value controls whether to display sheet margins.
+marginStyle_show :: Lens.Lens' MarginStyle (Prelude.Maybe Prelude.Bool)
+marginStyle_show = Lens.lens (\MarginStyle' {show} -> show) (\s@MarginStyle' {} a -> s {show = a} :: MarginStyle)
+
+instance Data.FromJSON MarginStyle where
+  parseJSON =
+    Data.withObject
+      "MarginStyle"
+      (\x -> MarginStyle' Prelude.<$> (x Data..:? "Show"))
+
+instance Prelude.Hashable MarginStyle where
+  hashWithSalt _salt MarginStyle' {..} =
+    _salt `Prelude.hashWithSalt` show
+
+instance Prelude.NFData MarginStyle where
+  rnf MarginStyle' {..} = Prelude.rnf show
+
+instance Data.ToJSON MarginStyle where
+  toJSON MarginStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Show" Data..=) Prelude.<$> show]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MariaDbParameters.hs b/gen/Amazonka/QuickSight/Types/MariaDbParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MariaDbParameters.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.QuickSight.Types.MariaDbParameters
+-- 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.QuickSight.Types.MariaDbParameters 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 parameters for MariaDB.
+--
+-- /See:/ 'newMariaDbParameters' smart constructor.
+data MariaDbParameters = MariaDbParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MariaDbParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'mariaDbParameters_host' - Host.
+--
+-- 'port', 'mariaDbParameters_port' - Port.
+--
+-- 'database', 'mariaDbParameters_database' - Database.
+newMariaDbParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  MariaDbParameters
+newMariaDbParameters pHost_ pPort_ pDatabase_ =
+  MariaDbParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | Host.
+mariaDbParameters_host :: Lens.Lens' MariaDbParameters Prelude.Text
+mariaDbParameters_host = Lens.lens (\MariaDbParameters' {host} -> host) (\s@MariaDbParameters' {} a -> s {host = a} :: MariaDbParameters)
+
+-- | Port.
+mariaDbParameters_port :: Lens.Lens' MariaDbParameters Prelude.Natural
+mariaDbParameters_port = Lens.lens (\MariaDbParameters' {port} -> port) (\s@MariaDbParameters' {} a -> s {port = a} :: MariaDbParameters)
+
+-- | Database.
+mariaDbParameters_database :: Lens.Lens' MariaDbParameters Prelude.Text
+mariaDbParameters_database = Lens.lens (\MariaDbParameters' {database} -> database) (\s@MariaDbParameters' {} a -> s {database = a} :: MariaDbParameters)
+
+instance Data.FromJSON MariaDbParameters where
+  parseJSON =
+    Data.withObject
+      "MariaDbParameters"
+      ( \x ->
+          MariaDbParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable MariaDbParameters where
+  hashWithSalt _salt MariaDbParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData MariaDbParameters where
+  rnf MariaDbParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON MariaDbParameters where
+  toJSON MariaDbParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MaximumLabelType.hs b/gen/Amazonka/QuickSight/Types/MaximumLabelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MaximumLabelType.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.QuickSight.Types.MaximumLabelType
+-- 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.QuickSight.Types.MaximumLabelType 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.QuickSight.Types.Visibility
+
+-- | The maximum label of a data path label.
+--
+-- /See:/ 'newMaximumLabelType' smart constructor.
+data MaximumLabelType = MaximumLabelType'
+  { -- | The visibility of the maximum label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MaximumLabelType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'maximumLabelType_visibility' - The visibility of the maximum label.
+newMaximumLabelType ::
+  MaximumLabelType
+newMaximumLabelType =
+  MaximumLabelType' {visibility = Prelude.Nothing}
+
+-- | The visibility of the maximum label.
+maximumLabelType_visibility :: Lens.Lens' MaximumLabelType (Prelude.Maybe Visibility)
+maximumLabelType_visibility = Lens.lens (\MaximumLabelType' {visibility} -> visibility) (\s@MaximumLabelType' {} a -> s {visibility = a} :: MaximumLabelType)
+
+instance Data.FromJSON MaximumLabelType where
+  parseJSON =
+    Data.withObject
+      "MaximumLabelType"
+      ( \x ->
+          MaximumLabelType'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable MaximumLabelType where
+  hashWithSalt _salt MaximumLabelType' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData MaximumLabelType where
+  rnf MaximumLabelType' {..} = Prelude.rnf visibility
+
+instance Data.ToJSON MaximumLabelType where
+  toJSON MaximumLabelType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MaximumMinimumComputation.hs b/gen/Amazonka/QuickSight/Types/MaximumMinimumComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MaximumMinimumComputation.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.MaximumMinimumComputation
+-- 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.QuickSight.Types.MaximumMinimumComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MaximumMinimumComputationType
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The maximum and minimum computation configuration.
+--
+-- /See:/ 'newMaximumMinimumComputation' smart constructor.
+data MaximumMinimumComputation = MaximumMinimumComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField,
+    -- | The type of computation. Choose one of the following options:
+    --
+    -- -   MAXIMUM: A maximum computation.
+    --
+    -- -   MINIMUM: A minimum computation.
+    type' :: MaximumMinimumComputationType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MaximumMinimumComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'maximumMinimumComputation_name' - The name of a computation.
+--
+-- 'value', 'maximumMinimumComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'maximumMinimumComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'maximumMinimumComputation_time' - The time field that is used in a computation.
+--
+-- 'type'', 'maximumMinimumComputation_type' - The type of computation. Choose one of the following options:
+--
+-- -   MAXIMUM: A maximum computation.
+--
+-- -   MINIMUM: A minimum computation.
+newMaximumMinimumComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  -- | 'type''
+  MaximumMinimumComputationType ->
+  MaximumMinimumComputation
+newMaximumMinimumComputation
+  pComputationId_
+  pTime_
+  pType_ =
+    MaximumMinimumComputation'
+      { name = Prelude.Nothing,
+        value = Prelude.Nothing,
+        computationId = pComputationId_,
+        time = pTime_,
+        type' = pType_
+      }
+
+-- | The name of a computation.
+maximumMinimumComputation_name :: Lens.Lens' MaximumMinimumComputation (Prelude.Maybe Prelude.Text)
+maximumMinimumComputation_name = Lens.lens (\MaximumMinimumComputation' {name} -> name) (\s@MaximumMinimumComputation' {} a -> s {name = a} :: MaximumMinimumComputation)
+
+-- | The value field that is used in a computation.
+maximumMinimumComputation_value :: Lens.Lens' MaximumMinimumComputation (Prelude.Maybe MeasureField)
+maximumMinimumComputation_value = Lens.lens (\MaximumMinimumComputation' {value} -> value) (\s@MaximumMinimumComputation' {} a -> s {value = a} :: MaximumMinimumComputation)
+
+-- | The ID for a computation.
+maximumMinimumComputation_computationId :: Lens.Lens' MaximumMinimumComputation Prelude.Text
+maximumMinimumComputation_computationId = Lens.lens (\MaximumMinimumComputation' {computationId} -> computationId) (\s@MaximumMinimumComputation' {} a -> s {computationId = a} :: MaximumMinimumComputation)
+
+-- | The time field that is used in a computation.
+maximumMinimumComputation_time :: Lens.Lens' MaximumMinimumComputation DimensionField
+maximumMinimumComputation_time = Lens.lens (\MaximumMinimumComputation' {time} -> time) (\s@MaximumMinimumComputation' {} a -> s {time = a} :: MaximumMinimumComputation)
+
+-- | The type of computation. Choose one of the following options:
+--
+-- -   MAXIMUM: A maximum computation.
+--
+-- -   MINIMUM: A minimum computation.
+maximumMinimumComputation_type :: Lens.Lens' MaximumMinimumComputation MaximumMinimumComputationType
+maximumMinimumComputation_type = Lens.lens (\MaximumMinimumComputation' {type'} -> type') (\s@MaximumMinimumComputation' {} a -> s {type' = a} :: MaximumMinimumComputation)
+
+instance Data.FromJSON MaximumMinimumComputation where
+  parseJSON =
+    Data.withObject
+      "MaximumMinimumComputation"
+      ( \x ->
+          MaximumMinimumComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable MaximumMinimumComputation where
+  hashWithSalt _salt MaximumMinimumComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData MaximumMinimumComputation where
+  rnf MaximumMinimumComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON MaximumMinimumComputation where
+  toJSON MaximumMinimumComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MaximumMinimumComputationType.hs b/gen/Amazonka/QuickSight/Types/MaximumMinimumComputationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MaximumMinimumComputationType.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.QuickSight.Types.MaximumMinimumComputationType
+-- 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.QuickSight.Types.MaximumMinimumComputationType
+  ( MaximumMinimumComputationType
+      ( ..,
+        MaximumMinimumComputationType_MAXIMUM,
+        MaximumMinimumComputationType_MINIMUM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MaximumMinimumComputationType = MaximumMinimumComputationType'
+  { fromMaximumMinimumComputationType ::
+      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 MaximumMinimumComputationType_MAXIMUM :: MaximumMinimumComputationType
+pattern MaximumMinimumComputationType_MAXIMUM = MaximumMinimumComputationType' "MAXIMUM"
+
+pattern MaximumMinimumComputationType_MINIMUM :: MaximumMinimumComputationType
+pattern MaximumMinimumComputationType_MINIMUM = MaximumMinimumComputationType' "MINIMUM"
+
+{-# COMPLETE
+  MaximumMinimumComputationType_MAXIMUM,
+  MaximumMinimumComputationType_MINIMUM,
+  MaximumMinimumComputationType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/MeasureField.hs b/gen/Amazonka/QuickSight/Types/MeasureField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MeasureField.hs
@@ -0,0 +1,128 @@
+{-# 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.QuickSight.Types.MeasureField
+-- 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.QuickSight.Types.MeasureField 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.QuickSight.Types.CalculatedMeasureField
+import Amazonka.QuickSight.Types.CategoricalMeasureField
+import Amazonka.QuickSight.Types.DateMeasureField
+import Amazonka.QuickSight.Types.NumericalMeasureField
+
+-- | The measure (metric) type field.
+--
+-- /See:/ 'newMeasureField' smart constructor.
+data MeasureField = MeasureField'
+  { -- | The calculated measure field only used in pivot tables.
+    calculatedMeasureField :: Prelude.Maybe CalculatedMeasureField,
+    -- | The measure type field with categorical type columns.
+    categoricalMeasureField :: Prelude.Maybe CategoricalMeasureField,
+    -- | The measure type field with date type columns.
+    dateMeasureField :: Prelude.Maybe DateMeasureField,
+    -- | The measure type field with numerical type columns.
+    numericalMeasureField :: Prelude.Maybe NumericalMeasureField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MeasureField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'calculatedMeasureField', 'measureField_calculatedMeasureField' - The calculated measure field only used in pivot tables.
+--
+-- 'categoricalMeasureField', 'measureField_categoricalMeasureField' - The measure type field with categorical type columns.
+--
+-- 'dateMeasureField', 'measureField_dateMeasureField' - The measure type field with date type columns.
+--
+-- 'numericalMeasureField', 'measureField_numericalMeasureField' - The measure type field with numerical type columns.
+newMeasureField ::
+  MeasureField
+newMeasureField =
+  MeasureField'
+    { calculatedMeasureField =
+        Prelude.Nothing,
+      categoricalMeasureField = Prelude.Nothing,
+      dateMeasureField = Prelude.Nothing,
+      numericalMeasureField = Prelude.Nothing
+    }
+
+-- | The calculated measure field only used in pivot tables.
+measureField_calculatedMeasureField :: Lens.Lens' MeasureField (Prelude.Maybe CalculatedMeasureField)
+measureField_calculatedMeasureField = Lens.lens (\MeasureField' {calculatedMeasureField} -> calculatedMeasureField) (\s@MeasureField' {} a -> s {calculatedMeasureField = a} :: MeasureField)
+
+-- | The measure type field with categorical type columns.
+measureField_categoricalMeasureField :: Lens.Lens' MeasureField (Prelude.Maybe CategoricalMeasureField)
+measureField_categoricalMeasureField = Lens.lens (\MeasureField' {categoricalMeasureField} -> categoricalMeasureField) (\s@MeasureField' {} a -> s {categoricalMeasureField = a} :: MeasureField)
+
+-- | The measure type field with date type columns.
+measureField_dateMeasureField :: Lens.Lens' MeasureField (Prelude.Maybe DateMeasureField)
+measureField_dateMeasureField = Lens.lens (\MeasureField' {dateMeasureField} -> dateMeasureField) (\s@MeasureField' {} a -> s {dateMeasureField = a} :: MeasureField)
+
+-- | The measure type field with numerical type columns.
+measureField_numericalMeasureField :: Lens.Lens' MeasureField (Prelude.Maybe NumericalMeasureField)
+measureField_numericalMeasureField = Lens.lens (\MeasureField' {numericalMeasureField} -> numericalMeasureField) (\s@MeasureField' {} a -> s {numericalMeasureField = a} :: MeasureField)
+
+instance Data.FromJSON MeasureField where
+  parseJSON =
+    Data.withObject
+      "MeasureField"
+      ( \x ->
+          MeasureField'
+            Prelude.<$> (x Data..:? "CalculatedMeasureField")
+            Prelude.<*> (x Data..:? "CategoricalMeasureField")
+            Prelude.<*> (x Data..:? "DateMeasureField")
+            Prelude.<*> (x Data..:? "NumericalMeasureField")
+      )
+
+instance Prelude.Hashable MeasureField where
+  hashWithSalt _salt MeasureField' {..} =
+    _salt
+      `Prelude.hashWithSalt` calculatedMeasureField
+      `Prelude.hashWithSalt` categoricalMeasureField
+      `Prelude.hashWithSalt` dateMeasureField
+      `Prelude.hashWithSalt` numericalMeasureField
+
+instance Prelude.NFData MeasureField where
+  rnf MeasureField' {..} =
+    Prelude.rnf calculatedMeasureField
+      `Prelude.seq` Prelude.rnf categoricalMeasureField
+      `Prelude.seq` Prelude.rnf dateMeasureField
+      `Prelude.seq` Prelude.rnf numericalMeasureField
+
+instance Data.ToJSON MeasureField where
+  toJSON MeasureField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CalculatedMeasureField" Data..=)
+              Prelude.<$> calculatedMeasureField,
+            ("CategoricalMeasureField" Data..=)
+              Prelude.<$> categoricalMeasureField,
+            ("DateMeasureField" Data..=)
+              Prelude.<$> dateMeasureField,
+            ("NumericalMeasureField" Data..=)
+              Prelude.<$> numericalMeasureField
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MemberIdArnPair.hs b/gen/Amazonka/QuickSight/Types/MemberIdArnPair.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MemberIdArnPair.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.MemberIdArnPair
+-- 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.QuickSight.Types.MemberIdArnPair 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
+
+-- | An object that consists of a member Amazon Resource Name (ARN) and a
+-- member ID.
+--
+-- /See:/ 'newMemberIdArnPair' smart constructor.
+data MemberIdArnPair = MemberIdArnPair'
+  { -- | The Amazon Resource Name (ARN) of the member.
+    memberArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the member.
+    memberId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MemberIdArnPair' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'memberArn', 'memberIdArnPair_memberArn' - The Amazon Resource Name (ARN) of the member.
+--
+-- 'memberId', 'memberIdArnPair_memberId' - The ID of the member.
+newMemberIdArnPair ::
+  MemberIdArnPair
+newMemberIdArnPair =
+  MemberIdArnPair'
+    { memberArn = Prelude.Nothing,
+      memberId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the member.
+memberIdArnPair_memberArn :: Lens.Lens' MemberIdArnPair (Prelude.Maybe Prelude.Text)
+memberIdArnPair_memberArn = Lens.lens (\MemberIdArnPair' {memberArn} -> memberArn) (\s@MemberIdArnPair' {} a -> s {memberArn = a} :: MemberIdArnPair)
+
+-- | The ID of the member.
+memberIdArnPair_memberId :: Lens.Lens' MemberIdArnPair (Prelude.Maybe Prelude.Text)
+memberIdArnPair_memberId = Lens.lens (\MemberIdArnPair' {memberId} -> memberId) (\s@MemberIdArnPair' {} a -> s {memberId = a} :: MemberIdArnPair)
+
+instance Data.FromJSON MemberIdArnPair where
+  parseJSON =
+    Data.withObject
+      "MemberIdArnPair"
+      ( \x ->
+          MemberIdArnPair'
+            Prelude.<$> (x Data..:? "MemberArn")
+            Prelude.<*> (x Data..:? "MemberId")
+      )
+
+instance Prelude.Hashable MemberIdArnPair where
+  hashWithSalt _salt MemberIdArnPair' {..} =
+    _salt
+      `Prelude.hashWithSalt` memberArn
+      `Prelude.hashWithSalt` memberId
+
+instance Prelude.NFData MemberIdArnPair where
+  rnf MemberIdArnPair' {..} =
+    Prelude.rnf memberArn
+      `Prelude.seq` Prelude.rnf memberId
diff --git a/gen/Amazonka/QuickSight/Types/MemberType.hs b/gen/Amazonka/QuickSight/Types/MemberType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MemberType.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.QuickSight.Types.MemberType
+-- 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.QuickSight.Types.MemberType
+  ( MemberType
+      ( ..,
+        MemberType_ANALYSIS,
+        MemberType_DASHBOARD,
+        MemberType_DATASET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MemberType = MemberType'
+  { fromMemberType ::
+      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 MemberType_ANALYSIS :: MemberType
+pattern MemberType_ANALYSIS = MemberType' "ANALYSIS"
+
+pattern MemberType_DASHBOARD :: MemberType
+pattern MemberType_DASHBOARD = MemberType' "DASHBOARD"
+
+pattern MemberType_DATASET :: MemberType
+pattern MemberType_DATASET = MemberType' "DATASET"
+
+{-# COMPLETE
+  MemberType_ANALYSIS,
+  MemberType_DASHBOARD,
+  MemberType_DATASET,
+  MemberType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/MetricComparisonComputation.hs b/gen/Amazonka/QuickSight/Types/MetricComparisonComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MetricComparisonComputation.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.MetricComparisonComputation
+-- 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.QuickSight.Types.MetricComparisonComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The metric comparison computation configuration.
+--
+-- /See:/ 'newMetricComparisonComputation' smart constructor.
+data MetricComparisonComputation = MetricComparisonComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField,
+    -- | The field that is used in a metric comparison from value setup.
+    fromValue :: MeasureField,
+    -- | The field that is used in a metric comparison to value setup.
+    targetValue :: MeasureField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricComparisonComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'metricComparisonComputation_name' - The name of a computation.
+--
+-- 'computationId', 'metricComparisonComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'metricComparisonComputation_time' - The time field that is used in a computation.
+--
+-- 'fromValue', 'metricComparisonComputation_fromValue' - The field that is used in a metric comparison from value setup.
+--
+-- 'targetValue', 'metricComparisonComputation_targetValue' - The field that is used in a metric comparison to value setup.
+newMetricComparisonComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  -- | 'fromValue'
+  MeasureField ->
+  -- | 'targetValue'
+  MeasureField ->
+  MetricComparisonComputation
+newMetricComparisonComputation
+  pComputationId_
+  pTime_
+  pFromValue_
+  pTargetValue_ =
+    MetricComparisonComputation'
+      { name =
+          Prelude.Nothing,
+        computationId = pComputationId_,
+        time = pTime_,
+        fromValue = pFromValue_,
+        targetValue = pTargetValue_
+      }
+
+-- | The name of a computation.
+metricComparisonComputation_name :: Lens.Lens' MetricComparisonComputation (Prelude.Maybe Prelude.Text)
+metricComparisonComputation_name = Lens.lens (\MetricComparisonComputation' {name} -> name) (\s@MetricComparisonComputation' {} a -> s {name = a} :: MetricComparisonComputation)
+
+-- | The ID for a computation.
+metricComparisonComputation_computationId :: Lens.Lens' MetricComparisonComputation Prelude.Text
+metricComparisonComputation_computationId = Lens.lens (\MetricComparisonComputation' {computationId} -> computationId) (\s@MetricComparisonComputation' {} a -> s {computationId = a} :: MetricComparisonComputation)
+
+-- | The time field that is used in a computation.
+metricComparisonComputation_time :: Lens.Lens' MetricComparisonComputation DimensionField
+metricComparisonComputation_time = Lens.lens (\MetricComparisonComputation' {time} -> time) (\s@MetricComparisonComputation' {} a -> s {time = a} :: MetricComparisonComputation)
+
+-- | The field that is used in a metric comparison from value setup.
+metricComparisonComputation_fromValue :: Lens.Lens' MetricComparisonComputation MeasureField
+metricComparisonComputation_fromValue = Lens.lens (\MetricComparisonComputation' {fromValue} -> fromValue) (\s@MetricComparisonComputation' {} a -> s {fromValue = a} :: MetricComparisonComputation)
+
+-- | The field that is used in a metric comparison to value setup.
+metricComparisonComputation_targetValue :: Lens.Lens' MetricComparisonComputation MeasureField
+metricComparisonComputation_targetValue = Lens.lens (\MetricComparisonComputation' {targetValue} -> targetValue) (\s@MetricComparisonComputation' {} a -> s {targetValue = a} :: MetricComparisonComputation)
+
+instance Data.FromJSON MetricComparisonComputation where
+  parseJSON =
+    Data.withObject
+      "MetricComparisonComputation"
+      ( \x ->
+          MetricComparisonComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+            Prelude.<*> (x Data..: "FromValue")
+            Prelude.<*> (x Data..: "TargetValue")
+      )
+
+instance Prelude.Hashable MetricComparisonComputation where
+  hashWithSalt _salt MetricComparisonComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+      `Prelude.hashWithSalt` fromValue
+      `Prelude.hashWithSalt` targetValue
+
+instance Prelude.NFData MetricComparisonComputation where
+  rnf MetricComparisonComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+      `Prelude.seq` Prelude.rnf fromValue
+      `Prelude.seq` Prelude.rnf targetValue
+
+instance Data.ToJSON MetricComparisonComputation where
+  toJSON MetricComparisonComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time),
+            Prelude.Just ("FromValue" Data..= fromValue),
+            Prelude.Just ("TargetValue" Data..= targetValue)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MinimumLabelType.hs b/gen/Amazonka/QuickSight/Types/MinimumLabelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MinimumLabelType.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.QuickSight.Types.MinimumLabelType
+-- 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.QuickSight.Types.MinimumLabelType 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.QuickSight.Types.Visibility
+
+-- | The minimum label of a data path label.
+--
+-- /See:/ 'newMinimumLabelType' smart constructor.
+data MinimumLabelType = MinimumLabelType'
+  { -- | The visibility of the minimum label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MinimumLabelType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'minimumLabelType_visibility' - The visibility of the minimum label.
+newMinimumLabelType ::
+  MinimumLabelType
+newMinimumLabelType =
+  MinimumLabelType' {visibility = Prelude.Nothing}
+
+-- | The visibility of the minimum label.
+minimumLabelType_visibility :: Lens.Lens' MinimumLabelType (Prelude.Maybe Visibility)
+minimumLabelType_visibility = Lens.lens (\MinimumLabelType' {visibility} -> visibility) (\s@MinimumLabelType' {} a -> s {visibility = a} :: MinimumLabelType)
+
+instance Data.FromJSON MinimumLabelType where
+  parseJSON =
+    Data.withObject
+      "MinimumLabelType"
+      ( \x ->
+          MinimumLabelType'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable MinimumLabelType where
+  hashWithSalt _salt MinimumLabelType' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData MinimumLabelType where
+  rnf MinimumLabelType' {..} = Prelude.rnf visibility
+
+instance Data.ToJSON MinimumLabelType where
+  toJSON MinimumLabelType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MissingDataConfiguration.hs b/gen/Amazonka/QuickSight/Types/MissingDataConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MissingDataConfiguration.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.MissingDataConfiguration
+-- 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.QuickSight.Types.MissingDataConfiguration 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.QuickSight.Types.MissingDataTreatmentOption
+
+-- | The configuration options that determine how missing data is treated
+-- during the rendering of a line chart.
+--
+-- /See:/ 'newMissingDataConfiguration' smart constructor.
+data MissingDataConfiguration = MissingDataConfiguration'
+  { -- | The treatment option that determines how missing data should be
+    -- rendered. Choose from the following options:
+    --
+    -- -   @INTERPOLATE@: Interpolate missing values between the prior and the
+    --     next known value.
+    --
+    -- -   @SHOW_AS_ZERO@: Show missing values as the value @0@.
+    --
+    -- -   @SHOW_AS_BLANK@: Display a blank space when rendering missing data.
+    treatmentOption :: Prelude.Maybe MissingDataTreatmentOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MissingDataConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'treatmentOption', 'missingDataConfiguration_treatmentOption' - The treatment option that determines how missing data should be
+-- rendered. Choose from the following options:
+--
+-- -   @INTERPOLATE@: Interpolate missing values between the prior and the
+--     next known value.
+--
+-- -   @SHOW_AS_ZERO@: Show missing values as the value @0@.
+--
+-- -   @SHOW_AS_BLANK@: Display a blank space when rendering missing data.
+newMissingDataConfiguration ::
+  MissingDataConfiguration
+newMissingDataConfiguration =
+  MissingDataConfiguration'
+    { treatmentOption =
+        Prelude.Nothing
+    }
+
+-- | The treatment option that determines how missing data should be
+-- rendered. Choose from the following options:
+--
+-- -   @INTERPOLATE@: Interpolate missing values between the prior and the
+--     next known value.
+--
+-- -   @SHOW_AS_ZERO@: Show missing values as the value @0@.
+--
+-- -   @SHOW_AS_BLANK@: Display a blank space when rendering missing data.
+missingDataConfiguration_treatmentOption :: Lens.Lens' MissingDataConfiguration (Prelude.Maybe MissingDataTreatmentOption)
+missingDataConfiguration_treatmentOption = Lens.lens (\MissingDataConfiguration' {treatmentOption} -> treatmentOption) (\s@MissingDataConfiguration' {} a -> s {treatmentOption = a} :: MissingDataConfiguration)
+
+instance Data.FromJSON MissingDataConfiguration where
+  parseJSON =
+    Data.withObject
+      "MissingDataConfiguration"
+      ( \x ->
+          MissingDataConfiguration'
+            Prelude.<$> (x Data..:? "TreatmentOption")
+      )
+
+instance Prelude.Hashable MissingDataConfiguration where
+  hashWithSalt _salt MissingDataConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` treatmentOption
+
+instance Prelude.NFData MissingDataConfiguration where
+  rnf MissingDataConfiguration' {..} =
+    Prelude.rnf treatmentOption
+
+instance Data.ToJSON MissingDataConfiguration where
+  toJSON MissingDataConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TreatmentOption" Data..=)
+              Prelude.<$> treatmentOption
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/MissingDataTreatmentOption.hs b/gen/Amazonka/QuickSight/Types/MissingDataTreatmentOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MissingDataTreatmentOption.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.QuickSight.Types.MissingDataTreatmentOption
+-- 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.QuickSight.Types.MissingDataTreatmentOption
+  ( MissingDataTreatmentOption
+      ( ..,
+        MissingDataTreatmentOption_INTERPOLATE,
+        MissingDataTreatmentOption_SHOW_AS_BLANK,
+        MissingDataTreatmentOption_SHOW_AS_ZERO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MissingDataTreatmentOption = MissingDataTreatmentOption'
+  { fromMissingDataTreatmentOption ::
+      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 MissingDataTreatmentOption_INTERPOLATE :: MissingDataTreatmentOption
+pattern MissingDataTreatmentOption_INTERPOLATE = MissingDataTreatmentOption' "INTERPOLATE"
+
+pattern MissingDataTreatmentOption_SHOW_AS_BLANK :: MissingDataTreatmentOption
+pattern MissingDataTreatmentOption_SHOW_AS_BLANK = MissingDataTreatmentOption' "SHOW_AS_BLANK"
+
+pattern MissingDataTreatmentOption_SHOW_AS_ZERO :: MissingDataTreatmentOption
+pattern MissingDataTreatmentOption_SHOW_AS_ZERO = MissingDataTreatmentOption' "SHOW_AS_ZERO"
+
+{-# COMPLETE
+  MissingDataTreatmentOption_INTERPOLATE,
+  MissingDataTreatmentOption_SHOW_AS_BLANK,
+  MissingDataTreatmentOption_SHOW_AS_ZERO,
+  MissingDataTreatmentOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/MySqlParameters.hs b/gen/Amazonka/QuickSight/Types/MySqlParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/MySqlParameters.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.QuickSight.Types.MySqlParameters
+-- 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.QuickSight.Types.MySqlParameters 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 parameters for MySQL.
+--
+-- /See:/ 'newMySqlParameters' smart constructor.
+data MySqlParameters = MySqlParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MySqlParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'mySqlParameters_host' - Host.
+--
+-- 'port', 'mySqlParameters_port' - Port.
+--
+-- 'database', 'mySqlParameters_database' - Database.
+newMySqlParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  MySqlParameters
+newMySqlParameters pHost_ pPort_ pDatabase_ =
+  MySqlParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | Host.
+mySqlParameters_host :: Lens.Lens' MySqlParameters Prelude.Text
+mySqlParameters_host = Lens.lens (\MySqlParameters' {host} -> host) (\s@MySqlParameters' {} a -> s {host = a} :: MySqlParameters)
+
+-- | Port.
+mySqlParameters_port :: Lens.Lens' MySqlParameters Prelude.Natural
+mySqlParameters_port = Lens.lens (\MySqlParameters' {port} -> port) (\s@MySqlParameters' {} a -> s {port = a} :: MySqlParameters)
+
+-- | Database.
+mySqlParameters_database :: Lens.Lens' MySqlParameters Prelude.Text
+mySqlParameters_database = Lens.lens (\MySqlParameters' {database} -> database) (\s@MySqlParameters' {} a -> s {database = a} :: MySqlParameters)
+
+instance Data.FromJSON MySqlParameters where
+  parseJSON =
+    Data.withObject
+      "MySqlParameters"
+      ( \x ->
+          MySqlParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable MySqlParameters where
+  hashWithSalt _salt MySqlParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData MySqlParameters where
+  rnf MySqlParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON MySqlParameters where
+  toJSON MySqlParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NamespaceError.hs b/gen/Amazonka/QuickSight/Types/NamespaceError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NamespaceError.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.QuickSight.Types.NamespaceError
+-- 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.QuickSight.Types.NamespaceError 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.QuickSight.Types.NamespaceErrorType
+
+-- | Errors that occur during namespace creation.
+--
+-- /See:/ 'newNamespaceError' smart constructor.
+data NamespaceError = NamespaceError'
+  { -- | The message for the error.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The error type.
+    type' :: Prelude.Maybe NamespaceErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NamespaceError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'namespaceError_message' - The message for the error.
+--
+-- 'type'', 'namespaceError_type' - The error type.
+newNamespaceError ::
+  NamespaceError
+newNamespaceError =
+  NamespaceError'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The message for the error.
+namespaceError_message :: Lens.Lens' NamespaceError (Prelude.Maybe Prelude.Text)
+namespaceError_message = Lens.lens (\NamespaceError' {message} -> message) (\s@NamespaceError' {} a -> s {message = a} :: NamespaceError)
+
+-- | The error type.
+namespaceError_type :: Lens.Lens' NamespaceError (Prelude.Maybe NamespaceErrorType)
+namespaceError_type = Lens.lens (\NamespaceError' {type'} -> type') (\s@NamespaceError' {} a -> s {type' = a} :: NamespaceError)
+
+instance Data.FromJSON NamespaceError where
+  parseJSON =
+    Data.withObject
+      "NamespaceError"
+      ( \x ->
+          NamespaceError'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable NamespaceError where
+  hashWithSalt _salt NamespaceError' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData NamespaceError where
+  rnf NamespaceError' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/QuickSight/Types/NamespaceErrorType.hs b/gen/Amazonka/QuickSight/Types/NamespaceErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NamespaceErrorType.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.QuickSight.Types.NamespaceErrorType
+-- 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.QuickSight.Types.NamespaceErrorType
+  ( NamespaceErrorType
+      ( ..,
+        NamespaceErrorType_INTERNAL_SERVICE_ERROR,
+        NamespaceErrorType_PERMISSION_DENIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NamespaceErrorType = NamespaceErrorType'
+  { fromNamespaceErrorType ::
+      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 NamespaceErrorType_INTERNAL_SERVICE_ERROR :: NamespaceErrorType
+pattern NamespaceErrorType_INTERNAL_SERVICE_ERROR = NamespaceErrorType' "INTERNAL_SERVICE_ERROR"
+
+pattern NamespaceErrorType_PERMISSION_DENIED :: NamespaceErrorType
+pattern NamespaceErrorType_PERMISSION_DENIED = NamespaceErrorType' "PERMISSION_DENIED"
+
+{-# COMPLETE
+  NamespaceErrorType_INTERNAL_SERVICE_ERROR,
+  NamespaceErrorType_PERMISSION_DENIED,
+  NamespaceErrorType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NamespaceInfoV2.hs b/gen/Amazonka/QuickSight/Types/NamespaceInfoV2.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NamespaceInfoV2.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.NamespaceInfoV2
+-- 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.QuickSight.Types.NamespaceInfoV2 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.QuickSight.Types.IdentityStore
+import Amazonka.QuickSight.Types.NamespaceError
+import Amazonka.QuickSight.Types.NamespaceStatus
+
+-- | The error type.
+--
+-- /See:/ 'newNamespaceInfoV2' smart constructor.
+data NamespaceInfoV2 = NamespaceInfoV2'
+  { -- | The namespace ARN.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The namespace Amazon Web Services Region.
+    capacityRegion :: Prelude.Maybe Prelude.Text,
+    -- | The creation status of a namespace that is not yet completely created.
+    creationStatus :: Prelude.Maybe NamespaceStatus,
+    -- | The identity store used for the namespace.
+    identityStore :: Prelude.Maybe IdentityStore,
+    -- | The name of the error.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | An error that occurred when the namespace was created.
+    namespaceError :: Prelude.Maybe NamespaceError
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NamespaceInfoV2' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'namespaceInfoV2_arn' - The namespace ARN.
+--
+-- 'capacityRegion', 'namespaceInfoV2_capacityRegion' - The namespace Amazon Web Services Region.
+--
+-- 'creationStatus', 'namespaceInfoV2_creationStatus' - The creation status of a namespace that is not yet completely created.
+--
+-- 'identityStore', 'namespaceInfoV2_identityStore' - The identity store used for the namespace.
+--
+-- 'name', 'namespaceInfoV2_name' - The name of the error.
+--
+-- 'namespaceError', 'namespaceInfoV2_namespaceError' - An error that occurred when the namespace was created.
+newNamespaceInfoV2 ::
+  NamespaceInfoV2
+newNamespaceInfoV2 =
+  NamespaceInfoV2'
+    { arn = Prelude.Nothing,
+      capacityRegion = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      identityStore = Prelude.Nothing,
+      name = Prelude.Nothing,
+      namespaceError = Prelude.Nothing
+    }
+
+-- | The namespace ARN.
+namespaceInfoV2_arn :: Lens.Lens' NamespaceInfoV2 (Prelude.Maybe Prelude.Text)
+namespaceInfoV2_arn = Lens.lens (\NamespaceInfoV2' {arn} -> arn) (\s@NamespaceInfoV2' {} a -> s {arn = a} :: NamespaceInfoV2)
+
+-- | The namespace Amazon Web Services Region.
+namespaceInfoV2_capacityRegion :: Lens.Lens' NamespaceInfoV2 (Prelude.Maybe Prelude.Text)
+namespaceInfoV2_capacityRegion = Lens.lens (\NamespaceInfoV2' {capacityRegion} -> capacityRegion) (\s@NamespaceInfoV2' {} a -> s {capacityRegion = a} :: NamespaceInfoV2)
+
+-- | The creation status of a namespace that is not yet completely created.
+namespaceInfoV2_creationStatus :: Lens.Lens' NamespaceInfoV2 (Prelude.Maybe NamespaceStatus)
+namespaceInfoV2_creationStatus = Lens.lens (\NamespaceInfoV2' {creationStatus} -> creationStatus) (\s@NamespaceInfoV2' {} a -> s {creationStatus = a} :: NamespaceInfoV2)
+
+-- | The identity store used for the namespace.
+namespaceInfoV2_identityStore :: Lens.Lens' NamespaceInfoV2 (Prelude.Maybe IdentityStore)
+namespaceInfoV2_identityStore = Lens.lens (\NamespaceInfoV2' {identityStore} -> identityStore) (\s@NamespaceInfoV2' {} a -> s {identityStore = a} :: NamespaceInfoV2)
+
+-- | The name of the error.
+namespaceInfoV2_name :: Lens.Lens' NamespaceInfoV2 (Prelude.Maybe Prelude.Text)
+namespaceInfoV2_name = Lens.lens (\NamespaceInfoV2' {name} -> name) (\s@NamespaceInfoV2' {} a -> s {name = a} :: NamespaceInfoV2)
+
+-- | An error that occurred when the namespace was created.
+namespaceInfoV2_namespaceError :: Lens.Lens' NamespaceInfoV2 (Prelude.Maybe NamespaceError)
+namespaceInfoV2_namespaceError = Lens.lens (\NamespaceInfoV2' {namespaceError} -> namespaceError) (\s@NamespaceInfoV2' {} a -> s {namespaceError = a} :: NamespaceInfoV2)
+
+instance Data.FromJSON NamespaceInfoV2 where
+  parseJSON =
+    Data.withObject
+      "NamespaceInfoV2"
+      ( \x ->
+          NamespaceInfoV2'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CapacityRegion")
+            Prelude.<*> (x Data..:? "CreationStatus")
+            Prelude.<*> (x Data..:? "IdentityStore")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "NamespaceError")
+      )
+
+instance Prelude.Hashable NamespaceInfoV2 where
+  hashWithSalt _salt NamespaceInfoV2' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` capacityRegion
+      `Prelude.hashWithSalt` creationStatus
+      `Prelude.hashWithSalt` identityStore
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` namespaceError
+
+instance Prelude.NFData NamespaceInfoV2 where
+  rnf NamespaceInfoV2' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf capacityRegion
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf identityStore
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf namespaceError
diff --git a/gen/Amazonka/QuickSight/Types/NamespaceStatus.hs b/gen/Amazonka/QuickSight/Types/NamespaceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NamespaceStatus.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.QuickSight.Types.NamespaceStatus
+-- 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.QuickSight.Types.NamespaceStatus
+  ( NamespaceStatus
+      ( ..,
+        NamespaceStatus_CREATED,
+        NamespaceStatus_CREATING,
+        NamespaceStatus_DELETING,
+        NamespaceStatus_NON_RETRYABLE_FAILURE,
+        NamespaceStatus_RETRYABLE_FAILURE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NamespaceStatus = NamespaceStatus'
+  { fromNamespaceStatus ::
+      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 NamespaceStatus_CREATED :: NamespaceStatus
+pattern NamespaceStatus_CREATED = NamespaceStatus' "CREATED"
+
+pattern NamespaceStatus_CREATING :: NamespaceStatus
+pattern NamespaceStatus_CREATING = NamespaceStatus' "CREATING"
+
+pattern NamespaceStatus_DELETING :: NamespaceStatus
+pattern NamespaceStatus_DELETING = NamespaceStatus' "DELETING"
+
+pattern NamespaceStatus_NON_RETRYABLE_FAILURE :: NamespaceStatus
+pattern NamespaceStatus_NON_RETRYABLE_FAILURE = NamespaceStatus' "NON_RETRYABLE_FAILURE"
+
+pattern NamespaceStatus_RETRYABLE_FAILURE :: NamespaceStatus
+pattern NamespaceStatus_RETRYABLE_FAILURE = NamespaceStatus' "RETRYABLE_FAILURE"
+
+{-# COMPLETE
+  NamespaceStatus_CREATED,
+  NamespaceStatus_CREATING,
+  NamespaceStatus_DELETING,
+  NamespaceStatus_NON_RETRYABLE_FAILURE,
+  NamespaceStatus_RETRYABLE_FAILURE,
+  NamespaceStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NegativeValueConfiguration.hs b/gen/Amazonka/QuickSight/Types/NegativeValueConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NegativeValueConfiguration.hs
@@ -0,0 +1,82 @@
+{-# 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.QuickSight.Types.NegativeValueConfiguration
+-- 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.QuickSight.Types.NegativeValueConfiguration 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.QuickSight.Types.NegativeValueDisplayMode
+
+-- | The options that determine the negative value configuration.
+--
+-- /See:/ 'newNegativeValueConfiguration' smart constructor.
+data NegativeValueConfiguration = NegativeValueConfiguration'
+  { -- | Determines the display mode of the negative value configuration.
+    displayMode :: NegativeValueDisplayMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NegativeValueConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayMode', 'negativeValueConfiguration_displayMode' - Determines the display mode of the negative value configuration.
+newNegativeValueConfiguration ::
+  -- | 'displayMode'
+  NegativeValueDisplayMode ->
+  NegativeValueConfiguration
+newNegativeValueConfiguration pDisplayMode_ =
+  NegativeValueConfiguration'
+    { displayMode =
+        pDisplayMode_
+    }
+
+-- | Determines the display mode of the negative value configuration.
+negativeValueConfiguration_displayMode :: Lens.Lens' NegativeValueConfiguration NegativeValueDisplayMode
+negativeValueConfiguration_displayMode = Lens.lens (\NegativeValueConfiguration' {displayMode} -> displayMode) (\s@NegativeValueConfiguration' {} a -> s {displayMode = a} :: NegativeValueConfiguration)
+
+instance Data.FromJSON NegativeValueConfiguration where
+  parseJSON =
+    Data.withObject
+      "NegativeValueConfiguration"
+      ( \x ->
+          NegativeValueConfiguration'
+            Prelude.<$> (x Data..: "DisplayMode")
+      )
+
+instance Prelude.Hashable NegativeValueConfiguration where
+  hashWithSalt _salt NegativeValueConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` displayMode
+
+instance Prelude.NFData NegativeValueConfiguration where
+  rnf NegativeValueConfiguration' {..} =
+    Prelude.rnf displayMode
+
+instance Data.ToJSON NegativeValueConfiguration where
+  toJSON NegativeValueConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("DisplayMode" Data..= displayMode)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NegativeValueDisplayMode.hs b/gen/Amazonka/QuickSight/Types/NegativeValueDisplayMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NegativeValueDisplayMode.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.QuickSight.Types.NegativeValueDisplayMode
+-- 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.QuickSight.Types.NegativeValueDisplayMode
+  ( NegativeValueDisplayMode
+      ( ..,
+        NegativeValueDisplayMode_NEGATIVE,
+        NegativeValueDisplayMode_POSITIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NegativeValueDisplayMode = NegativeValueDisplayMode'
+  { fromNegativeValueDisplayMode ::
+      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 NegativeValueDisplayMode_NEGATIVE :: NegativeValueDisplayMode
+pattern NegativeValueDisplayMode_NEGATIVE = NegativeValueDisplayMode' "NEGATIVE"
+
+pattern NegativeValueDisplayMode_POSITIVE :: NegativeValueDisplayMode
+pattern NegativeValueDisplayMode_POSITIVE = NegativeValueDisplayMode' "POSITIVE"
+
+{-# COMPLETE
+  NegativeValueDisplayMode_NEGATIVE,
+  NegativeValueDisplayMode_POSITIVE,
+  NegativeValueDisplayMode'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NullValueFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/NullValueFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NullValueFormatConfiguration.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.QuickSight.Types.NullValueFormatConfiguration
+-- 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.QuickSight.Types.NullValueFormatConfiguration 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 options that determine the null value format configuration.
+--
+-- /See:/ 'newNullValueFormatConfiguration' smart constructor.
+data NullValueFormatConfiguration = NullValueFormatConfiguration'
+  { -- | Determines the null string of null values.
+    nullString :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NullValueFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nullString', 'nullValueFormatConfiguration_nullString' - Determines the null string of null values.
+newNullValueFormatConfiguration ::
+  -- | 'nullString'
+  Prelude.Text ->
+  NullValueFormatConfiguration
+newNullValueFormatConfiguration pNullString_ =
+  NullValueFormatConfiguration'
+    { nullString =
+        Data._Sensitive Lens.# pNullString_
+    }
+
+-- | Determines the null string of null values.
+nullValueFormatConfiguration_nullString :: Lens.Lens' NullValueFormatConfiguration Prelude.Text
+nullValueFormatConfiguration_nullString = Lens.lens (\NullValueFormatConfiguration' {nullString} -> nullString) (\s@NullValueFormatConfiguration' {} a -> s {nullString = a} :: NullValueFormatConfiguration) Prelude.. Data._Sensitive
+
+instance Data.FromJSON NullValueFormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "NullValueFormatConfiguration"
+      ( \x ->
+          NullValueFormatConfiguration'
+            Prelude.<$> (x Data..: "NullString")
+      )
+
+instance
+  Prelude.Hashable
+    NullValueFormatConfiguration
+  where
+  hashWithSalt _salt NullValueFormatConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` nullString
+
+instance Prelude.NFData NullValueFormatConfiguration where
+  rnf NullValueFormatConfiguration' {..} =
+    Prelude.rnf nullString
+
+instance Data.ToJSON NullValueFormatConfiguration where
+  toJSON NullValueFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("NullString" Data..= nullString)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumberDisplayFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/NumberDisplayFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumberDisplayFormatConfiguration.hs
@@ -0,0 +1,181 @@
+{-# 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.QuickSight.Types.NumberDisplayFormatConfiguration
+-- 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.QuickSight.Types.NumberDisplayFormatConfiguration 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.QuickSight.Types.DecimalPlacesConfiguration
+import Amazonka.QuickSight.Types.NegativeValueConfiguration
+import Amazonka.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumberScale
+import Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+
+-- | The options that determine the number display format configuration.
+--
+-- /See:/ 'newNumberDisplayFormatConfiguration' smart constructor.
+data NumberDisplayFormatConfiguration = NumberDisplayFormatConfiguration'
+  { -- | The option that determines the decimal places configuration.
+    decimalPlacesConfiguration :: Prelude.Maybe DecimalPlacesConfiguration,
+    -- | The options that determine the negative value configuration.
+    negativeValueConfiguration :: Prelude.Maybe NegativeValueConfiguration,
+    -- | The options that determine the null value format configuration.
+    nullValueFormatConfiguration :: Prelude.Maybe NullValueFormatConfiguration,
+    -- | Determines the number scale value of the number format.
+    numberScale :: Prelude.Maybe NumberScale,
+    -- | Determines the prefix value of the number format.
+    prefix :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The options that determine the numeric separator configuration.
+    separatorConfiguration :: Prelude.Maybe NumericSeparatorConfiguration,
+    -- | Determines the suffix value of the number format.
+    suffix :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumberDisplayFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'decimalPlacesConfiguration', 'numberDisplayFormatConfiguration_decimalPlacesConfiguration' - The option that determines the decimal places configuration.
+--
+-- 'negativeValueConfiguration', 'numberDisplayFormatConfiguration_negativeValueConfiguration' - The options that determine the negative value configuration.
+--
+-- 'nullValueFormatConfiguration', 'numberDisplayFormatConfiguration_nullValueFormatConfiguration' - The options that determine the null value format configuration.
+--
+-- 'numberScale', 'numberDisplayFormatConfiguration_numberScale' - Determines the number scale value of the number format.
+--
+-- 'prefix', 'numberDisplayFormatConfiguration_prefix' - Determines the prefix value of the number format.
+--
+-- 'separatorConfiguration', 'numberDisplayFormatConfiguration_separatorConfiguration' - The options that determine the numeric separator configuration.
+--
+-- 'suffix', 'numberDisplayFormatConfiguration_suffix' - Determines the suffix value of the number format.
+newNumberDisplayFormatConfiguration ::
+  NumberDisplayFormatConfiguration
+newNumberDisplayFormatConfiguration =
+  NumberDisplayFormatConfiguration'
+    { decimalPlacesConfiguration =
+        Prelude.Nothing,
+      negativeValueConfiguration =
+        Prelude.Nothing,
+      nullValueFormatConfiguration =
+        Prelude.Nothing,
+      numberScale = Prelude.Nothing,
+      prefix = Prelude.Nothing,
+      separatorConfiguration = Prelude.Nothing,
+      suffix = Prelude.Nothing
+    }
+
+-- | The option that determines the decimal places configuration.
+numberDisplayFormatConfiguration_decimalPlacesConfiguration :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe DecimalPlacesConfiguration)
+numberDisplayFormatConfiguration_decimalPlacesConfiguration = Lens.lens (\NumberDisplayFormatConfiguration' {decimalPlacesConfiguration} -> decimalPlacesConfiguration) (\s@NumberDisplayFormatConfiguration' {} a -> s {decimalPlacesConfiguration = a} :: NumberDisplayFormatConfiguration)
+
+-- | The options that determine the negative value configuration.
+numberDisplayFormatConfiguration_negativeValueConfiguration :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe NegativeValueConfiguration)
+numberDisplayFormatConfiguration_negativeValueConfiguration = Lens.lens (\NumberDisplayFormatConfiguration' {negativeValueConfiguration} -> negativeValueConfiguration) (\s@NumberDisplayFormatConfiguration' {} a -> s {negativeValueConfiguration = a} :: NumberDisplayFormatConfiguration)
+
+-- | The options that determine the null value format configuration.
+numberDisplayFormatConfiguration_nullValueFormatConfiguration :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe NullValueFormatConfiguration)
+numberDisplayFormatConfiguration_nullValueFormatConfiguration = Lens.lens (\NumberDisplayFormatConfiguration' {nullValueFormatConfiguration} -> nullValueFormatConfiguration) (\s@NumberDisplayFormatConfiguration' {} a -> s {nullValueFormatConfiguration = a} :: NumberDisplayFormatConfiguration)
+
+-- | Determines the number scale value of the number format.
+numberDisplayFormatConfiguration_numberScale :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe NumberScale)
+numberDisplayFormatConfiguration_numberScale = Lens.lens (\NumberDisplayFormatConfiguration' {numberScale} -> numberScale) (\s@NumberDisplayFormatConfiguration' {} a -> s {numberScale = a} :: NumberDisplayFormatConfiguration)
+
+-- | Determines the prefix value of the number format.
+numberDisplayFormatConfiguration_prefix :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+numberDisplayFormatConfiguration_prefix = Lens.lens (\NumberDisplayFormatConfiguration' {prefix} -> prefix) (\s@NumberDisplayFormatConfiguration' {} a -> s {prefix = a} :: NumberDisplayFormatConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The options that determine the numeric separator configuration.
+numberDisplayFormatConfiguration_separatorConfiguration :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe NumericSeparatorConfiguration)
+numberDisplayFormatConfiguration_separatorConfiguration = Lens.lens (\NumberDisplayFormatConfiguration' {separatorConfiguration} -> separatorConfiguration) (\s@NumberDisplayFormatConfiguration' {} a -> s {separatorConfiguration = a} :: NumberDisplayFormatConfiguration)
+
+-- | Determines the suffix value of the number format.
+numberDisplayFormatConfiguration_suffix :: Lens.Lens' NumberDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+numberDisplayFormatConfiguration_suffix = Lens.lens (\NumberDisplayFormatConfiguration' {suffix} -> suffix) (\s@NumberDisplayFormatConfiguration' {} a -> s {suffix = a} :: NumberDisplayFormatConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+instance
+  Data.FromJSON
+    NumberDisplayFormatConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "NumberDisplayFormatConfiguration"
+      ( \x ->
+          NumberDisplayFormatConfiguration'
+            Prelude.<$> (x Data..:? "DecimalPlacesConfiguration")
+            Prelude.<*> (x Data..:? "NegativeValueConfiguration")
+            Prelude.<*> (x Data..:? "NullValueFormatConfiguration")
+            Prelude.<*> (x Data..:? "NumberScale")
+            Prelude.<*> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..:? "SeparatorConfiguration")
+            Prelude.<*> (x Data..:? "Suffix")
+      )
+
+instance
+  Prelude.Hashable
+    NumberDisplayFormatConfiguration
+  where
+  hashWithSalt
+    _salt
+    NumberDisplayFormatConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` decimalPlacesConfiguration
+        `Prelude.hashWithSalt` negativeValueConfiguration
+        `Prelude.hashWithSalt` nullValueFormatConfiguration
+        `Prelude.hashWithSalt` numberScale
+        `Prelude.hashWithSalt` prefix
+        `Prelude.hashWithSalt` separatorConfiguration
+        `Prelude.hashWithSalt` suffix
+
+instance
+  Prelude.NFData
+    NumberDisplayFormatConfiguration
+  where
+  rnf NumberDisplayFormatConfiguration' {..} =
+    Prelude.rnf decimalPlacesConfiguration
+      `Prelude.seq` Prelude.rnf negativeValueConfiguration
+      `Prelude.seq` Prelude.rnf nullValueFormatConfiguration
+      `Prelude.seq` Prelude.rnf numberScale
+      `Prelude.seq` Prelude.rnf prefix
+      `Prelude.seq` Prelude.rnf separatorConfiguration
+      `Prelude.seq` Prelude.rnf suffix
+
+instance Data.ToJSON NumberDisplayFormatConfiguration where
+  toJSON NumberDisplayFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DecimalPlacesConfiguration" Data..=)
+              Prelude.<$> decimalPlacesConfiguration,
+            ("NegativeValueConfiguration" Data..=)
+              Prelude.<$> negativeValueConfiguration,
+            ("NullValueFormatConfiguration" Data..=)
+              Prelude.<$> nullValueFormatConfiguration,
+            ("NumberScale" Data..=) Prelude.<$> numberScale,
+            ("Prefix" Data..=) Prelude.<$> prefix,
+            ("SeparatorConfiguration" Data..=)
+              Prelude.<$> separatorConfiguration,
+            ("Suffix" Data..=) Prelude.<$> suffix
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumberFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/NumberFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumberFormatConfiguration.hs
@@ -0,0 +1,82 @@
+{-# 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.QuickSight.Types.NumberFormatConfiguration
+-- 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.QuickSight.Types.NumberFormatConfiguration 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.QuickSight.Types.NumericFormatConfiguration
+
+-- | Formatting configuration for number fields.
+--
+-- /See:/ 'newNumberFormatConfiguration' smart constructor.
+data NumberFormatConfiguration = NumberFormatConfiguration'
+  { -- | The options that determine the numeric format configuration.
+    formatConfiguration :: Prelude.Maybe NumericFormatConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumberFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatConfiguration', 'numberFormatConfiguration_formatConfiguration' - The options that determine the numeric format configuration.
+newNumberFormatConfiguration ::
+  NumberFormatConfiguration
+newNumberFormatConfiguration =
+  NumberFormatConfiguration'
+    { formatConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The options that determine the numeric format configuration.
+numberFormatConfiguration_formatConfiguration :: Lens.Lens' NumberFormatConfiguration (Prelude.Maybe NumericFormatConfiguration)
+numberFormatConfiguration_formatConfiguration = Lens.lens (\NumberFormatConfiguration' {formatConfiguration} -> formatConfiguration) (\s@NumberFormatConfiguration' {} a -> s {formatConfiguration = a} :: NumberFormatConfiguration)
+
+instance Data.FromJSON NumberFormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "NumberFormatConfiguration"
+      ( \x ->
+          NumberFormatConfiguration'
+            Prelude.<$> (x Data..:? "FormatConfiguration")
+      )
+
+instance Prelude.Hashable NumberFormatConfiguration where
+  hashWithSalt _salt NumberFormatConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` formatConfiguration
+
+instance Prelude.NFData NumberFormatConfiguration where
+  rnf NumberFormatConfiguration' {..} =
+    Prelude.rnf formatConfiguration
+
+instance Data.ToJSON NumberFormatConfiguration where
+  toJSON NumberFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumberScale.hs b/gen/Amazonka/QuickSight/Types/NumberScale.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumberScale.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.NumberScale
+-- 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.QuickSight.Types.NumberScale
+  ( NumberScale
+      ( ..,
+        NumberScale_AUTO,
+        NumberScale_BILLIONS,
+        NumberScale_MILLIONS,
+        NumberScale_NONE,
+        NumberScale_THOUSANDS,
+        NumberScale_TRILLIONS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NumberScale = NumberScale'
+  { fromNumberScale ::
+      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 NumberScale_AUTO :: NumberScale
+pattern NumberScale_AUTO = NumberScale' "AUTO"
+
+pattern NumberScale_BILLIONS :: NumberScale
+pattern NumberScale_BILLIONS = NumberScale' "BILLIONS"
+
+pattern NumberScale_MILLIONS :: NumberScale
+pattern NumberScale_MILLIONS = NumberScale' "MILLIONS"
+
+pattern NumberScale_NONE :: NumberScale
+pattern NumberScale_NONE = NumberScale' "NONE"
+
+pattern NumberScale_THOUSANDS :: NumberScale
+pattern NumberScale_THOUSANDS = NumberScale' "THOUSANDS"
+
+pattern NumberScale_TRILLIONS :: NumberScale
+pattern NumberScale_TRILLIONS = NumberScale' "TRILLIONS"
+
+{-# COMPLETE
+  NumberScale_AUTO,
+  NumberScale_BILLIONS,
+  NumberScale_MILLIONS,
+  NumberScale_NONE,
+  NumberScale_THOUSANDS,
+  NumberScale_TRILLIONS,
+  NumberScale'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NumericAxisOptions.hs b/gen/Amazonka/QuickSight/Types/NumericAxisOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericAxisOptions.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.QuickSight.Types.NumericAxisOptions
+-- 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.QuickSight.Types.NumericAxisOptions 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.QuickSight.Types.AxisDisplayRange
+import Amazonka.QuickSight.Types.AxisScale
+
+-- | The options for an axis with a numeric field.
+--
+-- /See:/ 'newNumericAxisOptions' smart constructor.
+data NumericAxisOptions = NumericAxisOptions'
+  { -- | The range setup of a numeric axis.
+    range :: Prelude.Maybe AxisDisplayRange,
+    -- | The scale setup of a numeric axis.
+    scale :: Prelude.Maybe AxisScale
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericAxisOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'range', 'numericAxisOptions_range' - The range setup of a numeric axis.
+--
+-- 'scale', 'numericAxisOptions_scale' - The scale setup of a numeric axis.
+newNumericAxisOptions ::
+  NumericAxisOptions
+newNumericAxisOptions =
+  NumericAxisOptions'
+    { range = Prelude.Nothing,
+      scale = Prelude.Nothing
+    }
+
+-- | The range setup of a numeric axis.
+numericAxisOptions_range :: Lens.Lens' NumericAxisOptions (Prelude.Maybe AxisDisplayRange)
+numericAxisOptions_range = Lens.lens (\NumericAxisOptions' {range} -> range) (\s@NumericAxisOptions' {} a -> s {range = a} :: NumericAxisOptions)
+
+-- | The scale setup of a numeric axis.
+numericAxisOptions_scale :: Lens.Lens' NumericAxisOptions (Prelude.Maybe AxisScale)
+numericAxisOptions_scale = Lens.lens (\NumericAxisOptions' {scale} -> scale) (\s@NumericAxisOptions' {} a -> s {scale = a} :: NumericAxisOptions)
+
+instance Data.FromJSON NumericAxisOptions where
+  parseJSON =
+    Data.withObject
+      "NumericAxisOptions"
+      ( \x ->
+          NumericAxisOptions'
+            Prelude.<$> (x Data..:? "Range")
+            Prelude.<*> (x Data..:? "Scale")
+      )
+
+instance Prelude.Hashable NumericAxisOptions where
+  hashWithSalt _salt NumericAxisOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` range
+      `Prelude.hashWithSalt` scale
+
+instance Prelude.NFData NumericAxisOptions where
+  rnf NumericAxisOptions' {..} =
+    Prelude.rnf range `Prelude.seq` Prelude.rnf scale
+
+instance Data.ToJSON NumericAxisOptions where
+  toJSON NumericAxisOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Range" Data..=) Prelude.<$> range,
+            ("Scale" Data..=) Prelude.<$> scale
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericEqualityDrillDownFilter.hs b/gen/Amazonka/QuickSight/Types/NumericEqualityDrillDownFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericEqualityDrillDownFilter.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.QuickSight.Types.NumericEqualityDrillDownFilter
+-- 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.QuickSight.Types.NumericEqualityDrillDownFilter 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.QuickSight.Types.ColumnIdentifier
+
+-- | The category drill down filter.
+--
+-- /See:/ 'newNumericEqualityDrillDownFilter' smart constructor.
+data NumericEqualityDrillDownFilter = NumericEqualityDrillDownFilter'
+  { -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | The value of the double input numeric drill down filter.
+    value :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericEqualityDrillDownFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'column', 'numericEqualityDrillDownFilter_column' - The column that the filter is applied to.
+--
+-- 'value', 'numericEqualityDrillDownFilter_value' - The value of the double input numeric drill down filter.
+newNumericEqualityDrillDownFilter ::
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'value'
+  Prelude.Double ->
+  NumericEqualityDrillDownFilter
+newNumericEqualityDrillDownFilter pColumn_ pValue_ =
+  NumericEqualityDrillDownFilter'
+    { column = pColumn_,
+      value = pValue_
+    }
+
+-- | The column that the filter is applied to.
+numericEqualityDrillDownFilter_column :: Lens.Lens' NumericEqualityDrillDownFilter ColumnIdentifier
+numericEqualityDrillDownFilter_column = Lens.lens (\NumericEqualityDrillDownFilter' {column} -> column) (\s@NumericEqualityDrillDownFilter' {} a -> s {column = a} :: NumericEqualityDrillDownFilter)
+
+-- | The value of the double input numeric drill down filter.
+numericEqualityDrillDownFilter_value :: Lens.Lens' NumericEqualityDrillDownFilter Prelude.Double
+numericEqualityDrillDownFilter_value = Lens.lens (\NumericEqualityDrillDownFilter' {value} -> value) (\s@NumericEqualityDrillDownFilter' {} a -> s {value = a} :: NumericEqualityDrillDownFilter)
+
+instance Data.FromJSON NumericEqualityDrillDownFilter where
+  parseJSON =
+    Data.withObject
+      "NumericEqualityDrillDownFilter"
+      ( \x ->
+          NumericEqualityDrillDownFilter'
+            Prelude.<$> (x Data..: "Column")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance
+  Prelude.Hashable
+    NumericEqualityDrillDownFilter
+  where
+  hashWithSalt
+    _salt
+    NumericEqualityDrillDownFilter' {..} =
+      _salt
+        `Prelude.hashWithSalt` column
+        `Prelude.hashWithSalt` value
+
+instance
+  Prelude.NFData
+    NumericEqualityDrillDownFilter
+  where
+  rnf NumericEqualityDrillDownFilter' {..} =
+    Prelude.rnf column `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON NumericEqualityDrillDownFilter where
+  toJSON NumericEqualityDrillDownFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Column" Data..= column),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericEqualityFilter.hs b/gen/Amazonka/QuickSight/Types/NumericEqualityFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericEqualityFilter.hs
@@ -0,0 +1,225 @@
+{-# 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.QuickSight.Types.NumericEqualityFilter
+-- 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.QuickSight.Types.NumericEqualityFilter 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.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.FilterNullOption
+import Amazonka.QuickSight.Types.NumericEqualityMatchOperator
+import Amazonka.QuickSight.Types.NumericFilterSelectAllOptions
+
+-- | A @NumericEqualityFilter@ filters values that are equal to the specified
+-- value.
+--
+-- /See:/ 'newNumericEqualityFilter' smart constructor.
+data NumericEqualityFilter = NumericEqualityFilter'
+  { -- | The aggregation function of the filter.
+    aggregationFunction :: Prelude.Maybe AggregationFunction,
+    -- | The parameter whose value should be used for the filter value.
+    parameterName :: Prelude.Maybe Prelude.Text,
+    -- | Select all of the values. Null is not the assigned value of select all.
+    --
+    -- -   @FILTER_ALL_VALUES@
+    selectAllOptions :: Prelude.Maybe NumericFilterSelectAllOptions,
+    -- | The input value.
+    value :: Prelude.Maybe Prelude.Double,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | The match operator that is used to determine if a filter should be
+    -- applied.
+    matchOperator :: NumericEqualityMatchOperator,
+    -- | This option determines how null values should be treated when filtering
+    -- data.
+    --
+    -- -   @ALL_VALUES@: Include null values in filtered results.
+    --
+    -- -   @NULLS_ONLY@: Only include null values in filtered results.
+    --
+    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+    nullOption :: FilterNullOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericEqualityFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationFunction', 'numericEqualityFilter_aggregationFunction' - The aggregation function of the filter.
+--
+-- 'parameterName', 'numericEqualityFilter_parameterName' - The parameter whose value should be used for the filter value.
+--
+-- 'selectAllOptions', 'numericEqualityFilter_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+--
+-- 'value', 'numericEqualityFilter_value' - The input value.
+--
+-- 'filterId', 'numericEqualityFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'numericEqualityFilter_column' - The column that the filter is applied to.
+--
+-- 'matchOperator', 'numericEqualityFilter_matchOperator' - The match operator that is used to determine if a filter should be
+-- applied.
+--
+-- 'nullOption', 'numericEqualityFilter_nullOption' - This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+newNumericEqualityFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'matchOperator'
+  NumericEqualityMatchOperator ->
+  -- | 'nullOption'
+  FilterNullOption ->
+  NumericEqualityFilter
+newNumericEqualityFilter
+  pFilterId_
+  pColumn_
+  pMatchOperator_
+  pNullOption_ =
+    NumericEqualityFilter'
+      { aggregationFunction =
+          Prelude.Nothing,
+        parameterName = Prelude.Nothing,
+        selectAllOptions = Prelude.Nothing,
+        value = Prelude.Nothing,
+        filterId = pFilterId_,
+        column = pColumn_,
+        matchOperator = pMatchOperator_,
+        nullOption = pNullOption_
+      }
+
+-- | The aggregation function of the filter.
+numericEqualityFilter_aggregationFunction :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe AggregationFunction)
+numericEqualityFilter_aggregationFunction = Lens.lens (\NumericEqualityFilter' {aggregationFunction} -> aggregationFunction) (\s@NumericEqualityFilter' {} a -> s {aggregationFunction = a} :: NumericEqualityFilter)
+
+-- | The parameter whose value should be used for the filter value.
+numericEqualityFilter_parameterName :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe Prelude.Text)
+numericEqualityFilter_parameterName = Lens.lens (\NumericEqualityFilter' {parameterName} -> parameterName) (\s@NumericEqualityFilter' {} a -> s {parameterName = a} :: NumericEqualityFilter)
+
+-- | Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+numericEqualityFilter_selectAllOptions :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe NumericFilterSelectAllOptions)
+numericEqualityFilter_selectAllOptions = Lens.lens (\NumericEqualityFilter' {selectAllOptions} -> selectAllOptions) (\s@NumericEqualityFilter' {} a -> s {selectAllOptions = a} :: NumericEqualityFilter)
+
+-- | The input value.
+numericEqualityFilter_value :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe Prelude.Double)
+numericEqualityFilter_value = Lens.lens (\NumericEqualityFilter' {value} -> value) (\s@NumericEqualityFilter' {} a -> s {value = a} :: NumericEqualityFilter)
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+numericEqualityFilter_filterId :: Lens.Lens' NumericEqualityFilter Prelude.Text
+numericEqualityFilter_filterId = Lens.lens (\NumericEqualityFilter' {filterId} -> filterId) (\s@NumericEqualityFilter' {} a -> s {filterId = a} :: NumericEqualityFilter)
+
+-- | The column that the filter is applied to.
+numericEqualityFilter_column :: Lens.Lens' NumericEqualityFilter ColumnIdentifier
+numericEqualityFilter_column = Lens.lens (\NumericEqualityFilter' {column} -> column) (\s@NumericEqualityFilter' {} a -> s {column = a} :: NumericEqualityFilter)
+
+-- | The match operator that is used to determine if a filter should be
+-- applied.
+numericEqualityFilter_matchOperator :: Lens.Lens' NumericEqualityFilter NumericEqualityMatchOperator
+numericEqualityFilter_matchOperator = Lens.lens (\NumericEqualityFilter' {matchOperator} -> matchOperator) (\s@NumericEqualityFilter' {} a -> s {matchOperator = a} :: NumericEqualityFilter)
+
+-- | This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+numericEqualityFilter_nullOption :: Lens.Lens' NumericEqualityFilter FilterNullOption
+numericEqualityFilter_nullOption = Lens.lens (\NumericEqualityFilter' {nullOption} -> nullOption) (\s@NumericEqualityFilter' {} a -> s {nullOption = a} :: NumericEqualityFilter)
+
+instance Data.FromJSON NumericEqualityFilter where
+  parseJSON =
+    Data.withObject
+      "NumericEqualityFilter"
+      ( \x ->
+          NumericEqualityFilter'
+            Prelude.<$> (x Data..:? "AggregationFunction")
+            Prelude.<*> (x Data..:? "ParameterName")
+            Prelude.<*> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+            Prelude.<*> (x Data..: "MatchOperator")
+            Prelude.<*> (x Data..: "NullOption")
+      )
+
+instance Prelude.Hashable NumericEqualityFilter where
+  hashWithSalt _salt NumericEqualityFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationFunction
+      `Prelude.hashWithSalt` parameterName
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` matchOperator
+      `Prelude.hashWithSalt` nullOption
+
+instance Prelude.NFData NumericEqualityFilter where
+  rnf NumericEqualityFilter' {..} =
+    Prelude.rnf aggregationFunction
+      `Prelude.seq` Prelude.rnf parameterName
+      `Prelude.seq` Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+      `Prelude.seq` Prelude.rnf matchOperator
+      `Prelude.seq` Prelude.rnf nullOption
+
+instance Data.ToJSON NumericEqualityFilter where
+  toJSON NumericEqualityFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationFunction" Data..=)
+              Prelude.<$> aggregationFunction,
+            ("ParameterName" Data..=) Prelude.<$> parameterName,
+            ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column),
+            Prelude.Just ("MatchOperator" Data..= matchOperator),
+            Prelude.Just ("NullOption" Data..= nullOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericEqualityMatchOperator.hs b/gen/Amazonka/QuickSight/Types/NumericEqualityMatchOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericEqualityMatchOperator.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.QuickSight.Types.NumericEqualityMatchOperator
+-- 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.QuickSight.Types.NumericEqualityMatchOperator
+  ( NumericEqualityMatchOperator
+      ( ..,
+        NumericEqualityMatchOperator_DOES_NOT_EQUAL,
+        NumericEqualityMatchOperator_EQUALS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NumericEqualityMatchOperator = NumericEqualityMatchOperator'
+  { fromNumericEqualityMatchOperator ::
+      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 NumericEqualityMatchOperator_DOES_NOT_EQUAL :: NumericEqualityMatchOperator
+pattern NumericEqualityMatchOperator_DOES_NOT_EQUAL = NumericEqualityMatchOperator' "DOES_NOT_EQUAL"
+
+pattern NumericEqualityMatchOperator_EQUALS :: NumericEqualityMatchOperator
+pattern NumericEqualityMatchOperator_EQUALS = NumericEqualityMatchOperator' "EQUALS"
+
+{-# COMPLETE
+  NumericEqualityMatchOperator_DOES_NOT_EQUAL,
+  NumericEqualityMatchOperator_EQUALS,
+  NumericEqualityMatchOperator'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NumericFilterSelectAllOptions.hs b/gen/Amazonka/QuickSight/Types/NumericFilterSelectAllOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericFilterSelectAllOptions.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.QuickSight.Types.NumericFilterSelectAllOptions
+-- 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.QuickSight.Types.NumericFilterSelectAllOptions
+  ( NumericFilterSelectAllOptions
+      ( ..,
+        NumericFilterSelectAllOptions_FILTER_ALL_VALUES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NumericFilterSelectAllOptions = NumericFilterSelectAllOptions'
+  { fromNumericFilterSelectAllOptions ::
+      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 NumericFilterSelectAllOptions_FILTER_ALL_VALUES :: NumericFilterSelectAllOptions
+pattern NumericFilterSelectAllOptions_FILTER_ALL_VALUES = NumericFilterSelectAllOptions' "FILTER_ALL_VALUES"
+
+{-# COMPLETE
+  NumericFilterSelectAllOptions_FILTER_ALL_VALUES,
+  NumericFilterSelectAllOptions'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NumericFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/NumericFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericFormatConfiguration.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.NumericFormatConfiguration
+-- 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.QuickSight.Types.NumericFormatConfiguration 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.QuickSight.Types.CurrencyDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.NumberDisplayFormatConfiguration
+import Amazonka.QuickSight.Types.PercentageDisplayFormatConfiguration
+
+-- | The options that determine the numeric format configuration.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newNumericFormatConfiguration' smart constructor.
+data NumericFormatConfiguration = NumericFormatConfiguration'
+  { -- | The options that determine the currency display format configuration.
+    currencyDisplayFormatConfiguration :: Prelude.Maybe CurrencyDisplayFormatConfiguration,
+    -- | The options that determine the number display format configuration.
+    numberDisplayFormatConfiguration :: Prelude.Maybe NumberDisplayFormatConfiguration,
+    -- | The options that determine the percentage display format configuration.
+    percentageDisplayFormatConfiguration :: Prelude.Maybe PercentageDisplayFormatConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'currencyDisplayFormatConfiguration', 'numericFormatConfiguration_currencyDisplayFormatConfiguration' - The options that determine the currency display format configuration.
+--
+-- 'numberDisplayFormatConfiguration', 'numericFormatConfiguration_numberDisplayFormatConfiguration' - The options that determine the number display format configuration.
+--
+-- 'percentageDisplayFormatConfiguration', 'numericFormatConfiguration_percentageDisplayFormatConfiguration' - The options that determine the percentage display format configuration.
+newNumericFormatConfiguration ::
+  NumericFormatConfiguration
+newNumericFormatConfiguration =
+  NumericFormatConfiguration'
+    { currencyDisplayFormatConfiguration =
+        Prelude.Nothing,
+      numberDisplayFormatConfiguration =
+        Prelude.Nothing,
+      percentageDisplayFormatConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The options that determine the currency display format configuration.
+numericFormatConfiguration_currencyDisplayFormatConfiguration :: Lens.Lens' NumericFormatConfiguration (Prelude.Maybe CurrencyDisplayFormatConfiguration)
+numericFormatConfiguration_currencyDisplayFormatConfiguration = Lens.lens (\NumericFormatConfiguration' {currencyDisplayFormatConfiguration} -> currencyDisplayFormatConfiguration) (\s@NumericFormatConfiguration' {} a -> s {currencyDisplayFormatConfiguration = a} :: NumericFormatConfiguration)
+
+-- | The options that determine the number display format configuration.
+numericFormatConfiguration_numberDisplayFormatConfiguration :: Lens.Lens' NumericFormatConfiguration (Prelude.Maybe NumberDisplayFormatConfiguration)
+numericFormatConfiguration_numberDisplayFormatConfiguration = Lens.lens (\NumericFormatConfiguration' {numberDisplayFormatConfiguration} -> numberDisplayFormatConfiguration) (\s@NumericFormatConfiguration' {} a -> s {numberDisplayFormatConfiguration = a} :: NumericFormatConfiguration)
+
+-- | The options that determine the percentage display format configuration.
+numericFormatConfiguration_percentageDisplayFormatConfiguration :: Lens.Lens' NumericFormatConfiguration (Prelude.Maybe PercentageDisplayFormatConfiguration)
+numericFormatConfiguration_percentageDisplayFormatConfiguration = Lens.lens (\NumericFormatConfiguration' {percentageDisplayFormatConfiguration} -> percentageDisplayFormatConfiguration) (\s@NumericFormatConfiguration' {} a -> s {percentageDisplayFormatConfiguration = a} :: NumericFormatConfiguration)
+
+instance Data.FromJSON NumericFormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "NumericFormatConfiguration"
+      ( \x ->
+          NumericFormatConfiguration'
+            Prelude.<$> (x Data..:? "CurrencyDisplayFormatConfiguration")
+            Prelude.<*> (x Data..:? "NumberDisplayFormatConfiguration")
+            Prelude.<*> (x Data..:? "PercentageDisplayFormatConfiguration")
+      )
+
+instance Prelude.Hashable NumericFormatConfiguration where
+  hashWithSalt _salt NumericFormatConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` currencyDisplayFormatConfiguration
+      `Prelude.hashWithSalt` numberDisplayFormatConfiguration
+      `Prelude.hashWithSalt` percentageDisplayFormatConfiguration
+
+instance Prelude.NFData NumericFormatConfiguration where
+  rnf NumericFormatConfiguration' {..} =
+    Prelude.rnf currencyDisplayFormatConfiguration
+      `Prelude.seq` Prelude.rnf numberDisplayFormatConfiguration
+      `Prelude.seq` Prelude.rnf percentageDisplayFormatConfiguration
+
+instance Data.ToJSON NumericFormatConfiguration where
+  toJSON NumericFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CurrencyDisplayFormatConfiguration" Data..=)
+              Prelude.<$> currencyDisplayFormatConfiguration,
+            ("NumberDisplayFormatConfiguration" Data..=)
+              Prelude.<$> numberDisplayFormatConfiguration,
+            ("PercentageDisplayFormatConfiguration" Data..=)
+              Prelude.<$> percentageDisplayFormatConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericRangeFilter.hs b/gen/Amazonka/QuickSight/Types/NumericRangeFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericRangeFilter.hs
@@ -0,0 +1,239 @@
+{-# 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.QuickSight.Types.NumericRangeFilter
+-- 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.QuickSight.Types.NumericRangeFilter 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.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.FilterNullOption
+import Amazonka.QuickSight.Types.NumericFilterSelectAllOptions
+import Amazonka.QuickSight.Types.NumericRangeFilterValue
+
+-- | A @NumericRangeFilter@ filters values that are within the value range.
+--
+-- /See:/ 'newNumericRangeFilter' smart constructor.
+data NumericRangeFilter = NumericRangeFilter'
+  { -- | The aggregation function of the filter.
+    aggregationFunction :: Prelude.Maybe AggregationFunction,
+    -- | Determines whether the maximum value in the filter value range should be
+    -- included in the filtered results.
+    includeMaximum :: Prelude.Maybe Prelude.Bool,
+    -- | Determines whether the minimum value in the filter value range should be
+    -- included in the filtered results.
+    includeMinimum :: Prelude.Maybe Prelude.Bool,
+    -- | The maximum value for the filter value range.
+    rangeMaximum :: Prelude.Maybe NumericRangeFilterValue,
+    -- | The minimum value for the filter value range.
+    rangeMinimum :: Prelude.Maybe NumericRangeFilterValue,
+    -- | Select all of the values. Null is not the assigned value of select all.
+    --
+    -- -   @FILTER_ALL_VALUES@
+    selectAllOptions :: Prelude.Maybe NumericFilterSelectAllOptions,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | This option determines how null values should be treated when filtering
+    -- data.
+    --
+    -- -   @ALL_VALUES@: Include null values in filtered results.
+    --
+    -- -   @NULLS_ONLY@: Only include null values in filtered results.
+    --
+    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+    nullOption :: FilterNullOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericRangeFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationFunction', 'numericRangeFilter_aggregationFunction' - The aggregation function of the filter.
+--
+-- 'includeMaximum', 'numericRangeFilter_includeMaximum' - Determines whether the maximum value in the filter value range should be
+-- included in the filtered results.
+--
+-- 'includeMinimum', 'numericRangeFilter_includeMinimum' - Determines whether the minimum value in the filter value range should be
+-- included in the filtered results.
+--
+-- 'rangeMaximum', 'numericRangeFilter_rangeMaximum' - The maximum value for the filter value range.
+--
+-- 'rangeMinimum', 'numericRangeFilter_rangeMinimum' - The minimum value for the filter value range.
+--
+-- 'selectAllOptions', 'numericRangeFilter_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+--
+-- 'filterId', 'numericRangeFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'numericRangeFilter_column' - The column that the filter is applied to.
+--
+-- 'nullOption', 'numericRangeFilter_nullOption' - This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+newNumericRangeFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'nullOption'
+  FilterNullOption ->
+  NumericRangeFilter
+newNumericRangeFilter
+  pFilterId_
+  pColumn_
+  pNullOption_ =
+    NumericRangeFilter'
+      { aggregationFunction =
+          Prelude.Nothing,
+        includeMaximum = Prelude.Nothing,
+        includeMinimum = Prelude.Nothing,
+        rangeMaximum = Prelude.Nothing,
+        rangeMinimum = Prelude.Nothing,
+        selectAllOptions = Prelude.Nothing,
+        filterId = pFilterId_,
+        column = pColumn_,
+        nullOption = pNullOption_
+      }
+
+-- | The aggregation function of the filter.
+numericRangeFilter_aggregationFunction :: Lens.Lens' NumericRangeFilter (Prelude.Maybe AggregationFunction)
+numericRangeFilter_aggregationFunction = Lens.lens (\NumericRangeFilter' {aggregationFunction} -> aggregationFunction) (\s@NumericRangeFilter' {} a -> s {aggregationFunction = a} :: NumericRangeFilter)
+
+-- | Determines whether the maximum value in the filter value range should be
+-- included in the filtered results.
+numericRangeFilter_includeMaximum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe Prelude.Bool)
+numericRangeFilter_includeMaximum = Lens.lens (\NumericRangeFilter' {includeMaximum} -> includeMaximum) (\s@NumericRangeFilter' {} a -> s {includeMaximum = a} :: NumericRangeFilter)
+
+-- | Determines whether the minimum value in the filter value range should be
+-- included in the filtered results.
+numericRangeFilter_includeMinimum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe Prelude.Bool)
+numericRangeFilter_includeMinimum = Lens.lens (\NumericRangeFilter' {includeMinimum} -> includeMinimum) (\s@NumericRangeFilter' {} a -> s {includeMinimum = a} :: NumericRangeFilter)
+
+-- | The maximum value for the filter value range.
+numericRangeFilter_rangeMaximum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe NumericRangeFilterValue)
+numericRangeFilter_rangeMaximum = Lens.lens (\NumericRangeFilter' {rangeMaximum} -> rangeMaximum) (\s@NumericRangeFilter' {} a -> s {rangeMaximum = a} :: NumericRangeFilter)
+
+-- | The minimum value for the filter value range.
+numericRangeFilter_rangeMinimum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe NumericRangeFilterValue)
+numericRangeFilter_rangeMinimum = Lens.lens (\NumericRangeFilter' {rangeMinimum} -> rangeMinimum) (\s@NumericRangeFilter' {} a -> s {rangeMinimum = a} :: NumericRangeFilter)
+
+-- | Select all of the values. Null is not the assigned value of select all.
+--
+-- -   @FILTER_ALL_VALUES@
+numericRangeFilter_selectAllOptions :: Lens.Lens' NumericRangeFilter (Prelude.Maybe NumericFilterSelectAllOptions)
+numericRangeFilter_selectAllOptions = Lens.lens (\NumericRangeFilter' {selectAllOptions} -> selectAllOptions) (\s@NumericRangeFilter' {} a -> s {selectAllOptions = a} :: NumericRangeFilter)
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+numericRangeFilter_filterId :: Lens.Lens' NumericRangeFilter Prelude.Text
+numericRangeFilter_filterId = Lens.lens (\NumericRangeFilter' {filterId} -> filterId) (\s@NumericRangeFilter' {} a -> s {filterId = a} :: NumericRangeFilter)
+
+-- | The column that the filter is applied to.
+numericRangeFilter_column :: Lens.Lens' NumericRangeFilter ColumnIdentifier
+numericRangeFilter_column = Lens.lens (\NumericRangeFilter' {column} -> column) (\s@NumericRangeFilter' {} a -> s {column = a} :: NumericRangeFilter)
+
+-- | This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+numericRangeFilter_nullOption :: Lens.Lens' NumericRangeFilter FilterNullOption
+numericRangeFilter_nullOption = Lens.lens (\NumericRangeFilter' {nullOption} -> nullOption) (\s@NumericRangeFilter' {} a -> s {nullOption = a} :: NumericRangeFilter)
+
+instance Data.FromJSON NumericRangeFilter where
+  parseJSON =
+    Data.withObject
+      "NumericRangeFilter"
+      ( \x ->
+          NumericRangeFilter'
+            Prelude.<$> (x Data..:? "AggregationFunction")
+            Prelude.<*> (x Data..:? "IncludeMaximum")
+            Prelude.<*> (x Data..:? "IncludeMinimum")
+            Prelude.<*> (x Data..:? "RangeMaximum")
+            Prelude.<*> (x Data..:? "RangeMinimum")
+            Prelude.<*> (x Data..:? "SelectAllOptions")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+            Prelude.<*> (x Data..: "NullOption")
+      )
+
+instance Prelude.Hashable NumericRangeFilter where
+  hashWithSalt _salt NumericRangeFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationFunction
+      `Prelude.hashWithSalt` includeMaximum
+      `Prelude.hashWithSalt` includeMinimum
+      `Prelude.hashWithSalt` rangeMaximum
+      `Prelude.hashWithSalt` rangeMinimum
+      `Prelude.hashWithSalt` selectAllOptions
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` nullOption
+
+instance Prelude.NFData NumericRangeFilter where
+  rnf NumericRangeFilter' {..} =
+    Prelude.rnf aggregationFunction
+      `Prelude.seq` Prelude.rnf includeMaximum
+      `Prelude.seq` Prelude.rnf includeMinimum
+      `Prelude.seq` Prelude.rnf rangeMaximum
+      `Prelude.seq` Prelude.rnf rangeMinimum
+      `Prelude.seq` Prelude.rnf selectAllOptions
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+      `Prelude.seq` Prelude.rnf nullOption
+
+instance Data.ToJSON NumericRangeFilter where
+  toJSON NumericRangeFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationFunction" Data..=)
+              Prelude.<$> aggregationFunction,
+            ("IncludeMaximum" Data..=)
+              Prelude.<$> includeMaximum,
+            ("IncludeMinimum" Data..=)
+              Prelude.<$> includeMinimum,
+            ("RangeMaximum" Data..=) Prelude.<$> rangeMaximum,
+            ("RangeMinimum" Data..=) Prelude.<$> rangeMinimum,
+            ("SelectAllOptions" Data..=)
+              Prelude.<$> selectAllOptions,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column),
+            Prelude.Just ("NullOption" Data..= nullOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericRangeFilterValue.hs b/gen/Amazonka/QuickSight/Types/NumericRangeFilterValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericRangeFilterValue.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.QuickSight.Types.NumericRangeFilterValue
+-- 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.QuickSight.Types.NumericRangeFilterValue 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 value input pf the numeric range filter.
+--
+-- /See:/ 'newNumericRangeFilterValue' smart constructor.
+data NumericRangeFilterValue = NumericRangeFilterValue'
+  { -- | The parameter that is used in the numeric range.
+    parameter :: Prelude.Maybe Prelude.Text,
+    -- | The static value of the numeric range filter.
+    staticValue :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericRangeFilterValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'parameter', 'numericRangeFilterValue_parameter' - The parameter that is used in the numeric range.
+--
+-- 'staticValue', 'numericRangeFilterValue_staticValue' - The static value of the numeric range filter.
+newNumericRangeFilterValue ::
+  NumericRangeFilterValue
+newNumericRangeFilterValue =
+  NumericRangeFilterValue'
+    { parameter =
+        Prelude.Nothing,
+      staticValue = Prelude.Nothing
+    }
+
+-- | The parameter that is used in the numeric range.
+numericRangeFilterValue_parameter :: Lens.Lens' NumericRangeFilterValue (Prelude.Maybe Prelude.Text)
+numericRangeFilterValue_parameter = Lens.lens (\NumericRangeFilterValue' {parameter} -> parameter) (\s@NumericRangeFilterValue' {} a -> s {parameter = a} :: NumericRangeFilterValue)
+
+-- | The static value of the numeric range filter.
+numericRangeFilterValue_staticValue :: Lens.Lens' NumericRangeFilterValue (Prelude.Maybe Prelude.Double)
+numericRangeFilterValue_staticValue = Lens.lens (\NumericRangeFilterValue' {staticValue} -> staticValue) (\s@NumericRangeFilterValue' {} a -> s {staticValue = a} :: NumericRangeFilterValue)
+
+instance Data.FromJSON NumericRangeFilterValue where
+  parseJSON =
+    Data.withObject
+      "NumericRangeFilterValue"
+      ( \x ->
+          NumericRangeFilterValue'
+            Prelude.<$> (x Data..:? "Parameter")
+            Prelude.<*> (x Data..:? "StaticValue")
+      )
+
+instance Prelude.Hashable NumericRangeFilterValue where
+  hashWithSalt _salt NumericRangeFilterValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` parameter
+      `Prelude.hashWithSalt` staticValue
+
+instance Prelude.NFData NumericRangeFilterValue where
+  rnf NumericRangeFilterValue' {..} =
+    Prelude.rnf parameter
+      `Prelude.seq` Prelude.rnf staticValue
+
+instance Data.ToJSON NumericRangeFilterValue where
+  toJSON NumericRangeFilterValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Parameter" Data..=) Prelude.<$> parameter,
+            ("StaticValue" Data..=) Prelude.<$> staticValue
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericSeparatorConfiguration.hs b/gen/Amazonka/QuickSight/Types/NumericSeparatorConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericSeparatorConfiguration.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+-- 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.QuickSight.Types.NumericSeparatorConfiguration 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.QuickSight.Types.NumericSeparatorSymbol
+import Amazonka.QuickSight.Types.ThousandSeparatorOptions
+
+-- | The options that determine the numeric separator configuration.
+--
+-- /See:/ 'newNumericSeparatorConfiguration' smart constructor.
+data NumericSeparatorConfiguration = NumericSeparatorConfiguration'
+  { -- | Determines the decimal separator.
+    decimalSeparator :: Prelude.Maybe NumericSeparatorSymbol,
+    -- | The options that determine the thousands separator configuration.
+    thousandsSeparator :: Prelude.Maybe ThousandSeparatorOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericSeparatorConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'decimalSeparator', 'numericSeparatorConfiguration_decimalSeparator' - Determines the decimal separator.
+--
+-- 'thousandsSeparator', 'numericSeparatorConfiguration_thousandsSeparator' - The options that determine the thousands separator configuration.
+newNumericSeparatorConfiguration ::
+  NumericSeparatorConfiguration
+newNumericSeparatorConfiguration =
+  NumericSeparatorConfiguration'
+    { decimalSeparator =
+        Prelude.Nothing,
+      thousandsSeparator = Prelude.Nothing
+    }
+
+-- | Determines the decimal separator.
+numericSeparatorConfiguration_decimalSeparator :: Lens.Lens' NumericSeparatorConfiguration (Prelude.Maybe NumericSeparatorSymbol)
+numericSeparatorConfiguration_decimalSeparator = Lens.lens (\NumericSeparatorConfiguration' {decimalSeparator} -> decimalSeparator) (\s@NumericSeparatorConfiguration' {} a -> s {decimalSeparator = a} :: NumericSeparatorConfiguration)
+
+-- | The options that determine the thousands separator configuration.
+numericSeparatorConfiguration_thousandsSeparator :: Lens.Lens' NumericSeparatorConfiguration (Prelude.Maybe ThousandSeparatorOptions)
+numericSeparatorConfiguration_thousandsSeparator = Lens.lens (\NumericSeparatorConfiguration' {thousandsSeparator} -> thousandsSeparator) (\s@NumericSeparatorConfiguration' {} a -> s {thousandsSeparator = a} :: NumericSeparatorConfiguration)
+
+instance Data.FromJSON NumericSeparatorConfiguration where
+  parseJSON =
+    Data.withObject
+      "NumericSeparatorConfiguration"
+      ( \x ->
+          NumericSeparatorConfiguration'
+            Prelude.<$> (x Data..:? "DecimalSeparator")
+            Prelude.<*> (x Data..:? "ThousandsSeparator")
+      )
+
+instance
+  Prelude.Hashable
+    NumericSeparatorConfiguration
+  where
+  hashWithSalt _salt NumericSeparatorConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` decimalSeparator
+      `Prelude.hashWithSalt` thousandsSeparator
+
+instance Prelude.NFData NumericSeparatorConfiguration where
+  rnf NumericSeparatorConfiguration' {..} =
+    Prelude.rnf decimalSeparator
+      `Prelude.seq` Prelude.rnf thousandsSeparator
+
+instance Data.ToJSON NumericSeparatorConfiguration where
+  toJSON NumericSeparatorConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DecimalSeparator" Data..=)
+              Prelude.<$> decimalSeparator,
+            ("ThousandsSeparator" Data..=)
+              Prelude.<$> thousandsSeparator
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericSeparatorSymbol.hs b/gen/Amazonka/QuickSight/Types/NumericSeparatorSymbol.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericSeparatorSymbol.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.QuickSight.Types.NumericSeparatorSymbol
+-- 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.QuickSight.Types.NumericSeparatorSymbol
+  ( NumericSeparatorSymbol
+      ( ..,
+        NumericSeparatorSymbol_COMMA,
+        NumericSeparatorSymbol_DOT,
+        NumericSeparatorSymbol_SPACE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NumericSeparatorSymbol = NumericSeparatorSymbol'
+  { fromNumericSeparatorSymbol ::
+      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 NumericSeparatorSymbol_COMMA :: NumericSeparatorSymbol
+pattern NumericSeparatorSymbol_COMMA = NumericSeparatorSymbol' "COMMA"
+
+pattern NumericSeparatorSymbol_DOT :: NumericSeparatorSymbol
+pattern NumericSeparatorSymbol_DOT = NumericSeparatorSymbol' "DOT"
+
+pattern NumericSeparatorSymbol_SPACE :: NumericSeparatorSymbol
+pattern NumericSeparatorSymbol_SPACE = NumericSeparatorSymbol' "SPACE"
+
+{-# COMPLETE
+  NumericSeparatorSymbol_COMMA,
+  NumericSeparatorSymbol_DOT,
+  NumericSeparatorSymbol_SPACE,
+  NumericSeparatorSymbol'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/NumericalAggregationFunction.hs b/gen/Amazonka/QuickSight/Types/NumericalAggregationFunction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericalAggregationFunction.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.QuickSight.Types.NumericalAggregationFunction
+-- 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.QuickSight.Types.NumericalAggregationFunction 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.QuickSight.Types.PercentileAggregation
+import Amazonka.QuickSight.Types.SimpleNumericalAggregationFunction
+
+-- | Aggregation for numerical values.
+--
+-- /See:/ 'newNumericalAggregationFunction' smart constructor.
+data NumericalAggregationFunction = NumericalAggregationFunction'
+  { -- | An aggregation based on the percentile of values in a dimension or
+    -- measure.
+    percentileAggregation :: Prelude.Maybe PercentileAggregation,
+    -- | Built-in aggregation functions for numerical values.
+    --
+    -- -   @SUM@: The sum of a dimension or measure.
+    --
+    -- -   @AVERAGE@: The average of a dimension or measure.
+    --
+    -- -   @MIN@: The minimum value of a dimension or measure.
+    --
+    -- -   @MAX@: The maximum value of a dimension or measure.
+    --
+    -- -   @COUNT@: The count of a dimension or measure.
+    --
+    -- -   @DISTINCT_COUNT@: The count of distinct values in a dimension or
+    --     measure.
+    --
+    -- -   @VAR@: The variance of a dimension or measure.
+    --
+    -- -   @VARP@: The partitioned variance of a dimension or measure.
+    --
+    -- -   @STDEV@: The standard deviation of a dimension or measure.
+    --
+    -- -   @STDEVP@: The partitioned standard deviation of a dimension or
+    --     measure.
+    --
+    -- -   @MEDIAN@: The median value of a dimension or measure.
+    simpleNumericalAggregation :: Prelude.Maybe SimpleNumericalAggregationFunction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericalAggregationFunction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'percentileAggregation', 'numericalAggregationFunction_percentileAggregation' - An aggregation based on the percentile of values in a dimension or
+-- measure.
+--
+-- 'simpleNumericalAggregation', 'numericalAggregationFunction_simpleNumericalAggregation' - Built-in aggregation functions for numerical values.
+--
+-- -   @SUM@: The sum of a dimension or measure.
+--
+-- -   @AVERAGE@: The average of a dimension or measure.
+--
+-- -   @MIN@: The minimum value of a dimension or measure.
+--
+-- -   @MAX@: The maximum value of a dimension or measure.
+--
+-- -   @COUNT@: The count of a dimension or measure.
+--
+-- -   @DISTINCT_COUNT@: The count of distinct values in a dimension or
+--     measure.
+--
+-- -   @VAR@: The variance of a dimension or measure.
+--
+-- -   @VARP@: The partitioned variance of a dimension or measure.
+--
+-- -   @STDEV@: The standard deviation of a dimension or measure.
+--
+-- -   @STDEVP@: The partitioned standard deviation of a dimension or
+--     measure.
+--
+-- -   @MEDIAN@: The median value of a dimension or measure.
+newNumericalAggregationFunction ::
+  NumericalAggregationFunction
+newNumericalAggregationFunction =
+  NumericalAggregationFunction'
+    { percentileAggregation =
+        Prelude.Nothing,
+      simpleNumericalAggregation = Prelude.Nothing
+    }
+
+-- | An aggregation based on the percentile of values in a dimension or
+-- measure.
+numericalAggregationFunction_percentileAggregation :: Lens.Lens' NumericalAggregationFunction (Prelude.Maybe PercentileAggregation)
+numericalAggregationFunction_percentileAggregation = Lens.lens (\NumericalAggregationFunction' {percentileAggregation} -> percentileAggregation) (\s@NumericalAggregationFunction' {} a -> s {percentileAggregation = a} :: NumericalAggregationFunction)
+
+-- | Built-in aggregation functions for numerical values.
+--
+-- -   @SUM@: The sum of a dimension or measure.
+--
+-- -   @AVERAGE@: The average of a dimension or measure.
+--
+-- -   @MIN@: The minimum value of a dimension or measure.
+--
+-- -   @MAX@: The maximum value of a dimension or measure.
+--
+-- -   @COUNT@: The count of a dimension or measure.
+--
+-- -   @DISTINCT_COUNT@: The count of distinct values in a dimension or
+--     measure.
+--
+-- -   @VAR@: The variance of a dimension or measure.
+--
+-- -   @VARP@: The partitioned variance of a dimension or measure.
+--
+-- -   @STDEV@: The standard deviation of a dimension or measure.
+--
+-- -   @STDEVP@: The partitioned standard deviation of a dimension or
+--     measure.
+--
+-- -   @MEDIAN@: The median value of a dimension or measure.
+numericalAggregationFunction_simpleNumericalAggregation :: Lens.Lens' NumericalAggregationFunction (Prelude.Maybe SimpleNumericalAggregationFunction)
+numericalAggregationFunction_simpleNumericalAggregation = Lens.lens (\NumericalAggregationFunction' {simpleNumericalAggregation} -> simpleNumericalAggregation) (\s@NumericalAggregationFunction' {} a -> s {simpleNumericalAggregation = a} :: NumericalAggregationFunction)
+
+instance Data.FromJSON NumericalAggregationFunction where
+  parseJSON =
+    Data.withObject
+      "NumericalAggregationFunction"
+      ( \x ->
+          NumericalAggregationFunction'
+            Prelude.<$> (x Data..:? "PercentileAggregation")
+            Prelude.<*> (x Data..:? "SimpleNumericalAggregation")
+      )
+
+instance
+  Prelude.Hashable
+    NumericalAggregationFunction
+  where
+  hashWithSalt _salt NumericalAggregationFunction' {..} =
+    _salt
+      `Prelude.hashWithSalt` percentileAggregation
+      `Prelude.hashWithSalt` simpleNumericalAggregation
+
+instance Prelude.NFData NumericalAggregationFunction where
+  rnf NumericalAggregationFunction' {..} =
+    Prelude.rnf percentileAggregation
+      `Prelude.seq` Prelude.rnf simpleNumericalAggregation
+
+instance Data.ToJSON NumericalAggregationFunction where
+  toJSON NumericalAggregationFunction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PercentileAggregation" Data..=)
+              Prelude.<$> percentileAggregation,
+            ("SimpleNumericalAggregation" Data..=)
+              Prelude.<$> simpleNumericalAggregation
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericalDimensionField.hs b/gen/Amazonka/QuickSight/Types/NumericalDimensionField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericalDimensionField.hs
@@ -0,0 +1,127 @@
+{-# 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.QuickSight.Types.NumericalDimensionField
+-- 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.QuickSight.Types.NumericalDimensionField 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.NumberFormatConfiguration
+
+-- | The dimension type field with numerical type columns.
+--
+-- /See:/ 'newNumericalDimensionField' smart constructor.
+data NumericalDimensionField = NumericalDimensionField'
+  { -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe NumberFormatConfiguration,
+    -- | The custom hierarchy ID.
+    hierarchyId :: Prelude.Maybe Prelude.Text,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @NumericalDimensionField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericalDimensionField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatConfiguration', 'numericalDimensionField_formatConfiguration' - The format configuration of the field.
+--
+-- 'hierarchyId', 'numericalDimensionField_hierarchyId' - The custom hierarchy ID.
+--
+-- 'fieldId', 'numericalDimensionField_fieldId' - The custom field ID.
+--
+-- 'column', 'numericalDimensionField_column' - The column that is used in the @NumericalDimensionField@.
+newNumericalDimensionField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  NumericalDimensionField
+newNumericalDimensionField pFieldId_ pColumn_ =
+  NumericalDimensionField'
+    { formatConfiguration =
+        Prelude.Nothing,
+      hierarchyId = Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The format configuration of the field.
+numericalDimensionField_formatConfiguration :: Lens.Lens' NumericalDimensionField (Prelude.Maybe NumberFormatConfiguration)
+numericalDimensionField_formatConfiguration = Lens.lens (\NumericalDimensionField' {formatConfiguration} -> formatConfiguration) (\s@NumericalDimensionField' {} a -> s {formatConfiguration = a} :: NumericalDimensionField)
+
+-- | The custom hierarchy ID.
+numericalDimensionField_hierarchyId :: Lens.Lens' NumericalDimensionField (Prelude.Maybe Prelude.Text)
+numericalDimensionField_hierarchyId = Lens.lens (\NumericalDimensionField' {hierarchyId} -> hierarchyId) (\s@NumericalDimensionField' {} a -> s {hierarchyId = a} :: NumericalDimensionField)
+
+-- | The custom field ID.
+numericalDimensionField_fieldId :: Lens.Lens' NumericalDimensionField Prelude.Text
+numericalDimensionField_fieldId = Lens.lens (\NumericalDimensionField' {fieldId} -> fieldId) (\s@NumericalDimensionField' {} a -> s {fieldId = a} :: NumericalDimensionField)
+
+-- | The column that is used in the @NumericalDimensionField@.
+numericalDimensionField_column :: Lens.Lens' NumericalDimensionField ColumnIdentifier
+numericalDimensionField_column = Lens.lens (\NumericalDimensionField' {column} -> column) (\s@NumericalDimensionField' {} a -> s {column = a} :: NumericalDimensionField)
+
+instance Data.FromJSON NumericalDimensionField where
+  parseJSON =
+    Data.withObject
+      "NumericalDimensionField"
+      ( \x ->
+          NumericalDimensionField'
+            Prelude.<$> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..:? "HierarchyId")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable NumericalDimensionField where
+  hashWithSalt _salt NumericalDimensionField' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` hierarchyId
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData NumericalDimensionField where
+  rnf NumericalDimensionField' {..} =
+    Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf hierarchyId
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON NumericalDimensionField where
+  toJSON NumericalDimensionField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            ("HierarchyId" Data..=) Prelude.<$> hierarchyId,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/NumericalMeasureField.hs b/gen/Amazonka/QuickSight/Types/NumericalMeasureField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/NumericalMeasureField.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.NumericalMeasureField
+-- 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.QuickSight.Types.NumericalMeasureField 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.NumberFormatConfiguration
+import Amazonka.QuickSight.Types.NumericalAggregationFunction
+
+-- | The measure type field with numerical type columns.
+--
+-- /See:/ 'newNumericalMeasureField' smart constructor.
+data NumericalMeasureField = NumericalMeasureField'
+  { -- | The aggregation function of the measure field.
+    aggregationFunction :: Prelude.Maybe NumericalAggregationFunction,
+    -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe NumberFormatConfiguration,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @NumericalMeasureField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NumericalMeasureField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationFunction', 'numericalMeasureField_aggregationFunction' - The aggregation function of the measure field.
+--
+-- 'formatConfiguration', 'numericalMeasureField_formatConfiguration' - The format configuration of the field.
+--
+-- 'fieldId', 'numericalMeasureField_fieldId' - The custom field ID.
+--
+-- 'column', 'numericalMeasureField_column' - The column that is used in the @NumericalMeasureField@.
+newNumericalMeasureField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  NumericalMeasureField
+newNumericalMeasureField pFieldId_ pColumn_ =
+  NumericalMeasureField'
+    { aggregationFunction =
+        Prelude.Nothing,
+      formatConfiguration = Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The aggregation function of the measure field.
+numericalMeasureField_aggregationFunction :: Lens.Lens' NumericalMeasureField (Prelude.Maybe NumericalAggregationFunction)
+numericalMeasureField_aggregationFunction = Lens.lens (\NumericalMeasureField' {aggregationFunction} -> aggregationFunction) (\s@NumericalMeasureField' {} a -> s {aggregationFunction = a} :: NumericalMeasureField)
+
+-- | The format configuration of the field.
+numericalMeasureField_formatConfiguration :: Lens.Lens' NumericalMeasureField (Prelude.Maybe NumberFormatConfiguration)
+numericalMeasureField_formatConfiguration = Lens.lens (\NumericalMeasureField' {formatConfiguration} -> formatConfiguration) (\s@NumericalMeasureField' {} a -> s {formatConfiguration = a} :: NumericalMeasureField)
+
+-- | The custom field ID.
+numericalMeasureField_fieldId :: Lens.Lens' NumericalMeasureField Prelude.Text
+numericalMeasureField_fieldId = Lens.lens (\NumericalMeasureField' {fieldId} -> fieldId) (\s@NumericalMeasureField' {} a -> s {fieldId = a} :: NumericalMeasureField)
+
+-- | The column that is used in the @NumericalMeasureField@.
+numericalMeasureField_column :: Lens.Lens' NumericalMeasureField ColumnIdentifier
+numericalMeasureField_column = Lens.lens (\NumericalMeasureField' {column} -> column) (\s@NumericalMeasureField' {} a -> s {column = a} :: NumericalMeasureField)
+
+instance Data.FromJSON NumericalMeasureField where
+  parseJSON =
+    Data.withObject
+      "NumericalMeasureField"
+      ( \x ->
+          NumericalMeasureField'
+            Prelude.<$> (x Data..:? "AggregationFunction")
+            Prelude.<*> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable NumericalMeasureField where
+  hashWithSalt _salt NumericalMeasureField' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationFunction
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData NumericalMeasureField where
+  rnf NumericalMeasureField' {..} =
+    Prelude.rnf aggregationFunction
+      `Prelude.seq` Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON NumericalMeasureField where
+  toJSON NumericalMeasureField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AggregationFunction" Data..=)
+              Prelude.<$> aggregationFunction,
+            ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/OracleParameters.hs b/gen/Amazonka/QuickSight/Types/OracleParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/OracleParameters.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.QuickSight.Types.OracleParameters
+-- 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.QuickSight.Types.OracleParameters 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 parameters for Oracle.
+--
+-- /See:/ 'newOracleParameters' smart constructor.
+data OracleParameters = OracleParameters'
+  { -- | An Oracle host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OracleParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'oracleParameters_host' - An Oracle host.
+--
+-- 'port', 'oracleParameters_port' - Port.
+--
+-- 'database', 'oracleParameters_database' - Database.
+newOracleParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  OracleParameters
+newOracleParameters pHost_ pPort_ pDatabase_ =
+  OracleParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | An Oracle host.
+oracleParameters_host :: Lens.Lens' OracleParameters Prelude.Text
+oracleParameters_host = Lens.lens (\OracleParameters' {host} -> host) (\s@OracleParameters' {} a -> s {host = a} :: OracleParameters)
+
+-- | Port.
+oracleParameters_port :: Lens.Lens' OracleParameters Prelude.Natural
+oracleParameters_port = Lens.lens (\OracleParameters' {port} -> port) (\s@OracleParameters' {} a -> s {port = a} :: OracleParameters)
+
+-- | Database.
+oracleParameters_database :: Lens.Lens' OracleParameters Prelude.Text
+oracleParameters_database = Lens.lens (\OracleParameters' {database} -> database) (\s@OracleParameters' {} a -> s {database = a} :: OracleParameters)
+
+instance Data.FromJSON OracleParameters where
+  parseJSON =
+    Data.withObject
+      "OracleParameters"
+      ( \x ->
+          OracleParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable OracleParameters where
+  hashWithSalt _salt OracleParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData OracleParameters where
+  rnf OracleParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON OracleParameters where
+  toJSON OracleParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/OtherCategories.hs b/gen/Amazonka/QuickSight/Types/OtherCategories.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/OtherCategories.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.QuickSight.Types.OtherCategories
+-- 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.QuickSight.Types.OtherCategories
+  ( OtherCategories
+      ( ..,
+        OtherCategories_EXCLUDE,
+        OtherCategories_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OtherCategories = OtherCategories'
+  { fromOtherCategories ::
+      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 OtherCategories_EXCLUDE :: OtherCategories
+pattern OtherCategories_EXCLUDE = OtherCategories' "EXCLUDE"
+
+pattern OtherCategories_INCLUDE :: OtherCategories
+pattern OtherCategories_INCLUDE = OtherCategories' "INCLUDE"
+
+{-# COMPLETE
+  OtherCategories_EXCLUDE,
+  OtherCategories_INCLUDE,
+  OtherCategories'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/OutputColumn.hs b/gen/Amazonka/QuickSight/Types/OutputColumn.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/OutputColumn.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.OutputColumn
+-- 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.QuickSight.Types.OutputColumn 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.QuickSight.Types.ColumnDataType
+
+-- | Output column.
+--
+-- /See:/ 'newOutputColumn' smart constructor.
+data OutputColumn = OutputColumn'
+  { -- | A description for a column.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | A display name for the dataset.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Type.
+    type' :: Prelude.Maybe ColumnDataType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputColumn' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'outputColumn_description' - A description for a column.
+--
+-- 'name', 'outputColumn_name' - A display name for the dataset.
+--
+-- 'type'', 'outputColumn_type' - Type.
+newOutputColumn ::
+  OutputColumn
+newOutputColumn =
+  OutputColumn'
+    { description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | A description for a column.
+outputColumn_description :: Lens.Lens' OutputColumn (Prelude.Maybe Prelude.Text)
+outputColumn_description = Lens.lens (\OutputColumn' {description} -> description) (\s@OutputColumn' {} a -> s {description = a} :: OutputColumn)
+
+-- | A display name for the dataset.
+outputColumn_name :: Lens.Lens' OutputColumn (Prelude.Maybe Prelude.Text)
+outputColumn_name = Lens.lens (\OutputColumn' {name} -> name) (\s@OutputColumn' {} a -> s {name = a} :: OutputColumn)
+
+-- | Type.
+outputColumn_type :: Lens.Lens' OutputColumn (Prelude.Maybe ColumnDataType)
+outputColumn_type = Lens.lens (\OutputColumn' {type'} -> type') (\s@OutputColumn' {} a -> s {type' = a} :: OutputColumn)
+
+instance Data.FromJSON OutputColumn where
+  parseJSON =
+    Data.withObject
+      "OutputColumn"
+      ( \x ->
+          OutputColumn'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable OutputColumn where
+  hashWithSalt _salt OutputColumn' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData OutputColumn where
+  rnf OutputColumn' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/QuickSight/Types/PaginationConfiguration.hs b/gen/Amazonka/QuickSight/Types/PaginationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PaginationConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PaginationConfiguration
+-- 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.QuickSight.Types.PaginationConfiguration 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 pagination configuration for a table visual or boxplot.
+--
+-- /See:/ 'newPaginationConfiguration' smart constructor.
+data PaginationConfiguration = PaginationConfiguration'
+  { -- | Indicates how many items render in one page.
+    pageSize :: Prelude.Integer,
+    -- | Indicates the page number.
+    pageNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PaginationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pageSize', 'paginationConfiguration_pageSize' - Indicates how many items render in one page.
+--
+-- 'pageNumber', 'paginationConfiguration_pageNumber' - Indicates the page number.
+newPaginationConfiguration ::
+  -- | 'pageSize'
+  Prelude.Integer ->
+  -- | 'pageNumber'
+  Prelude.Natural ->
+  PaginationConfiguration
+newPaginationConfiguration pPageSize_ pPageNumber_ =
+  PaginationConfiguration'
+    { pageSize = pPageSize_,
+      pageNumber = pPageNumber_
+    }
+
+-- | Indicates how many items render in one page.
+paginationConfiguration_pageSize :: Lens.Lens' PaginationConfiguration Prelude.Integer
+paginationConfiguration_pageSize = Lens.lens (\PaginationConfiguration' {pageSize} -> pageSize) (\s@PaginationConfiguration' {} a -> s {pageSize = a} :: PaginationConfiguration)
+
+-- | Indicates the page number.
+paginationConfiguration_pageNumber :: Lens.Lens' PaginationConfiguration Prelude.Natural
+paginationConfiguration_pageNumber = Lens.lens (\PaginationConfiguration' {pageNumber} -> pageNumber) (\s@PaginationConfiguration' {} a -> s {pageNumber = a} :: PaginationConfiguration)
+
+instance Data.FromJSON PaginationConfiguration where
+  parseJSON =
+    Data.withObject
+      "PaginationConfiguration"
+      ( \x ->
+          PaginationConfiguration'
+            Prelude.<$> (x Data..: "PageSize")
+            Prelude.<*> (x Data..: "PageNumber")
+      )
+
+instance Prelude.Hashable PaginationConfiguration where
+  hashWithSalt _salt PaginationConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` pageSize
+      `Prelude.hashWithSalt` pageNumber
+
+instance Prelude.NFData PaginationConfiguration where
+  rnf PaginationConfiguration' {..} =
+    Prelude.rnf pageSize
+      `Prelude.seq` Prelude.rnf pageNumber
+
+instance Data.ToJSON PaginationConfiguration where
+  toJSON PaginationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("PageSize" Data..= pageSize),
+            Prelude.Just ("PageNumber" Data..= pageNumber)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PanelBorderStyle.hs b/gen/Amazonka/QuickSight/Types/PanelBorderStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PanelBorderStyle.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.QuickSight.Types.PanelBorderStyle
+-- 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.QuickSight.Types.PanelBorderStyle
+  ( PanelBorderStyle
+      ( ..,
+        PanelBorderStyle_DASHED,
+        PanelBorderStyle_DOTTED,
+        PanelBorderStyle_SOLID
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PanelBorderStyle = PanelBorderStyle'
+  { fromPanelBorderStyle ::
+      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 PanelBorderStyle_DASHED :: PanelBorderStyle
+pattern PanelBorderStyle_DASHED = PanelBorderStyle' "DASHED"
+
+pattern PanelBorderStyle_DOTTED :: PanelBorderStyle
+pattern PanelBorderStyle_DOTTED = PanelBorderStyle' "DOTTED"
+
+pattern PanelBorderStyle_SOLID :: PanelBorderStyle
+pattern PanelBorderStyle_SOLID = PanelBorderStyle' "SOLID"
+
+{-# COMPLETE
+  PanelBorderStyle_DASHED,
+  PanelBorderStyle_DOTTED,
+  PanelBorderStyle_SOLID,
+  PanelBorderStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/PanelConfiguration.hs b/gen/Amazonka/QuickSight/Types/PanelConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PanelConfiguration.hs
@@ -0,0 +1,203 @@
+{-# 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.QuickSight.Types.PanelConfiguration
+-- 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.QuickSight.Types.PanelConfiguration 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.QuickSight.Types.PanelBorderStyle
+import Amazonka.QuickSight.Types.PanelTitleOptions
+import Amazonka.QuickSight.Types.Visibility
+
+-- | A collection of options that configure how each panel displays in a
+-- small multiples chart.
+--
+-- /See:/ 'newPanelConfiguration' smart constructor.
+data PanelConfiguration = PanelConfiguration'
+  { -- | Sets the background color for each panel.
+    backgroundColor :: Prelude.Maybe Prelude.Text,
+    -- | Determines whether or not a background for each small multiples panel is
+    -- rendered.
+    backgroundVisibility :: Prelude.Maybe Visibility,
+    -- | Sets the line color of panel borders.
+    borderColor :: Prelude.Maybe Prelude.Text,
+    -- | Sets the line style of panel borders.
+    borderStyle :: Prelude.Maybe PanelBorderStyle,
+    -- | Sets the line thickness of panel borders.
+    borderThickness :: Prelude.Maybe Prelude.Text,
+    -- | Determines whether or not each panel displays a border.
+    borderVisibility :: Prelude.Maybe Visibility,
+    -- | Sets the total amount of negative space to display between sibling
+    -- panels.
+    gutterSpacing :: Prelude.Maybe Prelude.Text,
+    -- | Determines whether or not negative space between sibling panels is
+    -- rendered.
+    gutterVisibility :: Prelude.Maybe Visibility,
+    -- | Configures the title display within each small multiples panel.
+    title :: Prelude.Maybe PanelTitleOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PanelConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backgroundColor', 'panelConfiguration_backgroundColor' - Sets the background color for each panel.
+--
+-- 'backgroundVisibility', 'panelConfiguration_backgroundVisibility' - Determines whether or not a background for each small multiples panel is
+-- rendered.
+--
+-- 'borderColor', 'panelConfiguration_borderColor' - Sets the line color of panel borders.
+--
+-- 'borderStyle', 'panelConfiguration_borderStyle' - Sets the line style of panel borders.
+--
+-- 'borderThickness', 'panelConfiguration_borderThickness' - Sets the line thickness of panel borders.
+--
+-- 'borderVisibility', 'panelConfiguration_borderVisibility' - Determines whether or not each panel displays a border.
+--
+-- 'gutterSpacing', 'panelConfiguration_gutterSpacing' - Sets the total amount of negative space to display between sibling
+-- panels.
+--
+-- 'gutterVisibility', 'panelConfiguration_gutterVisibility' - Determines whether or not negative space between sibling panels is
+-- rendered.
+--
+-- 'title', 'panelConfiguration_title' - Configures the title display within each small multiples panel.
+newPanelConfiguration ::
+  PanelConfiguration
+newPanelConfiguration =
+  PanelConfiguration'
+    { backgroundColor =
+        Prelude.Nothing,
+      backgroundVisibility = Prelude.Nothing,
+      borderColor = Prelude.Nothing,
+      borderStyle = Prelude.Nothing,
+      borderThickness = Prelude.Nothing,
+      borderVisibility = Prelude.Nothing,
+      gutterSpacing = Prelude.Nothing,
+      gutterVisibility = Prelude.Nothing,
+      title = Prelude.Nothing
+    }
+
+-- | Sets the background color for each panel.
+panelConfiguration_backgroundColor :: Lens.Lens' PanelConfiguration (Prelude.Maybe Prelude.Text)
+panelConfiguration_backgroundColor = Lens.lens (\PanelConfiguration' {backgroundColor} -> backgroundColor) (\s@PanelConfiguration' {} a -> s {backgroundColor = a} :: PanelConfiguration)
+
+-- | Determines whether or not a background for each small multiples panel is
+-- rendered.
+panelConfiguration_backgroundVisibility :: Lens.Lens' PanelConfiguration (Prelude.Maybe Visibility)
+panelConfiguration_backgroundVisibility = Lens.lens (\PanelConfiguration' {backgroundVisibility} -> backgroundVisibility) (\s@PanelConfiguration' {} a -> s {backgroundVisibility = a} :: PanelConfiguration)
+
+-- | Sets the line color of panel borders.
+panelConfiguration_borderColor :: Lens.Lens' PanelConfiguration (Prelude.Maybe Prelude.Text)
+panelConfiguration_borderColor = Lens.lens (\PanelConfiguration' {borderColor} -> borderColor) (\s@PanelConfiguration' {} a -> s {borderColor = a} :: PanelConfiguration)
+
+-- | Sets the line style of panel borders.
+panelConfiguration_borderStyle :: Lens.Lens' PanelConfiguration (Prelude.Maybe PanelBorderStyle)
+panelConfiguration_borderStyle = Lens.lens (\PanelConfiguration' {borderStyle} -> borderStyle) (\s@PanelConfiguration' {} a -> s {borderStyle = a} :: PanelConfiguration)
+
+-- | Sets the line thickness of panel borders.
+panelConfiguration_borderThickness :: Lens.Lens' PanelConfiguration (Prelude.Maybe Prelude.Text)
+panelConfiguration_borderThickness = Lens.lens (\PanelConfiguration' {borderThickness} -> borderThickness) (\s@PanelConfiguration' {} a -> s {borderThickness = a} :: PanelConfiguration)
+
+-- | Determines whether or not each panel displays a border.
+panelConfiguration_borderVisibility :: Lens.Lens' PanelConfiguration (Prelude.Maybe Visibility)
+panelConfiguration_borderVisibility = Lens.lens (\PanelConfiguration' {borderVisibility} -> borderVisibility) (\s@PanelConfiguration' {} a -> s {borderVisibility = a} :: PanelConfiguration)
+
+-- | Sets the total amount of negative space to display between sibling
+-- panels.
+panelConfiguration_gutterSpacing :: Lens.Lens' PanelConfiguration (Prelude.Maybe Prelude.Text)
+panelConfiguration_gutterSpacing = Lens.lens (\PanelConfiguration' {gutterSpacing} -> gutterSpacing) (\s@PanelConfiguration' {} a -> s {gutterSpacing = a} :: PanelConfiguration)
+
+-- | Determines whether or not negative space between sibling panels is
+-- rendered.
+panelConfiguration_gutterVisibility :: Lens.Lens' PanelConfiguration (Prelude.Maybe Visibility)
+panelConfiguration_gutterVisibility = Lens.lens (\PanelConfiguration' {gutterVisibility} -> gutterVisibility) (\s@PanelConfiguration' {} a -> s {gutterVisibility = a} :: PanelConfiguration)
+
+-- | Configures the title display within each small multiples panel.
+panelConfiguration_title :: Lens.Lens' PanelConfiguration (Prelude.Maybe PanelTitleOptions)
+panelConfiguration_title = Lens.lens (\PanelConfiguration' {title} -> title) (\s@PanelConfiguration' {} a -> s {title = a} :: PanelConfiguration)
+
+instance Data.FromJSON PanelConfiguration where
+  parseJSON =
+    Data.withObject
+      "PanelConfiguration"
+      ( \x ->
+          PanelConfiguration'
+            Prelude.<$> (x Data..:? "BackgroundColor")
+            Prelude.<*> (x Data..:? "BackgroundVisibility")
+            Prelude.<*> (x Data..:? "BorderColor")
+            Prelude.<*> (x Data..:? "BorderStyle")
+            Prelude.<*> (x Data..:? "BorderThickness")
+            Prelude.<*> (x Data..:? "BorderVisibility")
+            Prelude.<*> (x Data..:? "GutterSpacing")
+            Prelude.<*> (x Data..:? "GutterVisibility")
+            Prelude.<*> (x Data..:? "Title")
+      )
+
+instance Prelude.Hashable PanelConfiguration where
+  hashWithSalt _salt PanelConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` backgroundColor
+      `Prelude.hashWithSalt` backgroundVisibility
+      `Prelude.hashWithSalt` borderColor
+      `Prelude.hashWithSalt` borderStyle
+      `Prelude.hashWithSalt` borderThickness
+      `Prelude.hashWithSalt` borderVisibility
+      `Prelude.hashWithSalt` gutterSpacing
+      `Prelude.hashWithSalt` gutterVisibility
+      `Prelude.hashWithSalt` title
+
+instance Prelude.NFData PanelConfiguration where
+  rnf PanelConfiguration' {..} =
+    Prelude.rnf backgroundColor
+      `Prelude.seq` Prelude.rnf backgroundVisibility
+      `Prelude.seq` Prelude.rnf borderColor
+      `Prelude.seq` Prelude.rnf borderStyle
+      `Prelude.seq` Prelude.rnf borderThickness
+      `Prelude.seq` Prelude.rnf borderVisibility
+      `Prelude.seq` Prelude.rnf gutterSpacing
+      `Prelude.seq` Prelude.rnf gutterVisibility
+      `Prelude.seq` Prelude.rnf title
+
+instance Data.ToJSON PanelConfiguration where
+  toJSON PanelConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BackgroundColor" Data..=)
+              Prelude.<$> backgroundColor,
+            ("BackgroundVisibility" Data..=)
+              Prelude.<$> backgroundVisibility,
+            ("BorderColor" Data..=) Prelude.<$> borderColor,
+            ("BorderStyle" Data..=) Prelude.<$> borderStyle,
+            ("BorderThickness" Data..=)
+              Prelude.<$> borderThickness,
+            ("BorderVisibility" Data..=)
+              Prelude.<$> borderVisibility,
+            ("GutterSpacing" Data..=) Prelude.<$> gutterSpacing,
+            ("GutterVisibility" Data..=)
+              Prelude.<$> gutterVisibility,
+            ("Title" Data..=) Prelude.<$> title
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PanelTitleOptions.hs b/gen/Amazonka/QuickSight/Types/PanelTitleOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PanelTitleOptions.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.QuickSight.Types.PanelTitleOptions
+-- 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.QuickSight.Types.PanelTitleOptions 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.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.HorizontalTextAlignment
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options that determine the title styles for each small multiples
+-- panel.
+--
+-- /See:/ 'newPanelTitleOptions' smart constructor.
+data PanelTitleOptions = PanelTitleOptions'
+  { fontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | Sets the horizontal text alignment of the title within each panel.
+    horizontalTextAlignment :: Prelude.Maybe HorizontalTextAlignment,
+    -- | Determines whether or not panel titles are displayed.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PanelTitleOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fontConfiguration', 'panelTitleOptions_fontConfiguration' - Undocumented member.
+--
+-- 'horizontalTextAlignment', 'panelTitleOptions_horizontalTextAlignment' - Sets the horizontal text alignment of the title within each panel.
+--
+-- 'visibility', 'panelTitleOptions_visibility' - Determines whether or not panel titles are displayed.
+newPanelTitleOptions ::
+  PanelTitleOptions
+newPanelTitleOptions =
+  PanelTitleOptions'
+    { fontConfiguration =
+        Prelude.Nothing,
+      horizontalTextAlignment = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+panelTitleOptions_fontConfiguration :: Lens.Lens' PanelTitleOptions (Prelude.Maybe FontConfiguration)
+panelTitleOptions_fontConfiguration = Lens.lens (\PanelTitleOptions' {fontConfiguration} -> fontConfiguration) (\s@PanelTitleOptions' {} a -> s {fontConfiguration = a} :: PanelTitleOptions)
+
+-- | Sets the horizontal text alignment of the title within each panel.
+panelTitleOptions_horizontalTextAlignment :: Lens.Lens' PanelTitleOptions (Prelude.Maybe HorizontalTextAlignment)
+panelTitleOptions_horizontalTextAlignment = Lens.lens (\PanelTitleOptions' {horizontalTextAlignment} -> horizontalTextAlignment) (\s@PanelTitleOptions' {} a -> s {horizontalTextAlignment = a} :: PanelTitleOptions)
+
+-- | Determines whether or not panel titles are displayed.
+panelTitleOptions_visibility :: Lens.Lens' PanelTitleOptions (Prelude.Maybe Visibility)
+panelTitleOptions_visibility = Lens.lens (\PanelTitleOptions' {visibility} -> visibility) (\s@PanelTitleOptions' {} a -> s {visibility = a} :: PanelTitleOptions)
+
+instance Data.FromJSON PanelTitleOptions where
+  parseJSON =
+    Data.withObject
+      "PanelTitleOptions"
+      ( \x ->
+          PanelTitleOptions'
+            Prelude.<$> (x Data..:? "FontConfiguration")
+            Prelude.<*> (x Data..:? "HorizontalTextAlignment")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable PanelTitleOptions where
+  hashWithSalt _salt PanelTitleOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` fontConfiguration
+      `Prelude.hashWithSalt` horizontalTextAlignment
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData PanelTitleOptions where
+  rnf PanelTitleOptions' {..} =
+    Prelude.rnf fontConfiguration
+      `Prelude.seq` Prelude.rnf horizontalTextAlignment
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON PanelTitleOptions where
+  toJSON PanelTitleOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FontConfiguration" Data..=)
+              Prelude.<$> fontConfiguration,
+            ("HorizontalTextAlignment" Data..=)
+              Prelude.<$> horizontalTextAlignment,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PaperOrientation.hs b/gen/Amazonka/QuickSight/Types/PaperOrientation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PaperOrientation.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.QuickSight.Types.PaperOrientation
+-- 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.QuickSight.Types.PaperOrientation
+  ( PaperOrientation
+      ( ..,
+        PaperOrientation_LANDSCAPE,
+        PaperOrientation_PORTRAIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PaperOrientation = PaperOrientation'
+  { fromPaperOrientation ::
+      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 PaperOrientation_LANDSCAPE :: PaperOrientation
+pattern PaperOrientation_LANDSCAPE = PaperOrientation' "LANDSCAPE"
+
+pattern PaperOrientation_PORTRAIT :: PaperOrientation
+pattern PaperOrientation_PORTRAIT = PaperOrientation' "PORTRAIT"
+
+{-# COMPLETE
+  PaperOrientation_LANDSCAPE,
+  PaperOrientation_PORTRAIT,
+  PaperOrientation'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/PaperSize.hs b/gen/Amazonka/QuickSight/Types/PaperSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PaperSize.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PaperSize
+-- 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.QuickSight.Types.PaperSize
+  ( PaperSize
+      ( ..,
+        PaperSize_A0,
+        PaperSize_A1,
+        PaperSize_A2,
+        PaperSize_A3,
+        PaperSize_A4,
+        PaperSize_A5,
+        PaperSize_JIS_B4,
+        PaperSize_JIS_B5,
+        PaperSize_US_LEGAL,
+        PaperSize_US_LETTER,
+        PaperSize_US_TABLOID_LEDGER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PaperSize = PaperSize'
+  { fromPaperSize ::
+      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 PaperSize_A0 :: PaperSize
+pattern PaperSize_A0 = PaperSize' "A0"
+
+pattern PaperSize_A1 :: PaperSize
+pattern PaperSize_A1 = PaperSize' "A1"
+
+pattern PaperSize_A2 :: PaperSize
+pattern PaperSize_A2 = PaperSize' "A2"
+
+pattern PaperSize_A3 :: PaperSize
+pattern PaperSize_A3 = PaperSize' "A3"
+
+pattern PaperSize_A4 :: PaperSize
+pattern PaperSize_A4 = PaperSize' "A4"
+
+pattern PaperSize_A5 :: PaperSize
+pattern PaperSize_A5 = PaperSize' "A5"
+
+pattern PaperSize_JIS_B4 :: PaperSize
+pattern PaperSize_JIS_B4 = PaperSize' "JIS_B4"
+
+pattern PaperSize_JIS_B5 :: PaperSize
+pattern PaperSize_JIS_B5 = PaperSize' "JIS_B5"
+
+pattern PaperSize_US_LEGAL :: PaperSize
+pattern PaperSize_US_LEGAL = PaperSize' "US_LEGAL"
+
+pattern PaperSize_US_LETTER :: PaperSize
+pattern PaperSize_US_LETTER = PaperSize' "US_LETTER"
+
+pattern PaperSize_US_TABLOID_LEDGER :: PaperSize
+pattern PaperSize_US_TABLOID_LEDGER = PaperSize' "US_TABLOID_LEDGER"
+
+{-# COMPLETE
+  PaperSize_A0,
+  PaperSize_A1,
+  PaperSize_A2,
+  PaperSize_A3,
+  PaperSize_A4,
+  PaperSize_A5,
+  PaperSize_JIS_B4,
+  PaperSize_JIS_B5,
+  PaperSize_US_LEGAL,
+  PaperSize_US_LETTER,
+  PaperSize_US_TABLOID_LEDGER,
+  PaperSize'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ParameterControl.hs b/gen/Amazonka/QuickSight/Types/ParameterControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterControl.hs
@@ -0,0 +1,165 @@
+{-# 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.QuickSight.Types.ParameterControl
+-- 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.QuickSight.Types.ParameterControl 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.QuickSight.Types.ParameterDateTimePickerControl
+import Amazonka.QuickSight.Types.ParameterDropDownControl
+import Amazonka.QuickSight.Types.ParameterListControl
+import Amazonka.QuickSight.Types.ParameterSliderControl
+import Amazonka.QuickSight.Types.ParameterTextAreaControl
+import Amazonka.QuickSight.Types.ParameterTextFieldControl
+
+-- | The control of a parameter that users can interact with in a dashboard
+-- or an analysis.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newParameterControl' smart constructor.
+data ParameterControl = ParameterControl'
+  { -- | A control from a date parameter that specifies date and time.
+    dateTimePicker :: Prelude.Maybe ParameterDateTimePickerControl,
+    -- | A control to display a dropdown list with buttons that are used to
+    -- select a single value.
+    dropdown :: Prelude.Maybe ParameterDropDownControl,
+    -- | A control to display a list with buttons or boxes that are used to
+    -- select either a single value or multiple values.
+    list :: Prelude.Maybe ParameterListControl,
+    -- | A control to display a horizontal toggle bar. This is used to change a
+    -- value by sliding the toggle.
+    slider :: Prelude.Maybe ParameterSliderControl,
+    -- | A control to display a text box that is used to enter multiple entries.
+    textArea :: Prelude.Maybe ParameterTextAreaControl,
+    -- | A control to display a text box that is used to enter a single entry.
+    textField :: Prelude.Maybe ParameterTextFieldControl
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimePicker', 'parameterControl_dateTimePicker' - A control from a date parameter that specifies date and time.
+--
+-- 'dropdown', 'parameterControl_dropdown' - A control to display a dropdown list with buttons that are used to
+-- select a single value.
+--
+-- 'list', 'parameterControl_list' - A control to display a list with buttons or boxes that are used to
+-- select either a single value or multiple values.
+--
+-- 'slider', 'parameterControl_slider' - A control to display a horizontal toggle bar. This is used to change a
+-- value by sliding the toggle.
+--
+-- 'textArea', 'parameterControl_textArea' - A control to display a text box that is used to enter multiple entries.
+--
+-- 'textField', 'parameterControl_textField' - A control to display a text box that is used to enter a single entry.
+newParameterControl ::
+  ParameterControl
+newParameterControl =
+  ParameterControl'
+    { dateTimePicker = Prelude.Nothing,
+      dropdown = Prelude.Nothing,
+      list = Prelude.Nothing,
+      slider = Prelude.Nothing,
+      textArea = Prelude.Nothing,
+      textField = Prelude.Nothing
+    }
+
+-- | A control from a date parameter that specifies date and time.
+parameterControl_dateTimePicker :: Lens.Lens' ParameterControl (Prelude.Maybe ParameterDateTimePickerControl)
+parameterControl_dateTimePicker = Lens.lens (\ParameterControl' {dateTimePicker} -> dateTimePicker) (\s@ParameterControl' {} a -> s {dateTimePicker = a} :: ParameterControl)
+
+-- | A control to display a dropdown list with buttons that are used to
+-- select a single value.
+parameterControl_dropdown :: Lens.Lens' ParameterControl (Prelude.Maybe ParameterDropDownControl)
+parameterControl_dropdown = Lens.lens (\ParameterControl' {dropdown} -> dropdown) (\s@ParameterControl' {} a -> s {dropdown = a} :: ParameterControl)
+
+-- | A control to display a list with buttons or boxes that are used to
+-- select either a single value or multiple values.
+parameterControl_list :: Lens.Lens' ParameterControl (Prelude.Maybe ParameterListControl)
+parameterControl_list = Lens.lens (\ParameterControl' {list} -> list) (\s@ParameterControl' {} a -> s {list = a} :: ParameterControl)
+
+-- | A control to display a horizontal toggle bar. This is used to change a
+-- value by sliding the toggle.
+parameterControl_slider :: Lens.Lens' ParameterControl (Prelude.Maybe ParameterSliderControl)
+parameterControl_slider = Lens.lens (\ParameterControl' {slider} -> slider) (\s@ParameterControl' {} a -> s {slider = a} :: ParameterControl)
+
+-- | A control to display a text box that is used to enter multiple entries.
+parameterControl_textArea :: Lens.Lens' ParameterControl (Prelude.Maybe ParameterTextAreaControl)
+parameterControl_textArea = Lens.lens (\ParameterControl' {textArea} -> textArea) (\s@ParameterControl' {} a -> s {textArea = a} :: ParameterControl)
+
+-- | A control to display a text box that is used to enter a single entry.
+parameterControl_textField :: Lens.Lens' ParameterControl (Prelude.Maybe ParameterTextFieldControl)
+parameterControl_textField = Lens.lens (\ParameterControl' {textField} -> textField) (\s@ParameterControl' {} a -> s {textField = a} :: ParameterControl)
+
+instance Data.FromJSON ParameterControl where
+  parseJSON =
+    Data.withObject
+      "ParameterControl"
+      ( \x ->
+          ParameterControl'
+            Prelude.<$> (x Data..:? "DateTimePicker")
+            Prelude.<*> (x Data..:? "Dropdown")
+            Prelude.<*> (x Data..:? "List")
+            Prelude.<*> (x Data..:? "Slider")
+            Prelude.<*> (x Data..:? "TextArea")
+            Prelude.<*> (x Data..:? "TextField")
+      )
+
+instance Prelude.Hashable ParameterControl where
+  hashWithSalt _salt ParameterControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimePicker
+      `Prelude.hashWithSalt` dropdown
+      `Prelude.hashWithSalt` list
+      `Prelude.hashWithSalt` slider
+      `Prelude.hashWithSalt` textArea
+      `Prelude.hashWithSalt` textField
+
+instance Prelude.NFData ParameterControl where
+  rnf ParameterControl' {..} =
+    Prelude.rnf dateTimePicker
+      `Prelude.seq` Prelude.rnf dropdown
+      `Prelude.seq` Prelude.rnf list
+      `Prelude.seq` Prelude.rnf slider
+      `Prelude.seq` Prelude.rnf textArea
+      `Prelude.seq` Prelude.rnf textField
+
+instance Data.ToJSON ParameterControl where
+  toJSON ParameterControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimePicker" Data..=)
+              Prelude.<$> dateTimePicker,
+            ("Dropdown" Data..=) Prelude.<$> dropdown,
+            ("List" Data..=) Prelude.<$> list,
+            ("Slider" Data..=) Prelude.<$> slider,
+            ("TextArea" Data..=) Prelude.<$> textArea,
+            ("TextField" Data..=) Prelude.<$> textField
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterDateTimePickerControl.hs b/gen/Amazonka/QuickSight/Types/ParameterDateTimePickerControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterDateTimePickerControl.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ParameterDateTimePickerControl
+-- 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.QuickSight.Types.ParameterDateTimePickerControl 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.QuickSight.Types.DateTimePickerControlDisplayOptions
+
+-- | A control from a date parameter that specifies date and time.
+--
+-- /See:/ 'newParameterDateTimePickerControl' smart constructor.
+data ParameterDateTimePickerControl = ParameterDateTimePickerControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe DateTimePickerControlDisplayOptions,
+    -- | The ID of the @ParameterDateTimePickerControl@.
+    parameterControlId :: Prelude.Text,
+    -- | The title of the @ParameterDateTimePickerControl@.
+    title :: Prelude.Text,
+    -- | The name of the @ParameterDateTimePickerControl@.
+    sourceParameterName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterDateTimePickerControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'parameterDateTimePickerControl_displayOptions' - The display options of a control.
+--
+-- 'parameterControlId', 'parameterDateTimePickerControl_parameterControlId' - The ID of the @ParameterDateTimePickerControl@.
+--
+-- 'title', 'parameterDateTimePickerControl_title' - The title of the @ParameterDateTimePickerControl@.
+--
+-- 'sourceParameterName', 'parameterDateTimePickerControl_sourceParameterName' - The name of the @ParameterDateTimePickerControl@.
+newParameterDateTimePickerControl ::
+  -- | 'parameterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceParameterName'
+  Prelude.Text ->
+  ParameterDateTimePickerControl
+newParameterDateTimePickerControl
+  pParameterControlId_
+  pTitle_
+  pSourceParameterName_ =
+    ParameterDateTimePickerControl'
+      { displayOptions =
+          Prelude.Nothing,
+        parameterControlId = pParameterControlId_,
+        title = pTitle_,
+        sourceParameterName = pSourceParameterName_
+      }
+
+-- | The display options of a control.
+parameterDateTimePickerControl_displayOptions :: Lens.Lens' ParameterDateTimePickerControl (Prelude.Maybe DateTimePickerControlDisplayOptions)
+parameterDateTimePickerControl_displayOptions = Lens.lens (\ParameterDateTimePickerControl' {displayOptions} -> displayOptions) (\s@ParameterDateTimePickerControl' {} a -> s {displayOptions = a} :: ParameterDateTimePickerControl)
+
+-- | The ID of the @ParameterDateTimePickerControl@.
+parameterDateTimePickerControl_parameterControlId :: Lens.Lens' ParameterDateTimePickerControl Prelude.Text
+parameterDateTimePickerControl_parameterControlId = Lens.lens (\ParameterDateTimePickerControl' {parameterControlId} -> parameterControlId) (\s@ParameterDateTimePickerControl' {} a -> s {parameterControlId = a} :: ParameterDateTimePickerControl)
+
+-- | The title of the @ParameterDateTimePickerControl@.
+parameterDateTimePickerControl_title :: Lens.Lens' ParameterDateTimePickerControl Prelude.Text
+parameterDateTimePickerControl_title = Lens.lens (\ParameterDateTimePickerControl' {title} -> title) (\s@ParameterDateTimePickerControl' {} a -> s {title = a} :: ParameterDateTimePickerControl)
+
+-- | The name of the @ParameterDateTimePickerControl@.
+parameterDateTimePickerControl_sourceParameterName :: Lens.Lens' ParameterDateTimePickerControl Prelude.Text
+parameterDateTimePickerControl_sourceParameterName = Lens.lens (\ParameterDateTimePickerControl' {sourceParameterName} -> sourceParameterName) (\s@ParameterDateTimePickerControl' {} a -> s {sourceParameterName = a} :: ParameterDateTimePickerControl)
+
+instance Data.FromJSON ParameterDateTimePickerControl where
+  parseJSON =
+    Data.withObject
+      "ParameterDateTimePickerControl"
+      ( \x ->
+          ParameterDateTimePickerControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "ParameterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceParameterName")
+      )
+
+instance
+  Prelude.Hashable
+    ParameterDateTimePickerControl
+  where
+  hashWithSalt
+    _salt
+    ParameterDateTimePickerControl' {..} =
+      _salt
+        `Prelude.hashWithSalt` displayOptions
+        `Prelude.hashWithSalt` parameterControlId
+        `Prelude.hashWithSalt` title
+        `Prelude.hashWithSalt` sourceParameterName
+
+instance
+  Prelude.NFData
+    ParameterDateTimePickerControl
+  where
+  rnf ParameterDateTimePickerControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf parameterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceParameterName
+
+instance Data.ToJSON ParameterDateTimePickerControl where
+  toJSON ParameterDateTimePickerControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("ParameterControlId" Data..= parameterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceParameterName" Data..= sourceParameterName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterDeclaration.hs b/gen/Amazonka/QuickSight/Types/ParameterDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterDeclaration.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ParameterDeclaration
+-- 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.QuickSight.Types.ParameterDeclaration 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.QuickSight.Types.DateTimeParameterDeclaration
+import Amazonka.QuickSight.Types.DecimalParameterDeclaration
+import Amazonka.QuickSight.Types.IntegerParameterDeclaration
+import Amazonka.QuickSight.Types.StringParameterDeclaration
+
+-- | The declaration definition of a parameter.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newParameterDeclaration' smart constructor.
+data ParameterDeclaration = ParameterDeclaration'
+  { -- | A parameter declaration for the @DateTime@ data type.
+    dateTimeParameterDeclaration :: Prelude.Maybe DateTimeParameterDeclaration,
+    -- | A parameter declaration for the @Decimal@ data type.
+    decimalParameterDeclaration :: Prelude.Maybe DecimalParameterDeclaration,
+    -- | A parameter declaration for the @Integer@ data type.
+    integerParameterDeclaration :: Prelude.Maybe IntegerParameterDeclaration,
+    -- | A parameter declaration for the @String@ data type.
+    stringParameterDeclaration :: Prelude.Maybe StringParameterDeclaration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterDeclaration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeParameterDeclaration', 'parameterDeclaration_dateTimeParameterDeclaration' - A parameter declaration for the @DateTime@ data type.
+--
+-- 'decimalParameterDeclaration', 'parameterDeclaration_decimalParameterDeclaration' - A parameter declaration for the @Decimal@ data type.
+--
+-- 'integerParameterDeclaration', 'parameterDeclaration_integerParameterDeclaration' - A parameter declaration for the @Integer@ data type.
+--
+-- 'stringParameterDeclaration', 'parameterDeclaration_stringParameterDeclaration' - A parameter declaration for the @String@ data type.
+newParameterDeclaration ::
+  ParameterDeclaration
+newParameterDeclaration =
+  ParameterDeclaration'
+    { dateTimeParameterDeclaration =
+        Prelude.Nothing,
+      decimalParameterDeclaration = Prelude.Nothing,
+      integerParameterDeclaration = Prelude.Nothing,
+      stringParameterDeclaration = Prelude.Nothing
+    }
+
+-- | A parameter declaration for the @DateTime@ data type.
+parameterDeclaration_dateTimeParameterDeclaration :: Lens.Lens' ParameterDeclaration (Prelude.Maybe DateTimeParameterDeclaration)
+parameterDeclaration_dateTimeParameterDeclaration = Lens.lens (\ParameterDeclaration' {dateTimeParameterDeclaration} -> dateTimeParameterDeclaration) (\s@ParameterDeclaration' {} a -> s {dateTimeParameterDeclaration = a} :: ParameterDeclaration)
+
+-- | A parameter declaration for the @Decimal@ data type.
+parameterDeclaration_decimalParameterDeclaration :: Lens.Lens' ParameterDeclaration (Prelude.Maybe DecimalParameterDeclaration)
+parameterDeclaration_decimalParameterDeclaration = Lens.lens (\ParameterDeclaration' {decimalParameterDeclaration} -> decimalParameterDeclaration) (\s@ParameterDeclaration' {} a -> s {decimalParameterDeclaration = a} :: ParameterDeclaration)
+
+-- | A parameter declaration for the @Integer@ data type.
+parameterDeclaration_integerParameterDeclaration :: Lens.Lens' ParameterDeclaration (Prelude.Maybe IntegerParameterDeclaration)
+parameterDeclaration_integerParameterDeclaration = Lens.lens (\ParameterDeclaration' {integerParameterDeclaration} -> integerParameterDeclaration) (\s@ParameterDeclaration' {} a -> s {integerParameterDeclaration = a} :: ParameterDeclaration)
+
+-- | A parameter declaration for the @String@ data type.
+parameterDeclaration_stringParameterDeclaration :: Lens.Lens' ParameterDeclaration (Prelude.Maybe StringParameterDeclaration)
+parameterDeclaration_stringParameterDeclaration = Lens.lens (\ParameterDeclaration' {stringParameterDeclaration} -> stringParameterDeclaration) (\s@ParameterDeclaration' {} a -> s {stringParameterDeclaration = a} :: ParameterDeclaration)
+
+instance Data.FromJSON ParameterDeclaration where
+  parseJSON =
+    Data.withObject
+      "ParameterDeclaration"
+      ( \x ->
+          ParameterDeclaration'
+            Prelude.<$> (x Data..:? "DateTimeParameterDeclaration")
+            Prelude.<*> (x Data..:? "DecimalParameterDeclaration")
+            Prelude.<*> (x Data..:? "IntegerParameterDeclaration")
+            Prelude.<*> (x Data..:? "StringParameterDeclaration")
+      )
+
+instance Prelude.Hashable ParameterDeclaration where
+  hashWithSalt _salt ParameterDeclaration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimeParameterDeclaration
+      `Prelude.hashWithSalt` decimalParameterDeclaration
+      `Prelude.hashWithSalt` integerParameterDeclaration
+      `Prelude.hashWithSalt` stringParameterDeclaration
+
+instance Prelude.NFData ParameterDeclaration where
+  rnf ParameterDeclaration' {..} =
+    Prelude.rnf dateTimeParameterDeclaration
+      `Prelude.seq` Prelude.rnf decimalParameterDeclaration
+      `Prelude.seq` Prelude.rnf integerParameterDeclaration
+      `Prelude.seq` Prelude.rnf stringParameterDeclaration
+
+instance Data.ToJSON ParameterDeclaration where
+  toJSON ParameterDeclaration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeParameterDeclaration" Data..=)
+              Prelude.<$> dateTimeParameterDeclaration,
+            ("DecimalParameterDeclaration" Data..=)
+              Prelude.<$> decimalParameterDeclaration,
+            ("IntegerParameterDeclaration" Data..=)
+              Prelude.<$> integerParameterDeclaration,
+            ("StringParameterDeclaration" Data..=)
+              Prelude.<$> stringParameterDeclaration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterDropDownControl.hs b/gen/Amazonka/QuickSight/Types/ParameterDropDownControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterDropDownControl.hs
@@ -0,0 +1,181 @@
+{-# 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.QuickSight.Types.ParameterDropDownControl
+-- 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.QuickSight.Types.ParameterDropDownControl 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.QuickSight.Types.CascadingControlConfiguration
+import Amazonka.QuickSight.Types.DropDownControlDisplayOptions
+import Amazonka.QuickSight.Types.ParameterSelectableValues
+import Amazonka.QuickSight.Types.SheetControlListType
+
+-- | A control to display a dropdown list with buttons that are used to
+-- select a single value.
+--
+-- /See:/ 'newParameterDropDownControl' smart constructor.
+data ParameterDropDownControl = ParameterDropDownControl'
+  { -- | The values that are displayed in a control can be configured to only
+    -- show values that are valid based on what\'s selected in other controls.
+    cascadingControlConfiguration :: Prelude.Maybe CascadingControlConfiguration,
+    -- | The display options of a control.
+    displayOptions :: Prelude.Maybe DropDownControlDisplayOptions,
+    -- | A list of selectable values that are used in a control.
+    selectableValues :: Prelude.Maybe ParameterSelectableValues,
+    -- | The type parameter name of the @ParameterDropDownControl@.
+    type' :: Prelude.Maybe SheetControlListType,
+    -- | The ID of the @ParameterDropDownControl@.
+    parameterControlId :: Prelude.Text,
+    -- | The title of the @ParameterDropDownControl@.
+    title :: Prelude.Text,
+    -- | The source parameter name of the @ParameterDropDownControl@.
+    sourceParameterName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterDropDownControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cascadingControlConfiguration', 'parameterDropDownControl_cascadingControlConfiguration' - The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+--
+-- 'displayOptions', 'parameterDropDownControl_displayOptions' - The display options of a control.
+--
+-- 'selectableValues', 'parameterDropDownControl_selectableValues' - A list of selectable values that are used in a control.
+--
+-- 'type'', 'parameterDropDownControl_type' - The type parameter name of the @ParameterDropDownControl@.
+--
+-- 'parameterControlId', 'parameterDropDownControl_parameterControlId' - The ID of the @ParameterDropDownControl@.
+--
+-- 'title', 'parameterDropDownControl_title' - The title of the @ParameterDropDownControl@.
+--
+-- 'sourceParameterName', 'parameterDropDownControl_sourceParameterName' - The source parameter name of the @ParameterDropDownControl@.
+newParameterDropDownControl ::
+  -- | 'parameterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceParameterName'
+  Prelude.Text ->
+  ParameterDropDownControl
+newParameterDropDownControl
+  pParameterControlId_
+  pTitle_
+  pSourceParameterName_ =
+    ParameterDropDownControl'
+      { cascadingControlConfiguration =
+          Prelude.Nothing,
+        displayOptions = Prelude.Nothing,
+        selectableValues = Prelude.Nothing,
+        type' = Prelude.Nothing,
+        parameterControlId = pParameterControlId_,
+        title = pTitle_,
+        sourceParameterName = pSourceParameterName_
+      }
+
+-- | The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+parameterDropDownControl_cascadingControlConfiguration :: Lens.Lens' ParameterDropDownControl (Prelude.Maybe CascadingControlConfiguration)
+parameterDropDownControl_cascadingControlConfiguration = Lens.lens (\ParameterDropDownControl' {cascadingControlConfiguration} -> cascadingControlConfiguration) (\s@ParameterDropDownControl' {} a -> s {cascadingControlConfiguration = a} :: ParameterDropDownControl)
+
+-- | The display options of a control.
+parameterDropDownControl_displayOptions :: Lens.Lens' ParameterDropDownControl (Prelude.Maybe DropDownControlDisplayOptions)
+parameterDropDownControl_displayOptions = Lens.lens (\ParameterDropDownControl' {displayOptions} -> displayOptions) (\s@ParameterDropDownControl' {} a -> s {displayOptions = a} :: ParameterDropDownControl)
+
+-- | A list of selectable values that are used in a control.
+parameterDropDownControl_selectableValues :: Lens.Lens' ParameterDropDownControl (Prelude.Maybe ParameterSelectableValues)
+parameterDropDownControl_selectableValues = Lens.lens (\ParameterDropDownControl' {selectableValues} -> selectableValues) (\s@ParameterDropDownControl' {} a -> s {selectableValues = a} :: ParameterDropDownControl)
+
+-- | The type parameter name of the @ParameterDropDownControl@.
+parameterDropDownControl_type :: Lens.Lens' ParameterDropDownControl (Prelude.Maybe SheetControlListType)
+parameterDropDownControl_type = Lens.lens (\ParameterDropDownControl' {type'} -> type') (\s@ParameterDropDownControl' {} a -> s {type' = a} :: ParameterDropDownControl)
+
+-- | The ID of the @ParameterDropDownControl@.
+parameterDropDownControl_parameterControlId :: Lens.Lens' ParameterDropDownControl Prelude.Text
+parameterDropDownControl_parameterControlId = Lens.lens (\ParameterDropDownControl' {parameterControlId} -> parameterControlId) (\s@ParameterDropDownControl' {} a -> s {parameterControlId = a} :: ParameterDropDownControl)
+
+-- | The title of the @ParameterDropDownControl@.
+parameterDropDownControl_title :: Lens.Lens' ParameterDropDownControl Prelude.Text
+parameterDropDownControl_title = Lens.lens (\ParameterDropDownControl' {title} -> title) (\s@ParameterDropDownControl' {} a -> s {title = a} :: ParameterDropDownControl)
+
+-- | The source parameter name of the @ParameterDropDownControl@.
+parameterDropDownControl_sourceParameterName :: Lens.Lens' ParameterDropDownControl Prelude.Text
+parameterDropDownControl_sourceParameterName = Lens.lens (\ParameterDropDownControl' {sourceParameterName} -> sourceParameterName) (\s@ParameterDropDownControl' {} a -> s {sourceParameterName = a} :: ParameterDropDownControl)
+
+instance Data.FromJSON ParameterDropDownControl where
+  parseJSON =
+    Data.withObject
+      "ParameterDropDownControl"
+      ( \x ->
+          ParameterDropDownControl'
+            Prelude.<$> (x Data..:? "CascadingControlConfiguration")
+            Prelude.<*> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..:? "SelectableValues")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "ParameterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceParameterName")
+      )
+
+instance Prelude.Hashable ParameterDropDownControl where
+  hashWithSalt _salt ParameterDropDownControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` cascadingControlConfiguration
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` selectableValues
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` parameterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceParameterName
+
+instance Prelude.NFData ParameterDropDownControl where
+  rnf ParameterDropDownControl' {..} =
+    Prelude.rnf cascadingControlConfiguration
+      `Prelude.seq` Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf selectableValues
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf parameterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceParameterName
+
+instance Data.ToJSON ParameterDropDownControl where
+  toJSON ParameterDropDownControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CascadingControlConfiguration" Data..=)
+              Prelude.<$> cascadingControlConfiguration,
+            ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            ("SelectableValues" Data..=)
+              Prelude.<$> selectableValues,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just
+              ("ParameterControlId" Data..= parameterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceParameterName" Data..= sourceParameterName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterListControl.hs b/gen/Amazonka/QuickSight/Types/ParameterListControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterListControl.hs
@@ -0,0 +1,181 @@
+{-# 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.QuickSight.Types.ParameterListControl
+-- 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.QuickSight.Types.ParameterListControl 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.QuickSight.Types.CascadingControlConfiguration
+import Amazonka.QuickSight.Types.ListControlDisplayOptions
+import Amazonka.QuickSight.Types.ParameterSelectableValues
+import Amazonka.QuickSight.Types.SheetControlListType
+
+-- | A control to display a list with buttons or boxes that are used to
+-- select either a single value or multiple values.
+--
+-- /See:/ 'newParameterListControl' smart constructor.
+data ParameterListControl = ParameterListControl'
+  { -- | The values that are displayed in a control can be configured to only
+    -- show values that are valid based on what\'s selected in other controls.
+    cascadingControlConfiguration :: Prelude.Maybe CascadingControlConfiguration,
+    -- | The display options of a control.
+    displayOptions :: Prelude.Maybe ListControlDisplayOptions,
+    -- | A list of selectable values that are used in a control.
+    selectableValues :: Prelude.Maybe ParameterSelectableValues,
+    -- | The type of @ParameterListControl@.
+    type' :: Prelude.Maybe SheetControlListType,
+    -- | The ID of the @ParameterListControl@.
+    parameterControlId :: Prelude.Text,
+    -- | The title of the @ParameterListControl@.
+    title :: Prelude.Text,
+    -- | The source parameter name of the @ParameterListControl@.
+    sourceParameterName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterListControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cascadingControlConfiguration', 'parameterListControl_cascadingControlConfiguration' - The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+--
+-- 'displayOptions', 'parameterListControl_displayOptions' - The display options of a control.
+--
+-- 'selectableValues', 'parameterListControl_selectableValues' - A list of selectable values that are used in a control.
+--
+-- 'type'', 'parameterListControl_type' - The type of @ParameterListControl@.
+--
+-- 'parameterControlId', 'parameterListControl_parameterControlId' - The ID of the @ParameterListControl@.
+--
+-- 'title', 'parameterListControl_title' - The title of the @ParameterListControl@.
+--
+-- 'sourceParameterName', 'parameterListControl_sourceParameterName' - The source parameter name of the @ParameterListControl@.
+newParameterListControl ::
+  -- | 'parameterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceParameterName'
+  Prelude.Text ->
+  ParameterListControl
+newParameterListControl
+  pParameterControlId_
+  pTitle_
+  pSourceParameterName_ =
+    ParameterListControl'
+      { cascadingControlConfiguration =
+          Prelude.Nothing,
+        displayOptions = Prelude.Nothing,
+        selectableValues = Prelude.Nothing,
+        type' = Prelude.Nothing,
+        parameterControlId = pParameterControlId_,
+        title = pTitle_,
+        sourceParameterName = pSourceParameterName_
+      }
+
+-- | The values that are displayed in a control can be configured to only
+-- show values that are valid based on what\'s selected in other controls.
+parameterListControl_cascadingControlConfiguration :: Lens.Lens' ParameterListControl (Prelude.Maybe CascadingControlConfiguration)
+parameterListControl_cascadingControlConfiguration = Lens.lens (\ParameterListControl' {cascadingControlConfiguration} -> cascadingControlConfiguration) (\s@ParameterListControl' {} a -> s {cascadingControlConfiguration = a} :: ParameterListControl)
+
+-- | The display options of a control.
+parameterListControl_displayOptions :: Lens.Lens' ParameterListControl (Prelude.Maybe ListControlDisplayOptions)
+parameterListControl_displayOptions = Lens.lens (\ParameterListControl' {displayOptions} -> displayOptions) (\s@ParameterListControl' {} a -> s {displayOptions = a} :: ParameterListControl)
+
+-- | A list of selectable values that are used in a control.
+parameterListControl_selectableValues :: Lens.Lens' ParameterListControl (Prelude.Maybe ParameterSelectableValues)
+parameterListControl_selectableValues = Lens.lens (\ParameterListControl' {selectableValues} -> selectableValues) (\s@ParameterListControl' {} a -> s {selectableValues = a} :: ParameterListControl)
+
+-- | The type of @ParameterListControl@.
+parameterListControl_type :: Lens.Lens' ParameterListControl (Prelude.Maybe SheetControlListType)
+parameterListControl_type = Lens.lens (\ParameterListControl' {type'} -> type') (\s@ParameterListControl' {} a -> s {type' = a} :: ParameterListControl)
+
+-- | The ID of the @ParameterListControl@.
+parameterListControl_parameterControlId :: Lens.Lens' ParameterListControl Prelude.Text
+parameterListControl_parameterControlId = Lens.lens (\ParameterListControl' {parameterControlId} -> parameterControlId) (\s@ParameterListControl' {} a -> s {parameterControlId = a} :: ParameterListControl)
+
+-- | The title of the @ParameterListControl@.
+parameterListControl_title :: Lens.Lens' ParameterListControl Prelude.Text
+parameterListControl_title = Lens.lens (\ParameterListControl' {title} -> title) (\s@ParameterListControl' {} a -> s {title = a} :: ParameterListControl)
+
+-- | The source parameter name of the @ParameterListControl@.
+parameterListControl_sourceParameterName :: Lens.Lens' ParameterListControl Prelude.Text
+parameterListControl_sourceParameterName = Lens.lens (\ParameterListControl' {sourceParameterName} -> sourceParameterName) (\s@ParameterListControl' {} a -> s {sourceParameterName = a} :: ParameterListControl)
+
+instance Data.FromJSON ParameterListControl where
+  parseJSON =
+    Data.withObject
+      "ParameterListControl"
+      ( \x ->
+          ParameterListControl'
+            Prelude.<$> (x Data..:? "CascadingControlConfiguration")
+            Prelude.<*> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..:? "SelectableValues")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "ParameterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceParameterName")
+      )
+
+instance Prelude.Hashable ParameterListControl where
+  hashWithSalt _salt ParameterListControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` cascadingControlConfiguration
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` selectableValues
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` parameterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceParameterName
+
+instance Prelude.NFData ParameterListControl where
+  rnf ParameterListControl' {..} =
+    Prelude.rnf cascadingControlConfiguration
+      `Prelude.seq` Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf selectableValues
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf parameterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceParameterName
+
+instance Data.ToJSON ParameterListControl where
+  toJSON ParameterListControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CascadingControlConfiguration" Data..=)
+              Prelude.<$> cascadingControlConfiguration,
+            ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            ("SelectableValues" Data..=)
+              Prelude.<$> selectableValues,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just
+              ("ParameterControlId" Data..= parameterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceParameterName" Data..= sourceParameterName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterSelectableValues.hs b/gen/Amazonka/QuickSight/Types/ParameterSelectableValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterSelectableValues.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.QuickSight.Types.ParameterSelectableValues
+-- 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.QuickSight.Types.ParameterSelectableValues 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.QuickSight.Types.ColumnIdentifier
+
+-- | A list of selectable values that are used in a control.
+--
+-- /See:/ 'newParameterSelectableValues' smart constructor.
+data ParameterSelectableValues = ParameterSelectableValues'
+  { -- | The column identifier that fetches values from the data set.
+    linkToDataSetColumn :: Prelude.Maybe ColumnIdentifier,
+    -- | The values that are used in @ParameterSelectableValues@.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterSelectableValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkToDataSetColumn', 'parameterSelectableValues_linkToDataSetColumn' - The column identifier that fetches values from the data set.
+--
+-- 'values', 'parameterSelectableValues_values' - The values that are used in @ParameterSelectableValues@.
+newParameterSelectableValues ::
+  ParameterSelectableValues
+newParameterSelectableValues =
+  ParameterSelectableValues'
+    { linkToDataSetColumn =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The column identifier that fetches values from the data set.
+parameterSelectableValues_linkToDataSetColumn :: Lens.Lens' ParameterSelectableValues (Prelude.Maybe ColumnIdentifier)
+parameterSelectableValues_linkToDataSetColumn = Lens.lens (\ParameterSelectableValues' {linkToDataSetColumn} -> linkToDataSetColumn) (\s@ParameterSelectableValues' {} a -> s {linkToDataSetColumn = a} :: ParameterSelectableValues)
+
+-- | The values that are used in @ParameterSelectableValues@.
+parameterSelectableValues_values :: Lens.Lens' ParameterSelectableValues (Prelude.Maybe [Prelude.Text])
+parameterSelectableValues_values = Lens.lens (\ParameterSelectableValues' {values} -> values) (\s@ParameterSelectableValues' {} a -> s {values = a} :: ParameterSelectableValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ParameterSelectableValues where
+  parseJSON =
+    Data.withObject
+      "ParameterSelectableValues"
+      ( \x ->
+          ParameterSelectableValues'
+            Prelude.<$> (x Data..:? "LinkToDataSetColumn")
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ParameterSelectableValues where
+  hashWithSalt _salt ParameterSelectableValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` linkToDataSetColumn
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData ParameterSelectableValues where
+  rnf ParameterSelectableValues' {..} =
+    Prelude.rnf linkToDataSetColumn
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON ParameterSelectableValues where
+  toJSON ParameterSelectableValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LinkToDataSetColumn" Data..=)
+              Prelude.<$> linkToDataSetColumn,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterSliderControl.hs b/gen/Amazonka/QuickSight/Types/ParameterSliderControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterSliderControl.hs
@@ -0,0 +1,182 @@
+{-# 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.QuickSight.Types.ParameterSliderControl
+-- 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.QuickSight.Types.ParameterSliderControl 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.QuickSight.Types.SliderControlDisplayOptions
+
+-- | A control to display a horizontal toggle bar. This is used to change a
+-- value by sliding the toggle.
+--
+-- /See:/ 'newParameterSliderControl' smart constructor.
+data ParameterSliderControl = ParameterSliderControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe SliderControlDisplayOptions,
+    -- | The ID of the @ParameterSliderControl@.
+    parameterControlId :: Prelude.Text,
+    -- | The title of the @ParameterSliderControl@.
+    title :: Prelude.Text,
+    -- | The source parameter name of the @ParameterSliderControl@.
+    sourceParameterName :: Prelude.Text,
+    -- | The smaller value that is displayed at the left of the slider.
+    maximumValue :: Prelude.Double,
+    -- | The larger value that is displayed at the right of the slider.
+    minimumValue :: Prelude.Double,
+    -- | The number of increments that the slider bar is divided into.
+    stepSize :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterSliderControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'parameterSliderControl_displayOptions' - The display options of a control.
+--
+-- 'parameterControlId', 'parameterSliderControl_parameterControlId' - The ID of the @ParameterSliderControl@.
+--
+-- 'title', 'parameterSliderControl_title' - The title of the @ParameterSliderControl@.
+--
+-- 'sourceParameterName', 'parameterSliderControl_sourceParameterName' - The source parameter name of the @ParameterSliderControl@.
+--
+-- 'maximumValue', 'parameterSliderControl_maximumValue' - The smaller value that is displayed at the left of the slider.
+--
+-- 'minimumValue', 'parameterSliderControl_minimumValue' - The larger value that is displayed at the right of the slider.
+--
+-- 'stepSize', 'parameterSliderControl_stepSize' - The number of increments that the slider bar is divided into.
+newParameterSliderControl ::
+  -- | 'parameterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceParameterName'
+  Prelude.Text ->
+  -- | 'maximumValue'
+  Prelude.Double ->
+  -- | 'minimumValue'
+  Prelude.Double ->
+  -- | 'stepSize'
+  Prelude.Double ->
+  ParameterSliderControl
+newParameterSliderControl
+  pParameterControlId_
+  pTitle_
+  pSourceParameterName_
+  pMaximumValue_
+  pMinimumValue_
+  pStepSize_ =
+    ParameterSliderControl'
+      { displayOptions =
+          Prelude.Nothing,
+        parameterControlId = pParameterControlId_,
+        title = pTitle_,
+        sourceParameterName = pSourceParameterName_,
+        maximumValue = pMaximumValue_,
+        minimumValue = pMinimumValue_,
+        stepSize = pStepSize_
+      }
+
+-- | The display options of a control.
+parameterSliderControl_displayOptions :: Lens.Lens' ParameterSliderControl (Prelude.Maybe SliderControlDisplayOptions)
+parameterSliderControl_displayOptions = Lens.lens (\ParameterSliderControl' {displayOptions} -> displayOptions) (\s@ParameterSliderControl' {} a -> s {displayOptions = a} :: ParameterSliderControl)
+
+-- | The ID of the @ParameterSliderControl@.
+parameterSliderControl_parameterControlId :: Lens.Lens' ParameterSliderControl Prelude.Text
+parameterSliderControl_parameterControlId = Lens.lens (\ParameterSliderControl' {parameterControlId} -> parameterControlId) (\s@ParameterSliderControl' {} a -> s {parameterControlId = a} :: ParameterSliderControl)
+
+-- | The title of the @ParameterSliderControl@.
+parameterSliderControl_title :: Lens.Lens' ParameterSliderControl Prelude.Text
+parameterSliderControl_title = Lens.lens (\ParameterSliderControl' {title} -> title) (\s@ParameterSliderControl' {} a -> s {title = a} :: ParameterSliderControl)
+
+-- | The source parameter name of the @ParameterSliderControl@.
+parameterSliderControl_sourceParameterName :: Lens.Lens' ParameterSliderControl Prelude.Text
+parameterSliderControl_sourceParameterName = Lens.lens (\ParameterSliderControl' {sourceParameterName} -> sourceParameterName) (\s@ParameterSliderControl' {} a -> s {sourceParameterName = a} :: ParameterSliderControl)
+
+-- | The smaller value that is displayed at the left of the slider.
+parameterSliderControl_maximumValue :: Lens.Lens' ParameterSliderControl Prelude.Double
+parameterSliderControl_maximumValue = Lens.lens (\ParameterSliderControl' {maximumValue} -> maximumValue) (\s@ParameterSliderControl' {} a -> s {maximumValue = a} :: ParameterSliderControl)
+
+-- | The larger value that is displayed at the right of the slider.
+parameterSliderControl_minimumValue :: Lens.Lens' ParameterSliderControl Prelude.Double
+parameterSliderControl_minimumValue = Lens.lens (\ParameterSliderControl' {minimumValue} -> minimumValue) (\s@ParameterSliderControl' {} a -> s {minimumValue = a} :: ParameterSliderControl)
+
+-- | The number of increments that the slider bar is divided into.
+parameterSliderControl_stepSize :: Lens.Lens' ParameterSliderControl Prelude.Double
+parameterSliderControl_stepSize = Lens.lens (\ParameterSliderControl' {stepSize} -> stepSize) (\s@ParameterSliderControl' {} a -> s {stepSize = a} :: ParameterSliderControl)
+
+instance Data.FromJSON ParameterSliderControl where
+  parseJSON =
+    Data.withObject
+      "ParameterSliderControl"
+      ( \x ->
+          ParameterSliderControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "ParameterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceParameterName")
+            Prelude.<*> (x Data..: "MaximumValue")
+            Prelude.<*> (x Data..: "MinimumValue")
+            Prelude.<*> (x Data..: "StepSize")
+      )
+
+instance Prelude.Hashable ParameterSliderControl where
+  hashWithSalt _salt ParameterSliderControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` parameterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceParameterName
+      `Prelude.hashWithSalt` maximumValue
+      `Prelude.hashWithSalt` minimumValue
+      `Prelude.hashWithSalt` stepSize
+
+instance Prelude.NFData ParameterSliderControl where
+  rnf ParameterSliderControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf parameterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceParameterName
+      `Prelude.seq` Prelude.rnf maximumValue
+      `Prelude.seq` Prelude.rnf minimumValue
+      `Prelude.seq` Prelude.rnf stepSize
+
+instance Data.ToJSON ParameterSliderControl where
+  toJSON ParameterSliderControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("ParameterControlId" Data..= parameterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceParameterName" Data..= sourceParameterName),
+            Prelude.Just ("MaximumValue" Data..= maximumValue),
+            Prelude.Just ("MinimumValue" Data..= minimumValue),
+            Prelude.Just ("StepSize" Data..= stepSize)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterTextAreaControl.hs b/gen/Amazonka/QuickSight/Types/ParameterTextAreaControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterTextAreaControl.hs
@@ -0,0 +1,146 @@
+{-# 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.QuickSight.Types.ParameterTextAreaControl
+-- 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.QuickSight.Types.ParameterTextAreaControl 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.QuickSight.Types.TextAreaControlDisplayOptions
+
+-- | A control to display a text box that is used to enter multiple entries.
+--
+-- /See:/ 'newParameterTextAreaControl' smart constructor.
+data ParameterTextAreaControl = ParameterTextAreaControl'
+  { -- | The delimiter that is used to separate the lines in text.
+    delimiter :: Prelude.Maybe Prelude.Text,
+    -- | The display options of a control.
+    displayOptions :: Prelude.Maybe TextAreaControlDisplayOptions,
+    -- | The ID of the @ParameterTextAreaControl@.
+    parameterControlId :: Prelude.Text,
+    -- | The title of the @ParameterTextAreaControl@.
+    title :: Prelude.Text,
+    -- | The source parameter name of the @ParameterTextAreaControl@.
+    sourceParameterName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterTextAreaControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'delimiter', 'parameterTextAreaControl_delimiter' - The delimiter that is used to separate the lines in text.
+--
+-- 'displayOptions', 'parameterTextAreaControl_displayOptions' - The display options of a control.
+--
+-- 'parameterControlId', 'parameterTextAreaControl_parameterControlId' - The ID of the @ParameterTextAreaControl@.
+--
+-- 'title', 'parameterTextAreaControl_title' - The title of the @ParameterTextAreaControl@.
+--
+-- 'sourceParameterName', 'parameterTextAreaControl_sourceParameterName' - The source parameter name of the @ParameterTextAreaControl@.
+newParameterTextAreaControl ::
+  -- | 'parameterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceParameterName'
+  Prelude.Text ->
+  ParameterTextAreaControl
+newParameterTextAreaControl
+  pParameterControlId_
+  pTitle_
+  pSourceParameterName_ =
+    ParameterTextAreaControl'
+      { delimiter =
+          Prelude.Nothing,
+        displayOptions = Prelude.Nothing,
+        parameterControlId = pParameterControlId_,
+        title = pTitle_,
+        sourceParameterName = pSourceParameterName_
+      }
+
+-- | The delimiter that is used to separate the lines in text.
+parameterTextAreaControl_delimiter :: Lens.Lens' ParameterTextAreaControl (Prelude.Maybe Prelude.Text)
+parameterTextAreaControl_delimiter = Lens.lens (\ParameterTextAreaControl' {delimiter} -> delimiter) (\s@ParameterTextAreaControl' {} a -> s {delimiter = a} :: ParameterTextAreaControl)
+
+-- | The display options of a control.
+parameterTextAreaControl_displayOptions :: Lens.Lens' ParameterTextAreaControl (Prelude.Maybe TextAreaControlDisplayOptions)
+parameterTextAreaControl_displayOptions = Lens.lens (\ParameterTextAreaControl' {displayOptions} -> displayOptions) (\s@ParameterTextAreaControl' {} a -> s {displayOptions = a} :: ParameterTextAreaControl)
+
+-- | The ID of the @ParameterTextAreaControl@.
+parameterTextAreaControl_parameterControlId :: Lens.Lens' ParameterTextAreaControl Prelude.Text
+parameterTextAreaControl_parameterControlId = Lens.lens (\ParameterTextAreaControl' {parameterControlId} -> parameterControlId) (\s@ParameterTextAreaControl' {} a -> s {parameterControlId = a} :: ParameterTextAreaControl)
+
+-- | The title of the @ParameterTextAreaControl@.
+parameterTextAreaControl_title :: Lens.Lens' ParameterTextAreaControl Prelude.Text
+parameterTextAreaControl_title = Lens.lens (\ParameterTextAreaControl' {title} -> title) (\s@ParameterTextAreaControl' {} a -> s {title = a} :: ParameterTextAreaControl)
+
+-- | The source parameter name of the @ParameterTextAreaControl@.
+parameterTextAreaControl_sourceParameterName :: Lens.Lens' ParameterTextAreaControl Prelude.Text
+parameterTextAreaControl_sourceParameterName = Lens.lens (\ParameterTextAreaControl' {sourceParameterName} -> sourceParameterName) (\s@ParameterTextAreaControl' {} a -> s {sourceParameterName = a} :: ParameterTextAreaControl)
+
+instance Data.FromJSON ParameterTextAreaControl where
+  parseJSON =
+    Data.withObject
+      "ParameterTextAreaControl"
+      ( \x ->
+          ParameterTextAreaControl'
+            Prelude.<$> (x Data..:? "Delimiter")
+            Prelude.<*> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "ParameterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceParameterName")
+      )
+
+instance Prelude.Hashable ParameterTextAreaControl where
+  hashWithSalt _salt ParameterTextAreaControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` delimiter
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` parameterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceParameterName
+
+instance Prelude.NFData ParameterTextAreaControl where
+  rnf ParameterTextAreaControl' {..} =
+    Prelude.rnf delimiter
+      `Prelude.seq` Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf parameterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceParameterName
+
+instance Data.ToJSON ParameterTextAreaControl where
+  toJSON ParameterTextAreaControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Delimiter" Data..=) Prelude.<$> delimiter,
+            ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("ParameterControlId" Data..= parameterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceParameterName" Data..= sourceParameterName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterTextFieldControl.hs b/gen/Amazonka/QuickSight/Types/ParameterTextFieldControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterTextFieldControl.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.QuickSight.Types.ParameterTextFieldControl
+-- 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.QuickSight.Types.ParameterTextFieldControl 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.QuickSight.Types.TextFieldControlDisplayOptions
+
+-- | A control to display a text box that is used to enter a single entry.
+--
+-- /See:/ 'newParameterTextFieldControl' smart constructor.
+data ParameterTextFieldControl = ParameterTextFieldControl'
+  { -- | The display options of a control.
+    displayOptions :: Prelude.Maybe TextFieldControlDisplayOptions,
+    -- | The ID of the @ParameterTextFieldControl@.
+    parameterControlId :: Prelude.Text,
+    -- | The title of the @ParameterTextFieldControl@.
+    title :: Prelude.Text,
+    -- | The source parameter name of the @ParameterTextFieldControl@.
+    sourceParameterName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterTextFieldControl' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayOptions', 'parameterTextFieldControl_displayOptions' - The display options of a control.
+--
+-- 'parameterControlId', 'parameterTextFieldControl_parameterControlId' - The ID of the @ParameterTextFieldControl@.
+--
+-- 'title', 'parameterTextFieldControl_title' - The title of the @ParameterTextFieldControl@.
+--
+-- 'sourceParameterName', 'parameterTextFieldControl_sourceParameterName' - The source parameter name of the @ParameterTextFieldControl@.
+newParameterTextFieldControl ::
+  -- | 'parameterControlId'
+  Prelude.Text ->
+  -- | 'title'
+  Prelude.Text ->
+  -- | 'sourceParameterName'
+  Prelude.Text ->
+  ParameterTextFieldControl
+newParameterTextFieldControl
+  pParameterControlId_
+  pTitle_
+  pSourceParameterName_ =
+    ParameterTextFieldControl'
+      { displayOptions =
+          Prelude.Nothing,
+        parameterControlId = pParameterControlId_,
+        title = pTitle_,
+        sourceParameterName = pSourceParameterName_
+      }
+
+-- | The display options of a control.
+parameterTextFieldControl_displayOptions :: Lens.Lens' ParameterTextFieldControl (Prelude.Maybe TextFieldControlDisplayOptions)
+parameterTextFieldControl_displayOptions = Lens.lens (\ParameterTextFieldControl' {displayOptions} -> displayOptions) (\s@ParameterTextFieldControl' {} a -> s {displayOptions = a} :: ParameterTextFieldControl)
+
+-- | The ID of the @ParameterTextFieldControl@.
+parameterTextFieldControl_parameterControlId :: Lens.Lens' ParameterTextFieldControl Prelude.Text
+parameterTextFieldControl_parameterControlId = Lens.lens (\ParameterTextFieldControl' {parameterControlId} -> parameterControlId) (\s@ParameterTextFieldControl' {} a -> s {parameterControlId = a} :: ParameterTextFieldControl)
+
+-- | The title of the @ParameterTextFieldControl@.
+parameterTextFieldControl_title :: Lens.Lens' ParameterTextFieldControl Prelude.Text
+parameterTextFieldControl_title = Lens.lens (\ParameterTextFieldControl' {title} -> title) (\s@ParameterTextFieldControl' {} a -> s {title = a} :: ParameterTextFieldControl)
+
+-- | The source parameter name of the @ParameterTextFieldControl@.
+parameterTextFieldControl_sourceParameterName :: Lens.Lens' ParameterTextFieldControl Prelude.Text
+parameterTextFieldControl_sourceParameterName = Lens.lens (\ParameterTextFieldControl' {sourceParameterName} -> sourceParameterName) (\s@ParameterTextFieldControl' {} a -> s {sourceParameterName = a} :: ParameterTextFieldControl)
+
+instance Data.FromJSON ParameterTextFieldControl where
+  parseJSON =
+    Data.withObject
+      "ParameterTextFieldControl"
+      ( \x ->
+          ParameterTextFieldControl'
+            Prelude.<$> (x Data..:? "DisplayOptions")
+            Prelude.<*> (x Data..: "ParameterControlId")
+            Prelude.<*> (x Data..: "Title")
+            Prelude.<*> (x Data..: "SourceParameterName")
+      )
+
+instance Prelude.Hashable ParameterTextFieldControl where
+  hashWithSalt _salt ParameterTextFieldControl' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayOptions
+      `Prelude.hashWithSalt` parameterControlId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` sourceParameterName
+
+instance Prelude.NFData ParameterTextFieldControl where
+  rnf ParameterTextFieldControl' {..} =
+    Prelude.rnf displayOptions
+      `Prelude.seq` Prelude.rnf parameterControlId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf sourceParameterName
+
+instance Data.ToJSON ParameterTextFieldControl where
+  toJSON ParameterTextFieldControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayOptions" Data..=)
+              Prelude.<$> displayOptions,
+            Prelude.Just
+              ("ParameterControlId" Data..= parameterControlId),
+            Prelude.Just ("Title" Data..= title),
+            Prelude.Just
+              ("SourceParameterName" Data..= sourceParameterName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ParameterValueType.hs b/gen/Amazonka/QuickSight/Types/ParameterValueType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ParameterValueType.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.QuickSight.Types.ParameterValueType
+-- 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.QuickSight.Types.ParameterValueType
+  ( ParameterValueType
+      ( ..,
+        ParameterValueType_MULTI_VALUED,
+        ParameterValueType_SINGLE_VALUED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ParameterValueType = ParameterValueType'
+  { fromParameterValueType ::
+      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 ParameterValueType_MULTI_VALUED :: ParameterValueType
+pattern ParameterValueType_MULTI_VALUED = ParameterValueType' "MULTI_VALUED"
+
+pattern ParameterValueType_SINGLE_VALUED :: ParameterValueType
+pattern ParameterValueType_SINGLE_VALUED = ParameterValueType' "SINGLE_VALUED"
+
+{-# COMPLETE
+  ParameterValueType_MULTI_VALUED,
+  ParameterValueType_SINGLE_VALUED,
+  ParameterValueType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Parameters.hs b/gen/Amazonka/QuickSight/Types/Parameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Parameters.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.Parameters
+-- 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.QuickSight.Types.Parameters 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.QuickSight.Types.DateTimeParameter
+import Amazonka.QuickSight.Types.DecimalParameter
+import Amazonka.QuickSight.Types.IntegerParameter
+import Amazonka.QuickSight.Types.StringParameter
+
+-- | A list of Amazon QuickSight parameters and the list\'s override values.
+--
+-- /See:/ 'newParameters' smart constructor.
+data Parameters = Parameters'
+  { -- | The parameters that have a data type of date-time.
+    dateTimeParameters :: Prelude.Maybe [DateTimeParameter],
+    -- | The parameters that have a data type of decimal.
+    decimalParameters :: Prelude.Maybe [DecimalParameter],
+    -- | The parameters that have a data type of integer.
+    integerParameters :: Prelude.Maybe [IntegerParameter],
+    -- | The parameters that have a data type of string.
+    stringParameters :: Prelude.Maybe [StringParameter]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Parameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeParameters', 'parameters_dateTimeParameters' - The parameters that have a data type of date-time.
+--
+-- 'decimalParameters', 'parameters_decimalParameters' - The parameters that have a data type of decimal.
+--
+-- 'integerParameters', 'parameters_integerParameters' - The parameters that have a data type of integer.
+--
+-- 'stringParameters', 'parameters_stringParameters' - The parameters that have a data type of string.
+newParameters ::
+  Parameters
+newParameters =
+  Parameters'
+    { dateTimeParameters = Prelude.Nothing,
+      decimalParameters = Prelude.Nothing,
+      integerParameters = Prelude.Nothing,
+      stringParameters = Prelude.Nothing
+    }
+
+-- | The parameters that have a data type of date-time.
+parameters_dateTimeParameters :: Lens.Lens' Parameters (Prelude.Maybe [DateTimeParameter])
+parameters_dateTimeParameters = Lens.lens (\Parameters' {dateTimeParameters} -> dateTimeParameters) (\s@Parameters' {} a -> s {dateTimeParameters = a} :: Parameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The parameters that have a data type of decimal.
+parameters_decimalParameters :: Lens.Lens' Parameters (Prelude.Maybe [DecimalParameter])
+parameters_decimalParameters = Lens.lens (\Parameters' {decimalParameters} -> decimalParameters) (\s@Parameters' {} a -> s {decimalParameters = a} :: Parameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The parameters that have a data type of integer.
+parameters_integerParameters :: Lens.Lens' Parameters (Prelude.Maybe [IntegerParameter])
+parameters_integerParameters = Lens.lens (\Parameters' {integerParameters} -> integerParameters) (\s@Parameters' {} a -> s {integerParameters = a} :: Parameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The parameters that have a data type of string.
+parameters_stringParameters :: Lens.Lens' Parameters (Prelude.Maybe [StringParameter])
+parameters_stringParameters = Lens.lens (\Parameters' {stringParameters} -> stringParameters) (\s@Parameters' {} a -> s {stringParameters = a} :: Parameters) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable Parameters where
+  hashWithSalt _salt Parameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` dateTimeParameters
+      `Prelude.hashWithSalt` decimalParameters
+      `Prelude.hashWithSalt` integerParameters
+      `Prelude.hashWithSalt` stringParameters
+
+instance Prelude.NFData Parameters where
+  rnf Parameters' {..} =
+    Prelude.rnf dateTimeParameters
+      `Prelude.seq` Prelude.rnf decimalParameters
+      `Prelude.seq` Prelude.rnf integerParameters
+      `Prelude.seq` Prelude.rnf stringParameters
+
+instance Data.ToJSON Parameters where
+  toJSON Parameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeParameters" Data..=)
+              Prelude.<$> dateTimeParameters,
+            ("DecimalParameters" Data..=)
+              Prelude.<$> decimalParameters,
+            ("IntegerParameters" Data..=)
+              Prelude.<$> integerParameters,
+            ("StringParameters" Data..=)
+              Prelude.<$> stringParameters
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PercentVisibleRange.hs b/gen/Amazonka/QuickSight/Types/PercentVisibleRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PercentVisibleRange.hs
@@ -0,0 +1,92 @@
+{-# 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.QuickSight.Types.PercentVisibleRange
+-- 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.QuickSight.Types.PercentVisibleRange 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 percent range in the visible range.
+--
+-- /See:/ 'newPercentVisibleRange' smart constructor.
+data PercentVisibleRange = PercentVisibleRange'
+  { -- | The lower bound of the range.
+    from :: Prelude.Maybe Prelude.Double,
+    -- | The top bound of the range.
+    to :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PercentVisibleRange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'from', 'percentVisibleRange_from' - The lower bound of the range.
+--
+-- 'to', 'percentVisibleRange_to' - The top bound of the range.
+newPercentVisibleRange ::
+  PercentVisibleRange
+newPercentVisibleRange =
+  PercentVisibleRange'
+    { from = Prelude.Nothing,
+      to = Prelude.Nothing
+    }
+
+-- | The lower bound of the range.
+percentVisibleRange_from :: Lens.Lens' PercentVisibleRange (Prelude.Maybe Prelude.Double)
+percentVisibleRange_from = Lens.lens (\PercentVisibleRange' {from} -> from) (\s@PercentVisibleRange' {} a -> s {from = a} :: PercentVisibleRange)
+
+-- | The top bound of the range.
+percentVisibleRange_to :: Lens.Lens' PercentVisibleRange (Prelude.Maybe Prelude.Double)
+percentVisibleRange_to = Lens.lens (\PercentVisibleRange' {to} -> to) (\s@PercentVisibleRange' {} a -> s {to = a} :: PercentVisibleRange)
+
+instance Data.FromJSON PercentVisibleRange where
+  parseJSON =
+    Data.withObject
+      "PercentVisibleRange"
+      ( \x ->
+          PercentVisibleRange'
+            Prelude.<$> (x Data..:? "From")
+            Prelude.<*> (x Data..:? "To")
+      )
+
+instance Prelude.Hashable PercentVisibleRange where
+  hashWithSalt _salt PercentVisibleRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` from
+      `Prelude.hashWithSalt` to
+
+instance Prelude.NFData PercentVisibleRange where
+  rnf PercentVisibleRange' {..} =
+    Prelude.rnf from `Prelude.seq` Prelude.rnf to
+
+instance Data.ToJSON PercentVisibleRange where
+  toJSON PercentVisibleRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("From" Data..=) Prelude.<$> from,
+            ("To" Data..=) Prelude.<$> to
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PercentageDisplayFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/PercentageDisplayFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PercentageDisplayFormatConfiguration.hs
@@ -0,0 +1,171 @@
+{-# 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.QuickSight.Types.PercentageDisplayFormatConfiguration
+-- 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.QuickSight.Types.PercentageDisplayFormatConfiguration 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.QuickSight.Types.DecimalPlacesConfiguration
+import Amazonka.QuickSight.Types.NegativeValueConfiguration
+import Amazonka.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumericSeparatorConfiguration
+
+-- | The options that determine the percentage display format configuration.
+--
+-- /See:/ 'newPercentageDisplayFormatConfiguration' smart constructor.
+data PercentageDisplayFormatConfiguration = PercentageDisplayFormatConfiguration'
+  { -- | The option that determines the decimal places configuration.
+    decimalPlacesConfiguration :: Prelude.Maybe DecimalPlacesConfiguration,
+    -- | The options that determine the negative value configuration.
+    negativeValueConfiguration :: Prelude.Maybe NegativeValueConfiguration,
+    -- | The options that determine the null value format configuration.
+    nullValueFormatConfiguration :: Prelude.Maybe NullValueFormatConfiguration,
+    -- | Determines the prefix value of the percentage format.
+    prefix :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The options that determine the numeric separator configuration.
+    separatorConfiguration :: Prelude.Maybe NumericSeparatorConfiguration,
+    -- | Determines the suffix value of the percentage format.
+    suffix :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PercentageDisplayFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'decimalPlacesConfiguration', 'percentageDisplayFormatConfiguration_decimalPlacesConfiguration' - The option that determines the decimal places configuration.
+--
+-- 'negativeValueConfiguration', 'percentageDisplayFormatConfiguration_negativeValueConfiguration' - The options that determine the negative value configuration.
+--
+-- 'nullValueFormatConfiguration', 'percentageDisplayFormatConfiguration_nullValueFormatConfiguration' - The options that determine the null value format configuration.
+--
+-- 'prefix', 'percentageDisplayFormatConfiguration_prefix' - Determines the prefix value of the percentage format.
+--
+-- 'separatorConfiguration', 'percentageDisplayFormatConfiguration_separatorConfiguration' - The options that determine the numeric separator configuration.
+--
+-- 'suffix', 'percentageDisplayFormatConfiguration_suffix' - Determines the suffix value of the percentage format.
+newPercentageDisplayFormatConfiguration ::
+  PercentageDisplayFormatConfiguration
+newPercentageDisplayFormatConfiguration =
+  PercentageDisplayFormatConfiguration'
+    { decimalPlacesConfiguration =
+        Prelude.Nothing,
+      negativeValueConfiguration =
+        Prelude.Nothing,
+      nullValueFormatConfiguration =
+        Prelude.Nothing,
+      prefix = Prelude.Nothing,
+      separatorConfiguration =
+        Prelude.Nothing,
+      suffix = Prelude.Nothing
+    }
+
+-- | The option that determines the decimal places configuration.
+percentageDisplayFormatConfiguration_decimalPlacesConfiguration :: Lens.Lens' PercentageDisplayFormatConfiguration (Prelude.Maybe DecimalPlacesConfiguration)
+percentageDisplayFormatConfiguration_decimalPlacesConfiguration = Lens.lens (\PercentageDisplayFormatConfiguration' {decimalPlacesConfiguration} -> decimalPlacesConfiguration) (\s@PercentageDisplayFormatConfiguration' {} a -> s {decimalPlacesConfiguration = a} :: PercentageDisplayFormatConfiguration)
+
+-- | The options that determine the negative value configuration.
+percentageDisplayFormatConfiguration_negativeValueConfiguration :: Lens.Lens' PercentageDisplayFormatConfiguration (Prelude.Maybe NegativeValueConfiguration)
+percentageDisplayFormatConfiguration_negativeValueConfiguration = Lens.lens (\PercentageDisplayFormatConfiguration' {negativeValueConfiguration} -> negativeValueConfiguration) (\s@PercentageDisplayFormatConfiguration' {} a -> s {negativeValueConfiguration = a} :: PercentageDisplayFormatConfiguration)
+
+-- | The options that determine the null value format configuration.
+percentageDisplayFormatConfiguration_nullValueFormatConfiguration :: Lens.Lens' PercentageDisplayFormatConfiguration (Prelude.Maybe NullValueFormatConfiguration)
+percentageDisplayFormatConfiguration_nullValueFormatConfiguration = Lens.lens (\PercentageDisplayFormatConfiguration' {nullValueFormatConfiguration} -> nullValueFormatConfiguration) (\s@PercentageDisplayFormatConfiguration' {} a -> s {nullValueFormatConfiguration = a} :: PercentageDisplayFormatConfiguration)
+
+-- | Determines the prefix value of the percentage format.
+percentageDisplayFormatConfiguration_prefix :: Lens.Lens' PercentageDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+percentageDisplayFormatConfiguration_prefix = Lens.lens (\PercentageDisplayFormatConfiguration' {prefix} -> prefix) (\s@PercentageDisplayFormatConfiguration' {} a -> s {prefix = a} :: PercentageDisplayFormatConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The options that determine the numeric separator configuration.
+percentageDisplayFormatConfiguration_separatorConfiguration :: Lens.Lens' PercentageDisplayFormatConfiguration (Prelude.Maybe NumericSeparatorConfiguration)
+percentageDisplayFormatConfiguration_separatorConfiguration = Lens.lens (\PercentageDisplayFormatConfiguration' {separatorConfiguration} -> separatorConfiguration) (\s@PercentageDisplayFormatConfiguration' {} a -> s {separatorConfiguration = a} :: PercentageDisplayFormatConfiguration)
+
+-- | Determines the suffix value of the percentage format.
+percentageDisplayFormatConfiguration_suffix :: Lens.Lens' PercentageDisplayFormatConfiguration (Prelude.Maybe Prelude.Text)
+percentageDisplayFormatConfiguration_suffix = Lens.lens (\PercentageDisplayFormatConfiguration' {suffix} -> suffix) (\s@PercentageDisplayFormatConfiguration' {} a -> s {suffix = a} :: PercentageDisplayFormatConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+instance
+  Data.FromJSON
+    PercentageDisplayFormatConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "PercentageDisplayFormatConfiguration"
+      ( \x ->
+          PercentageDisplayFormatConfiguration'
+            Prelude.<$> (x Data..:? "DecimalPlacesConfiguration")
+            Prelude.<*> (x Data..:? "NegativeValueConfiguration")
+            Prelude.<*> (x Data..:? "NullValueFormatConfiguration")
+            Prelude.<*> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..:? "SeparatorConfiguration")
+            Prelude.<*> (x Data..:? "Suffix")
+      )
+
+instance
+  Prelude.Hashable
+    PercentageDisplayFormatConfiguration
+  where
+  hashWithSalt
+    _salt
+    PercentageDisplayFormatConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` decimalPlacesConfiguration
+        `Prelude.hashWithSalt` negativeValueConfiguration
+        `Prelude.hashWithSalt` nullValueFormatConfiguration
+        `Prelude.hashWithSalt` prefix
+        `Prelude.hashWithSalt` separatorConfiguration
+        `Prelude.hashWithSalt` suffix
+
+instance
+  Prelude.NFData
+    PercentageDisplayFormatConfiguration
+  where
+  rnf PercentageDisplayFormatConfiguration' {..} =
+    Prelude.rnf decimalPlacesConfiguration
+      `Prelude.seq` Prelude.rnf negativeValueConfiguration
+      `Prelude.seq` Prelude.rnf nullValueFormatConfiguration
+      `Prelude.seq` Prelude.rnf prefix
+      `Prelude.seq` Prelude.rnf separatorConfiguration
+      `Prelude.seq` Prelude.rnf suffix
+
+instance
+  Data.ToJSON
+    PercentageDisplayFormatConfiguration
+  where
+  toJSON PercentageDisplayFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DecimalPlacesConfiguration" Data..=)
+              Prelude.<$> decimalPlacesConfiguration,
+            ("NegativeValueConfiguration" Data..=)
+              Prelude.<$> negativeValueConfiguration,
+            ("NullValueFormatConfiguration" Data..=)
+              Prelude.<$> nullValueFormatConfiguration,
+            ("Prefix" Data..=) Prelude.<$> prefix,
+            ("SeparatorConfiguration" Data..=)
+              Prelude.<$> separatorConfiguration,
+            ("Suffix" Data..=) Prelude.<$> suffix
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PercentileAggregation.hs b/gen/Amazonka/QuickSight/Types/PercentileAggregation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PercentileAggregation.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PercentileAggregation
+-- 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.QuickSight.Types.PercentileAggregation 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
+
+-- | An aggregation based on the percentile of values in a dimension or
+-- measure.
+--
+-- /See:/ 'newPercentileAggregation' smart constructor.
+data PercentileAggregation = PercentileAggregation'
+  { -- | The percentile value. This value can be any numeric constant 0–100. A
+    -- percentile value of 50 computes the median value of the measure.
+    percentileValue :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PercentileAggregation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'percentileValue', 'percentileAggregation_percentileValue' - The percentile value. This value can be any numeric constant 0–100. A
+-- percentile value of 50 computes the median value of the measure.
+newPercentileAggregation ::
+  PercentileAggregation
+newPercentileAggregation =
+  PercentileAggregation'
+    { percentileValue =
+        Prelude.Nothing
+    }
+
+-- | The percentile value. This value can be any numeric constant 0–100. A
+-- percentile value of 50 computes the median value of the measure.
+percentileAggregation_percentileValue :: Lens.Lens' PercentileAggregation (Prelude.Maybe Prelude.Double)
+percentileAggregation_percentileValue = Lens.lens (\PercentileAggregation' {percentileValue} -> percentileValue) (\s@PercentileAggregation' {} a -> s {percentileValue = a} :: PercentileAggregation)
+
+instance Data.FromJSON PercentileAggregation where
+  parseJSON =
+    Data.withObject
+      "PercentileAggregation"
+      ( \x ->
+          PercentileAggregation'
+            Prelude.<$> (x Data..:? "PercentileValue")
+      )
+
+instance Prelude.Hashable PercentileAggregation where
+  hashWithSalt _salt PercentileAggregation' {..} =
+    _salt `Prelude.hashWithSalt` percentileValue
+
+instance Prelude.NFData PercentileAggregation where
+  rnf PercentileAggregation' {..} =
+    Prelude.rnf percentileValue
+
+instance Data.ToJSON PercentileAggregation where
+  toJSON PercentileAggregation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PercentileValue" Data..=)
+              Prelude.<$> percentileValue
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PeriodOverPeriodComputation.hs b/gen/Amazonka/QuickSight/Types/PeriodOverPeriodComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PeriodOverPeriodComputation.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PeriodOverPeriodComputation
+-- 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.QuickSight.Types.PeriodOverPeriodComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The period over period computation configuration.
+--
+-- /See:/ 'newPeriodOverPeriodComputation' smart constructor.
+data PeriodOverPeriodComputation = PeriodOverPeriodComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PeriodOverPeriodComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'periodOverPeriodComputation_name' - The name of a computation.
+--
+-- 'value', 'periodOverPeriodComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'periodOverPeriodComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'periodOverPeriodComputation_time' - The time field that is used in a computation.
+newPeriodOverPeriodComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  PeriodOverPeriodComputation
+newPeriodOverPeriodComputation pComputationId_ pTime_ =
+  PeriodOverPeriodComputation'
+    { name =
+        Prelude.Nothing,
+      value = Prelude.Nothing,
+      computationId = pComputationId_,
+      time = pTime_
+    }
+
+-- | The name of a computation.
+periodOverPeriodComputation_name :: Lens.Lens' PeriodOverPeriodComputation (Prelude.Maybe Prelude.Text)
+periodOverPeriodComputation_name = Lens.lens (\PeriodOverPeriodComputation' {name} -> name) (\s@PeriodOverPeriodComputation' {} a -> s {name = a} :: PeriodOverPeriodComputation)
+
+-- | The value field that is used in a computation.
+periodOverPeriodComputation_value :: Lens.Lens' PeriodOverPeriodComputation (Prelude.Maybe MeasureField)
+periodOverPeriodComputation_value = Lens.lens (\PeriodOverPeriodComputation' {value} -> value) (\s@PeriodOverPeriodComputation' {} a -> s {value = a} :: PeriodOverPeriodComputation)
+
+-- | The ID for a computation.
+periodOverPeriodComputation_computationId :: Lens.Lens' PeriodOverPeriodComputation Prelude.Text
+periodOverPeriodComputation_computationId = Lens.lens (\PeriodOverPeriodComputation' {computationId} -> computationId) (\s@PeriodOverPeriodComputation' {} a -> s {computationId = a} :: PeriodOverPeriodComputation)
+
+-- | The time field that is used in a computation.
+periodOverPeriodComputation_time :: Lens.Lens' PeriodOverPeriodComputation DimensionField
+periodOverPeriodComputation_time = Lens.lens (\PeriodOverPeriodComputation' {time} -> time) (\s@PeriodOverPeriodComputation' {} a -> s {time = a} :: PeriodOverPeriodComputation)
+
+instance Data.FromJSON PeriodOverPeriodComputation where
+  parseJSON =
+    Data.withObject
+      "PeriodOverPeriodComputation"
+      ( \x ->
+          PeriodOverPeriodComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+      )
+
+instance Prelude.Hashable PeriodOverPeriodComputation where
+  hashWithSalt _salt PeriodOverPeriodComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+
+instance Prelude.NFData PeriodOverPeriodComputation where
+  rnf PeriodOverPeriodComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+
+instance Data.ToJSON PeriodOverPeriodComputation where
+  toJSON PeriodOverPeriodComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PeriodToDateComputation.hs b/gen/Amazonka/QuickSight/Types/PeriodToDateComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PeriodToDateComputation.hs
@@ -0,0 +1,155 @@
+{-# 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.QuickSight.Types.PeriodToDateComputation
+-- 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.QuickSight.Types.PeriodToDateComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | The period to date computation configuration.
+--
+-- /See:/ 'newPeriodToDateComputation' smart constructor.
+data PeriodToDateComputation = PeriodToDateComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The time granularity setup of period to date computation. Choose from
+    -- the following options:
+    --
+    -- -   YEAR: Year to date.
+    --
+    -- -   MONTH: Month to date.
+    periodTimeGranularity :: Prelude.Maybe TimeGranularity,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PeriodToDateComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'periodToDateComputation_name' - The name of a computation.
+--
+-- 'periodTimeGranularity', 'periodToDateComputation_periodTimeGranularity' - The time granularity setup of period to date computation. Choose from
+-- the following options:
+--
+-- -   YEAR: Year to date.
+--
+-- -   MONTH: Month to date.
+--
+-- 'value', 'periodToDateComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'periodToDateComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'periodToDateComputation_time' - The time field that is used in a computation.
+newPeriodToDateComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  PeriodToDateComputation
+newPeriodToDateComputation pComputationId_ pTime_ =
+  PeriodToDateComputation'
+    { name = Prelude.Nothing,
+      periodTimeGranularity = Prelude.Nothing,
+      value = Prelude.Nothing,
+      computationId = pComputationId_,
+      time = pTime_
+    }
+
+-- | The name of a computation.
+periodToDateComputation_name :: Lens.Lens' PeriodToDateComputation (Prelude.Maybe Prelude.Text)
+periodToDateComputation_name = Lens.lens (\PeriodToDateComputation' {name} -> name) (\s@PeriodToDateComputation' {} a -> s {name = a} :: PeriodToDateComputation)
+
+-- | The time granularity setup of period to date computation. Choose from
+-- the following options:
+--
+-- -   YEAR: Year to date.
+--
+-- -   MONTH: Month to date.
+periodToDateComputation_periodTimeGranularity :: Lens.Lens' PeriodToDateComputation (Prelude.Maybe TimeGranularity)
+periodToDateComputation_periodTimeGranularity = Lens.lens (\PeriodToDateComputation' {periodTimeGranularity} -> periodTimeGranularity) (\s@PeriodToDateComputation' {} a -> s {periodTimeGranularity = a} :: PeriodToDateComputation)
+
+-- | The value field that is used in a computation.
+periodToDateComputation_value :: Lens.Lens' PeriodToDateComputation (Prelude.Maybe MeasureField)
+periodToDateComputation_value = Lens.lens (\PeriodToDateComputation' {value} -> value) (\s@PeriodToDateComputation' {} a -> s {value = a} :: PeriodToDateComputation)
+
+-- | The ID for a computation.
+periodToDateComputation_computationId :: Lens.Lens' PeriodToDateComputation Prelude.Text
+periodToDateComputation_computationId = Lens.lens (\PeriodToDateComputation' {computationId} -> computationId) (\s@PeriodToDateComputation' {} a -> s {computationId = a} :: PeriodToDateComputation)
+
+-- | The time field that is used in a computation.
+periodToDateComputation_time :: Lens.Lens' PeriodToDateComputation DimensionField
+periodToDateComputation_time = Lens.lens (\PeriodToDateComputation' {time} -> time) (\s@PeriodToDateComputation' {} a -> s {time = a} :: PeriodToDateComputation)
+
+instance Data.FromJSON PeriodToDateComputation where
+  parseJSON =
+    Data.withObject
+      "PeriodToDateComputation"
+      ( \x ->
+          PeriodToDateComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PeriodTimeGranularity")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+      )
+
+instance Prelude.Hashable PeriodToDateComputation where
+  hashWithSalt _salt PeriodToDateComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` periodTimeGranularity
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+
+instance Prelude.NFData PeriodToDateComputation where
+  rnf PeriodToDateComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf periodTimeGranularity
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+
+instance Data.ToJSON PeriodToDateComputation where
+  toJSON PeriodToDateComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("PeriodTimeGranularity" Data..=)
+              Prelude.<$> periodTimeGranularity,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PhysicalTable.hs b/gen/Amazonka/QuickSight/Types/PhysicalTable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PhysicalTable.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.QuickSight.Types.PhysicalTable
+-- 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.QuickSight.Types.PhysicalTable 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.QuickSight.Types.CustomSql
+import Amazonka.QuickSight.Types.RelationalTable
+import Amazonka.QuickSight.Types.S3Source
+
+-- | A view of a data source that contains information about the shape of the
+-- data in the underlying source. This is a variant type structure. For
+-- this structure to be valid, only one of the attributes can be non-null.
+--
+-- /See:/ 'newPhysicalTable' smart constructor.
+data PhysicalTable = PhysicalTable'
+  { -- | A physical table type built from the results of the custom SQL query.
+    customSql :: Prelude.Maybe CustomSql,
+    -- | A physical table type for relational data sources.
+    relationalTable :: Prelude.Maybe RelationalTable,
+    -- | A physical table type for as S3 data source.
+    s3Source :: Prelude.Maybe S3Source
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhysicalTable' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customSql', 'physicalTable_customSql' - A physical table type built from the results of the custom SQL query.
+--
+-- 'relationalTable', 'physicalTable_relationalTable' - A physical table type for relational data sources.
+--
+-- 's3Source', 'physicalTable_s3Source' - A physical table type for as S3 data source.
+newPhysicalTable ::
+  PhysicalTable
+newPhysicalTable =
+  PhysicalTable'
+    { customSql = Prelude.Nothing,
+      relationalTable = Prelude.Nothing,
+      s3Source = Prelude.Nothing
+    }
+
+-- | A physical table type built from the results of the custom SQL query.
+physicalTable_customSql :: Lens.Lens' PhysicalTable (Prelude.Maybe CustomSql)
+physicalTable_customSql = Lens.lens (\PhysicalTable' {customSql} -> customSql) (\s@PhysicalTable' {} a -> s {customSql = a} :: PhysicalTable)
+
+-- | A physical table type for relational data sources.
+physicalTable_relationalTable :: Lens.Lens' PhysicalTable (Prelude.Maybe RelationalTable)
+physicalTable_relationalTable = Lens.lens (\PhysicalTable' {relationalTable} -> relationalTable) (\s@PhysicalTable' {} a -> s {relationalTable = a} :: PhysicalTable)
+
+-- | A physical table type for as S3 data source.
+physicalTable_s3Source :: Lens.Lens' PhysicalTable (Prelude.Maybe S3Source)
+physicalTable_s3Source = Lens.lens (\PhysicalTable' {s3Source} -> s3Source) (\s@PhysicalTable' {} a -> s {s3Source = a} :: PhysicalTable)
+
+instance Data.FromJSON PhysicalTable where
+  parseJSON =
+    Data.withObject
+      "PhysicalTable"
+      ( \x ->
+          PhysicalTable'
+            Prelude.<$> (x Data..:? "CustomSql")
+            Prelude.<*> (x Data..:? "RelationalTable")
+            Prelude.<*> (x Data..:? "S3Source")
+      )
+
+instance Prelude.Hashable PhysicalTable where
+  hashWithSalt _salt PhysicalTable' {..} =
+    _salt
+      `Prelude.hashWithSalt` customSql
+      `Prelude.hashWithSalt` relationalTable
+      `Prelude.hashWithSalt` s3Source
+
+instance Prelude.NFData PhysicalTable where
+  rnf PhysicalTable' {..} =
+    Prelude.rnf customSql
+      `Prelude.seq` Prelude.rnf relationalTable
+      `Prelude.seq` Prelude.rnf s3Source
+
+instance Data.ToJSON PhysicalTable where
+  toJSON PhysicalTable' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomSql" Data..=) Prelude.<$> customSql,
+            ("RelationalTable" Data..=)
+              Prelude.<$> relationalTable,
+            ("S3Source" Data..=) Prelude.<$> s3Source
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PieChartAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/PieChartAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PieChartAggregatedFieldWells.hs
@@ -0,0 +1,116 @@
+{-# 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.QuickSight.Types.PieChartAggregatedFieldWells
+-- 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.QuickSight.Types.PieChartAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a pie chart.
+--
+-- /See:/ 'newPieChartAggregatedFieldWells' smart constructor.
+data PieChartAggregatedFieldWells = PieChartAggregatedFieldWells'
+  { -- | The category (group\/color) field wells of a pie chart.
+    category :: Prelude.Maybe [DimensionField],
+    -- | The small multiples field well of a pie chart.
+    smallMultiples :: Prelude.Maybe [DimensionField],
+    -- | The value field wells of a pie chart. Values are aggregated based on
+    -- categories.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PieChartAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'category', 'pieChartAggregatedFieldWells_category' - The category (group\/color) field wells of a pie chart.
+--
+-- 'smallMultiples', 'pieChartAggregatedFieldWells_smallMultiples' - The small multiples field well of a pie chart.
+--
+-- 'values', 'pieChartAggregatedFieldWells_values' - The value field wells of a pie chart. Values are aggregated based on
+-- categories.
+newPieChartAggregatedFieldWells ::
+  PieChartAggregatedFieldWells
+newPieChartAggregatedFieldWells =
+  PieChartAggregatedFieldWells'
+    { category =
+        Prelude.Nothing,
+      smallMultiples = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The category (group\/color) field wells of a pie chart.
+pieChartAggregatedFieldWells_category :: Lens.Lens' PieChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+pieChartAggregatedFieldWells_category = Lens.lens (\PieChartAggregatedFieldWells' {category} -> category) (\s@PieChartAggregatedFieldWells' {} a -> s {category = a} :: PieChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The small multiples field well of a pie chart.
+pieChartAggregatedFieldWells_smallMultiples :: Lens.Lens' PieChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+pieChartAggregatedFieldWells_smallMultiples = Lens.lens (\PieChartAggregatedFieldWells' {smallMultiples} -> smallMultiples) (\s@PieChartAggregatedFieldWells' {} a -> s {smallMultiples = a} :: PieChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a pie chart. Values are aggregated based on
+-- categories.
+pieChartAggregatedFieldWells_values :: Lens.Lens' PieChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+pieChartAggregatedFieldWells_values = Lens.lens (\PieChartAggregatedFieldWells' {values} -> values) (\s@PieChartAggregatedFieldWells' {} a -> s {values = a} :: PieChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PieChartAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "PieChartAggregatedFieldWells"
+      ( \x ->
+          PieChartAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Category" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiples" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    PieChartAggregatedFieldWells
+  where
+  hashWithSalt _salt PieChartAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` smallMultiples
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData PieChartAggregatedFieldWells where
+  rnf PieChartAggregatedFieldWells' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf smallMultiples
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON PieChartAggregatedFieldWells where
+  toJSON PieChartAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Category" Data..=) Prelude.<$> category,
+            ("SmallMultiples" Data..=)
+              Prelude.<$> smallMultiples,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PieChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/PieChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PieChartConfiguration.hs
@@ -0,0 +1,229 @@
+{-# 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.QuickSight.Types.PieChartConfiguration
+-- 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.QuickSight.Types.PieChartConfiguration 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.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ContributionAnalysisDefault
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.DonutOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.PieChartFieldWells
+import Amazonka.QuickSight.Types.PieChartSortConfiguration
+import Amazonka.QuickSight.Types.SmallMultiplesOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a pie chart.
+--
+-- /See:/ 'newPieChartConfiguration' smart constructor.
+data PieChartConfiguration = PieChartConfiguration'
+  { -- | The label options of the group\/color that is displayed in a pie chart.
+    categoryLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The contribution analysis (anomaly configuration) setup of the visual.
+    contributionAnalysisDefaults :: Prelude.Maybe (Prelude.NonEmpty ContributionAnalysisDefault),
+    -- | The options that determine if visual data labels are displayed.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The options that determine the shape of the chart. This option
+    -- determines whether the chart is a pie chart or a donut chart.
+    donutOptions :: Prelude.Maybe DonutOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe PieChartFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The small multiples setup for the visual.
+    smallMultiplesOptions :: Prelude.Maybe SmallMultiplesOptions,
+    -- | The sort configuration of a pie chart.
+    sortConfiguration :: Prelude.Maybe PieChartSortConfiguration,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The label options for the value that is displayed in a pie chart.
+    valueLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The palette (chart color) display setup of the visual.
+    visualPalette :: Prelude.Maybe VisualPalette
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PieChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryLabelOptions', 'pieChartConfiguration_categoryLabelOptions' - The label options of the group\/color that is displayed in a pie chart.
+--
+-- 'contributionAnalysisDefaults', 'pieChartConfiguration_contributionAnalysisDefaults' - The contribution analysis (anomaly configuration) setup of the visual.
+--
+-- 'dataLabels', 'pieChartConfiguration_dataLabels' - The options that determine if visual data labels are displayed.
+--
+-- 'donutOptions', 'pieChartConfiguration_donutOptions' - The options that determine the shape of the chart. This option
+-- determines whether the chart is a pie chart or a donut chart.
+--
+-- 'fieldWells', 'pieChartConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'pieChartConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'smallMultiplesOptions', 'pieChartConfiguration_smallMultiplesOptions' - The small multiples setup for the visual.
+--
+-- 'sortConfiguration', 'pieChartConfiguration_sortConfiguration' - The sort configuration of a pie chart.
+--
+-- 'tooltip', 'pieChartConfiguration_tooltip' - The tooltip display setup of the visual.
+--
+-- 'valueLabelOptions', 'pieChartConfiguration_valueLabelOptions' - The label options for the value that is displayed in a pie chart.
+--
+-- 'visualPalette', 'pieChartConfiguration_visualPalette' - The palette (chart color) display setup of the visual.
+newPieChartConfiguration ::
+  PieChartConfiguration
+newPieChartConfiguration =
+  PieChartConfiguration'
+    { categoryLabelOptions =
+        Prelude.Nothing,
+      contributionAnalysisDefaults = Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      donutOptions = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      smallMultiplesOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      valueLabelOptions = Prelude.Nothing,
+      visualPalette = Prelude.Nothing
+    }
+
+-- | The label options of the group\/color that is displayed in a pie chart.
+pieChartConfiguration_categoryLabelOptions :: Lens.Lens' PieChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+pieChartConfiguration_categoryLabelOptions = Lens.lens (\PieChartConfiguration' {categoryLabelOptions} -> categoryLabelOptions) (\s@PieChartConfiguration' {} a -> s {categoryLabelOptions = a} :: PieChartConfiguration)
+
+-- | The contribution analysis (anomaly configuration) setup of the visual.
+pieChartConfiguration_contributionAnalysisDefaults :: Lens.Lens' PieChartConfiguration (Prelude.Maybe (Prelude.NonEmpty ContributionAnalysisDefault))
+pieChartConfiguration_contributionAnalysisDefaults = Lens.lens (\PieChartConfiguration' {contributionAnalysisDefaults} -> contributionAnalysisDefaults) (\s@PieChartConfiguration' {} a -> s {contributionAnalysisDefaults = a} :: PieChartConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The options that determine if visual data labels are displayed.
+pieChartConfiguration_dataLabels :: Lens.Lens' PieChartConfiguration (Prelude.Maybe DataLabelOptions)
+pieChartConfiguration_dataLabels = Lens.lens (\PieChartConfiguration' {dataLabels} -> dataLabels) (\s@PieChartConfiguration' {} a -> s {dataLabels = a} :: PieChartConfiguration)
+
+-- | The options that determine the shape of the chart. This option
+-- determines whether the chart is a pie chart or a donut chart.
+pieChartConfiguration_donutOptions :: Lens.Lens' PieChartConfiguration (Prelude.Maybe DonutOptions)
+pieChartConfiguration_donutOptions = Lens.lens (\PieChartConfiguration' {donutOptions} -> donutOptions) (\s@PieChartConfiguration' {} a -> s {donutOptions = a} :: PieChartConfiguration)
+
+-- | The field wells of the visual.
+pieChartConfiguration_fieldWells :: Lens.Lens' PieChartConfiguration (Prelude.Maybe PieChartFieldWells)
+pieChartConfiguration_fieldWells = Lens.lens (\PieChartConfiguration' {fieldWells} -> fieldWells) (\s@PieChartConfiguration' {} a -> s {fieldWells = a} :: PieChartConfiguration)
+
+-- | The legend display setup of the visual.
+pieChartConfiguration_legend :: Lens.Lens' PieChartConfiguration (Prelude.Maybe LegendOptions)
+pieChartConfiguration_legend = Lens.lens (\PieChartConfiguration' {legend} -> legend) (\s@PieChartConfiguration' {} a -> s {legend = a} :: PieChartConfiguration)
+
+-- | The small multiples setup for the visual.
+pieChartConfiguration_smallMultiplesOptions :: Lens.Lens' PieChartConfiguration (Prelude.Maybe SmallMultiplesOptions)
+pieChartConfiguration_smallMultiplesOptions = Lens.lens (\PieChartConfiguration' {smallMultiplesOptions} -> smallMultiplesOptions) (\s@PieChartConfiguration' {} a -> s {smallMultiplesOptions = a} :: PieChartConfiguration)
+
+-- | The sort configuration of a pie chart.
+pieChartConfiguration_sortConfiguration :: Lens.Lens' PieChartConfiguration (Prelude.Maybe PieChartSortConfiguration)
+pieChartConfiguration_sortConfiguration = Lens.lens (\PieChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@PieChartConfiguration' {} a -> s {sortConfiguration = a} :: PieChartConfiguration)
+
+-- | The tooltip display setup of the visual.
+pieChartConfiguration_tooltip :: Lens.Lens' PieChartConfiguration (Prelude.Maybe TooltipOptions)
+pieChartConfiguration_tooltip = Lens.lens (\PieChartConfiguration' {tooltip} -> tooltip) (\s@PieChartConfiguration' {} a -> s {tooltip = a} :: PieChartConfiguration)
+
+-- | The label options for the value that is displayed in a pie chart.
+pieChartConfiguration_valueLabelOptions :: Lens.Lens' PieChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+pieChartConfiguration_valueLabelOptions = Lens.lens (\PieChartConfiguration' {valueLabelOptions} -> valueLabelOptions) (\s@PieChartConfiguration' {} a -> s {valueLabelOptions = a} :: PieChartConfiguration)
+
+-- | The palette (chart color) display setup of the visual.
+pieChartConfiguration_visualPalette :: Lens.Lens' PieChartConfiguration (Prelude.Maybe VisualPalette)
+pieChartConfiguration_visualPalette = Lens.lens (\PieChartConfiguration' {visualPalette} -> visualPalette) (\s@PieChartConfiguration' {} a -> s {visualPalette = a} :: PieChartConfiguration)
+
+instance Data.FromJSON PieChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "PieChartConfiguration"
+      ( \x ->
+          PieChartConfiguration'
+            Prelude.<$> (x Data..:? "CategoryLabelOptions")
+            Prelude.<*> (x Data..:? "ContributionAnalysisDefaults")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "DonutOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "SmallMultiplesOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "ValueLabelOptions")
+            Prelude.<*> (x Data..:? "VisualPalette")
+      )
+
+instance Prelude.Hashable PieChartConfiguration where
+  hashWithSalt _salt PieChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryLabelOptions
+      `Prelude.hashWithSalt` contributionAnalysisDefaults
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` donutOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` smallMultiplesOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` valueLabelOptions
+      `Prelude.hashWithSalt` visualPalette
+
+instance Prelude.NFData PieChartConfiguration where
+  rnf PieChartConfiguration' {..} =
+    Prelude.rnf categoryLabelOptions
+      `Prelude.seq` Prelude.rnf contributionAnalysisDefaults
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf donutOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf smallMultiplesOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf valueLabelOptions
+      `Prelude.seq` Prelude.rnf visualPalette
+
+instance Data.ToJSON PieChartConfiguration where
+  toJSON PieChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryLabelOptions" Data..=)
+              Prelude.<$> categoryLabelOptions,
+            ("ContributionAnalysisDefaults" Data..=)
+              Prelude.<$> contributionAnalysisDefaults,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("DonutOptions" Data..=) Prelude.<$> donutOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("SmallMultiplesOptions" Data..=)
+              Prelude.<$> smallMultiplesOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("ValueLabelOptions" Data..=)
+              Prelude.<$> valueLabelOptions,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PieChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/PieChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PieChartFieldWells.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.QuickSight.Types.PieChartFieldWells
+-- 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.QuickSight.Types.PieChartFieldWells 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.QuickSight.Types.PieChartAggregatedFieldWells
+
+-- | The field well configuration of a pie chart.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newPieChartFieldWells' smart constructor.
+data PieChartFieldWells = PieChartFieldWells'
+  { -- | The field well configuration of a pie chart.
+    pieChartAggregatedFieldWells :: Prelude.Maybe PieChartAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PieChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pieChartAggregatedFieldWells', 'pieChartFieldWells_pieChartAggregatedFieldWells' - The field well configuration of a pie chart.
+newPieChartFieldWells ::
+  PieChartFieldWells
+newPieChartFieldWells =
+  PieChartFieldWells'
+    { pieChartAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The field well configuration of a pie chart.
+pieChartFieldWells_pieChartAggregatedFieldWells :: Lens.Lens' PieChartFieldWells (Prelude.Maybe PieChartAggregatedFieldWells)
+pieChartFieldWells_pieChartAggregatedFieldWells = Lens.lens (\PieChartFieldWells' {pieChartAggregatedFieldWells} -> pieChartAggregatedFieldWells) (\s@PieChartFieldWells' {} a -> s {pieChartAggregatedFieldWells = a} :: PieChartFieldWells)
+
+instance Data.FromJSON PieChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "PieChartFieldWells"
+      ( \x ->
+          PieChartFieldWells'
+            Prelude.<$> (x Data..:? "PieChartAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable PieChartFieldWells where
+  hashWithSalt _salt PieChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` pieChartAggregatedFieldWells
+
+instance Prelude.NFData PieChartFieldWells where
+  rnf PieChartFieldWells' {..} =
+    Prelude.rnf pieChartAggregatedFieldWells
+
+instance Data.ToJSON PieChartFieldWells where
+  toJSON PieChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PieChartAggregatedFieldWells" Data..=)
+              Prelude.<$> pieChartAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PieChartSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/PieChartSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PieChartSortConfiguration.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PieChartSortConfiguration
+-- 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.QuickSight.Types.PieChartSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a pie chart.
+--
+-- /See:/ 'newPieChartSortConfiguration' smart constructor.
+data PieChartSortConfiguration = PieChartSortConfiguration'
+  { -- | The limit on the number of categories that are displayed in a pie chart.
+    categoryItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the category fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions],
+    -- | The limit on the number of small multiples panels that are displayed.
+    smallMultiplesLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the small multiples field.
+    smallMultiplesSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PieChartSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryItemsLimit', 'pieChartSortConfiguration_categoryItemsLimit' - The limit on the number of categories that are displayed in a pie chart.
+--
+-- 'categorySort', 'pieChartSortConfiguration_categorySort' - The sort configuration of the category fields.
+--
+-- 'smallMultiplesLimitConfiguration', 'pieChartSortConfiguration_smallMultiplesLimitConfiguration' - The limit on the number of small multiples panels that are displayed.
+--
+-- 'smallMultiplesSort', 'pieChartSortConfiguration_smallMultiplesSort' - The sort configuration of the small multiples field.
+newPieChartSortConfiguration ::
+  PieChartSortConfiguration
+newPieChartSortConfiguration =
+  PieChartSortConfiguration'
+    { categoryItemsLimit =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing,
+      smallMultiplesLimitConfiguration =
+        Prelude.Nothing,
+      smallMultiplesSort = Prelude.Nothing
+    }
+
+-- | The limit on the number of categories that are displayed in a pie chart.
+pieChartSortConfiguration_categoryItemsLimit :: Lens.Lens' PieChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+pieChartSortConfiguration_categoryItemsLimit = Lens.lens (\PieChartSortConfiguration' {categoryItemsLimit} -> categoryItemsLimit) (\s@PieChartSortConfiguration' {} a -> s {categoryItemsLimit = a} :: PieChartSortConfiguration)
+
+-- | The sort configuration of the category fields.
+pieChartSortConfiguration_categorySort :: Lens.Lens' PieChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+pieChartSortConfiguration_categorySort = Lens.lens (\PieChartSortConfiguration' {categorySort} -> categorySort) (\s@PieChartSortConfiguration' {} a -> s {categorySort = a} :: PieChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The limit on the number of small multiples panels that are displayed.
+pieChartSortConfiguration_smallMultiplesLimitConfiguration :: Lens.Lens' PieChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+pieChartSortConfiguration_smallMultiplesLimitConfiguration = Lens.lens (\PieChartSortConfiguration' {smallMultiplesLimitConfiguration} -> smallMultiplesLimitConfiguration) (\s@PieChartSortConfiguration' {} a -> s {smallMultiplesLimitConfiguration = a} :: PieChartSortConfiguration)
+
+-- | The sort configuration of the small multiples field.
+pieChartSortConfiguration_smallMultiplesSort :: Lens.Lens' PieChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+pieChartSortConfiguration_smallMultiplesSort = Lens.lens (\PieChartSortConfiguration' {smallMultiplesSort} -> smallMultiplesSort) (\s@PieChartSortConfiguration' {} a -> s {smallMultiplesSort = a} :: PieChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PieChartSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "PieChartSortConfiguration"
+      ( \x ->
+          PieChartSortConfiguration'
+            Prelude.<$> (x Data..:? "CategoryItemsLimit")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SmallMultiplesLimitConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "SmallMultiplesSort"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PieChartSortConfiguration where
+  hashWithSalt _salt PieChartSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryItemsLimit
+      `Prelude.hashWithSalt` categorySort
+      `Prelude.hashWithSalt` smallMultiplesLimitConfiguration
+      `Prelude.hashWithSalt` smallMultiplesSort
+
+instance Prelude.NFData PieChartSortConfiguration where
+  rnf PieChartSortConfiguration' {..} =
+    Prelude.rnf categoryItemsLimit
+      `Prelude.seq` Prelude.rnf categorySort
+      `Prelude.seq` Prelude.rnf smallMultiplesLimitConfiguration
+      `Prelude.seq` Prelude.rnf smallMultiplesSort
+
+instance Data.ToJSON PieChartSortConfiguration where
+  toJSON PieChartSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryItemsLimit" Data..=)
+              Prelude.<$> categoryItemsLimit,
+            ("CategorySort" Data..=) Prelude.<$> categorySort,
+            ("SmallMultiplesLimitConfiguration" Data..=)
+              Prelude.<$> smallMultiplesLimitConfiguration,
+            ("SmallMultiplesSort" Data..=)
+              Prelude.<$> smallMultiplesSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PieChartVisual.hs b/gen/Amazonka/QuickSight/Types/PieChartVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PieChartVisual.hs
@@ -0,0 +1,180 @@
+{-# 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.QuickSight.Types.PieChartVisual
+-- 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.QuickSight.Types.PieChartVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.PieChartConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A pie or donut chart.
+--
+-- The @PieChartVisual@ structure describes a visual that is a member of
+-- the pie chart family.
+--
+-- The following charts can be described by using this structure:
+--
+-- -   Pie charts
+--
+-- -   Donut charts
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/pie-chart.html Using pie charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/donut-chart.html Using donut charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newPieChartVisual' smart constructor.
+data PieChartVisual = PieChartVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a pie chart.
+    chartConfiguration :: Prelude.Maybe PieChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PieChartVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'pieChartVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'pieChartVisual_chartConfiguration' - The configuration of a pie chart.
+--
+-- 'columnHierarchies', 'pieChartVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'pieChartVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'pieChartVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'pieChartVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newPieChartVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  PieChartVisual
+newPieChartVisual pVisualId_ =
+  PieChartVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+pieChartVisual_actions :: Lens.Lens' PieChartVisual (Prelude.Maybe [VisualCustomAction])
+pieChartVisual_actions = Lens.lens (\PieChartVisual' {actions} -> actions) (\s@PieChartVisual' {} a -> s {actions = a} :: PieChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a pie chart.
+pieChartVisual_chartConfiguration :: Lens.Lens' PieChartVisual (Prelude.Maybe PieChartConfiguration)
+pieChartVisual_chartConfiguration = Lens.lens (\PieChartVisual' {chartConfiguration} -> chartConfiguration) (\s@PieChartVisual' {} a -> s {chartConfiguration = a} :: PieChartVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+pieChartVisual_columnHierarchies :: Lens.Lens' PieChartVisual (Prelude.Maybe [ColumnHierarchy])
+pieChartVisual_columnHierarchies = Lens.lens (\PieChartVisual' {columnHierarchies} -> columnHierarchies) (\s@PieChartVisual' {} a -> s {columnHierarchies = a} :: PieChartVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+pieChartVisual_subtitle :: Lens.Lens' PieChartVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+pieChartVisual_subtitle = Lens.lens (\PieChartVisual' {subtitle} -> subtitle) (\s@PieChartVisual' {} a -> s {subtitle = a} :: PieChartVisual)
+
+-- | The title that is displayed on the visual.
+pieChartVisual_title :: Lens.Lens' PieChartVisual (Prelude.Maybe VisualTitleLabelOptions)
+pieChartVisual_title = Lens.lens (\PieChartVisual' {title} -> title) (\s@PieChartVisual' {} a -> s {title = a} :: PieChartVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+pieChartVisual_visualId :: Lens.Lens' PieChartVisual Prelude.Text
+pieChartVisual_visualId = Lens.lens (\PieChartVisual' {visualId} -> visualId) (\s@PieChartVisual' {} a -> s {visualId = a} :: PieChartVisual)
+
+instance Data.FromJSON PieChartVisual where
+  parseJSON =
+    Data.withObject
+      "PieChartVisual"
+      ( \x ->
+          PieChartVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable PieChartVisual where
+  hashWithSalt _salt PieChartVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData PieChartVisual where
+  rnf PieChartVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON PieChartVisual where
+  toJSON PieChartVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotFieldSortOptions.hs b/gen/Amazonka/QuickSight/Types/PivotFieldSortOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotFieldSortOptions.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotFieldSortOptions
+-- 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.QuickSight.Types.PivotFieldSortOptions 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.QuickSight.Types.PivotTableSortBy
+
+-- | The field sort options for a pivot table sort configuration.
+--
+-- /See:/ 'newPivotFieldSortOptions' smart constructor.
+data PivotFieldSortOptions = PivotFieldSortOptions'
+  { -- | The field ID for the field sort options.
+    fieldId :: Prelude.Text,
+    -- | The sort by field for the field sort options.
+    sortBy :: PivotTableSortBy
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotFieldSortOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'pivotFieldSortOptions_fieldId' - The field ID for the field sort options.
+--
+-- 'sortBy', 'pivotFieldSortOptions_sortBy' - The sort by field for the field sort options.
+newPivotFieldSortOptions ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'sortBy'
+  PivotTableSortBy ->
+  PivotFieldSortOptions
+newPivotFieldSortOptions pFieldId_ pSortBy_ =
+  PivotFieldSortOptions'
+    { fieldId = pFieldId_,
+      sortBy = pSortBy_
+    }
+
+-- | The field ID for the field sort options.
+pivotFieldSortOptions_fieldId :: Lens.Lens' PivotFieldSortOptions Prelude.Text
+pivotFieldSortOptions_fieldId = Lens.lens (\PivotFieldSortOptions' {fieldId} -> fieldId) (\s@PivotFieldSortOptions' {} a -> s {fieldId = a} :: PivotFieldSortOptions)
+
+-- | The sort by field for the field sort options.
+pivotFieldSortOptions_sortBy :: Lens.Lens' PivotFieldSortOptions PivotTableSortBy
+pivotFieldSortOptions_sortBy = Lens.lens (\PivotFieldSortOptions' {sortBy} -> sortBy) (\s@PivotFieldSortOptions' {} a -> s {sortBy = a} :: PivotFieldSortOptions)
+
+instance Data.FromJSON PivotFieldSortOptions where
+  parseJSON =
+    Data.withObject
+      "PivotFieldSortOptions"
+      ( \x ->
+          PivotFieldSortOptions'
+            Prelude.<$> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "SortBy")
+      )
+
+instance Prelude.Hashable PivotFieldSortOptions where
+  hashWithSalt _salt PivotFieldSortOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` sortBy
+
+instance Prelude.NFData PivotFieldSortOptions where
+  rnf PivotFieldSortOptions' {..} =
+    Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf sortBy
+
+instance Data.ToJSON PivotFieldSortOptions where
+  toJSON PivotFieldSortOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("SortBy" Data..= sortBy)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/PivotTableAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableAggregatedFieldWells.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableAggregatedFieldWells
+-- 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.QuickSight.Types.PivotTableAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field well for the pivot table.
+--
+-- /See:/ 'newPivotTableAggregatedFieldWells' smart constructor.
+data PivotTableAggregatedFieldWells = PivotTableAggregatedFieldWells'
+  { -- | The columns field well for a pivot table. Values are grouped by columns
+    -- fields.
+    columns :: Prelude.Maybe [DimensionField],
+    -- | The rows field well for a pivot table. Values are grouped by rows
+    -- fields.
+    rows :: Prelude.Maybe [DimensionField],
+    -- | The values field well for a pivot table. Values are aggregated based on
+    -- rows and columns fields.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columns', 'pivotTableAggregatedFieldWells_columns' - The columns field well for a pivot table. Values are grouped by columns
+-- fields.
+--
+-- 'rows', 'pivotTableAggregatedFieldWells_rows' - The rows field well for a pivot table. Values are grouped by rows
+-- fields.
+--
+-- 'values', 'pivotTableAggregatedFieldWells_values' - The values field well for a pivot table. Values are aggregated based on
+-- rows and columns fields.
+newPivotTableAggregatedFieldWells ::
+  PivotTableAggregatedFieldWells
+newPivotTableAggregatedFieldWells =
+  PivotTableAggregatedFieldWells'
+    { columns =
+        Prelude.Nothing,
+      rows = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The columns field well for a pivot table. Values are grouped by columns
+-- fields.
+pivotTableAggregatedFieldWells_columns :: Lens.Lens' PivotTableAggregatedFieldWells (Prelude.Maybe [DimensionField])
+pivotTableAggregatedFieldWells_columns = Lens.lens (\PivotTableAggregatedFieldWells' {columns} -> columns) (\s@PivotTableAggregatedFieldWells' {} a -> s {columns = a} :: PivotTableAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The rows field well for a pivot table. Values are grouped by rows
+-- fields.
+pivotTableAggregatedFieldWells_rows :: Lens.Lens' PivotTableAggregatedFieldWells (Prelude.Maybe [DimensionField])
+pivotTableAggregatedFieldWells_rows = Lens.lens (\PivotTableAggregatedFieldWells' {rows} -> rows) (\s@PivotTableAggregatedFieldWells' {} a -> s {rows = a} :: PivotTableAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The values field well for a pivot table. Values are aggregated based on
+-- rows and columns fields.
+pivotTableAggregatedFieldWells_values :: Lens.Lens' PivotTableAggregatedFieldWells (Prelude.Maybe [MeasureField])
+pivotTableAggregatedFieldWells_values = Lens.lens (\PivotTableAggregatedFieldWells' {values} -> values) (\s@PivotTableAggregatedFieldWells' {} a -> s {values = a} :: PivotTableAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PivotTableAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "PivotTableAggregatedFieldWells"
+      ( \x ->
+          PivotTableAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Columns" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Rows" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    PivotTableAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    PivotTableAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` columns
+        `Prelude.hashWithSalt` rows
+        `Prelude.hashWithSalt` values
+
+instance
+  Prelude.NFData
+    PivotTableAggregatedFieldWells
+  where
+  rnf PivotTableAggregatedFieldWells' {..} =
+    Prelude.rnf columns
+      `Prelude.seq` Prelude.rnf rows
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON PivotTableAggregatedFieldWells where
+  toJSON PivotTableAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Columns" Data..=) Prelude.<$> columns,
+            ("Rows" Data..=) Prelude.<$> rows,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableCellConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/PivotTableCellConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableCellConditionalFormatting.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableCellConditionalFormatting
+-- 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.QuickSight.Types.PivotTableCellConditionalFormatting 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.QuickSight.Types.PivotTableConditionalFormattingScope
+import Amazonka.QuickSight.Types.TextConditionalFormat
+
+-- | The cell conditional formatting option for a pivot table.
+--
+-- /See:/ 'newPivotTableCellConditionalFormatting' smart constructor.
+data PivotTableCellConditionalFormatting = PivotTableCellConditionalFormatting'
+  { -- | The scope of the cell for conditional formatting.
+    scope :: Prelude.Maybe PivotTableConditionalFormattingScope,
+    -- | The text format of the cell for conditional formatting.
+    textFormat :: Prelude.Maybe TextConditionalFormat,
+    -- | The field ID of the cell for conditional formatting.
+    fieldId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableCellConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'scope', 'pivotTableCellConditionalFormatting_scope' - The scope of the cell for conditional formatting.
+--
+-- 'textFormat', 'pivotTableCellConditionalFormatting_textFormat' - The text format of the cell for conditional formatting.
+--
+-- 'fieldId', 'pivotTableCellConditionalFormatting_fieldId' - The field ID of the cell for conditional formatting.
+newPivotTableCellConditionalFormatting ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  PivotTableCellConditionalFormatting
+newPivotTableCellConditionalFormatting pFieldId_ =
+  PivotTableCellConditionalFormatting'
+    { scope =
+        Prelude.Nothing,
+      textFormat = Prelude.Nothing,
+      fieldId = pFieldId_
+    }
+
+-- | The scope of the cell for conditional formatting.
+pivotTableCellConditionalFormatting_scope :: Lens.Lens' PivotTableCellConditionalFormatting (Prelude.Maybe PivotTableConditionalFormattingScope)
+pivotTableCellConditionalFormatting_scope = Lens.lens (\PivotTableCellConditionalFormatting' {scope} -> scope) (\s@PivotTableCellConditionalFormatting' {} a -> s {scope = a} :: PivotTableCellConditionalFormatting)
+
+-- | The text format of the cell for conditional formatting.
+pivotTableCellConditionalFormatting_textFormat :: Lens.Lens' PivotTableCellConditionalFormatting (Prelude.Maybe TextConditionalFormat)
+pivotTableCellConditionalFormatting_textFormat = Lens.lens (\PivotTableCellConditionalFormatting' {textFormat} -> textFormat) (\s@PivotTableCellConditionalFormatting' {} a -> s {textFormat = a} :: PivotTableCellConditionalFormatting)
+
+-- | The field ID of the cell for conditional formatting.
+pivotTableCellConditionalFormatting_fieldId :: Lens.Lens' PivotTableCellConditionalFormatting Prelude.Text
+pivotTableCellConditionalFormatting_fieldId = Lens.lens (\PivotTableCellConditionalFormatting' {fieldId} -> fieldId) (\s@PivotTableCellConditionalFormatting' {} a -> s {fieldId = a} :: PivotTableCellConditionalFormatting)
+
+instance
+  Data.FromJSON
+    PivotTableCellConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "PivotTableCellConditionalFormatting"
+      ( \x ->
+          PivotTableCellConditionalFormatting'
+            Prelude.<$> (x Data..:? "Scope")
+            Prelude.<*> (x Data..:? "TextFormat")
+            Prelude.<*> (x Data..: "FieldId")
+      )
+
+instance
+  Prelude.Hashable
+    PivotTableCellConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    PivotTableCellConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` scope
+        `Prelude.hashWithSalt` textFormat
+        `Prelude.hashWithSalt` fieldId
+
+instance
+  Prelude.NFData
+    PivotTableCellConditionalFormatting
+  where
+  rnf PivotTableCellConditionalFormatting' {..} =
+    Prelude.rnf scope
+      `Prelude.seq` Prelude.rnf textFormat
+      `Prelude.seq` Prelude.rnf fieldId
+
+instance
+  Data.ToJSON
+    PivotTableCellConditionalFormatting
+  where
+  toJSON PivotTableCellConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Scope" Data..=) Prelude.<$> scope,
+            ("TextFormat" Data..=) Prelude.<$> textFormat,
+            Prelude.Just ("FieldId" Data..= fieldId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormatting.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableConditionalFormatting
+-- 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.QuickSight.Types.PivotTableConditionalFormatting 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.QuickSight.Types.PivotTableConditionalFormattingOption
+
+-- | The conditional formatting for a @PivotTableVisual@.
+--
+-- /See:/ 'newPivotTableConditionalFormatting' smart constructor.
+data PivotTableConditionalFormatting = PivotTableConditionalFormatting'
+  { -- | Conditional formatting options for a @PivotTableVisual@.
+    conditionalFormattingOptions :: Prelude.Maybe [PivotTableConditionalFormattingOption]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conditionalFormattingOptions', 'pivotTableConditionalFormatting_conditionalFormattingOptions' - Conditional formatting options for a @PivotTableVisual@.
+newPivotTableConditionalFormatting ::
+  PivotTableConditionalFormatting
+newPivotTableConditionalFormatting =
+  PivotTableConditionalFormatting'
+    { conditionalFormattingOptions =
+        Prelude.Nothing
+    }
+
+-- | Conditional formatting options for a @PivotTableVisual@.
+pivotTableConditionalFormatting_conditionalFormattingOptions :: Lens.Lens' PivotTableConditionalFormatting (Prelude.Maybe [PivotTableConditionalFormattingOption])
+pivotTableConditionalFormatting_conditionalFormattingOptions = Lens.lens (\PivotTableConditionalFormatting' {conditionalFormattingOptions} -> conditionalFormattingOptions) (\s@PivotTableConditionalFormatting' {} a -> s {conditionalFormattingOptions = a} :: PivotTableConditionalFormatting) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    PivotTableConditionalFormatting
+  where
+  parseJSON =
+    Data.withObject
+      "PivotTableConditionalFormatting"
+      ( \x ->
+          PivotTableConditionalFormatting'
+            Prelude.<$> ( x
+                            Data..:? "ConditionalFormattingOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    PivotTableConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    PivotTableConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` conditionalFormattingOptions
+
+instance
+  Prelude.NFData
+    PivotTableConditionalFormatting
+  where
+  rnf PivotTableConditionalFormatting' {..} =
+    Prelude.rnf conditionalFormattingOptions
+
+instance Data.ToJSON PivotTableConditionalFormatting where
+  toJSON PivotTableConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConditionalFormattingOptions" Data..=)
+              Prelude.<$> conditionalFormattingOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingOption.hs b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingOption.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.QuickSight.Types.PivotTableConditionalFormattingOption
+-- 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.QuickSight.Types.PivotTableConditionalFormattingOption 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.QuickSight.Types.PivotTableCellConditionalFormatting
+
+-- | Conditional formatting options for a @PivotTableVisual@.
+--
+-- /See:/ 'newPivotTableConditionalFormattingOption' smart constructor.
+data PivotTableConditionalFormattingOption = PivotTableConditionalFormattingOption'
+  { -- | The cell conditional formatting option for a pivot table.
+    cell :: Prelude.Maybe PivotTableCellConditionalFormatting
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableConditionalFormattingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cell', 'pivotTableConditionalFormattingOption_cell' - The cell conditional formatting option for a pivot table.
+newPivotTableConditionalFormattingOption ::
+  PivotTableConditionalFormattingOption
+newPivotTableConditionalFormattingOption =
+  PivotTableConditionalFormattingOption'
+    { cell =
+        Prelude.Nothing
+    }
+
+-- | The cell conditional formatting option for a pivot table.
+pivotTableConditionalFormattingOption_cell :: Lens.Lens' PivotTableConditionalFormattingOption (Prelude.Maybe PivotTableCellConditionalFormatting)
+pivotTableConditionalFormattingOption_cell = Lens.lens (\PivotTableConditionalFormattingOption' {cell} -> cell) (\s@PivotTableConditionalFormattingOption' {} a -> s {cell = a} :: PivotTableConditionalFormattingOption)
+
+instance
+  Data.FromJSON
+    PivotTableConditionalFormattingOption
+  where
+  parseJSON =
+    Data.withObject
+      "PivotTableConditionalFormattingOption"
+      ( \x ->
+          PivotTableConditionalFormattingOption'
+            Prelude.<$> (x Data..:? "Cell")
+      )
+
+instance
+  Prelude.Hashable
+    PivotTableConditionalFormattingOption
+  where
+  hashWithSalt
+    _salt
+    PivotTableConditionalFormattingOption' {..} =
+      _salt `Prelude.hashWithSalt` cell
+
+instance
+  Prelude.NFData
+    PivotTableConditionalFormattingOption
+  where
+  rnf PivotTableConditionalFormattingOption' {..} =
+    Prelude.rnf cell
+
+instance
+  Data.ToJSON
+    PivotTableConditionalFormattingOption
+  where
+  toJSON PivotTableConditionalFormattingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Cell" Data..=) Prelude.<$> cell]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingScope.hs b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingScope.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingScope.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableConditionalFormattingScope
+-- 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.QuickSight.Types.PivotTableConditionalFormattingScope 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.QuickSight.Types.PivotTableConditionalFormattingScopeRole
+
+-- | The scope of the cell for conditional formatting.
+--
+-- /See:/ 'newPivotTableConditionalFormattingScope' smart constructor.
+data PivotTableConditionalFormattingScope = PivotTableConditionalFormattingScope'
+  { -- | The role (field, field total, grand total) of the cell for conditional
+    -- formatting.
+    role' :: Prelude.Maybe PivotTableConditionalFormattingScopeRole
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableConditionalFormattingScope' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'role'', 'pivotTableConditionalFormattingScope_role' - The role (field, field total, grand total) of the cell for conditional
+-- formatting.
+newPivotTableConditionalFormattingScope ::
+  PivotTableConditionalFormattingScope
+newPivotTableConditionalFormattingScope =
+  PivotTableConditionalFormattingScope'
+    { role' =
+        Prelude.Nothing
+    }
+
+-- | The role (field, field total, grand total) of the cell for conditional
+-- formatting.
+pivotTableConditionalFormattingScope_role :: Lens.Lens' PivotTableConditionalFormattingScope (Prelude.Maybe PivotTableConditionalFormattingScopeRole)
+pivotTableConditionalFormattingScope_role = Lens.lens (\PivotTableConditionalFormattingScope' {role'} -> role') (\s@PivotTableConditionalFormattingScope' {} a -> s {role' = a} :: PivotTableConditionalFormattingScope)
+
+instance
+  Data.FromJSON
+    PivotTableConditionalFormattingScope
+  where
+  parseJSON =
+    Data.withObject
+      "PivotTableConditionalFormattingScope"
+      ( \x ->
+          PivotTableConditionalFormattingScope'
+            Prelude.<$> (x Data..:? "Role")
+      )
+
+instance
+  Prelude.Hashable
+    PivotTableConditionalFormattingScope
+  where
+  hashWithSalt
+    _salt
+    PivotTableConditionalFormattingScope' {..} =
+      _salt `Prelude.hashWithSalt` role'
+
+instance
+  Prelude.NFData
+    PivotTableConditionalFormattingScope
+  where
+  rnf PivotTableConditionalFormattingScope' {..} =
+    Prelude.rnf role'
+
+instance
+  Data.ToJSON
+    PivotTableConditionalFormattingScope
+  where
+  toJSON PivotTableConditionalFormattingScope' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Role" Data..=) Prelude.<$> role']
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingScopeRole.hs b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingScopeRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableConditionalFormattingScopeRole.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.QuickSight.Types.PivotTableConditionalFormattingScopeRole
+-- 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.QuickSight.Types.PivotTableConditionalFormattingScopeRole
+  ( PivotTableConditionalFormattingScopeRole
+      ( ..,
+        PivotTableConditionalFormattingScopeRole_FIELD,
+        PivotTableConditionalFormattingScopeRole_FIELD_TOTAL,
+        PivotTableConditionalFormattingScopeRole_GRAND_TOTAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PivotTableConditionalFormattingScopeRole = PivotTableConditionalFormattingScopeRole'
+  { fromPivotTableConditionalFormattingScopeRole ::
+      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 PivotTableConditionalFormattingScopeRole_FIELD :: PivotTableConditionalFormattingScopeRole
+pattern PivotTableConditionalFormattingScopeRole_FIELD = PivotTableConditionalFormattingScopeRole' "FIELD"
+
+pattern PivotTableConditionalFormattingScopeRole_FIELD_TOTAL :: PivotTableConditionalFormattingScopeRole
+pattern PivotTableConditionalFormattingScopeRole_FIELD_TOTAL = PivotTableConditionalFormattingScopeRole' "FIELD_TOTAL"
+
+pattern PivotTableConditionalFormattingScopeRole_GRAND_TOTAL :: PivotTableConditionalFormattingScopeRole
+pattern PivotTableConditionalFormattingScopeRole_GRAND_TOTAL = PivotTableConditionalFormattingScopeRole' "GRAND_TOTAL"
+
+{-# COMPLETE
+  PivotTableConditionalFormattingScopeRole_FIELD,
+  PivotTableConditionalFormattingScopeRole_FIELD_TOTAL,
+  PivotTableConditionalFormattingScopeRole_GRAND_TOTAL,
+  PivotTableConditionalFormattingScopeRole'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableConfiguration.hs b/gen/Amazonka/QuickSight/Types/PivotTableConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableConfiguration.hs
@@ -0,0 +1,154 @@
+{-# 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.QuickSight.Types.PivotTableConfiguration
+-- 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.QuickSight.Types.PivotTableConfiguration 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.QuickSight.Types.PivotTableFieldOptions
+import Amazonka.QuickSight.Types.PivotTableFieldWells
+import Amazonka.QuickSight.Types.PivotTableOptions
+import Amazonka.QuickSight.Types.PivotTablePaginatedReportOptions
+import Amazonka.QuickSight.Types.PivotTableSortConfiguration
+import Amazonka.QuickSight.Types.PivotTableTotalOptions
+
+-- | The configuration for a @PivotTableVisual@.
+--
+-- /See:/ 'newPivotTableConfiguration' smart constructor.
+data PivotTableConfiguration = PivotTableConfiguration'
+  { -- | The field options for a pivot table visual.
+    fieldOptions :: Prelude.Maybe PivotTableFieldOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe PivotTableFieldWells,
+    -- | The paginated report options for a pivot table visual.
+    paginatedReportOptions :: Prelude.Maybe PivotTablePaginatedReportOptions,
+    -- | The sort configuration for a @PivotTableVisual@.
+    sortConfiguration :: Prelude.Maybe PivotTableSortConfiguration,
+    -- | The table options for a pivot table visual.
+    tableOptions :: Prelude.Maybe PivotTableOptions,
+    -- | The total options for a pivot table visual.
+    totalOptions :: Prelude.Maybe PivotTableTotalOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldOptions', 'pivotTableConfiguration_fieldOptions' - The field options for a pivot table visual.
+--
+-- 'fieldWells', 'pivotTableConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'paginatedReportOptions', 'pivotTableConfiguration_paginatedReportOptions' - The paginated report options for a pivot table visual.
+--
+-- 'sortConfiguration', 'pivotTableConfiguration_sortConfiguration' - The sort configuration for a @PivotTableVisual@.
+--
+-- 'tableOptions', 'pivotTableConfiguration_tableOptions' - The table options for a pivot table visual.
+--
+-- 'totalOptions', 'pivotTableConfiguration_totalOptions' - The total options for a pivot table visual.
+newPivotTableConfiguration ::
+  PivotTableConfiguration
+newPivotTableConfiguration =
+  PivotTableConfiguration'
+    { fieldOptions =
+        Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      paginatedReportOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tableOptions = Prelude.Nothing,
+      totalOptions = Prelude.Nothing
+    }
+
+-- | The field options for a pivot table visual.
+pivotTableConfiguration_fieldOptions :: Lens.Lens' PivotTableConfiguration (Prelude.Maybe PivotTableFieldOptions)
+pivotTableConfiguration_fieldOptions = Lens.lens (\PivotTableConfiguration' {fieldOptions} -> fieldOptions) (\s@PivotTableConfiguration' {} a -> s {fieldOptions = a} :: PivotTableConfiguration)
+
+-- | The field wells of the visual.
+pivotTableConfiguration_fieldWells :: Lens.Lens' PivotTableConfiguration (Prelude.Maybe PivotTableFieldWells)
+pivotTableConfiguration_fieldWells = Lens.lens (\PivotTableConfiguration' {fieldWells} -> fieldWells) (\s@PivotTableConfiguration' {} a -> s {fieldWells = a} :: PivotTableConfiguration)
+
+-- | The paginated report options for a pivot table visual.
+pivotTableConfiguration_paginatedReportOptions :: Lens.Lens' PivotTableConfiguration (Prelude.Maybe PivotTablePaginatedReportOptions)
+pivotTableConfiguration_paginatedReportOptions = Lens.lens (\PivotTableConfiguration' {paginatedReportOptions} -> paginatedReportOptions) (\s@PivotTableConfiguration' {} a -> s {paginatedReportOptions = a} :: PivotTableConfiguration)
+
+-- | The sort configuration for a @PivotTableVisual@.
+pivotTableConfiguration_sortConfiguration :: Lens.Lens' PivotTableConfiguration (Prelude.Maybe PivotTableSortConfiguration)
+pivotTableConfiguration_sortConfiguration = Lens.lens (\PivotTableConfiguration' {sortConfiguration} -> sortConfiguration) (\s@PivotTableConfiguration' {} a -> s {sortConfiguration = a} :: PivotTableConfiguration)
+
+-- | The table options for a pivot table visual.
+pivotTableConfiguration_tableOptions :: Lens.Lens' PivotTableConfiguration (Prelude.Maybe PivotTableOptions)
+pivotTableConfiguration_tableOptions = Lens.lens (\PivotTableConfiguration' {tableOptions} -> tableOptions) (\s@PivotTableConfiguration' {} a -> s {tableOptions = a} :: PivotTableConfiguration)
+
+-- | The total options for a pivot table visual.
+pivotTableConfiguration_totalOptions :: Lens.Lens' PivotTableConfiguration (Prelude.Maybe PivotTableTotalOptions)
+pivotTableConfiguration_totalOptions = Lens.lens (\PivotTableConfiguration' {totalOptions} -> totalOptions) (\s@PivotTableConfiguration' {} a -> s {totalOptions = a} :: PivotTableConfiguration)
+
+instance Data.FromJSON PivotTableConfiguration where
+  parseJSON =
+    Data.withObject
+      "PivotTableConfiguration"
+      ( \x ->
+          PivotTableConfiguration'
+            Prelude.<$> (x Data..:? "FieldOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "PaginatedReportOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "TableOptions")
+            Prelude.<*> (x Data..:? "TotalOptions")
+      )
+
+instance Prelude.Hashable PivotTableConfiguration where
+  hashWithSalt _salt PivotTableConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` paginatedReportOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tableOptions
+      `Prelude.hashWithSalt` totalOptions
+
+instance Prelude.NFData PivotTableConfiguration where
+  rnf PivotTableConfiguration' {..} =
+    Prelude.rnf fieldOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf paginatedReportOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tableOptions
+      `Prelude.seq` Prelude.rnf totalOptions
+
+instance Data.ToJSON PivotTableConfiguration where
+  toJSON PivotTableConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldOptions" Data..=) Prelude.<$> fieldOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("PaginatedReportOptions" Data..=)
+              Prelude.<$> paginatedReportOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("TableOptions" Data..=) Prelude.<$> tableOptions,
+            ("TotalOptions" Data..=) Prelude.<$> totalOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableDataPathOption.hs b/gen/Amazonka/QuickSight/Types/PivotTableDataPathOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableDataPathOption.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.QuickSight.Types.PivotTableDataPathOption
+-- 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.QuickSight.Types.PivotTableDataPathOption 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.QuickSight.Types.DataPathValue
+
+-- | The data path options for the pivot table field options.
+--
+-- /See:/ 'newPivotTableDataPathOption' smart constructor.
+data PivotTableDataPathOption = PivotTableDataPathOption'
+  { -- | The width of the data path option.
+    width :: Prelude.Maybe Prelude.Text,
+    -- | The list of data path values for the data path options.
+    dataPathList :: [DataPathValue]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableDataPathOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'width', 'pivotTableDataPathOption_width' - The width of the data path option.
+--
+-- 'dataPathList', 'pivotTableDataPathOption_dataPathList' - The list of data path values for the data path options.
+newPivotTableDataPathOption ::
+  PivotTableDataPathOption
+newPivotTableDataPathOption =
+  PivotTableDataPathOption'
+    { width = Prelude.Nothing,
+      dataPathList = Prelude.mempty
+    }
+
+-- | The width of the data path option.
+pivotTableDataPathOption_width :: Lens.Lens' PivotTableDataPathOption (Prelude.Maybe Prelude.Text)
+pivotTableDataPathOption_width = Lens.lens (\PivotTableDataPathOption' {width} -> width) (\s@PivotTableDataPathOption' {} a -> s {width = a} :: PivotTableDataPathOption)
+
+-- | The list of data path values for the data path options.
+pivotTableDataPathOption_dataPathList :: Lens.Lens' PivotTableDataPathOption [DataPathValue]
+pivotTableDataPathOption_dataPathList = Lens.lens (\PivotTableDataPathOption' {dataPathList} -> dataPathList) (\s@PivotTableDataPathOption' {} a -> s {dataPathList = a} :: PivotTableDataPathOption) Prelude.. Lens.coerced
+
+instance Data.FromJSON PivotTableDataPathOption where
+  parseJSON =
+    Data.withObject
+      "PivotTableDataPathOption"
+      ( \x ->
+          PivotTableDataPathOption'
+            Prelude.<$> (x Data..:? "Width")
+            Prelude.<*> (x Data..:? "DataPathList" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable PivotTableDataPathOption where
+  hashWithSalt _salt PivotTableDataPathOption' {..} =
+    _salt
+      `Prelude.hashWithSalt` width
+      `Prelude.hashWithSalt` dataPathList
+
+instance Prelude.NFData PivotTableDataPathOption where
+  rnf PivotTableDataPathOption' {..} =
+    Prelude.rnf width
+      `Prelude.seq` Prelude.rnf dataPathList
+
+instance Data.ToJSON PivotTableDataPathOption where
+  toJSON PivotTableDataPathOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Width" Data..=) Prelude.<$> width,
+            Prelude.Just ("DataPathList" Data..= dataPathList)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableFieldOption.hs b/gen/Amazonka/QuickSight/Types/PivotTableFieldOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableFieldOption.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.PivotTableFieldOption
+-- 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.QuickSight.Types.PivotTableFieldOption 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.QuickSight.Types.Visibility
+
+-- | The selected field options for the pivot table field options.
+--
+-- /See:/ 'newPivotTableFieldOption' smart constructor.
+data PivotTableFieldOption = PivotTableFieldOption'
+  { -- | The custom label of the pivot table field.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The visibility of the pivot table field.
+    visibility :: Prelude.Maybe Visibility,
+    -- | The field ID of the pivot table field.
+    fieldId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableFieldOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'pivotTableFieldOption_customLabel' - The custom label of the pivot table field.
+--
+-- 'visibility', 'pivotTableFieldOption_visibility' - The visibility of the pivot table field.
+--
+-- 'fieldId', 'pivotTableFieldOption_fieldId' - The field ID of the pivot table field.
+newPivotTableFieldOption ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  PivotTableFieldOption
+newPivotTableFieldOption pFieldId_ =
+  PivotTableFieldOption'
+    { customLabel =
+        Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      fieldId = pFieldId_
+    }
+
+-- | The custom label of the pivot table field.
+pivotTableFieldOption_customLabel :: Lens.Lens' PivotTableFieldOption (Prelude.Maybe Prelude.Text)
+pivotTableFieldOption_customLabel = Lens.lens (\PivotTableFieldOption' {customLabel} -> customLabel) (\s@PivotTableFieldOption' {} a -> s {customLabel = a} :: PivotTableFieldOption)
+
+-- | The visibility of the pivot table field.
+pivotTableFieldOption_visibility :: Lens.Lens' PivotTableFieldOption (Prelude.Maybe Visibility)
+pivotTableFieldOption_visibility = Lens.lens (\PivotTableFieldOption' {visibility} -> visibility) (\s@PivotTableFieldOption' {} a -> s {visibility = a} :: PivotTableFieldOption)
+
+-- | The field ID of the pivot table field.
+pivotTableFieldOption_fieldId :: Lens.Lens' PivotTableFieldOption Prelude.Text
+pivotTableFieldOption_fieldId = Lens.lens (\PivotTableFieldOption' {fieldId} -> fieldId) (\s@PivotTableFieldOption' {} a -> s {fieldId = a} :: PivotTableFieldOption)
+
+instance Data.FromJSON PivotTableFieldOption where
+  parseJSON =
+    Data.withObject
+      "PivotTableFieldOption"
+      ( \x ->
+          PivotTableFieldOption'
+            Prelude.<$> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..: "FieldId")
+      )
+
+instance Prelude.Hashable PivotTableFieldOption where
+  hashWithSalt _salt PivotTableFieldOption' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` fieldId
+
+instance Prelude.NFData PivotTableFieldOption where
+  rnf PivotTableFieldOption' {..} =
+    Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf fieldId
+
+instance Data.ToJSON PivotTableFieldOption where
+  toJSON PivotTableFieldOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            Prelude.Just ("FieldId" Data..= fieldId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableFieldOptions.hs b/gen/Amazonka/QuickSight/Types/PivotTableFieldOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableFieldOptions.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableFieldOptions
+-- 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.QuickSight.Types.PivotTableFieldOptions 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.QuickSight.Types.PivotTableDataPathOption
+import Amazonka.QuickSight.Types.PivotTableFieldOption
+
+-- | The field options for a pivot table visual.
+--
+-- /See:/ 'newPivotTableFieldOptions' smart constructor.
+data PivotTableFieldOptions = PivotTableFieldOptions'
+  { -- | The data path options for the pivot table field options.
+    dataPathOptions :: Prelude.Maybe [PivotTableDataPathOption],
+    -- | The selected field options for the pivot table field options.
+    selectedFieldOptions :: Prelude.Maybe [PivotTableFieldOption]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableFieldOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataPathOptions', 'pivotTableFieldOptions_dataPathOptions' - The data path options for the pivot table field options.
+--
+-- 'selectedFieldOptions', 'pivotTableFieldOptions_selectedFieldOptions' - The selected field options for the pivot table field options.
+newPivotTableFieldOptions ::
+  PivotTableFieldOptions
+newPivotTableFieldOptions =
+  PivotTableFieldOptions'
+    { dataPathOptions =
+        Prelude.Nothing,
+      selectedFieldOptions = Prelude.Nothing
+    }
+
+-- | The data path options for the pivot table field options.
+pivotTableFieldOptions_dataPathOptions :: Lens.Lens' PivotTableFieldOptions (Prelude.Maybe [PivotTableDataPathOption])
+pivotTableFieldOptions_dataPathOptions = Lens.lens (\PivotTableFieldOptions' {dataPathOptions} -> dataPathOptions) (\s@PivotTableFieldOptions' {} a -> s {dataPathOptions = a} :: PivotTableFieldOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The selected field options for the pivot table field options.
+pivotTableFieldOptions_selectedFieldOptions :: Lens.Lens' PivotTableFieldOptions (Prelude.Maybe [PivotTableFieldOption])
+pivotTableFieldOptions_selectedFieldOptions = Lens.lens (\PivotTableFieldOptions' {selectedFieldOptions} -> selectedFieldOptions) (\s@PivotTableFieldOptions' {} a -> s {selectedFieldOptions = a} :: PivotTableFieldOptions) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PivotTableFieldOptions where
+  parseJSON =
+    Data.withObject
+      "PivotTableFieldOptions"
+      ( \x ->
+          PivotTableFieldOptions'
+            Prelude.<$> ( x
+                            Data..:? "DataPathOptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SelectedFieldOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PivotTableFieldOptions where
+  hashWithSalt _salt PivotTableFieldOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataPathOptions
+      `Prelude.hashWithSalt` selectedFieldOptions
+
+instance Prelude.NFData PivotTableFieldOptions where
+  rnf PivotTableFieldOptions' {..} =
+    Prelude.rnf dataPathOptions
+      `Prelude.seq` Prelude.rnf selectedFieldOptions
+
+instance Data.ToJSON PivotTableFieldOptions where
+  toJSON PivotTableFieldOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataPathOptions" Data..=)
+              Prelude.<$> dataPathOptions,
+            ("SelectedFieldOptions" Data..=)
+              Prelude.<$> selectedFieldOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableFieldSubtotalOptions.hs b/gen/Amazonka/QuickSight/Types/PivotTableFieldSubtotalOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableFieldSubtotalOptions.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.QuickSight.Types.PivotTableFieldSubtotalOptions
+-- 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.QuickSight.Types.PivotTableFieldSubtotalOptions 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 optional configuration of subtotals cells.
+--
+-- /See:/ 'newPivotTableFieldSubtotalOptions' smart constructor.
+data PivotTableFieldSubtotalOptions = PivotTableFieldSubtotalOptions'
+  { -- | The field ID of the subtotal options.
+    fieldId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableFieldSubtotalOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldId', 'pivotTableFieldSubtotalOptions_fieldId' - The field ID of the subtotal options.
+newPivotTableFieldSubtotalOptions ::
+  PivotTableFieldSubtotalOptions
+newPivotTableFieldSubtotalOptions =
+  PivotTableFieldSubtotalOptions'
+    { fieldId =
+        Prelude.Nothing
+    }
+
+-- | The field ID of the subtotal options.
+pivotTableFieldSubtotalOptions_fieldId :: Lens.Lens' PivotTableFieldSubtotalOptions (Prelude.Maybe Prelude.Text)
+pivotTableFieldSubtotalOptions_fieldId = Lens.lens (\PivotTableFieldSubtotalOptions' {fieldId} -> fieldId) (\s@PivotTableFieldSubtotalOptions' {} a -> s {fieldId = a} :: PivotTableFieldSubtotalOptions)
+
+instance Data.FromJSON PivotTableFieldSubtotalOptions where
+  parseJSON =
+    Data.withObject
+      "PivotTableFieldSubtotalOptions"
+      ( \x ->
+          PivotTableFieldSubtotalOptions'
+            Prelude.<$> (x Data..:? "FieldId")
+      )
+
+instance
+  Prelude.Hashable
+    PivotTableFieldSubtotalOptions
+  where
+  hashWithSalt
+    _salt
+    PivotTableFieldSubtotalOptions' {..} =
+      _salt `Prelude.hashWithSalt` fieldId
+
+instance
+  Prelude.NFData
+    PivotTableFieldSubtotalOptions
+  where
+  rnf PivotTableFieldSubtotalOptions' {..} =
+    Prelude.rnf fieldId
+
+instance Data.ToJSON PivotTableFieldSubtotalOptions where
+  toJSON PivotTableFieldSubtotalOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("FieldId" Data..=) Prelude.<$> fieldId]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableFieldWells.hs b/gen/Amazonka/QuickSight/Types/PivotTableFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableFieldWells.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.QuickSight.Types.PivotTableFieldWells
+-- 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.QuickSight.Types.PivotTableFieldWells 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.QuickSight.Types.PivotTableAggregatedFieldWells
+
+-- | The field wells for a pivot table visual.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newPivotTableFieldWells' smart constructor.
+data PivotTableFieldWells = PivotTableFieldWells'
+  { -- | The aggregated field well for the pivot table.
+    pivotTableAggregatedFieldWells :: Prelude.Maybe PivotTableAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pivotTableAggregatedFieldWells', 'pivotTableFieldWells_pivotTableAggregatedFieldWells' - The aggregated field well for the pivot table.
+newPivotTableFieldWells ::
+  PivotTableFieldWells
+newPivotTableFieldWells =
+  PivotTableFieldWells'
+    { pivotTableAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field well for the pivot table.
+pivotTableFieldWells_pivotTableAggregatedFieldWells :: Lens.Lens' PivotTableFieldWells (Prelude.Maybe PivotTableAggregatedFieldWells)
+pivotTableFieldWells_pivotTableAggregatedFieldWells = Lens.lens (\PivotTableFieldWells' {pivotTableAggregatedFieldWells} -> pivotTableAggregatedFieldWells) (\s@PivotTableFieldWells' {} a -> s {pivotTableAggregatedFieldWells = a} :: PivotTableFieldWells)
+
+instance Data.FromJSON PivotTableFieldWells where
+  parseJSON =
+    Data.withObject
+      "PivotTableFieldWells"
+      ( \x ->
+          PivotTableFieldWells'
+            Prelude.<$> (x Data..:? "PivotTableAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable PivotTableFieldWells where
+  hashWithSalt _salt PivotTableFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` pivotTableAggregatedFieldWells
+
+instance Prelude.NFData PivotTableFieldWells where
+  rnf PivotTableFieldWells' {..} =
+    Prelude.rnf pivotTableAggregatedFieldWells
+
+instance Data.ToJSON PivotTableFieldWells where
+  toJSON PivotTableFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PivotTableAggregatedFieldWells" Data..=)
+              Prelude.<$> pivotTableAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableMetricPlacement.hs b/gen/Amazonka/QuickSight/Types/PivotTableMetricPlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableMetricPlacement.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.QuickSight.Types.PivotTableMetricPlacement
+-- 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.QuickSight.Types.PivotTableMetricPlacement
+  ( PivotTableMetricPlacement
+      ( ..,
+        PivotTableMetricPlacement_COLUMN,
+        PivotTableMetricPlacement_ROW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PivotTableMetricPlacement = PivotTableMetricPlacement'
+  { fromPivotTableMetricPlacement ::
+      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 PivotTableMetricPlacement_COLUMN :: PivotTableMetricPlacement
+pattern PivotTableMetricPlacement_COLUMN = PivotTableMetricPlacement' "COLUMN"
+
+pattern PivotTableMetricPlacement_ROW :: PivotTableMetricPlacement
+pattern PivotTableMetricPlacement_ROW = PivotTableMetricPlacement' "ROW"
+
+{-# COMPLETE
+  PivotTableMetricPlacement_COLUMN,
+  PivotTableMetricPlacement_ROW,
+  PivotTableMetricPlacement'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableOptions.hs b/gen/Amazonka/QuickSight/Types/PivotTableOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableOptions.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableOptions
+-- 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.QuickSight.Types.PivotTableOptions 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.QuickSight.Types.PivotTableMetricPlacement
+import Amazonka.QuickSight.Types.RowAlternateColorOptions
+import Amazonka.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The table options for a pivot table visual.
+--
+-- /See:/ 'newPivotTableOptions' smart constructor.
+data PivotTableOptions = PivotTableOptions'
+  { -- | The table cell style of cells.
+    cellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The table cell style of the column header.
+    columnHeaderStyle :: Prelude.Maybe TableCellStyle,
+    -- | The visibility of the column names.
+    columnNamesVisibility :: Prelude.Maybe Visibility,
+    -- | The metric placement (row, column) options.
+    metricPlacement :: Prelude.Maybe PivotTableMetricPlacement,
+    -- | The row alternate color options (widget status, row alternate colors).
+    rowAlternateColorOptions :: Prelude.Maybe RowAlternateColorOptions,
+    -- | The table cell style of row field names.
+    rowFieldNamesStyle :: Prelude.Maybe TableCellStyle,
+    -- | The table cell style of the row headers.
+    rowHeaderStyle :: Prelude.Maybe TableCellStyle,
+    -- | The visibility of the single metric options.
+    singleMetricVisibility :: Prelude.Maybe Visibility,
+    -- | Determines the visibility of the pivot table.
+    toggleButtonsVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cellStyle', 'pivotTableOptions_cellStyle' - The table cell style of cells.
+--
+-- 'columnHeaderStyle', 'pivotTableOptions_columnHeaderStyle' - The table cell style of the column header.
+--
+-- 'columnNamesVisibility', 'pivotTableOptions_columnNamesVisibility' - The visibility of the column names.
+--
+-- 'metricPlacement', 'pivotTableOptions_metricPlacement' - The metric placement (row, column) options.
+--
+-- 'rowAlternateColorOptions', 'pivotTableOptions_rowAlternateColorOptions' - The row alternate color options (widget status, row alternate colors).
+--
+-- 'rowFieldNamesStyle', 'pivotTableOptions_rowFieldNamesStyle' - The table cell style of row field names.
+--
+-- 'rowHeaderStyle', 'pivotTableOptions_rowHeaderStyle' - The table cell style of the row headers.
+--
+-- 'singleMetricVisibility', 'pivotTableOptions_singleMetricVisibility' - The visibility of the single metric options.
+--
+-- 'toggleButtonsVisibility', 'pivotTableOptions_toggleButtonsVisibility' - Determines the visibility of the pivot table.
+newPivotTableOptions ::
+  PivotTableOptions
+newPivotTableOptions =
+  PivotTableOptions'
+    { cellStyle = Prelude.Nothing,
+      columnHeaderStyle = Prelude.Nothing,
+      columnNamesVisibility = Prelude.Nothing,
+      metricPlacement = Prelude.Nothing,
+      rowAlternateColorOptions = Prelude.Nothing,
+      rowFieldNamesStyle = Prelude.Nothing,
+      rowHeaderStyle = Prelude.Nothing,
+      singleMetricVisibility = Prelude.Nothing,
+      toggleButtonsVisibility = Prelude.Nothing
+    }
+
+-- | The table cell style of cells.
+pivotTableOptions_cellStyle :: Lens.Lens' PivotTableOptions (Prelude.Maybe TableCellStyle)
+pivotTableOptions_cellStyle = Lens.lens (\PivotTableOptions' {cellStyle} -> cellStyle) (\s@PivotTableOptions' {} a -> s {cellStyle = a} :: PivotTableOptions)
+
+-- | The table cell style of the column header.
+pivotTableOptions_columnHeaderStyle :: Lens.Lens' PivotTableOptions (Prelude.Maybe TableCellStyle)
+pivotTableOptions_columnHeaderStyle = Lens.lens (\PivotTableOptions' {columnHeaderStyle} -> columnHeaderStyle) (\s@PivotTableOptions' {} a -> s {columnHeaderStyle = a} :: PivotTableOptions)
+
+-- | The visibility of the column names.
+pivotTableOptions_columnNamesVisibility :: Lens.Lens' PivotTableOptions (Prelude.Maybe Visibility)
+pivotTableOptions_columnNamesVisibility = Lens.lens (\PivotTableOptions' {columnNamesVisibility} -> columnNamesVisibility) (\s@PivotTableOptions' {} a -> s {columnNamesVisibility = a} :: PivotTableOptions)
+
+-- | The metric placement (row, column) options.
+pivotTableOptions_metricPlacement :: Lens.Lens' PivotTableOptions (Prelude.Maybe PivotTableMetricPlacement)
+pivotTableOptions_metricPlacement = Lens.lens (\PivotTableOptions' {metricPlacement} -> metricPlacement) (\s@PivotTableOptions' {} a -> s {metricPlacement = a} :: PivotTableOptions)
+
+-- | The row alternate color options (widget status, row alternate colors).
+pivotTableOptions_rowAlternateColorOptions :: Lens.Lens' PivotTableOptions (Prelude.Maybe RowAlternateColorOptions)
+pivotTableOptions_rowAlternateColorOptions = Lens.lens (\PivotTableOptions' {rowAlternateColorOptions} -> rowAlternateColorOptions) (\s@PivotTableOptions' {} a -> s {rowAlternateColorOptions = a} :: PivotTableOptions)
+
+-- | The table cell style of row field names.
+pivotTableOptions_rowFieldNamesStyle :: Lens.Lens' PivotTableOptions (Prelude.Maybe TableCellStyle)
+pivotTableOptions_rowFieldNamesStyle = Lens.lens (\PivotTableOptions' {rowFieldNamesStyle} -> rowFieldNamesStyle) (\s@PivotTableOptions' {} a -> s {rowFieldNamesStyle = a} :: PivotTableOptions)
+
+-- | The table cell style of the row headers.
+pivotTableOptions_rowHeaderStyle :: Lens.Lens' PivotTableOptions (Prelude.Maybe TableCellStyle)
+pivotTableOptions_rowHeaderStyle = Lens.lens (\PivotTableOptions' {rowHeaderStyle} -> rowHeaderStyle) (\s@PivotTableOptions' {} a -> s {rowHeaderStyle = a} :: PivotTableOptions)
+
+-- | The visibility of the single metric options.
+pivotTableOptions_singleMetricVisibility :: Lens.Lens' PivotTableOptions (Prelude.Maybe Visibility)
+pivotTableOptions_singleMetricVisibility = Lens.lens (\PivotTableOptions' {singleMetricVisibility} -> singleMetricVisibility) (\s@PivotTableOptions' {} a -> s {singleMetricVisibility = a} :: PivotTableOptions)
+
+-- | Determines the visibility of the pivot table.
+pivotTableOptions_toggleButtonsVisibility :: Lens.Lens' PivotTableOptions (Prelude.Maybe Visibility)
+pivotTableOptions_toggleButtonsVisibility = Lens.lens (\PivotTableOptions' {toggleButtonsVisibility} -> toggleButtonsVisibility) (\s@PivotTableOptions' {} a -> s {toggleButtonsVisibility = a} :: PivotTableOptions)
+
+instance Data.FromJSON PivotTableOptions where
+  parseJSON =
+    Data.withObject
+      "PivotTableOptions"
+      ( \x ->
+          PivotTableOptions'
+            Prelude.<$> (x Data..:? "CellStyle")
+            Prelude.<*> (x Data..:? "ColumnHeaderStyle")
+            Prelude.<*> (x Data..:? "ColumnNamesVisibility")
+            Prelude.<*> (x Data..:? "MetricPlacement")
+            Prelude.<*> (x Data..:? "RowAlternateColorOptions")
+            Prelude.<*> (x Data..:? "RowFieldNamesStyle")
+            Prelude.<*> (x Data..:? "RowHeaderStyle")
+            Prelude.<*> (x Data..:? "SingleMetricVisibility")
+            Prelude.<*> (x Data..:? "ToggleButtonsVisibility")
+      )
+
+instance Prelude.Hashable PivotTableOptions where
+  hashWithSalt _salt PivotTableOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` cellStyle
+      `Prelude.hashWithSalt` columnHeaderStyle
+      `Prelude.hashWithSalt` columnNamesVisibility
+      `Prelude.hashWithSalt` metricPlacement
+      `Prelude.hashWithSalt` rowAlternateColorOptions
+      `Prelude.hashWithSalt` rowFieldNamesStyle
+      `Prelude.hashWithSalt` rowHeaderStyle
+      `Prelude.hashWithSalt` singleMetricVisibility
+      `Prelude.hashWithSalt` toggleButtonsVisibility
+
+instance Prelude.NFData PivotTableOptions where
+  rnf PivotTableOptions' {..} =
+    Prelude.rnf cellStyle
+      `Prelude.seq` Prelude.rnf columnHeaderStyle
+      `Prelude.seq` Prelude.rnf columnNamesVisibility
+      `Prelude.seq` Prelude.rnf metricPlacement
+      `Prelude.seq` Prelude.rnf rowAlternateColorOptions
+      `Prelude.seq` Prelude.rnf rowFieldNamesStyle
+      `Prelude.seq` Prelude.rnf rowHeaderStyle
+      `Prelude.seq` Prelude.rnf singleMetricVisibility
+      `Prelude.seq` Prelude.rnf toggleButtonsVisibility
+
+instance Data.ToJSON PivotTableOptions where
+  toJSON PivotTableOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CellStyle" Data..=) Prelude.<$> cellStyle,
+            ("ColumnHeaderStyle" Data..=)
+              Prelude.<$> columnHeaderStyle,
+            ("ColumnNamesVisibility" Data..=)
+              Prelude.<$> columnNamesVisibility,
+            ("MetricPlacement" Data..=)
+              Prelude.<$> metricPlacement,
+            ("RowAlternateColorOptions" Data..=)
+              Prelude.<$> rowAlternateColorOptions,
+            ("RowFieldNamesStyle" Data..=)
+              Prelude.<$> rowFieldNamesStyle,
+            ("RowHeaderStyle" Data..=)
+              Prelude.<$> rowHeaderStyle,
+            ("SingleMetricVisibility" Data..=)
+              Prelude.<$> singleMetricVisibility,
+            ("ToggleButtonsVisibility" Data..=)
+              Prelude.<$> toggleButtonsVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTablePaginatedReportOptions.hs b/gen/Amazonka/QuickSight/Types/PivotTablePaginatedReportOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTablePaginatedReportOptions.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTablePaginatedReportOptions
+-- 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.QuickSight.Types.PivotTablePaginatedReportOptions 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.QuickSight.Types.Visibility
+
+-- | The paginated report options for a pivot table visual.
+--
+-- /See:/ 'newPivotTablePaginatedReportOptions' smart constructor.
+data PivotTablePaginatedReportOptions = PivotTablePaginatedReportOptions'
+  { -- | The visibility of the repeating header rows on each page.
+    overflowColumnHeaderVisibility :: Prelude.Maybe Visibility,
+    -- | The visibility of the printing table overflow across pages.
+    verticalOverflowVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTablePaginatedReportOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'overflowColumnHeaderVisibility', 'pivotTablePaginatedReportOptions_overflowColumnHeaderVisibility' - The visibility of the repeating header rows on each page.
+--
+-- 'verticalOverflowVisibility', 'pivotTablePaginatedReportOptions_verticalOverflowVisibility' - The visibility of the printing table overflow across pages.
+newPivotTablePaginatedReportOptions ::
+  PivotTablePaginatedReportOptions
+newPivotTablePaginatedReportOptions =
+  PivotTablePaginatedReportOptions'
+    { overflowColumnHeaderVisibility =
+        Prelude.Nothing,
+      verticalOverflowVisibility =
+        Prelude.Nothing
+    }
+
+-- | The visibility of the repeating header rows on each page.
+pivotTablePaginatedReportOptions_overflowColumnHeaderVisibility :: Lens.Lens' PivotTablePaginatedReportOptions (Prelude.Maybe Visibility)
+pivotTablePaginatedReportOptions_overflowColumnHeaderVisibility = Lens.lens (\PivotTablePaginatedReportOptions' {overflowColumnHeaderVisibility} -> overflowColumnHeaderVisibility) (\s@PivotTablePaginatedReportOptions' {} a -> s {overflowColumnHeaderVisibility = a} :: PivotTablePaginatedReportOptions)
+
+-- | The visibility of the printing table overflow across pages.
+pivotTablePaginatedReportOptions_verticalOverflowVisibility :: Lens.Lens' PivotTablePaginatedReportOptions (Prelude.Maybe Visibility)
+pivotTablePaginatedReportOptions_verticalOverflowVisibility = Lens.lens (\PivotTablePaginatedReportOptions' {verticalOverflowVisibility} -> verticalOverflowVisibility) (\s@PivotTablePaginatedReportOptions' {} a -> s {verticalOverflowVisibility = a} :: PivotTablePaginatedReportOptions)
+
+instance
+  Data.FromJSON
+    PivotTablePaginatedReportOptions
+  where
+  parseJSON =
+    Data.withObject
+      "PivotTablePaginatedReportOptions"
+      ( \x ->
+          PivotTablePaginatedReportOptions'
+            Prelude.<$> (x Data..:? "OverflowColumnHeaderVisibility")
+            Prelude.<*> (x Data..:? "VerticalOverflowVisibility")
+      )
+
+instance
+  Prelude.Hashable
+    PivotTablePaginatedReportOptions
+  where
+  hashWithSalt
+    _salt
+    PivotTablePaginatedReportOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` overflowColumnHeaderVisibility
+        `Prelude.hashWithSalt` verticalOverflowVisibility
+
+instance
+  Prelude.NFData
+    PivotTablePaginatedReportOptions
+  where
+  rnf PivotTablePaginatedReportOptions' {..} =
+    Prelude.rnf overflowColumnHeaderVisibility
+      `Prelude.seq` Prelude.rnf verticalOverflowVisibility
+
+instance Data.ToJSON PivotTablePaginatedReportOptions where
+  toJSON PivotTablePaginatedReportOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OverflowColumnHeaderVisibility" Data..=)
+              Prelude.<$> overflowColumnHeaderVisibility,
+            ("VerticalOverflowVisibility" Data..=)
+              Prelude.<$> verticalOverflowVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableSortBy.hs b/gen/Amazonka/QuickSight/Types/PivotTableSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableSortBy.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableSortBy
+-- 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.QuickSight.Types.PivotTableSortBy 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.QuickSight.Types.ColumnSort
+import Amazonka.QuickSight.Types.DataPathSort
+import Amazonka.QuickSight.Types.FieldSort
+
+-- | The sort by field for the field sort options.
+--
+-- /See:/ 'newPivotTableSortBy' smart constructor.
+data PivotTableSortBy = PivotTableSortBy'
+  { -- | The column sort (field id, direction) for the pivot table sort by
+    -- options.
+    column :: Prelude.Maybe ColumnSort,
+    -- | The data path sort (data path value, direction) for the pivot table sort
+    -- by options.
+    dataPath :: Prelude.Maybe DataPathSort,
+    -- | The field sort (field id, direction) for the pivot table sort by
+    -- options.
+    field :: Prelude.Maybe FieldSort
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableSortBy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'column', 'pivotTableSortBy_column' - The column sort (field id, direction) for the pivot table sort by
+-- options.
+--
+-- 'dataPath', 'pivotTableSortBy_dataPath' - The data path sort (data path value, direction) for the pivot table sort
+-- by options.
+--
+-- 'field', 'pivotTableSortBy_field' - The field sort (field id, direction) for the pivot table sort by
+-- options.
+newPivotTableSortBy ::
+  PivotTableSortBy
+newPivotTableSortBy =
+  PivotTableSortBy'
+    { column = Prelude.Nothing,
+      dataPath = Prelude.Nothing,
+      field = Prelude.Nothing
+    }
+
+-- | The column sort (field id, direction) for the pivot table sort by
+-- options.
+pivotTableSortBy_column :: Lens.Lens' PivotTableSortBy (Prelude.Maybe ColumnSort)
+pivotTableSortBy_column = Lens.lens (\PivotTableSortBy' {column} -> column) (\s@PivotTableSortBy' {} a -> s {column = a} :: PivotTableSortBy)
+
+-- | The data path sort (data path value, direction) for the pivot table sort
+-- by options.
+pivotTableSortBy_dataPath :: Lens.Lens' PivotTableSortBy (Prelude.Maybe DataPathSort)
+pivotTableSortBy_dataPath = Lens.lens (\PivotTableSortBy' {dataPath} -> dataPath) (\s@PivotTableSortBy' {} a -> s {dataPath = a} :: PivotTableSortBy)
+
+-- | The field sort (field id, direction) for the pivot table sort by
+-- options.
+pivotTableSortBy_field :: Lens.Lens' PivotTableSortBy (Prelude.Maybe FieldSort)
+pivotTableSortBy_field = Lens.lens (\PivotTableSortBy' {field} -> field) (\s@PivotTableSortBy' {} a -> s {field = a} :: PivotTableSortBy)
+
+instance Data.FromJSON PivotTableSortBy where
+  parseJSON =
+    Data.withObject
+      "PivotTableSortBy"
+      ( \x ->
+          PivotTableSortBy'
+            Prelude.<$> (x Data..:? "Column")
+            Prelude.<*> (x Data..:? "DataPath")
+            Prelude.<*> (x Data..:? "Field")
+      )
+
+instance Prelude.Hashable PivotTableSortBy where
+  hashWithSalt _salt PivotTableSortBy' {..} =
+    _salt
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` dataPath
+      `Prelude.hashWithSalt` field
+
+instance Prelude.NFData PivotTableSortBy where
+  rnf PivotTableSortBy' {..} =
+    Prelude.rnf column
+      `Prelude.seq` Prelude.rnf dataPath
+      `Prelude.seq` Prelude.rnf field
+
+instance Data.ToJSON PivotTableSortBy where
+  toJSON PivotTableSortBy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Column" Data..=) Prelude.<$> column,
+            ("DataPath" Data..=) Prelude.<$> dataPath,
+            ("Field" Data..=) Prelude.<$> field
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/PivotTableSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableSortConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableSortConfiguration
+-- 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.QuickSight.Types.PivotTableSortConfiguration 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.QuickSight.Types.PivotFieldSortOptions
+
+-- | The sort configuration for a @PivotTableVisual@.
+--
+-- /See:/ 'newPivotTableSortConfiguration' smart constructor.
+data PivotTableSortConfiguration = PivotTableSortConfiguration'
+  { -- | The field sort options for a pivot table sort configuration.
+    fieldSortOptions :: Prelude.Maybe [PivotFieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldSortOptions', 'pivotTableSortConfiguration_fieldSortOptions' - The field sort options for a pivot table sort configuration.
+newPivotTableSortConfiguration ::
+  PivotTableSortConfiguration
+newPivotTableSortConfiguration =
+  PivotTableSortConfiguration'
+    { fieldSortOptions =
+        Prelude.Nothing
+    }
+
+-- | The field sort options for a pivot table sort configuration.
+pivotTableSortConfiguration_fieldSortOptions :: Lens.Lens' PivotTableSortConfiguration (Prelude.Maybe [PivotFieldSortOptions])
+pivotTableSortConfiguration_fieldSortOptions = Lens.lens (\PivotTableSortConfiguration' {fieldSortOptions} -> fieldSortOptions) (\s@PivotTableSortConfiguration' {} a -> s {fieldSortOptions = a} :: PivotTableSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PivotTableSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "PivotTableSortConfiguration"
+      ( \x ->
+          PivotTableSortConfiguration'
+            Prelude.<$> ( x
+                            Data..:? "FieldSortOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PivotTableSortConfiguration where
+  hashWithSalt _salt PivotTableSortConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` fieldSortOptions
+
+instance Prelude.NFData PivotTableSortConfiguration where
+  rnf PivotTableSortConfiguration' {..} =
+    Prelude.rnf fieldSortOptions
+
+instance Data.ToJSON PivotTableSortConfiguration where
+  toJSON PivotTableSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldSortOptions" Data..=)
+              Prelude.<$> fieldSortOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableSubtotalLevel.hs b/gen/Amazonka/QuickSight/Types/PivotTableSubtotalLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableSubtotalLevel.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.QuickSight.Types.PivotTableSubtotalLevel
+-- 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.QuickSight.Types.PivotTableSubtotalLevel
+  ( PivotTableSubtotalLevel
+      ( ..,
+        PivotTableSubtotalLevel_ALL,
+        PivotTableSubtotalLevel_CUSTOM,
+        PivotTableSubtotalLevel_LAST
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PivotTableSubtotalLevel = PivotTableSubtotalLevel'
+  { fromPivotTableSubtotalLevel ::
+      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 PivotTableSubtotalLevel_ALL :: PivotTableSubtotalLevel
+pattern PivotTableSubtotalLevel_ALL = PivotTableSubtotalLevel' "ALL"
+
+pattern PivotTableSubtotalLevel_CUSTOM :: PivotTableSubtotalLevel
+pattern PivotTableSubtotalLevel_CUSTOM = PivotTableSubtotalLevel' "CUSTOM"
+
+pattern PivotTableSubtotalLevel_LAST :: PivotTableSubtotalLevel
+pattern PivotTableSubtotalLevel_LAST = PivotTableSubtotalLevel' "LAST"
+
+{-# COMPLETE
+  PivotTableSubtotalLevel_ALL,
+  PivotTableSubtotalLevel_CUSTOM,
+  PivotTableSubtotalLevel_LAST,
+  PivotTableSubtotalLevel'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableTotalOptions.hs b/gen/Amazonka/QuickSight/Types/PivotTableTotalOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableTotalOptions.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PivotTableTotalOptions
+-- 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.QuickSight.Types.PivotTableTotalOptions 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.QuickSight.Types.PivotTotalOptions
+import Amazonka.QuickSight.Types.SubtotalOptions
+
+-- | The total options for a pivot table visual.
+--
+-- /See:/ 'newPivotTableTotalOptions' smart constructor.
+data PivotTableTotalOptions = PivotTableTotalOptions'
+  { -- | The column subtotal options.
+    columnSubtotalOptions :: Prelude.Maybe SubtotalOptions,
+    -- | The column total options.
+    columnTotalOptions :: Prelude.Maybe PivotTotalOptions,
+    -- | The row subtotal options.
+    rowSubtotalOptions :: Prelude.Maybe SubtotalOptions,
+    -- | The row total options.
+    rowTotalOptions :: Prelude.Maybe PivotTotalOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableTotalOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnSubtotalOptions', 'pivotTableTotalOptions_columnSubtotalOptions' - The column subtotal options.
+--
+-- 'columnTotalOptions', 'pivotTableTotalOptions_columnTotalOptions' - The column total options.
+--
+-- 'rowSubtotalOptions', 'pivotTableTotalOptions_rowSubtotalOptions' - The row subtotal options.
+--
+-- 'rowTotalOptions', 'pivotTableTotalOptions_rowTotalOptions' - The row total options.
+newPivotTableTotalOptions ::
+  PivotTableTotalOptions
+newPivotTableTotalOptions =
+  PivotTableTotalOptions'
+    { columnSubtotalOptions =
+        Prelude.Nothing,
+      columnTotalOptions = Prelude.Nothing,
+      rowSubtotalOptions = Prelude.Nothing,
+      rowTotalOptions = Prelude.Nothing
+    }
+
+-- | The column subtotal options.
+pivotTableTotalOptions_columnSubtotalOptions :: Lens.Lens' PivotTableTotalOptions (Prelude.Maybe SubtotalOptions)
+pivotTableTotalOptions_columnSubtotalOptions = Lens.lens (\PivotTableTotalOptions' {columnSubtotalOptions} -> columnSubtotalOptions) (\s@PivotTableTotalOptions' {} a -> s {columnSubtotalOptions = a} :: PivotTableTotalOptions)
+
+-- | The column total options.
+pivotTableTotalOptions_columnTotalOptions :: Lens.Lens' PivotTableTotalOptions (Prelude.Maybe PivotTotalOptions)
+pivotTableTotalOptions_columnTotalOptions = Lens.lens (\PivotTableTotalOptions' {columnTotalOptions} -> columnTotalOptions) (\s@PivotTableTotalOptions' {} a -> s {columnTotalOptions = a} :: PivotTableTotalOptions)
+
+-- | The row subtotal options.
+pivotTableTotalOptions_rowSubtotalOptions :: Lens.Lens' PivotTableTotalOptions (Prelude.Maybe SubtotalOptions)
+pivotTableTotalOptions_rowSubtotalOptions = Lens.lens (\PivotTableTotalOptions' {rowSubtotalOptions} -> rowSubtotalOptions) (\s@PivotTableTotalOptions' {} a -> s {rowSubtotalOptions = a} :: PivotTableTotalOptions)
+
+-- | The row total options.
+pivotTableTotalOptions_rowTotalOptions :: Lens.Lens' PivotTableTotalOptions (Prelude.Maybe PivotTotalOptions)
+pivotTableTotalOptions_rowTotalOptions = Lens.lens (\PivotTableTotalOptions' {rowTotalOptions} -> rowTotalOptions) (\s@PivotTableTotalOptions' {} a -> s {rowTotalOptions = a} :: PivotTableTotalOptions)
+
+instance Data.FromJSON PivotTableTotalOptions where
+  parseJSON =
+    Data.withObject
+      "PivotTableTotalOptions"
+      ( \x ->
+          PivotTableTotalOptions'
+            Prelude.<$> (x Data..:? "ColumnSubtotalOptions")
+            Prelude.<*> (x Data..:? "ColumnTotalOptions")
+            Prelude.<*> (x Data..:? "RowSubtotalOptions")
+            Prelude.<*> (x Data..:? "RowTotalOptions")
+      )
+
+instance Prelude.Hashable PivotTableTotalOptions where
+  hashWithSalt _salt PivotTableTotalOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnSubtotalOptions
+      `Prelude.hashWithSalt` columnTotalOptions
+      `Prelude.hashWithSalt` rowSubtotalOptions
+      `Prelude.hashWithSalt` rowTotalOptions
+
+instance Prelude.NFData PivotTableTotalOptions where
+  rnf PivotTableTotalOptions' {..} =
+    Prelude.rnf columnSubtotalOptions
+      `Prelude.seq` Prelude.rnf columnTotalOptions
+      `Prelude.seq` Prelude.rnf rowSubtotalOptions
+      `Prelude.seq` Prelude.rnf rowTotalOptions
+
+instance Data.ToJSON PivotTableTotalOptions where
+  toJSON PivotTableTotalOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnSubtotalOptions" Data..=)
+              Prelude.<$> columnSubtotalOptions,
+            ("ColumnTotalOptions" Data..=)
+              Prelude.<$> columnTotalOptions,
+            ("RowSubtotalOptions" Data..=)
+              Prelude.<$> rowSubtotalOptions,
+            ("RowTotalOptions" Data..=)
+              Prelude.<$> rowTotalOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTableVisual.hs b/gen/Amazonka/QuickSight/Types/PivotTableVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTableVisual.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.QuickSight.Types.PivotTableVisual
+-- 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.QuickSight.Types.PivotTableVisual 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.QuickSight.Types.PivotTableConditionalFormatting
+import Amazonka.QuickSight.Types.PivotTableConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A pivot table.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/pivot-table.html Using pivot tables>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newPivotTableVisual' smart constructor.
+data PivotTableVisual = PivotTableVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe PivotTableConfiguration,
+    -- | The conditional formatting for a @PivotTableVisual@.
+    conditionalFormatting :: Prelude.Maybe PivotTableConditionalFormatting,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTableVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'pivotTableVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'pivotTableVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'conditionalFormatting', 'pivotTableVisual_conditionalFormatting' - The conditional formatting for a @PivotTableVisual@.
+--
+-- 'subtitle', 'pivotTableVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'pivotTableVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'pivotTableVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newPivotTableVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  PivotTableVisual
+newPivotTableVisual pVisualId_ =
+  PivotTableVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      conditionalFormatting = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+pivotTableVisual_actions :: Lens.Lens' PivotTableVisual (Prelude.Maybe [VisualCustomAction])
+pivotTableVisual_actions = Lens.lens (\PivotTableVisual' {actions} -> actions) (\s@PivotTableVisual' {} a -> s {actions = a} :: PivotTableVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+pivotTableVisual_chartConfiguration :: Lens.Lens' PivotTableVisual (Prelude.Maybe PivotTableConfiguration)
+pivotTableVisual_chartConfiguration = Lens.lens (\PivotTableVisual' {chartConfiguration} -> chartConfiguration) (\s@PivotTableVisual' {} a -> s {chartConfiguration = a} :: PivotTableVisual)
+
+-- | The conditional formatting for a @PivotTableVisual@.
+pivotTableVisual_conditionalFormatting :: Lens.Lens' PivotTableVisual (Prelude.Maybe PivotTableConditionalFormatting)
+pivotTableVisual_conditionalFormatting = Lens.lens (\PivotTableVisual' {conditionalFormatting} -> conditionalFormatting) (\s@PivotTableVisual' {} a -> s {conditionalFormatting = a} :: PivotTableVisual)
+
+-- | The subtitle that is displayed on the visual.
+pivotTableVisual_subtitle :: Lens.Lens' PivotTableVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+pivotTableVisual_subtitle = Lens.lens (\PivotTableVisual' {subtitle} -> subtitle) (\s@PivotTableVisual' {} a -> s {subtitle = a} :: PivotTableVisual)
+
+-- | The title that is displayed on the visual.
+pivotTableVisual_title :: Lens.Lens' PivotTableVisual (Prelude.Maybe VisualTitleLabelOptions)
+pivotTableVisual_title = Lens.lens (\PivotTableVisual' {title} -> title) (\s@PivotTableVisual' {} a -> s {title = a} :: PivotTableVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+pivotTableVisual_visualId :: Lens.Lens' PivotTableVisual Prelude.Text
+pivotTableVisual_visualId = Lens.lens (\PivotTableVisual' {visualId} -> visualId) (\s@PivotTableVisual' {} a -> s {visualId = a} :: PivotTableVisual)
+
+instance Data.FromJSON PivotTableVisual where
+  parseJSON =
+    Data.withObject
+      "PivotTableVisual"
+      ( \x ->
+          PivotTableVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> (x Data..:? "ConditionalFormatting")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable PivotTableVisual where
+  hashWithSalt _salt PivotTableVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` conditionalFormatting
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData PivotTableVisual where
+  rnf PivotTableVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf conditionalFormatting
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON PivotTableVisual where
+  toJSON PivotTableVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ConditionalFormatting" Data..=)
+              Prelude.<$> conditionalFormatting,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PivotTotalOptions.hs b/gen/Amazonka/QuickSight/Types/PivotTotalOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PivotTotalOptions.hs
@@ -0,0 +1,166 @@
+{-# 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.QuickSight.Types.PivotTotalOptions
+-- 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.QuickSight.Types.PivotTotalOptions 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.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.TableTotalsPlacement
+import Amazonka.QuickSight.Types.TableTotalsScrollStatus
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The optional configuration of totals cells in a @PivotTableVisual@.
+--
+-- /See:/ 'newPivotTotalOptions' smart constructor.
+data PivotTotalOptions = PivotTotalOptions'
+  { -- | The custom label string for the total cells.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The cell styling options for the total of header cells.
+    metricHeaderCellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The placement (start, end) for the total cells.
+    placement :: Prelude.Maybe TableTotalsPlacement,
+    -- | The scroll status (pinned, scrolled) for the total cells.
+    scrollStatus :: Prelude.Maybe TableTotalsScrollStatus,
+    -- | The cell styling options for the total cells.
+    totalCellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The visibility configuration for the total cells.
+    totalsVisibility :: Prelude.Maybe Visibility,
+    -- | The cell styling options for the totals of value cells.
+    valueCellStyle :: Prelude.Maybe TableCellStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PivotTotalOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'pivotTotalOptions_customLabel' - The custom label string for the total cells.
+--
+-- 'metricHeaderCellStyle', 'pivotTotalOptions_metricHeaderCellStyle' - The cell styling options for the total of header cells.
+--
+-- 'placement', 'pivotTotalOptions_placement' - The placement (start, end) for the total cells.
+--
+-- 'scrollStatus', 'pivotTotalOptions_scrollStatus' - The scroll status (pinned, scrolled) for the total cells.
+--
+-- 'totalCellStyle', 'pivotTotalOptions_totalCellStyle' - The cell styling options for the total cells.
+--
+-- 'totalsVisibility', 'pivotTotalOptions_totalsVisibility' - The visibility configuration for the total cells.
+--
+-- 'valueCellStyle', 'pivotTotalOptions_valueCellStyle' - The cell styling options for the totals of value cells.
+newPivotTotalOptions ::
+  PivotTotalOptions
+newPivotTotalOptions =
+  PivotTotalOptions'
+    { customLabel = Prelude.Nothing,
+      metricHeaderCellStyle = Prelude.Nothing,
+      placement = Prelude.Nothing,
+      scrollStatus = Prelude.Nothing,
+      totalCellStyle = Prelude.Nothing,
+      totalsVisibility = Prelude.Nothing,
+      valueCellStyle = Prelude.Nothing
+    }
+
+-- | The custom label string for the total cells.
+pivotTotalOptions_customLabel :: Lens.Lens' PivotTotalOptions (Prelude.Maybe Prelude.Text)
+pivotTotalOptions_customLabel = Lens.lens (\PivotTotalOptions' {customLabel} -> customLabel) (\s@PivotTotalOptions' {} a -> s {customLabel = a} :: PivotTotalOptions)
+
+-- | The cell styling options for the total of header cells.
+pivotTotalOptions_metricHeaderCellStyle :: Lens.Lens' PivotTotalOptions (Prelude.Maybe TableCellStyle)
+pivotTotalOptions_metricHeaderCellStyle = Lens.lens (\PivotTotalOptions' {metricHeaderCellStyle} -> metricHeaderCellStyle) (\s@PivotTotalOptions' {} a -> s {metricHeaderCellStyle = a} :: PivotTotalOptions)
+
+-- | The placement (start, end) for the total cells.
+pivotTotalOptions_placement :: Lens.Lens' PivotTotalOptions (Prelude.Maybe TableTotalsPlacement)
+pivotTotalOptions_placement = Lens.lens (\PivotTotalOptions' {placement} -> placement) (\s@PivotTotalOptions' {} a -> s {placement = a} :: PivotTotalOptions)
+
+-- | The scroll status (pinned, scrolled) for the total cells.
+pivotTotalOptions_scrollStatus :: Lens.Lens' PivotTotalOptions (Prelude.Maybe TableTotalsScrollStatus)
+pivotTotalOptions_scrollStatus = Lens.lens (\PivotTotalOptions' {scrollStatus} -> scrollStatus) (\s@PivotTotalOptions' {} a -> s {scrollStatus = a} :: PivotTotalOptions)
+
+-- | The cell styling options for the total cells.
+pivotTotalOptions_totalCellStyle :: Lens.Lens' PivotTotalOptions (Prelude.Maybe TableCellStyle)
+pivotTotalOptions_totalCellStyle = Lens.lens (\PivotTotalOptions' {totalCellStyle} -> totalCellStyle) (\s@PivotTotalOptions' {} a -> s {totalCellStyle = a} :: PivotTotalOptions)
+
+-- | The visibility configuration for the total cells.
+pivotTotalOptions_totalsVisibility :: Lens.Lens' PivotTotalOptions (Prelude.Maybe Visibility)
+pivotTotalOptions_totalsVisibility = Lens.lens (\PivotTotalOptions' {totalsVisibility} -> totalsVisibility) (\s@PivotTotalOptions' {} a -> s {totalsVisibility = a} :: PivotTotalOptions)
+
+-- | The cell styling options for the totals of value cells.
+pivotTotalOptions_valueCellStyle :: Lens.Lens' PivotTotalOptions (Prelude.Maybe TableCellStyle)
+pivotTotalOptions_valueCellStyle = Lens.lens (\PivotTotalOptions' {valueCellStyle} -> valueCellStyle) (\s@PivotTotalOptions' {} a -> s {valueCellStyle = a} :: PivotTotalOptions)
+
+instance Data.FromJSON PivotTotalOptions where
+  parseJSON =
+    Data.withObject
+      "PivotTotalOptions"
+      ( \x ->
+          PivotTotalOptions'
+            Prelude.<$> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "MetricHeaderCellStyle")
+            Prelude.<*> (x Data..:? "Placement")
+            Prelude.<*> (x Data..:? "ScrollStatus")
+            Prelude.<*> (x Data..:? "TotalCellStyle")
+            Prelude.<*> (x Data..:? "TotalsVisibility")
+            Prelude.<*> (x Data..:? "ValueCellStyle")
+      )
+
+instance Prelude.Hashable PivotTotalOptions where
+  hashWithSalt _salt PivotTotalOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` metricHeaderCellStyle
+      `Prelude.hashWithSalt` placement
+      `Prelude.hashWithSalt` scrollStatus
+      `Prelude.hashWithSalt` totalCellStyle
+      `Prelude.hashWithSalt` totalsVisibility
+      `Prelude.hashWithSalt` valueCellStyle
+
+instance Prelude.NFData PivotTotalOptions where
+  rnf PivotTotalOptions' {..} =
+    Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf metricHeaderCellStyle
+      `Prelude.seq` Prelude.rnf placement
+      `Prelude.seq` Prelude.rnf scrollStatus
+      `Prelude.seq` Prelude.rnf totalCellStyle
+      `Prelude.seq` Prelude.rnf totalsVisibility
+      `Prelude.seq` Prelude.rnf valueCellStyle
+
+instance Data.ToJSON PivotTotalOptions where
+  toJSON PivotTotalOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("MetricHeaderCellStyle" Data..=)
+              Prelude.<$> metricHeaderCellStyle,
+            ("Placement" Data..=) Prelude.<$> placement,
+            ("ScrollStatus" Data..=) Prelude.<$> scrollStatus,
+            ("TotalCellStyle" Data..=)
+              Prelude.<$> totalCellStyle,
+            ("TotalsVisibility" Data..=)
+              Prelude.<$> totalsVisibility,
+            ("ValueCellStyle" Data..=)
+              Prelude.<$> valueCellStyle
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PostgreSqlParameters.hs b/gen/Amazonka/QuickSight/Types/PostgreSqlParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PostgreSqlParameters.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.QuickSight.Types.PostgreSqlParameters
+-- 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.QuickSight.Types.PostgreSqlParameters 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 parameters for PostgreSQL.
+--
+-- /See:/ 'newPostgreSqlParameters' smart constructor.
+data PostgreSqlParameters = PostgreSqlParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PostgreSqlParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'postgreSqlParameters_host' - Host.
+--
+-- 'port', 'postgreSqlParameters_port' - Port.
+--
+-- 'database', 'postgreSqlParameters_database' - Database.
+newPostgreSqlParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  PostgreSqlParameters
+newPostgreSqlParameters pHost_ pPort_ pDatabase_ =
+  PostgreSqlParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | Host.
+postgreSqlParameters_host :: Lens.Lens' PostgreSqlParameters Prelude.Text
+postgreSqlParameters_host = Lens.lens (\PostgreSqlParameters' {host} -> host) (\s@PostgreSqlParameters' {} a -> s {host = a} :: PostgreSqlParameters)
+
+-- | Port.
+postgreSqlParameters_port :: Lens.Lens' PostgreSqlParameters Prelude.Natural
+postgreSqlParameters_port = Lens.lens (\PostgreSqlParameters' {port} -> port) (\s@PostgreSqlParameters' {} a -> s {port = a} :: PostgreSqlParameters)
+
+-- | Database.
+postgreSqlParameters_database :: Lens.Lens' PostgreSqlParameters Prelude.Text
+postgreSqlParameters_database = Lens.lens (\PostgreSqlParameters' {database} -> database) (\s@PostgreSqlParameters' {} a -> s {database = a} :: PostgreSqlParameters)
+
+instance Data.FromJSON PostgreSqlParameters where
+  parseJSON =
+    Data.withObject
+      "PostgreSqlParameters"
+      ( \x ->
+          PostgreSqlParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable PostgreSqlParameters where
+  hashWithSalt _salt PostgreSqlParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData PostgreSqlParameters where
+  rnf PostgreSqlParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON PostgreSqlParameters where
+  toJSON PostgreSqlParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PredefinedHierarchy.hs b/gen/Amazonka/QuickSight/Types/PredefinedHierarchy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PredefinedHierarchy.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.PredefinedHierarchy
+-- 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.QuickSight.Types.PredefinedHierarchy 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.DrillDownFilter
+
+-- | The option that determines the hierarchy of the fields that are defined
+-- during data preparation. These fields are available to use in any
+-- analysis that uses the data source.
+--
+-- /See:/ 'newPredefinedHierarchy' smart constructor.
+data PredefinedHierarchy = PredefinedHierarchy'
+  { -- | The option that determines the drill down filters for the predefined
+    -- hierarchy.
+    drillDownFilters :: Prelude.Maybe [DrillDownFilter],
+    -- | The hierarchy ID of the predefined hierarchy.
+    hierarchyId :: Prelude.Text,
+    -- | The list of columns that define the predefined hierarchy.
+    columns :: Prelude.NonEmpty ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PredefinedHierarchy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'drillDownFilters', 'predefinedHierarchy_drillDownFilters' - The option that determines the drill down filters for the predefined
+-- hierarchy.
+--
+-- 'hierarchyId', 'predefinedHierarchy_hierarchyId' - The hierarchy ID of the predefined hierarchy.
+--
+-- 'columns', 'predefinedHierarchy_columns' - The list of columns that define the predefined hierarchy.
+newPredefinedHierarchy ::
+  -- | 'hierarchyId'
+  Prelude.Text ->
+  -- | 'columns'
+  Prelude.NonEmpty ColumnIdentifier ->
+  PredefinedHierarchy
+newPredefinedHierarchy pHierarchyId_ pColumns_ =
+  PredefinedHierarchy'
+    { drillDownFilters =
+        Prelude.Nothing,
+      hierarchyId = pHierarchyId_,
+      columns = Lens.coerced Lens.# pColumns_
+    }
+
+-- | The option that determines the drill down filters for the predefined
+-- hierarchy.
+predefinedHierarchy_drillDownFilters :: Lens.Lens' PredefinedHierarchy (Prelude.Maybe [DrillDownFilter])
+predefinedHierarchy_drillDownFilters = Lens.lens (\PredefinedHierarchy' {drillDownFilters} -> drillDownFilters) (\s@PredefinedHierarchy' {} a -> s {drillDownFilters = a} :: PredefinedHierarchy) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hierarchy ID of the predefined hierarchy.
+predefinedHierarchy_hierarchyId :: Lens.Lens' PredefinedHierarchy Prelude.Text
+predefinedHierarchy_hierarchyId = Lens.lens (\PredefinedHierarchy' {hierarchyId} -> hierarchyId) (\s@PredefinedHierarchy' {} a -> s {hierarchyId = a} :: PredefinedHierarchy)
+
+-- | The list of columns that define the predefined hierarchy.
+predefinedHierarchy_columns :: Lens.Lens' PredefinedHierarchy (Prelude.NonEmpty ColumnIdentifier)
+predefinedHierarchy_columns = Lens.lens (\PredefinedHierarchy' {columns} -> columns) (\s@PredefinedHierarchy' {} a -> s {columns = a} :: PredefinedHierarchy) Prelude.. Lens.coerced
+
+instance Data.FromJSON PredefinedHierarchy where
+  parseJSON =
+    Data.withObject
+      "PredefinedHierarchy"
+      ( \x ->
+          PredefinedHierarchy'
+            Prelude.<$> ( x
+                            Data..:? "DrillDownFilters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "HierarchyId")
+            Prelude.<*> (x Data..: "Columns")
+      )
+
+instance Prelude.Hashable PredefinedHierarchy where
+  hashWithSalt _salt PredefinedHierarchy' {..} =
+    _salt
+      `Prelude.hashWithSalt` drillDownFilters
+      `Prelude.hashWithSalt` hierarchyId
+      `Prelude.hashWithSalt` columns
+
+instance Prelude.NFData PredefinedHierarchy where
+  rnf PredefinedHierarchy' {..} =
+    Prelude.rnf drillDownFilters
+      `Prelude.seq` Prelude.rnf hierarchyId
+      `Prelude.seq` Prelude.rnf columns
+
+instance Data.ToJSON PredefinedHierarchy where
+  toJSON PredefinedHierarchy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DrillDownFilters" Data..=)
+              Prelude.<$> drillDownFilters,
+            Prelude.Just ("HierarchyId" Data..= hierarchyId),
+            Prelude.Just ("Columns" Data..= columns)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PrestoParameters.hs b/gen/Amazonka/QuickSight/Types/PrestoParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PrestoParameters.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.QuickSight.Types.PrestoParameters
+-- 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.QuickSight.Types.PrestoParameters 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 parameters for Presto.
+--
+-- /See:/ 'newPrestoParameters' smart constructor.
+data PrestoParameters = PrestoParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Catalog.
+    catalog :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PrestoParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'prestoParameters_host' - Host.
+--
+-- 'port', 'prestoParameters_port' - Port.
+--
+-- 'catalog', 'prestoParameters_catalog' - Catalog.
+newPrestoParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'catalog'
+  Prelude.Text ->
+  PrestoParameters
+newPrestoParameters pHost_ pPort_ pCatalog_ =
+  PrestoParameters'
+    { host = pHost_,
+      port = pPort_,
+      catalog = pCatalog_
+    }
+
+-- | Host.
+prestoParameters_host :: Lens.Lens' PrestoParameters Prelude.Text
+prestoParameters_host = Lens.lens (\PrestoParameters' {host} -> host) (\s@PrestoParameters' {} a -> s {host = a} :: PrestoParameters)
+
+-- | Port.
+prestoParameters_port :: Lens.Lens' PrestoParameters Prelude.Natural
+prestoParameters_port = Lens.lens (\PrestoParameters' {port} -> port) (\s@PrestoParameters' {} a -> s {port = a} :: PrestoParameters)
+
+-- | Catalog.
+prestoParameters_catalog :: Lens.Lens' PrestoParameters Prelude.Text
+prestoParameters_catalog = Lens.lens (\PrestoParameters' {catalog} -> catalog) (\s@PrestoParameters' {} a -> s {catalog = a} :: PrestoParameters)
+
+instance Data.FromJSON PrestoParameters where
+  parseJSON =
+    Data.withObject
+      "PrestoParameters"
+      ( \x ->
+          PrestoParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Catalog")
+      )
+
+instance Prelude.Hashable PrestoParameters where
+  hashWithSalt _salt PrestoParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` catalog
+
+instance Prelude.NFData PrestoParameters where
+  rnf PrestoParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf catalog
+
+instance Data.ToJSON PrestoParameters where
+  toJSON PrestoParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Catalog" Data..= catalog)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/PrimaryValueDisplayType.hs b/gen/Amazonka/QuickSight/Types/PrimaryValueDisplayType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/PrimaryValueDisplayType.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.QuickSight.Types.PrimaryValueDisplayType
+-- 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.QuickSight.Types.PrimaryValueDisplayType
+  ( PrimaryValueDisplayType
+      ( ..,
+        PrimaryValueDisplayType_ACTUAL,
+        PrimaryValueDisplayType_COMPARISON,
+        PrimaryValueDisplayType_HIDDEN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PrimaryValueDisplayType = PrimaryValueDisplayType'
+  { fromPrimaryValueDisplayType ::
+      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 PrimaryValueDisplayType_ACTUAL :: PrimaryValueDisplayType
+pattern PrimaryValueDisplayType_ACTUAL = PrimaryValueDisplayType' "ACTUAL"
+
+pattern PrimaryValueDisplayType_COMPARISON :: PrimaryValueDisplayType
+pattern PrimaryValueDisplayType_COMPARISON = PrimaryValueDisplayType' "COMPARISON"
+
+pattern PrimaryValueDisplayType_HIDDEN :: PrimaryValueDisplayType
+pattern PrimaryValueDisplayType_HIDDEN = PrimaryValueDisplayType' "HIDDEN"
+
+{-# COMPLETE
+  PrimaryValueDisplayType_ACTUAL,
+  PrimaryValueDisplayType_COMPARISON,
+  PrimaryValueDisplayType_HIDDEN,
+  PrimaryValueDisplayType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ProgressBarOptions.hs b/gen/Amazonka/QuickSight/Types/ProgressBarOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ProgressBarOptions.hs
@@ -0,0 +1,77 @@
+{-# 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.QuickSight.Types.ProgressBarOptions
+-- 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.QuickSight.Types.ProgressBarOptions 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.QuickSight.Types.Visibility
+
+-- | The options that determine the presentation of the progress bar of a KPI
+-- visual.
+--
+-- /See:/ 'newProgressBarOptions' smart constructor.
+data ProgressBarOptions = ProgressBarOptions'
+  { -- | The visibility of the progress bar.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProgressBarOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'progressBarOptions_visibility' - The visibility of the progress bar.
+newProgressBarOptions ::
+  ProgressBarOptions
+newProgressBarOptions =
+  ProgressBarOptions' {visibility = Prelude.Nothing}
+
+-- | The visibility of the progress bar.
+progressBarOptions_visibility :: Lens.Lens' ProgressBarOptions (Prelude.Maybe Visibility)
+progressBarOptions_visibility = Lens.lens (\ProgressBarOptions' {visibility} -> visibility) (\s@ProgressBarOptions' {} a -> s {visibility = a} :: ProgressBarOptions)
+
+instance Data.FromJSON ProgressBarOptions where
+  parseJSON =
+    Data.withObject
+      "ProgressBarOptions"
+      ( \x ->
+          ProgressBarOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable ProgressBarOptions where
+  hashWithSalt _salt ProgressBarOptions' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData ProgressBarOptions where
+  rnf ProgressBarOptions' {..} = Prelude.rnf visibility
+
+instance Data.ToJSON ProgressBarOptions where
+  toJSON ProgressBarOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ProjectOperation.hs b/gen/Amazonka/QuickSight/Types/ProjectOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ProjectOperation.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.QuickSight.Types.ProjectOperation
+-- 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.QuickSight.Types.ProjectOperation 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 transform operation that projects columns. Operations that come after
+-- a projection can only refer to projected columns.
+--
+-- /See:/ 'newProjectOperation' smart constructor.
+data ProjectOperation = ProjectOperation'
+  { -- | Projected columns.
+    projectedColumns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProjectOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'projectedColumns', 'projectOperation_projectedColumns' - Projected columns.
+newProjectOperation ::
+  -- | 'projectedColumns'
+  Prelude.NonEmpty Prelude.Text ->
+  ProjectOperation
+newProjectOperation pProjectedColumns_ =
+  ProjectOperation'
+    { projectedColumns =
+        Lens.coerced Lens.# pProjectedColumns_
+    }
+
+-- | Projected columns.
+projectOperation_projectedColumns :: Lens.Lens' ProjectOperation (Prelude.NonEmpty Prelude.Text)
+projectOperation_projectedColumns = Lens.lens (\ProjectOperation' {projectedColumns} -> projectedColumns) (\s@ProjectOperation' {} a -> s {projectedColumns = a} :: ProjectOperation) Prelude.. Lens.coerced
+
+instance Data.FromJSON ProjectOperation where
+  parseJSON =
+    Data.withObject
+      "ProjectOperation"
+      ( \x ->
+          ProjectOperation'
+            Prelude.<$> (x Data..: "ProjectedColumns")
+      )
+
+instance Prelude.Hashable ProjectOperation where
+  hashWithSalt _salt ProjectOperation' {..} =
+    _salt `Prelude.hashWithSalt` projectedColumns
+
+instance Prelude.NFData ProjectOperation where
+  rnf ProjectOperation' {..} =
+    Prelude.rnf projectedColumns
+
+instance Data.ToJSON ProjectOperation where
+  toJSON ProjectOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ProjectedColumns" Data..= projectedColumns)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/QueueInfo.hs b/gen/Amazonka/QuickSight/Types/QueueInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/QueueInfo.hs
@@ -0,0 +1,92 @@
+{-# 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.QuickSight.Types.QueueInfo
+-- 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.QuickSight.Types.QueueInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a queued dataset SPICE ingestion.
+--
+-- /See:/ 'newQueueInfo' smart constructor.
+data QueueInfo = QueueInfo'
+  { -- | The ID of the queued ingestion.
+    waitingOnIngestion :: Prelude.Text,
+    -- | The ID of the ongoing ingestion. The queued ingestion is waiting for the
+    -- ongoing ingestion to complete.
+    queuedIngestion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QueueInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'waitingOnIngestion', 'queueInfo_waitingOnIngestion' - The ID of the queued ingestion.
+--
+-- 'queuedIngestion', 'queueInfo_queuedIngestion' - The ID of the ongoing ingestion. The queued ingestion is waiting for the
+-- ongoing ingestion to complete.
+newQueueInfo ::
+  -- | 'waitingOnIngestion'
+  Prelude.Text ->
+  -- | 'queuedIngestion'
+  Prelude.Text ->
+  QueueInfo
+newQueueInfo pWaitingOnIngestion_ pQueuedIngestion_ =
+  QueueInfo'
+    { waitingOnIngestion =
+        pWaitingOnIngestion_,
+      queuedIngestion = pQueuedIngestion_
+    }
+
+-- | The ID of the queued ingestion.
+queueInfo_waitingOnIngestion :: Lens.Lens' QueueInfo Prelude.Text
+queueInfo_waitingOnIngestion = Lens.lens (\QueueInfo' {waitingOnIngestion} -> waitingOnIngestion) (\s@QueueInfo' {} a -> s {waitingOnIngestion = a} :: QueueInfo)
+
+-- | The ID of the ongoing ingestion. The queued ingestion is waiting for the
+-- ongoing ingestion to complete.
+queueInfo_queuedIngestion :: Lens.Lens' QueueInfo Prelude.Text
+queueInfo_queuedIngestion = Lens.lens (\QueueInfo' {queuedIngestion} -> queuedIngestion) (\s@QueueInfo' {} a -> s {queuedIngestion = a} :: QueueInfo)
+
+instance Data.FromJSON QueueInfo where
+  parseJSON =
+    Data.withObject
+      "QueueInfo"
+      ( \x ->
+          QueueInfo'
+            Prelude.<$> (x Data..: "WaitingOnIngestion")
+            Prelude.<*> (x Data..: "QueuedIngestion")
+      )
+
+instance Prelude.Hashable QueueInfo where
+  hashWithSalt _salt QueueInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` waitingOnIngestion
+      `Prelude.hashWithSalt` queuedIngestion
+
+instance Prelude.NFData QueueInfo where
+  rnf QueueInfo' {..} =
+    Prelude.rnf waitingOnIngestion
+      `Prelude.seq` Prelude.rnf queuedIngestion
diff --git a/gen/Amazonka/QuickSight/Types/RangeEndsLabelType.hs b/gen/Amazonka/QuickSight/Types/RangeEndsLabelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RangeEndsLabelType.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.QuickSight.Types.RangeEndsLabelType
+-- 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.QuickSight.Types.RangeEndsLabelType 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.QuickSight.Types.Visibility
+
+-- | The range ends label type of a data path label.
+--
+-- /See:/ 'newRangeEndsLabelType' smart constructor.
+data RangeEndsLabelType = RangeEndsLabelType'
+  { -- | The visibility of the range ends label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RangeEndsLabelType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'rangeEndsLabelType_visibility' - The visibility of the range ends label.
+newRangeEndsLabelType ::
+  RangeEndsLabelType
+newRangeEndsLabelType =
+  RangeEndsLabelType' {visibility = Prelude.Nothing}
+
+-- | The visibility of the range ends label.
+rangeEndsLabelType_visibility :: Lens.Lens' RangeEndsLabelType (Prelude.Maybe Visibility)
+rangeEndsLabelType_visibility = Lens.lens (\RangeEndsLabelType' {visibility} -> visibility) (\s@RangeEndsLabelType' {} a -> s {visibility = a} :: RangeEndsLabelType)
+
+instance Data.FromJSON RangeEndsLabelType where
+  parseJSON =
+    Data.withObject
+      "RangeEndsLabelType"
+      ( \x ->
+          RangeEndsLabelType'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable RangeEndsLabelType where
+  hashWithSalt _salt RangeEndsLabelType' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData RangeEndsLabelType where
+  rnf RangeEndsLabelType' {..} = Prelude.rnf visibility
+
+instance Data.ToJSON RangeEndsLabelType where
+  toJSON RangeEndsLabelType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RdsParameters.hs b/gen/Amazonka/QuickSight/Types/RdsParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RdsParameters.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RdsParameters
+-- 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.QuickSight.Types.RdsParameters 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 parameters for Amazon RDS.
+--
+-- /See:/ 'newRdsParameters' smart constructor.
+data RdsParameters = RdsParameters'
+  { -- | Instance ID.
+    instanceId :: Prelude.Text,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RdsParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceId', 'rdsParameters_instanceId' - Instance ID.
+--
+-- 'database', 'rdsParameters_database' - Database.
+newRdsParameters ::
+  -- | 'instanceId'
+  Prelude.Text ->
+  -- | 'database'
+  Prelude.Text ->
+  RdsParameters
+newRdsParameters pInstanceId_ pDatabase_ =
+  RdsParameters'
+    { instanceId = pInstanceId_,
+      database = pDatabase_
+    }
+
+-- | Instance ID.
+rdsParameters_instanceId :: Lens.Lens' RdsParameters Prelude.Text
+rdsParameters_instanceId = Lens.lens (\RdsParameters' {instanceId} -> instanceId) (\s@RdsParameters' {} a -> s {instanceId = a} :: RdsParameters)
+
+-- | Database.
+rdsParameters_database :: Lens.Lens' RdsParameters Prelude.Text
+rdsParameters_database = Lens.lens (\RdsParameters' {database} -> database) (\s@RdsParameters' {} a -> s {database = a} :: RdsParameters)
+
+instance Data.FromJSON RdsParameters where
+  parseJSON =
+    Data.withObject
+      "RdsParameters"
+      ( \x ->
+          RdsParameters'
+            Prelude.<$> (x Data..: "InstanceId")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable RdsParameters where
+  hashWithSalt _salt RdsParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceId
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData RdsParameters where
+  rnf RdsParameters' {..} =
+    Prelude.rnf instanceId
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON RdsParameters where
+  toJSON RdsParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("InstanceId" Data..= instanceId),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RedshiftParameters.hs b/gen/Amazonka/QuickSight/Types/RedshiftParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RedshiftParameters.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RedshiftParameters
+-- 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.QuickSight.Types.RedshiftParameters 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 parameters for Amazon Redshift. The @ClusterId@ field can be blank
+-- if @Host@ and @Port@ are both set. The @Host@ and @Port@ fields can be
+-- blank if the @ClusterId@ field is set.
+--
+-- /See:/ 'newRedshiftParameters' smart constructor.
+data RedshiftParameters = RedshiftParameters'
+  { -- | Cluster ID. This field can be blank if the @Host@ and @Port@ are
+    -- provided.
+    clusterId :: Prelude.Maybe Prelude.Text,
+    -- | Host. This field can be blank if @ClusterId@ is provided.
+    host :: Prelude.Maybe Prelude.Text,
+    -- | Port. This field can be blank if the @ClusterId@ is provided.
+    port :: Prelude.Maybe Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedshiftParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clusterId', 'redshiftParameters_clusterId' - Cluster ID. This field can be blank if the @Host@ and @Port@ are
+-- provided.
+--
+-- 'host', 'redshiftParameters_host' - Host. This field can be blank if @ClusterId@ is provided.
+--
+-- 'port', 'redshiftParameters_port' - Port. This field can be blank if the @ClusterId@ is provided.
+--
+-- 'database', 'redshiftParameters_database' - Database.
+newRedshiftParameters ::
+  -- | 'database'
+  Prelude.Text ->
+  RedshiftParameters
+newRedshiftParameters pDatabase_ =
+  RedshiftParameters'
+    { clusterId = Prelude.Nothing,
+      host = Prelude.Nothing,
+      port = Prelude.Nothing,
+      database = pDatabase_
+    }
+
+-- | Cluster ID. This field can be blank if the @Host@ and @Port@ are
+-- provided.
+redshiftParameters_clusterId :: Lens.Lens' RedshiftParameters (Prelude.Maybe Prelude.Text)
+redshiftParameters_clusterId = Lens.lens (\RedshiftParameters' {clusterId} -> clusterId) (\s@RedshiftParameters' {} a -> s {clusterId = a} :: RedshiftParameters)
+
+-- | Host. This field can be blank if @ClusterId@ is provided.
+redshiftParameters_host :: Lens.Lens' RedshiftParameters (Prelude.Maybe Prelude.Text)
+redshiftParameters_host = Lens.lens (\RedshiftParameters' {host} -> host) (\s@RedshiftParameters' {} a -> s {host = a} :: RedshiftParameters)
+
+-- | Port. This field can be blank if the @ClusterId@ is provided.
+redshiftParameters_port :: Lens.Lens' RedshiftParameters (Prelude.Maybe Prelude.Natural)
+redshiftParameters_port = Lens.lens (\RedshiftParameters' {port} -> port) (\s@RedshiftParameters' {} a -> s {port = a} :: RedshiftParameters)
+
+-- | Database.
+redshiftParameters_database :: Lens.Lens' RedshiftParameters Prelude.Text
+redshiftParameters_database = Lens.lens (\RedshiftParameters' {database} -> database) (\s@RedshiftParameters' {} a -> s {database = a} :: RedshiftParameters)
+
+instance Data.FromJSON RedshiftParameters where
+  parseJSON =
+    Data.withObject
+      "RedshiftParameters"
+      ( \x ->
+          RedshiftParameters'
+            Prelude.<$> (x Data..:? "ClusterId")
+            Prelude.<*> (x Data..:? "Host")
+            Prelude.<*> (x Data..:? "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable RedshiftParameters where
+  hashWithSalt _salt RedshiftParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` clusterId
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData RedshiftParameters where
+  rnf RedshiftParameters' {..} =
+    Prelude.rnf clusterId
+      `Prelude.seq` Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON RedshiftParameters where
+  toJSON RedshiftParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClusterId" Data..=) Prelude.<$> clusterId,
+            ("Host" Data..=) Prelude.<$> host,
+            ("Port" Data..=) Prelude.<$> port,
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLine.hs b/gen/Amazonka/QuickSight/Types/ReferenceLine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLine.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ReferenceLine
+-- 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.QuickSight.Types.ReferenceLine 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.QuickSight.Types.ReferenceLineDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineStyleConfiguration
+import Amazonka.QuickSight.Types.WidgetStatus
+
+-- | The reference line visual display options.
+--
+-- /See:/ 'newReferenceLine' smart constructor.
+data ReferenceLine = ReferenceLine'
+  { -- | The label configuration of the reference line.
+    labelConfiguration :: Prelude.Maybe ReferenceLineLabelConfiguration,
+    -- | The status of the reference line. Choose one of the following options:
+    --
+    -- -   @ENABLE@
+    --
+    -- -   @DISABLE@
+    status :: Prelude.Maybe WidgetStatus,
+    -- | The style configuration of the reference line.
+    styleConfiguration :: Prelude.Maybe ReferenceLineStyleConfiguration,
+    -- | The data configuration of the reference line.
+    dataConfiguration :: ReferenceLineDataConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLine' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelConfiguration', 'referenceLine_labelConfiguration' - The label configuration of the reference line.
+--
+-- 'status', 'referenceLine_status' - The status of the reference line. Choose one of the following options:
+--
+-- -   @ENABLE@
+--
+-- -   @DISABLE@
+--
+-- 'styleConfiguration', 'referenceLine_styleConfiguration' - The style configuration of the reference line.
+--
+-- 'dataConfiguration', 'referenceLine_dataConfiguration' - The data configuration of the reference line.
+newReferenceLine ::
+  -- | 'dataConfiguration'
+  ReferenceLineDataConfiguration ->
+  ReferenceLine
+newReferenceLine pDataConfiguration_ =
+  ReferenceLine'
+    { labelConfiguration =
+        Prelude.Nothing,
+      status = Prelude.Nothing,
+      styleConfiguration = Prelude.Nothing,
+      dataConfiguration = pDataConfiguration_
+    }
+
+-- | The label configuration of the reference line.
+referenceLine_labelConfiguration :: Lens.Lens' ReferenceLine (Prelude.Maybe ReferenceLineLabelConfiguration)
+referenceLine_labelConfiguration = Lens.lens (\ReferenceLine' {labelConfiguration} -> labelConfiguration) (\s@ReferenceLine' {} a -> s {labelConfiguration = a} :: ReferenceLine)
+
+-- | The status of the reference line. Choose one of the following options:
+--
+-- -   @ENABLE@
+--
+-- -   @DISABLE@
+referenceLine_status :: Lens.Lens' ReferenceLine (Prelude.Maybe WidgetStatus)
+referenceLine_status = Lens.lens (\ReferenceLine' {status} -> status) (\s@ReferenceLine' {} a -> s {status = a} :: ReferenceLine)
+
+-- | The style configuration of the reference line.
+referenceLine_styleConfiguration :: Lens.Lens' ReferenceLine (Prelude.Maybe ReferenceLineStyleConfiguration)
+referenceLine_styleConfiguration = Lens.lens (\ReferenceLine' {styleConfiguration} -> styleConfiguration) (\s@ReferenceLine' {} a -> s {styleConfiguration = a} :: ReferenceLine)
+
+-- | The data configuration of the reference line.
+referenceLine_dataConfiguration :: Lens.Lens' ReferenceLine ReferenceLineDataConfiguration
+referenceLine_dataConfiguration = Lens.lens (\ReferenceLine' {dataConfiguration} -> dataConfiguration) (\s@ReferenceLine' {} a -> s {dataConfiguration = a} :: ReferenceLine)
+
+instance Data.FromJSON ReferenceLine where
+  parseJSON =
+    Data.withObject
+      "ReferenceLine"
+      ( \x ->
+          ReferenceLine'
+            Prelude.<$> (x Data..:? "LabelConfiguration")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StyleConfiguration")
+            Prelude.<*> (x Data..: "DataConfiguration")
+      )
+
+instance Prelude.Hashable ReferenceLine where
+  hashWithSalt _salt ReferenceLine' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelConfiguration
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` styleConfiguration
+      `Prelude.hashWithSalt` dataConfiguration
+
+instance Prelude.NFData ReferenceLine where
+  rnf ReferenceLine' {..} =
+    Prelude.rnf labelConfiguration
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf styleConfiguration
+      `Prelude.seq` Prelude.rnf dataConfiguration
+
+instance Data.ToJSON ReferenceLine where
+  toJSON ReferenceLine' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LabelConfiguration" Data..=)
+              Prelude.<$> labelConfiguration,
+            ("Status" Data..=) Prelude.<$> status,
+            ("StyleConfiguration" Data..=)
+              Prelude.<$> styleConfiguration,
+            Prelude.Just
+              ("DataConfiguration" Data..= dataConfiguration)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineCustomLabelConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineCustomLabelConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineCustomLabelConfiguration.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.QuickSight.Types.ReferenceLineCustomLabelConfiguration
+-- 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.QuickSight.Types.ReferenceLineCustomLabelConfiguration 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 configuration for a custom label on a @ReferenceLine@.
+--
+-- /See:/ 'newReferenceLineCustomLabelConfiguration' smart constructor.
+data ReferenceLineCustomLabelConfiguration = ReferenceLineCustomLabelConfiguration'
+  { -- | The string text of the custom label.
+    customLabel :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineCustomLabelConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'referenceLineCustomLabelConfiguration_customLabel' - The string text of the custom label.
+newReferenceLineCustomLabelConfiguration ::
+  -- | 'customLabel'
+  Prelude.Text ->
+  ReferenceLineCustomLabelConfiguration
+newReferenceLineCustomLabelConfiguration
+  pCustomLabel_ =
+    ReferenceLineCustomLabelConfiguration'
+      { customLabel =
+          pCustomLabel_
+      }
+
+-- | The string text of the custom label.
+referenceLineCustomLabelConfiguration_customLabel :: Lens.Lens' ReferenceLineCustomLabelConfiguration Prelude.Text
+referenceLineCustomLabelConfiguration_customLabel = Lens.lens (\ReferenceLineCustomLabelConfiguration' {customLabel} -> customLabel) (\s@ReferenceLineCustomLabelConfiguration' {} a -> s {customLabel = a} :: ReferenceLineCustomLabelConfiguration)
+
+instance
+  Data.FromJSON
+    ReferenceLineCustomLabelConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineCustomLabelConfiguration"
+      ( \x ->
+          ReferenceLineCustomLabelConfiguration'
+            Prelude.<$> (x Data..: "CustomLabel")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineCustomLabelConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineCustomLabelConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` customLabel
+
+instance
+  Prelude.NFData
+    ReferenceLineCustomLabelConfiguration
+  where
+  rnf ReferenceLineCustomLabelConfiguration' {..} =
+    Prelude.rnf customLabel
+
+instance
+  Data.ToJSON
+    ReferenceLineCustomLabelConfiguration
+  where
+  toJSON ReferenceLineCustomLabelConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("CustomLabel" Data..= customLabel)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineDataConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineDataConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineDataConfiguration.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ReferenceLineDataConfiguration
+-- 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.QuickSight.Types.ReferenceLineDataConfiguration 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.QuickSight.Types.AxisBinding
+import Amazonka.QuickSight.Types.ReferenceLineDynamicDataConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineStaticDataConfiguration
+
+-- | The data configuration of the reference line.
+--
+-- /See:/ 'newReferenceLineDataConfiguration' smart constructor.
+data ReferenceLineDataConfiguration = ReferenceLineDataConfiguration'
+  { -- | The axis binding type of the reference line. Choose one of the following
+    -- options:
+    --
+    -- -   PrimaryY
+    --
+    -- -   SecondaryY
+    axisBinding :: Prelude.Maybe AxisBinding,
+    -- | The dynamic configuration of the reference line data configuration.
+    dynamicConfiguration :: Prelude.Maybe ReferenceLineDynamicDataConfiguration,
+    -- | The static data configuration of the reference line data configuration.
+    staticConfiguration :: Prelude.Maybe ReferenceLineStaticDataConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineDataConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'axisBinding', 'referenceLineDataConfiguration_axisBinding' - The axis binding type of the reference line. Choose one of the following
+-- options:
+--
+-- -   PrimaryY
+--
+-- -   SecondaryY
+--
+-- 'dynamicConfiguration', 'referenceLineDataConfiguration_dynamicConfiguration' - The dynamic configuration of the reference line data configuration.
+--
+-- 'staticConfiguration', 'referenceLineDataConfiguration_staticConfiguration' - The static data configuration of the reference line data configuration.
+newReferenceLineDataConfiguration ::
+  ReferenceLineDataConfiguration
+newReferenceLineDataConfiguration =
+  ReferenceLineDataConfiguration'
+    { axisBinding =
+        Prelude.Nothing,
+      dynamicConfiguration = Prelude.Nothing,
+      staticConfiguration = Prelude.Nothing
+    }
+
+-- | The axis binding type of the reference line. Choose one of the following
+-- options:
+--
+-- -   PrimaryY
+--
+-- -   SecondaryY
+referenceLineDataConfiguration_axisBinding :: Lens.Lens' ReferenceLineDataConfiguration (Prelude.Maybe AxisBinding)
+referenceLineDataConfiguration_axisBinding = Lens.lens (\ReferenceLineDataConfiguration' {axisBinding} -> axisBinding) (\s@ReferenceLineDataConfiguration' {} a -> s {axisBinding = a} :: ReferenceLineDataConfiguration)
+
+-- | The dynamic configuration of the reference line data configuration.
+referenceLineDataConfiguration_dynamicConfiguration :: Lens.Lens' ReferenceLineDataConfiguration (Prelude.Maybe ReferenceLineDynamicDataConfiguration)
+referenceLineDataConfiguration_dynamicConfiguration = Lens.lens (\ReferenceLineDataConfiguration' {dynamicConfiguration} -> dynamicConfiguration) (\s@ReferenceLineDataConfiguration' {} a -> s {dynamicConfiguration = a} :: ReferenceLineDataConfiguration)
+
+-- | The static data configuration of the reference line data configuration.
+referenceLineDataConfiguration_staticConfiguration :: Lens.Lens' ReferenceLineDataConfiguration (Prelude.Maybe ReferenceLineStaticDataConfiguration)
+referenceLineDataConfiguration_staticConfiguration = Lens.lens (\ReferenceLineDataConfiguration' {staticConfiguration} -> staticConfiguration) (\s@ReferenceLineDataConfiguration' {} a -> s {staticConfiguration = a} :: ReferenceLineDataConfiguration)
+
+instance Data.FromJSON ReferenceLineDataConfiguration where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineDataConfiguration"
+      ( \x ->
+          ReferenceLineDataConfiguration'
+            Prelude.<$> (x Data..:? "AxisBinding")
+            Prelude.<*> (x Data..:? "DynamicConfiguration")
+            Prelude.<*> (x Data..:? "StaticConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineDataConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineDataConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` axisBinding
+        `Prelude.hashWithSalt` dynamicConfiguration
+        `Prelude.hashWithSalt` staticConfiguration
+
+instance
+  Prelude.NFData
+    ReferenceLineDataConfiguration
+  where
+  rnf ReferenceLineDataConfiguration' {..} =
+    Prelude.rnf axisBinding
+      `Prelude.seq` Prelude.rnf dynamicConfiguration
+      `Prelude.seq` Prelude.rnf staticConfiguration
+
+instance Data.ToJSON ReferenceLineDataConfiguration where
+  toJSON ReferenceLineDataConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AxisBinding" Data..=) Prelude.<$> axisBinding,
+            ("DynamicConfiguration" Data..=)
+              Prelude.<$> dynamicConfiguration,
+            ("StaticConfiguration" Data..=)
+              Prelude.<$> staticConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineDynamicDataConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineDynamicDataConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineDynamicDataConfiguration.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ReferenceLineDynamicDataConfiguration
+-- 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.QuickSight.Types.ReferenceLineDynamicDataConfiguration 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.QuickSight.Types.AggregationFunction
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.NumericalAggregationFunction
+
+-- | The dynamic configuration of the reference line data configuration.
+--
+-- /See:/ 'newReferenceLineDynamicDataConfiguration' smart constructor.
+data ReferenceLineDynamicDataConfiguration = ReferenceLineDynamicDataConfiguration'
+  { -- | The column that the dynamic data targets.
+    column :: ColumnIdentifier,
+    -- | The aggregation function that is used in the dynamic data.
+    measureAggregationFunction :: AggregationFunction,
+    -- | The calculation that is used in the dynamic data.
+    calculation :: NumericalAggregationFunction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineDynamicDataConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'column', 'referenceLineDynamicDataConfiguration_column' - The column that the dynamic data targets.
+--
+-- 'measureAggregationFunction', 'referenceLineDynamicDataConfiguration_measureAggregationFunction' - The aggregation function that is used in the dynamic data.
+--
+-- 'calculation', 'referenceLineDynamicDataConfiguration_calculation' - The calculation that is used in the dynamic data.
+newReferenceLineDynamicDataConfiguration ::
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'measureAggregationFunction'
+  AggregationFunction ->
+  -- | 'calculation'
+  NumericalAggregationFunction ->
+  ReferenceLineDynamicDataConfiguration
+newReferenceLineDynamicDataConfiguration
+  pColumn_
+  pMeasureAggregationFunction_
+  pCalculation_ =
+    ReferenceLineDynamicDataConfiguration'
+      { column =
+          pColumn_,
+        measureAggregationFunction =
+          pMeasureAggregationFunction_,
+        calculation = pCalculation_
+      }
+
+-- | The column that the dynamic data targets.
+referenceLineDynamicDataConfiguration_column :: Lens.Lens' ReferenceLineDynamicDataConfiguration ColumnIdentifier
+referenceLineDynamicDataConfiguration_column = Lens.lens (\ReferenceLineDynamicDataConfiguration' {column} -> column) (\s@ReferenceLineDynamicDataConfiguration' {} a -> s {column = a} :: ReferenceLineDynamicDataConfiguration)
+
+-- | The aggregation function that is used in the dynamic data.
+referenceLineDynamicDataConfiguration_measureAggregationFunction :: Lens.Lens' ReferenceLineDynamicDataConfiguration AggregationFunction
+referenceLineDynamicDataConfiguration_measureAggregationFunction = Lens.lens (\ReferenceLineDynamicDataConfiguration' {measureAggregationFunction} -> measureAggregationFunction) (\s@ReferenceLineDynamicDataConfiguration' {} a -> s {measureAggregationFunction = a} :: ReferenceLineDynamicDataConfiguration)
+
+-- | The calculation that is used in the dynamic data.
+referenceLineDynamicDataConfiguration_calculation :: Lens.Lens' ReferenceLineDynamicDataConfiguration NumericalAggregationFunction
+referenceLineDynamicDataConfiguration_calculation = Lens.lens (\ReferenceLineDynamicDataConfiguration' {calculation} -> calculation) (\s@ReferenceLineDynamicDataConfiguration' {} a -> s {calculation = a} :: ReferenceLineDynamicDataConfiguration)
+
+instance
+  Data.FromJSON
+    ReferenceLineDynamicDataConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineDynamicDataConfiguration"
+      ( \x ->
+          ReferenceLineDynamicDataConfiguration'
+            Prelude.<$> (x Data..: "Column")
+            Prelude.<*> (x Data..: "MeasureAggregationFunction")
+            Prelude.<*> (x Data..: "Calculation")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineDynamicDataConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineDynamicDataConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` column
+        `Prelude.hashWithSalt` measureAggregationFunction
+        `Prelude.hashWithSalt` calculation
+
+instance
+  Prelude.NFData
+    ReferenceLineDynamicDataConfiguration
+  where
+  rnf ReferenceLineDynamicDataConfiguration' {..} =
+    Prelude.rnf column
+      `Prelude.seq` Prelude.rnf measureAggregationFunction
+      `Prelude.seq` Prelude.rnf calculation
+
+instance
+  Data.ToJSON
+    ReferenceLineDynamicDataConfiguration
+  where
+  toJSON ReferenceLineDynamicDataConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Column" Data..= column),
+            Prelude.Just
+              ( "MeasureAggregationFunction"
+                  Data..= measureAggregationFunction
+              ),
+            Prelude.Just ("Calculation" Data..= calculation)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineLabelConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineLabelConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineLabelConfiguration.hs
@@ -0,0 +1,203 @@
+{-# 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.QuickSight.Types.ReferenceLineLabelConfiguration
+-- 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.QuickSight.Types.ReferenceLineLabelConfiguration 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.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineCustomLabelConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineLabelHorizontalPosition
+import Amazonka.QuickSight.Types.ReferenceLineLabelVerticalPosition
+import Amazonka.QuickSight.Types.ReferenceLineValueLabelConfiguration
+
+-- | The label configuration of a reference line.
+--
+-- /See:/ 'newReferenceLineLabelConfiguration' smart constructor.
+data ReferenceLineLabelConfiguration = ReferenceLineLabelConfiguration'
+  { -- | The custom label configuration of the label in a reference line.
+    customLabelConfiguration :: Prelude.Maybe ReferenceLineCustomLabelConfiguration,
+    -- | The font color configuration of the label in a reference line.
+    fontColor :: Prelude.Maybe Prelude.Text,
+    -- | The font configuration of the label in a reference line.
+    fontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | The horizontal position configuration of the label in a reference line.
+    -- Choose one of the following options:
+    --
+    -- -   @LEFT@
+    --
+    -- -   @CENTER@
+    --
+    -- -   @RIGHT@
+    horizontalPosition :: Prelude.Maybe ReferenceLineLabelHorizontalPosition,
+    -- | The value label configuration of the label in a reference line.
+    valueLabelConfiguration :: Prelude.Maybe ReferenceLineValueLabelConfiguration,
+    -- | The vertical position configuration of the label in a reference line.
+    -- Choose one of the following options:
+    --
+    -- -   @ABOVE@
+    --
+    -- -   @BELOW@
+    verticalPosition :: Prelude.Maybe ReferenceLineLabelVerticalPosition
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineLabelConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabelConfiguration', 'referenceLineLabelConfiguration_customLabelConfiguration' - The custom label configuration of the label in a reference line.
+--
+-- 'fontColor', 'referenceLineLabelConfiguration_fontColor' - The font color configuration of the label in a reference line.
+--
+-- 'fontConfiguration', 'referenceLineLabelConfiguration_fontConfiguration' - The font configuration of the label in a reference line.
+--
+-- 'horizontalPosition', 'referenceLineLabelConfiguration_horizontalPosition' - The horizontal position configuration of the label in a reference line.
+-- Choose one of the following options:
+--
+-- -   @LEFT@
+--
+-- -   @CENTER@
+--
+-- -   @RIGHT@
+--
+-- 'valueLabelConfiguration', 'referenceLineLabelConfiguration_valueLabelConfiguration' - The value label configuration of the label in a reference line.
+--
+-- 'verticalPosition', 'referenceLineLabelConfiguration_verticalPosition' - The vertical position configuration of the label in a reference line.
+-- Choose one of the following options:
+--
+-- -   @ABOVE@
+--
+-- -   @BELOW@
+newReferenceLineLabelConfiguration ::
+  ReferenceLineLabelConfiguration
+newReferenceLineLabelConfiguration =
+  ReferenceLineLabelConfiguration'
+    { customLabelConfiguration =
+        Prelude.Nothing,
+      fontColor = Prelude.Nothing,
+      fontConfiguration = Prelude.Nothing,
+      horizontalPosition = Prelude.Nothing,
+      valueLabelConfiguration = Prelude.Nothing,
+      verticalPosition = Prelude.Nothing
+    }
+
+-- | The custom label configuration of the label in a reference line.
+referenceLineLabelConfiguration_customLabelConfiguration :: Lens.Lens' ReferenceLineLabelConfiguration (Prelude.Maybe ReferenceLineCustomLabelConfiguration)
+referenceLineLabelConfiguration_customLabelConfiguration = Lens.lens (\ReferenceLineLabelConfiguration' {customLabelConfiguration} -> customLabelConfiguration) (\s@ReferenceLineLabelConfiguration' {} a -> s {customLabelConfiguration = a} :: ReferenceLineLabelConfiguration)
+
+-- | The font color configuration of the label in a reference line.
+referenceLineLabelConfiguration_fontColor :: Lens.Lens' ReferenceLineLabelConfiguration (Prelude.Maybe Prelude.Text)
+referenceLineLabelConfiguration_fontColor = Lens.lens (\ReferenceLineLabelConfiguration' {fontColor} -> fontColor) (\s@ReferenceLineLabelConfiguration' {} a -> s {fontColor = a} :: ReferenceLineLabelConfiguration)
+
+-- | The font configuration of the label in a reference line.
+referenceLineLabelConfiguration_fontConfiguration :: Lens.Lens' ReferenceLineLabelConfiguration (Prelude.Maybe FontConfiguration)
+referenceLineLabelConfiguration_fontConfiguration = Lens.lens (\ReferenceLineLabelConfiguration' {fontConfiguration} -> fontConfiguration) (\s@ReferenceLineLabelConfiguration' {} a -> s {fontConfiguration = a} :: ReferenceLineLabelConfiguration)
+
+-- | The horizontal position configuration of the label in a reference line.
+-- Choose one of the following options:
+--
+-- -   @LEFT@
+--
+-- -   @CENTER@
+--
+-- -   @RIGHT@
+referenceLineLabelConfiguration_horizontalPosition :: Lens.Lens' ReferenceLineLabelConfiguration (Prelude.Maybe ReferenceLineLabelHorizontalPosition)
+referenceLineLabelConfiguration_horizontalPosition = Lens.lens (\ReferenceLineLabelConfiguration' {horizontalPosition} -> horizontalPosition) (\s@ReferenceLineLabelConfiguration' {} a -> s {horizontalPosition = a} :: ReferenceLineLabelConfiguration)
+
+-- | The value label configuration of the label in a reference line.
+referenceLineLabelConfiguration_valueLabelConfiguration :: Lens.Lens' ReferenceLineLabelConfiguration (Prelude.Maybe ReferenceLineValueLabelConfiguration)
+referenceLineLabelConfiguration_valueLabelConfiguration = Lens.lens (\ReferenceLineLabelConfiguration' {valueLabelConfiguration} -> valueLabelConfiguration) (\s@ReferenceLineLabelConfiguration' {} a -> s {valueLabelConfiguration = a} :: ReferenceLineLabelConfiguration)
+
+-- | The vertical position configuration of the label in a reference line.
+-- Choose one of the following options:
+--
+-- -   @ABOVE@
+--
+-- -   @BELOW@
+referenceLineLabelConfiguration_verticalPosition :: Lens.Lens' ReferenceLineLabelConfiguration (Prelude.Maybe ReferenceLineLabelVerticalPosition)
+referenceLineLabelConfiguration_verticalPosition = Lens.lens (\ReferenceLineLabelConfiguration' {verticalPosition} -> verticalPosition) (\s@ReferenceLineLabelConfiguration' {} a -> s {verticalPosition = a} :: ReferenceLineLabelConfiguration)
+
+instance
+  Data.FromJSON
+    ReferenceLineLabelConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineLabelConfiguration"
+      ( \x ->
+          ReferenceLineLabelConfiguration'
+            Prelude.<$> (x Data..:? "CustomLabelConfiguration")
+            Prelude.<*> (x Data..:? "FontColor")
+            Prelude.<*> (x Data..:? "FontConfiguration")
+            Prelude.<*> (x Data..:? "HorizontalPosition")
+            Prelude.<*> (x Data..:? "ValueLabelConfiguration")
+            Prelude.<*> (x Data..:? "VerticalPosition")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineLabelConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineLabelConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customLabelConfiguration
+        `Prelude.hashWithSalt` fontColor
+        `Prelude.hashWithSalt` fontConfiguration
+        `Prelude.hashWithSalt` horizontalPosition
+        `Prelude.hashWithSalt` valueLabelConfiguration
+        `Prelude.hashWithSalt` verticalPosition
+
+instance
+  Prelude.NFData
+    ReferenceLineLabelConfiguration
+  where
+  rnf ReferenceLineLabelConfiguration' {..} =
+    Prelude.rnf customLabelConfiguration
+      `Prelude.seq` Prelude.rnf fontColor
+      `Prelude.seq` Prelude.rnf fontConfiguration
+      `Prelude.seq` Prelude.rnf horizontalPosition
+      `Prelude.seq` Prelude.rnf valueLabelConfiguration
+      `Prelude.seq` Prelude.rnf verticalPosition
+
+instance Data.ToJSON ReferenceLineLabelConfiguration where
+  toJSON ReferenceLineLabelConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabelConfiguration" Data..=)
+              Prelude.<$> customLabelConfiguration,
+            ("FontColor" Data..=) Prelude.<$> fontColor,
+            ("FontConfiguration" Data..=)
+              Prelude.<$> fontConfiguration,
+            ("HorizontalPosition" Data..=)
+              Prelude.<$> horizontalPosition,
+            ("ValueLabelConfiguration" Data..=)
+              Prelude.<$> valueLabelConfiguration,
+            ("VerticalPosition" Data..=)
+              Prelude.<$> verticalPosition
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineLabelHorizontalPosition.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineLabelHorizontalPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineLabelHorizontalPosition.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.QuickSight.Types.ReferenceLineLabelHorizontalPosition
+-- 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.QuickSight.Types.ReferenceLineLabelHorizontalPosition
+  ( ReferenceLineLabelHorizontalPosition
+      ( ..,
+        ReferenceLineLabelHorizontalPosition_CENTER,
+        ReferenceLineLabelHorizontalPosition_LEFT,
+        ReferenceLineLabelHorizontalPosition_RIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReferenceLineLabelHorizontalPosition = ReferenceLineLabelHorizontalPosition'
+  { fromReferenceLineLabelHorizontalPosition ::
+      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 ReferenceLineLabelHorizontalPosition_CENTER :: ReferenceLineLabelHorizontalPosition
+pattern ReferenceLineLabelHorizontalPosition_CENTER = ReferenceLineLabelHorizontalPosition' "CENTER"
+
+pattern ReferenceLineLabelHorizontalPosition_LEFT :: ReferenceLineLabelHorizontalPosition
+pattern ReferenceLineLabelHorizontalPosition_LEFT = ReferenceLineLabelHorizontalPosition' "LEFT"
+
+pattern ReferenceLineLabelHorizontalPosition_RIGHT :: ReferenceLineLabelHorizontalPosition
+pattern ReferenceLineLabelHorizontalPosition_RIGHT = ReferenceLineLabelHorizontalPosition' "RIGHT"
+
+{-# COMPLETE
+  ReferenceLineLabelHorizontalPosition_CENTER,
+  ReferenceLineLabelHorizontalPosition_LEFT,
+  ReferenceLineLabelHorizontalPosition_RIGHT,
+  ReferenceLineLabelHorizontalPosition'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineLabelVerticalPosition.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineLabelVerticalPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineLabelVerticalPosition.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.QuickSight.Types.ReferenceLineLabelVerticalPosition
+-- 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.QuickSight.Types.ReferenceLineLabelVerticalPosition
+  ( ReferenceLineLabelVerticalPosition
+      ( ..,
+        ReferenceLineLabelVerticalPosition_ABOVE,
+        ReferenceLineLabelVerticalPosition_BELOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReferenceLineLabelVerticalPosition = ReferenceLineLabelVerticalPosition'
+  { fromReferenceLineLabelVerticalPosition ::
+      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 ReferenceLineLabelVerticalPosition_ABOVE :: ReferenceLineLabelVerticalPosition
+pattern ReferenceLineLabelVerticalPosition_ABOVE = ReferenceLineLabelVerticalPosition' "ABOVE"
+
+pattern ReferenceLineLabelVerticalPosition_BELOW :: ReferenceLineLabelVerticalPosition
+pattern ReferenceLineLabelVerticalPosition_BELOW = ReferenceLineLabelVerticalPosition' "BELOW"
+
+{-# COMPLETE
+  ReferenceLineLabelVerticalPosition_ABOVE,
+  ReferenceLineLabelVerticalPosition_BELOW,
+  ReferenceLineLabelVerticalPosition'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLinePatternType.hs b/gen/Amazonka/QuickSight/Types/ReferenceLinePatternType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLinePatternType.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.QuickSight.Types.ReferenceLinePatternType
+-- 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.QuickSight.Types.ReferenceLinePatternType
+  ( ReferenceLinePatternType
+      ( ..,
+        ReferenceLinePatternType_DASHED,
+        ReferenceLinePatternType_DOTTED,
+        ReferenceLinePatternType_SOLID
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReferenceLinePatternType = ReferenceLinePatternType'
+  { fromReferenceLinePatternType ::
+      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 ReferenceLinePatternType_DASHED :: ReferenceLinePatternType
+pattern ReferenceLinePatternType_DASHED = ReferenceLinePatternType' "DASHED"
+
+pattern ReferenceLinePatternType_DOTTED :: ReferenceLinePatternType
+pattern ReferenceLinePatternType_DOTTED = ReferenceLinePatternType' "DOTTED"
+
+pattern ReferenceLinePatternType_SOLID :: ReferenceLinePatternType
+pattern ReferenceLinePatternType_SOLID = ReferenceLinePatternType' "SOLID"
+
+{-# COMPLETE
+  ReferenceLinePatternType_DASHED,
+  ReferenceLinePatternType_DOTTED,
+  ReferenceLinePatternType_SOLID,
+  ReferenceLinePatternType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineStaticDataConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineStaticDataConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineStaticDataConfiguration.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.ReferenceLineStaticDataConfiguration
+-- 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.QuickSight.Types.ReferenceLineStaticDataConfiguration 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 static data configuration of the reference line data configuration.
+--
+-- /See:/ 'newReferenceLineStaticDataConfiguration' smart constructor.
+data ReferenceLineStaticDataConfiguration = ReferenceLineStaticDataConfiguration'
+  { -- | The double input of the static data.
+    value :: Data.Sensitive Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineStaticDataConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'value', 'referenceLineStaticDataConfiguration_value' - The double input of the static data.
+newReferenceLineStaticDataConfiguration ::
+  -- | 'value'
+  Prelude.Double ->
+  ReferenceLineStaticDataConfiguration
+newReferenceLineStaticDataConfiguration pValue_ =
+  ReferenceLineStaticDataConfiguration'
+    { value =
+        Data._Sensitive Lens.# pValue_
+    }
+
+-- | The double input of the static data.
+referenceLineStaticDataConfiguration_value :: Lens.Lens' ReferenceLineStaticDataConfiguration Prelude.Double
+referenceLineStaticDataConfiguration_value = Lens.lens (\ReferenceLineStaticDataConfiguration' {value} -> value) (\s@ReferenceLineStaticDataConfiguration' {} a -> s {value = a} :: ReferenceLineStaticDataConfiguration) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    ReferenceLineStaticDataConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineStaticDataConfiguration"
+      ( \x ->
+          ReferenceLineStaticDataConfiguration'
+            Prelude.<$> (x Data..: "Value")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineStaticDataConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineStaticDataConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` value
+
+instance
+  Prelude.NFData
+    ReferenceLineStaticDataConfiguration
+  where
+  rnf ReferenceLineStaticDataConfiguration' {..} =
+    Prelude.rnf value
+
+instance
+  Data.ToJSON
+    ReferenceLineStaticDataConfiguration
+  where
+  toJSON ReferenceLineStaticDataConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Value" Data..= value)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineStyleConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineStyleConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineStyleConfiguration.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ReferenceLineStyleConfiguration
+-- 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.QuickSight.Types.ReferenceLineStyleConfiguration 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.QuickSight.Types.ReferenceLinePatternType
+
+-- | The style configuration of the reference line.
+--
+-- /See:/ 'newReferenceLineStyleConfiguration' smart constructor.
+data ReferenceLineStyleConfiguration = ReferenceLineStyleConfiguration'
+  { -- | The hex color of the reference line.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | The pattern type of the line style. Choose one of the following options:
+    --
+    -- -   @SOLID@
+    --
+    -- -   @DASHED@
+    --
+    -- -   @DOTTED@
+    pattern' :: Prelude.Maybe ReferenceLinePatternType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineStyleConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'referenceLineStyleConfiguration_color' - The hex color of the reference line.
+--
+-- 'pattern'', 'referenceLineStyleConfiguration_pattern' - The pattern type of the line style. Choose one of the following options:
+--
+-- -   @SOLID@
+--
+-- -   @DASHED@
+--
+-- -   @DOTTED@
+newReferenceLineStyleConfiguration ::
+  ReferenceLineStyleConfiguration
+newReferenceLineStyleConfiguration =
+  ReferenceLineStyleConfiguration'
+    { color =
+        Prelude.Nothing,
+      pattern' = Prelude.Nothing
+    }
+
+-- | The hex color of the reference line.
+referenceLineStyleConfiguration_color :: Lens.Lens' ReferenceLineStyleConfiguration (Prelude.Maybe Prelude.Text)
+referenceLineStyleConfiguration_color = Lens.lens (\ReferenceLineStyleConfiguration' {color} -> color) (\s@ReferenceLineStyleConfiguration' {} a -> s {color = a} :: ReferenceLineStyleConfiguration)
+
+-- | The pattern type of the line style. Choose one of the following options:
+--
+-- -   @SOLID@
+--
+-- -   @DASHED@
+--
+-- -   @DOTTED@
+referenceLineStyleConfiguration_pattern :: Lens.Lens' ReferenceLineStyleConfiguration (Prelude.Maybe ReferenceLinePatternType)
+referenceLineStyleConfiguration_pattern = Lens.lens (\ReferenceLineStyleConfiguration' {pattern'} -> pattern') (\s@ReferenceLineStyleConfiguration' {} a -> s {pattern' = a} :: ReferenceLineStyleConfiguration)
+
+instance
+  Data.FromJSON
+    ReferenceLineStyleConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineStyleConfiguration"
+      ( \x ->
+          ReferenceLineStyleConfiguration'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "Pattern")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineStyleConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineStyleConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` color
+        `Prelude.hashWithSalt` pattern'
+
+instance
+  Prelude.NFData
+    ReferenceLineStyleConfiguration
+  where
+  rnf ReferenceLineStyleConfiguration' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf pattern'
+
+instance Data.ToJSON ReferenceLineStyleConfiguration where
+  toJSON ReferenceLineStyleConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("Pattern" Data..=) Prelude.<$> pattern'
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineValueLabelConfiguration.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineValueLabelConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineValueLabelConfiguration.hs
@@ -0,0 +1,127 @@
+{-# 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.QuickSight.Types.ReferenceLineValueLabelConfiguration
+-- 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.QuickSight.Types.ReferenceLineValueLabelConfiguration 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.QuickSight.Types.NumericFormatConfiguration
+import Amazonka.QuickSight.Types.ReferenceLineValueLabelRelativePosition
+
+-- | The value label configuration of the label in a reference line.
+--
+-- /See:/ 'newReferenceLineValueLabelConfiguration' smart constructor.
+data ReferenceLineValueLabelConfiguration = ReferenceLineValueLabelConfiguration'
+  { -- | The format configuration of the value label.
+    formatConfiguration :: Prelude.Maybe NumericFormatConfiguration,
+    -- | The relative position of the value label. Choose one of the following
+    -- options:
+    --
+    -- -   @BEFORE_CUSTOM_LABEL@
+    --
+    -- -   @AFTER_CUSTOM_LABEL@
+    relativePosition :: Prelude.Maybe ReferenceLineValueLabelRelativePosition
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReferenceLineValueLabelConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatConfiguration', 'referenceLineValueLabelConfiguration_formatConfiguration' - The format configuration of the value label.
+--
+-- 'relativePosition', 'referenceLineValueLabelConfiguration_relativePosition' - The relative position of the value label. Choose one of the following
+-- options:
+--
+-- -   @BEFORE_CUSTOM_LABEL@
+--
+-- -   @AFTER_CUSTOM_LABEL@
+newReferenceLineValueLabelConfiguration ::
+  ReferenceLineValueLabelConfiguration
+newReferenceLineValueLabelConfiguration =
+  ReferenceLineValueLabelConfiguration'
+    { formatConfiguration =
+        Prelude.Nothing,
+      relativePosition = Prelude.Nothing
+    }
+
+-- | The format configuration of the value label.
+referenceLineValueLabelConfiguration_formatConfiguration :: Lens.Lens' ReferenceLineValueLabelConfiguration (Prelude.Maybe NumericFormatConfiguration)
+referenceLineValueLabelConfiguration_formatConfiguration = Lens.lens (\ReferenceLineValueLabelConfiguration' {formatConfiguration} -> formatConfiguration) (\s@ReferenceLineValueLabelConfiguration' {} a -> s {formatConfiguration = a} :: ReferenceLineValueLabelConfiguration)
+
+-- | The relative position of the value label. Choose one of the following
+-- options:
+--
+-- -   @BEFORE_CUSTOM_LABEL@
+--
+-- -   @AFTER_CUSTOM_LABEL@
+referenceLineValueLabelConfiguration_relativePosition :: Lens.Lens' ReferenceLineValueLabelConfiguration (Prelude.Maybe ReferenceLineValueLabelRelativePosition)
+referenceLineValueLabelConfiguration_relativePosition = Lens.lens (\ReferenceLineValueLabelConfiguration' {relativePosition} -> relativePosition) (\s@ReferenceLineValueLabelConfiguration' {} a -> s {relativePosition = a} :: ReferenceLineValueLabelConfiguration)
+
+instance
+  Data.FromJSON
+    ReferenceLineValueLabelConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ReferenceLineValueLabelConfiguration"
+      ( \x ->
+          ReferenceLineValueLabelConfiguration'
+            Prelude.<$> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..:? "RelativePosition")
+      )
+
+instance
+  Prelude.Hashable
+    ReferenceLineValueLabelConfiguration
+  where
+  hashWithSalt
+    _salt
+    ReferenceLineValueLabelConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` formatConfiguration
+        `Prelude.hashWithSalt` relativePosition
+
+instance
+  Prelude.NFData
+    ReferenceLineValueLabelConfiguration
+  where
+  rnf ReferenceLineValueLabelConfiguration' {..} =
+    Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf relativePosition
+
+instance
+  Data.ToJSON
+    ReferenceLineValueLabelConfiguration
+  where
+  toJSON ReferenceLineValueLabelConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            ("RelativePosition" Data..=)
+              Prelude.<$> relativePosition
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ReferenceLineValueLabelRelativePosition.hs b/gen/Amazonka/QuickSight/Types/ReferenceLineValueLabelRelativePosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ReferenceLineValueLabelRelativePosition.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.QuickSight.Types.ReferenceLineValueLabelRelativePosition
+-- 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.QuickSight.Types.ReferenceLineValueLabelRelativePosition
+  ( ReferenceLineValueLabelRelativePosition
+      ( ..,
+        ReferenceLineValueLabelRelativePosition_AFTER_CUSTOM_LABEL,
+        ReferenceLineValueLabelRelativePosition_BEFORE_CUSTOM_LABEL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReferenceLineValueLabelRelativePosition = ReferenceLineValueLabelRelativePosition'
+  { fromReferenceLineValueLabelRelativePosition ::
+      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 ReferenceLineValueLabelRelativePosition_AFTER_CUSTOM_LABEL :: ReferenceLineValueLabelRelativePosition
+pattern ReferenceLineValueLabelRelativePosition_AFTER_CUSTOM_LABEL = ReferenceLineValueLabelRelativePosition' "AFTER_CUSTOM_LABEL"
+
+pattern ReferenceLineValueLabelRelativePosition_BEFORE_CUSTOM_LABEL :: ReferenceLineValueLabelRelativePosition
+pattern ReferenceLineValueLabelRelativePosition_BEFORE_CUSTOM_LABEL = ReferenceLineValueLabelRelativePosition' "BEFORE_CUSTOM_LABEL"
+
+{-# COMPLETE
+  ReferenceLineValueLabelRelativePosition_AFTER_CUSTOM_LABEL,
+  ReferenceLineValueLabelRelativePosition_BEFORE_CUSTOM_LABEL,
+  ReferenceLineValueLabelRelativePosition'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/RegisteredUserDashboardEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/RegisteredUserDashboardEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RegisteredUserDashboardEmbeddingConfiguration.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.QuickSight.Types.RegisteredUserDashboardEmbeddingConfiguration
+-- 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.QuickSight.Types.RegisteredUserDashboardEmbeddingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the dashboard you want to embed.
+--
+-- /See:/ 'newRegisteredUserDashboardEmbeddingConfiguration' smart constructor.
+data RegisteredUserDashboardEmbeddingConfiguration = RegisteredUserDashboardEmbeddingConfiguration'
+  { -- | The dashboard ID for the dashboard that you want the user to see first.
+    -- This ID is included in the output URL. When the URL in response is
+    -- accessed, Amazon QuickSight renders this dashboard if the user has
+    -- permissions to view it.
+    --
+    -- If the user does not have permission to view this dashboard, they see a
+    -- permissions error message.
+    initialDashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisteredUserDashboardEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialDashboardId', 'registeredUserDashboardEmbeddingConfiguration_initialDashboardId' - The dashboard ID for the dashboard that you want the user to see first.
+-- This ID is included in the output URL. When the URL in response is
+-- accessed, Amazon QuickSight renders this dashboard if the user has
+-- permissions to view it.
+--
+-- If the user does not have permission to view this dashboard, they see a
+-- permissions error message.
+newRegisteredUserDashboardEmbeddingConfiguration ::
+  -- | 'initialDashboardId'
+  Prelude.Text ->
+  RegisteredUserDashboardEmbeddingConfiguration
+newRegisteredUserDashboardEmbeddingConfiguration
+  pInitialDashboardId_ =
+    RegisteredUserDashboardEmbeddingConfiguration'
+      { initialDashboardId =
+          pInitialDashboardId_
+      }
+
+-- | The dashboard ID for the dashboard that you want the user to see first.
+-- This ID is included in the output URL. When the URL in response is
+-- accessed, Amazon QuickSight renders this dashboard if the user has
+-- permissions to view it.
+--
+-- If the user does not have permission to view this dashboard, they see a
+-- permissions error message.
+registeredUserDashboardEmbeddingConfiguration_initialDashboardId :: Lens.Lens' RegisteredUserDashboardEmbeddingConfiguration Prelude.Text
+registeredUserDashboardEmbeddingConfiguration_initialDashboardId = Lens.lens (\RegisteredUserDashboardEmbeddingConfiguration' {initialDashboardId} -> initialDashboardId) (\s@RegisteredUserDashboardEmbeddingConfiguration' {} a -> s {initialDashboardId = a} :: RegisteredUserDashboardEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    RegisteredUserDashboardEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    RegisteredUserDashboardEmbeddingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` initialDashboardId
+
+instance
+  Prelude.NFData
+    RegisteredUserDashboardEmbeddingConfiguration
+  where
+  rnf
+    RegisteredUserDashboardEmbeddingConfiguration' {..} =
+      Prelude.rnf initialDashboardId
+
+instance
+  Data.ToJSON
+    RegisteredUserDashboardEmbeddingConfiguration
+  where
+  toJSON
+    RegisteredUserDashboardEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("InitialDashboardId" Data..= initialDashboardId)
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/RegisteredUserDashboardVisualEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/RegisteredUserDashboardVisualEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RegisteredUserDashboardVisualEmbeddingConfiguration.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.RegisteredUserDashboardVisualEmbeddingConfiguration
+-- 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.QuickSight.Types.RegisteredUserDashboardVisualEmbeddingConfiguration 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.QuickSight.Types.DashboardVisualId
+
+-- | The experience that you are embedding. You can use this object to
+-- generate a url that embeds a visual into your application.
+--
+-- /See:/ 'newRegisteredUserDashboardVisualEmbeddingConfiguration' smart constructor.
+data RegisteredUserDashboardVisualEmbeddingConfiguration = RegisteredUserDashboardVisualEmbeddingConfiguration'
+  { -- | The visual ID for the visual that you want the user to embed. This ID is
+    -- included in the output URL. When the URL in response is accessed, Amazon
+    -- QuickSight renders this visual.
+    --
+    -- The Amazon Resource Name (ARN) of the dashboard that the visual belongs
+    -- to must be included in the @AuthorizedResourceArns@ parameter.
+    -- Otherwise, the request will fail with @InvalidParameterValueException@.
+    initialDashboardVisualId :: DashboardVisualId
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisteredUserDashboardVisualEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialDashboardVisualId', 'registeredUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId' - The visual ID for the visual that you want the user to embed. This ID is
+-- included in the output URL. When the URL in response is accessed, Amazon
+-- QuickSight renders this visual.
+--
+-- The Amazon Resource Name (ARN) of the dashboard that the visual belongs
+-- to must be included in the @AuthorizedResourceArns@ parameter.
+-- Otherwise, the request will fail with @InvalidParameterValueException@.
+newRegisteredUserDashboardVisualEmbeddingConfiguration ::
+  -- | 'initialDashboardVisualId'
+  DashboardVisualId ->
+  RegisteredUserDashboardVisualEmbeddingConfiguration
+newRegisteredUserDashboardVisualEmbeddingConfiguration
+  pInitialDashboardVisualId_ =
+    RegisteredUserDashboardVisualEmbeddingConfiguration'
+      { initialDashboardVisualId =
+          pInitialDashboardVisualId_
+      }
+
+-- | The visual ID for the visual that you want the user to embed. This ID is
+-- included in the output URL. When the URL in response is accessed, Amazon
+-- QuickSight renders this visual.
+--
+-- The Amazon Resource Name (ARN) of the dashboard that the visual belongs
+-- to must be included in the @AuthorizedResourceArns@ parameter.
+-- Otherwise, the request will fail with @InvalidParameterValueException@.
+registeredUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId :: Lens.Lens' RegisteredUserDashboardVisualEmbeddingConfiguration DashboardVisualId
+registeredUserDashboardVisualEmbeddingConfiguration_initialDashboardVisualId = Lens.lens (\RegisteredUserDashboardVisualEmbeddingConfiguration' {initialDashboardVisualId} -> initialDashboardVisualId) (\s@RegisteredUserDashboardVisualEmbeddingConfiguration' {} a -> s {initialDashboardVisualId = a} :: RegisteredUserDashboardVisualEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    RegisteredUserDashboardVisualEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    RegisteredUserDashboardVisualEmbeddingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` initialDashboardVisualId
+
+instance
+  Prelude.NFData
+    RegisteredUserDashboardVisualEmbeddingConfiguration
+  where
+  rnf
+    RegisteredUserDashboardVisualEmbeddingConfiguration' {..} =
+      Prelude.rnf initialDashboardVisualId
+
+instance
+  Data.ToJSON
+    RegisteredUserDashboardVisualEmbeddingConfiguration
+  where
+  toJSON
+    RegisteredUserDashboardVisualEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ( "InitialDashboardVisualId"
+                    Data..= initialDashboardVisualId
+                )
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/RegisteredUserEmbeddingExperienceConfiguration.hs b/gen/Amazonka/QuickSight/Types/RegisteredUserEmbeddingExperienceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RegisteredUserEmbeddingExperienceConfiguration.hs
@@ -0,0 +1,234 @@
+{-# 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.QuickSight.Types.RegisteredUserEmbeddingExperienceConfiguration
+-- 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.QuickSight.Types.RegisteredUserEmbeddingExperienceConfiguration 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.QuickSight.Types.RegisteredUserDashboardEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserDashboardVisualEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserQSearchBarEmbeddingConfiguration
+import Amazonka.QuickSight.Types.RegisteredUserQuickSightConsoleEmbeddingConfiguration
+
+-- | The type of experience you want to embed. For registered users, you can
+-- embed Amazon QuickSight dashboards or the Amazon QuickSight console.
+--
+-- Exactly one of the experience configurations is required. You can choose
+-- @Dashboard@ or @QuickSightConsole@. You cannot choose more than one
+-- experience configuration.
+--
+-- /See:/ 'newRegisteredUserEmbeddingExperienceConfiguration' smart constructor.
+data RegisteredUserEmbeddingExperienceConfiguration = RegisteredUserEmbeddingExperienceConfiguration'
+  { -- | The configuration details for providing a dashboard embedding
+    -- experience.
+    dashboard :: Prelude.Maybe RegisteredUserDashboardEmbeddingConfiguration,
+    -- | The type of embedding experience. In this case, Amazon QuickSight
+    -- visuals.
+    dashboardVisual :: Prelude.Maybe RegisteredUserDashboardVisualEmbeddingConfiguration,
+    -- | The configuration details for embedding the Q search bar.
+    --
+    -- For more information about embedding the Q search bar, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html Embedding Overview>
+    -- in the /Amazon QuickSight User Guide/.
+    qSearchBar :: Prelude.Maybe RegisteredUserQSearchBarEmbeddingConfiguration,
+    -- | The configuration details for providing each Amazon QuickSight console
+    -- embedding experience. This can be used along with custom permissions to
+    -- restrict access to certain features. For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+    -- in the /Amazon QuickSight User Guide/.
+    --
+    -- Use
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html GenerateEmbedUrlForRegisteredUser>@ @
+    -- where you want to provide an authoring portal that allows users to
+    -- create data sources, datasets, analyses, and dashboards. The users who
+    -- accesses an embedded Amazon QuickSight console needs to belong to the
+    -- author or admin security cohort. If you want to restrict permissions to
+    -- some of these features, add a custom permissions profile to the user
+    -- with the
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+    -- API operation. Use the
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html RegisterUser>@ @
+    -- API operation to add a new user with a custom permission profile
+    -- attached. For more information, see the following sections in the
+    -- /Amazon QuickSight User Guide/:
+    --
+    -- -   <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-full-console-for-authenticated-users.html Embedding the Full Functionality of the Amazon QuickSight Console for Authenticated Users>
+    --
+    -- -   <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+    --
+    -- For more information about the high-level steps for embedding and for an
+    -- interactive demo of the ways you can customize embedding, visit the
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
+    quickSightConsole :: Prelude.Maybe RegisteredUserQuickSightConsoleEmbeddingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisteredUserEmbeddingExperienceConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboard', 'registeredUserEmbeddingExperienceConfiguration_dashboard' - The configuration details for providing a dashboard embedding
+-- experience.
+--
+-- 'dashboardVisual', 'registeredUserEmbeddingExperienceConfiguration_dashboardVisual' - The type of embedding experience. In this case, Amazon QuickSight
+-- visuals.
+--
+-- 'qSearchBar', 'registeredUserEmbeddingExperienceConfiguration_qSearchBar' - The configuration details for embedding the Q search bar.
+--
+-- For more information about embedding the Q search bar, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html Embedding Overview>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'quickSightConsole', 'registeredUserEmbeddingExperienceConfiguration_quickSightConsole' - The configuration details for providing each Amazon QuickSight console
+-- embedding experience. This can be used along with custom permissions to
+-- restrict access to certain features. For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- Use
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html GenerateEmbedUrlForRegisteredUser>@ @
+-- where you want to provide an authoring portal that allows users to
+-- create data sources, datasets, analyses, and dashboards. The users who
+-- accesses an embedded Amazon QuickSight console needs to belong to the
+-- author or admin security cohort. If you want to restrict permissions to
+-- some of these features, add a custom permissions profile to the user
+-- with the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+-- API operation. Use the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html RegisterUser>@ @
+-- API operation to add a new user with a custom permission profile
+-- attached. For more information, see the following sections in the
+-- /Amazon QuickSight User Guide/:
+--
+-- -   <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-full-console-for-authenticated-users.html Embedding the Full Functionality of the Amazon QuickSight Console for Authenticated Users>
+--
+-- -   <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+--
+-- For more information about the high-level steps for embedding and for an
+-- interactive demo of the ways you can customize embedding, visit the
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
+newRegisteredUserEmbeddingExperienceConfiguration ::
+  RegisteredUserEmbeddingExperienceConfiguration
+newRegisteredUserEmbeddingExperienceConfiguration =
+  RegisteredUserEmbeddingExperienceConfiguration'
+    { dashboard =
+        Prelude.Nothing,
+      dashboardVisual =
+        Prelude.Nothing,
+      qSearchBar =
+        Prelude.Nothing,
+      quickSightConsole =
+        Prelude.Nothing
+    }
+
+-- | The configuration details for providing a dashboard embedding
+-- experience.
+registeredUserEmbeddingExperienceConfiguration_dashboard :: Lens.Lens' RegisteredUserEmbeddingExperienceConfiguration (Prelude.Maybe RegisteredUserDashboardEmbeddingConfiguration)
+registeredUserEmbeddingExperienceConfiguration_dashboard = Lens.lens (\RegisteredUserEmbeddingExperienceConfiguration' {dashboard} -> dashboard) (\s@RegisteredUserEmbeddingExperienceConfiguration' {} a -> s {dashboard = a} :: RegisteredUserEmbeddingExperienceConfiguration)
+
+-- | The type of embedding experience. In this case, Amazon QuickSight
+-- visuals.
+registeredUserEmbeddingExperienceConfiguration_dashboardVisual :: Lens.Lens' RegisteredUserEmbeddingExperienceConfiguration (Prelude.Maybe RegisteredUserDashboardVisualEmbeddingConfiguration)
+registeredUserEmbeddingExperienceConfiguration_dashboardVisual = Lens.lens (\RegisteredUserEmbeddingExperienceConfiguration' {dashboardVisual} -> dashboardVisual) (\s@RegisteredUserEmbeddingExperienceConfiguration' {} a -> s {dashboardVisual = a} :: RegisteredUserEmbeddingExperienceConfiguration)
+
+-- | The configuration details for embedding the Q search bar.
+--
+-- For more information about embedding the Q search bar, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html Embedding Overview>
+-- in the /Amazon QuickSight User Guide/.
+registeredUserEmbeddingExperienceConfiguration_qSearchBar :: Lens.Lens' RegisteredUserEmbeddingExperienceConfiguration (Prelude.Maybe RegisteredUserQSearchBarEmbeddingConfiguration)
+registeredUserEmbeddingExperienceConfiguration_qSearchBar = Lens.lens (\RegisteredUserEmbeddingExperienceConfiguration' {qSearchBar} -> qSearchBar) (\s@RegisteredUserEmbeddingExperienceConfiguration' {} a -> s {qSearchBar = a} :: RegisteredUserEmbeddingExperienceConfiguration)
+
+-- | The configuration details for providing each Amazon QuickSight console
+-- embedding experience. This can be used along with custom permissions to
+-- restrict access to certain features. For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- Use
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html GenerateEmbedUrlForRegisteredUser>@ @
+-- where you want to provide an authoring portal that allows users to
+-- create data sources, datasets, analyses, and dashboards. The users who
+-- accesses an embedded Amazon QuickSight console needs to belong to the
+-- author or admin security cohort. If you want to restrict permissions to
+-- some of these features, add a custom permissions profile to the user
+-- with the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html UpdateUser>@ @
+-- API operation. Use the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html RegisterUser>@ @
+-- API operation to add a new user with a custom permission profile
+-- attached. For more information, see the following sections in the
+-- /Amazon QuickSight User Guide/:
+--
+-- -   <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-full-console-for-authenticated-users.html Embedding the Full Functionality of the Amazon QuickSight Console for Authenticated Users>
+--
+-- -   <https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html Customizing Access to the Amazon QuickSight Console>
+--
+-- For more information about the high-level steps for embedding and for an
+-- interactive demo of the ways you can customize embedding, visit the
+-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
+registeredUserEmbeddingExperienceConfiguration_quickSightConsole :: Lens.Lens' RegisteredUserEmbeddingExperienceConfiguration (Prelude.Maybe RegisteredUserQuickSightConsoleEmbeddingConfiguration)
+registeredUserEmbeddingExperienceConfiguration_quickSightConsole = Lens.lens (\RegisteredUserEmbeddingExperienceConfiguration' {quickSightConsole} -> quickSightConsole) (\s@RegisteredUserEmbeddingExperienceConfiguration' {} a -> s {quickSightConsole = a} :: RegisteredUserEmbeddingExperienceConfiguration)
+
+instance
+  Prelude.Hashable
+    RegisteredUserEmbeddingExperienceConfiguration
+  where
+  hashWithSalt
+    _salt
+    RegisteredUserEmbeddingExperienceConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` dashboard
+        `Prelude.hashWithSalt` dashboardVisual
+        `Prelude.hashWithSalt` qSearchBar
+        `Prelude.hashWithSalt` quickSightConsole
+
+instance
+  Prelude.NFData
+    RegisteredUserEmbeddingExperienceConfiguration
+  where
+  rnf
+    RegisteredUserEmbeddingExperienceConfiguration' {..} =
+      Prelude.rnf dashboard
+        `Prelude.seq` Prelude.rnf dashboardVisual
+        `Prelude.seq` Prelude.rnf qSearchBar
+        `Prelude.seq` Prelude.rnf quickSightConsole
+
+instance
+  Data.ToJSON
+    RegisteredUserEmbeddingExperienceConfiguration
+  where
+  toJSON
+    RegisteredUserEmbeddingExperienceConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("Dashboard" Data..=) Prelude.<$> dashboard,
+              ("DashboardVisual" Data..=)
+                Prelude.<$> dashboardVisual,
+              ("QSearchBar" Data..=) Prelude.<$> qSearchBar,
+              ("QuickSightConsole" Data..=)
+                Prelude.<$> quickSightConsole
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/RegisteredUserQSearchBarEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/RegisteredUserQSearchBarEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RegisteredUserQSearchBarEmbeddingConfiguration.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RegisteredUserQSearchBarEmbeddingConfiguration
+-- 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.QuickSight.Types.RegisteredUserQSearchBarEmbeddingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the Q search bar embedding experience.
+--
+-- /See:/ 'newRegisteredUserQSearchBarEmbeddingConfiguration' smart constructor.
+data RegisteredUserQSearchBarEmbeddingConfiguration = RegisteredUserQSearchBarEmbeddingConfiguration'
+  { -- | The ID of the Q topic that you want to make the starting topic in the Q
+    -- search bar. You can find a topic ID by navigating to the Topics pane in
+    -- the Amazon QuickSight application and opening a topic. The ID is in the
+    -- URL for the topic that you open.
+    --
+    -- If you don\'t specify an initial topic, a list of all shared topics is
+    -- shown in the Q bar for your readers. When you select an initial topic,
+    -- you can specify whether or not readers are allowed to select other
+    -- topics from the available ones in the list.
+    initialTopicId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisteredUserQSearchBarEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialTopicId', 'registeredUserQSearchBarEmbeddingConfiguration_initialTopicId' - The ID of the Q topic that you want to make the starting topic in the Q
+-- search bar. You can find a topic ID by navigating to the Topics pane in
+-- the Amazon QuickSight application and opening a topic. The ID is in the
+-- URL for the topic that you open.
+--
+-- If you don\'t specify an initial topic, a list of all shared topics is
+-- shown in the Q bar for your readers. When you select an initial topic,
+-- you can specify whether or not readers are allowed to select other
+-- topics from the available ones in the list.
+newRegisteredUserQSearchBarEmbeddingConfiguration ::
+  RegisteredUserQSearchBarEmbeddingConfiguration
+newRegisteredUserQSearchBarEmbeddingConfiguration =
+  RegisteredUserQSearchBarEmbeddingConfiguration'
+    { initialTopicId =
+        Prelude.Nothing
+    }
+
+-- | The ID of the Q topic that you want to make the starting topic in the Q
+-- search bar. You can find a topic ID by navigating to the Topics pane in
+-- the Amazon QuickSight application and opening a topic. The ID is in the
+-- URL for the topic that you open.
+--
+-- If you don\'t specify an initial topic, a list of all shared topics is
+-- shown in the Q bar for your readers. When you select an initial topic,
+-- you can specify whether or not readers are allowed to select other
+-- topics from the available ones in the list.
+registeredUserQSearchBarEmbeddingConfiguration_initialTopicId :: Lens.Lens' RegisteredUserQSearchBarEmbeddingConfiguration (Prelude.Maybe Prelude.Text)
+registeredUserQSearchBarEmbeddingConfiguration_initialTopicId = Lens.lens (\RegisteredUserQSearchBarEmbeddingConfiguration' {initialTopicId} -> initialTopicId) (\s@RegisteredUserQSearchBarEmbeddingConfiguration' {} a -> s {initialTopicId = a} :: RegisteredUserQSearchBarEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    RegisteredUserQSearchBarEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    RegisteredUserQSearchBarEmbeddingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` initialTopicId
+
+instance
+  Prelude.NFData
+    RegisteredUserQSearchBarEmbeddingConfiguration
+  where
+  rnf
+    RegisteredUserQSearchBarEmbeddingConfiguration' {..} =
+      Prelude.rnf initialTopicId
+
+instance
+  Data.ToJSON
+    RegisteredUserQSearchBarEmbeddingConfiguration
+  where
+  toJSON
+    RegisteredUserQSearchBarEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("InitialTopicId" Data..=)
+                Prelude.<$> initialTopicId
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/RegisteredUserQuickSightConsoleEmbeddingConfiguration.hs b/gen/Amazonka/QuickSight/Types/RegisteredUserQuickSightConsoleEmbeddingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RegisteredUserQuickSightConsoleEmbeddingConfiguration.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RegisteredUserQuickSightConsoleEmbeddingConfiguration
+-- 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.QuickSight.Types.RegisteredUserQuickSightConsoleEmbeddingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the Amazon QuickSight console that you want to embed.
+--
+-- /See:/ 'newRegisteredUserQuickSightConsoleEmbeddingConfiguration' smart constructor.
+data RegisteredUserQuickSightConsoleEmbeddingConfiguration = RegisteredUserQuickSightConsoleEmbeddingConfiguration'
+  { -- | The initial URL path for the Amazon QuickSight console. @InitialPath@ is
+    -- required.
+    --
+    -- The entry point URL is constrained to the following paths:
+    --
+    -- -   @\/start@
+    --
+    -- -   @\/start\/analyses@
+    --
+    -- -   @\/start\/dashboards@
+    --
+    -- -   @\/start\/favorites@
+    --
+    -- -   @\/dashboards\/DashboardId@. /DashboardId/ is the actual ID key from
+    --     the Amazon QuickSight console URL of the dashboard.
+    --
+    -- -   @\/analyses\/AnalysisId@. /AnalysisId/ is the actual ID key from the
+    --     Amazon QuickSight console URL of the analysis.
+    initialPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisteredUserQuickSightConsoleEmbeddingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initialPath', 'registeredUserQuickSightConsoleEmbeddingConfiguration_initialPath' - The initial URL path for the Amazon QuickSight console. @InitialPath@ is
+-- required.
+--
+-- The entry point URL is constrained to the following paths:
+--
+-- -   @\/start@
+--
+-- -   @\/start\/analyses@
+--
+-- -   @\/start\/dashboards@
+--
+-- -   @\/start\/favorites@
+--
+-- -   @\/dashboards\/DashboardId@. /DashboardId/ is the actual ID key from
+--     the Amazon QuickSight console URL of the dashboard.
+--
+-- -   @\/analyses\/AnalysisId@. /AnalysisId/ is the actual ID key from the
+--     Amazon QuickSight console URL of the analysis.
+newRegisteredUserQuickSightConsoleEmbeddingConfiguration ::
+  RegisteredUserQuickSightConsoleEmbeddingConfiguration
+newRegisteredUserQuickSightConsoleEmbeddingConfiguration =
+  RegisteredUserQuickSightConsoleEmbeddingConfiguration'
+    { initialPath =
+        Prelude.Nothing
+    }
+
+-- | The initial URL path for the Amazon QuickSight console. @InitialPath@ is
+-- required.
+--
+-- The entry point URL is constrained to the following paths:
+--
+-- -   @\/start@
+--
+-- -   @\/start\/analyses@
+--
+-- -   @\/start\/dashboards@
+--
+-- -   @\/start\/favorites@
+--
+-- -   @\/dashboards\/DashboardId@. /DashboardId/ is the actual ID key from
+--     the Amazon QuickSight console URL of the dashboard.
+--
+-- -   @\/analyses\/AnalysisId@. /AnalysisId/ is the actual ID key from the
+--     Amazon QuickSight console URL of the analysis.
+registeredUserQuickSightConsoleEmbeddingConfiguration_initialPath :: Lens.Lens' RegisteredUserQuickSightConsoleEmbeddingConfiguration (Prelude.Maybe Prelude.Text)
+registeredUserQuickSightConsoleEmbeddingConfiguration_initialPath = Lens.lens (\RegisteredUserQuickSightConsoleEmbeddingConfiguration' {initialPath} -> initialPath) (\s@RegisteredUserQuickSightConsoleEmbeddingConfiguration' {} a -> s {initialPath = a} :: RegisteredUserQuickSightConsoleEmbeddingConfiguration)
+
+instance
+  Prelude.Hashable
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration
+  where
+  hashWithSalt
+    _salt
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` initialPath
+
+instance
+  Prelude.NFData
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration
+  where
+  rnf
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration' {..} =
+      Prelude.rnf initialPath
+
+instance
+  Data.ToJSON
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration
+  where
+  toJSON
+    RegisteredUserQuickSightConsoleEmbeddingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [("InitialPath" Data..=) Prelude.<$> initialPath]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/RelationalTable.hs b/gen/Amazonka/QuickSight/Types/RelationalTable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RelationalTable.hs
@@ -0,0 +1,145 @@
+{-# 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.QuickSight.Types.RelationalTable
+-- 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.QuickSight.Types.RelationalTable 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.QuickSight.Types.InputColumn
+
+-- | A physical table type for relational data sources.
+--
+-- /See:/ 'newRelationalTable' smart constructor.
+data RelationalTable = RelationalTable'
+  { -- | The catalog associated with a table.
+    catalog :: Prelude.Maybe Prelude.Text,
+    -- | The schema name. This name applies to certain relational database
+    -- engines.
+    schema :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the data source.
+    dataSourceArn :: Prelude.Text,
+    -- | The name of the relational table.
+    name :: Prelude.Text,
+    -- | The column schema of the table.
+    inputColumns :: Prelude.NonEmpty InputColumn
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RelationalTable' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalog', 'relationalTable_catalog' - The catalog associated with a table.
+--
+-- 'schema', 'relationalTable_schema' - The schema name. This name applies to certain relational database
+-- engines.
+--
+-- 'dataSourceArn', 'relationalTable_dataSourceArn' - The Amazon Resource Name (ARN) for the data source.
+--
+-- 'name', 'relationalTable_name' - The name of the relational table.
+--
+-- 'inputColumns', 'relationalTable_inputColumns' - The column schema of the table.
+newRelationalTable ::
+  -- | 'dataSourceArn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'inputColumns'
+  Prelude.NonEmpty InputColumn ->
+  RelationalTable
+newRelationalTable
+  pDataSourceArn_
+  pName_
+  pInputColumns_ =
+    RelationalTable'
+      { catalog = Prelude.Nothing,
+        schema = Prelude.Nothing,
+        dataSourceArn = pDataSourceArn_,
+        name = pName_,
+        inputColumns = Lens.coerced Lens.# pInputColumns_
+      }
+
+-- | The catalog associated with a table.
+relationalTable_catalog :: Lens.Lens' RelationalTable (Prelude.Maybe Prelude.Text)
+relationalTable_catalog = Lens.lens (\RelationalTable' {catalog} -> catalog) (\s@RelationalTable' {} a -> s {catalog = a} :: RelationalTable)
+
+-- | The schema name. This name applies to certain relational database
+-- engines.
+relationalTable_schema :: Lens.Lens' RelationalTable (Prelude.Maybe Prelude.Text)
+relationalTable_schema = Lens.lens (\RelationalTable' {schema} -> schema) (\s@RelationalTable' {} a -> s {schema = a} :: RelationalTable)
+
+-- | The Amazon Resource Name (ARN) for the data source.
+relationalTable_dataSourceArn :: Lens.Lens' RelationalTable Prelude.Text
+relationalTable_dataSourceArn = Lens.lens (\RelationalTable' {dataSourceArn} -> dataSourceArn) (\s@RelationalTable' {} a -> s {dataSourceArn = a} :: RelationalTable)
+
+-- | The name of the relational table.
+relationalTable_name :: Lens.Lens' RelationalTable Prelude.Text
+relationalTable_name = Lens.lens (\RelationalTable' {name} -> name) (\s@RelationalTable' {} a -> s {name = a} :: RelationalTable)
+
+-- | The column schema of the table.
+relationalTable_inputColumns :: Lens.Lens' RelationalTable (Prelude.NonEmpty InputColumn)
+relationalTable_inputColumns = Lens.lens (\RelationalTable' {inputColumns} -> inputColumns) (\s@RelationalTable' {} a -> s {inputColumns = a} :: RelationalTable) Prelude.. Lens.coerced
+
+instance Data.FromJSON RelationalTable where
+  parseJSON =
+    Data.withObject
+      "RelationalTable"
+      ( \x ->
+          RelationalTable'
+            Prelude.<$> (x Data..:? "Catalog")
+            Prelude.<*> (x Data..:? "Schema")
+            Prelude.<*> (x Data..: "DataSourceArn")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "InputColumns")
+      )
+
+instance Prelude.Hashable RelationalTable where
+  hashWithSalt _salt RelationalTable' {..} =
+    _salt
+      `Prelude.hashWithSalt` catalog
+      `Prelude.hashWithSalt` schema
+      `Prelude.hashWithSalt` dataSourceArn
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` inputColumns
+
+instance Prelude.NFData RelationalTable where
+  rnf RelationalTable' {..} =
+    Prelude.rnf catalog
+      `Prelude.seq` Prelude.rnf schema
+      `Prelude.seq` Prelude.rnf dataSourceArn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf inputColumns
+
+instance Data.ToJSON RelationalTable where
+  toJSON RelationalTable' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Catalog" Data..=) Prelude.<$> catalog,
+            ("Schema" Data..=) Prelude.<$> schema,
+            Prelude.Just ("DataSourceArn" Data..= dataSourceArn),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("InputColumns" Data..= inputColumns)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RelativeDateTimeControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/RelativeDateTimeControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RelativeDateTimeControlDisplayOptions.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.RelativeDateTimeControlDisplayOptions
+-- 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.QuickSight.Types.RelativeDateTimeControlDisplayOptions 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.QuickSight.Types.LabelOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newRelativeDateTimeControlDisplayOptions' smart constructor.
+data RelativeDateTimeControlDisplayOptions = RelativeDateTimeControlDisplayOptions'
+  { -- | Customize how dates are formatted in controls.
+    dateTimeFormat :: Prelude.Maybe Prelude.Text,
+    -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RelativeDateTimeControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dateTimeFormat', 'relativeDateTimeControlDisplayOptions_dateTimeFormat' - Customize how dates are formatted in controls.
+--
+-- 'titleOptions', 'relativeDateTimeControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newRelativeDateTimeControlDisplayOptions ::
+  RelativeDateTimeControlDisplayOptions
+newRelativeDateTimeControlDisplayOptions =
+  RelativeDateTimeControlDisplayOptions'
+    { dateTimeFormat =
+        Prelude.Nothing,
+      titleOptions = Prelude.Nothing
+    }
+
+-- | Customize how dates are formatted in controls.
+relativeDateTimeControlDisplayOptions_dateTimeFormat :: Lens.Lens' RelativeDateTimeControlDisplayOptions (Prelude.Maybe Prelude.Text)
+relativeDateTimeControlDisplayOptions_dateTimeFormat = Lens.lens (\RelativeDateTimeControlDisplayOptions' {dateTimeFormat} -> dateTimeFormat) (\s@RelativeDateTimeControlDisplayOptions' {} a -> s {dateTimeFormat = a} :: RelativeDateTimeControlDisplayOptions)
+
+-- | The options to configure the title visibility, name, and font size.
+relativeDateTimeControlDisplayOptions_titleOptions :: Lens.Lens' RelativeDateTimeControlDisplayOptions (Prelude.Maybe LabelOptions)
+relativeDateTimeControlDisplayOptions_titleOptions = Lens.lens (\RelativeDateTimeControlDisplayOptions' {titleOptions} -> titleOptions) (\s@RelativeDateTimeControlDisplayOptions' {} a -> s {titleOptions = a} :: RelativeDateTimeControlDisplayOptions)
+
+instance
+  Data.FromJSON
+    RelativeDateTimeControlDisplayOptions
+  where
+  parseJSON =
+    Data.withObject
+      "RelativeDateTimeControlDisplayOptions"
+      ( \x ->
+          RelativeDateTimeControlDisplayOptions'
+            Prelude.<$> (x Data..:? "DateTimeFormat")
+            Prelude.<*> (x Data..:? "TitleOptions")
+      )
+
+instance
+  Prelude.Hashable
+    RelativeDateTimeControlDisplayOptions
+  where
+  hashWithSalt
+    _salt
+    RelativeDateTimeControlDisplayOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` dateTimeFormat
+        `Prelude.hashWithSalt` titleOptions
+
+instance
+  Prelude.NFData
+    RelativeDateTimeControlDisplayOptions
+  where
+  rnf RelativeDateTimeControlDisplayOptions' {..} =
+    Prelude.rnf dateTimeFormat
+      `Prelude.seq` Prelude.rnf titleOptions
+
+instance
+  Data.ToJSON
+    RelativeDateTimeControlDisplayOptions
+  where
+  toJSON RelativeDateTimeControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DateTimeFormat" Data..=)
+              Prelude.<$> dateTimeFormat,
+            ("TitleOptions" Data..=) Prelude.<$> titleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RelativeDateType.hs b/gen/Amazonka/QuickSight/Types/RelativeDateType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RelativeDateType.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.QuickSight.Types.RelativeDateType
+-- 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.QuickSight.Types.RelativeDateType
+  ( RelativeDateType
+      ( ..,
+        RelativeDateType_LAST,
+        RelativeDateType_NEXT,
+        RelativeDateType_NOW,
+        RelativeDateType_PREVIOUS,
+        RelativeDateType_THIS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RelativeDateType = RelativeDateType'
+  { fromRelativeDateType ::
+      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 RelativeDateType_LAST :: RelativeDateType
+pattern RelativeDateType_LAST = RelativeDateType' "LAST"
+
+pattern RelativeDateType_NEXT :: RelativeDateType
+pattern RelativeDateType_NEXT = RelativeDateType' "NEXT"
+
+pattern RelativeDateType_NOW :: RelativeDateType
+pattern RelativeDateType_NOW = RelativeDateType' "NOW"
+
+pattern RelativeDateType_PREVIOUS :: RelativeDateType
+pattern RelativeDateType_PREVIOUS = RelativeDateType' "PREVIOUS"
+
+pattern RelativeDateType_THIS :: RelativeDateType
+pattern RelativeDateType_THIS = RelativeDateType' "THIS"
+
+{-# COMPLETE
+  RelativeDateType_LAST,
+  RelativeDateType_NEXT,
+  RelativeDateType_NOW,
+  RelativeDateType_PREVIOUS,
+  RelativeDateType_THIS,
+  RelativeDateType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/RelativeDatesFilter.hs b/gen/Amazonka/QuickSight/Types/RelativeDatesFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RelativeDatesFilter.hs
@@ -0,0 +1,287 @@
+{-# 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.QuickSight.Types.RelativeDatesFilter
+-- 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.QuickSight.Types.RelativeDatesFilter 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.QuickSight.Types.AnchorDateConfiguration
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.ExcludePeriodConfiguration
+import Amazonka.QuickSight.Types.FilterNullOption
+import Amazonka.QuickSight.Types.RelativeDateType
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | A @RelativeDatesFilter@ filters relative dates values.
+--
+-- /See:/ 'newRelativeDatesFilter' smart constructor.
+data RelativeDatesFilter = RelativeDatesFilter'
+  { -- | The configuration for the exclude period of the filter.
+    excludePeriodConfiguration :: Prelude.Maybe ExcludePeriodConfiguration,
+    -- | The minimum granularity (period granularity) of the relative dates
+    -- filter.
+    minimumGranularity :: Prelude.Maybe TimeGranularity,
+    -- | The parameter whose value should be used for the filter value.
+    parameterName :: Prelude.Maybe Prelude.Text,
+    -- | The date value of the filter.
+    relativeDateValue :: Prelude.Maybe Prelude.Int,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | The date configuration of the filter.
+    anchorDateConfiguration :: AnchorDateConfiguration,
+    -- | The level of time precision that is used to aggregate @DateTime@ values.
+    timeGranularity :: TimeGranularity,
+    -- | The range date type of the filter. Choose one of the options below:
+    --
+    -- -   @PREVIOUS@
+    --
+    -- -   @THIS@
+    --
+    -- -   @LAST@
+    --
+    -- -   @NOW@
+    --
+    -- -   @NEXT@
+    relativeDateType :: RelativeDateType,
+    -- | This option determines how null values should be treated when filtering
+    -- data.
+    --
+    -- -   @ALL_VALUES@: Include null values in filtered results.
+    --
+    -- -   @NULLS_ONLY@: Only include null values in filtered results.
+    --
+    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+    nullOption :: FilterNullOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RelativeDatesFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'excludePeriodConfiguration', 'relativeDatesFilter_excludePeriodConfiguration' - The configuration for the exclude period of the filter.
+--
+-- 'minimumGranularity', 'relativeDatesFilter_minimumGranularity' - The minimum granularity (period granularity) of the relative dates
+-- filter.
+--
+-- 'parameterName', 'relativeDatesFilter_parameterName' - The parameter whose value should be used for the filter value.
+--
+-- 'relativeDateValue', 'relativeDatesFilter_relativeDateValue' - The date value of the filter.
+--
+-- 'filterId', 'relativeDatesFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'relativeDatesFilter_column' - The column that the filter is applied to.
+--
+-- 'anchorDateConfiguration', 'relativeDatesFilter_anchorDateConfiguration' - The date configuration of the filter.
+--
+-- 'timeGranularity', 'relativeDatesFilter_timeGranularity' - The level of time precision that is used to aggregate @DateTime@ values.
+--
+-- 'relativeDateType', 'relativeDatesFilter_relativeDateType' - The range date type of the filter. Choose one of the options below:
+--
+-- -   @PREVIOUS@
+--
+-- -   @THIS@
+--
+-- -   @LAST@
+--
+-- -   @NOW@
+--
+-- -   @NEXT@
+--
+-- 'nullOption', 'relativeDatesFilter_nullOption' - This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+newRelativeDatesFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'anchorDateConfiguration'
+  AnchorDateConfiguration ->
+  -- | 'timeGranularity'
+  TimeGranularity ->
+  -- | 'relativeDateType'
+  RelativeDateType ->
+  -- | 'nullOption'
+  FilterNullOption ->
+  RelativeDatesFilter
+newRelativeDatesFilter
+  pFilterId_
+  pColumn_
+  pAnchorDateConfiguration_
+  pTimeGranularity_
+  pRelativeDateType_
+  pNullOption_ =
+    RelativeDatesFilter'
+      { excludePeriodConfiguration =
+          Prelude.Nothing,
+        minimumGranularity = Prelude.Nothing,
+        parameterName = Prelude.Nothing,
+        relativeDateValue = Prelude.Nothing,
+        filterId = pFilterId_,
+        column = pColumn_,
+        anchorDateConfiguration = pAnchorDateConfiguration_,
+        timeGranularity = pTimeGranularity_,
+        relativeDateType = pRelativeDateType_,
+        nullOption = pNullOption_
+      }
+
+-- | The configuration for the exclude period of the filter.
+relativeDatesFilter_excludePeriodConfiguration :: Lens.Lens' RelativeDatesFilter (Prelude.Maybe ExcludePeriodConfiguration)
+relativeDatesFilter_excludePeriodConfiguration = Lens.lens (\RelativeDatesFilter' {excludePeriodConfiguration} -> excludePeriodConfiguration) (\s@RelativeDatesFilter' {} a -> s {excludePeriodConfiguration = a} :: RelativeDatesFilter)
+
+-- | The minimum granularity (period granularity) of the relative dates
+-- filter.
+relativeDatesFilter_minimumGranularity :: Lens.Lens' RelativeDatesFilter (Prelude.Maybe TimeGranularity)
+relativeDatesFilter_minimumGranularity = Lens.lens (\RelativeDatesFilter' {minimumGranularity} -> minimumGranularity) (\s@RelativeDatesFilter' {} a -> s {minimumGranularity = a} :: RelativeDatesFilter)
+
+-- | The parameter whose value should be used for the filter value.
+relativeDatesFilter_parameterName :: Lens.Lens' RelativeDatesFilter (Prelude.Maybe Prelude.Text)
+relativeDatesFilter_parameterName = Lens.lens (\RelativeDatesFilter' {parameterName} -> parameterName) (\s@RelativeDatesFilter' {} a -> s {parameterName = a} :: RelativeDatesFilter)
+
+-- | The date value of the filter.
+relativeDatesFilter_relativeDateValue :: Lens.Lens' RelativeDatesFilter (Prelude.Maybe Prelude.Int)
+relativeDatesFilter_relativeDateValue = Lens.lens (\RelativeDatesFilter' {relativeDateValue} -> relativeDateValue) (\s@RelativeDatesFilter' {} a -> s {relativeDateValue = a} :: RelativeDatesFilter)
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+relativeDatesFilter_filterId :: Lens.Lens' RelativeDatesFilter Prelude.Text
+relativeDatesFilter_filterId = Lens.lens (\RelativeDatesFilter' {filterId} -> filterId) (\s@RelativeDatesFilter' {} a -> s {filterId = a} :: RelativeDatesFilter)
+
+-- | The column that the filter is applied to.
+relativeDatesFilter_column :: Lens.Lens' RelativeDatesFilter ColumnIdentifier
+relativeDatesFilter_column = Lens.lens (\RelativeDatesFilter' {column} -> column) (\s@RelativeDatesFilter' {} a -> s {column = a} :: RelativeDatesFilter)
+
+-- | The date configuration of the filter.
+relativeDatesFilter_anchorDateConfiguration :: Lens.Lens' RelativeDatesFilter AnchorDateConfiguration
+relativeDatesFilter_anchorDateConfiguration = Lens.lens (\RelativeDatesFilter' {anchorDateConfiguration} -> anchorDateConfiguration) (\s@RelativeDatesFilter' {} a -> s {anchorDateConfiguration = a} :: RelativeDatesFilter)
+
+-- | The level of time precision that is used to aggregate @DateTime@ values.
+relativeDatesFilter_timeGranularity :: Lens.Lens' RelativeDatesFilter TimeGranularity
+relativeDatesFilter_timeGranularity = Lens.lens (\RelativeDatesFilter' {timeGranularity} -> timeGranularity) (\s@RelativeDatesFilter' {} a -> s {timeGranularity = a} :: RelativeDatesFilter)
+
+-- | The range date type of the filter. Choose one of the options below:
+--
+-- -   @PREVIOUS@
+--
+-- -   @THIS@
+--
+-- -   @LAST@
+--
+-- -   @NOW@
+--
+-- -   @NEXT@
+relativeDatesFilter_relativeDateType :: Lens.Lens' RelativeDatesFilter RelativeDateType
+relativeDatesFilter_relativeDateType = Lens.lens (\RelativeDatesFilter' {relativeDateType} -> relativeDateType) (\s@RelativeDatesFilter' {} a -> s {relativeDateType = a} :: RelativeDatesFilter)
+
+-- | This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+relativeDatesFilter_nullOption :: Lens.Lens' RelativeDatesFilter FilterNullOption
+relativeDatesFilter_nullOption = Lens.lens (\RelativeDatesFilter' {nullOption} -> nullOption) (\s@RelativeDatesFilter' {} a -> s {nullOption = a} :: RelativeDatesFilter)
+
+instance Data.FromJSON RelativeDatesFilter where
+  parseJSON =
+    Data.withObject
+      "RelativeDatesFilter"
+      ( \x ->
+          RelativeDatesFilter'
+            Prelude.<$> (x Data..:? "ExcludePeriodConfiguration")
+            Prelude.<*> (x Data..:? "MinimumGranularity")
+            Prelude.<*> (x Data..:? "ParameterName")
+            Prelude.<*> (x Data..:? "RelativeDateValue")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+            Prelude.<*> (x Data..: "AnchorDateConfiguration")
+            Prelude.<*> (x Data..: "TimeGranularity")
+            Prelude.<*> (x Data..: "RelativeDateType")
+            Prelude.<*> (x Data..: "NullOption")
+      )
+
+instance Prelude.Hashable RelativeDatesFilter where
+  hashWithSalt _salt RelativeDatesFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` excludePeriodConfiguration
+      `Prelude.hashWithSalt` minimumGranularity
+      `Prelude.hashWithSalt` parameterName
+      `Prelude.hashWithSalt` relativeDateValue
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` anchorDateConfiguration
+      `Prelude.hashWithSalt` timeGranularity
+      `Prelude.hashWithSalt` relativeDateType
+      `Prelude.hashWithSalt` nullOption
+
+instance Prelude.NFData RelativeDatesFilter where
+  rnf RelativeDatesFilter' {..} =
+    Prelude.rnf excludePeriodConfiguration
+      `Prelude.seq` Prelude.rnf minimumGranularity
+      `Prelude.seq` Prelude.rnf parameterName
+      `Prelude.seq` Prelude.rnf relativeDateValue
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+      `Prelude.seq` Prelude.rnf anchorDateConfiguration
+      `Prelude.seq` Prelude.rnf timeGranularity
+      `Prelude.seq` Prelude.rnf relativeDateType
+      `Prelude.seq` Prelude.rnf nullOption
+
+instance Data.ToJSON RelativeDatesFilter where
+  toJSON RelativeDatesFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExcludePeriodConfiguration" Data..=)
+              Prelude.<$> excludePeriodConfiguration,
+            ("MinimumGranularity" Data..=)
+              Prelude.<$> minimumGranularity,
+            ("ParameterName" Data..=) Prelude.<$> parameterName,
+            ("RelativeDateValue" Data..=)
+              Prelude.<$> relativeDateValue,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column),
+            Prelude.Just
+              ( "AnchorDateConfiguration"
+                  Data..= anchorDateConfiguration
+              ),
+            Prelude.Just
+              ("TimeGranularity" Data..= timeGranularity),
+            Prelude.Just
+              ("RelativeDateType" Data..= relativeDateType),
+            Prelude.Just ("NullOption" Data..= nullOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RelativeFontSize.hs b/gen/Amazonka/QuickSight/Types/RelativeFontSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RelativeFontSize.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.QuickSight.Types.RelativeFontSize
+-- 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.QuickSight.Types.RelativeFontSize
+  ( RelativeFontSize
+      ( ..,
+        RelativeFontSize_EXTRA_LARGE,
+        RelativeFontSize_EXTRA_SMALL,
+        RelativeFontSize_LARGE,
+        RelativeFontSize_MEDIUM,
+        RelativeFontSize_SMALL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RelativeFontSize = RelativeFontSize'
+  { fromRelativeFontSize ::
+      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 RelativeFontSize_EXTRA_LARGE :: RelativeFontSize
+pattern RelativeFontSize_EXTRA_LARGE = RelativeFontSize' "EXTRA_LARGE"
+
+pattern RelativeFontSize_EXTRA_SMALL :: RelativeFontSize
+pattern RelativeFontSize_EXTRA_SMALL = RelativeFontSize' "EXTRA_SMALL"
+
+pattern RelativeFontSize_LARGE :: RelativeFontSize
+pattern RelativeFontSize_LARGE = RelativeFontSize' "LARGE"
+
+pattern RelativeFontSize_MEDIUM :: RelativeFontSize
+pattern RelativeFontSize_MEDIUM = RelativeFontSize' "MEDIUM"
+
+pattern RelativeFontSize_SMALL :: RelativeFontSize
+pattern RelativeFontSize_SMALL = RelativeFontSize' "SMALL"
+
+{-# COMPLETE
+  RelativeFontSize_EXTRA_LARGE,
+  RelativeFontSize_EXTRA_SMALL,
+  RelativeFontSize_LARGE,
+  RelativeFontSize_MEDIUM,
+  RelativeFontSize_SMALL,
+  RelativeFontSize'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/RenameColumnOperation.hs b/gen/Amazonka/QuickSight/Types/RenameColumnOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RenameColumnOperation.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RenameColumnOperation
+-- 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.QuickSight.Types.RenameColumnOperation 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 transform operation that renames a column.
+--
+-- /See:/ 'newRenameColumnOperation' smart constructor.
+data RenameColumnOperation = RenameColumnOperation'
+  { -- | The name of the column to be renamed.
+    columnName :: Prelude.Text,
+    -- | The new name for the column.
+    newColumnName' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RenameColumnOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnName', 'renameColumnOperation_columnName' - The name of the column to be renamed.
+--
+-- 'newColumnName'', 'renameColumnOperation_newColumnName' - The new name for the column.
+newRenameColumnOperation ::
+  -- | 'columnName'
+  Prelude.Text ->
+  -- | 'newColumnName''
+  Prelude.Text ->
+  RenameColumnOperation
+newRenameColumnOperation pColumnName_ pNewColumnName_ =
+  RenameColumnOperation'
+    { columnName = pColumnName_,
+      newColumnName' = pNewColumnName_
+    }
+
+-- | The name of the column to be renamed.
+renameColumnOperation_columnName :: Lens.Lens' RenameColumnOperation Prelude.Text
+renameColumnOperation_columnName = Lens.lens (\RenameColumnOperation' {columnName} -> columnName) (\s@RenameColumnOperation' {} a -> s {columnName = a} :: RenameColumnOperation)
+
+-- | The new name for the column.
+renameColumnOperation_newColumnName :: Lens.Lens' RenameColumnOperation Prelude.Text
+renameColumnOperation_newColumnName = Lens.lens (\RenameColumnOperation' {newColumnName'} -> newColumnName') (\s@RenameColumnOperation' {} a -> s {newColumnName' = a} :: RenameColumnOperation)
+
+instance Data.FromJSON RenameColumnOperation where
+  parseJSON =
+    Data.withObject
+      "RenameColumnOperation"
+      ( \x ->
+          RenameColumnOperation'
+            Prelude.<$> (x Data..: "ColumnName")
+            Prelude.<*> (x Data..: "NewColumnName")
+      )
+
+instance Prelude.Hashable RenameColumnOperation where
+  hashWithSalt _salt RenameColumnOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnName
+      `Prelude.hashWithSalt` newColumnName'
+
+instance Prelude.NFData RenameColumnOperation where
+  rnf RenameColumnOperation' {..} =
+    Prelude.rnf columnName
+      `Prelude.seq` Prelude.rnf newColumnName'
+
+instance Data.ToJSON RenameColumnOperation where
+  toJSON RenameColumnOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ColumnName" Data..= columnName),
+            Prelude.Just
+              ("NewColumnName" Data..= newColumnName')
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ResizeOption.hs b/gen/Amazonka/QuickSight/Types/ResizeOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ResizeOption.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.QuickSight.Types.ResizeOption
+-- 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.QuickSight.Types.ResizeOption
+  ( ResizeOption
+      ( ..,
+        ResizeOption_FIXED,
+        ResizeOption_RESPONSIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResizeOption = ResizeOption'
+  { fromResizeOption ::
+      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 ResizeOption_FIXED :: ResizeOption
+pattern ResizeOption_FIXED = ResizeOption' "FIXED"
+
+pattern ResizeOption_RESPONSIVE :: ResizeOption
+pattern ResizeOption_RESPONSIVE = ResizeOption' "RESPONSIVE"
+
+{-# COMPLETE
+  ResizeOption_FIXED,
+  ResizeOption_RESPONSIVE,
+  ResizeOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ResourcePermission.hs b/gen/Amazonka/QuickSight/Types/ResourcePermission.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ResourcePermission.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.QuickSight.Types.ResourcePermission
+-- 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.QuickSight.Types.ResourcePermission 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
+
+-- | Permission for the resource.
+--
+-- /See:/ 'newResourcePermission' smart constructor.
+data ResourcePermission = ResourcePermission'
+  { -- | The Amazon Resource Name (ARN) of the principal. This can be one of the
+    -- following:
+    --
+    -- -   The ARN of an Amazon QuickSight user or group associated with a data
+    --     source or dataset. (This is common.)
+    --
+    -- -   The ARN of an Amazon QuickSight user, group, or namespace associated
+    --     with an analysis, dashboard, template, or theme. (This is common.)
+    --
+    -- -   The ARN of an Amazon Web Services account root: This is an IAM ARN
+    --     rather than a QuickSight ARN. Use this option only to share
+    --     resources (templates) across Amazon Web Services accounts. (This is
+    --     less common.)
+    principal :: Prelude.Text,
+    -- | The IAM action to grant or revoke permissions on.
+    actions :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourcePermission' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'principal', 'resourcePermission_principal' - The Amazon Resource Name (ARN) of the principal. This can be one of the
+-- following:
+--
+-- -   The ARN of an Amazon QuickSight user or group associated with a data
+--     source or dataset. (This is common.)
+--
+-- -   The ARN of an Amazon QuickSight user, group, or namespace associated
+--     with an analysis, dashboard, template, or theme. (This is common.)
+--
+-- -   The ARN of an Amazon Web Services account root: This is an IAM ARN
+--     rather than a QuickSight ARN. Use this option only to share
+--     resources (templates) across Amazon Web Services accounts. (This is
+--     less common.)
+--
+-- 'actions', 'resourcePermission_actions' - The IAM action to grant or revoke permissions on.
+newResourcePermission ::
+  -- | 'principal'
+  Prelude.Text ->
+  -- | 'actions'
+  Prelude.NonEmpty Prelude.Text ->
+  ResourcePermission
+newResourcePermission pPrincipal_ pActions_ =
+  ResourcePermission'
+    { principal = pPrincipal_,
+      actions = Lens.coerced Lens.# pActions_
+    }
+
+-- | The Amazon Resource Name (ARN) of the principal. This can be one of the
+-- following:
+--
+-- -   The ARN of an Amazon QuickSight user or group associated with a data
+--     source or dataset. (This is common.)
+--
+-- -   The ARN of an Amazon QuickSight user, group, or namespace associated
+--     with an analysis, dashboard, template, or theme. (This is common.)
+--
+-- -   The ARN of an Amazon Web Services account root: This is an IAM ARN
+--     rather than a QuickSight ARN. Use this option only to share
+--     resources (templates) across Amazon Web Services accounts. (This is
+--     less common.)
+resourcePermission_principal :: Lens.Lens' ResourcePermission Prelude.Text
+resourcePermission_principal = Lens.lens (\ResourcePermission' {principal} -> principal) (\s@ResourcePermission' {} a -> s {principal = a} :: ResourcePermission)
+
+-- | The IAM action to grant or revoke permissions on.
+resourcePermission_actions :: Lens.Lens' ResourcePermission (Prelude.NonEmpty Prelude.Text)
+resourcePermission_actions = Lens.lens (\ResourcePermission' {actions} -> actions) (\s@ResourcePermission' {} a -> s {actions = a} :: ResourcePermission) Prelude.. Lens.coerced
+
+instance Data.FromJSON ResourcePermission where
+  parseJSON =
+    Data.withObject
+      "ResourcePermission"
+      ( \x ->
+          ResourcePermission'
+            Prelude.<$> (x Data..: "Principal")
+            Prelude.<*> (x Data..: "Actions")
+      )
+
+instance Prelude.Hashable ResourcePermission where
+  hashWithSalt _salt ResourcePermission' {..} =
+    _salt
+      `Prelude.hashWithSalt` principal
+      `Prelude.hashWithSalt` actions
+
+instance Prelude.NFData ResourcePermission where
+  rnf ResourcePermission' {..} =
+    Prelude.rnf principal
+      `Prelude.seq` Prelude.rnf actions
+
+instance Data.ToJSON ResourcePermission where
+  toJSON ResourcePermission' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Principal" Data..= principal),
+            Prelude.Just ("Actions" Data..= actions)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ResourceStatus.hs b/gen/Amazonka/QuickSight/Types/ResourceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ResourceStatus.hs
@@ -0,0 +1,96 @@
+{-# 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.QuickSight.Types.ResourceStatus
+-- 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.QuickSight.Types.ResourceStatus
+  ( ResourceStatus
+      ( ..,
+        ResourceStatus_CREATION_FAILED,
+        ResourceStatus_CREATION_IN_PROGRESS,
+        ResourceStatus_CREATION_SUCCESSFUL,
+        ResourceStatus_DELETED,
+        ResourceStatus_UPDATE_FAILED,
+        ResourceStatus_UPDATE_IN_PROGRESS,
+        ResourceStatus_UPDATE_SUCCESSFUL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceStatus = ResourceStatus'
+  { fromResourceStatus ::
+      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 ResourceStatus_CREATION_FAILED :: ResourceStatus
+pattern ResourceStatus_CREATION_FAILED = ResourceStatus' "CREATION_FAILED"
+
+pattern ResourceStatus_CREATION_IN_PROGRESS :: ResourceStatus
+pattern ResourceStatus_CREATION_IN_PROGRESS = ResourceStatus' "CREATION_IN_PROGRESS"
+
+pattern ResourceStatus_CREATION_SUCCESSFUL :: ResourceStatus
+pattern ResourceStatus_CREATION_SUCCESSFUL = ResourceStatus' "CREATION_SUCCESSFUL"
+
+pattern ResourceStatus_DELETED :: ResourceStatus
+pattern ResourceStatus_DELETED = ResourceStatus' "DELETED"
+
+pattern ResourceStatus_UPDATE_FAILED :: ResourceStatus
+pattern ResourceStatus_UPDATE_FAILED = ResourceStatus' "UPDATE_FAILED"
+
+pattern ResourceStatus_UPDATE_IN_PROGRESS :: ResourceStatus
+pattern ResourceStatus_UPDATE_IN_PROGRESS = ResourceStatus' "UPDATE_IN_PROGRESS"
+
+pattern ResourceStatus_UPDATE_SUCCESSFUL :: ResourceStatus
+pattern ResourceStatus_UPDATE_SUCCESSFUL = ResourceStatus' "UPDATE_SUCCESSFUL"
+
+{-# COMPLETE
+  ResourceStatus_CREATION_FAILED,
+  ResourceStatus_CREATION_IN_PROGRESS,
+  ResourceStatus_CREATION_SUCCESSFUL,
+  ResourceStatus_DELETED,
+  ResourceStatus_UPDATE_FAILED,
+  ResourceStatus_UPDATE_IN_PROGRESS,
+  ResourceStatus_UPDATE_SUCCESSFUL,
+  ResourceStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/RollingDateConfiguration.hs b/gen/Amazonka/QuickSight/Types/RollingDateConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RollingDateConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RollingDateConfiguration
+-- 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.QuickSight.Types.RollingDateConfiguration 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 rolling date configuration of a date time filter.
+--
+-- /See:/ 'newRollingDateConfiguration' smart constructor.
+data RollingDateConfiguration = RollingDateConfiguration'
+  { -- | The data set that is used in the rolling date configuration.
+    dataSetIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The expression of the rolling date configuration.
+    expression :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RollingDateConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetIdentifier', 'rollingDateConfiguration_dataSetIdentifier' - The data set that is used in the rolling date configuration.
+--
+-- 'expression', 'rollingDateConfiguration_expression' - The expression of the rolling date configuration.
+newRollingDateConfiguration ::
+  -- | 'expression'
+  Prelude.Text ->
+  RollingDateConfiguration
+newRollingDateConfiguration pExpression_ =
+  RollingDateConfiguration'
+    { dataSetIdentifier =
+        Prelude.Nothing,
+      expression = Data._Sensitive Lens.# pExpression_
+    }
+
+-- | The data set that is used in the rolling date configuration.
+rollingDateConfiguration_dataSetIdentifier :: Lens.Lens' RollingDateConfiguration (Prelude.Maybe Prelude.Text)
+rollingDateConfiguration_dataSetIdentifier = Lens.lens (\RollingDateConfiguration' {dataSetIdentifier} -> dataSetIdentifier) (\s@RollingDateConfiguration' {} a -> s {dataSetIdentifier = a} :: RollingDateConfiguration)
+
+-- | The expression of the rolling date configuration.
+rollingDateConfiguration_expression :: Lens.Lens' RollingDateConfiguration Prelude.Text
+rollingDateConfiguration_expression = Lens.lens (\RollingDateConfiguration' {expression} -> expression) (\s@RollingDateConfiguration' {} a -> s {expression = a} :: RollingDateConfiguration) Prelude.. Data._Sensitive
+
+instance Data.FromJSON RollingDateConfiguration where
+  parseJSON =
+    Data.withObject
+      "RollingDateConfiguration"
+      ( \x ->
+          RollingDateConfiguration'
+            Prelude.<$> (x Data..:? "DataSetIdentifier")
+            Prelude.<*> (x Data..: "Expression")
+      )
+
+instance Prelude.Hashable RollingDateConfiguration where
+  hashWithSalt _salt RollingDateConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSetIdentifier
+      `Prelude.hashWithSalt` expression
+
+instance Prelude.NFData RollingDateConfiguration where
+  rnf RollingDateConfiguration' {..} =
+    Prelude.rnf dataSetIdentifier
+      `Prelude.seq` Prelude.rnf expression
+
+instance Data.ToJSON RollingDateConfiguration where
+  toJSON RollingDateConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataSetIdentifier" Data..=)
+              Prelude.<$> dataSetIdentifier,
+            Prelude.Just ("Expression" Data..= expression)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RowAlternateColorOptions.hs b/gen/Amazonka/QuickSight/Types/RowAlternateColorOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowAlternateColorOptions.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RowAlternateColorOptions
+-- 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.QuickSight.Types.RowAlternateColorOptions 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.QuickSight.Types.WidgetStatus
+
+-- | Determines the row alternate color options.
+--
+-- /See:/ 'newRowAlternateColorOptions' smart constructor.
+data RowAlternateColorOptions = RowAlternateColorOptions'
+  { -- | Determines the list of row alternate colors.
+    rowAlternateColors :: Prelude.Maybe [Prelude.Text],
+    -- | Determines the widget status.
+    status :: Prelude.Maybe WidgetStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RowAlternateColorOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'rowAlternateColors', 'rowAlternateColorOptions_rowAlternateColors' - Determines the list of row alternate colors.
+--
+-- 'status', 'rowAlternateColorOptions_status' - Determines the widget status.
+newRowAlternateColorOptions ::
+  RowAlternateColorOptions
+newRowAlternateColorOptions =
+  RowAlternateColorOptions'
+    { rowAlternateColors =
+        Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Determines the list of row alternate colors.
+rowAlternateColorOptions_rowAlternateColors :: Lens.Lens' RowAlternateColorOptions (Prelude.Maybe [Prelude.Text])
+rowAlternateColorOptions_rowAlternateColors = Lens.lens (\RowAlternateColorOptions' {rowAlternateColors} -> rowAlternateColors) (\s@RowAlternateColorOptions' {} a -> s {rowAlternateColors = a} :: RowAlternateColorOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | Determines the widget status.
+rowAlternateColorOptions_status :: Lens.Lens' RowAlternateColorOptions (Prelude.Maybe WidgetStatus)
+rowAlternateColorOptions_status = Lens.lens (\RowAlternateColorOptions' {status} -> status) (\s@RowAlternateColorOptions' {} a -> s {status = a} :: RowAlternateColorOptions)
+
+instance Data.FromJSON RowAlternateColorOptions where
+  parseJSON =
+    Data.withObject
+      "RowAlternateColorOptions"
+      ( \x ->
+          RowAlternateColorOptions'
+            Prelude.<$> ( x
+                            Data..:? "RowAlternateColors"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable RowAlternateColorOptions where
+  hashWithSalt _salt RowAlternateColorOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` rowAlternateColors
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData RowAlternateColorOptions where
+  rnf RowAlternateColorOptions' {..} =
+    Prelude.rnf rowAlternateColors
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToJSON RowAlternateColorOptions where
+  toJSON RowAlternateColorOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RowAlternateColors" Data..=)
+              Prelude.<$> rowAlternateColors,
+            ("Status" Data..=) Prelude.<$> status
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RowInfo.hs b/gen/Amazonka/QuickSight/Types/RowInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowInfo.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.QuickSight.Types.RowInfo
+-- 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.QuickSight.Types.RowInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about rows for a data set SPICE ingestion.
+--
+-- /See:/ 'newRowInfo' smart constructor.
+data RowInfo = RowInfo'
+  { -- | The number of rows that were not ingested.
+    rowsDropped :: Prelude.Maybe Prelude.Integer,
+    -- | The number of rows that were ingested.
+    rowsIngested :: Prelude.Maybe Prelude.Integer,
+    -- | The total number of rows in the dataset.
+    totalRowsInDataset :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RowInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'rowsDropped', 'rowInfo_rowsDropped' - The number of rows that were not ingested.
+--
+-- 'rowsIngested', 'rowInfo_rowsIngested' - The number of rows that were ingested.
+--
+-- 'totalRowsInDataset', 'rowInfo_totalRowsInDataset' - The total number of rows in the dataset.
+newRowInfo ::
+  RowInfo
+newRowInfo =
+  RowInfo'
+    { rowsDropped = Prelude.Nothing,
+      rowsIngested = Prelude.Nothing,
+      totalRowsInDataset = Prelude.Nothing
+    }
+
+-- | The number of rows that were not ingested.
+rowInfo_rowsDropped :: Lens.Lens' RowInfo (Prelude.Maybe Prelude.Integer)
+rowInfo_rowsDropped = Lens.lens (\RowInfo' {rowsDropped} -> rowsDropped) (\s@RowInfo' {} a -> s {rowsDropped = a} :: RowInfo)
+
+-- | The number of rows that were ingested.
+rowInfo_rowsIngested :: Lens.Lens' RowInfo (Prelude.Maybe Prelude.Integer)
+rowInfo_rowsIngested = Lens.lens (\RowInfo' {rowsIngested} -> rowsIngested) (\s@RowInfo' {} a -> s {rowsIngested = a} :: RowInfo)
+
+-- | The total number of rows in the dataset.
+rowInfo_totalRowsInDataset :: Lens.Lens' RowInfo (Prelude.Maybe Prelude.Integer)
+rowInfo_totalRowsInDataset = Lens.lens (\RowInfo' {totalRowsInDataset} -> totalRowsInDataset) (\s@RowInfo' {} a -> s {totalRowsInDataset = a} :: RowInfo)
+
+instance Data.FromJSON RowInfo where
+  parseJSON =
+    Data.withObject
+      "RowInfo"
+      ( \x ->
+          RowInfo'
+            Prelude.<$> (x Data..:? "RowsDropped")
+            Prelude.<*> (x Data..:? "RowsIngested")
+            Prelude.<*> (x Data..:? "TotalRowsInDataset")
+      )
+
+instance Prelude.Hashable RowInfo where
+  hashWithSalt _salt RowInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` rowsDropped
+      `Prelude.hashWithSalt` rowsIngested
+      `Prelude.hashWithSalt` totalRowsInDataset
+
+instance Prelude.NFData RowInfo where
+  rnf RowInfo' {..} =
+    Prelude.rnf rowsDropped
+      `Prelude.seq` Prelude.rnf rowsIngested
+      `Prelude.seq` Prelude.rnf totalRowsInDataset
diff --git a/gen/Amazonka/QuickSight/Types/RowLevelPermissionDataSet.hs b/gen/Amazonka/QuickSight/Types/RowLevelPermissionDataSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowLevelPermissionDataSet.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RowLevelPermissionDataSet
+-- 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.QuickSight.Types.RowLevelPermissionDataSet 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.QuickSight.Types.RowLevelPermissionFormatVersion
+import Amazonka.QuickSight.Types.RowLevelPermissionPolicy
+import Amazonka.QuickSight.Types.Status
+
+-- | Information about a dataset that contains permissions for row-level
+-- security (RLS). The permissions dataset maps fields to users or groups.
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/restrict-access-to-a-data-set-using-row-level-security.html Using Row-Level Security (RLS) to Restrict Access to a Dataset>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- The option to deny permissions by setting @PermissionPolicy@ to
+-- @DENY_ACCESS@ is not supported for new RLS datasets.
+--
+-- /See:/ 'newRowLevelPermissionDataSet' smart constructor.
+data RowLevelPermissionDataSet = RowLevelPermissionDataSet'
+  { -- | The user or group rules associated with the dataset that contains
+    -- permissions for RLS.
+    --
+    -- By default, @FormatVersion@ is @VERSION_1@. When @FormatVersion@ is
+    -- @VERSION_1@, @UserName@ and @GroupName@ are required. When
+    -- @FormatVersion@ is @VERSION_2@, @UserARN@ and @GroupARN@ are required,
+    -- and @Namespace@ must not exist.
+    formatVersion :: Prelude.Maybe RowLevelPermissionFormatVersion,
+    -- | The namespace associated with the dataset that contains permissions for
+    -- RLS.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The status of the row-level security permission dataset. If enabled, the
+    -- status is @ENABLED@. If disabled, the status is @DISABLED@.
+    status :: Prelude.Maybe Status,
+    -- | The Amazon Resource Name (ARN) of the dataset that contains permissions
+    -- for RLS.
+    arn :: Prelude.Text,
+    -- | The type of permissions to use when interpreting the permissions for
+    -- RLS. @DENY_ACCESS@ is included for backward compatibility only.
+    permissionPolicy :: RowLevelPermissionPolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RowLevelPermissionDataSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatVersion', 'rowLevelPermissionDataSet_formatVersion' - The user or group rules associated with the dataset that contains
+-- permissions for RLS.
+--
+-- By default, @FormatVersion@ is @VERSION_1@. When @FormatVersion@ is
+-- @VERSION_1@, @UserName@ and @GroupName@ are required. When
+-- @FormatVersion@ is @VERSION_2@, @UserARN@ and @GroupARN@ are required,
+-- and @Namespace@ must not exist.
+--
+-- 'namespace', 'rowLevelPermissionDataSet_namespace' - The namespace associated with the dataset that contains permissions for
+-- RLS.
+--
+-- 'status', 'rowLevelPermissionDataSet_status' - The status of the row-level security permission dataset. If enabled, the
+-- status is @ENABLED@. If disabled, the status is @DISABLED@.
+--
+-- 'arn', 'rowLevelPermissionDataSet_arn' - The Amazon Resource Name (ARN) of the dataset that contains permissions
+-- for RLS.
+--
+-- 'permissionPolicy', 'rowLevelPermissionDataSet_permissionPolicy' - The type of permissions to use when interpreting the permissions for
+-- RLS. @DENY_ACCESS@ is included for backward compatibility only.
+newRowLevelPermissionDataSet ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'permissionPolicy'
+  RowLevelPermissionPolicy ->
+  RowLevelPermissionDataSet
+newRowLevelPermissionDataSet pArn_ pPermissionPolicy_ =
+  RowLevelPermissionDataSet'
+    { formatVersion =
+        Prelude.Nothing,
+      namespace = Prelude.Nothing,
+      status = Prelude.Nothing,
+      arn = pArn_,
+      permissionPolicy = pPermissionPolicy_
+    }
+
+-- | The user or group rules associated with the dataset that contains
+-- permissions for RLS.
+--
+-- By default, @FormatVersion@ is @VERSION_1@. When @FormatVersion@ is
+-- @VERSION_1@, @UserName@ and @GroupName@ are required. When
+-- @FormatVersion@ is @VERSION_2@, @UserARN@ and @GroupARN@ are required,
+-- and @Namespace@ must not exist.
+rowLevelPermissionDataSet_formatVersion :: Lens.Lens' RowLevelPermissionDataSet (Prelude.Maybe RowLevelPermissionFormatVersion)
+rowLevelPermissionDataSet_formatVersion = Lens.lens (\RowLevelPermissionDataSet' {formatVersion} -> formatVersion) (\s@RowLevelPermissionDataSet' {} a -> s {formatVersion = a} :: RowLevelPermissionDataSet)
+
+-- | The namespace associated with the dataset that contains permissions for
+-- RLS.
+rowLevelPermissionDataSet_namespace :: Lens.Lens' RowLevelPermissionDataSet (Prelude.Maybe Prelude.Text)
+rowLevelPermissionDataSet_namespace = Lens.lens (\RowLevelPermissionDataSet' {namespace} -> namespace) (\s@RowLevelPermissionDataSet' {} a -> s {namespace = a} :: RowLevelPermissionDataSet)
+
+-- | The status of the row-level security permission dataset. If enabled, the
+-- status is @ENABLED@. If disabled, the status is @DISABLED@.
+rowLevelPermissionDataSet_status :: Lens.Lens' RowLevelPermissionDataSet (Prelude.Maybe Status)
+rowLevelPermissionDataSet_status = Lens.lens (\RowLevelPermissionDataSet' {status} -> status) (\s@RowLevelPermissionDataSet' {} a -> s {status = a} :: RowLevelPermissionDataSet)
+
+-- | The Amazon Resource Name (ARN) of the dataset that contains permissions
+-- for RLS.
+rowLevelPermissionDataSet_arn :: Lens.Lens' RowLevelPermissionDataSet Prelude.Text
+rowLevelPermissionDataSet_arn = Lens.lens (\RowLevelPermissionDataSet' {arn} -> arn) (\s@RowLevelPermissionDataSet' {} a -> s {arn = a} :: RowLevelPermissionDataSet)
+
+-- | The type of permissions to use when interpreting the permissions for
+-- RLS. @DENY_ACCESS@ is included for backward compatibility only.
+rowLevelPermissionDataSet_permissionPolicy :: Lens.Lens' RowLevelPermissionDataSet RowLevelPermissionPolicy
+rowLevelPermissionDataSet_permissionPolicy = Lens.lens (\RowLevelPermissionDataSet' {permissionPolicy} -> permissionPolicy) (\s@RowLevelPermissionDataSet' {} a -> s {permissionPolicy = a} :: RowLevelPermissionDataSet)
+
+instance Data.FromJSON RowLevelPermissionDataSet where
+  parseJSON =
+    Data.withObject
+      "RowLevelPermissionDataSet"
+      ( \x ->
+          RowLevelPermissionDataSet'
+            Prelude.<$> (x Data..:? "FormatVersion")
+            Prelude.<*> (x Data..:? "Namespace")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..: "Arn")
+            Prelude.<*> (x Data..: "PermissionPolicy")
+      )
+
+instance Prelude.Hashable RowLevelPermissionDataSet where
+  hashWithSalt _salt RowLevelPermissionDataSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatVersion
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` permissionPolicy
+
+instance Prelude.NFData RowLevelPermissionDataSet where
+  rnf RowLevelPermissionDataSet' {..} =
+    Prelude.rnf formatVersion
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf permissionPolicy
+
+instance Data.ToJSON RowLevelPermissionDataSet where
+  toJSON RowLevelPermissionDataSet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatVersion" Data..=) Prelude.<$> formatVersion,
+            ("Namespace" Data..=) Prelude.<$> namespace,
+            ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ("PermissionPolicy" Data..= permissionPolicy)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RowLevelPermissionFormatVersion.hs b/gen/Amazonka/QuickSight/Types/RowLevelPermissionFormatVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowLevelPermissionFormatVersion.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.QuickSight.Types.RowLevelPermissionFormatVersion
+-- 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.QuickSight.Types.RowLevelPermissionFormatVersion
+  ( RowLevelPermissionFormatVersion
+      ( ..,
+        RowLevelPermissionFormatVersion_VERSION_1,
+        RowLevelPermissionFormatVersion_VERSION_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RowLevelPermissionFormatVersion = RowLevelPermissionFormatVersion'
+  { fromRowLevelPermissionFormatVersion ::
+      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 RowLevelPermissionFormatVersion_VERSION_1 :: RowLevelPermissionFormatVersion
+pattern RowLevelPermissionFormatVersion_VERSION_1 = RowLevelPermissionFormatVersion' "VERSION_1"
+
+pattern RowLevelPermissionFormatVersion_VERSION_2 :: RowLevelPermissionFormatVersion
+pattern RowLevelPermissionFormatVersion_VERSION_2 = RowLevelPermissionFormatVersion' "VERSION_2"
+
+{-# COMPLETE
+  RowLevelPermissionFormatVersion_VERSION_1,
+  RowLevelPermissionFormatVersion_VERSION_2,
+  RowLevelPermissionFormatVersion'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/RowLevelPermissionPolicy.hs b/gen/Amazonka/QuickSight/Types/RowLevelPermissionPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowLevelPermissionPolicy.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.QuickSight.Types.RowLevelPermissionPolicy
+-- 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.QuickSight.Types.RowLevelPermissionPolicy
+  ( RowLevelPermissionPolicy
+      ( ..,
+        RowLevelPermissionPolicy_DENY_ACCESS,
+        RowLevelPermissionPolicy_GRANT_ACCESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RowLevelPermissionPolicy = RowLevelPermissionPolicy'
+  { fromRowLevelPermissionPolicy ::
+      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 RowLevelPermissionPolicy_DENY_ACCESS :: RowLevelPermissionPolicy
+pattern RowLevelPermissionPolicy_DENY_ACCESS = RowLevelPermissionPolicy' "DENY_ACCESS"
+
+pattern RowLevelPermissionPolicy_GRANT_ACCESS :: RowLevelPermissionPolicy
+pattern RowLevelPermissionPolicy_GRANT_ACCESS = RowLevelPermissionPolicy' "GRANT_ACCESS"
+
+{-# COMPLETE
+  RowLevelPermissionPolicy_DENY_ACCESS,
+  RowLevelPermissionPolicy_GRANT_ACCESS,
+  RowLevelPermissionPolicy'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/RowLevelPermissionTagConfiguration.hs b/gen/Amazonka/QuickSight/Types/RowLevelPermissionTagConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowLevelPermissionTagConfiguration.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.QuickSight.Types.RowLevelPermissionTagConfiguration
+-- 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.QuickSight.Types.RowLevelPermissionTagConfiguration 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.QuickSight.Types.RowLevelPermissionTagRule
+import Amazonka.QuickSight.Types.Status
+
+-- | The configuration of tags on a dataset to set row-level security.
+--
+-- /See:/ 'newRowLevelPermissionTagConfiguration' smart constructor.
+data RowLevelPermissionTagConfiguration = RowLevelPermissionTagConfiguration'
+  { -- | The status of row-level security tags. If enabled, the status is
+    -- @ENABLED@. If disabled, the status is @DISABLED@.
+    status :: Prelude.Maybe Status,
+    -- | A set of rules associated with row-level security, such as the tag names
+    -- and columns that they are assigned to.
+    tagRules :: Prelude.NonEmpty RowLevelPermissionTagRule
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RowLevelPermissionTagConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'rowLevelPermissionTagConfiguration_status' - The status of row-level security tags. If enabled, the status is
+-- @ENABLED@. If disabled, the status is @DISABLED@.
+--
+-- 'tagRules', 'rowLevelPermissionTagConfiguration_tagRules' - A set of rules associated with row-level security, such as the tag names
+-- and columns that they are assigned to.
+newRowLevelPermissionTagConfiguration ::
+  -- | 'tagRules'
+  Prelude.NonEmpty RowLevelPermissionTagRule ->
+  RowLevelPermissionTagConfiguration
+newRowLevelPermissionTagConfiguration pTagRules_ =
+  RowLevelPermissionTagConfiguration'
+    { status =
+        Prelude.Nothing,
+      tagRules =
+        Lens.coerced Lens.# pTagRules_
+    }
+
+-- | The status of row-level security tags. If enabled, the status is
+-- @ENABLED@. If disabled, the status is @DISABLED@.
+rowLevelPermissionTagConfiguration_status :: Lens.Lens' RowLevelPermissionTagConfiguration (Prelude.Maybe Status)
+rowLevelPermissionTagConfiguration_status = Lens.lens (\RowLevelPermissionTagConfiguration' {status} -> status) (\s@RowLevelPermissionTagConfiguration' {} a -> s {status = a} :: RowLevelPermissionTagConfiguration)
+
+-- | A set of rules associated with row-level security, such as the tag names
+-- and columns that they are assigned to.
+rowLevelPermissionTagConfiguration_tagRules :: Lens.Lens' RowLevelPermissionTagConfiguration (Prelude.NonEmpty RowLevelPermissionTagRule)
+rowLevelPermissionTagConfiguration_tagRules = Lens.lens (\RowLevelPermissionTagConfiguration' {tagRules} -> tagRules) (\s@RowLevelPermissionTagConfiguration' {} a -> s {tagRules = a} :: RowLevelPermissionTagConfiguration) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    RowLevelPermissionTagConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "RowLevelPermissionTagConfiguration"
+      ( \x ->
+          RowLevelPermissionTagConfiguration'
+            Prelude.<$> (x Data..:? "Status")
+            Prelude.<*> (x Data..: "TagRules")
+      )
+
+instance
+  Prelude.Hashable
+    RowLevelPermissionTagConfiguration
+  where
+  hashWithSalt
+    _salt
+    RowLevelPermissionTagConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` status
+        `Prelude.hashWithSalt` tagRules
+
+instance
+  Prelude.NFData
+    RowLevelPermissionTagConfiguration
+  where
+  rnf RowLevelPermissionTagConfiguration' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf tagRules
+
+instance
+  Data.ToJSON
+    RowLevelPermissionTagConfiguration
+  where
+  toJSON RowLevelPermissionTagConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just ("TagRules" Data..= tagRules)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/RowLevelPermissionTagRule.hs b/gen/Amazonka/QuickSight/Types/RowLevelPermissionTagRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/RowLevelPermissionTagRule.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.RowLevelPermissionTagRule
+-- 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.QuickSight.Types.RowLevelPermissionTagRule 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 set of rules associated with a tag.
+--
+-- /See:/ 'newRowLevelPermissionTagRule' smart constructor.
+data RowLevelPermissionTagRule = RowLevelPermissionTagRule'
+  { -- | A string that you want to use to filter by all the values in a column in
+    -- the dataset and don’t want to list the values one by one. For example,
+    -- you can use an asterisk as your match all value.
+    matchAllValue :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A string that you want to use to delimit the values when you pass the
+    -- values at run time. For example, you can delimit the values with a
+    -- comma.
+    tagMultiValueDelimiter :: Prelude.Maybe Prelude.Text,
+    -- | The unique key for a tag.
+    tagKey :: Prelude.Text,
+    -- | The column name that a tag key is assigned to.
+    columnName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RowLevelPermissionTagRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'matchAllValue', 'rowLevelPermissionTagRule_matchAllValue' - A string that you want to use to filter by all the values in a column in
+-- the dataset and don’t want to list the values one by one. For example,
+-- you can use an asterisk as your match all value.
+--
+-- 'tagMultiValueDelimiter', 'rowLevelPermissionTagRule_tagMultiValueDelimiter' - A string that you want to use to delimit the values when you pass the
+-- values at run time. For example, you can delimit the values with a
+-- comma.
+--
+-- 'tagKey', 'rowLevelPermissionTagRule_tagKey' - The unique key for a tag.
+--
+-- 'columnName', 'rowLevelPermissionTagRule_columnName' - The column name that a tag key is assigned to.
+newRowLevelPermissionTagRule ::
+  -- | 'tagKey'
+  Prelude.Text ->
+  -- | 'columnName'
+  Prelude.Text ->
+  RowLevelPermissionTagRule
+newRowLevelPermissionTagRule pTagKey_ pColumnName_ =
+  RowLevelPermissionTagRule'
+    { matchAllValue =
+        Prelude.Nothing,
+      tagMultiValueDelimiter = Prelude.Nothing,
+      tagKey = pTagKey_,
+      columnName = pColumnName_
+    }
+
+-- | A string that you want to use to filter by all the values in a column in
+-- the dataset and don’t want to list the values one by one. For example,
+-- you can use an asterisk as your match all value.
+rowLevelPermissionTagRule_matchAllValue :: Lens.Lens' RowLevelPermissionTagRule (Prelude.Maybe Prelude.Text)
+rowLevelPermissionTagRule_matchAllValue = Lens.lens (\RowLevelPermissionTagRule' {matchAllValue} -> matchAllValue) (\s@RowLevelPermissionTagRule' {} a -> s {matchAllValue = a} :: RowLevelPermissionTagRule) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A string that you want to use to delimit the values when you pass the
+-- values at run time. For example, you can delimit the values with a
+-- comma.
+rowLevelPermissionTagRule_tagMultiValueDelimiter :: Lens.Lens' RowLevelPermissionTagRule (Prelude.Maybe Prelude.Text)
+rowLevelPermissionTagRule_tagMultiValueDelimiter = Lens.lens (\RowLevelPermissionTagRule' {tagMultiValueDelimiter} -> tagMultiValueDelimiter) (\s@RowLevelPermissionTagRule' {} a -> s {tagMultiValueDelimiter = a} :: RowLevelPermissionTagRule)
+
+-- | The unique key for a tag.
+rowLevelPermissionTagRule_tagKey :: Lens.Lens' RowLevelPermissionTagRule Prelude.Text
+rowLevelPermissionTagRule_tagKey = Lens.lens (\RowLevelPermissionTagRule' {tagKey} -> tagKey) (\s@RowLevelPermissionTagRule' {} a -> s {tagKey = a} :: RowLevelPermissionTagRule)
+
+-- | The column name that a tag key is assigned to.
+rowLevelPermissionTagRule_columnName :: Lens.Lens' RowLevelPermissionTagRule Prelude.Text
+rowLevelPermissionTagRule_columnName = Lens.lens (\RowLevelPermissionTagRule' {columnName} -> columnName) (\s@RowLevelPermissionTagRule' {} a -> s {columnName = a} :: RowLevelPermissionTagRule)
+
+instance Data.FromJSON RowLevelPermissionTagRule where
+  parseJSON =
+    Data.withObject
+      "RowLevelPermissionTagRule"
+      ( \x ->
+          RowLevelPermissionTagRule'
+            Prelude.<$> (x Data..:? "MatchAllValue")
+            Prelude.<*> (x Data..:? "TagMultiValueDelimiter")
+            Prelude.<*> (x Data..: "TagKey")
+            Prelude.<*> (x Data..: "ColumnName")
+      )
+
+instance Prelude.Hashable RowLevelPermissionTagRule where
+  hashWithSalt _salt RowLevelPermissionTagRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` matchAllValue
+      `Prelude.hashWithSalt` tagMultiValueDelimiter
+      `Prelude.hashWithSalt` tagKey
+      `Prelude.hashWithSalt` columnName
+
+instance Prelude.NFData RowLevelPermissionTagRule where
+  rnf RowLevelPermissionTagRule' {..} =
+    Prelude.rnf matchAllValue
+      `Prelude.seq` Prelude.rnf tagMultiValueDelimiter
+      `Prelude.seq` Prelude.rnf tagKey
+      `Prelude.seq` Prelude.rnf columnName
+
+instance Data.ToJSON RowLevelPermissionTagRule where
+  toJSON RowLevelPermissionTagRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MatchAllValue" Data..=) Prelude.<$> matchAllValue,
+            ("TagMultiValueDelimiter" Data..=)
+              Prelude.<$> tagMultiValueDelimiter,
+            Prelude.Just ("TagKey" Data..= tagKey),
+            Prelude.Just ("ColumnName" Data..= columnName)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/S3Parameters.hs b/gen/Amazonka/QuickSight/Types/S3Parameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/S3Parameters.hs
@@ -0,0 +1,89 @@
+{-# 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.QuickSight.Types.S3Parameters
+-- 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.QuickSight.Types.S3Parameters 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.QuickSight.Types.ManifestFileLocation
+
+-- | The parameters for S3.
+--
+-- /See:/ 'newS3Parameters' smart constructor.
+data S3Parameters = S3Parameters'
+  { -- | Location of the Amazon S3 manifest file. This is NULL if the manifest
+    -- file was uploaded into Amazon QuickSight.
+    manifestFileLocation :: ManifestFileLocation
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Parameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'manifestFileLocation', 's3Parameters_manifestFileLocation' - Location of the Amazon S3 manifest file. This is NULL if the manifest
+-- file was uploaded into Amazon QuickSight.
+newS3Parameters ::
+  -- | 'manifestFileLocation'
+  ManifestFileLocation ->
+  S3Parameters
+newS3Parameters pManifestFileLocation_ =
+  S3Parameters'
+    { manifestFileLocation =
+        pManifestFileLocation_
+    }
+
+-- | Location of the Amazon S3 manifest file. This is NULL if the manifest
+-- file was uploaded into Amazon QuickSight.
+s3Parameters_manifestFileLocation :: Lens.Lens' S3Parameters ManifestFileLocation
+s3Parameters_manifestFileLocation = Lens.lens (\S3Parameters' {manifestFileLocation} -> manifestFileLocation) (\s@S3Parameters' {} a -> s {manifestFileLocation = a} :: S3Parameters)
+
+instance Data.FromJSON S3Parameters where
+  parseJSON =
+    Data.withObject
+      "S3Parameters"
+      ( \x ->
+          S3Parameters'
+            Prelude.<$> (x Data..: "ManifestFileLocation")
+      )
+
+instance Prelude.Hashable S3Parameters where
+  hashWithSalt _salt S3Parameters' {..} =
+    _salt `Prelude.hashWithSalt` manifestFileLocation
+
+instance Prelude.NFData S3Parameters where
+  rnf S3Parameters' {..} =
+    Prelude.rnf manifestFileLocation
+
+instance Data.ToJSON S3Parameters where
+  toJSON S3Parameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ManifestFileLocation"
+                  Data..= manifestFileLocation
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/S3Source.hs b/gen/Amazonka/QuickSight/Types/S3Source.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/S3Source.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.S3Source
+-- 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.QuickSight.Types.S3Source 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.QuickSight.Types.InputColumn
+import Amazonka.QuickSight.Types.UploadSettings
+
+-- | A physical table type for an S3 data source.
+--
+-- /See:/ 'newS3Source' smart constructor.
+data S3Source = S3Source'
+  { -- | Information about the format for the S3 source file or files.
+    uploadSettings :: Prelude.Maybe UploadSettings,
+    -- | The Amazon Resource Name (ARN) for the data source.
+    dataSourceArn :: Prelude.Text,
+    -- | A physical table type for an S3 data source.
+    --
+    -- For files that aren\'t JSON, only @STRING@ data types are supported in
+    -- input columns.
+    inputColumns :: Prelude.NonEmpty InputColumn
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Source' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'uploadSettings', 's3Source_uploadSettings' - Information about the format for the S3 source file or files.
+--
+-- 'dataSourceArn', 's3Source_dataSourceArn' - The Amazon Resource Name (ARN) for the data source.
+--
+-- 'inputColumns', 's3Source_inputColumns' - A physical table type for an S3 data source.
+--
+-- For files that aren\'t JSON, only @STRING@ data types are supported in
+-- input columns.
+newS3Source ::
+  -- | 'dataSourceArn'
+  Prelude.Text ->
+  -- | 'inputColumns'
+  Prelude.NonEmpty InputColumn ->
+  S3Source
+newS3Source pDataSourceArn_ pInputColumns_ =
+  S3Source'
+    { uploadSettings = Prelude.Nothing,
+      dataSourceArn = pDataSourceArn_,
+      inputColumns = Lens.coerced Lens.# pInputColumns_
+    }
+
+-- | Information about the format for the S3 source file or files.
+s3Source_uploadSettings :: Lens.Lens' S3Source (Prelude.Maybe UploadSettings)
+s3Source_uploadSettings = Lens.lens (\S3Source' {uploadSettings} -> uploadSettings) (\s@S3Source' {} a -> s {uploadSettings = a} :: S3Source)
+
+-- | The Amazon Resource Name (ARN) for the data source.
+s3Source_dataSourceArn :: Lens.Lens' S3Source Prelude.Text
+s3Source_dataSourceArn = Lens.lens (\S3Source' {dataSourceArn} -> dataSourceArn) (\s@S3Source' {} a -> s {dataSourceArn = a} :: S3Source)
+
+-- | A physical table type for an S3 data source.
+--
+-- For files that aren\'t JSON, only @STRING@ data types are supported in
+-- input columns.
+s3Source_inputColumns :: Lens.Lens' S3Source (Prelude.NonEmpty InputColumn)
+s3Source_inputColumns = Lens.lens (\S3Source' {inputColumns} -> inputColumns) (\s@S3Source' {} a -> s {inputColumns = a} :: S3Source) Prelude.. Lens.coerced
+
+instance Data.FromJSON S3Source where
+  parseJSON =
+    Data.withObject
+      "S3Source"
+      ( \x ->
+          S3Source'
+            Prelude.<$> (x Data..:? "UploadSettings")
+            Prelude.<*> (x Data..: "DataSourceArn")
+            Prelude.<*> (x Data..: "InputColumns")
+      )
+
+instance Prelude.Hashable S3Source where
+  hashWithSalt _salt S3Source' {..} =
+    _salt
+      `Prelude.hashWithSalt` uploadSettings
+      `Prelude.hashWithSalt` dataSourceArn
+      `Prelude.hashWithSalt` inputColumns
+
+instance Prelude.NFData S3Source where
+  rnf S3Source' {..} =
+    Prelude.rnf uploadSettings
+      `Prelude.seq` Prelude.rnf dataSourceArn
+      `Prelude.seq` Prelude.rnf inputColumns
+
+instance Data.ToJSON S3Source where
+  toJSON S3Source' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("UploadSettings" Data..=)
+              Prelude.<$> uploadSettings,
+            Prelude.Just ("DataSourceArn" Data..= dataSourceArn),
+            Prelude.Just ("InputColumns" Data..= inputColumns)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SameSheetTargetVisualConfiguration.hs b/gen/Amazonka/QuickSight/Types/SameSheetTargetVisualConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SameSheetTargetVisualConfiguration.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SameSheetTargetVisualConfiguration
+-- 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.QuickSight.Types.SameSheetTargetVisualConfiguration 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.QuickSight.Types.TargetVisualOptions
+
+-- | The configuration of the same-sheet target visuals that you want to be
+-- filtered.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newSameSheetTargetVisualConfiguration' smart constructor.
+data SameSheetTargetVisualConfiguration = SameSheetTargetVisualConfiguration'
+  { -- | The options that choose the target visual in the same sheet.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @ALL_VISUALS@: Applies the filter operation to all visuals in the
+    --     same sheet.
+    targetVisualOptions :: Prelude.Maybe TargetVisualOptions,
+    -- | A list of the target visual IDs that are located in the same sheet of
+    -- the analysis.
+    targetVisuals :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SameSheetTargetVisualConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'targetVisualOptions', 'sameSheetTargetVisualConfiguration_targetVisualOptions' - The options that choose the target visual in the same sheet.
+--
+-- Valid values are defined as follows:
+--
+-- -   @ALL_VISUALS@: Applies the filter operation to all visuals in the
+--     same sheet.
+--
+-- 'targetVisuals', 'sameSheetTargetVisualConfiguration_targetVisuals' - A list of the target visual IDs that are located in the same sheet of
+-- the analysis.
+newSameSheetTargetVisualConfiguration ::
+  SameSheetTargetVisualConfiguration
+newSameSheetTargetVisualConfiguration =
+  SameSheetTargetVisualConfiguration'
+    { targetVisualOptions =
+        Prelude.Nothing,
+      targetVisuals = Prelude.Nothing
+    }
+
+-- | The options that choose the target visual in the same sheet.
+--
+-- Valid values are defined as follows:
+--
+-- -   @ALL_VISUALS@: Applies the filter operation to all visuals in the
+--     same sheet.
+sameSheetTargetVisualConfiguration_targetVisualOptions :: Lens.Lens' SameSheetTargetVisualConfiguration (Prelude.Maybe TargetVisualOptions)
+sameSheetTargetVisualConfiguration_targetVisualOptions = Lens.lens (\SameSheetTargetVisualConfiguration' {targetVisualOptions} -> targetVisualOptions) (\s@SameSheetTargetVisualConfiguration' {} a -> s {targetVisualOptions = a} :: SameSheetTargetVisualConfiguration)
+
+-- | A list of the target visual IDs that are located in the same sheet of
+-- the analysis.
+sameSheetTargetVisualConfiguration_targetVisuals :: Lens.Lens' SameSheetTargetVisualConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+sameSheetTargetVisualConfiguration_targetVisuals = Lens.lens (\SameSheetTargetVisualConfiguration' {targetVisuals} -> targetVisuals) (\s@SameSheetTargetVisualConfiguration' {} a -> s {targetVisuals = a} :: SameSheetTargetVisualConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    SameSheetTargetVisualConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SameSheetTargetVisualConfiguration"
+      ( \x ->
+          SameSheetTargetVisualConfiguration'
+            Prelude.<$> (x Data..:? "TargetVisualOptions")
+            Prelude.<*> (x Data..:? "TargetVisuals")
+      )
+
+instance
+  Prelude.Hashable
+    SameSheetTargetVisualConfiguration
+  where
+  hashWithSalt
+    _salt
+    SameSheetTargetVisualConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` targetVisualOptions
+        `Prelude.hashWithSalt` targetVisuals
+
+instance
+  Prelude.NFData
+    SameSheetTargetVisualConfiguration
+  where
+  rnf SameSheetTargetVisualConfiguration' {..} =
+    Prelude.rnf targetVisualOptions
+      `Prelude.seq` Prelude.rnf targetVisuals
+
+instance
+  Data.ToJSON
+    SameSheetTargetVisualConfiguration
+  where
+  toJSON SameSheetTargetVisualConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TargetVisualOptions" Data..=)
+              Prelude.<$> targetVisualOptions,
+            ("TargetVisuals" Data..=) Prelude.<$> targetVisuals
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SankeyDiagramAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/SankeyDiagramAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SankeyDiagramAggregatedFieldWells.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SankeyDiagramAggregatedFieldWells
+-- 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.QuickSight.Types.SankeyDiagramAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a sankey diagram.
+--
+-- /See:/ 'newSankeyDiagramAggregatedFieldWells' smart constructor.
+data SankeyDiagramAggregatedFieldWells = SankeyDiagramAggregatedFieldWells'
+  { -- | The destination field wells of a sankey diagram.
+    destination :: Prelude.Maybe [DimensionField],
+    -- | The source field wells of a sankey diagram.
+    source :: Prelude.Maybe [DimensionField],
+    -- | The weight field wells of a sankey diagram.
+    weight :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SankeyDiagramAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destination', 'sankeyDiagramAggregatedFieldWells_destination' - The destination field wells of a sankey diagram.
+--
+-- 'source', 'sankeyDiagramAggregatedFieldWells_source' - The source field wells of a sankey diagram.
+--
+-- 'weight', 'sankeyDiagramAggregatedFieldWells_weight' - The weight field wells of a sankey diagram.
+newSankeyDiagramAggregatedFieldWells ::
+  SankeyDiagramAggregatedFieldWells
+newSankeyDiagramAggregatedFieldWells =
+  SankeyDiagramAggregatedFieldWells'
+    { destination =
+        Prelude.Nothing,
+      source = Prelude.Nothing,
+      weight = Prelude.Nothing
+    }
+
+-- | The destination field wells of a sankey diagram.
+sankeyDiagramAggregatedFieldWells_destination :: Lens.Lens' SankeyDiagramAggregatedFieldWells (Prelude.Maybe [DimensionField])
+sankeyDiagramAggregatedFieldWells_destination = Lens.lens (\SankeyDiagramAggregatedFieldWells' {destination} -> destination) (\s@SankeyDiagramAggregatedFieldWells' {} a -> s {destination = a} :: SankeyDiagramAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source field wells of a sankey diagram.
+sankeyDiagramAggregatedFieldWells_source :: Lens.Lens' SankeyDiagramAggregatedFieldWells (Prelude.Maybe [DimensionField])
+sankeyDiagramAggregatedFieldWells_source = Lens.lens (\SankeyDiagramAggregatedFieldWells' {source} -> source) (\s@SankeyDiagramAggregatedFieldWells' {} a -> s {source = a} :: SankeyDiagramAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The weight field wells of a sankey diagram.
+sankeyDiagramAggregatedFieldWells_weight :: Lens.Lens' SankeyDiagramAggregatedFieldWells (Prelude.Maybe [MeasureField])
+sankeyDiagramAggregatedFieldWells_weight = Lens.lens (\SankeyDiagramAggregatedFieldWells' {weight} -> weight) (\s@SankeyDiagramAggregatedFieldWells' {} a -> s {weight = a} :: SankeyDiagramAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    SankeyDiagramAggregatedFieldWells
+  where
+  parseJSON =
+    Data.withObject
+      "SankeyDiagramAggregatedFieldWells"
+      ( \x ->
+          SankeyDiagramAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Destination" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Source" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Weight" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    SankeyDiagramAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    SankeyDiagramAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` destination
+        `Prelude.hashWithSalt` source
+        `Prelude.hashWithSalt` weight
+
+instance
+  Prelude.NFData
+    SankeyDiagramAggregatedFieldWells
+  where
+  rnf SankeyDiagramAggregatedFieldWells' {..} =
+    Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf weight
+
+instance
+  Data.ToJSON
+    SankeyDiagramAggregatedFieldWells
+  where
+  toJSON SankeyDiagramAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Destination" Data..=) Prelude.<$> destination,
+            ("Source" Data..=) Prelude.<$> source,
+            ("Weight" Data..=) Prelude.<$> weight
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SankeyDiagramChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/SankeyDiagramChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SankeyDiagramChartConfiguration.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SankeyDiagramChartConfiguration
+-- 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.QuickSight.Types.SankeyDiagramChartConfiguration 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.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.SankeyDiagramFieldWells
+import Amazonka.QuickSight.Types.SankeyDiagramSortConfiguration
+
+-- | The configuration of a sankey diagram.
+--
+-- /See:/ 'newSankeyDiagramChartConfiguration' smart constructor.
+data SankeyDiagramChartConfiguration = SankeyDiagramChartConfiguration'
+  { -- | The data label configuration of a sankey diagram.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field well configuration of a sankey diagram.
+    fieldWells :: Prelude.Maybe SankeyDiagramFieldWells,
+    -- | The sort configuration of a sankey diagram.
+    sortConfiguration :: Prelude.Maybe SankeyDiagramSortConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SankeyDiagramChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataLabels', 'sankeyDiagramChartConfiguration_dataLabels' - The data label configuration of a sankey diagram.
+--
+-- 'fieldWells', 'sankeyDiagramChartConfiguration_fieldWells' - The field well configuration of a sankey diagram.
+--
+-- 'sortConfiguration', 'sankeyDiagramChartConfiguration_sortConfiguration' - The sort configuration of a sankey diagram.
+newSankeyDiagramChartConfiguration ::
+  SankeyDiagramChartConfiguration
+newSankeyDiagramChartConfiguration =
+  SankeyDiagramChartConfiguration'
+    { dataLabels =
+        Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing
+    }
+
+-- | The data label configuration of a sankey diagram.
+sankeyDiagramChartConfiguration_dataLabels :: Lens.Lens' SankeyDiagramChartConfiguration (Prelude.Maybe DataLabelOptions)
+sankeyDiagramChartConfiguration_dataLabels = Lens.lens (\SankeyDiagramChartConfiguration' {dataLabels} -> dataLabels) (\s@SankeyDiagramChartConfiguration' {} a -> s {dataLabels = a} :: SankeyDiagramChartConfiguration)
+
+-- | The field well configuration of a sankey diagram.
+sankeyDiagramChartConfiguration_fieldWells :: Lens.Lens' SankeyDiagramChartConfiguration (Prelude.Maybe SankeyDiagramFieldWells)
+sankeyDiagramChartConfiguration_fieldWells = Lens.lens (\SankeyDiagramChartConfiguration' {fieldWells} -> fieldWells) (\s@SankeyDiagramChartConfiguration' {} a -> s {fieldWells = a} :: SankeyDiagramChartConfiguration)
+
+-- | The sort configuration of a sankey diagram.
+sankeyDiagramChartConfiguration_sortConfiguration :: Lens.Lens' SankeyDiagramChartConfiguration (Prelude.Maybe SankeyDiagramSortConfiguration)
+sankeyDiagramChartConfiguration_sortConfiguration = Lens.lens (\SankeyDiagramChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@SankeyDiagramChartConfiguration' {} a -> s {sortConfiguration = a} :: SankeyDiagramChartConfiguration)
+
+instance
+  Data.FromJSON
+    SankeyDiagramChartConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SankeyDiagramChartConfiguration"
+      ( \x ->
+          SankeyDiagramChartConfiguration'
+            Prelude.<$> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    SankeyDiagramChartConfiguration
+  where
+  hashWithSalt
+    _salt
+    SankeyDiagramChartConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` dataLabels
+        `Prelude.hashWithSalt` fieldWells
+        `Prelude.hashWithSalt` sortConfiguration
+
+instance
+  Prelude.NFData
+    SankeyDiagramChartConfiguration
+  where
+  rnf SankeyDiagramChartConfiguration' {..} =
+    Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf sortConfiguration
+
+instance Data.ToJSON SankeyDiagramChartConfiguration where
+  toJSON SankeyDiagramChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SankeyDiagramFieldWells.hs b/gen/Amazonka/QuickSight/Types/SankeyDiagramFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SankeyDiagramFieldWells.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SankeyDiagramFieldWells
+-- 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.QuickSight.Types.SankeyDiagramFieldWells 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.QuickSight.Types.SankeyDiagramAggregatedFieldWells
+
+-- | The field well configuration of a sankey diagram.
+--
+-- /See:/ 'newSankeyDiagramFieldWells' smart constructor.
+data SankeyDiagramFieldWells = SankeyDiagramFieldWells'
+  { -- | The field well configuration of a sankey diagram.
+    sankeyDiagramAggregatedFieldWells :: Prelude.Maybe SankeyDiagramAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SankeyDiagramFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sankeyDiagramAggregatedFieldWells', 'sankeyDiagramFieldWells_sankeyDiagramAggregatedFieldWells' - The field well configuration of a sankey diagram.
+newSankeyDiagramFieldWells ::
+  SankeyDiagramFieldWells
+newSankeyDiagramFieldWells =
+  SankeyDiagramFieldWells'
+    { sankeyDiagramAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The field well configuration of a sankey diagram.
+sankeyDiagramFieldWells_sankeyDiagramAggregatedFieldWells :: Lens.Lens' SankeyDiagramFieldWells (Prelude.Maybe SankeyDiagramAggregatedFieldWells)
+sankeyDiagramFieldWells_sankeyDiagramAggregatedFieldWells = Lens.lens (\SankeyDiagramFieldWells' {sankeyDiagramAggregatedFieldWells} -> sankeyDiagramAggregatedFieldWells) (\s@SankeyDiagramFieldWells' {} a -> s {sankeyDiagramAggregatedFieldWells = a} :: SankeyDiagramFieldWells)
+
+instance Data.FromJSON SankeyDiagramFieldWells where
+  parseJSON =
+    Data.withObject
+      "SankeyDiagramFieldWells"
+      ( \x ->
+          SankeyDiagramFieldWells'
+            Prelude.<$> (x Data..:? "SankeyDiagramAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable SankeyDiagramFieldWells where
+  hashWithSalt _salt SankeyDiagramFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` sankeyDiagramAggregatedFieldWells
+
+instance Prelude.NFData SankeyDiagramFieldWells where
+  rnf SankeyDiagramFieldWells' {..} =
+    Prelude.rnf sankeyDiagramAggregatedFieldWells
+
+instance Data.ToJSON SankeyDiagramFieldWells where
+  toJSON SankeyDiagramFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SankeyDiagramAggregatedFieldWells" Data..=)
+              Prelude.<$> sankeyDiagramAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SankeyDiagramSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/SankeyDiagramSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SankeyDiagramSortConfiguration.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SankeyDiagramSortConfiguration
+-- 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.QuickSight.Types.SankeyDiagramSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a sankey diagram.
+--
+-- /See:/ 'newSankeyDiagramSortConfiguration' smart constructor.
+data SankeyDiagramSortConfiguration = SankeyDiagramSortConfiguration'
+  { -- | The limit on the number of destination nodes that are displayed in a
+    -- sankey diagram.
+    destinationItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The limit on the number of source nodes that are displayed in a sankey
+    -- diagram.
+    sourceItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the weight fields.
+    weightSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SankeyDiagramSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationItemsLimit', 'sankeyDiagramSortConfiguration_destinationItemsLimit' - The limit on the number of destination nodes that are displayed in a
+-- sankey diagram.
+--
+-- 'sourceItemsLimit', 'sankeyDiagramSortConfiguration_sourceItemsLimit' - The limit on the number of source nodes that are displayed in a sankey
+-- diagram.
+--
+-- 'weightSort', 'sankeyDiagramSortConfiguration_weightSort' - The sort configuration of the weight fields.
+newSankeyDiagramSortConfiguration ::
+  SankeyDiagramSortConfiguration
+newSankeyDiagramSortConfiguration =
+  SankeyDiagramSortConfiguration'
+    { destinationItemsLimit =
+        Prelude.Nothing,
+      sourceItemsLimit = Prelude.Nothing,
+      weightSort = Prelude.Nothing
+    }
+
+-- | The limit on the number of destination nodes that are displayed in a
+-- sankey diagram.
+sankeyDiagramSortConfiguration_destinationItemsLimit :: Lens.Lens' SankeyDiagramSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+sankeyDiagramSortConfiguration_destinationItemsLimit = Lens.lens (\SankeyDiagramSortConfiguration' {destinationItemsLimit} -> destinationItemsLimit) (\s@SankeyDiagramSortConfiguration' {} a -> s {destinationItemsLimit = a} :: SankeyDiagramSortConfiguration)
+
+-- | The limit on the number of source nodes that are displayed in a sankey
+-- diagram.
+sankeyDiagramSortConfiguration_sourceItemsLimit :: Lens.Lens' SankeyDiagramSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+sankeyDiagramSortConfiguration_sourceItemsLimit = Lens.lens (\SankeyDiagramSortConfiguration' {sourceItemsLimit} -> sourceItemsLimit) (\s@SankeyDiagramSortConfiguration' {} a -> s {sourceItemsLimit = a} :: SankeyDiagramSortConfiguration)
+
+-- | The sort configuration of the weight fields.
+sankeyDiagramSortConfiguration_weightSort :: Lens.Lens' SankeyDiagramSortConfiguration (Prelude.Maybe [FieldSortOptions])
+sankeyDiagramSortConfiguration_weightSort = Lens.lens (\SankeyDiagramSortConfiguration' {weightSort} -> weightSort) (\s@SankeyDiagramSortConfiguration' {} a -> s {weightSort = a} :: SankeyDiagramSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SankeyDiagramSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "SankeyDiagramSortConfiguration"
+      ( \x ->
+          SankeyDiagramSortConfiguration'
+            Prelude.<$> (x Data..:? "DestinationItemsLimit")
+            Prelude.<*> (x Data..:? "SourceItemsLimit")
+            Prelude.<*> (x Data..:? "WeightSort" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    SankeyDiagramSortConfiguration
+  where
+  hashWithSalt
+    _salt
+    SankeyDiagramSortConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` destinationItemsLimit
+        `Prelude.hashWithSalt` sourceItemsLimit
+        `Prelude.hashWithSalt` weightSort
+
+instance
+  Prelude.NFData
+    SankeyDiagramSortConfiguration
+  where
+  rnf SankeyDiagramSortConfiguration' {..} =
+    Prelude.rnf destinationItemsLimit
+      `Prelude.seq` Prelude.rnf sourceItemsLimit
+      `Prelude.seq` Prelude.rnf weightSort
+
+instance Data.ToJSON SankeyDiagramSortConfiguration where
+  toJSON SankeyDiagramSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DestinationItemsLimit" Data..=)
+              Prelude.<$> destinationItemsLimit,
+            ("SourceItemsLimit" Data..=)
+              Prelude.<$> sourceItemsLimit,
+            ("WeightSort" Data..=) Prelude.<$> weightSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SankeyDiagramVisual.hs b/gen/Amazonka/QuickSight/Types/SankeyDiagramVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SankeyDiagramVisual.hs
@@ -0,0 +1,149 @@
+{-# 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.QuickSight.Types.SankeyDiagramVisual
+-- 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.QuickSight.Types.SankeyDiagramVisual 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.QuickSight.Types.SankeyDiagramChartConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A sankey diagram.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/sankey-diagram.html Using Sankey diagrams>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newSankeyDiagramVisual' smart constructor.
+data SankeyDiagramVisual = SankeyDiagramVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration of a sankey diagram.
+    chartConfiguration :: Prelude.Maybe SankeyDiagramChartConfiguration,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SankeyDiagramVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'sankeyDiagramVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'sankeyDiagramVisual_chartConfiguration' - The configuration of a sankey diagram.
+--
+-- 'subtitle', 'sankeyDiagramVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'sankeyDiagramVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'sankeyDiagramVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newSankeyDiagramVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  SankeyDiagramVisual
+newSankeyDiagramVisual pVisualId_ =
+  SankeyDiagramVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+sankeyDiagramVisual_actions :: Lens.Lens' SankeyDiagramVisual (Prelude.Maybe [VisualCustomAction])
+sankeyDiagramVisual_actions = Lens.lens (\SankeyDiagramVisual' {actions} -> actions) (\s@SankeyDiagramVisual' {} a -> s {actions = a} :: SankeyDiagramVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration of a sankey diagram.
+sankeyDiagramVisual_chartConfiguration :: Lens.Lens' SankeyDiagramVisual (Prelude.Maybe SankeyDiagramChartConfiguration)
+sankeyDiagramVisual_chartConfiguration = Lens.lens (\SankeyDiagramVisual' {chartConfiguration} -> chartConfiguration) (\s@SankeyDiagramVisual' {} a -> s {chartConfiguration = a} :: SankeyDiagramVisual)
+
+-- | The subtitle that is displayed on the visual.
+sankeyDiagramVisual_subtitle :: Lens.Lens' SankeyDiagramVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+sankeyDiagramVisual_subtitle = Lens.lens (\SankeyDiagramVisual' {subtitle} -> subtitle) (\s@SankeyDiagramVisual' {} a -> s {subtitle = a} :: SankeyDiagramVisual)
+
+-- | The title that is displayed on the visual.
+sankeyDiagramVisual_title :: Lens.Lens' SankeyDiagramVisual (Prelude.Maybe VisualTitleLabelOptions)
+sankeyDiagramVisual_title = Lens.lens (\SankeyDiagramVisual' {title} -> title) (\s@SankeyDiagramVisual' {} a -> s {title = a} :: SankeyDiagramVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+sankeyDiagramVisual_visualId :: Lens.Lens' SankeyDiagramVisual Prelude.Text
+sankeyDiagramVisual_visualId = Lens.lens (\SankeyDiagramVisual' {visualId} -> visualId) (\s@SankeyDiagramVisual' {} a -> s {visualId = a} :: SankeyDiagramVisual)
+
+instance Data.FromJSON SankeyDiagramVisual where
+  parseJSON =
+    Data.withObject
+      "SankeyDiagramVisual"
+      ( \x ->
+          SankeyDiagramVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable SankeyDiagramVisual where
+  hashWithSalt _salt SankeyDiagramVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData SankeyDiagramVisual where
+  rnf SankeyDiagramVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON SankeyDiagramVisual where
+  toJSON SankeyDiagramVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ScatterPlotCategoricallyAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/ScatterPlotCategoricallyAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ScatterPlotCategoricallyAggregatedFieldWells.hs
@@ -0,0 +1,149 @@
+{-# 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.QuickSight.Types.ScatterPlotCategoricallyAggregatedFieldWells
+-- 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.QuickSight.Types.ScatterPlotCategoricallyAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field well of a scatter plot.
+--
+-- /See:/ 'newScatterPlotCategoricallyAggregatedFieldWells' smart constructor.
+data ScatterPlotCategoricallyAggregatedFieldWells = ScatterPlotCategoricallyAggregatedFieldWells'
+  { -- | The category field well of a scatter plot.
+    category :: Prelude.Maybe [DimensionField],
+    -- | The size field well of a scatter plot.
+    size :: Prelude.Maybe [MeasureField],
+    -- | The x-axis field well of a scatter plot.
+    --
+    -- The x-axis is aggregated by category.
+    xAxis :: Prelude.Maybe [MeasureField],
+    -- | The y-axis field well of a scatter plot.
+    --
+    -- The y-axis is aggregated by category.
+    yAxis :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScatterPlotCategoricallyAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'category', 'scatterPlotCategoricallyAggregatedFieldWells_category' - The category field well of a scatter plot.
+--
+-- 'size', 'scatterPlotCategoricallyAggregatedFieldWells_size' - The size field well of a scatter plot.
+--
+-- 'xAxis', 'scatterPlotCategoricallyAggregatedFieldWells_xAxis' - The x-axis field well of a scatter plot.
+--
+-- The x-axis is aggregated by category.
+--
+-- 'yAxis', 'scatterPlotCategoricallyAggregatedFieldWells_yAxis' - The y-axis field well of a scatter plot.
+--
+-- The y-axis is aggregated by category.
+newScatterPlotCategoricallyAggregatedFieldWells ::
+  ScatterPlotCategoricallyAggregatedFieldWells
+newScatterPlotCategoricallyAggregatedFieldWells =
+  ScatterPlotCategoricallyAggregatedFieldWells'
+    { category =
+        Prelude.Nothing,
+      size = Prelude.Nothing,
+      xAxis = Prelude.Nothing,
+      yAxis = Prelude.Nothing
+    }
+
+-- | The category field well of a scatter plot.
+scatterPlotCategoricallyAggregatedFieldWells_category :: Lens.Lens' ScatterPlotCategoricallyAggregatedFieldWells (Prelude.Maybe [DimensionField])
+scatterPlotCategoricallyAggregatedFieldWells_category = Lens.lens (\ScatterPlotCategoricallyAggregatedFieldWells' {category} -> category) (\s@ScatterPlotCategoricallyAggregatedFieldWells' {} a -> s {category = a} :: ScatterPlotCategoricallyAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The size field well of a scatter plot.
+scatterPlotCategoricallyAggregatedFieldWells_size :: Lens.Lens' ScatterPlotCategoricallyAggregatedFieldWells (Prelude.Maybe [MeasureField])
+scatterPlotCategoricallyAggregatedFieldWells_size = Lens.lens (\ScatterPlotCategoricallyAggregatedFieldWells' {size} -> size) (\s@ScatterPlotCategoricallyAggregatedFieldWells' {} a -> s {size = a} :: ScatterPlotCategoricallyAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The x-axis field well of a scatter plot.
+--
+-- The x-axis is aggregated by category.
+scatterPlotCategoricallyAggregatedFieldWells_xAxis :: Lens.Lens' ScatterPlotCategoricallyAggregatedFieldWells (Prelude.Maybe [MeasureField])
+scatterPlotCategoricallyAggregatedFieldWells_xAxis = Lens.lens (\ScatterPlotCategoricallyAggregatedFieldWells' {xAxis} -> xAxis) (\s@ScatterPlotCategoricallyAggregatedFieldWells' {} a -> s {xAxis = a} :: ScatterPlotCategoricallyAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The y-axis field well of a scatter plot.
+--
+-- The y-axis is aggregated by category.
+scatterPlotCategoricallyAggregatedFieldWells_yAxis :: Lens.Lens' ScatterPlotCategoricallyAggregatedFieldWells (Prelude.Maybe [MeasureField])
+scatterPlotCategoricallyAggregatedFieldWells_yAxis = Lens.lens (\ScatterPlotCategoricallyAggregatedFieldWells' {yAxis} -> yAxis) (\s@ScatterPlotCategoricallyAggregatedFieldWells' {} a -> s {yAxis = a} :: ScatterPlotCategoricallyAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    ScatterPlotCategoricallyAggregatedFieldWells
+  where
+  parseJSON =
+    Data.withObject
+      "ScatterPlotCategoricallyAggregatedFieldWells"
+      ( \x ->
+          ScatterPlotCategoricallyAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Category" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Size" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "XAxis" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "YAxis" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    ScatterPlotCategoricallyAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    ScatterPlotCategoricallyAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` category
+        `Prelude.hashWithSalt` size
+        `Prelude.hashWithSalt` xAxis
+        `Prelude.hashWithSalt` yAxis
+
+instance
+  Prelude.NFData
+    ScatterPlotCategoricallyAggregatedFieldWells
+  where
+  rnf ScatterPlotCategoricallyAggregatedFieldWells' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf size
+      `Prelude.seq` Prelude.rnf xAxis
+      `Prelude.seq` Prelude.rnf yAxis
+
+instance
+  Data.ToJSON
+    ScatterPlotCategoricallyAggregatedFieldWells
+  where
+  toJSON
+    ScatterPlotCategoricallyAggregatedFieldWells' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("Category" Data..=) Prelude.<$> category,
+              ("Size" Data..=) Prelude.<$> size,
+              ("XAxis" Data..=) Prelude.<$> xAxis,
+              ("YAxis" Data..=) Prelude.<$> yAxis
+            ]
+        )
diff --git a/gen/Amazonka/QuickSight/Types/ScatterPlotConfiguration.hs b/gen/Amazonka/QuickSight/Types/ScatterPlotConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ScatterPlotConfiguration.hs
@@ -0,0 +1,208 @@
+{-# 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.QuickSight.Types.ScatterPlotConfiguration
+-- 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.QuickSight.Types.ScatterPlotConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.ScatterPlotFieldWells
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.VisualPalette
+
+-- | The configuration of a scatter plot.
+--
+-- /See:/ 'newScatterPlotConfiguration' smart constructor.
+data ScatterPlotConfiguration = ScatterPlotConfiguration'
+  { -- | The options that determine if visual data labels are displayed.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe ScatterPlotFieldWells,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The legend display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions,
+    -- | The palette (chart color) display setup of the visual.
+    visualPalette :: Prelude.Maybe VisualPalette,
+    -- | The label display options (grid line, range, scale, and axis step) of
+    -- the scatter plot\'s x-axis.
+    xAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility, and sort icon
+    -- visibility) of the scatter plot\'s x-axis.
+    xAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The label display options (grid line, range, scale, and axis step) of
+    -- the scatter plot\'s y-axis.
+    yAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The label options (label text, label visibility, and sort icon
+    -- visibility) of the scatter plot\'s y-axis.
+    yAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScatterPlotConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataLabels', 'scatterPlotConfiguration_dataLabels' - The options that determine if visual data labels are displayed.
+--
+-- 'fieldWells', 'scatterPlotConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'legend', 'scatterPlotConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'tooltip', 'scatterPlotConfiguration_tooltip' - The legend display setup of the visual.
+--
+-- 'visualPalette', 'scatterPlotConfiguration_visualPalette' - The palette (chart color) display setup of the visual.
+--
+-- 'xAxisDisplayOptions', 'scatterPlotConfiguration_xAxisDisplayOptions' - The label display options (grid line, range, scale, and axis step) of
+-- the scatter plot\'s x-axis.
+--
+-- 'xAxisLabelOptions', 'scatterPlotConfiguration_xAxisLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) of the scatter plot\'s x-axis.
+--
+-- 'yAxisDisplayOptions', 'scatterPlotConfiguration_yAxisDisplayOptions' - The label display options (grid line, range, scale, and axis step) of
+-- the scatter plot\'s y-axis.
+--
+-- 'yAxisLabelOptions', 'scatterPlotConfiguration_yAxisLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) of the scatter plot\'s y-axis.
+newScatterPlotConfiguration ::
+  ScatterPlotConfiguration
+newScatterPlotConfiguration =
+  ScatterPlotConfiguration'
+    { dataLabels =
+        Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      tooltip = Prelude.Nothing,
+      visualPalette = Prelude.Nothing,
+      xAxisDisplayOptions = Prelude.Nothing,
+      xAxisLabelOptions = Prelude.Nothing,
+      yAxisDisplayOptions = Prelude.Nothing,
+      yAxisLabelOptions = Prelude.Nothing
+    }
+
+-- | The options that determine if visual data labels are displayed.
+scatterPlotConfiguration_dataLabels :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe DataLabelOptions)
+scatterPlotConfiguration_dataLabels = Lens.lens (\ScatterPlotConfiguration' {dataLabels} -> dataLabels) (\s@ScatterPlotConfiguration' {} a -> s {dataLabels = a} :: ScatterPlotConfiguration)
+
+-- | The field wells of the visual.
+scatterPlotConfiguration_fieldWells :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe ScatterPlotFieldWells)
+scatterPlotConfiguration_fieldWells = Lens.lens (\ScatterPlotConfiguration' {fieldWells} -> fieldWells) (\s@ScatterPlotConfiguration' {} a -> s {fieldWells = a} :: ScatterPlotConfiguration)
+
+-- | The legend display setup of the visual.
+scatterPlotConfiguration_legend :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe LegendOptions)
+scatterPlotConfiguration_legend = Lens.lens (\ScatterPlotConfiguration' {legend} -> legend) (\s@ScatterPlotConfiguration' {} a -> s {legend = a} :: ScatterPlotConfiguration)
+
+-- | The legend display setup of the visual.
+scatterPlotConfiguration_tooltip :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe TooltipOptions)
+scatterPlotConfiguration_tooltip = Lens.lens (\ScatterPlotConfiguration' {tooltip} -> tooltip) (\s@ScatterPlotConfiguration' {} a -> s {tooltip = a} :: ScatterPlotConfiguration)
+
+-- | The palette (chart color) display setup of the visual.
+scatterPlotConfiguration_visualPalette :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe VisualPalette)
+scatterPlotConfiguration_visualPalette = Lens.lens (\ScatterPlotConfiguration' {visualPalette} -> visualPalette) (\s@ScatterPlotConfiguration' {} a -> s {visualPalette = a} :: ScatterPlotConfiguration)
+
+-- | The label display options (grid line, range, scale, and axis step) of
+-- the scatter plot\'s x-axis.
+scatterPlotConfiguration_xAxisDisplayOptions :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe AxisDisplayOptions)
+scatterPlotConfiguration_xAxisDisplayOptions = Lens.lens (\ScatterPlotConfiguration' {xAxisDisplayOptions} -> xAxisDisplayOptions) (\s@ScatterPlotConfiguration' {} a -> s {xAxisDisplayOptions = a} :: ScatterPlotConfiguration)
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) of the scatter plot\'s x-axis.
+scatterPlotConfiguration_xAxisLabelOptions :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+scatterPlotConfiguration_xAxisLabelOptions = Lens.lens (\ScatterPlotConfiguration' {xAxisLabelOptions} -> xAxisLabelOptions) (\s@ScatterPlotConfiguration' {} a -> s {xAxisLabelOptions = a} :: ScatterPlotConfiguration)
+
+-- | The label display options (grid line, range, scale, and axis step) of
+-- the scatter plot\'s y-axis.
+scatterPlotConfiguration_yAxisDisplayOptions :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe AxisDisplayOptions)
+scatterPlotConfiguration_yAxisDisplayOptions = Lens.lens (\ScatterPlotConfiguration' {yAxisDisplayOptions} -> yAxisDisplayOptions) (\s@ScatterPlotConfiguration' {} a -> s {yAxisDisplayOptions = a} :: ScatterPlotConfiguration)
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) of the scatter plot\'s y-axis.
+scatterPlotConfiguration_yAxisLabelOptions :: Lens.Lens' ScatterPlotConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+scatterPlotConfiguration_yAxisLabelOptions = Lens.lens (\ScatterPlotConfiguration' {yAxisLabelOptions} -> yAxisLabelOptions) (\s@ScatterPlotConfiguration' {} a -> s {yAxisLabelOptions = a} :: ScatterPlotConfiguration)
+
+instance Data.FromJSON ScatterPlotConfiguration where
+  parseJSON =
+    Data.withObject
+      "ScatterPlotConfiguration"
+      ( \x ->
+          ScatterPlotConfiguration'
+            Prelude.<$> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "Tooltip")
+            Prelude.<*> (x Data..:? "VisualPalette")
+            Prelude.<*> (x Data..:? "XAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "XAxisLabelOptions")
+            Prelude.<*> (x Data..:? "YAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "YAxisLabelOptions")
+      )
+
+instance Prelude.Hashable ScatterPlotConfiguration where
+  hashWithSalt _salt ScatterPlotConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` tooltip
+      `Prelude.hashWithSalt` visualPalette
+      `Prelude.hashWithSalt` xAxisDisplayOptions
+      `Prelude.hashWithSalt` xAxisLabelOptions
+      `Prelude.hashWithSalt` yAxisDisplayOptions
+      `Prelude.hashWithSalt` yAxisLabelOptions
+
+instance Prelude.NFData ScatterPlotConfiguration where
+  rnf ScatterPlotConfiguration' {..} =
+    Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf tooltip
+      `Prelude.seq` Prelude.rnf visualPalette
+      `Prelude.seq` Prelude.rnf xAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf xAxisLabelOptions
+      `Prelude.seq` Prelude.rnf yAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf yAxisLabelOptions
+
+instance Data.ToJSON ScatterPlotConfiguration where
+  toJSON ScatterPlotConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("Tooltip" Data..=) Prelude.<$> tooltip,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette,
+            ("XAxisDisplayOptions" Data..=)
+              Prelude.<$> xAxisDisplayOptions,
+            ("XAxisLabelOptions" Data..=)
+              Prelude.<$> xAxisLabelOptions,
+            ("YAxisDisplayOptions" Data..=)
+              Prelude.<$> yAxisDisplayOptions,
+            ("YAxisLabelOptions" Data..=)
+              Prelude.<$> yAxisLabelOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ScatterPlotFieldWells.hs b/gen/Amazonka/QuickSight/Types/ScatterPlotFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ScatterPlotFieldWells.hs
@@ -0,0 +1,121 @@
+{-# 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.QuickSight.Types.ScatterPlotFieldWells
+-- 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.QuickSight.Types.ScatterPlotFieldWells 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.QuickSight.Types.ScatterPlotCategoricallyAggregatedFieldWells
+import Amazonka.QuickSight.Types.ScatterPlotUnaggregatedFieldWells
+
+-- | The field well configuration of a scatter plot.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newScatterPlotFieldWells' smart constructor.
+data ScatterPlotFieldWells = ScatterPlotFieldWells'
+  { -- | The aggregated field wells of a scatter plot. Scatter plots that have a
+    -- field in the category (group\/color) field will have aggregated field
+    -- wells. The x and y-axes of these scatter plots are aggregated by
+    -- category.
+    scatterPlotCategoricallyAggregatedFieldWells :: Prelude.Maybe ScatterPlotCategoricallyAggregatedFieldWells,
+    -- | The unaggregated field wells of a scatter plot. Scatter plots without a
+    -- category field well have unaggregated field wells. The x and y-axes of
+    -- these scatter plots are unaggregated.
+    scatterPlotUnaggregatedFieldWells :: Prelude.Maybe ScatterPlotUnaggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScatterPlotFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'scatterPlotCategoricallyAggregatedFieldWells', 'scatterPlotFieldWells_scatterPlotCategoricallyAggregatedFieldWells' - The aggregated field wells of a scatter plot. Scatter plots that have a
+-- field in the category (group\/color) field will have aggregated field
+-- wells. The x and y-axes of these scatter plots are aggregated by
+-- category.
+--
+-- 'scatterPlotUnaggregatedFieldWells', 'scatterPlotFieldWells_scatterPlotUnaggregatedFieldWells' - The unaggregated field wells of a scatter plot. Scatter plots without a
+-- category field well have unaggregated field wells. The x and y-axes of
+-- these scatter plots are unaggregated.
+newScatterPlotFieldWells ::
+  ScatterPlotFieldWells
+newScatterPlotFieldWells =
+  ScatterPlotFieldWells'
+    { scatterPlotCategoricallyAggregatedFieldWells =
+        Prelude.Nothing,
+      scatterPlotUnaggregatedFieldWells = Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a scatter plot. Scatter plots that have a
+-- field in the category (group\/color) field will have aggregated field
+-- wells. The x and y-axes of these scatter plots are aggregated by
+-- category.
+scatterPlotFieldWells_scatterPlotCategoricallyAggregatedFieldWells :: Lens.Lens' ScatterPlotFieldWells (Prelude.Maybe ScatterPlotCategoricallyAggregatedFieldWells)
+scatterPlotFieldWells_scatterPlotCategoricallyAggregatedFieldWells = Lens.lens (\ScatterPlotFieldWells' {scatterPlotCategoricallyAggregatedFieldWells} -> scatterPlotCategoricallyAggregatedFieldWells) (\s@ScatterPlotFieldWells' {} a -> s {scatterPlotCategoricallyAggregatedFieldWells = a} :: ScatterPlotFieldWells)
+
+-- | The unaggregated field wells of a scatter plot. Scatter plots without a
+-- category field well have unaggregated field wells. The x and y-axes of
+-- these scatter plots are unaggregated.
+scatterPlotFieldWells_scatterPlotUnaggregatedFieldWells :: Lens.Lens' ScatterPlotFieldWells (Prelude.Maybe ScatterPlotUnaggregatedFieldWells)
+scatterPlotFieldWells_scatterPlotUnaggregatedFieldWells = Lens.lens (\ScatterPlotFieldWells' {scatterPlotUnaggregatedFieldWells} -> scatterPlotUnaggregatedFieldWells) (\s@ScatterPlotFieldWells' {} a -> s {scatterPlotUnaggregatedFieldWells = a} :: ScatterPlotFieldWells)
+
+instance Data.FromJSON ScatterPlotFieldWells where
+  parseJSON =
+    Data.withObject
+      "ScatterPlotFieldWells"
+      ( \x ->
+          ScatterPlotFieldWells'
+            Prelude.<$> ( x
+                            Data..:? "ScatterPlotCategoricallyAggregatedFieldWells"
+                        )
+            Prelude.<*> (x Data..:? "ScatterPlotUnaggregatedFieldWells")
+      )
+
+instance Prelude.Hashable ScatterPlotFieldWells where
+  hashWithSalt _salt ScatterPlotFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` scatterPlotCategoricallyAggregatedFieldWells
+      `Prelude.hashWithSalt` scatterPlotUnaggregatedFieldWells
+
+instance Prelude.NFData ScatterPlotFieldWells where
+  rnf ScatterPlotFieldWells' {..} =
+    Prelude.rnf
+      scatterPlotCategoricallyAggregatedFieldWells
+      `Prelude.seq` Prelude.rnf scatterPlotUnaggregatedFieldWells
+
+instance Data.ToJSON ScatterPlotFieldWells where
+  toJSON ScatterPlotFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ( "ScatterPlotCategoricallyAggregatedFieldWells"
+                Data..=
+            )
+              Prelude.<$> scatterPlotCategoricallyAggregatedFieldWells,
+            ("ScatterPlotUnaggregatedFieldWells" Data..=)
+              Prelude.<$> scatterPlotUnaggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ScatterPlotUnaggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/ScatterPlotUnaggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ScatterPlotUnaggregatedFieldWells.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ScatterPlotUnaggregatedFieldWells
+-- 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.QuickSight.Types.ScatterPlotUnaggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The unaggregated field wells of a scatter plot.
+--
+-- /See:/ 'newScatterPlotUnaggregatedFieldWells' smart constructor.
+data ScatterPlotUnaggregatedFieldWells = ScatterPlotUnaggregatedFieldWells'
+  { -- | The size field well of a scatter plot.
+    size :: Prelude.Maybe [MeasureField],
+    -- | The x-axis field well of a scatter plot.
+    --
+    -- The x-axis is a dimension field and cannot be aggregated.
+    xAxis :: Prelude.Maybe [DimensionField],
+    -- | The y-axis field well of a scatter plot.
+    --
+    -- The y-axis is a dimension field and cannot be aggregated.
+    yAxis :: Prelude.Maybe [DimensionField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScatterPlotUnaggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'size', 'scatterPlotUnaggregatedFieldWells_size' - The size field well of a scatter plot.
+--
+-- 'xAxis', 'scatterPlotUnaggregatedFieldWells_xAxis' - The x-axis field well of a scatter plot.
+--
+-- The x-axis is a dimension field and cannot be aggregated.
+--
+-- 'yAxis', 'scatterPlotUnaggregatedFieldWells_yAxis' - The y-axis field well of a scatter plot.
+--
+-- The y-axis is a dimension field and cannot be aggregated.
+newScatterPlotUnaggregatedFieldWells ::
+  ScatterPlotUnaggregatedFieldWells
+newScatterPlotUnaggregatedFieldWells =
+  ScatterPlotUnaggregatedFieldWells'
+    { size =
+        Prelude.Nothing,
+      xAxis = Prelude.Nothing,
+      yAxis = Prelude.Nothing
+    }
+
+-- | The size field well of a scatter plot.
+scatterPlotUnaggregatedFieldWells_size :: Lens.Lens' ScatterPlotUnaggregatedFieldWells (Prelude.Maybe [MeasureField])
+scatterPlotUnaggregatedFieldWells_size = Lens.lens (\ScatterPlotUnaggregatedFieldWells' {size} -> size) (\s@ScatterPlotUnaggregatedFieldWells' {} a -> s {size = a} :: ScatterPlotUnaggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The x-axis field well of a scatter plot.
+--
+-- The x-axis is a dimension field and cannot be aggregated.
+scatterPlotUnaggregatedFieldWells_xAxis :: Lens.Lens' ScatterPlotUnaggregatedFieldWells (Prelude.Maybe [DimensionField])
+scatterPlotUnaggregatedFieldWells_xAxis = Lens.lens (\ScatterPlotUnaggregatedFieldWells' {xAxis} -> xAxis) (\s@ScatterPlotUnaggregatedFieldWells' {} a -> s {xAxis = a} :: ScatterPlotUnaggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The y-axis field well of a scatter plot.
+--
+-- The y-axis is a dimension field and cannot be aggregated.
+scatterPlotUnaggregatedFieldWells_yAxis :: Lens.Lens' ScatterPlotUnaggregatedFieldWells (Prelude.Maybe [DimensionField])
+scatterPlotUnaggregatedFieldWells_yAxis = Lens.lens (\ScatterPlotUnaggregatedFieldWells' {yAxis} -> yAxis) (\s@ScatterPlotUnaggregatedFieldWells' {} a -> s {yAxis = a} :: ScatterPlotUnaggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    ScatterPlotUnaggregatedFieldWells
+  where
+  parseJSON =
+    Data.withObject
+      "ScatterPlotUnaggregatedFieldWells"
+      ( \x ->
+          ScatterPlotUnaggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Size" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "XAxis" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "YAxis" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    ScatterPlotUnaggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    ScatterPlotUnaggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` size
+        `Prelude.hashWithSalt` xAxis
+        `Prelude.hashWithSalt` yAxis
+
+instance
+  Prelude.NFData
+    ScatterPlotUnaggregatedFieldWells
+  where
+  rnf ScatterPlotUnaggregatedFieldWells' {..} =
+    Prelude.rnf size
+      `Prelude.seq` Prelude.rnf xAxis
+      `Prelude.seq` Prelude.rnf yAxis
+
+instance
+  Data.ToJSON
+    ScatterPlotUnaggregatedFieldWells
+  where
+  toJSON ScatterPlotUnaggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Size" Data..=) Prelude.<$> size,
+            ("XAxis" Data..=) Prelude.<$> xAxis,
+            ("YAxis" Data..=) Prelude.<$> yAxis
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ScatterPlotVisual.hs b/gen/Amazonka/QuickSight/Types/ScatterPlotVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ScatterPlotVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.ScatterPlotVisual
+-- 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.QuickSight.Types.ScatterPlotVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.ScatterPlotConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A scatter plot.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/scatter-plot.html Using scatter plots>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newScatterPlotVisual' smart constructor.
+data ScatterPlotVisual = ScatterPlotVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe ScatterPlotConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScatterPlotVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'scatterPlotVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'scatterPlotVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'scatterPlotVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'scatterPlotVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'scatterPlotVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'scatterPlotVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newScatterPlotVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  ScatterPlotVisual
+newScatterPlotVisual pVisualId_ =
+  ScatterPlotVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+scatterPlotVisual_actions :: Lens.Lens' ScatterPlotVisual (Prelude.Maybe [VisualCustomAction])
+scatterPlotVisual_actions = Lens.lens (\ScatterPlotVisual' {actions} -> actions) (\s@ScatterPlotVisual' {} a -> s {actions = a} :: ScatterPlotVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+scatterPlotVisual_chartConfiguration :: Lens.Lens' ScatterPlotVisual (Prelude.Maybe ScatterPlotConfiguration)
+scatterPlotVisual_chartConfiguration = Lens.lens (\ScatterPlotVisual' {chartConfiguration} -> chartConfiguration) (\s@ScatterPlotVisual' {} a -> s {chartConfiguration = a} :: ScatterPlotVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+scatterPlotVisual_columnHierarchies :: Lens.Lens' ScatterPlotVisual (Prelude.Maybe [ColumnHierarchy])
+scatterPlotVisual_columnHierarchies = Lens.lens (\ScatterPlotVisual' {columnHierarchies} -> columnHierarchies) (\s@ScatterPlotVisual' {} a -> s {columnHierarchies = a} :: ScatterPlotVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+scatterPlotVisual_subtitle :: Lens.Lens' ScatterPlotVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+scatterPlotVisual_subtitle = Lens.lens (\ScatterPlotVisual' {subtitle} -> subtitle) (\s@ScatterPlotVisual' {} a -> s {subtitle = a} :: ScatterPlotVisual)
+
+-- | The title that is displayed on the visual.
+scatterPlotVisual_title :: Lens.Lens' ScatterPlotVisual (Prelude.Maybe VisualTitleLabelOptions)
+scatterPlotVisual_title = Lens.lens (\ScatterPlotVisual' {title} -> title) (\s@ScatterPlotVisual' {} a -> s {title = a} :: ScatterPlotVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+scatterPlotVisual_visualId :: Lens.Lens' ScatterPlotVisual Prelude.Text
+scatterPlotVisual_visualId = Lens.lens (\ScatterPlotVisual' {visualId} -> visualId) (\s@ScatterPlotVisual' {} a -> s {visualId = a} :: ScatterPlotVisual)
+
+instance Data.FromJSON ScatterPlotVisual where
+  parseJSON =
+    Data.withObject
+      "ScatterPlotVisual"
+      ( \x ->
+          ScatterPlotVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable ScatterPlotVisual where
+  hashWithSalt _salt ScatterPlotVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData ScatterPlotVisual where
+  rnf ScatterPlotVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON ScatterPlotVisual where
+  toJSON ScatterPlotVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ScrollBarOptions.hs b/gen/Amazonka/QuickSight/Types/ScrollBarOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ScrollBarOptions.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.ScrollBarOptions
+-- 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.QuickSight.Types.ScrollBarOptions 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.QuickSight.Types.Visibility
+import Amazonka.QuickSight.Types.VisibleRangeOptions
+
+-- | The visual display options for a data zoom scroll bar.
+--
+-- /See:/ 'newScrollBarOptions' smart constructor.
+data ScrollBarOptions = ScrollBarOptions'
+  { -- | The visibility of the data zoom scroll bar.
+    visibility :: Prelude.Maybe Visibility,
+    -- | The visibility range for the data zoom scroll bar.
+    visibleRange :: Prelude.Maybe VisibleRangeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScrollBarOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'scrollBarOptions_visibility' - The visibility of the data zoom scroll bar.
+--
+-- 'visibleRange', 'scrollBarOptions_visibleRange' - The visibility range for the data zoom scroll bar.
+newScrollBarOptions ::
+  ScrollBarOptions
+newScrollBarOptions =
+  ScrollBarOptions'
+    { visibility = Prelude.Nothing,
+      visibleRange = Prelude.Nothing
+    }
+
+-- | The visibility of the data zoom scroll bar.
+scrollBarOptions_visibility :: Lens.Lens' ScrollBarOptions (Prelude.Maybe Visibility)
+scrollBarOptions_visibility = Lens.lens (\ScrollBarOptions' {visibility} -> visibility) (\s@ScrollBarOptions' {} a -> s {visibility = a} :: ScrollBarOptions)
+
+-- | The visibility range for the data zoom scroll bar.
+scrollBarOptions_visibleRange :: Lens.Lens' ScrollBarOptions (Prelude.Maybe VisibleRangeOptions)
+scrollBarOptions_visibleRange = Lens.lens (\ScrollBarOptions' {visibleRange} -> visibleRange) (\s@ScrollBarOptions' {} a -> s {visibleRange = a} :: ScrollBarOptions)
+
+instance Data.FromJSON ScrollBarOptions where
+  parseJSON =
+    Data.withObject
+      "ScrollBarOptions"
+      ( \x ->
+          ScrollBarOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..:? "VisibleRange")
+      )
+
+instance Prelude.Hashable ScrollBarOptions where
+  hashWithSalt _salt ScrollBarOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` visibleRange
+
+instance Prelude.NFData ScrollBarOptions where
+  rnf ScrollBarOptions' {..} =
+    Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf visibleRange
+
+instance Data.ToJSON ScrollBarOptions where
+  toJSON ScrollBarOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Visibility" Data..=) Prelude.<$> visibility,
+            ("VisibleRange" Data..=) Prelude.<$> visibleRange
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SecondaryValueOptions.hs b/gen/Amazonka/QuickSight/Types/SecondaryValueOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SecondaryValueOptions.hs
@@ -0,0 +1,81 @@
+{-# 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.QuickSight.Types.SecondaryValueOptions
+-- 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.QuickSight.Types.SecondaryValueOptions 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.QuickSight.Types.Visibility
+
+-- | The options that determine the presentation of the secondary value of a
+-- KPI visual.
+--
+-- /See:/ 'newSecondaryValueOptions' smart constructor.
+data SecondaryValueOptions = SecondaryValueOptions'
+  { -- | Determines the visibility of the secondary value.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SecondaryValueOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'secondaryValueOptions_visibility' - Determines the visibility of the secondary value.
+newSecondaryValueOptions ::
+  SecondaryValueOptions
+newSecondaryValueOptions =
+  SecondaryValueOptions'
+    { visibility =
+        Prelude.Nothing
+    }
+
+-- | Determines the visibility of the secondary value.
+secondaryValueOptions_visibility :: Lens.Lens' SecondaryValueOptions (Prelude.Maybe Visibility)
+secondaryValueOptions_visibility = Lens.lens (\SecondaryValueOptions' {visibility} -> visibility) (\s@SecondaryValueOptions' {} a -> s {visibility = a} :: SecondaryValueOptions)
+
+instance Data.FromJSON SecondaryValueOptions where
+  parseJSON =
+    Data.withObject
+      "SecondaryValueOptions"
+      ( \x ->
+          SecondaryValueOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable SecondaryValueOptions where
+  hashWithSalt _salt SecondaryValueOptions' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData SecondaryValueOptions where
+  rnf SecondaryValueOptions' {..} =
+    Prelude.rnf visibility
+
+instance Data.ToJSON SecondaryValueOptions where
+  toJSON SecondaryValueOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionAfterPageBreak.hs b/gen/Amazonka/QuickSight/Types/SectionAfterPageBreak.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionAfterPageBreak.hs
@@ -0,0 +1,79 @@
+{-# 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.QuickSight.Types.SectionAfterPageBreak
+-- 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.QuickSight.Types.SectionAfterPageBreak 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.QuickSight.Types.SectionPageBreakStatus
+
+-- | The configuration of a page break after a section.
+--
+-- /See:/ 'newSectionAfterPageBreak' smart constructor.
+data SectionAfterPageBreak = SectionAfterPageBreak'
+  { -- | The option that enables or disables a page break at the end of a
+    -- section.
+    status :: Prelude.Maybe SectionPageBreakStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionAfterPageBreak' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'sectionAfterPageBreak_status' - The option that enables or disables a page break at the end of a
+-- section.
+newSectionAfterPageBreak ::
+  SectionAfterPageBreak
+newSectionAfterPageBreak =
+  SectionAfterPageBreak' {status = Prelude.Nothing}
+
+-- | The option that enables or disables a page break at the end of a
+-- section.
+sectionAfterPageBreak_status :: Lens.Lens' SectionAfterPageBreak (Prelude.Maybe SectionPageBreakStatus)
+sectionAfterPageBreak_status = Lens.lens (\SectionAfterPageBreak' {status} -> status) (\s@SectionAfterPageBreak' {} a -> s {status = a} :: SectionAfterPageBreak)
+
+instance Data.FromJSON SectionAfterPageBreak where
+  parseJSON =
+    Data.withObject
+      "SectionAfterPageBreak"
+      ( \x ->
+          SectionAfterPageBreak'
+            Prelude.<$> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable SectionAfterPageBreak where
+  hashWithSalt _salt SectionAfterPageBreak' {..} =
+    _salt `Prelude.hashWithSalt` status
+
+instance Prelude.NFData SectionAfterPageBreak where
+  rnf SectionAfterPageBreak' {..} = Prelude.rnf status
+
+instance Data.ToJSON SectionAfterPageBreak where
+  toJSON SectionAfterPageBreak' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Status" Data..=) Prelude.<$> status]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionBasedLayoutCanvasSizeOptions.hs b/gen/Amazonka/QuickSight/Types/SectionBasedLayoutCanvasSizeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionBasedLayoutCanvasSizeOptions.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.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions
+-- 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.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions 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.QuickSight.Types.SectionBasedLayoutPaperCanvasSizeOptions
+
+-- | The options for the canvas of a section-based layout.
+--
+-- /See:/ 'newSectionBasedLayoutCanvasSizeOptions' smart constructor.
+data SectionBasedLayoutCanvasSizeOptions = SectionBasedLayoutCanvasSizeOptions'
+  { -- | The options for a paper canvas of a section-based layout.
+    paperCanvasSizeOptions :: Prelude.Maybe SectionBasedLayoutPaperCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionBasedLayoutCanvasSizeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'paperCanvasSizeOptions', 'sectionBasedLayoutCanvasSizeOptions_paperCanvasSizeOptions' - The options for a paper canvas of a section-based layout.
+newSectionBasedLayoutCanvasSizeOptions ::
+  SectionBasedLayoutCanvasSizeOptions
+newSectionBasedLayoutCanvasSizeOptions =
+  SectionBasedLayoutCanvasSizeOptions'
+    { paperCanvasSizeOptions =
+        Prelude.Nothing
+    }
+
+-- | The options for a paper canvas of a section-based layout.
+sectionBasedLayoutCanvasSizeOptions_paperCanvasSizeOptions :: Lens.Lens' SectionBasedLayoutCanvasSizeOptions (Prelude.Maybe SectionBasedLayoutPaperCanvasSizeOptions)
+sectionBasedLayoutCanvasSizeOptions_paperCanvasSizeOptions = Lens.lens (\SectionBasedLayoutCanvasSizeOptions' {paperCanvasSizeOptions} -> paperCanvasSizeOptions) (\s@SectionBasedLayoutCanvasSizeOptions' {} a -> s {paperCanvasSizeOptions = a} :: SectionBasedLayoutCanvasSizeOptions)
+
+instance
+  Data.FromJSON
+    SectionBasedLayoutCanvasSizeOptions
+  where
+  parseJSON =
+    Data.withObject
+      "SectionBasedLayoutCanvasSizeOptions"
+      ( \x ->
+          SectionBasedLayoutCanvasSizeOptions'
+            Prelude.<$> (x Data..:? "PaperCanvasSizeOptions")
+      )
+
+instance
+  Prelude.Hashable
+    SectionBasedLayoutCanvasSizeOptions
+  where
+  hashWithSalt
+    _salt
+    SectionBasedLayoutCanvasSizeOptions' {..} =
+      _salt `Prelude.hashWithSalt` paperCanvasSizeOptions
+
+instance
+  Prelude.NFData
+    SectionBasedLayoutCanvasSizeOptions
+  where
+  rnf SectionBasedLayoutCanvasSizeOptions' {..} =
+    Prelude.rnf paperCanvasSizeOptions
+
+instance
+  Data.ToJSON
+    SectionBasedLayoutCanvasSizeOptions
+  where
+  toJSON SectionBasedLayoutCanvasSizeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PaperCanvasSizeOptions" Data..=)
+              Prelude.<$> paperCanvasSizeOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionBasedLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/SectionBasedLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionBasedLayoutConfiguration.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.QuickSight.Types.SectionBasedLayoutConfiguration
+-- 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.QuickSight.Types.SectionBasedLayoutConfiguration 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.QuickSight.Types.BodySectionConfiguration
+import Amazonka.QuickSight.Types.HeaderFooterSectionConfiguration
+import Amazonka.QuickSight.Types.SectionBasedLayoutCanvasSizeOptions
+
+-- | The configuration for a section-based layout.
+--
+-- /See:/ 'newSectionBasedLayoutConfiguration' smart constructor.
+data SectionBasedLayoutConfiguration = SectionBasedLayoutConfiguration'
+  { -- | A list of header section configurations.
+    headerSections :: [HeaderFooterSectionConfiguration],
+    -- | A list of body section configurations.
+    bodySections :: [BodySectionConfiguration],
+    -- | A list of footer section configurations.
+    footerSections :: [HeaderFooterSectionConfiguration],
+    -- | The options for the canvas of a section-based layout.
+    canvasSizeOptions :: SectionBasedLayoutCanvasSizeOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionBasedLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'headerSections', 'sectionBasedLayoutConfiguration_headerSections' - A list of header section configurations.
+--
+-- 'bodySections', 'sectionBasedLayoutConfiguration_bodySections' - A list of body section configurations.
+--
+-- 'footerSections', 'sectionBasedLayoutConfiguration_footerSections' - A list of footer section configurations.
+--
+-- 'canvasSizeOptions', 'sectionBasedLayoutConfiguration_canvasSizeOptions' - The options for the canvas of a section-based layout.
+newSectionBasedLayoutConfiguration ::
+  -- | 'canvasSizeOptions'
+  SectionBasedLayoutCanvasSizeOptions ->
+  SectionBasedLayoutConfiguration
+newSectionBasedLayoutConfiguration
+  pCanvasSizeOptions_ =
+    SectionBasedLayoutConfiguration'
+      { headerSections =
+          Prelude.mempty,
+        bodySections = Prelude.mempty,
+        footerSections = Prelude.mempty,
+        canvasSizeOptions = pCanvasSizeOptions_
+      }
+
+-- | A list of header section configurations.
+sectionBasedLayoutConfiguration_headerSections :: Lens.Lens' SectionBasedLayoutConfiguration [HeaderFooterSectionConfiguration]
+sectionBasedLayoutConfiguration_headerSections = Lens.lens (\SectionBasedLayoutConfiguration' {headerSections} -> headerSections) (\s@SectionBasedLayoutConfiguration' {} a -> s {headerSections = a} :: SectionBasedLayoutConfiguration) Prelude.. Lens.coerced
+
+-- | A list of body section configurations.
+sectionBasedLayoutConfiguration_bodySections :: Lens.Lens' SectionBasedLayoutConfiguration [BodySectionConfiguration]
+sectionBasedLayoutConfiguration_bodySections = Lens.lens (\SectionBasedLayoutConfiguration' {bodySections} -> bodySections) (\s@SectionBasedLayoutConfiguration' {} a -> s {bodySections = a} :: SectionBasedLayoutConfiguration) Prelude.. Lens.coerced
+
+-- | A list of footer section configurations.
+sectionBasedLayoutConfiguration_footerSections :: Lens.Lens' SectionBasedLayoutConfiguration [HeaderFooterSectionConfiguration]
+sectionBasedLayoutConfiguration_footerSections = Lens.lens (\SectionBasedLayoutConfiguration' {footerSections} -> footerSections) (\s@SectionBasedLayoutConfiguration' {} a -> s {footerSections = a} :: SectionBasedLayoutConfiguration) Prelude.. Lens.coerced
+
+-- | The options for the canvas of a section-based layout.
+sectionBasedLayoutConfiguration_canvasSizeOptions :: Lens.Lens' SectionBasedLayoutConfiguration SectionBasedLayoutCanvasSizeOptions
+sectionBasedLayoutConfiguration_canvasSizeOptions = Lens.lens (\SectionBasedLayoutConfiguration' {canvasSizeOptions} -> canvasSizeOptions) (\s@SectionBasedLayoutConfiguration' {} a -> s {canvasSizeOptions = a} :: SectionBasedLayoutConfiguration)
+
+instance
+  Data.FromJSON
+    SectionBasedLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SectionBasedLayoutConfiguration"
+      ( \x ->
+          SectionBasedLayoutConfiguration'
+            Prelude.<$> (x Data..:? "HeaderSections" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "BodySections" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "FooterSections" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "CanvasSizeOptions")
+      )
+
+instance
+  Prelude.Hashable
+    SectionBasedLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    SectionBasedLayoutConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` headerSections
+        `Prelude.hashWithSalt` bodySections
+        `Prelude.hashWithSalt` footerSections
+        `Prelude.hashWithSalt` canvasSizeOptions
+
+instance
+  Prelude.NFData
+    SectionBasedLayoutConfiguration
+  where
+  rnf SectionBasedLayoutConfiguration' {..} =
+    Prelude.rnf headerSections
+      `Prelude.seq` Prelude.rnf bodySections
+      `Prelude.seq` Prelude.rnf footerSections
+      `Prelude.seq` Prelude.rnf canvasSizeOptions
+
+instance Data.ToJSON SectionBasedLayoutConfiguration where
+  toJSON SectionBasedLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("HeaderSections" Data..= headerSections),
+            Prelude.Just ("BodySections" Data..= bodySections),
+            Prelude.Just
+              ("FooterSections" Data..= footerSections),
+            Prelude.Just
+              ("CanvasSizeOptions" Data..= canvasSizeOptions)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionBasedLayoutPaperCanvasSizeOptions.hs b/gen/Amazonka/QuickSight/Types/SectionBasedLayoutPaperCanvasSizeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionBasedLayoutPaperCanvasSizeOptions.hs
@@ -0,0 +1,144 @@
+{-# 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.QuickSight.Types.SectionBasedLayoutPaperCanvasSizeOptions
+-- 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.QuickSight.Types.SectionBasedLayoutPaperCanvasSizeOptions 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.QuickSight.Types.PaperOrientation
+import Amazonka.QuickSight.Types.PaperSize
+import Amazonka.QuickSight.Types.Spacing
+
+-- | The options for a paper canvas of a section-based layout.
+--
+-- /See:/ 'newSectionBasedLayoutPaperCanvasSizeOptions' smart constructor.
+data SectionBasedLayoutPaperCanvasSizeOptions = SectionBasedLayoutPaperCanvasSizeOptions'
+  { -- | Defines the spacing between the canvas content and the top, bottom,
+    -- left, and right edges.
+    paperMargin :: Prelude.Maybe Spacing,
+    -- | The paper orientation that is used to define canvas dimensions. Choose
+    -- one of the following options:
+    --
+    -- -   PORTRAIT
+    --
+    -- -   LANDSCAPE
+    paperOrientation :: Prelude.Maybe PaperOrientation,
+    -- | The paper size that is used to define canvas dimensions.
+    paperSize :: Prelude.Maybe PaperSize
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionBasedLayoutPaperCanvasSizeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'paperMargin', 'sectionBasedLayoutPaperCanvasSizeOptions_paperMargin' - Defines the spacing between the canvas content and the top, bottom,
+-- left, and right edges.
+--
+-- 'paperOrientation', 'sectionBasedLayoutPaperCanvasSizeOptions_paperOrientation' - The paper orientation that is used to define canvas dimensions. Choose
+-- one of the following options:
+--
+-- -   PORTRAIT
+--
+-- -   LANDSCAPE
+--
+-- 'paperSize', 'sectionBasedLayoutPaperCanvasSizeOptions_paperSize' - The paper size that is used to define canvas dimensions.
+newSectionBasedLayoutPaperCanvasSizeOptions ::
+  SectionBasedLayoutPaperCanvasSizeOptions
+newSectionBasedLayoutPaperCanvasSizeOptions =
+  SectionBasedLayoutPaperCanvasSizeOptions'
+    { paperMargin =
+        Prelude.Nothing,
+      paperOrientation =
+        Prelude.Nothing,
+      paperSize = Prelude.Nothing
+    }
+
+-- | Defines the spacing between the canvas content and the top, bottom,
+-- left, and right edges.
+sectionBasedLayoutPaperCanvasSizeOptions_paperMargin :: Lens.Lens' SectionBasedLayoutPaperCanvasSizeOptions (Prelude.Maybe Spacing)
+sectionBasedLayoutPaperCanvasSizeOptions_paperMargin = Lens.lens (\SectionBasedLayoutPaperCanvasSizeOptions' {paperMargin} -> paperMargin) (\s@SectionBasedLayoutPaperCanvasSizeOptions' {} a -> s {paperMargin = a} :: SectionBasedLayoutPaperCanvasSizeOptions)
+
+-- | The paper orientation that is used to define canvas dimensions. Choose
+-- one of the following options:
+--
+-- -   PORTRAIT
+--
+-- -   LANDSCAPE
+sectionBasedLayoutPaperCanvasSizeOptions_paperOrientation :: Lens.Lens' SectionBasedLayoutPaperCanvasSizeOptions (Prelude.Maybe PaperOrientation)
+sectionBasedLayoutPaperCanvasSizeOptions_paperOrientation = Lens.lens (\SectionBasedLayoutPaperCanvasSizeOptions' {paperOrientation} -> paperOrientation) (\s@SectionBasedLayoutPaperCanvasSizeOptions' {} a -> s {paperOrientation = a} :: SectionBasedLayoutPaperCanvasSizeOptions)
+
+-- | The paper size that is used to define canvas dimensions.
+sectionBasedLayoutPaperCanvasSizeOptions_paperSize :: Lens.Lens' SectionBasedLayoutPaperCanvasSizeOptions (Prelude.Maybe PaperSize)
+sectionBasedLayoutPaperCanvasSizeOptions_paperSize = Lens.lens (\SectionBasedLayoutPaperCanvasSizeOptions' {paperSize} -> paperSize) (\s@SectionBasedLayoutPaperCanvasSizeOptions' {} a -> s {paperSize = a} :: SectionBasedLayoutPaperCanvasSizeOptions)
+
+instance
+  Data.FromJSON
+    SectionBasedLayoutPaperCanvasSizeOptions
+  where
+  parseJSON =
+    Data.withObject
+      "SectionBasedLayoutPaperCanvasSizeOptions"
+      ( \x ->
+          SectionBasedLayoutPaperCanvasSizeOptions'
+            Prelude.<$> (x Data..:? "PaperMargin")
+            Prelude.<*> (x Data..:? "PaperOrientation")
+            Prelude.<*> (x Data..:? "PaperSize")
+      )
+
+instance
+  Prelude.Hashable
+    SectionBasedLayoutPaperCanvasSizeOptions
+  where
+  hashWithSalt
+    _salt
+    SectionBasedLayoutPaperCanvasSizeOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` paperMargin
+        `Prelude.hashWithSalt` paperOrientation
+        `Prelude.hashWithSalt` paperSize
+
+instance
+  Prelude.NFData
+    SectionBasedLayoutPaperCanvasSizeOptions
+  where
+  rnf SectionBasedLayoutPaperCanvasSizeOptions' {..} =
+    Prelude.rnf paperMargin
+      `Prelude.seq` Prelude.rnf paperOrientation
+      `Prelude.seq` Prelude.rnf paperSize
+
+instance
+  Data.ToJSON
+    SectionBasedLayoutPaperCanvasSizeOptions
+  where
+  toJSON SectionBasedLayoutPaperCanvasSizeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PaperMargin" Data..=) Prelude.<$> paperMargin,
+            ("PaperOrientation" Data..=)
+              Prelude.<$> paperOrientation,
+            ("PaperSize" Data..=) Prelude.<$> paperSize
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/SectionLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionLayoutConfiguration.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.QuickSight.Types.SectionLayoutConfiguration
+-- 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.QuickSight.Types.SectionLayoutConfiguration 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.QuickSight.Types.FreeFormSectionLayoutConfiguration
+
+-- | The layout configuration of a section.
+--
+-- /See:/ 'newSectionLayoutConfiguration' smart constructor.
+data SectionLayoutConfiguration = SectionLayoutConfiguration'
+  { -- | The free-form layout configuration of a section.
+    freeFormLayout :: FreeFormSectionLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'freeFormLayout', 'sectionLayoutConfiguration_freeFormLayout' - The free-form layout configuration of a section.
+newSectionLayoutConfiguration ::
+  -- | 'freeFormLayout'
+  FreeFormSectionLayoutConfiguration ->
+  SectionLayoutConfiguration
+newSectionLayoutConfiguration pFreeFormLayout_ =
+  SectionLayoutConfiguration'
+    { freeFormLayout =
+        pFreeFormLayout_
+    }
+
+-- | The free-form layout configuration of a section.
+sectionLayoutConfiguration_freeFormLayout :: Lens.Lens' SectionLayoutConfiguration FreeFormSectionLayoutConfiguration
+sectionLayoutConfiguration_freeFormLayout = Lens.lens (\SectionLayoutConfiguration' {freeFormLayout} -> freeFormLayout) (\s@SectionLayoutConfiguration' {} a -> s {freeFormLayout = a} :: SectionLayoutConfiguration)
+
+instance Data.FromJSON SectionLayoutConfiguration where
+  parseJSON =
+    Data.withObject
+      "SectionLayoutConfiguration"
+      ( \x ->
+          SectionLayoutConfiguration'
+            Prelude.<$> (x Data..: "FreeFormLayout")
+      )
+
+instance Prelude.Hashable SectionLayoutConfiguration where
+  hashWithSalt _salt SectionLayoutConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` freeFormLayout
+
+instance Prelude.NFData SectionLayoutConfiguration where
+  rnf SectionLayoutConfiguration' {..} =
+    Prelude.rnf freeFormLayout
+
+instance Data.ToJSON SectionLayoutConfiguration where
+  toJSON SectionLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FreeFormLayout" Data..= freeFormLayout)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionPageBreakConfiguration.hs b/gen/Amazonka/QuickSight/Types/SectionPageBreakConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionPageBreakConfiguration.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SectionPageBreakConfiguration
+-- 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.QuickSight.Types.SectionPageBreakConfiguration 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.QuickSight.Types.SectionAfterPageBreak
+
+-- | The configuration of a page break for a section.
+--
+-- /See:/ 'newSectionPageBreakConfiguration' smart constructor.
+data SectionPageBreakConfiguration = SectionPageBreakConfiguration'
+  { -- | The configuration of a page break after a section.
+    after :: Prelude.Maybe SectionAfterPageBreak
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionPageBreakConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'after', 'sectionPageBreakConfiguration_after' - The configuration of a page break after a section.
+newSectionPageBreakConfiguration ::
+  SectionPageBreakConfiguration
+newSectionPageBreakConfiguration =
+  SectionPageBreakConfiguration'
+    { after =
+        Prelude.Nothing
+    }
+
+-- | The configuration of a page break after a section.
+sectionPageBreakConfiguration_after :: Lens.Lens' SectionPageBreakConfiguration (Prelude.Maybe SectionAfterPageBreak)
+sectionPageBreakConfiguration_after = Lens.lens (\SectionPageBreakConfiguration' {after} -> after) (\s@SectionPageBreakConfiguration' {} a -> s {after = a} :: SectionPageBreakConfiguration)
+
+instance Data.FromJSON SectionPageBreakConfiguration where
+  parseJSON =
+    Data.withObject
+      "SectionPageBreakConfiguration"
+      ( \x ->
+          SectionPageBreakConfiguration'
+            Prelude.<$> (x Data..:? "After")
+      )
+
+instance
+  Prelude.Hashable
+    SectionPageBreakConfiguration
+  where
+  hashWithSalt _salt SectionPageBreakConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` after
+
+instance Prelude.NFData SectionPageBreakConfiguration where
+  rnf SectionPageBreakConfiguration' {..} =
+    Prelude.rnf after
+
+instance Data.ToJSON SectionPageBreakConfiguration where
+  toJSON SectionPageBreakConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("After" Data..=) Prelude.<$> after]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SectionPageBreakStatus.hs b/gen/Amazonka/QuickSight/Types/SectionPageBreakStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionPageBreakStatus.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.QuickSight.Types.SectionPageBreakStatus
+-- 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.QuickSight.Types.SectionPageBreakStatus
+  ( SectionPageBreakStatus
+      ( ..,
+        SectionPageBreakStatus_DISABLED,
+        SectionPageBreakStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SectionPageBreakStatus = SectionPageBreakStatus'
+  { fromSectionPageBreakStatus ::
+      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 SectionPageBreakStatus_DISABLED :: SectionPageBreakStatus
+pattern SectionPageBreakStatus_DISABLED = SectionPageBreakStatus' "DISABLED"
+
+pattern SectionPageBreakStatus_ENABLED :: SectionPageBreakStatus
+pattern SectionPageBreakStatus_ENABLED = SectionPageBreakStatus' "ENABLED"
+
+{-# COMPLETE
+  SectionPageBreakStatus_DISABLED,
+  SectionPageBreakStatus_ENABLED,
+  SectionPageBreakStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SectionStyle.hs b/gen/Amazonka/QuickSight/Types/SectionStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SectionStyle.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.QuickSight.Types.SectionStyle
+-- 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.QuickSight.Types.SectionStyle 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.QuickSight.Types.Spacing
+
+-- | The options that style a section.
+--
+-- /See:/ 'newSectionStyle' smart constructor.
+data SectionStyle = SectionStyle'
+  { -- | The height of a section.
+    --
+    -- Heights can only be defined for header and footer sections. The default
+    -- height margin is 0.5 inches.
+    height :: Prelude.Maybe Prelude.Text,
+    -- | The spacing between section content and its top, bottom, left, and right
+    -- edges.
+    --
+    -- There is no padding by default.
+    padding :: Prelude.Maybe Spacing
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SectionStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'height', 'sectionStyle_height' - The height of a section.
+--
+-- Heights can only be defined for header and footer sections. The default
+-- height margin is 0.5 inches.
+--
+-- 'padding', 'sectionStyle_padding' - The spacing between section content and its top, bottom, left, and right
+-- edges.
+--
+-- There is no padding by default.
+newSectionStyle ::
+  SectionStyle
+newSectionStyle =
+  SectionStyle'
+    { height = Prelude.Nothing,
+      padding = Prelude.Nothing
+    }
+
+-- | The height of a section.
+--
+-- Heights can only be defined for header and footer sections. The default
+-- height margin is 0.5 inches.
+sectionStyle_height :: Lens.Lens' SectionStyle (Prelude.Maybe Prelude.Text)
+sectionStyle_height = Lens.lens (\SectionStyle' {height} -> height) (\s@SectionStyle' {} a -> s {height = a} :: SectionStyle)
+
+-- | The spacing between section content and its top, bottom, left, and right
+-- edges.
+--
+-- There is no padding by default.
+sectionStyle_padding :: Lens.Lens' SectionStyle (Prelude.Maybe Spacing)
+sectionStyle_padding = Lens.lens (\SectionStyle' {padding} -> padding) (\s@SectionStyle' {} a -> s {padding = a} :: SectionStyle)
+
+instance Data.FromJSON SectionStyle where
+  parseJSON =
+    Data.withObject
+      "SectionStyle"
+      ( \x ->
+          SectionStyle'
+            Prelude.<$> (x Data..:? "Height")
+            Prelude.<*> (x Data..:? "Padding")
+      )
+
+instance Prelude.Hashable SectionStyle where
+  hashWithSalt _salt SectionStyle' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` padding
+
+instance Prelude.NFData SectionStyle where
+  rnf SectionStyle' {..} =
+    Prelude.rnf height
+      `Prelude.seq` Prelude.rnf padding
+
+instance Data.ToJSON SectionStyle where
+  toJSON SectionStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Height" Data..=) Prelude.<$> height,
+            ("Padding" Data..=) Prelude.<$> padding
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SelectAllValueOptions.hs b/gen/Amazonka/QuickSight/Types/SelectAllValueOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SelectAllValueOptions.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.QuickSight.Types.SelectAllValueOptions
+-- 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.QuickSight.Types.SelectAllValueOptions
+  ( SelectAllValueOptions
+      ( ..,
+        SelectAllValueOptions_ALL_VALUES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SelectAllValueOptions = SelectAllValueOptions'
+  { fromSelectAllValueOptions ::
+      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 SelectAllValueOptions_ALL_VALUES :: SelectAllValueOptions
+pattern SelectAllValueOptions_ALL_VALUES = SelectAllValueOptions' "ALL_VALUES"
+
+{-# COMPLETE
+  SelectAllValueOptions_ALL_VALUES,
+  SelectAllValueOptions'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SelectedFieldOptions.hs b/gen/Amazonka/QuickSight/Types/SelectedFieldOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SelectedFieldOptions.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.QuickSight.Types.SelectedFieldOptions
+-- 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.QuickSight.Types.SelectedFieldOptions
+  ( SelectedFieldOptions
+      ( ..,
+        SelectedFieldOptions_ALL_FIELDS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SelectedFieldOptions = SelectedFieldOptions'
+  { fromSelectedFieldOptions ::
+      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 SelectedFieldOptions_ALL_FIELDS :: SelectedFieldOptions
+pattern SelectedFieldOptions_ALL_FIELDS = SelectedFieldOptions' "ALL_FIELDS"
+
+{-# COMPLETE
+  SelectedFieldOptions_ALL_FIELDS,
+  SelectedFieldOptions'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SelectedSheetsFilterScopeConfiguration.hs b/gen/Amazonka/QuickSight/Types/SelectedSheetsFilterScopeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SelectedSheetsFilterScopeConfiguration.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.QuickSight.Types.SelectedSheetsFilterScopeConfiguration
+-- 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.QuickSight.Types.SelectedSheetsFilterScopeConfiguration 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.QuickSight.Types.SheetVisualScopingConfiguration
+
+-- | The configuration for applying a filter to specific sheets or visuals.
+-- You can apply this filter to multiple visuals that are on one sheet or
+-- to all visuals on a sheet.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newSelectedSheetsFilterScopeConfiguration' smart constructor.
+data SelectedSheetsFilterScopeConfiguration = SelectedSheetsFilterScopeConfiguration'
+  { -- | The sheet ID and visual IDs of the sheet and visuals that the filter is
+    -- applied to.
+    sheetVisualScopingConfigurations :: Prelude.Maybe (Prelude.NonEmpty SheetVisualScopingConfiguration)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelectedSheetsFilterScopeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sheetVisualScopingConfigurations', 'selectedSheetsFilterScopeConfiguration_sheetVisualScopingConfigurations' - The sheet ID and visual IDs of the sheet and visuals that the filter is
+-- applied to.
+newSelectedSheetsFilterScopeConfiguration ::
+  SelectedSheetsFilterScopeConfiguration
+newSelectedSheetsFilterScopeConfiguration =
+  SelectedSheetsFilterScopeConfiguration'
+    { sheetVisualScopingConfigurations =
+        Prelude.Nothing
+    }
+
+-- | The sheet ID and visual IDs of the sheet and visuals that the filter is
+-- applied to.
+selectedSheetsFilterScopeConfiguration_sheetVisualScopingConfigurations :: Lens.Lens' SelectedSheetsFilterScopeConfiguration (Prelude.Maybe (Prelude.NonEmpty SheetVisualScopingConfiguration))
+selectedSheetsFilterScopeConfiguration_sheetVisualScopingConfigurations = Lens.lens (\SelectedSheetsFilterScopeConfiguration' {sheetVisualScopingConfigurations} -> sheetVisualScopingConfigurations) (\s@SelectedSheetsFilterScopeConfiguration' {} a -> s {sheetVisualScopingConfigurations = a} :: SelectedSheetsFilterScopeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    SelectedSheetsFilterScopeConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SelectedSheetsFilterScopeConfiguration"
+      ( \x ->
+          SelectedSheetsFilterScopeConfiguration'
+            Prelude.<$> (x Data..:? "SheetVisualScopingConfigurations")
+      )
+
+instance
+  Prelude.Hashable
+    SelectedSheetsFilterScopeConfiguration
+  where
+  hashWithSalt
+    _salt
+    SelectedSheetsFilterScopeConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` sheetVisualScopingConfigurations
+
+instance
+  Prelude.NFData
+    SelectedSheetsFilterScopeConfiguration
+  where
+  rnf SelectedSheetsFilterScopeConfiguration' {..} =
+    Prelude.rnf sheetVisualScopingConfigurations
+
+instance
+  Data.ToJSON
+    SelectedSheetsFilterScopeConfiguration
+  where
+  toJSON SelectedSheetsFilterScopeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SheetVisualScopingConfigurations" Data..=)
+              Prelude.<$> sheetVisualScopingConfigurations
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SelectedTooltipType.hs b/gen/Amazonka/QuickSight/Types/SelectedTooltipType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SelectedTooltipType.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.QuickSight.Types.SelectedTooltipType
+-- 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.QuickSight.Types.SelectedTooltipType
+  ( SelectedTooltipType
+      ( ..,
+        SelectedTooltipType_BASIC,
+        SelectedTooltipType_DETAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SelectedTooltipType = SelectedTooltipType'
+  { fromSelectedTooltipType ::
+      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 SelectedTooltipType_BASIC :: SelectedTooltipType
+pattern SelectedTooltipType_BASIC = SelectedTooltipType' "BASIC"
+
+pattern SelectedTooltipType_DETAILED :: SelectedTooltipType
+pattern SelectedTooltipType_DETAILED = SelectedTooltipType' "DETAILED"
+
+{-# COMPLETE
+  SelectedTooltipType_BASIC,
+  SelectedTooltipType_DETAILED,
+  SelectedTooltipType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SeriesItem.hs b/gen/Amazonka/QuickSight/Types/SeriesItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SeriesItem.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.QuickSight.Types.SeriesItem
+-- 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.QuickSight.Types.SeriesItem 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.QuickSight.Types.DataFieldSeriesItem
+import Amazonka.QuickSight.Types.FieldSeriesItem
+
+-- | The series item configuration of a line chart.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newSeriesItem' smart constructor.
+data SeriesItem = SeriesItem'
+  { -- | The data field series item configuration of a line chart.
+    dataFieldSeriesItem :: Prelude.Maybe DataFieldSeriesItem,
+    -- | The field series item configuration of a line chart.
+    fieldSeriesItem :: Prelude.Maybe FieldSeriesItem
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SeriesItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataFieldSeriesItem', 'seriesItem_dataFieldSeriesItem' - The data field series item configuration of a line chart.
+--
+-- 'fieldSeriesItem', 'seriesItem_fieldSeriesItem' - The field series item configuration of a line chart.
+newSeriesItem ::
+  SeriesItem
+newSeriesItem =
+  SeriesItem'
+    { dataFieldSeriesItem = Prelude.Nothing,
+      fieldSeriesItem = Prelude.Nothing
+    }
+
+-- | The data field series item configuration of a line chart.
+seriesItem_dataFieldSeriesItem :: Lens.Lens' SeriesItem (Prelude.Maybe DataFieldSeriesItem)
+seriesItem_dataFieldSeriesItem = Lens.lens (\SeriesItem' {dataFieldSeriesItem} -> dataFieldSeriesItem) (\s@SeriesItem' {} a -> s {dataFieldSeriesItem = a} :: SeriesItem)
+
+-- | The field series item configuration of a line chart.
+seriesItem_fieldSeriesItem :: Lens.Lens' SeriesItem (Prelude.Maybe FieldSeriesItem)
+seriesItem_fieldSeriesItem = Lens.lens (\SeriesItem' {fieldSeriesItem} -> fieldSeriesItem) (\s@SeriesItem' {} a -> s {fieldSeriesItem = a} :: SeriesItem)
+
+instance Data.FromJSON SeriesItem where
+  parseJSON =
+    Data.withObject
+      "SeriesItem"
+      ( \x ->
+          SeriesItem'
+            Prelude.<$> (x Data..:? "DataFieldSeriesItem")
+            Prelude.<*> (x Data..:? "FieldSeriesItem")
+      )
+
+instance Prelude.Hashable SeriesItem where
+  hashWithSalt _salt SeriesItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataFieldSeriesItem
+      `Prelude.hashWithSalt` fieldSeriesItem
+
+instance Prelude.NFData SeriesItem where
+  rnf SeriesItem' {..} =
+    Prelude.rnf dataFieldSeriesItem
+      `Prelude.seq` Prelude.rnf fieldSeriesItem
+
+instance Data.ToJSON SeriesItem where
+  toJSON SeriesItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataFieldSeriesItem" Data..=)
+              Prelude.<$> dataFieldSeriesItem,
+            ("FieldSeriesItem" Data..=)
+              Prelude.<$> fieldSeriesItem
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ServiceNowParameters.hs b/gen/Amazonka/QuickSight/Types/ServiceNowParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ServiceNowParameters.hs
@@ -0,0 +1,78 @@
+{-# 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.QuickSight.Types.ServiceNowParameters
+-- 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.QuickSight.Types.ServiceNowParameters 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 parameters for ServiceNow.
+--
+-- /See:/ 'newServiceNowParameters' smart constructor.
+data ServiceNowParameters = ServiceNowParameters'
+  { -- | URL of the base site.
+    siteBaseUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceNowParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteBaseUrl', 'serviceNowParameters_siteBaseUrl' - URL of the base site.
+newServiceNowParameters ::
+  -- | 'siteBaseUrl'
+  Prelude.Text ->
+  ServiceNowParameters
+newServiceNowParameters pSiteBaseUrl_ =
+  ServiceNowParameters' {siteBaseUrl = pSiteBaseUrl_}
+
+-- | URL of the base site.
+serviceNowParameters_siteBaseUrl :: Lens.Lens' ServiceNowParameters Prelude.Text
+serviceNowParameters_siteBaseUrl = Lens.lens (\ServiceNowParameters' {siteBaseUrl} -> siteBaseUrl) (\s@ServiceNowParameters' {} a -> s {siteBaseUrl = a} :: ServiceNowParameters)
+
+instance Data.FromJSON ServiceNowParameters where
+  parseJSON =
+    Data.withObject
+      "ServiceNowParameters"
+      ( \x ->
+          ServiceNowParameters'
+            Prelude.<$> (x Data..: "SiteBaseUrl")
+      )
+
+instance Prelude.Hashable ServiceNowParameters where
+  hashWithSalt _salt ServiceNowParameters' {..} =
+    _salt `Prelude.hashWithSalt` siteBaseUrl
+
+instance Prelude.NFData ServiceNowParameters where
+  rnf ServiceNowParameters' {..} =
+    Prelude.rnf siteBaseUrl
+
+instance Data.ToJSON ServiceNowParameters where
+  toJSON ServiceNowParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("SiteBaseUrl" Data..= siteBaseUrl)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SessionTag.hs b/gen/Amazonka/QuickSight/Types/SessionTag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SessionTag.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.QuickSight.Types.SessionTag
+-- 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.QuickSight.Types.SessionTag 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 key-value pair used for the row-level security tags feature.
+--
+-- /See:/ 'newSessionTag' smart constructor.
+data SessionTag = SessionTag'
+  { -- | The key for the tag.
+    key :: Prelude.Text,
+    -- | The value that you want to assign the tag.
+    value :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SessionTag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'sessionTag_key' - The key for the tag.
+--
+-- 'value', 'sessionTag_value' - The value that you want to assign the tag.
+newSessionTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  SessionTag
+newSessionTag pKey_ pValue_ =
+  SessionTag'
+    { key = pKey_,
+      value = Data._Sensitive Lens.# pValue_
+    }
+
+-- | The key for the tag.
+sessionTag_key :: Lens.Lens' SessionTag Prelude.Text
+sessionTag_key = Lens.lens (\SessionTag' {key} -> key) (\s@SessionTag' {} a -> s {key = a} :: SessionTag)
+
+-- | The value that you want to assign the tag.
+sessionTag_value :: Lens.Lens' SessionTag Prelude.Text
+sessionTag_value = Lens.lens (\SessionTag' {value} -> value) (\s@SessionTag' {} a -> s {value = a} :: SessionTag) Prelude.. Data._Sensitive
+
+instance Prelude.Hashable SessionTag where
+  hashWithSalt _salt SessionTag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData SessionTag where
+  rnf SessionTag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON SessionTag where
+  toJSON SessionTag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SetParameterValueConfiguration.hs b/gen/Amazonka/QuickSight/Types/SetParameterValueConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SetParameterValueConfiguration.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.SetParameterValueConfiguration
+-- 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.QuickSight.Types.SetParameterValueConfiguration 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.QuickSight.Types.DestinationParameterValueConfiguration
+
+-- | The configuration of adding parameters in action.
+--
+-- /See:/ 'newSetParameterValueConfiguration' smart constructor.
+data SetParameterValueConfiguration = SetParameterValueConfiguration'
+  { -- | The destination parameter name of the @SetParameterValueConfiguration@.
+    destinationParameterName :: Prelude.Text,
+    value :: DestinationParameterValueConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetParameterValueConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationParameterName', 'setParameterValueConfiguration_destinationParameterName' - The destination parameter name of the @SetParameterValueConfiguration@.
+--
+-- 'value', 'setParameterValueConfiguration_value' - Undocumented member.
+newSetParameterValueConfiguration ::
+  -- | 'destinationParameterName'
+  Prelude.Text ->
+  -- | 'value'
+  DestinationParameterValueConfiguration ->
+  SetParameterValueConfiguration
+newSetParameterValueConfiguration
+  pDestinationParameterName_
+  pValue_ =
+    SetParameterValueConfiguration'
+      { destinationParameterName =
+          pDestinationParameterName_,
+        value = pValue_
+      }
+
+-- | The destination parameter name of the @SetParameterValueConfiguration@.
+setParameterValueConfiguration_destinationParameterName :: Lens.Lens' SetParameterValueConfiguration Prelude.Text
+setParameterValueConfiguration_destinationParameterName = Lens.lens (\SetParameterValueConfiguration' {destinationParameterName} -> destinationParameterName) (\s@SetParameterValueConfiguration' {} a -> s {destinationParameterName = a} :: SetParameterValueConfiguration)
+
+-- | Undocumented member.
+setParameterValueConfiguration_value :: Lens.Lens' SetParameterValueConfiguration DestinationParameterValueConfiguration
+setParameterValueConfiguration_value = Lens.lens (\SetParameterValueConfiguration' {value} -> value) (\s@SetParameterValueConfiguration' {} a -> s {value = a} :: SetParameterValueConfiguration)
+
+instance Data.FromJSON SetParameterValueConfiguration where
+  parseJSON =
+    Data.withObject
+      "SetParameterValueConfiguration"
+      ( \x ->
+          SetParameterValueConfiguration'
+            Prelude.<$> (x Data..: "DestinationParameterName")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance
+  Prelude.Hashable
+    SetParameterValueConfiguration
+  where
+  hashWithSalt
+    _salt
+    SetParameterValueConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` destinationParameterName
+        `Prelude.hashWithSalt` value
+
+instance
+  Prelude.NFData
+    SetParameterValueConfiguration
+  where
+  rnf SetParameterValueConfiguration' {..} =
+    Prelude.rnf destinationParameterName
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON SetParameterValueConfiguration where
+  toJSON SetParameterValueConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "DestinationParameterName"
+                  Data..= destinationParameterName
+              ),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ShapeConditionalFormat.hs b/gen/Amazonka/QuickSight/Types/ShapeConditionalFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ShapeConditionalFormat.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.QuickSight.Types.ShapeConditionalFormat
+-- 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.QuickSight.Types.ShapeConditionalFormat 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.QuickSight.Types.ConditionalFormattingColor
+
+-- | The shape conditional formatting of a filled map visual.
+--
+-- /See:/ 'newShapeConditionalFormat' smart constructor.
+data ShapeConditionalFormat = ShapeConditionalFormat'
+  { -- | The conditional formatting for the shape background color of a filled
+    -- map visual.
+    backgroundColor :: ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShapeConditionalFormat' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backgroundColor', 'shapeConditionalFormat_backgroundColor' - The conditional formatting for the shape background color of a filled
+-- map visual.
+newShapeConditionalFormat ::
+  -- | 'backgroundColor'
+  ConditionalFormattingColor ->
+  ShapeConditionalFormat
+newShapeConditionalFormat pBackgroundColor_ =
+  ShapeConditionalFormat'
+    { backgroundColor =
+        pBackgroundColor_
+    }
+
+-- | The conditional formatting for the shape background color of a filled
+-- map visual.
+shapeConditionalFormat_backgroundColor :: Lens.Lens' ShapeConditionalFormat ConditionalFormattingColor
+shapeConditionalFormat_backgroundColor = Lens.lens (\ShapeConditionalFormat' {backgroundColor} -> backgroundColor) (\s@ShapeConditionalFormat' {} a -> s {backgroundColor = a} :: ShapeConditionalFormat)
+
+instance Data.FromJSON ShapeConditionalFormat where
+  parseJSON =
+    Data.withObject
+      "ShapeConditionalFormat"
+      ( \x ->
+          ShapeConditionalFormat'
+            Prelude.<$> (x Data..: "BackgroundColor")
+      )
+
+instance Prelude.Hashable ShapeConditionalFormat where
+  hashWithSalt _salt ShapeConditionalFormat' {..} =
+    _salt `Prelude.hashWithSalt` backgroundColor
+
+instance Prelude.NFData ShapeConditionalFormat where
+  rnf ShapeConditionalFormat' {..} =
+    Prelude.rnf backgroundColor
+
+instance Data.ToJSON ShapeConditionalFormat where
+  toJSON ShapeConditionalFormat' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("BackgroundColor" Data..= backgroundColor)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Sheet.hs b/gen/Amazonka/QuickSight/Types/Sheet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Sheet.hs
@@ -0,0 +1,91 @@
+{-# 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.QuickSight.Types.Sheet
+-- 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.QuickSight.Types.Sheet 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 /sheet/, which is an object that contains a set of visuals that are
+-- viewed together on one page in Amazon QuickSight. Every analysis and
+-- dashboard contains at least one sheet. Each sheet contains at least one
+-- visualization widget, for example a chart, pivot table, or narrative
+-- insight. Sheets can be associated with other components, such as
+-- controls, filters, and so on.
+--
+-- /See:/ 'newSheet' smart constructor.
+data Sheet = Sheet'
+  { -- | The name of a sheet. This name is displayed on the sheet\'s tab in the
+    -- Amazon QuickSight console.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier associated with a sheet.
+    sheetId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Sheet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'sheet_name' - The name of a sheet. This name is displayed on the sheet\'s tab in the
+-- Amazon QuickSight console.
+--
+-- 'sheetId', 'sheet_sheetId' - The unique identifier associated with a sheet.
+newSheet ::
+  Sheet
+newSheet =
+  Sheet'
+    { name = Prelude.Nothing,
+      sheetId = Prelude.Nothing
+    }
+
+-- | The name of a sheet. This name is displayed on the sheet\'s tab in the
+-- Amazon QuickSight console.
+sheet_name :: Lens.Lens' Sheet (Prelude.Maybe Prelude.Text)
+sheet_name = Lens.lens (\Sheet' {name} -> name) (\s@Sheet' {} a -> s {name = a} :: Sheet)
+
+-- | The unique identifier associated with a sheet.
+sheet_sheetId :: Lens.Lens' Sheet (Prelude.Maybe Prelude.Text)
+sheet_sheetId = Lens.lens (\Sheet' {sheetId} -> sheetId) (\s@Sheet' {} a -> s {sheetId = a} :: Sheet)
+
+instance Data.FromJSON Sheet where
+  parseJSON =
+    Data.withObject
+      "Sheet"
+      ( \x ->
+          Sheet'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "SheetId")
+      )
+
+instance Prelude.Hashable Sheet where
+  hashWithSalt _salt Sheet' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sheetId
+
+instance Prelude.NFData Sheet where
+  rnf Sheet' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf sheetId
diff --git a/gen/Amazonka/QuickSight/Types/SheetContentType.hs b/gen/Amazonka/QuickSight/Types/SheetContentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetContentType.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.QuickSight.Types.SheetContentType
+-- 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.QuickSight.Types.SheetContentType
+  ( SheetContentType
+      ( ..,
+        SheetContentType_INTERACTIVE,
+        SheetContentType_PAGINATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SheetContentType = SheetContentType'
+  { fromSheetContentType ::
+      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 SheetContentType_INTERACTIVE :: SheetContentType
+pattern SheetContentType_INTERACTIVE = SheetContentType' "INTERACTIVE"
+
+pattern SheetContentType_PAGINATED :: SheetContentType
+pattern SheetContentType_PAGINATED = SheetContentType' "PAGINATED"
+
+{-# COMPLETE
+  SheetContentType_INTERACTIVE,
+  SheetContentType_PAGINATED,
+  SheetContentType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SheetControlDateTimePickerType.hs b/gen/Amazonka/QuickSight/Types/SheetControlDateTimePickerType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetControlDateTimePickerType.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.QuickSight.Types.SheetControlDateTimePickerType
+-- 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.QuickSight.Types.SheetControlDateTimePickerType
+  ( SheetControlDateTimePickerType
+      ( ..,
+        SheetControlDateTimePickerType_DATE_RANGE,
+        SheetControlDateTimePickerType_SINGLE_VALUED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SheetControlDateTimePickerType = SheetControlDateTimePickerType'
+  { fromSheetControlDateTimePickerType ::
+      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 SheetControlDateTimePickerType_DATE_RANGE :: SheetControlDateTimePickerType
+pattern SheetControlDateTimePickerType_DATE_RANGE = SheetControlDateTimePickerType' "DATE_RANGE"
+
+pattern SheetControlDateTimePickerType_SINGLE_VALUED :: SheetControlDateTimePickerType
+pattern SheetControlDateTimePickerType_SINGLE_VALUED = SheetControlDateTimePickerType' "SINGLE_VALUED"
+
+{-# COMPLETE
+  SheetControlDateTimePickerType_DATE_RANGE,
+  SheetControlDateTimePickerType_SINGLE_VALUED,
+  SheetControlDateTimePickerType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SheetControlLayout.hs b/gen/Amazonka/QuickSight/Types/SheetControlLayout.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetControlLayout.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.QuickSight.Types.SheetControlLayout
+-- 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.QuickSight.Types.SheetControlLayout 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.QuickSight.Types.SheetControlLayoutConfiguration
+
+-- | A grid layout to define the placement of sheet control.
+--
+-- /See:/ 'newSheetControlLayout' smart constructor.
+data SheetControlLayout = SheetControlLayout'
+  { -- | The configuration that determines the elements and canvas size options
+    -- of sheet control.
+    configuration :: SheetControlLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetControlLayout' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configuration', 'sheetControlLayout_configuration' - The configuration that determines the elements and canvas size options
+-- of sheet control.
+newSheetControlLayout ::
+  -- | 'configuration'
+  SheetControlLayoutConfiguration ->
+  SheetControlLayout
+newSheetControlLayout pConfiguration_ =
+  SheetControlLayout'
+    { configuration =
+        pConfiguration_
+    }
+
+-- | The configuration that determines the elements and canvas size options
+-- of sheet control.
+sheetControlLayout_configuration :: Lens.Lens' SheetControlLayout SheetControlLayoutConfiguration
+sheetControlLayout_configuration = Lens.lens (\SheetControlLayout' {configuration} -> configuration) (\s@SheetControlLayout' {} a -> s {configuration = a} :: SheetControlLayout)
+
+instance Data.FromJSON SheetControlLayout where
+  parseJSON =
+    Data.withObject
+      "SheetControlLayout"
+      ( \x ->
+          SheetControlLayout'
+            Prelude.<$> (x Data..: "Configuration")
+      )
+
+instance Prelude.Hashable SheetControlLayout where
+  hashWithSalt _salt SheetControlLayout' {..} =
+    _salt `Prelude.hashWithSalt` configuration
+
+instance Prelude.NFData SheetControlLayout where
+  rnf SheetControlLayout' {..} =
+    Prelude.rnf configuration
+
+instance Data.ToJSON SheetControlLayout where
+  toJSON SheetControlLayout' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("Configuration" Data..= configuration)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetControlLayoutConfiguration.hs b/gen/Amazonka/QuickSight/Types/SheetControlLayoutConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetControlLayoutConfiguration.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.SheetControlLayoutConfiguration
+-- 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.QuickSight.Types.SheetControlLayoutConfiguration 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.QuickSight.Types.GridLayoutConfiguration
+
+-- | The configuration that determines the elements and canvas size options
+-- of sheet control.
+--
+-- /See:/ 'newSheetControlLayoutConfiguration' smart constructor.
+data SheetControlLayoutConfiguration = SheetControlLayoutConfiguration'
+  { -- | The configuration that determines the elements and canvas size options
+    -- of sheet control.
+    gridLayout :: Prelude.Maybe GridLayoutConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetControlLayoutConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'gridLayout', 'sheetControlLayoutConfiguration_gridLayout' - The configuration that determines the elements and canvas size options
+-- of sheet control.
+newSheetControlLayoutConfiguration ::
+  SheetControlLayoutConfiguration
+newSheetControlLayoutConfiguration =
+  SheetControlLayoutConfiguration'
+    { gridLayout =
+        Prelude.Nothing
+    }
+
+-- | The configuration that determines the elements and canvas size options
+-- of sheet control.
+sheetControlLayoutConfiguration_gridLayout :: Lens.Lens' SheetControlLayoutConfiguration (Prelude.Maybe GridLayoutConfiguration)
+sheetControlLayoutConfiguration_gridLayout = Lens.lens (\SheetControlLayoutConfiguration' {gridLayout} -> gridLayout) (\s@SheetControlLayoutConfiguration' {} a -> s {gridLayout = a} :: SheetControlLayoutConfiguration)
+
+instance
+  Data.FromJSON
+    SheetControlLayoutConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SheetControlLayoutConfiguration"
+      ( \x ->
+          SheetControlLayoutConfiguration'
+            Prelude.<$> (x Data..:? "GridLayout")
+      )
+
+instance
+  Prelude.Hashable
+    SheetControlLayoutConfiguration
+  where
+  hashWithSalt
+    _salt
+    SheetControlLayoutConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` gridLayout
+
+instance
+  Prelude.NFData
+    SheetControlLayoutConfiguration
+  where
+  rnf SheetControlLayoutConfiguration' {..} =
+    Prelude.rnf gridLayout
+
+instance Data.ToJSON SheetControlLayoutConfiguration where
+  toJSON SheetControlLayoutConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("GridLayout" Data..=) Prelude.<$> gridLayout]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetControlListType.hs b/gen/Amazonka/QuickSight/Types/SheetControlListType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetControlListType.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.QuickSight.Types.SheetControlListType
+-- 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.QuickSight.Types.SheetControlListType
+  ( SheetControlListType
+      ( ..,
+        SheetControlListType_MULTI_SELECT,
+        SheetControlListType_SINGLE_SELECT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SheetControlListType = SheetControlListType'
+  { fromSheetControlListType ::
+      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 SheetControlListType_MULTI_SELECT :: SheetControlListType
+pattern SheetControlListType_MULTI_SELECT = SheetControlListType' "MULTI_SELECT"
+
+pattern SheetControlListType_SINGLE_SELECT :: SheetControlListType
+pattern SheetControlListType_SINGLE_SELECT = SheetControlListType' "SINGLE_SELECT"
+
+{-# COMPLETE
+  SheetControlListType_MULTI_SELECT,
+  SheetControlListType_SINGLE_SELECT,
+  SheetControlListType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SheetControlSliderType.hs b/gen/Amazonka/QuickSight/Types/SheetControlSliderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetControlSliderType.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.QuickSight.Types.SheetControlSliderType
+-- 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.QuickSight.Types.SheetControlSliderType
+  ( SheetControlSliderType
+      ( ..,
+        SheetControlSliderType_RANGE,
+        SheetControlSliderType_SINGLE_POINT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SheetControlSliderType = SheetControlSliderType'
+  { fromSheetControlSliderType ::
+      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 SheetControlSliderType_RANGE :: SheetControlSliderType
+pattern SheetControlSliderType_RANGE = SheetControlSliderType' "RANGE"
+
+pattern SheetControlSliderType_SINGLE_POINT :: SheetControlSliderType
+pattern SheetControlSliderType_SINGLE_POINT = SheetControlSliderType' "SINGLE_POINT"
+
+{-# COMPLETE
+  SheetControlSliderType_RANGE,
+  SheetControlSliderType_SINGLE_POINT,
+  SheetControlSliderType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SheetControlsOption.hs b/gen/Amazonka/QuickSight/Types/SheetControlsOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetControlsOption.hs
@@ -0,0 +1,73 @@
+{-# 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.QuickSight.Types.SheetControlsOption
+-- 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.QuickSight.Types.SheetControlsOption 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.QuickSight.Types.DashboardUIState
+
+-- | Sheet controls option.
+--
+-- /See:/ 'newSheetControlsOption' smart constructor.
+data SheetControlsOption = SheetControlsOption'
+  { -- | Visibility state.
+    visibilityState :: Prelude.Maybe DashboardUIState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetControlsOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibilityState', 'sheetControlsOption_visibilityState' - Visibility state.
+newSheetControlsOption ::
+  SheetControlsOption
+newSheetControlsOption =
+  SheetControlsOption'
+    { visibilityState =
+        Prelude.Nothing
+    }
+
+-- | Visibility state.
+sheetControlsOption_visibilityState :: Lens.Lens' SheetControlsOption (Prelude.Maybe DashboardUIState)
+sheetControlsOption_visibilityState = Lens.lens (\SheetControlsOption' {visibilityState} -> visibilityState) (\s@SheetControlsOption' {} a -> s {visibilityState = a} :: SheetControlsOption)
+
+instance Prelude.Hashable SheetControlsOption where
+  hashWithSalt _salt SheetControlsOption' {..} =
+    _salt `Prelude.hashWithSalt` visibilityState
+
+instance Prelude.NFData SheetControlsOption where
+  rnf SheetControlsOption' {..} =
+    Prelude.rnf visibilityState
+
+instance Data.ToJSON SheetControlsOption where
+  toJSON SheetControlsOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VisibilityState" Data..=)
+              Prelude.<$> visibilityState
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetDefinition.hs b/gen/Amazonka/QuickSight/Types/SheetDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetDefinition.hs
@@ -0,0 +1,287 @@
+{-# 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.QuickSight.Types.SheetDefinition
+-- 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.QuickSight.Types.SheetDefinition 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.QuickSight.Types.FilterControl
+import Amazonka.QuickSight.Types.Layout
+import Amazonka.QuickSight.Types.ParameterControl
+import Amazonka.QuickSight.Types.SheetContentType
+import Amazonka.QuickSight.Types.SheetControlLayout
+import Amazonka.QuickSight.Types.SheetTextBox
+import Amazonka.QuickSight.Types.Visual
+
+-- | A sheet is an object that contains a set of visuals that are viewed
+-- together on one page in a paginated report. Every analysis and dashboard
+-- must contain at least one sheet.
+--
+-- /See:/ 'newSheetDefinition' smart constructor.
+data SheetDefinition = SheetDefinition'
+  { -- | The layout content type of the sheet. Choose one of the following
+    -- options:
+    --
+    -- -   @PAGINATED@: Creates a sheet for a paginated report.
+    --
+    -- -   @INTERACTIVE@: Creates a sheet for an interactive dashboard.
+    contentType :: Prelude.Maybe SheetContentType,
+    -- | A description of the sheet.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The list of filter controls that are on a sheet.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/filter-controls.html Adding filter controls to analysis sheets>
+    -- in the /Amazon QuickSight User Guide/.
+    filterControls :: Prelude.Maybe [FilterControl],
+    -- | Layouts define how the components of a sheet are arranged.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/types-of-layout.html Types of layout>
+    -- in the /Amazon QuickSight User Guide/.
+    layouts :: Prelude.Maybe (Prelude.NonEmpty Layout),
+    -- | The name of the sheet. This name is displayed on the sheet\'s tab in the
+    -- Amazon QuickSight console.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The list of parameter controls that are on a sheet.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-controls.html Using a Control with a Parameter in Amazon QuickSight>
+    -- in the /Amazon QuickSight User Guide/.
+    parameterControls :: Prelude.Maybe [ParameterControl],
+    -- | The control layouts of the sheet.
+    sheetControlLayouts :: Prelude.Maybe [SheetControlLayout],
+    -- | The text boxes that are on a sheet.
+    textBoxes :: Prelude.Maybe [SheetTextBox],
+    -- | The title of the sheet.
+    title :: Prelude.Maybe Prelude.Text,
+    -- | A list of the visuals that are on a sheet. Visual placement is
+    -- determined by the layout of the sheet.
+    visuals :: Prelude.Maybe [Visual],
+    -- | The unique identifier of a sheet.
+    sheetId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'contentType', 'sheetDefinition_contentType' - The layout content type of the sheet. Choose one of the following
+-- options:
+--
+-- -   @PAGINATED@: Creates a sheet for a paginated report.
+--
+-- -   @INTERACTIVE@: Creates a sheet for an interactive dashboard.
+--
+-- 'description', 'sheetDefinition_description' - A description of the sheet.
+--
+-- 'filterControls', 'sheetDefinition_filterControls' - The list of filter controls that are on a sheet.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filter-controls.html Adding filter controls to analysis sheets>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'layouts', 'sheetDefinition_layouts' - Layouts define how the components of a sheet are arranged.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/types-of-layout.html Types of layout>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'name', 'sheetDefinition_name' - The name of the sheet. This name is displayed on the sheet\'s tab in the
+-- Amazon QuickSight console.
+--
+-- 'parameterControls', 'sheetDefinition_parameterControls' - The list of parameter controls that are on a sheet.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-controls.html Using a Control with a Parameter in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'sheetControlLayouts', 'sheetDefinition_sheetControlLayouts' - The control layouts of the sheet.
+--
+-- 'textBoxes', 'sheetDefinition_textBoxes' - The text boxes that are on a sheet.
+--
+-- 'title', 'sheetDefinition_title' - The title of the sheet.
+--
+-- 'visuals', 'sheetDefinition_visuals' - A list of the visuals that are on a sheet. Visual placement is
+-- determined by the layout of the sheet.
+--
+-- 'sheetId', 'sheetDefinition_sheetId' - The unique identifier of a sheet.
+newSheetDefinition ::
+  -- | 'sheetId'
+  Prelude.Text ->
+  SheetDefinition
+newSheetDefinition pSheetId_ =
+  SheetDefinition'
+    { contentType = Prelude.Nothing,
+      description = Prelude.Nothing,
+      filterControls = Prelude.Nothing,
+      layouts = Prelude.Nothing,
+      name = Prelude.Nothing,
+      parameterControls = Prelude.Nothing,
+      sheetControlLayouts = Prelude.Nothing,
+      textBoxes = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visuals = Prelude.Nothing,
+      sheetId = pSheetId_
+    }
+
+-- | The layout content type of the sheet. Choose one of the following
+-- options:
+--
+-- -   @PAGINATED@: Creates a sheet for a paginated report.
+--
+-- -   @INTERACTIVE@: Creates a sheet for an interactive dashboard.
+sheetDefinition_contentType :: Lens.Lens' SheetDefinition (Prelude.Maybe SheetContentType)
+sheetDefinition_contentType = Lens.lens (\SheetDefinition' {contentType} -> contentType) (\s@SheetDefinition' {} a -> s {contentType = a} :: SheetDefinition)
+
+-- | A description of the sheet.
+sheetDefinition_description :: Lens.Lens' SheetDefinition (Prelude.Maybe Prelude.Text)
+sheetDefinition_description = Lens.lens (\SheetDefinition' {description} -> description) (\s@SheetDefinition' {} a -> s {description = a} :: SheetDefinition)
+
+-- | The list of filter controls that are on a sheet.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filter-controls.html Adding filter controls to analysis sheets>
+-- in the /Amazon QuickSight User Guide/.
+sheetDefinition_filterControls :: Lens.Lens' SheetDefinition (Prelude.Maybe [FilterControl])
+sheetDefinition_filterControls = Lens.lens (\SheetDefinition' {filterControls} -> filterControls) (\s@SheetDefinition' {} a -> s {filterControls = a} :: SheetDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Layouts define how the components of a sheet are arranged.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/types-of-layout.html Types of layout>
+-- in the /Amazon QuickSight User Guide/.
+sheetDefinition_layouts :: Lens.Lens' SheetDefinition (Prelude.Maybe (Prelude.NonEmpty Layout))
+sheetDefinition_layouts = Lens.lens (\SheetDefinition' {layouts} -> layouts) (\s@SheetDefinition' {} a -> s {layouts = a} :: SheetDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the sheet. This name is displayed on the sheet\'s tab in the
+-- Amazon QuickSight console.
+sheetDefinition_name :: Lens.Lens' SheetDefinition (Prelude.Maybe Prelude.Text)
+sheetDefinition_name = Lens.lens (\SheetDefinition' {name} -> name) (\s@SheetDefinition' {} a -> s {name = a} :: SheetDefinition)
+
+-- | The list of parameter controls that are on a sheet.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-controls.html Using a Control with a Parameter in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+sheetDefinition_parameterControls :: Lens.Lens' SheetDefinition (Prelude.Maybe [ParameterControl])
+sheetDefinition_parameterControls = Lens.lens (\SheetDefinition' {parameterControls} -> parameterControls) (\s@SheetDefinition' {} a -> s {parameterControls = a} :: SheetDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The control layouts of the sheet.
+sheetDefinition_sheetControlLayouts :: Lens.Lens' SheetDefinition (Prelude.Maybe [SheetControlLayout])
+sheetDefinition_sheetControlLayouts = Lens.lens (\SheetDefinition' {sheetControlLayouts} -> sheetControlLayouts) (\s@SheetDefinition' {} a -> s {sheetControlLayouts = a} :: SheetDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The text boxes that are on a sheet.
+sheetDefinition_textBoxes :: Lens.Lens' SheetDefinition (Prelude.Maybe [SheetTextBox])
+sheetDefinition_textBoxes = Lens.lens (\SheetDefinition' {textBoxes} -> textBoxes) (\s@SheetDefinition' {} a -> s {textBoxes = a} :: SheetDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The title of the sheet.
+sheetDefinition_title :: Lens.Lens' SheetDefinition (Prelude.Maybe Prelude.Text)
+sheetDefinition_title = Lens.lens (\SheetDefinition' {title} -> title) (\s@SheetDefinition' {} a -> s {title = a} :: SheetDefinition)
+
+-- | A list of the visuals that are on a sheet. Visual placement is
+-- determined by the layout of the sheet.
+sheetDefinition_visuals :: Lens.Lens' SheetDefinition (Prelude.Maybe [Visual])
+sheetDefinition_visuals = Lens.lens (\SheetDefinition' {visuals} -> visuals) (\s@SheetDefinition' {} a -> s {visuals = a} :: SheetDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique identifier of a sheet.
+sheetDefinition_sheetId :: Lens.Lens' SheetDefinition Prelude.Text
+sheetDefinition_sheetId = Lens.lens (\SheetDefinition' {sheetId} -> sheetId) (\s@SheetDefinition' {} a -> s {sheetId = a} :: SheetDefinition)
+
+instance Data.FromJSON SheetDefinition where
+  parseJSON =
+    Data.withObject
+      "SheetDefinition"
+      ( \x ->
+          SheetDefinition'
+            Prelude.<$> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "FilterControls" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Layouts")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> ( x
+                            Data..:? "ParameterControls"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SheetControlLayouts"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "TextBoxes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..:? "Visuals" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "SheetId")
+      )
+
+instance Prelude.Hashable SheetDefinition where
+  hashWithSalt _salt SheetDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` filterControls
+      `Prelude.hashWithSalt` layouts
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parameterControls
+      `Prelude.hashWithSalt` sheetControlLayouts
+      `Prelude.hashWithSalt` textBoxes
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visuals
+      `Prelude.hashWithSalt` sheetId
+
+instance Prelude.NFData SheetDefinition where
+  rnf SheetDefinition' {..} =
+    Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf filterControls
+      `Prelude.seq` Prelude.rnf layouts
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parameterControls
+      `Prelude.seq` Prelude.rnf sheetControlLayouts
+      `Prelude.seq` Prelude.rnf textBoxes
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visuals
+      `Prelude.seq` Prelude.rnf sheetId
+
+instance Data.ToJSON SheetDefinition where
+  toJSON SheetDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentType" Data..=) Prelude.<$> contentType,
+            ("Description" Data..=) Prelude.<$> description,
+            ("FilterControls" Data..=)
+              Prelude.<$> filterControls,
+            ("Layouts" Data..=) Prelude.<$> layouts,
+            ("Name" Data..=) Prelude.<$> name,
+            ("ParameterControls" Data..=)
+              Prelude.<$> parameterControls,
+            ("SheetControlLayouts" Data..=)
+              Prelude.<$> sheetControlLayouts,
+            ("TextBoxes" Data..=) Prelude.<$> textBoxes,
+            ("Title" Data..=) Prelude.<$> title,
+            ("Visuals" Data..=) Prelude.<$> visuals,
+            Prelude.Just ("SheetId" Data..= sheetId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetElementConfigurationOverrides.hs b/gen/Amazonka/QuickSight/Types/SheetElementConfigurationOverrides.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetElementConfigurationOverrides.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SheetElementConfigurationOverrides
+-- 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.QuickSight.Types.SheetElementConfigurationOverrides 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.QuickSight.Types.Visibility
+
+-- | The override configuration of the rendering rules of a sheet.
+--
+-- /See:/ 'newSheetElementConfigurationOverrides' smart constructor.
+data SheetElementConfigurationOverrides = SheetElementConfigurationOverrides'
+  { -- | Determines whether or not the overrides are visible. Choose one of the
+    -- following options:
+    --
+    -- -   @VISIBLE@
+    --
+    -- -   @HIDDEN@
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetElementConfigurationOverrides' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'sheetElementConfigurationOverrides_visibility' - Determines whether or not the overrides are visible. Choose one of the
+-- following options:
+--
+-- -   @VISIBLE@
+--
+-- -   @HIDDEN@
+newSheetElementConfigurationOverrides ::
+  SheetElementConfigurationOverrides
+newSheetElementConfigurationOverrides =
+  SheetElementConfigurationOverrides'
+    { visibility =
+        Prelude.Nothing
+    }
+
+-- | Determines whether or not the overrides are visible. Choose one of the
+-- following options:
+--
+-- -   @VISIBLE@
+--
+-- -   @HIDDEN@
+sheetElementConfigurationOverrides_visibility :: Lens.Lens' SheetElementConfigurationOverrides (Prelude.Maybe Visibility)
+sheetElementConfigurationOverrides_visibility = Lens.lens (\SheetElementConfigurationOverrides' {visibility} -> visibility) (\s@SheetElementConfigurationOverrides' {} a -> s {visibility = a} :: SheetElementConfigurationOverrides)
+
+instance
+  Data.FromJSON
+    SheetElementConfigurationOverrides
+  where
+  parseJSON =
+    Data.withObject
+      "SheetElementConfigurationOverrides"
+      ( \x ->
+          SheetElementConfigurationOverrides'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance
+  Prelude.Hashable
+    SheetElementConfigurationOverrides
+  where
+  hashWithSalt
+    _salt
+    SheetElementConfigurationOverrides' {..} =
+      _salt `Prelude.hashWithSalt` visibility
+
+instance
+  Prelude.NFData
+    SheetElementConfigurationOverrides
+  where
+  rnf SheetElementConfigurationOverrides' {..} =
+    Prelude.rnf visibility
+
+instance
+  Data.ToJSON
+    SheetElementConfigurationOverrides
+  where
+  toJSON SheetElementConfigurationOverrides' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetElementRenderingRule.hs b/gen/Amazonka/QuickSight/Types/SheetElementRenderingRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetElementRenderingRule.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.QuickSight.Types.SheetElementRenderingRule
+-- 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.QuickSight.Types.SheetElementRenderingRule 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.QuickSight.Types.SheetElementConfigurationOverrides
+
+-- | The rendering rules of a sheet that uses a free-form layout.
+--
+-- /See:/ 'newSheetElementRenderingRule' smart constructor.
+data SheetElementRenderingRule = SheetElementRenderingRule'
+  { -- | The expression of the rendering rules of a sheet.
+    expression :: Data.Sensitive Prelude.Text,
+    -- | The override configuration of the rendering rules of a sheet.
+    configurationOverrides :: SheetElementConfigurationOverrides
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetElementRenderingRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'expression', 'sheetElementRenderingRule_expression' - The expression of the rendering rules of a sheet.
+--
+-- 'configurationOverrides', 'sheetElementRenderingRule_configurationOverrides' - The override configuration of the rendering rules of a sheet.
+newSheetElementRenderingRule ::
+  -- | 'expression'
+  Prelude.Text ->
+  -- | 'configurationOverrides'
+  SheetElementConfigurationOverrides ->
+  SheetElementRenderingRule
+newSheetElementRenderingRule
+  pExpression_
+  pConfigurationOverrides_ =
+    SheetElementRenderingRule'
+      { expression =
+          Data._Sensitive Lens.# pExpression_,
+        configurationOverrides =
+          pConfigurationOverrides_
+      }
+
+-- | The expression of the rendering rules of a sheet.
+sheetElementRenderingRule_expression :: Lens.Lens' SheetElementRenderingRule Prelude.Text
+sheetElementRenderingRule_expression = Lens.lens (\SheetElementRenderingRule' {expression} -> expression) (\s@SheetElementRenderingRule' {} a -> s {expression = a} :: SheetElementRenderingRule) Prelude.. Data._Sensitive
+
+-- | The override configuration of the rendering rules of a sheet.
+sheetElementRenderingRule_configurationOverrides :: Lens.Lens' SheetElementRenderingRule SheetElementConfigurationOverrides
+sheetElementRenderingRule_configurationOverrides = Lens.lens (\SheetElementRenderingRule' {configurationOverrides} -> configurationOverrides) (\s@SheetElementRenderingRule' {} a -> s {configurationOverrides = a} :: SheetElementRenderingRule)
+
+instance Data.FromJSON SheetElementRenderingRule where
+  parseJSON =
+    Data.withObject
+      "SheetElementRenderingRule"
+      ( \x ->
+          SheetElementRenderingRule'
+            Prelude.<$> (x Data..: "Expression")
+            Prelude.<*> (x Data..: "ConfigurationOverrides")
+      )
+
+instance Prelude.Hashable SheetElementRenderingRule where
+  hashWithSalt _salt SheetElementRenderingRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` expression
+      `Prelude.hashWithSalt` configurationOverrides
+
+instance Prelude.NFData SheetElementRenderingRule where
+  rnf SheetElementRenderingRule' {..} =
+    Prelude.rnf expression
+      `Prelude.seq` Prelude.rnf configurationOverrides
+
+instance Data.ToJSON SheetElementRenderingRule where
+  toJSON SheetElementRenderingRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Expression" Data..= expression),
+            Prelude.Just
+              ( "ConfigurationOverrides"
+                  Data..= configurationOverrides
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetStyle.hs b/gen/Amazonka/QuickSight/Types/SheetStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetStyle.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.SheetStyle
+-- 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.QuickSight.Types.SheetStyle 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.QuickSight.Types.TileLayoutStyle
+import Amazonka.QuickSight.Types.TileStyle
+
+-- | The theme display options for sheets.
+--
+-- /See:/ 'newSheetStyle' smart constructor.
+data SheetStyle = SheetStyle'
+  { -- | The display options for tiles.
+    tile :: Prelude.Maybe TileStyle,
+    -- | The layout options for tiles.
+    tileLayout :: Prelude.Maybe TileLayoutStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tile', 'sheetStyle_tile' - The display options for tiles.
+--
+-- 'tileLayout', 'sheetStyle_tileLayout' - The layout options for tiles.
+newSheetStyle ::
+  SheetStyle
+newSheetStyle =
+  SheetStyle'
+    { tile = Prelude.Nothing,
+      tileLayout = Prelude.Nothing
+    }
+
+-- | The display options for tiles.
+sheetStyle_tile :: Lens.Lens' SheetStyle (Prelude.Maybe TileStyle)
+sheetStyle_tile = Lens.lens (\SheetStyle' {tile} -> tile) (\s@SheetStyle' {} a -> s {tile = a} :: SheetStyle)
+
+-- | The layout options for tiles.
+sheetStyle_tileLayout :: Lens.Lens' SheetStyle (Prelude.Maybe TileLayoutStyle)
+sheetStyle_tileLayout = Lens.lens (\SheetStyle' {tileLayout} -> tileLayout) (\s@SheetStyle' {} a -> s {tileLayout = a} :: SheetStyle)
+
+instance Data.FromJSON SheetStyle where
+  parseJSON =
+    Data.withObject
+      "SheetStyle"
+      ( \x ->
+          SheetStyle'
+            Prelude.<$> (x Data..:? "Tile")
+            Prelude.<*> (x Data..:? "TileLayout")
+      )
+
+instance Prelude.Hashable SheetStyle where
+  hashWithSalt _salt SheetStyle' {..} =
+    _salt
+      `Prelude.hashWithSalt` tile
+      `Prelude.hashWithSalt` tileLayout
+
+instance Prelude.NFData SheetStyle where
+  rnf SheetStyle' {..} =
+    Prelude.rnf tile
+      `Prelude.seq` Prelude.rnf tileLayout
+
+instance Data.ToJSON SheetStyle where
+  toJSON SheetStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tile" Data..=) Prelude.<$> tile,
+            ("TileLayout" Data..=) Prelude.<$> tileLayout
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetTextBox.hs b/gen/Amazonka/QuickSight/Types/SheetTextBox.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetTextBox.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.QuickSight.Types.SheetTextBox
+-- 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.QuickSight.Types.SheetTextBox 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 text box.
+--
+-- /See:/ 'newSheetTextBox' smart constructor.
+data SheetTextBox = SheetTextBox'
+  { -- | The content that is displayed in the text box.
+    content :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier for a text box. This identifier must be unique
+    -- within the context of a dashboard, template, or analysis. Two
+    -- dashboards, analyses, or templates can have text boxes that share
+    -- identifiers.
+    sheetTextBoxId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetTextBox' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'sheetTextBox_content' - The content that is displayed in the text box.
+--
+-- 'sheetTextBoxId', 'sheetTextBox_sheetTextBoxId' - The unique identifier for a text box. This identifier must be unique
+-- within the context of a dashboard, template, or analysis. Two
+-- dashboards, analyses, or templates can have text boxes that share
+-- identifiers.
+newSheetTextBox ::
+  -- | 'sheetTextBoxId'
+  Prelude.Text ->
+  SheetTextBox
+newSheetTextBox pSheetTextBoxId_ =
+  SheetTextBox'
+    { content = Prelude.Nothing,
+      sheetTextBoxId = pSheetTextBoxId_
+    }
+
+-- | The content that is displayed in the text box.
+sheetTextBox_content :: Lens.Lens' SheetTextBox (Prelude.Maybe Prelude.Text)
+sheetTextBox_content = Lens.lens (\SheetTextBox' {content} -> content) (\s@SheetTextBox' {} a -> s {content = a} :: SheetTextBox)
+
+-- | The unique identifier for a text box. This identifier must be unique
+-- within the context of a dashboard, template, or analysis. Two
+-- dashboards, analyses, or templates can have text boxes that share
+-- identifiers.
+sheetTextBox_sheetTextBoxId :: Lens.Lens' SheetTextBox Prelude.Text
+sheetTextBox_sheetTextBoxId = Lens.lens (\SheetTextBox' {sheetTextBoxId} -> sheetTextBoxId) (\s@SheetTextBox' {} a -> s {sheetTextBoxId = a} :: SheetTextBox)
+
+instance Data.FromJSON SheetTextBox where
+  parseJSON =
+    Data.withObject
+      "SheetTextBox"
+      ( \x ->
+          SheetTextBox'
+            Prelude.<$> (x Data..:? "Content")
+            Prelude.<*> (x Data..: "SheetTextBoxId")
+      )
+
+instance Prelude.Hashable SheetTextBox where
+  hashWithSalt _salt SheetTextBox' {..} =
+    _salt
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` sheetTextBoxId
+
+instance Prelude.NFData SheetTextBox where
+  rnf SheetTextBox' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf sheetTextBoxId
+
+instance Data.ToJSON SheetTextBox where
+  toJSON SheetTextBox' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Content" Data..=) Prelude.<$> content,
+            Prelude.Just
+              ("SheetTextBoxId" Data..= sheetTextBoxId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SheetVisualScopingConfiguration.hs b/gen/Amazonka/QuickSight/Types/SheetVisualScopingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SheetVisualScopingConfiguration.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SheetVisualScopingConfiguration
+-- 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.QuickSight.Types.SheetVisualScopingConfiguration 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.QuickSight.Types.FilterVisualScope
+
+-- | The filter that is applied to the options.
+--
+-- /See:/ 'newSheetVisualScopingConfiguration' smart constructor.
+data SheetVisualScopingConfiguration = SheetVisualScopingConfiguration'
+  { -- | The selected visuals that the filter is applied to.
+    visualIds :: Prelude.Maybe [Prelude.Text],
+    -- | The selected sheet that the filter is applied to.
+    sheetId :: Prelude.Text,
+    -- | The scope of the applied entities. Choose one of the following options:
+    --
+    -- -   @ALL_VISUALS@
+    --
+    -- -   @SELECTED_VISUALS@
+    scope :: FilterVisualScope
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SheetVisualScopingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visualIds', 'sheetVisualScopingConfiguration_visualIds' - The selected visuals that the filter is applied to.
+--
+-- 'sheetId', 'sheetVisualScopingConfiguration_sheetId' - The selected sheet that the filter is applied to.
+--
+-- 'scope', 'sheetVisualScopingConfiguration_scope' - The scope of the applied entities. Choose one of the following options:
+--
+-- -   @ALL_VISUALS@
+--
+-- -   @SELECTED_VISUALS@
+newSheetVisualScopingConfiguration ::
+  -- | 'sheetId'
+  Prelude.Text ->
+  -- | 'scope'
+  FilterVisualScope ->
+  SheetVisualScopingConfiguration
+newSheetVisualScopingConfiguration pSheetId_ pScope_ =
+  SheetVisualScopingConfiguration'
+    { visualIds =
+        Prelude.Nothing,
+      sheetId = pSheetId_,
+      scope = pScope_
+    }
+
+-- | The selected visuals that the filter is applied to.
+sheetVisualScopingConfiguration_visualIds :: Lens.Lens' SheetVisualScopingConfiguration (Prelude.Maybe [Prelude.Text])
+sheetVisualScopingConfiguration_visualIds = Lens.lens (\SheetVisualScopingConfiguration' {visualIds} -> visualIds) (\s@SheetVisualScopingConfiguration' {} a -> s {visualIds = a} :: SheetVisualScopingConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The selected sheet that the filter is applied to.
+sheetVisualScopingConfiguration_sheetId :: Lens.Lens' SheetVisualScopingConfiguration Prelude.Text
+sheetVisualScopingConfiguration_sheetId = Lens.lens (\SheetVisualScopingConfiguration' {sheetId} -> sheetId) (\s@SheetVisualScopingConfiguration' {} a -> s {sheetId = a} :: SheetVisualScopingConfiguration)
+
+-- | The scope of the applied entities. Choose one of the following options:
+--
+-- -   @ALL_VISUALS@
+--
+-- -   @SELECTED_VISUALS@
+sheetVisualScopingConfiguration_scope :: Lens.Lens' SheetVisualScopingConfiguration FilterVisualScope
+sheetVisualScopingConfiguration_scope = Lens.lens (\SheetVisualScopingConfiguration' {scope} -> scope) (\s@SheetVisualScopingConfiguration' {} a -> s {scope = a} :: SheetVisualScopingConfiguration)
+
+instance
+  Data.FromJSON
+    SheetVisualScopingConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SheetVisualScopingConfiguration"
+      ( \x ->
+          SheetVisualScopingConfiguration'
+            Prelude.<$> (x Data..:? "VisualIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "SheetId")
+            Prelude.<*> (x Data..: "Scope")
+      )
+
+instance
+  Prelude.Hashable
+    SheetVisualScopingConfiguration
+  where
+  hashWithSalt
+    _salt
+    SheetVisualScopingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` visualIds
+        `Prelude.hashWithSalt` sheetId
+        `Prelude.hashWithSalt` scope
+
+instance
+  Prelude.NFData
+    SheetVisualScopingConfiguration
+  where
+  rnf SheetVisualScopingConfiguration' {..} =
+    Prelude.rnf visualIds
+      `Prelude.seq` Prelude.rnf sheetId
+      `Prelude.seq` Prelude.rnf scope
+
+instance Data.ToJSON SheetVisualScopingConfiguration where
+  toJSON SheetVisualScopingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VisualIds" Data..=) Prelude.<$> visualIds,
+            Prelude.Just ("SheetId" Data..= sheetId),
+            Prelude.Just ("Scope" Data..= scope)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ShortFormatText.hs b/gen/Amazonka/QuickSight/Types/ShortFormatText.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ShortFormatText.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.QuickSight.Types.ShortFormatText
+-- 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.QuickSight.Types.ShortFormatText 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 text format for the title.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newShortFormatText' smart constructor.
+data ShortFormatText = ShortFormatText'
+  { -- | Plain text format.
+    plainText :: Prelude.Maybe Prelude.Text,
+    -- | Rich text. Examples of rich text include bold, underline, and italics.
+    richText :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShortFormatText' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'plainText', 'shortFormatText_plainText' - Plain text format.
+--
+-- 'richText', 'shortFormatText_richText' - Rich text. Examples of rich text include bold, underline, and italics.
+newShortFormatText ::
+  ShortFormatText
+newShortFormatText =
+  ShortFormatText'
+    { plainText = Prelude.Nothing,
+      richText = Prelude.Nothing
+    }
+
+-- | Plain text format.
+shortFormatText_plainText :: Lens.Lens' ShortFormatText (Prelude.Maybe Prelude.Text)
+shortFormatText_plainText = Lens.lens (\ShortFormatText' {plainText} -> plainText) (\s@ShortFormatText' {} a -> s {plainText = a} :: ShortFormatText)
+
+-- | Rich text. Examples of rich text include bold, underline, and italics.
+shortFormatText_richText :: Lens.Lens' ShortFormatText (Prelude.Maybe Prelude.Text)
+shortFormatText_richText = Lens.lens (\ShortFormatText' {richText} -> richText) (\s@ShortFormatText' {} a -> s {richText = a} :: ShortFormatText)
+
+instance Data.FromJSON ShortFormatText where
+  parseJSON =
+    Data.withObject
+      "ShortFormatText"
+      ( \x ->
+          ShortFormatText'
+            Prelude.<$> (x Data..:? "PlainText")
+            Prelude.<*> (x Data..:? "RichText")
+      )
+
+instance Prelude.Hashable ShortFormatText where
+  hashWithSalt _salt ShortFormatText' {..} =
+    _salt
+      `Prelude.hashWithSalt` plainText
+      `Prelude.hashWithSalt` richText
+
+instance Prelude.NFData ShortFormatText where
+  rnf ShortFormatText' {..} =
+    Prelude.rnf plainText
+      `Prelude.seq` Prelude.rnf richText
+
+instance Data.ToJSON ShortFormatText where
+  toJSON ShortFormatText' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PlainText" Data..=) Prelude.<$> plainText,
+            ("RichText" Data..=) Prelude.<$> richText
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SignupResponse.hs b/gen/Amazonka/QuickSight/Types/SignupResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SignupResponse.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SignupResponse
+-- 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.QuickSight.Types.SignupResponse 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 @SignupResponse@ object that contains a summary of a newly created
+-- account.
+--
+-- /See:/ 'newSignupResponse' smart constructor.
+data SignupResponse = SignupResponse'
+  { -- | A Boolean that is @TRUE@ if the Amazon QuickSight uses IAM as an
+    -- authentication method.
+    iAMUser :: Prelude.Maybe Prelude.Bool,
+    -- | The name of your Amazon QuickSight account.
+    accountName :: Prelude.Maybe Prelude.Text,
+    -- | The type of Active Directory that is being used to authenticate the
+    -- Amazon QuickSight account. Valid values are @SIMPLE_AD@, @AD_CONNECTOR@,
+    -- and @MICROSOFT_AD@.
+    directoryType :: Prelude.Maybe Prelude.Text,
+    -- | The user login name for your Amazon QuickSight account.
+    userLoginName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SignupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iAMUser', 'signupResponse_iAMUser' - A Boolean that is @TRUE@ if the Amazon QuickSight uses IAM as an
+-- authentication method.
+--
+-- 'accountName', 'signupResponse_accountName' - The name of your Amazon QuickSight account.
+--
+-- 'directoryType', 'signupResponse_directoryType' - The type of Active Directory that is being used to authenticate the
+-- Amazon QuickSight account. Valid values are @SIMPLE_AD@, @AD_CONNECTOR@,
+-- and @MICROSOFT_AD@.
+--
+-- 'userLoginName', 'signupResponse_userLoginName' - The user login name for your Amazon QuickSight account.
+newSignupResponse ::
+  SignupResponse
+newSignupResponse =
+  SignupResponse'
+    { iAMUser = Prelude.Nothing,
+      accountName = Prelude.Nothing,
+      directoryType = Prelude.Nothing,
+      userLoginName = Prelude.Nothing
+    }
+
+-- | A Boolean that is @TRUE@ if the Amazon QuickSight uses IAM as an
+-- authentication method.
+signupResponse_iAMUser :: Lens.Lens' SignupResponse (Prelude.Maybe Prelude.Bool)
+signupResponse_iAMUser = Lens.lens (\SignupResponse' {iAMUser} -> iAMUser) (\s@SignupResponse' {} a -> s {iAMUser = a} :: SignupResponse)
+
+-- | The name of your Amazon QuickSight account.
+signupResponse_accountName :: Lens.Lens' SignupResponse (Prelude.Maybe Prelude.Text)
+signupResponse_accountName = Lens.lens (\SignupResponse' {accountName} -> accountName) (\s@SignupResponse' {} a -> s {accountName = a} :: SignupResponse)
+
+-- | The type of Active Directory that is being used to authenticate the
+-- Amazon QuickSight account. Valid values are @SIMPLE_AD@, @AD_CONNECTOR@,
+-- and @MICROSOFT_AD@.
+signupResponse_directoryType :: Lens.Lens' SignupResponse (Prelude.Maybe Prelude.Text)
+signupResponse_directoryType = Lens.lens (\SignupResponse' {directoryType} -> directoryType) (\s@SignupResponse' {} a -> s {directoryType = a} :: SignupResponse)
+
+-- | The user login name for your Amazon QuickSight account.
+signupResponse_userLoginName :: Lens.Lens' SignupResponse (Prelude.Maybe Prelude.Text)
+signupResponse_userLoginName = Lens.lens (\SignupResponse' {userLoginName} -> userLoginName) (\s@SignupResponse' {} a -> s {userLoginName = a} :: SignupResponse)
+
+instance Data.FromJSON SignupResponse where
+  parseJSON =
+    Data.withObject
+      "SignupResponse"
+      ( \x ->
+          SignupResponse'
+            Prelude.<$> (x Data..:? "IAMUser")
+            Prelude.<*> (x Data..:? "accountName")
+            Prelude.<*> (x Data..:? "directoryType")
+            Prelude.<*> (x Data..:? "userLoginName")
+      )
+
+instance Prelude.Hashable SignupResponse where
+  hashWithSalt _salt SignupResponse' {..} =
+    _salt
+      `Prelude.hashWithSalt` iAMUser
+      `Prelude.hashWithSalt` accountName
+      `Prelude.hashWithSalt` directoryType
+      `Prelude.hashWithSalt` userLoginName
+
+instance Prelude.NFData SignupResponse where
+  rnf SignupResponse' {..} =
+    Prelude.rnf iAMUser
+      `Prelude.seq` Prelude.rnf accountName
+      `Prelude.seq` Prelude.rnf directoryType
+      `Prelude.seq` Prelude.rnf userLoginName
diff --git a/gen/Amazonka/QuickSight/Types/SimpleClusterMarker.hs b/gen/Amazonka/QuickSight/Types/SimpleClusterMarker.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SimpleClusterMarker.hs
@@ -0,0 +1,75 @@
+{-# 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.QuickSight.Types.SimpleClusterMarker
+-- 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.QuickSight.Types.SimpleClusterMarker 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 simple cluster marker of the cluster marker.
+--
+-- /See:/ 'newSimpleClusterMarker' smart constructor.
+data SimpleClusterMarker = SimpleClusterMarker'
+  { -- | The color of the simple cluster marker.
+    color :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SimpleClusterMarker' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'simpleClusterMarker_color' - The color of the simple cluster marker.
+newSimpleClusterMarker ::
+  SimpleClusterMarker
+newSimpleClusterMarker =
+  SimpleClusterMarker' {color = Prelude.Nothing}
+
+-- | The color of the simple cluster marker.
+simpleClusterMarker_color :: Lens.Lens' SimpleClusterMarker (Prelude.Maybe Prelude.Text)
+simpleClusterMarker_color = Lens.lens (\SimpleClusterMarker' {color} -> color) (\s@SimpleClusterMarker' {} a -> s {color = a} :: SimpleClusterMarker)
+
+instance Data.FromJSON SimpleClusterMarker where
+  parseJSON =
+    Data.withObject
+      "SimpleClusterMarker"
+      ( \x ->
+          SimpleClusterMarker'
+            Prelude.<$> (x Data..:? "Color")
+      )
+
+instance Prelude.Hashable SimpleClusterMarker where
+  hashWithSalt _salt SimpleClusterMarker' {..} =
+    _salt `Prelude.hashWithSalt` color
+
+instance Prelude.NFData SimpleClusterMarker where
+  rnf SimpleClusterMarker' {..} = Prelude.rnf color
+
+instance Data.ToJSON SimpleClusterMarker where
+  toJSON SimpleClusterMarker' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Color" Data..=) Prelude.<$> color]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SimpleNumericalAggregationFunction.hs b/gen/Amazonka/QuickSight/Types/SimpleNumericalAggregationFunction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SimpleNumericalAggregationFunction.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SimpleNumericalAggregationFunction
+-- 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.QuickSight.Types.SimpleNumericalAggregationFunction
+  ( SimpleNumericalAggregationFunction
+      ( ..,
+        SimpleNumericalAggregationFunction_AVERAGE,
+        SimpleNumericalAggregationFunction_COUNT,
+        SimpleNumericalAggregationFunction_DISTINCT_COUNT,
+        SimpleNumericalAggregationFunction_MAX,
+        SimpleNumericalAggregationFunction_MEDIAN,
+        SimpleNumericalAggregationFunction_MIN,
+        SimpleNumericalAggregationFunction_STDEV,
+        SimpleNumericalAggregationFunction_STDEVP,
+        SimpleNumericalAggregationFunction_SUM,
+        SimpleNumericalAggregationFunction_VAR,
+        SimpleNumericalAggregationFunction_VARP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SimpleNumericalAggregationFunction = SimpleNumericalAggregationFunction'
+  { fromSimpleNumericalAggregationFunction ::
+      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 SimpleNumericalAggregationFunction_AVERAGE :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_AVERAGE = SimpleNumericalAggregationFunction' "AVERAGE"
+
+pattern SimpleNumericalAggregationFunction_COUNT :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_COUNT = SimpleNumericalAggregationFunction' "COUNT"
+
+pattern SimpleNumericalAggregationFunction_DISTINCT_COUNT :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_DISTINCT_COUNT = SimpleNumericalAggregationFunction' "DISTINCT_COUNT"
+
+pattern SimpleNumericalAggregationFunction_MAX :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_MAX = SimpleNumericalAggregationFunction' "MAX"
+
+pattern SimpleNumericalAggregationFunction_MEDIAN :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_MEDIAN = SimpleNumericalAggregationFunction' "MEDIAN"
+
+pattern SimpleNumericalAggregationFunction_MIN :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_MIN = SimpleNumericalAggregationFunction' "MIN"
+
+pattern SimpleNumericalAggregationFunction_STDEV :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_STDEV = SimpleNumericalAggregationFunction' "STDEV"
+
+pattern SimpleNumericalAggregationFunction_STDEVP :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_STDEVP = SimpleNumericalAggregationFunction' "STDEVP"
+
+pattern SimpleNumericalAggregationFunction_SUM :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_SUM = SimpleNumericalAggregationFunction' "SUM"
+
+pattern SimpleNumericalAggregationFunction_VAR :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_VAR = SimpleNumericalAggregationFunction' "VAR"
+
+pattern SimpleNumericalAggregationFunction_VARP :: SimpleNumericalAggregationFunction
+pattern SimpleNumericalAggregationFunction_VARP = SimpleNumericalAggregationFunction' "VARP"
+
+{-# COMPLETE
+  SimpleNumericalAggregationFunction_AVERAGE,
+  SimpleNumericalAggregationFunction_COUNT,
+  SimpleNumericalAggregationFunction_DISTINCT_COUNT,
+  SimpleNumericalAggregationFunction_MAX,
+  SimpleNumericalAggregationFunction_MEDIAN,
+  SimpleNumericalAggregationFunction_MIN,
+  SimpleNumericalAggregationFunction_STDEV,
+  SimpleNumericalAggregationFunction_STDEVP,
+  SimpleNumericalAggregationFunction_SUM,
+  SimpleNumericalAggregationFunction_VAR,
+  SimpleNumericalAggregationFunction_VARP,
+  SimpleNumericalAggregationFunction'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/SliderControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/SliderControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SliderControlDisplayOptions.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SliderControlDisplayOptions
+-- 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.QuickSight.Types.SliderControlDisplayOptions 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.QuickSight.Types.LabelOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newSliderControlDisplayOptions' smart constructor.
+data SliderControlDisplayOptions = SliderControlDisplayOptions'
+  { -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SliderControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'titleOptions', 'sliderControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newSliderControlDisplayOptions ::
+  SliderControlDisplayOptions
+newSliderControlDisplayOptions =
+  SliderControlDisplayOptions'
+    { titleOptions =
+        Prelude.Nothing
+    }
+
+-- | The options to configure the title visibility, name, and font size.
+sliderControlDisplayOptions_titleOptions :: Lens.Lens' SliderControlDisplayOptions (Prelude.Maybe LabelOptions)
+sliderControlDisplayOptions_titleOptions = Lens.lens (\SliderControlDisplayOptions' {titleOptions} -> titleOptions) (\s@SliderControlDisplayOptions' {} a -> s {titleOptions = a} :: SliderControlDisplayOptions)
+
+instance Data.FromJSON SliderControlDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "SliderControlDisplayOptions"
+      ( \x ->
+          SliderControlDisplayOptions'
+            Prelude.<$> (x Data..:? "TitleOptions")
+      )
+
+instance Prelude.Hashable SliderControlDisplayOptions where
+  hashWithSalt _salt SliderControlDisplayOptions' {..} =
+    _salt `Prelude.hashWithSalt` titleOptions
+
+instance Prelude.NFData SliderControlDisplayOptions where
+  rnf SliderControlDisplayOptions' {..} =
+    Prelude.rnf titleOptions
+
+instance Data.ToJSON SliderControlDisplayOptions where
+  toJSON SliderControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("TitleOptions" Data..=) Prelude.<$> titleOptions]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SmallMultiplesOptions.hs b/gen/Amazonka/QuickSight/Types/SmallMultiplesOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SmallMultiplesOptions.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SmallMultiplesOptions
+-- 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.QuickSight.Types.SmallMultiplesOptions 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.QuickSight.Types.PanelConfiguration
+
+-- | Options that determine the layout and display options of a chart\'s
+-- small multiples.
+--
+-- /See:/ 'newSmallMultiplesOptions' smart constructor.
+data SmallMultiplesOptions = SmallMultiplesOptions'
+  { -- | Sets the maximum number of visible columns to display in the grid of
+    -- small multiples panels.
+    --
+    -- The default is @Auto@, which automatically adjusts the columns in the
+    -- grid to fit the overall layout and size of the given chart.
+    maxVisibleColumns :: Prelude.Maybe Prelude.Natural,
+    -- | Sets the maximum number of visible rows to display in the grid of small
+    -- multiples panels.
+    --
+    -- The default value is @Auto@, which automatically adjusts the rows in the
+    -- grid to fit the overall layout and size of the given chart.
+    maxVisibleRows :: Prelude.Maybe Prelude.Natural,
+    -- | Configures the display options for each small multiples panel.
+    panelConfiguration :: Prelude.Maybe PanelConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SmallMultiplesOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxVisibleColumns', 'smallMultiplesOptions_maxVisibleColumns' - Sets the maximum number of visible columns to display in the grid of
+-- small multiples panels.
+--
+-- The default is @Auto@, which automatically adjusts the columns in the
+-- grid to fit the overall layout and size of the given chart.
+--
+-- 'maxVisibleRows', 'smallMultiplesOptions_maxVisibleRows' - Sets the maximum number of visible rows to display in the grid of small
+-- multiples panels.
+--
+-- The default value is @Auto@, which automatically adjusts the rows in the
+-- grid to fit the overall layout and size of the given chart.
+--
+-- 'panelConfiguration', 'smallMultiplesOptions_panelConfiguration' - Configures the display options for each small multiples panel.
+newSmallMultiplesOptions ::
+  SmallMultiplesOptions
+newSmallMultiplesOptions =
+  SmallMultiplesOptions'
+    { maxVisibleColumns =
+        Prelude.Nothing,
+      maxVisibleRows = Prelude.Nothing,
+      panelConfiguration = Prelude.Nothing
+    }
+
+-- | Sets the maximum number of visible columns to display in the grid of
+-- small multiples panels.
+--
+-- The default is @Auto@, which automatically adjusts the columns in the
+-- grid to fit the overall layout and size of the given chart.
+smallMultiplesOptions_maxVisibleColumns :: Lens.Lens' SmallMultiplesOptions (Prelude.Maybe Prelude.Natural)
+smallMultiplesOptions_maxVisibleColumns = Lens.lens (\SmallMultiplesOptions' {maxVisibleColumns} -> maxVisibleColumns) (\s@SmallMultiplesOptions' {} a -> s {maxVisibleColumns = a} :: SmallMultiplesOptions)
+
+-- | Sets the maximum number of visible rows to display in the grid of small
+-- multiples panels.
+--
+-- The default value is @Auto@, which automatically adjusts the rows in the
+-- grid to fit the overall layout and size of the given chart.
+smallMultiplesOptions_maxVisibleRows :: Lens.Lens' SmallMultiplesOptions (Prelude.Maybe Prelude.Natural)
+smallMultiplesOptions_maxVisibleRows = Lens.lens (\SmallMultiplesOptions' {maxVisibleRows} -> maxVisibleRows) (\s@SmallMultiplesOptions' {} a -> s {maxVisibleRows = a} :: SmallMultiplesOptions)
+
+-- | Configures the display options for each small multiples panel.
+smallMultiplesOptions_panelConfiguration :: Lens.Lens' SmallMultiplesOptions (Prelude.Maybe PanelConfiguration)
+smallMultiplesOptions_panelConfiguration = Lens.lens (\SmallMultiplesOptions' {panelConfiguration} -> panelConfiguration) (\s@SmallMultiplesOptions' {} a -> s {panelConfiguration = a} :: SmallMultiplesOptions)
+
+instance Data.FromJSON SmallMultiplesOptions where
+  parseJSON =
+    Data.withObject
+      "SmallMultiplesOptions"
+      ( \x ->
+          SmallMultiplesOptions'
+            Prelude.<$> (x Data..:? "MaxVisibleColumns")
+            Prelude.<*> (x Data..:? "MaxVisibleRows")
+            Prelude.<*> (x Data..:? "PanelConfiguration")
+      )
+
+instance Prelude.Hashable SmallMultiplesOptions where
+  hashWithSalt _salt SmallMultiplesOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxVisibleColumns
+      `Prelude.hashWithSalt` maxVisibleRows
+      `Prelude.hashWithSalt` panelConfiguration
+
+instance Prelude.NFData SmallMultiplesOptions where
+  rnf SmallMultiplesOptions' {..} =
+    Prelude.rnf maxVisibleColumns
+      `Prelude.seq` Prelude.rnf maxVisibleRows
+      `Prelude.seq` Prelude.rnf panelConfiguration
+
+instance Data.ToJSON SmallMultiplesOptions where
+  toJSON SmallMultiplesOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxVisibleColumns" Data..=)
+              Prelude.<$> maxVisibleColumns,
+            ("MaxVisibleRows" Data..=)
+              Prelude.<$> maxVisibleRows,
+            ("PanelConfiguration" Data..=)
+              Prelude.<$> panelConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SnowflakeParameters.hs b/gen/Amazonka/QuickSight/Types/SnowflakeParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SnowflakeParameters.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.QuickSight.Types.SnowflakeParameters
+-- 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.QuickSight.Types.SnowflakeParameters 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 parameters for Snowflake.
+--
+-- /See:/ 'newSnowflakeParameters' smart constructor.
+data SnowflakeParameters = SnowflakeParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Database.
+    database :: Prelude.Text,
+    -- | Warehouse.
+    warehouse :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SnowflakeParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'snowflakeParameters_host' - Host.
+--
+-- 'database', 'snowflakeParameters_database' - Database.
+--
+-- 'warehouse', 'snowflakeParameters_warehouse' - Warehouse.
+newSnowflakeParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'database'
+  Prelude.Text ->
+  -- | 'warehouse'
+  Prelude.Text ->
+  SnowflakeParameters
+newSnowflakeParameters pHost_ pDatabase_ pWarehouse_ =
+  SnowflakeParameters'
+    { host = pHost_,
+      database = pDatabase_,
+      warehouse = pWarehouse_
+    }
+
+-- | Host.
+snowflakeParameters_host :: Lens.Lens' SnowflakeParameters Prelude.Text
+snowflakeParameters_host = Lens.lens (\SnowflakeParameters' {host} -> host) (\s@SnowflakeParameters' {} a -> s {host = a} :: SnowflakeParameters)
+
+-- | Database.
+snowflakeParameters_database :: Lens.Lens' SnowflakeParameters Prelude.Text
+snowflakeParameters_database = Lens.lens (\SnowflakeParameters' {database} -> database) (\s@SnowflakeParameters' {} a -> s {database = a} :: SnowflakeParameters)
+
+-- | Warehouse.
+snowflakeParameters_warehouse :: Lens.Lens' SnowflakeParameters Prelude.Text
+snowflakeParameters_warehouse = Lens.lens (\SnowflakeParameters' {warehouse} -> warehouse) (\s@SnowflakeParameters' {} a -> s {warehouse = a} :: SnowflakeParameters)
+
+instance Data.FromJSON SnowflakeParameters where
+  parseJSON =
+    Data.withObject
+      "SnowflakeParameters"
+      ( \x ->
+          SnowflakeParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Database")
+            Prelude.<*> (x Data..: "Warehouse")
+      )
+
+instance Prelude.Hashable SnowflakeParameters where
+  hashWithSalt _salt SnowflakeParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` database
+      `Prelude.hashWithSalt` warehouse
+
+instance Prelude.NFData SnowflakeParameters where
+  rnf SnowflakeParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf database
+      `Prelude.seq` Prelude.rnf warehouse
+
+instance Data.ToJSON SnowflakeParameters where
+  toJSON SnowflakeParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Database" Data..= database),
+            Prelude.Just ("Warehouse" Data..= warehouse)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SortDirection.hs b/gen/Amazonka/QuickSight/Types/SortDirection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SortDirection.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.QuickSight.Types.SortDirection
+-- 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.QuickSight.Types.SortDirection
+  ( SortDirection
+      ( ..,
+        SortDirection_ASC,
+        SortDirection_DESC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortDirection = SortDirection'
+  { fromSortDirection ::
+      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 SortDirection_ASC :: SortDirection
+pattern SortDirection_ASC = SortDirection' "ASC"
+
+pattern SortDirection_DESC :: SortDirection
+pattern SortDirection_DESC = SortDirection' "DESC"
+
+{-# COMPLETE
+  SortDirection_ASC,
+  SortDirection_DESC,
+  SortDirection'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Spacing.hs b/gen/Amazonka/QuickSight/Types/Spacing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Spacing.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.QuickSight.Types.Spacing
+-- 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.QuickSight.Types.Spacing 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 configuration of spacing (often a margin or padding).
+--
+-- /See:/ 'newSpacing' smart constructor.
+data Spacing = Spacing'
+  { -- | Define the bottom spacing.
+    bottom :: Prelude.Maybe Prelude.Text,
+    -- | Define the left spacing.
+    left :: Prelude.Maybe Prelude.Text,
+    -- | Define the right spacing.
+    right :: Prelude.Maybe Prelude.Text,
+    -- | Define the top spacing.
+    top :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Spacing' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bottom', 'spacing_bottom' - Define the bottom spacing.
+--
+-- 'left', 'spacing_left' - Define the left spacing.
+--
+-- 'right', 'spacing_right' - Define the right spacing.
+--
+-- 'top', 'spacing_top' - Define the top spacing.
+newSpacing ::
+  Spacing
+newSpacing =
+  Spacing'
+    { bottom = Prelude.Nothing,
+      left = Prelude.Nothing,
+      right = Prelude.Nothing,
+      top = Prelude.Nothing
+    }
+
+-- | Define the bottom spacing.
+spacing_bottom :: Lens.Lens' Spacing (Prelude.Maybe Prelude.Text)
+spacing_bottom = Lens.lens (\Spacing' {bottom} -> bottom) (\s@Spacing' {} a -> s {bottom = a} :: Spacing)
+
+-- | Define the left spacing.
+spacing_left :: Lens.Lens' Spacing (Prelude.Maybe Prelude.Text)
+spacing_left = Lens.lens (\Spacing' {left} -> left) (\s@Spacing' {} a -> s {left = a} :: Spacing)
+
+-- | Define the right spacing.
+spacing_right :: Lens.Lens' Spacing (Prelude.Maybe Prelude.Text)
+spacing_right = Lens.lens (\Spacing' {right} -> right) (\s@Spacing' {} a -> s {right = a} :: Spacing)
+
+-- | Define the top spacing.
+spacing_top :: Lens.Lens' Spacing (Prelude.Maybe Prelude.Text)
+spacing_top = Lens.lens (\Spacing' {top} -> top) (\s@Spacing' {} a -> s {top = a} :: Spacing)
+
+instance Data.FromJSON Spacing where
+  parseJSON =
+    Data.withObject
+      "Spacing"
+      ( \x ->
+          Spacing'
+            Prelude.<$> (x Data..:? "Bottom")
+            Prelude.<*> (x Data..:? "Left")
+            Prelude.<*> (x Data..:? "Right")
+            Prelude.<*> (x Data..:? "Top")
+      )
+
+instance Prelude.Hashable Spacing where
+  hashWithSalt _salt Spacing' {..} =
+    _salt
+      `Prelude.hashWithSalt` bottom
+      `Prelude.hashWithSalt` left
+      `Prelude.hashWithSalt` right
+      `Prelude.hashWithSalt` top
+
+instance Prelude.NFData Spacing where
+  rnf Spacing' {..} =
+    Prelude.rnf bottom
+      `Prelude.seq` Prelude.rnf left
+      `Prelude.seq` Prelude.rnf right
+      `Prelude.seq` Prelude.rnf top
+
+instance Data.ToJSON Spacing where
+  toJSON Spacing' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bottom" Data..=) Prelude.<$> bottom,
+            ("Left" Data..=) Prelude.<$> left,
+            ("Right" Data..=) Prelude.<$> right,
+            ("Top" Data..=) Prelude.<$> top
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SparkParameters.hs b/gen/Amazonka/QuickSight/Types/SparkParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SparkParameters.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SparkParameters
+-- 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.QuickSight.Types.SparkParameters 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 parameters for Spark.
+--
+-- /See:/ 'newSparkParameters' smart constructor.
+data SparkParameters = SparkParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SparkParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'sparkParameters_host' - Host.
+--
+-- 'port', 'sparkParameters_port' - Port.
+newSparkParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  SparkParameters
+newSparkParameters pHost_ pPort_ =
+  SparkParameters' {host = pHost_, port = pPort_}
+
+-- | Host.
+sparkParameters_host :: Lens.Lens' SparkParameters Prelude.Text
+sparkParameters_host = Lens.lens (\SparkParameters' {host} -> host) (\s@SparkParameters' {} a -> s {host = a} :: SparkParameters)
+
+-- | Port.
+sparkParameters_port :: Lens.Lens' SparkParameters Prelude.Natural
+sparkParameters_port = Lens.lens (\SparkParameters' {port} -> port) (\s@SparkParameters' {} a -> s {port = a} :: SparkParameters)
+
+instance Data.FromJSON SparkParameters where
+  parseJSON =
+    Data.withObject
+      "SparkParameters"
+      ( \x ->
+          SparkParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+      )
+
+instance Prelude.Hashable SparkParameters where
+  hashWithSalt _salt SparkParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+
+instance Prelude.NFData SparkParameters where
+  rnf SparkParameters' {..} =
+    Prelude.rnf host `Prelude.seq` Prelude.rnf port
+
+instance Data.ToJSON SparkParameters where
+  toJSON SparkParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SqlServerParameters.hs b/gen/Amazonka/QuickSight/Types/SqlServerParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SqlServerParameters.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.QuickSight.Types.SqlServerParameters
+-- 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.QuickSight.Types.SqlServerParameters 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 parameters for SQL Server.
+--
+-- /See:/ 'newSqlServerParameters' smart constructor.
+data SqlServerParameters = SqlServerParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SqlServerParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'sqlServerParameters_host' - Host.
+--
+-- 'port', 'sqlServerParameters_port' - Port.
+--
+-- 'database', 'sqlServerParameters_database' - Database.
+newSqlServerParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  SqlServerParameters
+newSqlServerParameters pHost_ pPort_ pDatabase_ =
+  SqlServerParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | Host.
+sqlServerParameters_host :: Lens.Lens' SqlServerParameters Prelude.Text
+sqlServerParameters_host = Lens.lens (\SqlServerParameters' {host} -> host) (\s@SqlServerParameters' {} a -> s {host = a} :: SqlServerParameters)
+
+-- | Port.
+sqlServerParameters_port :: Lens.Lens' SqlServerParameters Prelude.Natural
+sqlServerParameters_port = Lens.lens (\SqlServerParameters' {port} -> port) (\s@SqlServerParameters' {} a -> s {port = a} :: SqlServerParameters)
+
+-- | Database.
+sqlServerParameters_database :: Lens.Lens' SqlServerParameters Prelude.Text
+sqlServerParameters_database = Lens.lens (\SqlServerParameters' {database} -> database) (\s@SqlServerParameters' {} a -> s {database = a} :: SqlServerParameters)
+
+instance Data.FromJSON SqlServerParameters where
+  parseJSON =
+    Data.withObject
+      "SqlServerParameters"
+      ( \x ->
+          SqlServerParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable SqlServerParameters where
+  hashWithSalt _salt SqlServerParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData SqlServerParameters where
+  rnf SqlServerParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON SqlServerParameters where
+  toJSON SqlServerParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SslProperties.hs b/gen/Amazonka/QuickSight/Types/SslProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SslProperties.hs
@@ -0,0 +1,75 @@
+{-# 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.QuickSight.Types.SslProperties
+-- 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.QuickSight.Types.SslProperties 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
+
+-- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying data source.
+--
+-- /See:/ 'newSslProperties' smart constructor.
+data SslProperties = SslProperties'
+  { -- | A Boolean option to control whether SSL should be disabled.
+    disableSsl :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SslProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disableSsl', 'sslProperties_disableSsl' - A Boolean option to control whether SSL should be disabled.
+newSslProperties ::
+  SslProperties
+newSslProperties =
+  SslProperties' {disableSsl = Prelude.Nothing}
+
+-- | A Boolean option to control whether SSL should be disabled.
+sslProperties_disableSsl :: Lens.Lens' SslProperties (Prelude.Maybe Prelude.Bool)
+sslProperties_disableSsl = Lens.lens (\SslProperties' {disableSsl} -> disableSsl) (\s@SslProperties' {} a -> s {disableSsl = a} :: SslProperties)
+
+instance Data.FromJSON SslProperties where
+  parseJSON =
+    Data.withObject
+      "SslProperties"
+      ( \x ->
+          SslProperties' Prelude.<$> (x Data..:? "DisableSsl")
+      )
+
+instance Prelude.Hashable SslProperties where
+  hashWithSalt _salt SslProperties' {..} =
+    _salt `Prelude.hashWithSalt` disableSsl
+
+instance Prelude.NFData SslProperties where
+  rnf SslProperties' {..} = Prelude.rnf disableSsl
+
+instance Data.ToJSON SslProperties where
+  toJSON SslProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("DisableSsl" Data..=) Prelude.<$> disableSsl]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Status.hs b/gen/Amazonka/QuickSight/Types/Status.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Status.hs
@@ -0,0 +1,68 @@
+{-# 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.QuickSight.Types.Status
+-- 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.QuickSight.Types.Status
+  ( Status
+      ( ..,
+        Status_DISABLED,
+        Status_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Status = Status' {fromStatus :: 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 Status_DISABLED :: Status
+pattern Status_DISABLED = Status' "DISABLED"
+
+pattern Status_ENABLED :: Status
+pattern Status_ENABLED = Status' "ENABLED"
+
+{-# COMPLETE
+  Status_DISABLED,
+  Status_ENABLED,
+  Status'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/StringDefaultValues.hs b/gen/Amazonka/QuickSight/Types/StringDefaultValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/StringDefaultValues.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.StringDefaultValues
+-- 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.QuickSight.Types.StringDefaultValues 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.QuickSight.Types.DynamicDefaultValue
+
+-- | The default values of the @StringParameterDeclaration@.
+--
+-- /See:/ 'newStringDefaultValues' smart constructor.
+data StringDefaultValues = StringDefaultValues'
+  { -- | The dynamic value of the @StringDefaultValues@. Different defaults
+    -- displayed according to users, groups, and values mapping.
+    dynamicValue :: Prelude.Maybe DynamicDefaultValue,
+    -- | The static values of the @DecimalDefaultValues@.
+    staticValues :: Prelude.Maybe [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StringDefaultValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dynamicValue', 'stringDefaultValues_dynamicValue' - The dynamic value of the @StringDefaultValues@. Different defaults
+-- displayed according to users, groups, and values mapping.
+--
+-- 'staticValues', 'stringDefaultValues_staticValues' - The static values of the @DecimalDefaultValues@.
+newStringDefaultValues ::
+  StringDefaultValues
+newStringDefaultValues =
+  StringDefaultValues'
+    { dynamicValue =
+        Prelude.Nothing,
+      staticValues = Prelude.Nothing
+    }
+
+-- | The dynamic value of the @StringDefaultValues@. Different defaults
+-- displayed according to users, groups, and values mapping.
+stringDefaultValues_dynamicValue :: Lens.Lens' StringDefaultValues (Prelude.Maybe DynamicDefaultValue)
+stringDefaultValues_dynamicValue = Lens.lens (\StringDefaultValues' {dynamicValue} -> dynamicValue) (\s@StringDefaultValues' {} a -> s {dynamicValue = a} :: StringDefaultValues)
+
+-- | The static values of the @DecimalDefaultValues@.
+stringDefaultValues_staticValues :: Lens.Lens' StringDefaultValues (Prelude.Maybe [Prelude.Text])
+stringDefaultValues_staticValues = Lens.lens (\StringDefaultValues' {staticValues} -> staticValues) (\s@StringDefaultValues' {} a -> s {staticValues = a} :: StringDefaultValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON StringDefaultValues where
+  parseJSON =
+    Data.withObject
+      "StringDefaultValues"
+      ( \x ->
+          StringDefaultValues'
+            Prelude.<$> (x Data..:? "DynamicValue")
+            Prelude.<*> (x Data..:? "StaticValues" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable StringDefaultValues where
+  hashWithSalt _salt StringDefaultValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` dynamicValue
+      `Prelude.hashWithSalt` staticValues
+
+instance Prelude.NFData StringDefaultValues where
+  rnf StringDefaultValues' {..} =
+    Prelude.rnf dynamicValue
+      `Prelude.seq` Prelude.rnf staticValues
+
+instance Data.ToJSON StringDefaultValues where
+  toJSON StringDefaultValues' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DynamicValue" Data..=) Prelude.<$> dynamicValue,
+            ("StaticValues" Data..=) Prelude.<$> staticValues
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/StringFormatConfiguration.hs b/gen/Amazonka/QuickSight/Types/StringFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/StringFormatConfiguration.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.StringFormatConfiguration
+-- 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.QuickSight.Types.StringFormatConfiguration 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.QuickSight.Types.NullValueFormatConfiguration
+import Amazonka.QuickSight.Types.NumericFormatConfiguration
+
+-- | Formatting configuration for string fields.
+--
+-- /See:/ 'newStringFormatConfiguration' smart constructor.
+data StringFormatConfiguration = StringFormatConfiguration'
+  { -- | The options that determine the null value format configuration.
+    nullValueFormatConfiguration :: Prelude.Maybe NullValueFormatConfiguration,
+    -- | The formatting configuration for numeric strings.
+    numericFormatConfiguration :: Prelude.Maybe NumericFormatConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StringFormatConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nullValueFormatConfiguration', 'stringFormatConfiguration_nullValueFormatConfiguration' - The options that determine the null value format configuration.
+--
+-- 'numericFormatConfiguration', 'stringFormatConfiguration_numericFormatConfiguration' - The formatting configuration for numeric strings.
+newStringFormatConfiguration ::
+  StringFormatConfiguration
+newStringFormatConfiguration =
+  StringFormatConfiguration'
+    { nullValueFormatConfiguration =
+        Prelude.Nothing,
+      numericFormatConfiguration = Prelude.Nothing
+    }
+
+-- | The options that determine the null value format configuration.
+stringFormatConfiguration_nullValueFormatConfiguration :: Lens.Lens' StringFormatConfiguration (Prelude.Maybe NullValueFormatConfiguration)
+stringFormatConfiguration_nullValueFormatConfiguration = Lens.lens (\StringFormatConfiguration' {nullValueFormatConfiguration} -> nullValueFormatConfiguration) (\s@StringFormatConfiguration' {} a -> s {nullValueFormatConfiguration = a} :: StringFormatConfiguration)
+
+-- | The formatting configuration for numeric strings.
+stringFormatConfiguration_numericFormatConfiguration :: Lens.Lens' StringFormatConfiguration (Prelude.Maybe NumericFormatConfiguration)
+stringFormatConfiguration_numericFormatConfiguration = Lens.lens (\StringFormatConfiguration' {numericFormatConfiguration} -> numericFormatConfiguration) (\s@StringFormatConfiguration' {} a -> s {numericFormatConfiguration = a} :: StringFormatConfiguration)
+
+instance Data.FromJSON StringFormatConfiguration where
+  parseJSON =
+    Data.withObject
+      "StringFormatConfiguration"
+      ( \x ->
+          StringFormatConfiguration'
+            Prelude.<$> (x Data..:? "NullValueFormatConfiguration")
+            Prelude.<*> (x Data..:? "NumericFormatConfiguration")
+      )
+
+instance Prelude.Hashable StringFormatConfiguration where
+  hashWithSalt _salt StringFormatConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` nullValueFormatConfiguration
+      `Prelude.hashWithSalt` numericFormatConfiguration
+
+instance Prelude.NFData StringFormatConfiguration where
+  rnf StringFormatConfiguration' {..} =
+    Prelude.rnf nullValueFormatConfiguration
+      `Prelude.seq` Prelude.rnf numericFormatConfiguration
+
+instance Data.ToJSON StringFormatConfiguration where
+  toJSON StringFormatConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NullValueFormatConfiguration" Data..=)
+              Prelude.<$> nullValueFormatConfiguration,
+            ("NumericFormatConfiguration" Data..=)
+              Prelude.<$> numericFormatConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/StringParameter.hs b/gen/Amazonka/QuickSight/Types/StringParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/StringParameter.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.QuickSight.Types.StringParameter
+-- 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.QuickSight.Types.StringParameter 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 string parameter.
+--
+-- /See:/ 'newStringParameter' smart constructor.
+data StringParameter = StringParameter'
+  { -- | A display name for a string parameter.
+    name :: Prelude.Text,
+    -- | The values of a string parameter.
+    values :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StringParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'stringParameter_name' - A display name for a string parameter.
+--
+-- 'values', 'stringParameter_values' - The values of a string parameter.
+newStringParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  StringParameter
+newStringParameter pName_ =
+  StringParameter'
+    { name = pName_,
+      values = Prelude.mempty
+    }
+
+-- | A display name for a string parameter.
+stringParameter_name :: Lens.Lens' StringParameter Prelude.Text
+stringParameter_name = Lens.lens (\StringParameter' {name} -> name) (\s@StringParameter' {} a -> s {name = a} :: StringParameter)
+
+-- | The values of a string parameter.
+stringParameter_values :: Lens.Lens' StringParameter [Prelude.Text]
+stringParameter_values = Lens.lens (\StringParameter' {values} -> values) (\s@StringParameter' {} a -> s {values = a} :: StringParameter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable StringParameter where
+  hashWithSalt _salt StringParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData StringParameter where
+  rnf StringParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON StringParameter where
+  toJSON StringParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/StringParameterDeclaration.hs b/gen/Amazonka/QuickSight/Types/StringParameterDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/StringParameterDeclaration.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.QuickSight.Types.StringParameterDeclaration
+-- 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.QuickSight.Types.StringParameterDeclaration 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.QuickSight.Types.ParameterValueType
+import Amazonka.QuickSight.Types.StringDefaultValues
+import Amazonka.QuickSight.Types.StringValueWhenUnsetConfiguration
+
+-- | A parameter declaration for the @String@ data type.
+--
+-- /See:/ 'newStringParameterDeclaration' smart constructor.
+data StringParameterDeclaration = StringParameterDeclaration'
+  { -- | The default values of a parameter. If the parameter is a single-value
+    -- parameter, a maximum of one default value can be provided.
+    defaultValues :: Prelude.Maybe StringDefaultValues,
+    -- | The configuration that defines the default value of a @String@ parameter
+    -- when a value has not been set.
+    valueWhenUnset :: Prelude.Maybe StringValueWhenUnsetConfiguration,
+    -- | The value type determines whether the parameter is a single-value or
+    -- multi-value parameter.
+    parameterValueType :: ParameterValueType,
+    -- | The name of the parameter that is being declared.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StringParameterDeclaration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultValues', 'stringParameterDeclaration_defaultValues' - The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+--
+-- 'valueWhenUnset', 'stringParameterDeclaration_valueWhenUnset' - The configuration that defines the default value of a @String@ parameter
+-- when a value has not been set.
+--
+-- 'parameterValueType', 'stringParameterDeclaration_parameterValueType' - The value type determines whether the parameter is a single-value or
+-- multi-value parameter.
+--
+-- 'name', 'stringParameterDeclaration_name' - The name of the parameter that is being declared.
+newStringParameterDeclaration ::
+  -- | 'parameterValueType'
+  ParameterValueType ->
+  -- | 'name'
+  Prelude.Text ->
+  StringParameterDeclaration
+newStringParameterDeclaration
+  pParameterValueType_
+  pName_ =
+    StringParameterDeclaration'
+      { defaultValues =
+          Prelude.Nothing,
+        valueWhenUnset = Prelude.Nothing,
+        parameterValueType = pParameterValueType_,
+        name = pName_
+      }
+
+-- | The default values of a parameter. If the parameter is a single-value
+-- parameter, a maximum of one default value can be provided.
+stringParameterDeclaration_defaultValues :: Lens.Lens' StringParameterDeclaration (Prelude.Maybe StringDefaultValues)
+stringParameterDeclaration_defaultValues = Lens.lens (\StringParameterDeclaration' {defaultValues} -> defaultValues) (\s@StringParameterDeclaration' {} a -> s {defaultValues = a} :: StringParameterDeclaration)
+
+-- | The configuration that defines the default value of a @String@ parameter
+-- when a value has not been set.
+stringParameterDeclaration_valueWhenUnset :: Lens.Lens' StringParameterDeclaration (Prelude.Maybe StringValueWhenUnsetConfiguration)
+stringParameterDeclaration_valueWhenUnset = Lens.lens (\StringParameterDeclaration' {valueWhenUnset} -> valueWhenUnset) (\s@StringParameterDeclaration' {} a -> s {valueWhenUnset = a} :: StringParameterDeclaration)
+
+-- | The value type determines whether the parameter is a single-value or
+-- multi-value parameter.
+stringParameterDeclaration_parameterValueType :: Lens.Lens' StringParameterDeclaration ParameterValueType
+stringParameterDeclaration_parameterValueType = Lens.lens (\StringParameterDeclaration' {parameterValueType} -> parameterValueType) (\s@StringParameterDeclaration' {} a -> s {parameterValueType = a} :: StringParameterDeclaration)
+
+-- | The name of the parameter that is being declared.
+stringParameterDeclaration_name :: Lens.Lens' StringParameterDeclaration Prelude.Text
+stringParameterDeclaration_name = Lens.lens (\StringParameterDeclaration' {name} -> name) (\s@StringParameterDeclaration' {} a -> s {name = a} :: StringParameterDeclaration)
+
+instance Data.FromJSON StringParameterDeclaration where
+  parseJSON =
+    Data.withObject
+      "StringParameterDeclaration"
+      ( \x ->
+          StringParameterDeclaration'
+            Prelude.<$> (x Data..:? "DefaultValues")
+            Prelude.<*> (x Data..:? "ValueWhenUnset")
+            Prelude.<*> (x Data..: "ParameterValueType")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable StringParameterDeclaration where
+  hashWithSalt _salt StringParameterDeclaration' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultValues
+      `Prelude.hashWithSalt` valueWhenUnset
+      `Prelude.hashWithSalt` parameterValueType
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData StringParameterDeclaration where
+  rnf StringParameterDeclaration' {..} =
+    Prelude.rnf defaultValues
+      `Prelude.seq` Prelude.rnf valueWhenUnset
+      `Prelude.seq` Prelude.rnf parameterValueType
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON StringParameterDeclaration where
+  toJSON StringParameterDeclaration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultValues" Data..=) Prelude.<$> defaultValues,
+            ("ValueWhenUnset" Data..=)
+              Prelude.<$> valueWhenUnset,
+            Prelude.Just
+              ("ParameterValueType" Data..= parameterValueType),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/StringValueWhenUnsetConfiguration.hs b/gen/Amazonka/QuickSight/Types/StringValueWhenUnsetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/StringValueWhenUnsetConfiguration.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.StringValueWhenUnsetConfiguration
+-- 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.QuickSight.Types.StringValueWhenUnsetConfiguration 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.QuickSight.Types.ValueWhenUnsetOption
+
+-- | The configuration that defines the default value of a @String@ parameter
+-- when a value has not been set.
+--
+-- /See:/ 'newStringValueWhenUnsetConfiguration' smart constructor.
+data StringValueWhenUnsetConfiguration = StringValueWhenUnsetConfiguration'
+  { -- | A custom value that\'s used when the value of a parameter isn\'t set.
+    customValue :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The built-in options for default values. The value can be one of the
+    -- following:
+    --
+    -- -   @RECOMMENDED@: The recommended value.
+    --
+    -- -   @NULL@: The @NULL@ value.
+    valueWhenUnsetOption :: Prelude.Maybe ValueWhenUnsetOption
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StringValueWhenUnsetConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customValue', 'stringValueWhenUnsetConfiguration_customValue' - A custom value that\'s used when the value of a parameter isn\'t set.
+--
+-- 'valueWhenUnsetOption', 'stringValueWhenUnsetConfiguration_valueWhenUnsetOption' - The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+newStringValueWhenUnsetConfiguration ::
+  StringValueWhenUnsetConfiguration
+newStringValueWhenUnsetConfiguration =
+  StringValueWhenUnsetConfiguration'
+    { customValue =
+        Prelude.Nothing,
+      valueWhenUnsetOption = Prelude.Nothing
+    }
+
+-- | A custom value that\'s used when the value of a parameter isn\'t set.
+stringValueWhenUnsetConfiguration_customValue :: Lens.Lens' StringValueWhenUnsetConfiguration (Prelude.Maybe Prelude.Text)
+stringValueWhenUnsetConfiguration_customValue = Lens.lens (\StringValueWhenUnsetConfiguration' {customValue} -> customValue) (\s@StringValueWhenUnsetConfiguration' {} a -> s {customValue = a} :: StringValueWhenUnsetConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The built-in options for default values. The value can be one of the
+-- following:
+--
+-- -   @RECOMMENDED@: The recommended value.
+--
+-- -   @NULL@: The @NULL@ value.
+stringValueWhenUnsetConfiguration_valueWhenUnsetOption :: Lens.Lens' StringValueWhenUnsetConfiguration (Prelude.Maybe ValueWhenUnsetOption)
+stringValueWhenUnsetConfiguration_valueWhenUnsetOption = Lens.lens (\StringValueWhenUnsetConfiguration' {valueWhenUnsetOption} -> valueWhenUnsetOption) (\s@StringValueWhenUnsetConfiguration' {} a -> s {valueWhenUnsetOption = a} :: StringValueWhenUnsetConfiguration)
+
+instance
+  Data.FromJSON
+    StringValueWhenUnsetConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "StringValueWhenUnsetConfiguration"
+      ( \x ->
+          StringValueWhenUnsetConfiguration'
+            Prelude.<$> (x Data..:? "CustomValue")
+            Prelude.<*> (x Data..:? "ValueWhenUnsetOption")
+      )
+
+instance
+  Prelude.Hashable
+    StringValueWhenUnsetConfiguration
+  where
+  hashWithSalt
+    _salt
+    StringValueWhenUnsetConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customValue
+        `Prelude.hashWithSalt` valueWhenUnsetOption
+
+instance
+  Prelude.NFData
+    StringValueWhenUnsetConfiguration
+  where
+  rnf StringValueWhenUnsetConfiguration' {..} =
+    Prelude.rnf customValue
+      `Prelude.seq` Prelude.rnf valueWhenUnsetOption
+
+instance
+  Data.ToJSON
+    StringValueWhenUnsetConfiguration
+  where
+  toJSON StringValueWhenUnsetConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomValue" Data..=) Prelude.<$> customValue,
+            ("ValueWhenUnsetOption" Data..=)
+              Prelude.<$> valueWhenUnsetOption
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/SubtotalOptions.hs b/gen/Amazonka/QuickSight/Types/SubtotalOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/SubtotalOptions.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.SubtotalOptions
+-- 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.QuickSight.Types.SubtotalOptions 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.QuickSight.Types.PivotTableFieldSubtotalOptions
+import Amazonka.QuickSight.Types.PivotTableSubtotalLevel
+import Amazonka.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The subtotal options.
+--
+-- /See:/ 'newSubtotalOptions' smart constructor.
+data SubtotalOptions = SubtotalOptions'
+  { -- | The custom label string for the subtotal cells.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The field level (all, custom, last) for the subtotal cells.
+    fieldLevel :: Prelude.Maybe PivotTableSubtotalLevel,
+    -- | The optional configuration of subtotal cells.
+    fieldLevelOptions :: Prelude.Maybe [PivotTableFieldSubtotalOptions],
+    -- | The cell styling options for the subtotals of header cells.
+    metricHeaderCellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The cell styling options for the subtotal cells.
+    totalCellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The visibility configuration for the subtotal cells.
+    totalsVisibility :: Prelude.Maybe Visibility,
+    -- | The cell styling options for the subtotals of value cells.
+    valueCellStyle :: Prelude.Maybe TableCellStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SubtotalOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'subtotalOptions_customLabel' - The custom label string for the subtotal cells.
+--
+-- 'fieldLevel', 'subtotalOptions_fieldLevel' - The field level (all, custom, last) for the subtotal cells.
+--
+-- 'fieldLevelOptions', 'subtotalOptions_fieldLevelOptions' - The optional configuration of subtotal cells.
+--
+-- 'metricHeaderCellStyle', 'subtotalOptions_metricHeaderCellStyle' - The cell styling options for the subtotals of header cells.
+--
+-- 'totalCellStyle', 'subtotalOptions_totalCellStyle' - The cell styling options for the subtotal cells.
+--
+-- 'totalsVisibility', 'subtotalOptions_totalsVisibility' - The visibility configuration for the subtotal cells.
+--
+-- 'valueCellStyle', 'subtotalOptions_valueCellStyle' - The cell styling options for the subtotals of value cells.
+newSubtotalOptions ::
+  SubtotalOptions
+newSubtotalOptions =
+  SubtotalOptions'
+    { customLabel = Prelude.Nothing,
+      fieldLevel = Prelude.Nothing,
+      fieldLevelOptions = Prelude.Nothing,
+      metricHeaderCellStyle = Prelude.Nothing,
+      totalCellStyle = Prelude.Nothing,
+      totalsVisibility = Prelude.Nothing,
+      valueCellStyle = Prelude.Nothing
+    }
+
+-- | The custom label string for the subtotal cells.
+subtotalOptions_customLabel :: Lens.Lens' SubtotalOptions (Prelude.Maybe Prelude.Text)
+subtotalOptions_customLabel = Lens.lens (\SubtotalOptions' {customLabel} -> customLabel) (\s@SubtotalOptions' {} a -> s {customLabel = a} :: SubtotalOptions)
+
+-- | The field level (all, custom, last) for the subtotal cells.
+subtotalOptions_fieldLevel :: Lens.Lens' SubtotalOptions (Prelude.Maybe PivotTableSubtotalLevel)
+subtotalOptions_fieldLevel = Lens.lens (\SubtotalOptions' {fieldLevel} -> fieldLevel) (\s@SubtotalOptions' {} a -> s {fieldLevel = a} :: SubtotalOptions)
+
+-- | The optional configuration of subtotal cells.
+subtotalOptions_fieldLevelOptions :: Lens.Lens' SubtotalOptions (Prelude.Maybe [PivotTableFieldSubtotalOptions])
+subtotalOptions_fieldLevelOptions = Lens.lens (\SubtotalOptions' {fieldLevelOptions} -> fieldLevelOptions) (\s@SubtotalOptions' {} a -> s {fieldLevelOptions = a} :: SubtotalOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The cell styling options for the subtotals of header cells.
+subtotalOptions_metricHeaderCellStyle :: Lens.Lens' SubtotalOptions (Prelude.Maybe TableCellStyle)
+subtotalOptions_metricHeaderCellStyle = Lens.lens (\SubtotalOptions' {metricHeaderCellStyle} -> metricHeaderCellStyle) (\s@SubtotalOptions' {} a -> s {metricHeaderCellStyle = a} :: SubtotalOptions)
+
+-- | The cell styling options for the subtotal cells.
+subtotalOptions_totalCellStyle :: Lens.Lens' SubtotalOptions (Prelude.Maybe TableCellStyle)
+subtotalOptions_totalCellStyle = Lens.lens (\SubtotalOptions' {totalCellStyle} -> totalCellStyle) (\s@SubtotalOptions' {} a -> s {totalCellStyle = a} :: SubtotalOptions)
+
+-- | The visibility configuration for the subtotal cells.
+subtotalOptions_totalsVisibility :: Lens.Lens' SubtotalOptions (Prelude.Maybe Visibility)
+subtotalOptions_totalsVisibility = Lens.lens (\SubtotalOptions' {totalsVisibility} -> totalsVisibility) (\s@SubtotalOptions' {} a -> s {totalsVisibility = a} :: SubtotalOptions)
+
+-- | The cell styling options for the subtotals of value cells.
+subtotalOptions_valueCellStyle :: Lens.Lens' SubtotalOptions (Prelude.Maybe TableCellStyle)
+subtotalOptions_valueCellStyle = Lens.lens (\SubtotalOptions' {valueCellStyle} -> valueCellStyle) (\s@SubtotalOptions' {} a -> s {valueCellStyle = a} :: SubtotalOptions)
+
+instance Data.FromJSON SubtotalOptions where
+  parseJSON =
+    Data.withObject
+      "SubtotalOptions"
+      ( \x ->
+          SubtotalOptions'
+            Prelude.<$> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "FieldLevel")
+            Prelude.<*> ( x
+                            Data..:? "FieldLevelOptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "MetricHeaderCellStyle")
+            Prelude.<*> (x Data..:? "TotalCellStyle")
+            Prelude.<*> (x Data..:? "TotalsVisibility")
+            Prelude.<*> (x Data..:? "ValueCellStyle")
+      )
+
+instance Prelude.Hashable SubtotalOptions where
+  hashWithSalt _salt SubtotalOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` fieldLevel
+      `Prelude.hashWithSalt` fieldLevelOptions
+      `Prelude.hashWithSalt` metricHeaderCellStyle
+      `Prelude.hashWithSalt` totalCellStyle
+      `Prelude.hashWithSalt` totalsVisibility
+      `Prelude.hashWithSalt` valueCellStyle
+
+instance Prelude.NFData SubtotalOptions where
+  rnf SubtotalOptions' {..} =
+    Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf fieldLevel
+      `Prelude.seq` Prelude.rnf fieldLevelOptions
+      `Prelude.seq` Prelude.rnf metricHeaderCellStyle
+      `Prelude.seq` Prelude.rnf totalCellStyle
+      `Prelude.seq` Prelude.rnf totalsVisibility
+      `Prelude.seq` Prelude.rnf valueCellStyle
+
+instance Data.ToJSON SubtotalOptions where
+  toJSON SubtotalOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("FieldLevel" Data..=) Prelude.<$> fieldLevel,
+            ("FieldLevelOptions" Data..=)
+              Prelude.<$> fieldLevelOptions,
+            ("MetricHeaderCellStyle" Data..=)
+              Prelude.<$> metricHeaderCellStyle,
+            ("TotalCellStyle" Data..=)
+              Prelude.<$> totalCellStyle,
+            ("TotalsVisibility" Data..=)
+              Prelude.<$> totalsVisibility,
+            ("ValueCellStyle" Data..=)
+              Prelude.<$> valueCellStyle
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/TableAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableAggregatedFieldWells.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.QuickSight.Types.TableAggregatedFieldWells
+-- 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.QuickSight.Types.TableAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field well for the table.
+--
+-- /See:/ 'newTableAggregatedFieldWells' smart constructor.
+data TableAggregatedFieldWells = TableAggregatedFieldWells'
+  { -- | The group by field well for a pivot table. Values are grouped by group
+    -- by fields.
+    groupBy :: Prelude.Maybe [DimensionField],
+    -- | The values field well for a pivot table. Values are aggregated based on
+    -- group by fields.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupBy', 'tableAggregatedFieldWells_groupBy' - The group by field well for a pivot table. Values are grouped by group
+-- by fields.
+--
+-- 'values', 'tableAggregatedFieldWells_values' - The values field well for a pivot table. Values are aggregated based on
+-- group by fields.
+newTableAggregatedFieldWells ::
+  TableAggregatedFieldWells
+newTableAggregatedFieldWells =
+  TableAggregatedFieldWells'
+    { groupBy =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The group by field well for a pivot table. Values are grouped by group
+-- by fields.
+tableAggregatedFieldWells_groupBy :: Lens.Lens' TableAggregatedFieldWells (Prelude.Maybe [DimensionField])
+tableAggregatedFieldWells_groupBy = Lens.lens (\TableAggregatedFieldWells' {groupBy} -> groupBy) (\s@TableAggregatedFieldWells' {} a -> s {groupBy = a} :: TableAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The values field well for a pivot table. Values are aggregated based on
+-- group by fields.
+tableAggregatedFieldWells_values :: Lens.Lens' TableAggregatedFieldWells (Prelude.Maybe [MeasureField])
+tableAggregatedFieldWells_values = Lens.lens (\TableAggregatedFieldWells' {values} -> values) (\s@TableAggregatedFieldWells' {} a -> s {values = a} :: TableAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TableAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "TableAggregatedFieldWells"
+      ( \x ->
+          TableAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "GroupBy" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TableAggregatedFieldWells where
+  hashWithSalt _salt TableAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupBy
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData TableAggregatedFieldWells where
+  rnf TableAggregatedFieldWells' {..} =
+    Prelude.rnf groupBy
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON TableAggregatedFieldWells where
+  toJSON TableAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GroupBy" Data..=) Prelude.<$> groupBy,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableBorderOptions.hs b/gen/Amazonka/QuickSight/Types/TableBorderOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableBorderOptions.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableBorderOptions
+-- 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.QuickSight.Types.TableBorderOptions 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.QuickSight.Types.TableBorderStyle
+
+-- | The border options for a table border.
+--
+-- /See:/ 'newTableBorderOptions' smart constructor.
+data TableBorderOptions = TableBorderOptions'
+  { -- | The color of a table border.
+    color :: Prelude.Maybe Prelude.Text,
+    -- | The style (none, solid) of a table border.
+    style :: Prelude.Maybe TableBorderStyle,
+    -- | The thickness of a table border.
+    thickness :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableBorderOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'color', 'tableBorderOptions_color' - The color of a table border.
+--
+-- 'style', 'tableBorderOptions_style' - The style (none, solid) of a table border.
+--
+-- 'thickness', 'tableBorderOptions_thickness' - The thickness of a table border.
+newTableBorderOptions ::
+  TableBorderOptions
+newTableBorderOptions =
+  TableBorderOptions'
+    { color = Prelude.Nothing,
+      style = Prelude.Nothing,
+      thickness = Prelude.Nothing
+    }
+
+-- | The color of a table border.
+tableBorderOptions_color :: Lens.Lens' TableBorderOptions (Prelude.Maybe Prelude.Text)
+tableBorderOptions_color = Lens.lens (\TableBorderOptions' {color} -> color) (\s@TableBorderOptions' {} a -> s {color = a} :: TableBorderOptions)
+
+-- | The style (none, solid) of a table border.
+tableBorderOptions_style :: Lens.Lens' TableBorderOptions (Prelude.Maybe TableBorderStyle)
+tableBorderOptions_style = Lens.lens (\TableBorderOptions' {style} -> style) (\s@TableBorderOptions' {} a -> s {style = a} :: TableBorderOptions)
+
+-- | The thickness of a table border.
+tableBorderOptions_thickness :: Lens.Lens' TableBorderOptions (Prelude.Maybe Prelude.Natural)
+tableBorderOptions_thickness = Lens.lens (\TableBorderOptions' {thickness} -> thickness) (\s@TableBorderOptions' {} a -> s {thickness = a} :: TableBorderOptions)
+
+instance Data.FromJSON TableBorderOptions where
+  parseJSON =
+    Data.withObject
+      "TableBorderOptions"
+      ( \x ->
+          TableBorderOptions'
+            Prelude.<$> (x Data..:? "Color")
+            Prelude.<*> (x Data..:? "Style")
+            Prelude.<*> (x Data..:? "Thickness")
+      )
+
+instance Prelude.Hashable TableBorderOptions where
+  hashWithSalt _salt TableBorderOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` color
+      `Prelude.hashWithSalt` style
+      `Prelude.hashWithSalt` thickness
+
+instance Prelude.NFData TableBorderOptions where
+  rnf TableBorderOptions' {..} =
+    Prelude.rnf color
+      `Prelude.seq` Prelude.rnf style
+      `Prelude.seq` Prelude.rnf thickness
+
+instance Data.ToJSON TableBorderOptions where
+  toJSON TableBorderOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Color" Data..=) Prelude.<$> color,
+            ("Style" Data..=) Prelude.<$> style,
+            ("Thickness" Data..=) Prelude.<$> thickness
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableBorderStyle.hs b/gen/Amazonka/QuickSight/Types/TableBorderStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableBorderStyle.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.QuickSight.Types.TableBorderStyle
+-- 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.QuickSight.Types.TableBorderStyle
+  ( TableBorderStyle
+      ( ..,
+        TableBorderStyle_NONE,
+        TableBorderStyle_SOLID
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableBorderStyle = TableBorderStyle'
+  { fromTableBorderStyle ::
+      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 TableBorderStyle_NONE :: TableBorderStyle
+pattern TableBorderStyle_NONE = TableBorderStyle' "NONE"
+
+pattern TableBorderStyle_SOLID :: TableBorderStyle
+pattern TableBorderStyle_SOLID = TableBorderStyle' "SOLID"
+
+{-# COMPLETE
+  TableBorderStyle_NONE,
+  TableBorderStyle_SOLID,
+  TableBorderStyle'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TableCellConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/TableCellConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableCellConditionalFormatting.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.QuickSight.Types.TableCellConditionalFormatting
+-- 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.QuickSight.Types.TableCellConditionalFormatting 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.QuickSight.Types.TextConditionalFormat
+
+-- | The cell conditional formatting option for a table.
+--
+-- /See:/ 'newTableCellConditionalFormatting' smart constructor.
+data TableCellConditionalFormatting = TableCellConditionalFormatting'
+  { -- | The text format of the cell for conditional formatting.
+    textFormat :: Prelude.Maybe TextConditionalFormat,
+    -- | The field ID of the cell for conditional formatting.
+    fieldId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableCellConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'textFormat', 'tableCellConditionalFormatting_textFormat' - The text format of the cell for conditional formatting.
+--
+-- 'fieldId', 'tableCellConditionalFormatting_fieldId' - The field ID of the cell for conditional formatting.
+newTableCellConditionalFormatting ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  TableCellConditionalFormatting
+newTableCellConditionalFormatting pFieldId_ =
+  TableCellConditionalFormatting'
+    { textFormat =
+        Prelude.Nothing,
+      fieldId = pFieldId_
+    }
+
+-- | The text format of the cell for conditional formatting.
+tableCellConditionalFormatting_textFormat :: Lens.Lens' TableCellConditionalFormatting (Prelude.Maybe TextConditionalFormat)
+tableCellConditionalFormatting_textFormat = Lens.lens (\TableCellConditionalFormatting' {textFormat} -> textFormat) (\s@TableCellConditionalFormatting' {} a -> s {textFormat = a} :: TableCellConditionalFormatting)
+
+-- | The field ID of the cell for conditional formatting.
+tableCellConditionalFormatting_fieldId :: Lens.Lens' TableCellConditionalFormatting Prelude.Text
+tableCellConditionalFormatting_fieldId = Lens.lens (\TableCellConditionalFormatting' {fieldId} -> fieldId) (\s@TableCellConditionalFormatting' {} a -> s {fieldId = a} :: TableCellConditionalFormatting)
+
+instance Data.FromJSON TableCellConditionalFormatting where
+  parseJSON =
+    Data.withObject
+      "TableCellConditionalFormatting"
+      ( \x ->
+          TableCellConditionalFormatting'
+            Prelude.<$> (x Data..:? "TextFormat")
+            Prelude.<*> (x Data..: "FieldId")
+      )
+
+instance
+  Prelude.Hashable
+    TableCellConditionalFormatting
+  where
+  hashWithSalt
+    _salt
+    TableCellConditionalFormatting' {..} =
+      _salt
+        `Prelude.hashWithSalt` textFormat
+        `Prelude.hashWithSalt` fieldId
+
+instance
+  Prelude.NFData
+    TableCellConditionalFormatting
+  where
+  rnf TableCellConditionalFormatting' {..} =
+    Prelude.rnf textFormat
+      `Prelude.seq` Prelude.rnf fieldId
+
+instance Data.ToJSON TableCellConditionalFormatting where
+  toJSON TableCellConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TextFormat" Data..=) Prelude.<$> textFormat,
+            Prelude.Just ("FieldId" Data..= fieldId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableCellImageScalingConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableCellImageScalingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableCellImageScalingConfiguration.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.QuickSight.Types.TableCellImageScalingConfiguration
+-- 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.QuickSight.Types.TableCellImageScalingConfiguration
+  ( TableCellImageScalingConfiguration
+      ( ..,
+        TableCellImageScalingConfiguration_DO_NOT_SCALE,
+        TableCellImageScalingConfiguration_FIT_TO_CELL_HEIGHT,
+        TableCellImageScalingConfiguration_FIT_TO_CELL_WIDTH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableCellImageScalingConfiguration = TableCellImageScalingConfiguration'
+  { fromTableCellImageScalingConfiguration ::
+      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 TableCellImageScalingConfiguration_DO_NOT_SCALE :: TableCellImageScalingConfiguration
+pattern TableCellImageScalingConfiguration_DO_NOT_SCALE = TableCellImageScalingConfiguration' "DO_NOT_SCALE"
+
+pattern TableCellImageScalingConfiguration_FIT_TO_CELL_HEIGHT :: TableCellImageScalingConfiguration
+pattern TableCellImageScalingConfiguration_FIT_TO_CELL_HEIGHT = TableCellImageScalingConfiguration' "FIT_TO_CELL_HEIGHT"
+
+pattern TableCellImageScalingConfiguration_FIT_TO_CELL_WIDTH :: TableCellImageScalingConfiguration
+pattern TableCellImageScalingConfiguration_FIT_TO_CELL_WIDTH = TableCellImageScalingConfiguration' "FIT_TO_CELL_WIDTH"
+
+{-# COMPLETE
+  TableCellImageScalingConfiguration_DO_NOT_SCALE,
+  TableCellImageScalingConfiguration_FIT_TO_CELL_HEIGHT,
+  TableCellImageScalingConfiguration_FIT_TO_CELL_WIDTH,
+  TableCellImageScalingConfiguration'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TableCellImageSizingConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableCellImageSizingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableCellImageSizingConfiguration.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.QuickSight.Types.TableCellImageSizingConfiguration
+-- 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.QuickSight.Types.TableCellImageSizingConfiguration 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.QuickSight.Types.TableCellImageScalingConfiguration
+
+-- | The sizing options for the table image configuration.
+--
+-- /See:/ 'newTableCellImageSizingConfiguration' smart constructor.
+data TableCellImageSizingConfiguration = TableCellImageSizingConfiguration'
+  { -- | The cell scaling configuration of the sizing options for the table image
+    -- configuration.
+    tableCellImageScalingConfiguration :: Prelude.Maybe TableCellImageScalingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableCellImageSizingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tableCellImageScalingConfiguration', 'tableCellImageSizingConfiguration_tableCellImageScalingConfiguration' - The cell scaling configuration of the sizing options for the table image
+-- configuration.
+newTableCellImageSizingConfiguration ::
+  TableCellImageSizingConfiguration
+newTableCellImageSizingConfiguration =
+  TableCellImageSizingConfiguration'
+    { tableCellImageScalingConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The cell scaling configuration of the sizing options for the table image
+-- configuration.
+tableCellImageSizingConfiguration_tableCellImageScalingConfiguration :: Lens.Lens' TableCellImageSizingConfiguration (Prelude.Maybe TableCellImageScalingConfiguration)
+tableCellImageSizingConfiguration_tableCellImageScalingConfiguration = Lens.lens (\TableCellImageSizingConfiguration' {tableCellImageScalingConfiguration} -> tableCellImageScalingConfiguration) (\s@TableCellImageSizingConfiguration' {} a -> s {tableCellImageScalingConfiguration = a} :: TableCellImageSizingConfiguration)
+
+instance
+  Data.FromJSON
+    TableCellImageSizingConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "TableCellImageSizingConfiguration"
+      ( \x ->
+          TableCellImageSizingConfiguration'
+            Prelude.<$> (x Data..:? "TableCellImageScalingConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    TableCellImageSizingConfiguration
+  where
+  hashWithSalt
+    _salt
+    TableCellImageSizingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` tableCellImageScalingConfiguration
+
+instance
+  Prelude.NFData
+    TableCellImageSizingConfiguration
+  where
+  rnf TableCellImageSizingConfiguration' {..} =
+    Prelude.rnf tableCellImageScalingConfiguration
+
+instance
+  Data.ToJSON
+    TableCellImageSizingConfiguration
+  where
+  toJSON TableCellImageSizingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TableCellImageScalingConfiguration" Data..=)
+              Prelude.<$> tableCellImageScalingConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableCellStyle.hs b/gen/Amazonka/QuickSight/Types/TableCellStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableCellStyle.hs
@@ -0,0 +1,184 @@
+{-# 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.QuickSight.Types.TableCellStyle
+-- 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.QuickSight.Types.TableCellStyle 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.QuickSight.Types.FontConfiguration
+import Amazonka.QuickSight.Types.GlobalTableBorderOptions
+import Amazonka.QuickSight.Types.HorizontalTextAlignment
+import Amazonka.QuickSight.Types.TextWrap
+import Amazonka.QuickSight.Types.VerticalTextAlignment
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The table cell style for a cell in pivot table or table visual.
+--
+-- /See:/ 'newTableCellStyle' smart constructor.
+data TableCellStyle = TableCellStyle'
+  { -- | The background color for the table cells.
+    backgroundColor :: Prelude.Maybe Prelude.Text,
+    -- | The borders for the table cells.
+    border :: Prelude.Maybe GlobalTableBorderOptions,
+    -- | The font configuration of the table cells.
+    fontConfiguration :: Prelude.Maybe FontConfiguration,
+    -- | The height color for the table cells.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | The horizontal text alignment (left, center, right, auto) for the table
+    -- cells.
+    horizontalTextAlignment :: Prelude.Maybe HorizontalTextAlignment,
+    -- | The text wrap (none, wrap) for the table cells.
+    textWrap :: Prelude.Maybe TextWrap,
+    -- | The vertical text alignment (top, middle, bottom) for the table cells.
+    verticalTextAlignment :: Prelude.Maybe VerticalTextAlignment,
+    -- | The visibility of the table cells.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableCellStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backgroundColor', 'tableCellStyle_backgroundColor' - The background color for the table cells.
+--
+-- 'border', 'tableCellStyle_border' - The borders for the table cells.
+--
+-- 'fontConfiguration', 'tableCellStyle_fontConfiguration' - The font configuration of the table cells.
+--
+-- 'height', 'tableCellStyle_height' - The height color for the table cells.
+--
+-- 'horizontalTextAlignment', 'tableCellStyle_horizontalTextAlignment' - The horizontal text alignment (left, center, right, auto) for the table
+-- cells.
+--
+-- 'textWrap', 'tableCellStyle_textWrap' - The text wrap (none, wrap) for the table cells.
+--
+-- 'verticalTextAlignment', 'tableCellStyle_verticalTextAlignment' - The vertical text alignment (top, middle, bottom) for the table cells.
+--
+-- 'visibility', 'tableCellStyle_visibility' - The visibility of the table cells.
+newTableCellStyle ::
+  TableCellStyle
+newTableCellStyle =
+  TableCellStyle'
+    { backgroundColor = Prelude.Nothing,
+      border = Prelude.Nothing,
+      fontConfiguration = Prelude.Nothing,
+      height = Prelude.Nothing,
+      horizontalTextAlignment = Prelude.Nothing,
+      textWrap = Prelude.Nothing,
+      verticalTextAlignment = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The background color for the table cells.
+tableCellStyle_backgroundColor :: Lens.Lens' TableCellStyle (Prelude.Maybe Prelude.Text)
+tableCellStyle_backgroundColor = Lens.lens (\TableCellStyle' {backgroundColor} -> backgroundColor) (\s@TableCellStyle' {} a -> s {backgroundColor = a} :: TableCellStyle)
+
+-- | The borders for the table cells.
+tableCellStyle_border :: Lens.Lens' TableCellStyle (Prelude.Maybe GlobalTableBorderOptions)
+tableCellStyle_border = Lens.lens (\TableCellStyle' {border} -> border) (\s@TableCellStyle' {} a -> s {border = a} :: TableCellStyle)
+
+-- | The font configuration of the table cells.
+tableCellStyle_fontConfiguration :: Lens.Lens' TableCellStyle (Prelude.Maybe FontConfiguration)
+tableCellStyle_fontConfiguration = Lens.lens (\TableCellStyle' {fontConfiguration} -> fontConfiguration) (\s@TableCellStyle' {} a -> s {fontConfiguration = a} :: TableCellStyle)
+
+-- | The height color for the table cells.
+tableCellStyle_height :: Lens.Lens' TableCellStyle (Prelude.Maybe Prelude.Natural)
+tableCellStyle_height = Lens.lens (\TableCellStyle' {height} -> height) (\s@TableCellStyle' {} a -> s {height = a} :: TableCellStyle)
+
+-- | The horizontal text alignment (left, center, right, auto) for the table
+-- cells.
+tableCellStyle_horizontalTextAlignment :: Lens.Lens' TableCellStyle (Prelude.Maybe HorizontalTextAlignment)
+tableCellStyle_horizontalTextAlignment = Lens.lens (\TableCellStyle' {horizontalTextAlignment} -> horizontalTextAlignment) (\s@TableCellStyle' {} a -> s {horizontalTextAlignment = a} :: TableCellStyle)
+
+-- | The text wrap (none, wrap) for the table cells.
+tableCellStyle_textWrap :: Lens.Lens' TableCellStyle (Prelude.Maybe TextWrap)
+tableCellStyle_textWrap = Lens.lens (\TableCellStyle' {textWrap} -> textWrap) (\s@TableCellStyle' {} a -> s {textWrap = a} :: TableCellStyle)
+
+-- | The vertical text alignment (top, middle, bottom) for the table cells.
+tableCellStyle_verticalTextAlignment :: Lens.Lens' TableCellStyle (Prelude.Maybe VerticalTextAlignment)
+tableCellStyle_verticalTextAlignment = Lens.lens (\TableCellStyle' {verticalTextAlignment} -> verticalTextAlignment) (\s@TableCellStyle' {} a -> s {verticalTextAlignment = a} :: TableCellStyle)
+
+-- | The visibility of the table cells.
+tableCellStyle_visibility :: Lens.Lens' TableCellStyle (Prelude.Maybe Visibility)
+tableCellStyle_visibility = Lens.lens (\TableCellStyle' {visibility} -> visibility) (\s@TableCellStyle' {} a -> s {visibility = a} :: TableCellStyle)
+
+instance Data.FromJSON TableCellStyle where
+  parseJSON =
+    Data.withObject
+      "TableCellStyle"
+      ( \x ->
+          TableCellStyle'
+            Prelude.<$> (x Data..:? "BackgroundColor")
+            Prelude.<*> (x Data..:? "Border")
+            Prelude.<*> (x Data..:? "FontConfiguration")
+            Prelude.<*> (x Data..:? "Height")
+            Prelude.<*> (x Data..:? "HorizontalTextAlignment")
+            Prelude.<*> (x Data..:? "TextWrap")
+            Prelude.<*> (x Data..:? "VerticalTextAlignment")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable TableCellStyle where
+  hashWithSalt _salt TableCellStyle' {..} =
+    _salt
+      `Prelude.hashWithSalt` backgroundColor
+      `Prelude.hashWithSalt` border
+      `Prelude.hashWithSalt` fontConfiguration
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` horizontalTextAlignment
+      `Prelude.hashWithSalt` textWrap
+      `Prelude.hashWithSalt` verticalTextAlignment
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData TableCellStyle where
+  rnf TableCellStyle' {..} =
+    Prelude.rnf backgroundColor
+      `Prelude.seq` Prelude.rnf border
+      `Prelude.seq` Prelude.rnf fontConfiguration
+      `Prelude.seq` Prelude.rnf height
+      `Prelude.seq` Prelude.rnf horizontalTextAlignment
+      `Prelude.seq` Prelude.rnf textWrap
+      `Prelude.seq` Prelude.rnf verticalTextAlignment
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON TableCellStyle where
+  toJSON TableCellStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BackgroundColor" Data..=)
+              Prelude.<$> backgroundColor,
+            ("Border" Data..=) Prelude.<$> border,
+            ("FontConfiguration" Data..=)
+              Prelude.<$> fontConfiguration,
+            ("Height" Data..=) Prelude.<$> height,
+            ("HorizontalTextAlignment" Data..=)
+              Prelude.<$> horizontalTextAlignment,
+            ("TextWrap" Data..=) Prelude.<$> textWrap,
+            ("VerticalTextAlignment" Data..=)
+              Prelude.<$> verticalTextAlignment,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/TableConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableConditionalFormatting.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.QuickSight.Types.TableConditionalFormatting
+-- 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.QuickSight.Types.TableConditionalFormatting 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.QuickSight.Types.TableConditionalFormattingOption
+
+-- | The conditional formatting for a @PivotTableVisual@.
+--
+-- /See:/ 'newTableConditionalFormatting' smart constructor.
+data TableConditionalFormatting = TableConditionalFormatting'
+  { -- | Conditional formatting options for a @PivotTableVisual@.
+    conditionalFormattingOptions :: Prelude.Maybe [TableConditionalFormattingOption]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conditionalFormattingOptions', 'tableConditionalFormatting_conditionalFormattingOptions' - Conditional formatting options for a @PivotTableVisual@.
+newTableConditionalFormatting ::
+  TableConditionalFormatting
+newTableConditionalFormatting =
+  TableConditionalFormatting'
+    { conditionalFormattingOptions =
+        Prelude.Nothing
+    }
+
+-- | Conditional formatting options for a @PivotTableVisual@.
+tableConditionalFormatting_conditionalFormattingOptions :: Lens.Lens' TableConditionalFormatting (Prelude.Maybe [TableConditionalFormattingOption])
+tableConditionalFormatting_conditionalFormattingOptions = Lens.lens (\TableConditionalFormatting' {conditionalFormattingOptions} -> conditionalFormattingOptions) (\s@TableConditionalFormatting' {} a -> s {conditionalFormattingOptions = a} :: TableConditionalFormatting) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TableConditionalFormatting where
+  parseJSON =
+    Data.withObject
+      "TableConditionalFormatting"
+      ( \x ->
+          TableConditionalFormatting'
+            Prelude.<$> ( x
+                            Data..:? "ConditionalFormattingOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable TableConditionalFormatting where
+  hashWithSalt _salt TableConditionalFormatting' {..} =
+    _salt
+      `Prelude.hashWithSalt` conditionalFormattingOptions
+
+instance Prelude.NFData TableConditionalFormatting where
+  rnf TableConditionalFormatting' {..} =
+    Prelude.rnf conditionalFormattingOptions
+
+instance Data.ToJSON TableConditionalFormatting where
+  toJSON TableConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConditionalFormattingOptions" Data..=)
+              Prelude.<$> conditionalFormattingOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableConditionalFormattingOption.hs b/gen/Amazonka/QuickSight/Types/TableConditionalFormattingOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableConditionalFormattingOption.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.QuickSight.Types.TableConditionalFormattingOption
+-- 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.QuickSight.Types.TableConditionalFormattingOption 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.QuickSight.Types.TableCellConditionalFormatting
+import Amazonka.QuickSight.Types.TableRowConditionalFormatting
+
+-- | Conditional formatting options for a @PivotTableVisual@.
+--
+-- /See:/ 'newTableConditionalFormattingOption' smart constructor.
+data TableConditionalFormattingOption = TableConditionalFormattingOption'
+  { -- | The cell conditional formatting option for a table.
+    cell :: Prelude.Maybe TableCellConditionalFormatting,
+    -- | The row conditional formatting option for a table.
+    row :: Prelude.Maybe TableRowConditionalFormatting
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableConditionalFormattingOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cell', 'tableConditionalFormattingOption_cell' - The cell conditional formatting option for a table.
+--
+-- 'row', 'tableConditionalFormattingOption_row' - The row conditional formatting option for a table.
+newTableConditionalFormattingOption ::
+  TableConditionalFormattingOption
+newTableConditionalFormattingOption =
+  TableConditionalFormattingOption'
+    { cell =
+        Prelude.Nothing,
+      row = Prelude.Nothing
+    }
+
+-- | The cell conditional formatting option for a table.
+tableConditionalFormattingOption_cell :: Lens.Lens' TableConditionalFormattingOption (Prelude.Maybe TableCellConditionalFormatting)
+tableConditionalFormattingOption_cell = Lens.lens (\TableConditionalFormattingOption' {cell} -> cell) (\s@TableConditionalFormattingOption' {} a -> s {cell = a} :: TableConditionalFormattingOption)
+
+-- | The row conditional formatting option for a table.
+tableConditionalFormattingOption_row :: Lens.Lens' TableConditionalFormattingOption (Prelude.Maybe TableRowConditionalFormatting)
+tableConditionalFormattingOption_row = Lens.lens (\TableConditionalFormattingOption' {row} -> row) (\s@TableConditionalFormattingOption' {} a -> s {row = a} :: TableConditionalFormattingOption)
+
+instance
+  Data.FromJSON
+    TableConditionalFormattingOption
+  where
+  parseJSON =
+    Data.withObject
+      "TableConditionalFormattingOption"
+      ( \x ->
+          TableConditionalFormattingOption'
+            Prelude.<$> (x Data..:? "Cell")
+            Prelude.<*> (x Data..:? "Row")
+      )
+
+instance
+  Prelude.Hashable
+    TableConditionalFormattingOption
+  where
+  hashWithSalt
+    _salt
+    TableConditionalFormattingOption' {..} =
+      _salt
+        `Prelude.hashWithSalt` cell
+        `Prelude.hashWithSalt` row
+
+instance
+  Prelude.NFData
+    TableConditionalFormattingOption
+  where
+  rnf TableConditionalFormattingOption' {..} =
+    Prelude.rnf cell `Prelude.seq` Prelude.rnf row
+
+instance Data.ToJSON TableConditionalFormattingOption where
+  toJSON TableConditionalFormattingOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Cell" Data..=) Prelude.<$> cell,
+            ("Row" Data..=) Prelude.<$> row
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableConfiguration.hs
@@ -0,0 +1,153 @@
+{-# 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.QuickSight.Types.TableConfiguration
+-- 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.QuickSight.Types.TableConfiguration 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.QuickSight.Types.TableFieldOptions
+import Amazonka.QuickSight.Types.TableFieldWells
+import Amazonka.QuickSight.Types.TableOptions
+import Amazonka.QuickSight.Types.TablePaginatedReportOptions
+import Amazonka.QuickSight.Types.TableSortConfiguration
+import Amazonka.QuickSight.Types.TotalOptions
+
+-- | The configuration for a @TableVisual@.
+--
+-- /See:/ 'newTableConfiguration' smart constructor.
+data TableConfiguration = TableConfiguration'
+  { -- | The field options for a table visual.
+    fieldOptions :: Prelude.Maybe TableFieldOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe TableFieldWells,
+    -- | The paginated report options for a table visual.
+    paginatedReportOptions :: Prelude.Maybe TablePaginatedReportOptions,
+    -- | The sort configuration for a @TableVisual@.
+    sortConfiguration :: Prelude.Maybe TableSortConfiguration,
+    -- | The table options for a table visual.
+    tableOptions :: Prelude.Maybe TableOptions,
+    -- | The total options for a table visual.
+    totalOptions :: Prelude.Maybe TotalOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldOptions', 'tableConfiguration_fieldOptions' - The field options for a table visual.
+--
+-- 'fieldWells', 'tableConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'paginatedReportOptions', 'tableConfiguration_paginatedReportOptions' - The paginated report options for a table visual.
+--
+-- 'sortConfiguration', 'tableConfiguration_sortConfiguration' - The sort configuration for a @TableVisual@.
+--
+-- 'tableOptions', 'tableConfiguration_tableOptions' - The table options for a table visual.
+--
+-- 'totalOptions', 'tableConfiguration_totalOptions' - The total options for a table visual.
+newTableConfiguration ::
+  TableConfiguration
+newTableConfiguration =
+  TableConfiguration'
+    { fieldOptions = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      paginatedReportOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tableOptions = Prelude.Nothing,
+      totalOptions = Prelude.Nothing
+    }
+
+-- | The field options for a table visual.
+tableConfiguration_fieldOptions :: Lens.Lens' TableConfiguration (Prelude.Maybe TableFieldOptions)
+tableConfiguration_fieldOptions = Lens.lens (\TableConfiguration' {fieldOptions} -> fieldOptions) (\s@TableConfiguration' {} a -> s {fieldOptions = a} :: TableConfiguration)
+
+-- | The field wells of the visual.
+tableConfiguration_fieldWells :: Lens.Lens' TableConfiguration (Prelude.Maybe TableFieldWells)
+tableConfiguration_fieldWells = Lens.lens (\TableConfiguration' {fieldWells} -> fieldWells) (\s@TableConfiguration' {} a -> s {fieldWells = a} :: TableConfiguration)
+
+-- | The paginated report options for a table visual.
+tableConfiguration_paginatedReportOptions :: Lens.Lens' TableConfiguration (Prelude.Maybe TablePaginatedReportOptions)
+tableConfiguration_paginatedReportOptions = Lens.lens (\TableConfiguration' {paginatedReportOptions} -> paginatedReportOptions) (\s@TableConfiguration' {} a -> s {paginatedReportOptions = a} :: TableConfiguration)
+
+-- | The sort configuration for a @TableVisual@.
+tableConfiguration_sortConfiguration :: Lens.Lens' TableConfiguration (Prelude.Maybe TableSortConfiguration)
+tableConfiguration_sortConfiguration = Lens.lens (\TableConfiguration' {sortConfiguration} -> sortConfiguration) (\s@TableConfiguration' {} a -> s {sortConfiguration = a} :: TableConfiguration)
+
+-- | The table options for a table visual.
+tableConfiguration_tableOptions :: Lens.Lens' TableConfiguration (Prelude.Maybe TableOptions)
+tableConfiguration_tableOptions = Lens.lens (\TableConfiguration' {tableOptions} -> tableOptions) (\s@TableConfiguration' {} a -> s {tableOptions = a} :: TableConfiguration)
+
+-- | The total options for a table visual.
+tableConfiguration_totalOptions :: Lens.Lens' TableConfiguration (Prelude.Maybe TotalOptions)
+tableConfiguration_totalOptions = Lens.lens (\TableConfiguration' {totalOptions} -> totalOptions) (\s@TableConfiguration' {} a -> s {totalOptions = a} :: TableConfiguration)
+
+instance Data.FromJSON TableConfiguration where
+  parseJSON =
+    Data.withObject
+      "TableConfiguration"
+      ( \x ->
+          TableConfiguration'
+            Prelude.<$> (x Data..:? "FieldOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "PaginatedReportOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "TableOptions")
+            Prelude.<*> (x Data..:? "TotalOptions")
+      )
+
+instance Prelude.Hashable TableConfiguration where
+  hashWithSalt _salt TableConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` paginatedReportOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tableOptions
+      `Prelude.hashWithSalt` totalOptions
+
+instance Prelude.NFData TableConfiguration where
+  rnf TableConfiguration' {..} =
+    Prelude.rnf fieldOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf paginatedReportOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tableOptions
+      `Prelude.seq` Prelude.rnf totalOptions
+
+instance Data.ToJSON TableConfiguration where
+  toJSON TableConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldOptions" Data..=) Prelude.<$> fieldOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("PaginatedReportOptions" Data..=)
+              Prelude.<$> paginatedReportOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("TableOptions" Data..=) Prelude.<$> tableOptions,
+            ("TotalOptions" Data..=) Prelude.<$> totalOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldCustomIconContent.hs b/gen/Amazonka/QuickSight/Types/TableFieldCustomIconContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldCustomIconContent.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldCustomIconContent
+-- 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.QuickSight.Types.TableFieldCustomIconContent 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.QuickSight.Types.TableFieldIconSetType
+
+-- | The custom icon content for the table link content configuration.
+--
+-- /See:/ 'newTableFieldCustomIconContent' smart constructor.
+data TableFieldCustomIconContent = TableFieldCustomIconContent'
+  { -- | The icon set type (link) of the custom icon content for table URL link
+    -- content.
+    icon :: Prelude.Maybe TableFieldIconSetType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldCustomIconContent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'icon', 'tableFieldCustomIconContent_icon' - The icon set type (link) of the custom icon content for table URL link
+-- content.
+newTableFieldCustomIconContent ::
+  TableFieldCustomIconContent
+newTableFieldCustomIconContent =
+  TableFieldCustomIconContent'
+    { icon =
+        Prelude.Nothing
+    }
+
+-- | The icon set type (link) of the custom icon content for table URL link
+-- content.
+tableFieldCustomIconContent_icon :: Lens.Lens' TableFieldCustomIconContent (Prelude.Maybe TableFieldIconSetType)
+tableFieldCustomIconContent_icon = Lens.lens (\TableFieldCustomIconContent' {icon} -> icon) (\s@TableFieldCustomIconContent' {} a -> s {icon = a} :: TableFieldCustomIconContent)
+
+instance Data.FromJSON TableFieldCustomIconContent where
+  parseJSON =
+    Data.withObject
+      "TableFieldCustomIconContent"
+      ( \x ->
+          TableFieldCustomIconContent'
+            Prelude.<$> (x Data..:? "Icon")
+      )
+
+instance Prelude.Hashable TableFieldCustomIconContent where
+  hashWithSalt _salt TableFieldCustomIconContent' {..} =
+    _salt `Prelude.hashWithSalt` icon
+
+instance Prelude.NFData TableFieldCustomIconContent where
+  rnf TableFieldCustomIconContent' {..} =
+    Prelude.rnf icon
+
+instance Data.ToJSON TableFieldCustomIconContent where
+  toJSON TableFieldCustomIconContent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Icon" Data..=) Prelude.<$> icon]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldCustomTextContent.hs b/gen/Amazonka/QuickSight/Types/TableFieldCustomTextContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldCustomTextContent.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.QuickSight.Types.TableFieldCustomTextContent
+-- 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.QuickSight.Types.TableFieldCustomTextContent 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.QuickSight.Types.FontConfiguration
+
+-- | The custom text content (value, font configuration) for the table link
+-- content configuration.
+--
+-- /See:/ 'newTableFieldCustomTextContent' smart constructor.
+data TableFieldCustomTextContent = TableFieldCustomTextContent'
+  { -- | The string value of the custom text content for the table URL link
+    -- content.
+    value :: Prelude.Maybe Prelude.Text,
+    -- | The font configuration of the custom text content for the table URL link
+    -- content.
+    fontConfiguration :: FontConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldCustomTextContent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'value', 'tableFieldCustomTextContent_value' - The string value of the custom text content for the table URL link
+-- content.
+--
+-- 'fontConfiguration', 'tableFieldCustomTextContent_fontConfiguration' - The font configuration of the custom text content for the table URL link
+-- content.
+newTableFieldCustomTextContent ::
+  -- | 'fontConfiguration'
+  FontConfiguration ->
+  TableFieldCustomTextContent
+newTableFieldCustomTextContent pFontConfiguration_ =
+  TableFieldCustomTextContent'
+    { value =
+        Prelude.Nothing,
+      fontConfiguration = pFontConfiguration_
+    }
+
+-- | The string value of the custom text content for the table URL link
+-- content.
+tableFieldCustomTextContent_value :: Lens.Lens' TableFieldCustomTextContent (Prelude.Maybe Prelude.Text)
+tableFieldCustomTextContent_value = Lens.lens (\TableFieldCustomTextContent' {value} -> value) (\s@TableFieldCustomTextContent' {} a -> s {value = a} :: TableFieldCustomTextContent)
+
+-- | The font configuration of the custom text content for the table URL link
+-- content.
+tableFieldCustomTextContent_fontConfiguration :: Lens.Lens' TableFieldCustomTextContent FontConfiguration
+tableFieldCustomTextContent_fontConfiguration = Lens.lens (\TableFieldCustomTextContent' {fontConfiguration} -> fontConfiguration) (\s@TableFieldCustomTextContent' {} a -> s {fontConfiguration = a} :: TableFieldCustomTextContent)
+
+instance Data.FromJSON TableFieldCustomTextContent where
+  parseJSON =
+    Data.withObject
+      "TableFieldCustomTextContent"
+      ( \x ->
+          TableFieldCustomTextContent'
+            Prelude.<$> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "FontConfiguration")
+      )
+
+instance Prelude.Hashable TableFieldCustomTextContent where
+  hashWithSalt _salt TableFieldCustomTextContent' {..} =
+    _salt
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` fontConfiguration
+
+instance Prelude.NFData TableFieldCustomTextContent where
+  rnf TableFieldCustomTextContent' {..} =
+    Prelude.rnf value
+      `Prelude.seq` Prelude.rnf fontConfiguration
+
+instance Data.ToJSON TableFieldCustomTextContent where
+  toJSON TableFieldCustomTextContent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just
+              ("FontConfiguration" Data..= fontConfiguration)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldIconSetType.hs b/gen/Amazonka/QuickSight/Types/TableFieldIconSetType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldIconSetType.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.QuickSight.Types.TableFieldIconSetType
+-- 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.QuickSight.Types.TableFieldIconSetType
+  ( TableFieldIconSetType
+      ( ..,
+        TableFieldIconSetType_LINK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableFieldIconSetType = TableFieldIconSetType'
+  { fromTableFieldIconSetType ::
+      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 TableFieldIconSetType_LINK :: TableFieldIconSetType
+pattern TableFieldIconSetType_LINK = TableFieldIconSetType' "LINK"
+
+{-# COMPLETE
+  TableFieldIconSetType_LINK,
+  TableFieldIconSetType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldImageConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableFieldImageConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldImageConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldImageConfiguration
+-- 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.QuickSight.Types.TableFieldImageConfiguration 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.QuickSight.Types.TableCellImageSizingConfiguration
+
+-- | The image configuration of a table field URL.
+--
+-- /See:/ 'newTableFieldImageConfiguration' smart constructor.
+data TableFieldImageConfiguration = TableFieldImageConfiguration'
+  { -- | The sizing options for the table image configuration.
+    sizingOptions :: Prelude.Maybe TableCellImageSizingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldImageConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sizingOptions', 'tableFieldImageConfiguration_sizingOptions' - The sizing options for the table image configuration.
+newTableFieldImageConfiguration ::
+  TableFieldImageConfiguration
+newTableFieldImageConfiguration =
+  TableFieldImageConfiguration'
+    { sizingOptions =
+        Prelude.Nothing
+    }
+
+-- | The sizing options for the table image configuration.
+tableFieldImageConfiguration_sizingOptions :: Lens.Lens' TableFieldImageConfiguration (Prelude.Maybe TableCellImageSizingConfiguration)
+tableFieldImageConfiguration_sizingOptions = Lens.lens (\TableFieldImageConfiguration' {sizingOptions} -> sizingOptions) (\s@TableFieldImageConfiguration' {} a -> s {sizingOptions = a} :: TableFieldImageConfiguration)
+
+instance Data.FromJSON TableFieldImageConfiguration where
+  parseJSON =
+    Data.withObject
+      "TableFieldImageConfiguration"
+      ( \x ->
+          TableFieldImageConfiguration'
+            Prelude.<$> (x Data..:? "SizingOptions")
+      )
+
+instance
+  Prelude.Hashable
+    TableFieldImageConfiguration
+  where
+  hashWithSalt _salt TableFieldImageConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` sizingOptions
+
+instance Prelude.NFData TableFieldImageConfiguration where
+  rnf TableFieldImageConfiguration' {..} =
+    Prelude.rnf sizingOptions
+
+instance Data.ToJSON TableFieldImageConfiguration where
+  toJSON TableFieldImageConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SizingOptions" Data..=)
+              Prelude.<$> sizingOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldLinkConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableFieldLinkConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldLinkConfiguration.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.QuickSight.Types.TableFieldLinkConfiguration
+-- 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.QuickSight.Types.TableFieldLinkConfiguration 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.QuickSight.Types.TableFieldLinkContentConfiguration
+import Amazonka.QuickSight.Types.URLTargetConfiguration
+
+-- | The link configuration of a table field URL.
+--
+-- /See:/ 'newTableFieldLinkConfiguration' smart constructor.
+data TableFieldLinkConfiguration = TableFieldLinkConfiguration'
+  { -- | The URL target (new tab, new window, same tab) for the table link
+    -- configuration.
+    target :: URLTargetConfiguration,
+    -- | The URL content (text, icon) for the table link configuration.
+    content :: TableFieldLinkContentConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldLinkConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'target', 'tableFieldLinkConfiguration_target' - The URL target (new tab, new window, same tab) for the table link
+-- configuration.
+--
+-- 'content', 'tableFieldLinkConfiguration_content' - The URL content (text, icon) for the table link configuration.
+newTableFieldLinkConfiguration ::
+  -- | 'target'
+  URLTargetConfiguration ->
+  -- | 'content'
+  TableFieldLinkContentConfiguration ->
+  TableFieldLinkConfiguration
+newTableFieldLinkConfiguration pTarget_ pContent_ =
+  TableFieldLinkConfiguration'
+    { target = pTarget_,
+      content = pContent_
+    }
+
+-- | The URL target (new tab, new window, same tab) for the table link
+-- configuration.
+tableFieldLinkConfiguration_target :: Lens.Lens' TableFieldLinkConfiguration URLTargetConfiguration
+tableFieldLinkConfiguration_target = Lens.lens (\TableFieldLinkConfiguration' {target} -> target) (\s@TableFieldLinkConfiguration' {} a -> s {target = a} :: TableFieldLinkConfiguration)
+
+-- | The URL content (text, icon) for the table link configuration.
+tableFieldLinkConfiguration_content :: Lens.Lens' TableFieldLinkConfiguration TableFieldLinkContentConfiguration
+tableFieldLinkConfiguration_content = Lens.lens (\TableFieldLinkConfiguration' {content} -> content) (\s@TableFieldLinkConfiguration' {} a -> s {content = a} :: TableFieldLinkConfiguration)
+
+instance Data.FromJSON TableFieldLinkConfiguration where
+  parseJSON =
+    Data.withObject
+      "TableFieldLinkConfiguration"
+      ( \x ->
+          TableFieldLinkConfiguration'
+            Prelude.<$> (x Data..: "Target")
+            Prelude.<*> (x Data..: "Content")
+      )
+
+instance Prelude.Hashable TableFieldLinkConfiguration where
+  hashWithSalt _salt TableFieldLinkConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` target
+      `Prelude.hashWithSalt` content
+
+instance Prelude.NFData TableFieldLinkConfiguration where
+  rnf TableFieldLinkConfiguration' {..} =
+    Prelude.rnf target
+      `Prelude.seq` Prelude.rnf content
+
+instance Data.ToJSON TableFieldLinkConfiguration where
+  toJSON TableFieldLinkConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Target" Data..= target),
+            Prelude.Just ("Content" Data..= content)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldLinkContentConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableFieldLinkContentConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldLinkContentConfiguration.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldLinkContentConfiguration
+-- 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.QuickSight.Types.TableFieldLinkContentConfiguration 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.QuickSight.Types.TableFieldCustomIconContent
+import Amazonka.QuickSight.Types.TableFieldCustomTextContent
+
+-- | The URL content (text, icon) for the table link configuration.
+--
+-- /See:/ 'newTableFieldLinkContentConfiguration' smart constructor.
+data TableFieldLinkContentConfiguration = TableFieldLinkContentConfiguration'
+  { -- | The custom icon content for the table link content configuration.
+    customIconContent :: Prelude.Maybe TableFieldCustomIconContent,
+    -- | The custom text content (value, font configuration) for the table link
+    -- content configuration.
+    customTextContent :: Prelude.Maybe TableFieldCustomTextContent
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldLinkContentConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customIconContent', 'tableFieldLinkContentConfiguration_customIconContent' - The custom icon content for the table link content configuration.
+--
+-- 'customTextContent', 'tableFieldLinkContentConfiguration_customTextContent' - The custom text content (value, font configuration) for the table link
+-- content configuration.
+newTableFieldLinkContentConfiguration ::
+  TableFieldLinkContentConfiguration
+newTableFieldLinkContentConfiguration =
+  TableFieldLinkContentConfiguration'
+    { customIconContent =
+        Prelude.Nothing,
+      customTextContent = Prelude.Nothing
+    }
+
+-- | The custom icon content for the table link content configuration.
+tableFieldLinkContentConfiguration_customIconContent :: Lens.Lens' TableFieldLinkContentConfiguration (Prelude.Maybe TableFieldCustomIconContent)
+tableFieldLinkContentConfiguration_customIconContent = Lens.lens (\TableFieldLinkContentConfiguration' {customIconContent} -> customIconContent) (\s@TableFieldLinkContentConfiguration' {} a -> s {customIconContent = a} :: TableFieldLinkContentConfiguration)
+
+-- | The custom text content (value, font configuration) for the table link
+-- content configuration.
+tableFieldLinkContentConfiguration_customTextContent :: Lens.Lens' TableFieldLinkContentConfiguration (Prelude.Maybe TableFieldCustomTextContent)
+tableFieldLinkContentConfiguration_customTextContent = Lens.lens (\TableFieldLinkContentConfiguration' {customTextContent} -> customTextContent) (\s@TableFieldLinkContentConfiguration' {} a -> s {customTextContent = a} :: TableFieldLinkContentConfiguration)
+
+instance
+  Data.FromJSON
+    TableFieldLinkContentConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "TableFieldLinkContentConfiguration"
+      ( \x ->
+          TableFieldLinkContentConfiguration'
+            Prelude.<$> (x Data..:? "CustomIconContent")
+            Prelude.<*> (x Data..:? "CustomTextContent")
+      )
+
+instance
+  Prelude.Hashable
+    TableFieldLinkContentConfiguration
+  where
+  hashWithSalt
+    _salt
+    TableFieldLinkContentConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` customIconContent
+        `Prelude.hashWithSalt` customTextContent
+
+instance
+  Prelude.NFData
+    TableFieldLinkContentConfiguration
+  where
+  rnf TableFieldLinkContentConfiguration' {..} =
+    Prelude.rnf customIconContent
+      `Prelude.seq` Prelude.rnf customTextContent
+
+instance
+  Data.ToJSON
+    TableFieldLinkContentConfiguration
+  where
+  toJSON TableFieldLinkContentConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomIconContent" Data..=)
+              Prelude.<$> customIconContent,
+            ("CustomTextContent" Data..=)
+              Prelude.<$> customTextContent
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldOption.hs b/gen/Amazonka/QuickSight/Types/TableFieldOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldOption.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldOption
+-- 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.QuickSight.Types.TableFieldOption 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.QuickSight.Types.TableFieldURLConfiguration
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options for a table field.
+--
+-- /See:/ 'newTableFieldOption' smart constructor.
+data TableFieldOption = TableFieldOption'
+  { -- | The custom label for a table field.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The URL configuration for a table field.
+    uRLStyling :: Prelude.Maybe TableFieldURLConfiguration,
+    -- | The visibility of a table field.
+    visibility :: Prelude.Maybe Visibility,
+    -- | The width for a table field.
+    width :: Prelude.Maybe Prelude.Text,
+    -- | The field ID for a table field.
+    fieldId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldOption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'tableFieldOption_customLabel' - The custom label for a table field.
+--
+-- 'uRLStyling', 'tableFieldOption_uRLStyling' - The URL configuration for a table field.
+--
+-- 'visibility', 'tableFieldOption_visibility' - The visibility of a table field.
+--
+-- 'width', 'tableFieldOption_width' - The width for a table field.
+--
+-- 'fieldId', 'tableFieldOption_fieldId' - The field ID for a table field.
+newTableFieldOption ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  TableFieldOption
+newTableFieldOption pFieldId_ =
+  TableFieldOption'
+    { customLabel = Prelude.Nothing,
+      uRLStyling = Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      width = Prelude.Nothing,
+      fieldId = pFieldId_
+    }
+
+-- | The custom label for a table field.
+tableFieldOption_customLabel :: Lens.Lens' TableFieldOption (Prelude.Maybe Prelude.Text)
+tableFieldOption_customLabel = Lens.lens (\TableFieldOption' {customLabel} -> customLabel) (\s@TableFieldOption' {} a -> s {customLabel = a} :: TableFieldOption)
+
+-- | The URL configuration for a table field.
+tableFieldOption_uRLStyling :: Lens.Lens' TableFieldOption (Prelude.Maybe TableFieldURLConfiguration)
+tableFieldOption_uRLStyling = Lens.lens (\TableFieldOption' {uRLStyling} -> uRLStyling) (\s@TableFieldOption' {} a -> s {uRLStyling = a} :: TableFieldOption)
+
+-- | The visibility of a table field.
+tableFieldOption_visibility :: Lens.Lens' TableFieldOption (Prelude.Maybe Visibility)
+tableFieldOption_visibility = Lens.lens (\TableFieldOption' {visibility} -> visibility) (\s@TableFieldOption' {} a -> s {visibility = a} :: TableFieldOption)
+
+-- | The width for a table field.
+tableFieldOption_width :: Lens.Lens' TableFieldOption (Prelude.Maybe Prelude.Text)
+tableFieldOption_width = Lens.lens (\TableFieldOption' {width} -> width) (\s@TableFieldOption' {} a -> s {width = a} :: TableFieldOption)
+
+-- | The field ID for a table field.
+tableFieldOption_fieldId :: Lens.Lens' TableFieldOption Prelude.Text
+tableFieldOption_fieldId = Lens.lens (\TableFieldOption' {fieldId} -> fieldId) (\s@TableFieldOption' {} a -> s {fieldId = a} :: TableFieldOption)
+
+instance Data.FromJSON TableFieldOption where
+  parseJSON =
+    Data.withObject
+      "TableFieldOption"
+      ( \x ->
+          TableFieldOption'
+            Prelude.<$> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "URLStyling")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..:? "Width")
+            Prelude.<*> (x Data..: "FieldId")
+      )
+
+instance Prelude.Hashable TableFieldOption where
+  hashWithSalt _salt TableFieldOption' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` uRLStyling
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` width
+      `Prelude.hashWithSalt` fieldId
+
+instance Prelude.NFData TableFieldOption where
+  rnf TableFieldOption' {..} =
+    Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf uRLStyling
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf width
+      `Prelude.seq` Prelude.rnf fieldId
+
+instance Data.ToJSON TableFieldOption where
+  toJSON TableFieldOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("URLStyling" Data..=) Prelude.<$> uRLStyling,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            ("Width" Data..=) Prelude.<$> width,
+            Prelude.Just ("FieldId" Data..= fieldId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldOptions.hs b/gen/Amazonka/QuickSight/Types/TableFieldOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldOptions.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldOptions
+-- 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.QuickSight.Types.TableFieldOptions 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.QuickSight.Types.TableFieldOption
+
+-- | The field options for a table visual.
+--
+-- /See:/ 'newTableFieldOptions' smart constructor.
+data TableFieldOptions = TableFieldOptions'
+  { -- | The order of field IDs of the field options for a table visual.
+    order :: Prelude.Maybe [Prelude.Text],
+    -- | The selected field options for the table field options.
+    selectedFieldOptions :: Prelude.Maybe [TableFieldOption]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'order', 'tableFieldOptions_order' - The order of field IDs of the field options for a table visual.
+--
+-- 'selectedFieldOptions', 'tableFieldOptions_selectedFieldOptions' - The selected field options for the table field options.
+newTableFieldOptions ::
+  TableFieldOptions
+newTableFieldOptions =
+  TableFieldOptions'
+    { order = Prelude.Nothing,
+      selectedFieldOptions = Prelude.Nothing
+    }
+
+-- | The order of field IDs of the field options for a table visual.
+tableFieldOptions_order :: Lens.Lens' TableFieldOptions (Prelude.Maybe [Prelude.Text])
+tableFieldOptions_order = Lens.lens (\TableFieldOptions' {order} -> order) (\s@TableFieldOptions' {} a -> s {order = a} :: TableFieldOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The selected field options for the table field options.
+tableFieldOptions_selectedFieldOptions :: Lens.Lens' TableFieldOptions (Prelude.Maybe [TableFieldOption])
+tableFieldOptions_selectedFieldOptions = Lens.lens (\TableFieldOptions' {selectedFieldOptions} -> selectedFieldOptions) (\s@TableFieldOptions' {} a -> s {selectedFieldOptions = a} :: TableFieldOptions) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TableFieldOptions where
+  parseJSON =
+    Data.withObject
+      "TableFieldOptions"
+      ( \x ->
+          TableFieldOptions'
+            Prelude.<$> (x Data..:? "Order" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "SelectedFieldOptions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable TableFieldOptions where
+  hashWithSalt _salt TableFieldOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` order
+      `Prelude.hashWithSalt` selectedFieldOptions
+
+instance Prelude.NFData TableFieldOptions where
+  rnf TableFieldOptions' {..} =
+    Prelude.rnf order
+      `Prelude.seq` Prelude.rnf selectedFieldOptions
+
+instance Data.ToJSON TableFieldOptions where
+  toJSON TableFieldOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Order" Data..=) Prelude.<$> order,
+            ("SelectedFieldOptions" Data..=)
+              Prelude.<$> selectedFieldOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldURLConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableFieldURLConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldURLConfiguration.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldURLConfiguration
+-- 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.QuickSight.Types.TableFieldURLConfiguration 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.QuickSight.Types.TableFieldImageConfiguration
+import Amazonka.QuickSight.Types.TableFieldLinkConfiguration
+
+-- | The URL configuration for a table field.
+--
+-- /See:/ 'newTableFieldURLConfiguration' smart constructor.
+data TableFieldURLConfiguration = TableFieldURLConfiguration'
+  { -- | The image configuration of a table field URL.
+    imageConfiguration :: Prelude.Maybe TableFieldImageConfiguration,
+    -- | The link configuration of a table field URL.
+    linkConfiguration :: Prelude.Maybe TableFieldLinkConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldURLConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'imageConfiguration', 'tableFieldURLConfiguration_imageConfiguration' - The image configuration of a table field URL.
+--
+-- 'linkConfiguration', 'tableFieldURLConfiguration_linkConfiguration' - The link configuration of a table field URL.
+newTableFieldURLConfiguration ::
+  TableFieldURLConfiguration
+newTableFieldURLConfiguration =
+  TableFieldURLConfiguration'
+    { imageConfiguration =
+        Prelude.Nothing,
+      linkConfiguration = Prelude.Nothing
+    }
+
+-- | The image configuration of a table field URL.
+tableFieldURLConfiguration_imageConfiguration :: Lens.Lens' TableFieldURLConfiguration (Prelude.Maybe TableFieldImageConfiguration)
+tableFieldURLConfiguration_imageConfiguration = Lens.lens (\TableFieldURLConfiguration' {imageConfiguration} -> imageConfiguration) (\s@TableFieldURLConfiguration' {} a -> s {imageConfiguration = a} :: TableFieldURLConfiguration)
+
+-- | The link configuration of a table field URL.
+tableFieldURLConfiguration_linkConfiguration :: Lens.Lens' TableFieldURLConfiguration (Prelude.Maybe TableFieldLinkConfiguration)
+tableFieldURLConfiguration_linkConfiguration = Lens.lens (\TableFieldURLConfiguration' {linkConfiguration} -> linkConfiguration) (\s@TableFieldURLConfiguration' {} a -> s {linkConfiguration = a} :: TableFieldURLConfiguration)
+
+instance Data.FromJSON TableFieldURLConfiguration where
+  parseJSON =
+    Data.withObject
+      "TableFieldURLConfiguration"
+      ( \x ->
+          TableFieldURLConfiguration'
+            Prelude.<$> (x Data..:? "ImageConfiguration")
+            Prelude.<*> (x Data..:? "LinkConfiguration")
+      )
+
+instance Prelude.Hashable TableFieldURLConfiguration where
+  hashWithSalt _salt TableFieldURLConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` imageConfiguration
+      `Prelude.hashWithSalt` linkConfiguration
+
+instance Prelude.NFData TableFieldURLConfiguration where
+  rnf TableFieldURLConfiguration' {..} =
+    Prelude.rnf imageConfiguration
+      `Prelude.seq` Prelude.rnf linkConfiguration
+
+instance Data.ToJSON TableFieldURLConfiguration where
+  toJSON TableFieldURLConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ImageConfiguration" Data..=)
+              Prelude.<$> imageConfiguration,
+            ("LinkConfiguration" Data..=)
+              Prelude.<$> linkConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableFieldWells.hs b/gen/Amazonka/QuickSight/Types/TableFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableFieldWells.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableFieldWells
+-- 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.QuickSight.Types.TableFieldWells 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.QuickSight.Types.TableAggregatedFieldWells
+import Amazonka.QuickSight.Types.TableUnaggregatedFieldWells
+
+-- | The field wells for a table visual.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newTableFieldWells' smart constructor.
+data TableFieldWells = TableFieldWells'
+  { -- | The aggregated field well for the table.
+    tableAggregatedFieldWells :: Prelude.Maybe TableAggregatedFieldWells,
+    -- | The unaggregated field well for the table.
+    tableUnaggregatedFieldWells :: Prelude.Maybe TableUnaggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tableAggregatedFieldWells', 'tableFieldWells_tableAggregatedFieldWells' - The aggregated field well for the table.
+--
+-- 'tableUnaggregatedFieldWells', 'tableFieldWells_tableUnaggregatedFieldWells' - The unaggregated field well for the table.
+newTableFieldWells ::
+  TableFieldWells
+newTableFieldWells =
+  TableFieldWells'
+    { tableAggregatedFieldWells =
+        Prelude.Nothing,
+      tableUnaggregatedFieldWells = Prelude.Nothing
+    }
+
+-- | The aggregated field well for the table.
+tableFieldWells_tableAggregatedFieldWells :: Lens.Lens' TableFieldWells (Prelude.Maybe TableAggregatedFieldWells)
+tableFieldWells_tableAggregatedFieldWells = Lens.lens (\TableFieldWells' {tableAggregatedFieldWells} -> tableAggregatedFieldWells) (\s@TableFieldWells' {} a -> s {tableAggregatedFieldWells = a} :: TableFieldWells)
+
+-- | The unaggregated field well for the table.
+tableFieldWells_tableUnaggregatedFieldWells :: Lens.Lens' TableFieldWells (Prelude.Maybe TableUnaggregatedFieldWells)
+tableFieldWells_tableUnaggregatedFieldWells = Lens.lens (\TableFieldWells' {tableUnaggregatedFieldWells} -> tableUnaggregatedFieldWells) (\s@TableFieldWells' {} a -> s {tableUnaggregatedFieldWells = a} :: TableFieldWells)
+
+instance Data.FromJSON TableFieldWells where
+  parseJSON =
+    Data.withObject
+      "TableFieldWells"
+      ( \x ->
+          TableFieldWells'
+            Prelude.<$> (x Data..:? "TableAggregatedFieldWells")
+            Prelude.<*> (x Data..:? "TableUnaggregatedFieldWells")
+      )
+
+instance Prelude.Hashable TableFieldWells where
+  hashWithSalt _salt TableFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` tableAggregatedFieldWells
+      `Prelude.hashWithSalt` tableUnaggregatedFieldWells
+
+instance Prelude.NFData TableFieldWells where
+  rnf TableFieldWells' {..} =
+    Prelude.rnf tableAggregatedFieldWells
+      `Prelude.seq` Prelude.rnf tableUnaggregatedFieldWells
+
+instance Data.ToJSON TableFieldWells where
+  toJSON TableFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TableAggregatedFieldWells" Data..=)
+              Prelude.<$> tableAggregatedFieldWells,
+            ("TableUnaggregatedFieldWells" Data..=)
+              Prelude.<$> tableUnaggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableOptions.hs b/gen/Amazonka/QuickSight/Types/TableOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableOptions.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableOptions
+-- 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.QuickSight.Types.TableOptions 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.QuickSight.Types.RowAlternateColorOptions
+import Amazonka.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.TableOrientation
+
+-- | The table options for a table visual.
+--
+-- /See:/ 'newTableOptions' smart constructor.
+data TableOptions = TableOptions'
+  { -- | The table cell style of table cells.
+    cellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The table cell style of a table header.
+    headerStyle :: Prelude.Maybe TableCellStyle,
+    -- | The orientation (vertical, horizontal) for a table.
+    orientation :: Prelude.Maybe TableOrientation,
+    -- | The row alternate color options (widget status, row alternate colors)
+    -- for a table.
+    rowAlternateColorOptions :: Prelude.Maybe RowAlternateColorOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cellStyle', 'tableOptions_cellStyle' - The table cell style of table cells.
+--
+-- 'headerStyle', 'tableOptions_headerStyle' - The table cell style of a table header.
+--
+-- 'orientation', 'tableOptions_orientation' - The orientation (vertical, horizontal) for a table.
+--
+-- 'rowAlternateColorOptions', 'tableOptions_rowAlternateColorOptions' - The row alternate color options (widget status, row alternate colors)
+-- for a table.
+newTableOptions ::
+  TableOptions
+newTableOptions =
+  TableOptions'
+    { cellStyle = Prelude.Nothing,
+      headerStyle = Prelude.Nothing,
+      orientation = Prelude.Nothing,
+      rowAlternateColorOptions = Prelude.Nothing
+    }
+
+-- | The table cell style of table cells.
+tableOptions_cellStyle :: Lens.Lens' TableOptions (Prelude.Maybe TableCellStyle)
+tableOptions_cellStyle = Lens.lens (\TableOptions' {cellStyle} -> cellStyle) (\s@TableOptions' {} a -> s {cellStyle = a} :: TableOptions)
+
+-- | The table cell style of a table header.
+tableOptions_headerStyle :: Lens.Lens' TableOptions (Prelude.Maybe TableCellStyle)
+tableOptions_headerStyle = Lens.lens (\TableOptions' {headerStyle} -> headerStyle) (\s@TableOptions' {} a -> s {headerStyle = a} :: TableOptions)
+
+-- | The orientation (vertical, horizontal) for a table.
+tableOptions_orientation :: Lens.Lens' TableOptions (Prelude.Maybe TableOrientation)
+tableOptions_orientation = Lens.lens (\TableOptions' {orientation} -> orientation) (\s@TableOptions' {} a -> s {orientation = a} :: TableOptions)
+
+-- | The row alternate color options (widget status, row alternate colors)
+-- for a table.
+tableOptions_rowAlternateColorOptions :: Lens.Lens' TableOptions (Prelude.Maybe RowAlternateColorOptions)
+tableOptions_rowAlternateColorOptions = Lens.lens (\TableOptions' {rowAlternateColorOptions} -> rowAlternateColorOptions) (\s@TableOptions' {} a -> s {rowAlternateColorOptions = a} :: TableOptions)
+
+instance Data.FromJSON TableOptions where
+  parseJSON =
+    Data.withObject
+      "TableOptions"
+      ( \x ->
+          TableOptions'
+            Prelude.<$> (x Data..:? "CellStyle")
+            Prelude.<*> (x Data..:? "HeaderStyle")
+            Prelude.<*> (x Data..:? "Orientation")
+            Prelude.<*> (x Data..:? "RowAlternateColorOptions")
+      )
+
+instance Prelude.Hashable TableOptions where
+  hashWithSalt _salt TableOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` cellStyle
+      `Prelude.hashWithSalt` headerStyle
+      `Prelude.hashWithSalt` orientation
+      `Prelude.hashWithSalt` rowAlternateColorOptions
+
+instance Prelude.NFData TableOptions where
+  rnf TableOptions' {..} =
+    Prelude.rnf cellStyle
+      `Prelude.seq` Prelude.rnf headerStyle
+      `Prelude.seq` Prelude.rnf orientation
+      `Prelude.seq` Prelude.rnf rowAlternateColorOptions
+
+instance Data.ToJSON TableOptions where
+  toJSON TableOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CellStyle" Data..=) Prelude.<$> cellStyle,
+            ("HeaderStyle" Data..=) Prelude.<$> headerStyle,
+            ("Orientation" Data..=) Prelude.<$> orientation,
+            ("RowAlternateColorOptions" Data..=)
+              Prelude.<$> rowAlternateColorOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableOrientation.hs b/gen/Amazonka/QuickSight/Types/TableOrientation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableOrientation.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.QuickSight.Types.TableOrientation
+-- 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.QuickSight.Types.TableOrientation
+  ( TableOrientation
+      ( ..,
+        TableOrientation_HORIZONTAL,
+        TableOrientation_VERTICAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableOrientation = TableOrientation'
+  { fromTableOrientation ::
+      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 TableOrientation_HORIZONTAL :: TableOrientation
+pattern TableOrientation_HORIZONTAL = TableOrientation' "HORIZONTAL"
+
+pattern TableOrientation_VERTICAL :: TableOrientation
+pattern TableOrientation_VERTICAL = TableOrientation' "VERTICAL"
+
+{-# COMPLETE
+  TableOrientation_HORIZONTAL,
+  TableOrientation_VERTICAL,
+  TableOrientation'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TablePaginatedReportOptions.hs b/gen/Amazonka/QuickSight/Types/TablePaginatedReportOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TablePaginatedReportOptions.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TablePaginatedReportOptions
+-- 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.QuickSight.Types.TablePaginatedReportOptions 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.QuickSight.Types.Visibility
+
+-- | The paginated report options for a table visual.
+--
+-- /See:/ 'newTablePaginatedReportOptions' smart constructor.
+data TablePaginatedReportOptions = TablePaginatedReportOptions'
+  { -- | The visibility of repeating header rows on each page.
+    overflowColumnHeaderVisibility :: Prelude.Maybe Visibility,
+    -- | The visibility of printing table overflow across pages.
+    verticalOverflowVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TablePaginatedReportOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'overflowColumnHeaderVisibility', 'tablePaginatedReportOptions_overflowColumnHeaderVisibility' - The visibility of repeating header rows on each page.
+--
+-- 'verticalOverflowVisibility', 'tablePaginatedReportOptions_verticalOverflowVisibility' - The visibility of printing table overflow across pages.
+newTablePaginatedReportOptions ::
+  TablePaginatedReportOptions
+newTablePaginatedReportOptions =
+  TablePaginatedReportOptions'
+    { overflowColumnHeaderVisibility =
+        Prelude.Nothing,
+      verticalOverflowVisibility = Prelude.Nothing
+    }
+
+-- | The visibility of repeating header rows on each page.
+tablePaginatedReportOptions_overflowColumnHeaderVisibility :: Lens.Lens' TablePaginatedReportOptions (Prelude.Maybe Visibility)
+tablePaginatedReportOptions_overflowColumnHeaderVisibility = Lens.lens (\TablePaginatedReportOptions' {overflowColumnHeaderVisibility} -> overflowColumnHeaderVisibility) (\s@TablePaginatedReportOptions' {} a -> s {overflowColumnHeaderVisibility = a} :: TablePaginatedReportOptions)
+
+-- | The visibility of printing table overflow across pages.
+tablePaginatedReportOptions_verticalOverflowVisibility :: Lens.Lens' TablePaginatedReportOptions (Prelude.Maybe Visibility)
+tablePaginatedReportOptions_verticalOverflowVisibility = Lens.lens (\TablePaginatedReportOptions' {verticalOverflowVisibility} -> verticalOverflowVisibility) (\s@TablePaginatedReportOptions' {} a -> s {verticalOverflowVisibility = a} :: TablePaginatedReportOptions)
+
+instance Data.FromJSON TablePaginatedReportOptions where
+  parseJSON =
+    Data.withObject
+      "TablePaginatedReportOptions"
+      ( \x ->
+          TablePaginatedReportOptions'
+            Prelude.<$> (x Data..:? "OverflowColumnHeaderVisibility")
+            Prelude.<*> (x Data..:? "VerticalOverflowVisibility")
+      )
+
+instance Prelude.Hashable TablePaginatedReportOptions where
+  hashWithSalt _salt TablePaginatedReportOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` overflowColumnHeaderVisibility
+      `Prelude.hashWithSalt` verticalOverflowVisibility
+
+instance Prelude.NFData TablePaginatedReportOptions where
+  rnf TablePaginatedReportOptions' {..} =
+    Prelude.rnf overflowColumnHeaderVisibility
+      `Prelude.seq` Prelude.rnf verticalOverflowVisibility
+
+instance Data.ToJSON TablePaginatedReportOptions where
+  toJSON TablePaginatedReportOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OverflowColumnHeaderVisibility" Data..=)
+              Prelude.<$> overflowColumnHeaderVisibility,
+            ("VerticalOverflowVisibility" Data..=)
+              Prelude.<$> verticalOverflowVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableRowConditionalFormatting.hs b/gen/Amazonka/QuickSight/Types/TableRowConditionalFormatting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableRowConditionalFormatting.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.QuickSight.Types.TableRowConditionalFormatting
+-- 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.QuickSight.Types.TableRowConditionalFormatting 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.QuickSight.Types.ConditionalFormattingColor
+
+-- | The conditional formatting of a table row.
+--
+-- /See:/ 'newTableRowConditionalFormatting' smart constructor.
+data TableRowConditionalFormatting = TableRowConditionalFormatting'
+  { -- | The conditional formatting color (solid, gradient) of the background for
+    -- a table row.
+    backgroundColor :: Prelude.Maybe ConditionalFormattingColor,
+    -- | The conditional formatting color (solid, gradient) of the text for a
+    -- table row.
+    textColor :: Prelude.Maybe ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableRowConditionalFormatting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backgroundColor', 'tableRowConditionalFormatting_backgroundColor' - The conditional formatting color (solid, gradient) of the background for
+-- a table row.
+--
+-- 'textColor', 'tableRowConditionalFormatting_textColor' - The conditional formatting color (solid, gradient) of the text for a
+-- table row.
+newTableRowConditionalFormatting ::
+  TableRowConditionalFormatting
+newTableRowConditionalFormatting =
+  TableRowConditionalFormatting'
+    { backgroundColor =
+        Prelude.Nothing,
+      textColor = Prelude.Nothing
+    }
+
+-- | The conditional formatting color (solid, gradient) of the background for
+-- a table row.
+tableRowConditionalFormatting_backgroundColor :: Lens.Lens' TableRowConditionalFormatting (Prelude.Maybe ConditionalFormattingColor)
+tableRowConditionalFormatting_backgroundColor = Lens.lens (\TableRowConditionalFormatting' {backgroundColor} -> backgroundColor) (\s@TableRowConditionalFormatting' {} a -> s {backgroundColor = a} :: TableRowConditionalFormatting)
+
+-- | The conditional formatting color (solid, gradient) of the text for a
+-- table row.
+tableRowConditionalFormatting_textColor :: Lens.Lens' TableRowConditionalFormatting (Prelude.Maybe ConditionalFormattingColor)
+tableRowConditionalFormatting_textColor = Lens.lens (\TableRowConditionalFormatting' {textColor} -> textColor) (\s@TableRowConditionalFormatting' {} a -> s {textColor = a} :: TableRowConditionalFormatting)
+
+instance Data.FromJSON TableRowConditionalFormatting where
+  parseJSON =
+    Data.withObject
+      "TableRowConditionalFormatting"
+      ( \x ->
+          TableRowConditionalFormatting'
+            Prelude.<$> (x Data..:? "BackgroundColor")
+            Prelude.<*> (x Data..:? "TextColor")
+      )
+
+instance
+  Prelude.Hashable
+    TableRowConditionalFormatting
+  where
+  hashWithSalt _salt TableRowConditionalFormatting' {..} =
+    _salt
+      `Prelude.hashWithSalt` backgroundColor
+      `Prelude.hashWithSalt` textColor
+
+instance Prelude.NFData TableRowConditionalFormatting where
+  rnf TableRowConditionalFormatting' {..} =
+    Prelude.rnf backgroundColor
+      `Prelude.seq` Prelude.rnf textColor
+
+instance Data.ToJSON TableRowConditionalFormatting where
+  toJSON TableRowConditionalFormatting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BackgroundColor" Data..=)
+              Prelude.<$> backgroundColor,
+            ("TextColor" Data..=) Prelude.<$> textColor
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableSideBorderOptions.hs b/gen/Amazonka/QuickSight/Types/TableSideBorderOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableSideBorderOptions.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableSideBorderOptions
+-- 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.QuickSight.Types.TableSideBorderOptions 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.QuickSight.Types.TableBorderOptions
+
+-- | The side border options for a table.
+--
+-- /See:/ 'newTableSideBorderOptions' smart constructor.
+data TableSideBorderOptions = TableSideBorderOptions'
+  { -- | The table border options of the bottom border.
+    bottom :: Prelude.Maybe TableBorderOptions,
+    -- | The table border options of the inner horizontal border.
+    innerHorizontal :: Prelude.Maybe TableBorderOptions,
+    -- | The table border options of the inner vertical border.
+    innerVertical :: Prelude.Maybe TableBorderOptions,
+    -- | The table border options of the left border.
+    left :: Prelude.Maybe TableBorderOptions,
+    -- | The table border options of the right border.
+    right :: Prelude.Maybe TableBorderOptions,
+    -- | The table border options of the top border.
+    top :: Prelude.Maybe TableBorderOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableSideBorderOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bottom', 'tableSideBorderOptions_bottom' - The table border options of the bottom border.
+--
+-- 'innerHorizontal', 'tableSideBorderOptions_innerHorizontal' - The table border options of the inner horizontal border.
+--
+-- 'innerVertical', 'tableSideBorderOptions_innerVertical' - The table border options of the inner vertical border.
+--
+-- 'left', 'tableSideBorderOptions_left' - The table border options of the left border.
+--
+-- 'right', 'tableSideBorderOptions_right' - The table border options of the right border.
+--
+-- 'top', 'tableSideBorderOptions_top' - The table border options of the top border.
+newTableSideBorderOptions ::
+  TableSideBorderOptions
+newTableSideBorderOptions =
+  TableSideBorderOptions'
+    { bottom = Prelude.Nothing,
+      innerHorizontal = Prelude.Nothing,
+      innerVertical = Prelude.Nothing,
+      left = Prelude.Nothing,
+      right = Prelude.Nothing,
+      top = Prelude.Nothing
+    }
+
+-- | The table border options of the bottom border.
+tableSideBorderOptions_bottom :: Lens.Lens' TableSideBorderOptions (Prelude.Maybe TableBorderOptions)
+tableSideBorderOptions_bottom = Lens.lens (\TableSideBorderOptions' {bottom} -> bottom) (\s@TableSideBorderOptions' {} a -> s {bottom = a} :: TableSideBorderOptions)
+
+-- | The table border options of the inner horizontal border.
+tableSideBorderOptions_innerHorizontal :: Lens.Lens' TableSideBorderOptions (Prelude.Maybe TableBorderOptions)
+tableSideBorderOptions_innerHorizontal = Lens.lens (\TableSideBorderOptions' {innerHorizontal} -> innerHorizontal) (\s@TableSideBorderOptions' {} a -> s {innerHorizontal = a} :: TableSideBorderOptions)
+
+-- | The table border options of the inner vertical border.
+tableSideBorderOptions_innerVertical :: Lens.Lens' TableSideBorderOptions (Prelude.Maybe TableBorderOptions)
+tableSideBorderOptions_innerVertical = Lens.lens (\TableSideBorderOptions' {innerVertical} -> innerVertical) (\s@TableSideBorderOptions' {} a -> s {innerVertical = a} :: TableSideBorderOptions)
+
+-- | The table border options of the left border.
+tableSideBorderOptions_left :: Lens.Lens' TableSideBorderOptions (Prelude.Maybe TableBorderOptions)
+tableSideBorderOptions_left = Lens.lens (\TableSideBorderOptions' {left} -> left) (\s@TableSideBorderOptions' {} a -> s {left = a} :: TableSideBorderOptions)
+
+-- | The table border options of the right border.
+tableSideBorderOptions_right :: Lens.Lens' TableSideBorderOptions (Prelude.Maybe TableBorderOptions)
+tableSideBorderOptions_right = Lens.lens (\TableSideBorderOptions' {right} -> right) (\s@TableSideBorderOptions' {} a -> s {right = a} :: TableSideBorderOptions)
+
+-- | The table border options of the top border.
+tableSideBorderOptions_top :: Lens.Lens' TableSideBorderOptions (Prelude.Maybe TableBorderOptions)
+tableSideBorderOptions_top = Lens.lens (\TableSideBorderOptions' {top} -> top) (\s@TableSideBorderOptions' {} a -> s {top = a} :: TableSideBorderOptions)
+
+instance Data.FromJSON TableSideBorderOptions where
+  parseJSON =
+    Data.withObject
+      "TableSideBorderOptions"
+      ( \x ->
+          TableSideBorderOptions'
+            Prelude.<$> (x Data..:? "Bottom")
+            Prelude.<*> (x Data..:? "InnerHorizontal")
+            Prelude.<*> (x Data..:? "InnerVertical")
+            Prelude.<*> (x Data..:? "Left")
+            Prelude.<*> (x Data..:? "Right")
+            Prelude.<*> (x Data..:? "Top")
+      )
+
+instance Prelude.Hashable TableSideBorderOptions where
+  hashWithSalt _salt TableSideBorderOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` bottom
+      `Prelude.hashWithSalt` innerHorizontal
+      `Prelude.hashWithSalt` innerVertical
+      `Prelude.hashWithSalt` left
+      `Prelude.hashWithSalt` right
+      `Prelude.hashWithSalt` top
+
+instance Prelude.NFData TableSideBorderOptions where
+  rnf TableSideBorderOptions' {..} =
+    Prelude.rnf bottom
+      `Prelude.seq` Prelude.rnf innerHorizontal
+      `Prelude.seq` Prelude.rnf innerVertical
+      `Prelude.seq` Prelude.rnf left
+      `Prelude.seq` Prelude.rnf right
+      `Prelude.seq` Prelude.rnf top
+
+instance Data.ToJSON TableSideBorderOptions where
+  toJSON TableSideBorderOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bottom" Data..=) Prelude.<$> bottom,
+            ("InnerHorizontal" Data..=)
+              Prelude.<$> innerHorizontal,
+            ("InnerVertical" Data..=) Prelude.<$> innerVertical,
+            ("Left" Data..=) Prelude.<$> left,
+            ("Right" Data..=) Prelude.<$> right,
+            ("Top" Data..=) Prelude.<$> top
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/TableSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableSortConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableSortConfiguration
+-- 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.QuickSight.Types.TableSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.PaginationConfiguration
+
+-- | The sort configuration for a @TableVisual@.
+--
+-- /See:/ 'newTableSortConfiguration' smart constructor.
+data TableSortConfiguration = TableSortConfiguration'
+  { -- | The pagination configuration (page size, page number) for the table.
+    paginationConfiguration :: Prelude.Maybe PaginationConfiguration,
+    -- | The field sort options for rows in the table.
+    rowSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'paginationConfiguration', 'tableSortConfiguration_paginationConfiguration' - The pagination configuration (page size, page number) for the table.
+--
+-- 'rowSort', 'tableSortConfiguration_rowSort' - The field sort options for rows in the table.
+newTableSortConfiguration ::
+  TableSortConfiguration
+newTableSortConfiguration =
+  TableSortConfiguration'
+    { paginationConfiguration =
+        Prelude.Nothing,
+      rowSort = Prelude.Nothing
+    }
+
+-- | The pagination configuration (page size, page number) for the table.
+tableSortConfiguration_paginationConfiguration :: Lens.Lens' TableSortConfiguration (Prelude.Maybe PaginationConfiguration)
+tableSortConfiguration_paginationConfiguration = Lens.lens (\TableSortConfiguration' {paginationConfiguration} -> paginationConfiguration) (\s@TableSortConfiguration' {} a -> s {paginationConfiguration = a} :: TableSortConfiguration)
+
+-- | The field sort options for rows in the table.
+tableSortConfiguration_rowSort :: Lens.Lens' TableSortConfiguration (Prelude.Maybe [FieldSortOptions])
+tableSortConfiguration_rowSort = Lens.lens (\TableSortConfiguration' {rowSort} -> rowSort) (\s@TableSortConfiguration' {} a -> s {rowSort = a} :: TableSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TableSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "TableSortConfiguration"
+      ( \x ->
+          TableSortConfiguration'
+            Prelude.<$> (x Data..:? "PaginationConfiguration")
+            Prelude.<*> (x Data..:? "RowSort" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TableSortConfiguration where
+  hashWithSalt _salt TableSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` paginationConfiguration
+      `Prelude.hashWithSalt` rowSort
+
+instance Prelude.NFData TableSortConfiguration where
+  rnf TableSortConfiguration' {..} =
+    Prelude.rnf paginationConfiguration
+      `Prelude.seq` Prelude.rnf rowSort
+
+instance Data.ToJSON TableSortConfiguration where
+  toJSON TableSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PaginationConfiguration" Data..=)
+              Prelude.<$> paginationConfiguration,
+            ("RowSort" Data..=) Prelude.<$> rowSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableTotalsPlacement.hs b/gen/Amazonka/QuickSight/Types/TableTotalsPlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableTotalsPlacement.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.QuickSight.Types.TableTotalsPlacement
+-- 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.QuickSight.Types.TableTotalsPlacement
+  ( TableTotalsPlacement
+      ( ..,
+        TableTotalsPlacement_END,
+        TableTotalsPlacement_START
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableTotalsPlacement = TableTotalsPlacement'
+  { fromTableTotalsPlacement ::
+      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 TableTotalsPlacement_END :: TableTotalsPlacement
+pattern TableTotalsPlacement_END = TableTotalsPlacement' "END"
+
+pattern TableTotalsPlacement_START :: TableTotalsPlacement
+pattern TableTotalsPlacement_START = TableTotalsPlacement' "START"
+
+{-# COMPLETE
+  TableTotalsPlacement_END,
+  TableTotalsPlacement_START,
+  TableTotalsPlacement'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TableTotalsScrollStatus.hs b/gen/Amazonka/QuickSight/Types/TableTotalsScrollStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableTotalsScrollStatus.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.QuickSight.Types.TableTotalsScrollStatus
+-- 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.QuickSight.Types.TableTotalsScrollStatus
+  ( TableTotalsScrollStatus
+      ( ..,
+        TableTotalsScrollStatus_PINNED,
+        TableTotalsScrollStatus_SCROLLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableTotalsScrollStatus = TableTotalsScrollStatus'
+  { fromTableTotalsScrollStatus ::
+      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 TableTotalsScrollStatus_PINNED :: TableTotalsScrollStatus
+pattern TableTotalsScrollStatus_PINNED = TableTotalsScrollStatus' "PINNED"
+
+pattern TableTotalsScrollStatus_SCROLLED :: TableTotalsScrollStatus
+pattern TableTotalsScrollStatus_SCROLLED = TableTotalsScrollStatus' "SCROLLED"
+
+{-# COMPLETE
+  TableTotalsScrollStatus_PINNED,
+  TableTotalsScrollStatus_SCROLLED,
+  TableTotalsScrollStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TableUnaggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/TableUnaggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableUnaggregatedFieldWells.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TableUnaggregatedFieldWells
+-- 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.QuickSight.Types.TableUnaggregatedFieldWells 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.QuickSight.Types.UnaggregatedField
+
+-- | The unaggregated field well for the table.
+--
+-- /See:/ 'newTableUnaggregatedFieldWells' smart constructor.
+data TableUnaggregatedFieldWells = TableUnaggregatedFieldWells'
+  { -- | The values field well for a pivot table. Values are unaggregated for an
+    -- unaggregated table.
+    values :: Prelude.Maybe [UnaggregatedField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableUnaggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'values', 'tableUnaggregatedFieldWells_values' - The values field well for a pivot table. Values are unaggregated for an
+-- unaggregated table.
+newTableUnaggregatedFieldWells ::
+  TableUnaggregatedFieldWells
+newTableUnaggregatedFieldWells =
+  TableUnaggregatedFieldWells'
+    { values =
+        Prelude.Nothing
+    }
+
+-- | The values field well for a pivot table. Values are unaggregated for an
+-- unaggregated table.
+tableUnaggregatedFieldWells_values :: Lens.Lens' TableUnaggregatedFieldWells (Prelude.Maybe [UnaggregatedField])
+tableUnaggregatedFieldWells_values = Lens.lens (\TableUnaggregatedFieldWells' {values} -> values) (\s@TableUnaggregatedFieldWells' {} a -> s {values = a} :: TableUnaggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TableUnaggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "TableUnaggregatedFieldWells"
+      ( \x ->
+          TableUnaggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TableUnaggregatedFieldWells where
+  hashWithSalt _salt TableUnaggregatedFieldWells' {..} =
+    _salt `Prelude.hashWithSalt` values
+
+instance Prelude.NFData TableUnaggregatedFieldWells where
+  rnf TableUnaggregatedFieldWells' {..} =
+    Prelude.rnf values
+
+instance Data.ToJSON TableUnaggregatedFieldWells where
+  toJSON TableUnaggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Values" Data..=) Prelude.<$> values]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TableVisual.hs b/gen/Amazonka/QuickSight/Types/TableVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TableVisual.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.QuickSight.Types.TableVisual
+-- 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.QuickSight.Types.TableVisual 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.QuickSight.Types.TableConditionalFormatting
+import Amazonka.QuickSight.Types.TableConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A table visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/tabular.html Using tables as visuals>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newTableVisual' smart constructor.
+data TableVisual = TableVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe TableConfiguration,
+    -- | The conditional formatting for a @PivotTableVisual@.
+    conditionalFormatting :: Prelude.Maybe TableConditionalFormatting,
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TableVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'tableVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'tableVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'conditionalFormatting', 'tableVisual_conditionalFormatting' - The conditional formatting for a @PivotTableVisual@.
+--
+-- 'subtitle', 'tableVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'tableVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'tableVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newTableVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  TableVisual
+newTableVisual pVisualId_ =
+  TableVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      conditionalFormatting = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+tableVisual_actions :: Lens.Lens' TableVisual (Prelude.Maybe [VisualCustomAction])
+tableVisual_actions = Lens.lens (\TableVisual' {actions} -> actions) (\s@TableVisual' {} a -> s {actions = a} :: TableVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+tableVisual_chartConfiguration :: Lens.Lens' TableVisual (Prelude.Maybe TableConfiguration)
+tableVisual_chartConfiguration = Lens.lens (\TableVisual' {chartConfiguration} -> chartConfiguration) (\s@TableVisual' {} a -> s {chartConfiguration = a} :: TableVisual)
+
+-- | The conditional formatting for a @PivotTableVisual@.
+tableVisual_conditionalFormatting :: Lens.Lens' TableVisual (Prelude.Maybe TableConditionalFormatting)
+tableVisual_conditionalFormatting = Lens.lens (\TableVisual' {conditionalFormatting} -> conditionalFormatting) (\s@TableVisual' {} a -> s {conditionalFormatting = a} :: TableVisual)
+
+-- | The subtitle that is displayed on the visual.
+tableVisual_subtitle :: Lens.Lens' TableVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+tableVisual_subtitle = Lens.lens (\TableVisual' {subtitle} -> subtitle) (\s@TableVisual' {} a -> s {subtitle = a} :: TableVisual)
+
+-- | The title that is displayed on the visual.
+tableVisual_title :: Lens.Lens' TableVisual (Prelude.Maybe VisualTitleLabelOptions)
+tableVisual_title = Lens.lens (\TableVisual' {title} -> title) (\s@TableVisual' {} a -> s {title = a} :: TableVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+tableVisual_visualId :: Lens.Lens' TableVisual Prelude.Text
+tableVisual_visualId = Lens.lens (\TableVisual' {visualId} -> visualId) (\s@TableVisual' {} a -> s {visualId = a} :: TableVisual)
+
+instance Data.FromJSON TableVisual where
+  parseJSON =
+    Data.withObject
+      "TableVisual"
+      ( \x ->
+          TableVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> (x Data..:? "ConditionalFormatting")
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable TableVisual where
+  hashWithSalt _salt TableVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` conditionalFormatting
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData TableVisual where
+  rnf TableVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf conditionalFormatting
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON TableVisual where
+  toJSON TableVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ConditionalFormatting" Data..=)
+              Prelude.<$> conditionalFormatting,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Tag.hs b/gen/Amazonka/QuickSight/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Tag.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.QuickSight.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.QuickSight.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The key or keys of the key-value pairs for the resource tag or tags
+-- assigned to the resource.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | Tag key.
+    key :: Prelude.Text,
+    -- | Tag value.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - Tag key.
+--
+-- 'value', 'tag_value' - Tag value.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | Tag key.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | Tag value.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TagColumnOperation.hs b/gen/Amazonka/QuickSight/Types/TagColumnOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TagColumnOperation.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TagColumnOperation
+-- 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.QuickSight.Types.TagColumnOperation 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.QuickSight.Types.ColumnTag
+
+-- | A transform operation that tags a column with additional information.
+--
+-- /See:/ 'newTagColumnOperation' smart constructor.
+data TagColumnOperation = TagColumnOperation'
+  { -- | The column that this operation acts on.
+    columnName :: Prelude.Text,
+    -- | The dataset column tag, currently only used for geospatial type tagging.
+    --
+    -- This is not tags for the Amazon Web Services tagging feature.
+    tags :: Prelude.NonEmpty ColumnTag
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagColumnOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnName', 'tagColumnOperation_columnName' - The column that this operation acts on.
+--
+-- 'tags', 'tagColumnOperation_tags' - The dataset column tag, currently only used for geospatial type tagging.
+--
+-- This is not tags for the Amazon Web Services tagging feature.
+newTagColumnOperation ::
+  -- | 'columnName'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty ColumnTag ->
+  TagColumnOperation
+newTagColumnOperation pColumnName_ pTags_ =
+  TagColumnOperation'
+    { columnName = pColumnName_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The column that this operation acts on.
+tagColumnOperation_columnName :: Lens.Lens' TagColumnOperation Prelude.Text
+tagColumnOperation_columnName = Lens.lens (\TagColumnOperation' {columnName} -> columnName) (\s@TagColumnOperation' {} a -> s {columnName = a} :: TagColumnOperation)
+
+-- | The dataset column tag, currently only used for geospatial type tagging.
+--
+-- This is not tags for the Amazon Web Services tagging feature.
+tagColumnOperation_tags :: Lens.Lens' TagColumnOperation (Prelude.NonEmpty ColumnTag)
+tagColumnOperation_tags = Lens.lens (\TagColumnOperation' {tags} -> tags) (\s@TagColumnOperation' {} a -> s {tags = a} :: TagColumnOperation) Prelude.. Lens.coerced
+
+instance Data.FromJSON TagColumnOperation where
+  parseJSON =
+    Data.withObject
+      "TagColumnOperation"
+      ( \x ->
+          TagColumnOperation'
+            Prelude.<$> (x Data..: "ColumnName")
+            Prelude.<*> (x Data..: "Tags")
+      )
+
+instance Prelude.Hashable TagColumnOperation where
+  hashWithSalt _salt TagColumnOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnName
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagColumnOperation where
+  rnf TagColumnOperation' {..} =
+    Prelude.rnf columnName
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToJSON TagColumnOperation where
+  toJSON TagColumnOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ColumnName" Data..= columnName),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TargetVisualOptions.hs b/gen/Amazonka/QuickSight/Types/TargetVisualOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TargetVisualOptions.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.QuickSight.Types.TargetVisualOptions
+-- 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.QuickSight.Types.TargetVisualOptions
+  ( TargetVisualOptions
+      ( ..,
+        TargetVisualOptions_ALL_VISUALS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetVisualOptions = TargetVisualOptions'
+  { fromTargetVisualOptions ::
+      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 TargetVisualOptions_ALL_VISUALS :: TargetVisualOptions
+pattern TargetVisualOptions_ALL_VISUALS = TargetVisualOptions' "ALL_VISUALS"
+
+{-# COMPLETE
+  TargetVisualOptions_ALL_VISUALS,
+  TargetVisualOptions'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Template.hs b/gen/Amazonka/QuickSight/Types/Template.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Template.hs
@@ -0,0 +1,146 @@
+{-# 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.QuickSight.Types.Template
+-- 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.QuickSight.Types.Template 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.QuickSight.Types.TemplateVersion
+
+-- | A template object. A /template/ is an entity in Amazon QuickSight that
+-- encapsulates the metadata required to create an analysis and that you
+-- can use to create a dashboard. A template adds a layer of abstraction by
+-- using placeholders to replace the dataset associated with an analysis.
+-- You can use templates to create dashboards by replacing dataset
+-- placeholders with datasets that follow the same schema that was used to
+-- create the source analysis and template.
+--
+-- You can share templates across Amazon Web Services accounts by allowing
+-- users in other Amazon Web Services accounts to create a template or a
+-- dashboard from an existing template.
+--
+-- /See:/ 'newTemplate' smart constructor.
+data Template = Template'
+  { -- | The Amazon Resource Name (ARN) of the template.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | Time when this was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | Time when this was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The display name of the template.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the template. This is unique per Amazon Web Services Region
+    -- for each Amazon Web Services account.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | A structure describing the versions of the template.
+    version :: Prelude.Maybe TemplateVersion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Template' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'template_arn' - The Amazon Resource Name (ARN) of the template.
+--
+-- 'createdTime', 'template_createdTime' - Time when this was created.
+--
+-- 'lastUpdatedTime', 'template_lastUpdatedTime' - Time when this was last updated.
+--
+-- 'name', 'template_name' - The display name of the template.
+--
+-- 'templateId', 'template_templateId' - The ID for the template. This is unique per Amazon Web Services Region
+-- for each Amazon Web Services account.
+--
+-- 'version', 'template_version' - A structure describing the versions of the template.
+newTemplate ::
+  Template
+newTemplate =
+  Template'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      version = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the template.
+template_arn :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)
+template_arn = Lens.lens (\Template' {arn} -> arn) (\s@Template' {} a -> s {arn = a} :: Template)
+
+-- | Time when this was created.
+template_createdTime :: Lens.Lens' Template (Prelude.Maybe Prelude.UTCTime)
+template_createdTime = Lens.lens (\Template' {createdTime} -> createdTime) (\s@Template' {} a -> s {createdTime = a} :: Template) Prelude.. Lens.mapping Data._Time
+
+-- | Time when this was last updated.
+template_lastUpdatedTime :: Lens.Lens' Template (Prelude.Maybe Prelude.UTCTime)
+template_lastUpdatedTime = Lens.lens (\Template' {lastUpdatedTime} -> lastUpdatedTime) (\s@Template' {} a -> s {lastUpdatedTime = a} :: Template) Prelude.. Lens.mapping Data._Time
+
+-- | The display name of the template.
+template_name :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)
+template_name = Lens.lens (\Template' {name} -> name) (\s@Template' {} a -> s {name = a} :: Template)
+
+-- | The ID for the template. This is unique per Amazon Web Services Region
+-- for each Amazon Web Services account.
+template_templateId :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)
+template_templateId = Lens.lens (\Template' {templateId} -> templateId) (\s@Template' {} a -> s {templateId = a} :: Template)
+
+-- | A structure describing the versions of the template.
+template_version :: Lens.Lens' Template (Prelude.Maybe TemplateVersion)
+template_version = Lens.lens (\Template' {version} -> version) (\s@Template' {} a -> s {version = a} :: Template)
+
+instance Data.FromJSON Template where
+  parseJSON =
+    Data.withObject
+      "Template"
+      ( \x ->
+          Template'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "TemplateId")
+            Prelude.<*> (x Data..:? "Version")
+      )
+
+instance Prelude.Hashable Template where
+  hashWithSalt _salt Template' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` templateId
+      `Prelude.hashWithSalt` version
+
+instance Prelude.NFData Template where
+  rnf Template' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf version
diff --git a/gen/Amazonka/QuickSight/Types/TemplateAlias.hs b/gen/Amazonka/QuickSight/Types/TemplateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateAlias.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.QuickSight.Types.TemplateAlias
+-- 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.QuickSight.Types.TemplateAlias 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 template alias.
+--
+-- /See:/ 'newTemplateAlias' smart constructor.
+data TemplateAlias = TemplateAlias'
+  { -- | The display name of the template alias.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the template alias.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the template alias.
+    templateVersionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'templateAlias_aliasName' - The display name of the template alias.
+--
+-- 'arn', 'templateAlias_arn' - The Amazon Resource Name (ARN) of the template alias.
+--
+-- 'templateVersionNumber', 'templateAlias_templateVersionNumber' - The version number of the template alias.
+newTemplateAlias ::
+  TemplateAlias
+newTemplateAlias =
+  TemplateAlias'
+    { aliasName = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      templateVersionNumber = Prelude.Nothing
+    }
+
+-- | The display name of the template alias.
+templateAlias_aliasName :: Lens.Lens' TemplateAlias (Prelude.Maybe Prelude.Text)
+templateAlias_aliasName = Lens.lens (\TemplateAlias' {aliasName} -> aliasName) (\s@TemplateAlias' {} a -> s {aliasName = a} :: TemplateAlias)
+
+-- | The Amazon Resource Name (ARN) of the template alias.
+templateAlias_arn :: Lens.Lens' TemplateAlias (Prelude.Maybe Prelude.Text)
+templateAlias_arn = Lens.lens (\TemplateAlias' {arn} -> arn) (\s@TemplateAlias' {} a -> s {arn = a} :: TemplateAlias)
+
+-- | The version number of the template alias.
+templateAlias_templateVersionNumber :: Lens.Lens' TemplateAlias (Prelude.Maybe Prelude.Natural)
+templateAlias_templateVersionNumber = Lens.lens (\TemplateAlias' {templateVersionNumber} -> templateVersionNumber) (\s@TemplateAlias' {} a -> s {templateVersionNumber = a} :: TemplateAlias)
+
+instance Data.FromJSON TemplateAlias where
+  parseJSON =
+    Data.withObject
+      "TemplateAlias"
+      ( \x ->
+          TemplateAlias'
+            Prelude.<$> (x Data..:? "AliasName")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "TemplateVersionNumber")
+      )
+
+instance Prelude.Hashable TemplateAlias where
+  hashWithSalt _salt TemplateAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` templateVersionNumber
+
+instance Prelude.NFData TemplateAlias where
+  rnf TemplateAlias' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf templateVersionNumber
diff --git a/gen/Amazonka/QuickSight/Types/TemplateError.hs b/gen/Amazonka/QuickSight/Types/TemplateError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateError.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TemplateError
+-- 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.QuickSight.Types.TemplateError 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.QuickSight.Types.Entity
+import Amazonka.QuickSight.Types.TemplateErrorType
+
+-- | List of errors that occurred when the template version creation failed.
+--
+-- /See:/ 'newTemplateError' smart constructor.
+data TemplateError = TemplateError'
+  { -- | Description of the error type.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | Type of error.
+    type' :: Prelude.Maybe TemplateErrorType,
+    violatedEntities :: Prelude.Maybe [Entity]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'templateError_message' - Description of the error type.
+--
+-- 'type'', 'templateError_type' - Type of error.
+--
+-- 'violatedEntities', 'templateError_violatedEntities' -
+newTemplateError ::
+  TemplateError
+newTemplateError =
+  TemplateError'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      violatedEntities = Prelude.Nothing
+    }
+
+-- | Description of the error type.
+templateError_message :: Lens.Lens' TemplateError (Prelude.Maybe Prelude.Text)
+templateError_message = Lens.lens (\TemplateError' {message} -> message) (\s@TemplateError' {} a -> s {message = a} :: TemplateError)
+
+-- | Type of error.
+templateError_type :: Lens.Lens' TemplateError (Prelude.Maybe TemplateErrorType)
+templateError_type = Lens.lens (\TemplateError' {type'} -> type') (\s@TemplateError' {} a -> s {type' = a} :: TemplateError)
+
+templateError_violatedEntities :: Lens.Lens' TemplateError (Prelude.Maybe [Entity])
+templateError_violatedEntities = Lens.lens (\TemplateError' {violatedEntities} -> violatedEntities) (\s@TemplateError' {} a -> s {violatedEntities = a} :: TemplateError) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TemplateError where
+  parseJSON =
+    Data.withObject
+      "TemplateError"
+      ( \x ->
+          TemplateError'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> ( x
+                            Data..:? "ViolatedEntities"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable TemplateError where
+  hashWithSalt _salt TemplateError' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` violatedEntities
+
+instance Prelude.NFData TemplateError where
+  rnf TemplateError' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf violatedEntities
diff --git a/gen/Amazonka/QuickSight/Types/TemplateErrorType.hs b/gen/Amazonka/QuickSight/Types/TemplateErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateErrorType.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.QuickSight.Types.TemplateErrorType
+-- 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.QuickSight.Types.TemplateErrorType
+  ( TemplateErrorType
+      ( ..,
+        TemplateErrorType_ACCESS_DENIED,
+        TemplateErrorType_DATA_SET_NOT_FOUND,
+        TemplateErrorType_INTERNAL_FAILURE,
+        TemplateErrorType_SOURCE_NOT_FOUND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TemplateErrorType = TemplateErrorType'
+  { fromTemplateErrorType ::
+      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 TemplateErrorType_ACCESS_DENIED :: TemplateErrorType
+pattern TemplateErrorType_ACCESS_DENIED = TemplateErrorType' "ACCESS_DENIED"
+
+pattern TemplateErrorType_DATA_SET_NOT_FOUND :: TemplateErrorType
+pattern TemplateErrorType_DATA_SET_NOT_FOUND = TemplateErrorType' "DATA_SET_NOT_FOUND"
+
+pattern TemplateErrorType_INTERNAL_FAILURE :: TemplateErrorType
+pattern TemplateErrorType_INTERNAL_FAILURE = TemplateErrorType' "INTERNAL_FAILURE"
+
+pattern TemplateErrorType_SOURCE_NOT_FOUND :: TemplateErrorType
+pattern TemplateErrorType_SOURCE_NOT_FOUND = TemplateErrorType' "SOURCE_NOT_FOUND"
+
+{-# COMPLETE
+  TemplateErrorType_ACCESS_DENIED,
+  TemplateErrorType_DATA_SET_NOT_FOUND,
+  TemplateErrorType_INTERNAL_FAILURE,
+  TemplateErrorType_SOURCE_NOT_FOUND,
+  TemplateErrorType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TemplateSourceAnalysis.hs b/gen/Amazonka/QuickSight/Types/TemplateSourceAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateSourceAnalysis.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TemplateSourceAnalysis
+-- 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.QuickSight.Types.TemplateSourceAnalysis 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.QuickSight.Types.DataSetReference
+
+-- | The source analysis of the template.
+--
+-- /See:/ 'newTemplateSourceAnalysis' smart constructor.
+data TemplateSourceAnalysis = TemplateSourceAnalysis'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Text,
+    -- | A structure containing information about the dataset references used as
+    -- placeholders in the template.
+    dataSetReferences :: Prelude.NonEmpty DataSetReference
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateSourceAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'templateSourceAnalysis_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'dataSetReferences', 'templateSourceAnalysis_dataSetReferences' - A structure containing information about the dataset references used as
+-- placeholders in the template.
+newTemplateSourceAnalysis ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'dataSetReferences'
+  Prelude.NonEmpty DataSetReference ->
+  TemplateSourceAnalysis
+newTemplateSourceAnalysis pArn_ pDataSetReferences_ =
+  TemplateSourceAnalysis'
+    { arn = pArn_,
+      dataSetReferences =
+        Lens.coerced Lens.# pDataSetReferences_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+templateSourceAnalysis_arn :: Lens.Lens' TemplateSourceAnalysis Prelude.Text
+templateSourceAnalysis_arn = Lens.lens (\TemplateSourceAnalysis' {arn} -> arn) (\s@TemplateSourceAnalysis' {} a -> s {arn = a} :: TemplateSourceAnalysis)
+
+-- | A structure containing information about the dataset references used as
+-- placeholders in the template.
+templateSourceAnalysis_dataSetReferences :: Lens.Lens' TemplateSourceAnalysis (Prelude.NonEmpty DataSetReference)
+templateSourceAnalysis_dataSetReferences = Lens.lens (\TemplateSourceAnalysis' {dataSetReferences} -> dataSetReferences) (\s@TemplateSourceAnalysis' {} a -> s {dataSetReferences = a} :: TemplateSourceAnalysis) Prelude.. Lens.coerced
+
+instance Prelude.Hashable TemplateSourceAnalysis where
+  hashWithSalt _salt TemplateSourceAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` dataSetReferences
+
+instance Prelude.NFData TemplateSourceAnalysis where
+  rnf TemplateSourceAnalysis' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dataSetReferences
+
+instance Data.ToJSON TemplateSourceAnalysis where
+  toJSON TemplateSourceAnalysis' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ("DataSetReferences" Data..= dataSetReferences)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TemplateSourceEntity.hs b/gen/Amazonka/QuickSight/Types/TemplateSourceEntity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateSourceEntity.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.QuickSight.Types.TemplateSourceEntity
+-- 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.QuickSight.Types.TemplateSourceEntity 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.QuickSight.Types.TemplateSourceAnalysis
+import Amazonka.QuickSight.Types.TemplateSourceTemplate
+
+-- | The source entity of the template.
+--
+-- /See:/ 'newTemplateSourceEntity' smart constructor.
+data TemplateSourceEntity = TemplateSourceEntity'
+  { -- | The source analysis, if it is based on an analysis.
+    sourceAnalysis :: Prelude.Maybe TemplateSourceAnalysis,
+    -- | The source template, if it is based on an template.
+    sourceTemplate :: Prelude.Maybe TemplateSourceTemplate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateSourceEntity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sourceAnalysis', 'templateSourceEntity_sourceAnalysis' - The source analysis, if it is based on an analysis.
+--
+-- 'sourceTemplate', 'templateSourceEntity_sourceTemplate' - The source template, if it is based on an template.
+newTemplateSourceEntity ::
+  TemplateSourceEntity
+newTemplateSourceEntity =
+  TemplateSourceEntity'
+    { sourceAnalysis =
+        Prelude.Nothing,
+      sourceTemplate = Prelude.Nothing
+    }
+
+-- | The source analysis, if it is based on an analysis.
+templateSourceEntity_sourceAnalysis :: Lens.Lens' TemplateSourceEntity (Prelude.Maybe TemplateSourceAnalysis)
+templateSourceEntity_sourceAnalysis = Lens.lens (\TemplateSourceEntity' {sourceAnalysis} -> sourceAnalysis) (\s@TemplateSourceEntity' {} a -> s {sourceAnalysis = a} :: TemplateSourceEntity)
+
+-- | The source template, if it is based on an template.
+templateSourceEntity_sourceTemplate :: Lens.Lens' TemplateSourceEntity (Prelude.Maybe TemplateSourceTemplate)
+templateSourceEntity_sourceTemplate = Lens.lens (\TemplateSourceEntity' {sourceTemplate} -> sourceTemplate) (\s@TemplateSourceEntity' {} a -> s {sourceTemplate = a} :: TemplateSourceEntity)
+
+instance Prelude.Hashable TemplateSourceEntity where
+  hashWithSalt _salt TemplateSourceEntity' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceAnalysis
+      `Prelude.hashWithSalt` sourceTemplate
+
+instance Prelude.NFData TemplateSourceEntity where
+  rnf TemplateSourceEntity' {..} =
+    Prelude.rnf sourceAnalysis
+      `Prelude.seq` Prelude.rnf sourceTemplate
+
+instance Data.ToJSON TemplateSourceEntity where
+  toJSON TemplateSourceEntity' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceAnalysis" Data..=)
+              Prelude.<$> sourceAnalysis,
+            ("SourceTemplate" Data..=)
+              Prelude.<$> sourceTemplate
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TemplateSourceTemplate.hs b/gen/Amazonka/QuickSight/Types/TemplateSourceTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateSourceTemplate.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TemplateSourceTemplate
+-- 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.QuickSight.Types.TemplateSourceTemplate 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 source template of the template.
+--
+-- /See:/ 'newTemplateSourceTemplate' smart constructor.
+data TemplateSourceTemplate = TemplateSourceTemplate'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateSourceTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'templateSourceTemplate_arn' - The Amazon Resource Name (ARN) of the resource.
+newTemplateSourceTemplate ::
+  -- | 'arn'
+  Prelude.Text ->
+  TemplateSourceTemplate
+newTemplateSourceTemplate pArn_ =
+  TemplateSourceTemplate' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource.
+templateSourceTemplate_arn :: Lens.Lens' TemplateSourceTemplate Prelude.Text
+templateSourceTemplate_arn = Lens.lens (\TemplateSourceTemplate' {arn} -> arn) (\s@TemplateSourceTemplate' {} a -> s {arn = a} :: TemplateSourceTemplate)
+
+instance Prelude.Hashable TemplateSourceTemplate where
+  hashWithSalt _salt TemplateSourceTemplate' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData TemplateSourceTemplate where
+  rnf TemplateSourceTemplate' {..} = Prelude.rnf arn
+
+instance Data.ToJSON TemplateSourceTemplate where
+  toJSON TemplateSourceTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TemplateSummary.hs b/gen/Amazonka/QuickSight/Types/TemplateSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateSummary.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TemplateSummary
+-- 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.QuickSight.Types.TemplateSummary 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 template summary.
+--
+-- /See:/ 'newTemplateSummary' smart constructor.
+data TemplateSummary = TemplateSummary'
+  { -- | A summary of a template.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The last time that this template was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The last time that this template was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A structure containing a list of version numbers for the template
+    -- summary.
+    latestVersionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | A display name for the template.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the template. This ID is unique per Amazon Web Services Region
+    -- for each Amazon Web Services account.
+    templateId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'templateSummary_arn' - A summary of a template.
+--
+-- 'createdTime', 'templateSummary_createdTime' - The last time that this template was created.
+--
+-- 'lastUpdatedTime', 'templateSummary_lastUpdatedTime' - The last time that this template was updated.
+--
+-- 'latestVersionNumber', 'templateSummary_latestVersionNumber' - A structure containing a list of version numbers for the template
+-- summary.
+--
+-- 'name', 'templateSummary_name' - A display name for the template.
+--
+-- 'templateId', 'templateSummary_templateId' - The ID of the template. This ID is unique per Amazon Web Services Region
+-- for each Amazon Web Services account.
+newTemplateSummary ::
+  TemplateSummary
+newTemplateSummary =
+  TemplateSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      latestVersionNumber = Prelude.Nothing,
+      name = Prelude.Nothing,
+      templateId = Prelude.Nothing
+    }
+
+-- | A summary of a template.
+templateSummary_arn :: Lens.Lens' TemplateSummary (Prelude.Maybe Prelude.Text)
+templateSummary_arn = Lens.lens (\TemplateSummary' {arn} -> arn) (\s@TemplateSummary' {} a -> s {arn = a} :: TemplateSummary)
+
+-- | The last time that this template was created.
+templateSummary_createdTime :: Lens.Lens' TemplateSummary (Prelude.Maybe Prelude.UTCTime)
+templateSummary_createdTime = Lens.lens (\TemplateSummary' {createdTime} -> createdTime) (\s@TemplateSummary' {} a -> s {createdTime = a} :: TemplateSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The last time that this template was updated.
+templateSummary_lastUpdatedTime :: Lens.Lens' TemplateSummary (Prelude.Maybe Prelude.UTCTime)
+templateSummary_lastUpdatedTime = Lens.lens (\TemplateSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@TemplateSummary' {} a -> s {lastUpdatedTime = a} :: TemplateSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A structure containing a list of version numbers for the template
+-- summary.
+templateSummary_latestVersionNumber :: Lens.Lens' TemplateSummary (Prelude.Maybe Prelude.Natural)
+templateSummary_latestVersionNumber = Lens.lens (\TemplateSummary' {latestVersionNumber} -> latestVersionNumber) (\s@TemplateSummary' {} a -> s {latestVersionNumber = a} :: TemplateSummary)
+
+-- | A display name for the template.
+templateSummary_name :: Lens.Lens' TemplateSummary (Prelude.Maybe Prelude.Text)
+templateSummary_name = Lens.lens (\TemplateSummary' {name} -> name) (\s@TemplateSummary' {} a -> s {name = a} :: TemplateSummary)
+
+-- | The ID of the template. This ID is unique per Amazon Web Services Region
+-- for each Amazon Web Services account.
+templateSummary_templateId :: Lens.Lens' TemplateSummary (Prelude.Maybe Prelude.Text)
+templateSummary_templateId = Lens.lens (\TemplateSummary' {templateId} -> templateId) (\s@TemplateSummary' {} a -> s {templateId = a} :: TemplateSummary)
+
+instance Data.FromJSON TemplateSummary where
+  parseJSON =
+    Data.withObject
+      "TemplateSummary"
+      ( \x ->
+          TemplateSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "LatestVersionNumber")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "TemplateId")
+      )
+
+instance Prelude.Hashable TemplateSummary where
+  hashWithSalt _salt TemplateSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` latestVersionNumber
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData TemplateSummary where
+  rnf TemplateSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf latestVersionNumber
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf templateId
diff --git a/gen/Amazonka/QuickSight/Types/TemplateVersion.hs b/gen/Amazonka/QuickSight/Types/TemplateVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateVersion.hs
@@ -0,0 +1,187 @@
+{-# 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.QuickSight.Types.TemplateVersion
+-- 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.QuickSight.Types.TemplateVersion 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.QuickSight.Types.DataSetConfiguration
+import Amazonka.QuickSight.Types.ResourceStatus
+import Amazonka.QuickSight.Types.Sheet
+import Amazonka.QuickSight.Types.TemplateError
+
+-- | A version of a template.
+--
+-- /See:/ 'newTemplateVersion' smart constructor.
+data TemplateVersion = TemplateVersion'
+  { -- | The time that this template version was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | Schema of the dataset identified by the placeholder. Any dashboard
+    -- created from this template should be bound to new datasets matching the
+    -- same schema described through this API operation.
+    dataSetConfigurations :: Prelude.Maybe [DataSetConfiguration],
+    -- | The description of the template.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Errors associated with this template version.
+    errors :: Prelude.Maybe (Prelude.NonEmpty TemplateError),
+    -- | A list of the associated sheets with the unique identifier and name of
+    -- each sheet.
+    sheets :: Prelude.Maybe [Sheet],
+    -- | The Amazon Resource Name (ARN) of an analysis or template that was used
+    -- to create this template.
+    sourceEntityArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The ARN of the theme associated with this version of the template.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the template version.
+    versionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTime', 'templateVersion_createdTime' - The time that this template version was created.
+--
+-- 'dataSetConfigurations', 'templateVersion_dataSetConfigurations' - Schema of the dataset identified by the placeholder. Any dashboard
+-- created from this template should be bound to new datasets matching the
+-- same schema described through this API operation.
+--
+-- 'description', 'templateVersion_description' - The description of the template.
+--
+-- 'errors', 'templateVersion_errors' - Errors associated with this template version.
+--
+-- 'sheets', 'templateVersion_sheets' - A list of the associated sheets with the unique identifier and name of
+-- each sheet.
+--
+-- 'sourceEntityArn', 'templateVersion_sourceEntityArn' - The Amazon Resource Name (ARN) of an analysis or template that was used
+-- to create this template.
+--
+-- 'status', 'templateVersion_status' - The HTTP status of the request.
+--
+-- 'themeArn', 'templateVersion_themeArn' - The ARN of the theme associated with this version of the template.
+--
+-- 'versionNumber', 'templateVersion_versionNumber' - The version number of the template version.
+newTemplateVersion ::
+  TemplateVersion
+newTemplateVersion =
+  TemplateVersion'
+    { createdTime = Prelude.Nothing,
+      dataSetConfigurations = Prelude.Nothing,
+      description = Prelude.Nothing,
+      errors = Prelude.Nothing,
+      sheets = Prelude.Nothing,
+      sourceEntityArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      versionNumber = Prelude.Nothing
+    }
+
+-- | The time that this template version was created.
+templateVersion_createdTime :: Lens.Lens' TemplateVersion (Prelude.Maybe Prelude.UTCTime)
+templateVersion_createdTime = Lens.lens (\TemplateVersion' {createdTime} -> createdTime) (\s@TemplateVersion' {} a -> s {createdTime = a} :: TemplateVersion) Prelude.. Lens.mapping Data._Time
+
+-- | Schema of the dataset identified by the placeholder. Any dashboard
+-- created from this template should be bound to new datasets matching the
+-- same schema described through this API operation.
+templateVersion_dataSetConfigurations :: Lens.Lens' TemplateVersion (Prelude.Maybe [DataSetConfiguration])
+templateVersion_dataSetConfigurations = Lens.lens (\TemplateVersion' {dataSetConfigurations} -> dataSetConfigurations) (\s@TemplateVersion' {} a -> s {dataSetConfigurations = a} :: TemplateVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | The description of the template.
+templateVersion_description :: Lens.Lens' TemplateVersion (Prelude.Maybe Prelude.Text)
+templateVersion_description = Lens.lens (\TemplateVersion' {description} -> description) (\s@TemplateVersion' {} a -> s {description = a} :: TemplateVersion)
+
+-- | Errors associated with this template version.
+templateVersion_errors :: Lens.Lens' TemplateVersion (Prelude.Maybe (Prelude.NonEmpty TemplateError))
+templateVersion_errors = Lens.lens (\TemplateVersion' {errors} -> errors) (\s@TemplateVersion' {} a -> s {errors = a} :: TemplateVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the associated sheets with the unique identifier and name of
+-- each sheet.
+templateVersion_sheets :: Lens.Lens' TemplateVersion (Prelude.Maybe [Sheet])
+templateVersion_sheets = Lens.lens (\TemplateVersion' {sheets} -> sheets) (\s@TemplateVersion' {} a -> s {sheets = a} :: TemplateVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of an analysis or template that was used
+-- to create this template.
+templateVersion_sourceEntityArn :: Lens.Lens' TemplateVersion (Prelude.Maybe Prelude.Text)
+templateVersion_sourceEntityArn = Lens.lens (\TemplateVersion' {sourceEntityArn} -> sourceEntityArn) (\s@TemplateVersion' {} a -> s {sourceEntityArn = a} :: TemplateVersion)
+
+-- | The HTTP status of the request.
+templateVersion_status :: Lens.Lens' TemplateVersion (Prelude.Maybe ResourceStatus)
+templateVersion_status = Lens.lens (\TemplateVersion' {status} -> status) (\s@TemplateVersion' {} a -> s {status = a} :: TemplateVersion)
+
+-- | The ARN of the theme associated with this version of the template.
+templateVersion_themeArn :: Lens.Lens' TemplateVersion (Prelude.Maybe Prelude.Text)
+templateVersion_themeArn = Lens.lens (\TemplateVersion' {themeArn} -> themeArn) (\s@TemplateVersion' {} a -> s {themeArn = a} :: TemplateVersion)
+
+-- | The version number of the template version.
+templateVersion_versionNumber :: Lens.Lens' TemplateVersion (Prelude.Maybe Prelude.Natural)
+templateVersion_versionNumber = Lens.lens (\TemplateVersion' {versionNumber} -> versionNumber) (\s@TemplateVersion' {} a -> s {versionNumber = a} :: TemplateVersion)
+
+instance Data.FromJSON TemplateVersion where
+  parseJSON =
+    Data.withObject
+      "TemplateVersion"
+      ( \x ->
+          TemplateVersion'
+            Prelude.<$> (x Data..:? "CreatedTime")
+            Prelude.<*> ( x
+                            Data..:? "DataSetConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Errors")
+            Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SourceEntityArn")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "ThemeArn")
+            Prelude.<*> (x Data..:? "VersionNumber")
+      )
+
+instance Prelude.Hashable TemplateVersion where
+  hashWithSalt _salt TemplateVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` dataSetConfigurations
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` errors
+      `Prelude.hashWithSalt` sheets
+      `Prelude.hashWithSalt` sourceEntityArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` themeArn
+      `Prelude.hashWithSalt` versionNumber
+
+instance Prelude.NFData TemplateVersion where
+  rnf TemplateVersion' {..} =
+    Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf dataSetConfigurations
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf sheets
+      `Prelude.seq` Prelude.rnf sourceEntityArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf versionNumber
diff --git a/gen/Amazonka/QuickSight/Types/TemplateVersionDefinition.hs b/gen/Amazonka/QuickSight/Types/TemplateVersionDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateVersionDefinition.hs
@@ -0,0 +1,226 @@
+{-# 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.QuickSight.Types.TemplateVersionDefinition
+-- 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.QuickSight.Types.TemplateVersionDefinition 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.QuickSight.Types.AnalysisDefaults
+import Amazonka.QuickSight.Types.CalculatedField
+import Amazonka.QuickSight.Types.ColumnConfiguration
+import Amazonka.QuickSight.Types.DataSetConfiguration
+import Amazonka.QuickSight.Types.FilterGroup
+import Amazonka.QuickSight.Types.ParameterDeclaration
+import Amazonka.QuickSight.Types.SheetDefinition
+
+-- | The detailed definition of a template.
+--
+-- /See:/ 'newTemplateVersionDefinition' smart constructor.
+data TemplateVersionDefinition = TemplateVersionDefinition'
+  { analysisDefaults :: Prelude.Maybe AnalysisDefaults,
+    -- | An array of calculated field definitions for the template.
+    calculatedFields :: Prelude.Maybe [CalculatedField],
+    -- | An array of template-level column configurations. Column configurations
+    -- are used to set default formatting for a column that\'s used throughout
+    -- a template.
+    columnConfigurations :: Prelude.Maybe [ColumnConfiguration],
+    -- | Filter definitions for a template.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html Filtering Data>
+    -- in the /Amazon QuickSight User Guide/.
+    filterGroups :: Prelude.Maybe [FilterGroup],
+    -- | An array of parameter declarations for a template.
+    --
+    -- /Parameters/ are named variables that can transfer a value for use by an
+    -- action or an object.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+    -- in the /Amazon QuickSight User Guide/.
+    parameterDeclarations :: Prelude.Maybe [ParameterDeclaration],
+    -- | An array of sheet definitions for a template.
+    sheets :: Prelude.Maybe [SheetDefinition],
+    -- | An array of dataset configurations. These configurations define the
+    -- required columns for each dataset used within a template.
+    dataSetConfigurations :: [DataSetConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateVersionDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisDefaults', 'templateVersionDefinition_analysisDefaults' - Undocumented member.
+--
+-- 'calculatedFields', 'templateVersionDefinition_calculatedFields' - An array of calculated field definitions for the template.
+--
+-- 'columnConfigurations', 'templateVersionDefinition_columnConfigurations' - An array of template-level column configurations. Column configurations
+-- are used to set default formatting for a column that\'s used throughout
+-- a template.
+--
+-- 'filterGroups', 'templateVersionDefinition_filterGroups' - Filter definitions for a template.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html Filtering Data>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'parameterDeclarations', 'templateVersionDefinition_parameterDeclarations' - An array of parameter declarations for a template.
+--
+-- /Parameters/ are named variables that can transfer a value for use by an
+-- action or an object.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'sheets', 'templateVersionDefinition_sheets' - An array of sheet definitions for a template.
+--
+-- 'dataSetConfigurations', 'templateVersionDefinition_dataSetConfigurations' - An array of dataset configurations. These configurations define the
+-- required columns for each dataset used within a template.
+newTemplateVersionDefinition ::
+  TemplateVersionDefinition
+newTemplateVersionDefinition =
+  TemplateVersionDefinition'
+    { analysisDefaults =
+        Prelude.Nothing,
+      calculatedFields = Prelude.Nothing,
+      columnConfigurations = Prelude.Nothing,
+      filterGroups = Prelude.Nothing,
+      parameterDeclarations = Prelude.Nothing,
+      sheets = Prelude.Nothing,
+      dataSetConfigurations = Prelude.mempty
+    }
+
+-- | Undocumented member.
+templateVersionDefinition_analysisDefaults :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe AnalysisDefaults)
+templateVersionDefinition_analysisDefaults = Lens.lens (\TemplateVersionDefinition' {analysisDefaults} -> analysisDefaults) (\s@TemplateVersionDefinition' {} a -> s {analysisDefaults = a} :: TemplateVersionDefinition)
+
+-- | An array of calculated field definitions for the template.
+templateVersionDefinition_calculatedFields :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [CalculatedField])
+templateVersionDefinition_calculatedFields = Lens.lens (\TemplateVersionDefinition' {calculatedFields} -> calculatedFields) (\s@TemplateVersionDefinition' {} a -> s {calculatedFields = a} :: TemplateVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of template-level column configurations. Column configurations
+-- are used to set default formatting for a column that\'s used throughout
+-- a template.
+templateVersionDefinition_columnConfigurations :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [ColumnConfiguration])
+templateVersionDefinition_columnConfigurations = Lens.lens (\TemplateVersionDefinition' {columnConfigurations} -> columnConfigurations) (\s@TemplateVersionDefinition' {} a -> s {columnConfigurations = a} :: TemplateVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filter definitions for a template.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html Filtering Data>
+-- in the /Amazon QuickSight User Guide/.
+templateVersionDefinition_filterGroups :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [FilterGroup])
+templateVersionDefinition_filterGroups = Lens.lens (\TemplateVersionDefinition' {filterGroups} -> filterGroups) (\s@TemplateVersionDefinition' {} a -> s {filterGroups = a} :: TemplateVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of parameter declarations for a template.
+--
+-- /Parameters/ are named variables that can transfer a value for use by an
+-- action or an object.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide/.
+templateVersionDefinition_parameterDeclarations :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [ParameterDeclaration])
+templateVersionDefinition_parameterDeclarations = Lens.lens (\TemplateVersionDefinition' {parameterDeclarations} -> parameterDeclarations) (\s@TemplateVersionDefinition' {} a -> s {parameterDeclarations = a} :: TemplateVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of sheet definitions for a template.
+templateVersionDefinition_sheets :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [SheetDefinition])
+templateVersionDefinition_sheets = Lens.lens (\TemplateVersionDefinition' {sheets} -> sheets) (\s@TemplateVersionDefinition' {} a -> s {sheets = a} :: TemplateVersionDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of dataset configurations. These configurations define the
+-- required columns for each dataset used within a template.
+templateVersionDefinition_dataSetConfigurations :: Lens.Lens' TemplateVersionDefinition [DataSetConfiguration]
+templateVersionDefinition_dataSetConfigurations = Lens.lens (\TemplateVersionDefinition' {dataSetConfigurations} -> dataSetConfigurations) (\s@TemplateVersionDefinition' {} a -> s {dataSetConfigurations = a} :: TemplateVersionDefinition) Prelude.. Lens.coerced
+
+instance Data.FromJSON TemplateVersionDefinition where
+  parseJSON =
+    Data.withObject
+      "TemplateVersionDefinition"
+      ( \x ->
+          TemplateVersionDefinition'
+            Prelude.<$> (x Data..:? "AnalysisDefaults")
+            Prelude.<*> ( x
+                            Data..:? "CalculatedFields"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ColumnConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "FilterGroups" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "ParameterDeclarations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "DataSetConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable TemplateVersionDefinition where
+  hashWithSalt _salt TemplateVersionDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisDefaults
+      `Prelude.hashWithSalt` calculatedFields
+      `Prelude.hashWithSalt` columnConfigurations
+      `Prelude.hashWithSalt` filterGroups
+      `Prelude.hashWithSalt` parameterDeclarations
+      `Prelude.hashWithSalt` sheets
+      `Prelude.hashWithSalt` dataSetConfigurations
+
+instance Prelude.NFData TemplateVersionDefinition where
+  rnf TemplateVersionDefinition' {..} =
+    Prelude.rnf analysisDefaults
+      `Prelude.seq` Prelude.rnf calculatedFields
+      `Prelude.seq` Prelude.rnf columnConfigurations
+      `Prelude.seq` Prelude.rnf filterGroups
+      `Prelude.seq` Prelude.rnf parameterDeclarations
+      `Prelude.seq` Prelude.rnf sheets
+      `Prelude.seq` Prelude.rnf dataSetConfigurations
+
+instance Data.ToJSON TemplateVersionDefinition where
+  toJSON TemplateVersionDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AnalysisDefaults" Data..=)
+              Prelude.<$> analysisDefaults,
+            ("CalculatedFields" Data..=)
+              Prelude.<$> calculatedFields,
+            ("ColumnConfigurations" Data..=)
+              Prelude.<$> columnConfigurations,
+            ("FilterGroups" Data..=) Prelude.<$> filterGroups,
+            ("ParameterDeclarations" Data..=)
+              Prelude.<$> parameterDeclarations,
+            ("Sheets" Data..=) Prelude.<$> sheets,
+            Prelude.Just
+              ( "DataSetConfigurations"
+                  Data..= dataSetConfigurations
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TemplateVersionSummary.hs b/gen/Amazonka/QuickSight/Types/TemplateVersionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TemplateVersionSummary.hs
@@ -0,0 +1,121 @@
+{-# 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.QuickSight.Types.TemplateVersionSummary
+-- 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.QuickSight.Types.TemplateVersionSummary 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.QuickSight.Types.ResourceStatus
+
+-- | The template version.
+--
+-- /See:/ 'newTemplateVersionSummary' smart constructor.
+data TemplateVersionSummary = TemplateVersionSummary'
+  { -- | The Amazon Resource Name (ARN) of the template version.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time that this template version was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the template version.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The status of the template version.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The version number of the template version.
+    versionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateVersionSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'templateVersionSummary_arn' - The Amazon Resource Name (ARN) of the template version.
+--
+-- 'createdTime', 'templateVersionSummary_createdTime' - The time that this template version was created.
+--
+-- 'description', 'templateVersionSummary_description' - The description of the template version.
+--
+-- 'status', 'templateVersionSummary_status' - The status of the template version.
+--
+-- 'versionNumber', 'templateVersionSummary_versionNumber' - The version number of the template version.
+newTemplateVersionSummary ::
+  TemplateVersionSummary
+newTemplateVersionSummary =
+  TemplateVersionSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      status = Prelude.Nothing,
+      versionNumber = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the template version.
+templateVersionSummary_arn :: Lens.Lens' TemplateVersionSummary (Prelude.Maybe Prelude.Text)
+templateVersionSummary_arn = Lens.lens (\TemplateVersionSummary' {arn} -> arn) (\s@TemplateVersionSummary' {} a -> s {arn = a} :: TemplateVersionSummary)
+
+-- | The time that this template version was created.
+templateVersionSummary_createdTime :: Lens.Lens' TemplateVersionSummary (Prelude.Maybe Prelude.UTCTime)
+templateVersionSummary_createdTime = Lens.lens (\TemplateVersionSummary' {createdTime} -> createdTime) (\s@TemplateVersionSummary' {} a -> s {createdTime = a} :: TemplateVersionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the template version.
+templateVersionSummary_description :: Lens.Lens' TemplateVersionSummary (Prelude.Maybe Prelude.Text)
+templateVersionSummary_description = Lens.lens (\TemplateVersionSummary' {description} -> description) (\s@TemplateVersionSummary' {} a -> s {description = a} :: TemplateVersionSummary)
+
+-- | The status of the template version.
+templateVersionSummary_status :: Lens.Lens' TemplateVersionSummary (Prelude.Maybe ResourceStatus)
+templateVersionSummary_status = Lens.lens (\TemplateVersionSummary' {status} -> status) (\s@TemplateVersionSummary' {} a -> s {status = a} :: TemplateVersionSummary)
+
+-- | The version number of the template version.
+templateVersionSummary_versionNumber :: Lens.Lens' TemplateVersionSummary (Prelude.Maybe Prelude.Natural)
+templateVersionSummary_versionNumber = Lens.lens (\TemplateVersionSummary' {versionNumber} -> versionNumber) (\s@TemplateVersionSummary' {} a -> s {versionNumber = a} :: TemplateVersionSummary)
+
+instance Data.FromJSON TemplateVersionSummary where
+  parseJSON =
+    Data.withObject
+      "TemplateVersionSummary"
+      ( \x ->
+          TemplateVersionSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "VersionNumber")
+      )
+
+instance Prelude.Hashable TemplateVersionSummary where
+  hashWithSalt _salt TemplateVersionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` versionNumber
+
+instance Prelude.NFData TemplateVersionSummary where
+  rnf TemplateVersionSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf versionNumber
diff --git a/gen/Amazonka/QuickSight/Types/TeradataParameters.hs b/gen/Amazonka/QuickSight/Types/TeradataParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TeradataParameters.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.QuickSight.Types.TeradataParameters
+-- 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.QuickSight.Types.TeradataParameters 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 parameters for Teradata.
+--
+-- /See:/ 'newTeradataParameters' smart constructor.
+data TeradataParameters = TeradataParameters'
+  { -- | Host.
+    host :: Prelude.Text,
+    -- | Port.
+    port :: Prelude.Natural,
+    -- | Database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TeradataParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'teradataParameters_host' - Host.
+--
+-- 'port', 'teradataParameters_port' - Port.
+--
+-- 'database', 'teradataParameters_database' - Database.
+newTeradataParameters ::
+  -- | 'host'
+  Prelude.Text ->
+  -- | 'port'
+  Prelude.Natural ->
+  -- | 'database'
+  Prelude.Text ->
+  TeradataParameters
+newTeradataParameters pHost_ pPort_ pDatabase_ =
+  TeradataParameters'
+    { host = pHost_,
+      port = pPort_,
+      database = pDatabase_
+    }
+
+-- | Host.
+teradataParameters_host :: Lens.Lens' TeradataParameters Prelude.Text
+teradataParameters_host = Lens.lens (\TeradataParameters' {host} -> host) (\s@TeradataParameters' {} a -> s {host = a} :: TeradataParameters)
+
+-- | Port.
+teradataParameters_port :: Lens.Lens' TeradataParameters Prelude.Natural
+teradataParameters_port = Lens.lens (\TeradataParameters' {port} -> port) (\s@TeradataParameters' {} a -> s {port = a} :: TeradataParameters)
+
+-- | Database.
+teradataParameters_database :: Lens.Lens' TeradataParameters Prelude.Text
+teradataParameters_database = Lens.lens (\TeradataParameters' {database} -> database) (\s@TeradataParameters' {} a -> s {database = a} :: TeradataParameters)
+
+instance Data.FromJSON TeradataParameters where
+  parseJSON =
+    Data.withObject
+      "TeradataParameters"
+      ( \x ->
+          TeradataParameters'
+            Prelude.<$> (x Data..: "Host")
+            Prelude.<*> (x Data..: "Port")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable TeradataParameters where
+  hashWithSalt _salt TeradataParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData TeradataParameters where
+  rnf TeradataParameters' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON TeradataParameters where
+  toJSON TeradataParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Host" Data..= host),
+            Prelude.Just ("Port" Data..= port),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TextAreaControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/TextAreaControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TextAreaControlDisplayOptions.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.QuickSight.Types.TextAreaControlDisplayOptions
+-- 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.QuickSight.Types.TextAreaControlDisplayOptions 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.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.TextControlPlaceholderOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newTextAreaControlDisplayOptions' smart constructor.
+data TextAreaControlDisplayOptions = TextAreaControlDisplayOptions'
+  { -- | The configuration of the placeholder options in a text area control.
+    placeholderOptions :: Prelude.Maybe TextControlPlaceholderOptions,
+    -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TextAreaControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'placeholderOptions', 'textAreaControlDisplayOptions_placeholderOptions' - The configuration of the placeholder options in a text area control.
+--
+-- 'titleOptions', 'textAreaControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newTextAreaControlDisplayOptions ::
+  TextAreaControlDisplayOptions
+newTextAreaControlDisplayOptions =
+  TextAreaControlDisplayOptions'
+    { placeholderOptions =
+        Prelude.Nothing,
+      titleOptions = Prelude.Nothing
+    }
+
+-- | The configuration of the placeholder options in a text area control.
+textAreaControlDisplayOptions_placeholderOptions :: Lens.Lens' TextAreaControlDisplayOptions (Prelude.Maybe TextControlPlaceholderOptions)
+textAreaControlDisplayOptions_placeholderOptions = Lens.lens (\TextAreaControlDisplayOptions' {placeholderOptions} -> placeholderOptions) (\s@TextAreaControlDisplayOptions' {} a -> s {placeholderOptions = a} :: TextAreaControlDisplayOptions)
+
+-- | The options to configure the title visibility, name, and font size.
+textAreaControlDisplayOptions_titleOptions :: Lens.Lens' TextAreaControlDisplayOptions (Prelude.Maybe LabelOptions)
+textAreaControlDisplayOptions_titleOptions = Lens.lens (\TextAreaControlDisplayOptions' {titleOptions} -> titleOptions) (\s@TextAreaControlDisplayOptions' {} a -> s {titleOptions = a} :: TextAreaControlDisplayOptions)
+
+instance Data.FromJSON TextAreaControlDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "TextAreaControlDisplayOptions"
+      ( \x ->
+          TextAreaControlDisplayOptions'
+            Prelude.<$> (x Data..:? "PlaceholderOptions")
+            Prelude.<*> (x Data..:? "TitleOptions")
+      )
+
+instance
+  Prelude.Hashable
+    TextAreaControlDisplayOptions
+  where
+  hashWithSalt _salt TextAreaControlDisplayOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` placeholderOptions
+      `Prelude.hashWithSalt` titleOptions
+
+instance Prelude.NFData TextAreaControlDisplayOptions where
+  rnf TextAreaControlDisplayOptions' {..} =
+    Prelude.rnf placeholderOptions
+      `Prelude.seq` Prelude.rnf titleOptions
+
+instance Data.ToJSON TextAreaControlDisplayOptions where
+  toJSON TextAreaControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PlaceholderOptions" Data..=)
+              Prelude.<$> placeholderOptions,
+            ("TitleOptions" Data..=) Prelude.<$> titleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TextConditionalFormat.hs b/gen/Amazonka/QuickSight/Types/TextConditionalFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TextConditionalFormat.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.TextConditionalFormat
+-- 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.QuickSight.Types.TextConditionalFormat 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.QuickSight.Types.ConditionalFormattingColor
+import Amazonka.QuickSight.Types.ConditionalFormattingIcon
+
+-- | The conditional formatting for the text.
+--
+-- /See:/ 'newTextConditionalFormat' smart constructor.
+data TextConditionalFormat = TextConditionalFormat'
+  { -- | The conditional formatting for the text background color.
+    backgroundColor :: Prelude.Maybe ConditionalFormattingColor,
+    -- | The conditional formatting for the icon.
+    icon :: Prelude.Maybe ConditionalFormattingIcon,
+    -- | The conditional formatting for the text color.
+    textColor :: Prelude.Maybe ConditionalFormattingColor
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TextConditionalFormat' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backgroundColor', 'textConditionalFormat_backgroundColor' - The conditional formatting for the text background color.
+--
+-- 'icon', 'textConditionalFormat_icon' - The conditional formatting for the icon.
+--
+-- 'textColor', 'textConditionalFormat_textColor' - The conditional formatting for the text color.
+newTextConditionalFormat ::
+  TextConditionalFormat
+newTextConditionalFormat =
+  TextConditionalFormat'
+    { backgroundColor =
+        Prelude.Nothing,
+      icon = Prelude.Nothing,
+      textColor = Prelude.Nothing
+    }
+
+-- | The conditional formatting for the text background color.
+textConditionalFormat_backgroundColor :: Lens.Lens' TextConditionalFormat (Prelude.Maybe ConditionalFormattingColor)
+textConditionalFormat_backgroundColor = Lens.lens (\TextConditionalFormat' {backgroundColor} -> backgroundColor) (\s@TextConditionalFormat' {} a -> s {backgroundColor = a} :: TextConditionalFormat)
+
+-- | The conditional formatting for the icon.
+textConditionalFormat_icon :: Lens.Lens' TextConditionalFormat (Prelude.Maybe ConditionalFormattingIcon)
+textConditionalFormat_icon = Lens.lens (\TextConditionalFormat' {icon} -> icon) (\s@TextConditionalFormat' {} a -> s {icon = a} :: TextConditionalFormat)
+
+-- | The conditional formatting for the text color.
+textConditionalFormat_textColor :: Lens.Lens' TextConditionalFormat (Prelude.Maybe ConditionalFormattingColor)
+textConditionalFormat_textColor = Lens.lens (\TextConditionalFormat' {textColor} -> textColor) (\s@TextConditionalFormat' {} a -> s {textColor = a} :: TextConditionalFormat)
+
+instance Data.FromJSON TextConditionalFormat where
+  parseJSON =
+    Data.withObject
+      "TextConditionalFormat"
+      ( \x ->
+          TextConditionalFormat'
+            Prelude.<$> (x Data..:? "BackgroundColor")
+            Prelude.<*> (x Data..:? "Icon")
+            Prelude.<*> (x Data..:? "TextColor")
+      )
+
+instance Prelude.Hashable TextConditionalFormat where
+  hashWithSalt _salt TextConditionalFormat' {..} =
+    _salt
+      `Prelude.hashWithSalt` backgroundColor
+      `Prelude.hashWithSalt` icon
+      `Prelude.hashWithSalt` textColor
+
+instance Prelude.NFData TextConditionalFormat where
+  rnf TextConditionalFormat' {..} =
+    Prelude.rnf backgroundColor
+      `Prelude.seq` Prelude.rnf icon
+      `Prelude.seq` Prelude.rnf textColor
+
+instance Data.ToJSON TextConditionalFormat where
+  toJSON TextConditionalFormat' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BackgroundColor" Data..=)
+              Prelude.<$> backgroundColor,
+            ("Icon" Data..=) Prelude.<$> icon,
+            ("TextColor" Data..=) Prelude.<$> textColor
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TextControlPlaceholderOptions.hs b/gen/Amazonka/QuickSight/Types/TextControlPlaceholderOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TextControlPlaceholderOptions.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.QuickSight.Types.TextControlPlaceholderOptions
+-- 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.QuickSight.Types.TextControlPlaceholderOptions 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.QuickSight.Types.Visibility
+
+-- | The configuration of the placeholder options in a text control.
+--
+-- /See:/ 'newTextControlPlaceholderOptions' smart constructor.
+data TextControlPlaceholderOptions = TextControlPlaceholderOptions'
+  { -- | The visibility configuration of the placeholder options in a text
+    -- control.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TextControlPlaceholderOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'textControlPlaceholderOptions_visibility' - The visibility configuration of the placeholder options in a text
+-- control.
+newTextControlPlaceholderOptions ::
+  TextControlPlaceholderOptions
+newTextControlPlaceholderOptions =
+  TextControlPlaceholderOptions'
+    { visibility =
+        Prelude.Nothing
+    }
+
+-- | The visibility configuration of the placeholder options in a text
+-- control.
+textControlPlaceholderOptions_visibility :: Lens.Lens' TextControlPlaceholderOptions (Prelude.Maybe Visibility)
+textControlPlaceholderOptions_visibility = Lens.lens (\TextControlPlaceholderOptions' {visibility} -> visibility) (\s@TextControlPlaceholderOptions' {} a -> s {visibility = a} :: TextControlPlaceholderOptions)
+
+instance Data.FromJSON TextControlPlaceholderOptions where
+  parseJSON =
+    Data.withObject
+      "TextControlPlaceholderOptions"
+      ( \x ->
+          TextControlPlaceholderOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance
+  Prelude.Hashable
+    TextControlPlaceholderOptions
+  where
+  hashWithSalt _salt TextControlPlaceholderOptions' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData TextControlPlaceholderOptions where
+  rnf TextControlPlaceholderOptions' {..} =
+    Prelude.rnf visibility
+
+instance Data.ToJSON TextControlPlaceholderOptions where
+  toJSON TextControlPlaceholderOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TextFieldControlDisplayOptions.hs b/gen/Amazonka/QuickSight/Types/TextFieldControlDisplayOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TextFieldControlDisplayOptions.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.QuickSight.Types.TextFieldControlDisplayOptions
+-- 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.QuickSight.Types.TextFieldControlDisplayOptions 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.QuickSight.Types.LabelOptions
+import Amazonka.QuickSight.Types.TextControlPlaceholderOptions
+
+-- | The display options of a control.
+--
+-- /See:/ 'newTextFieldControlDisplayOptions' smart constructor.
+data TextFieldControlDisplayOptions = TextFieldControlDisplayOptions'
+  { -- | The configuration of the placeholder options in a text field control.
+    placeholderOptions :: Prelude.Maybe TextControlPlaceholderOptions,
+    -- | The options to configure the title visibility, name, and font size.
+    titleOptions :: Prelude.Maybe LabelOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TextFieldControlDisplayOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'placeholderOptions', 'textFieldControlDisplayOptions_placeholderOptions' - The configuration of the placeholder options in a text field control.
+--
+-- 'titleOptions', 'textFieldControlDisplayOptions_titleOptions' - The options to configure the title visibility, name, and font size.
+newTextFieldControlDisplayOptions ::
+  TextFieldControlDisplayOptions
+newTextFieldControlDisplayOptions =
+  TextFieldControlDisplayOptions'
+    { placeholderOptions =
+        Prelude.Nothing,
+      titleOptions = Prelude.Nothing
+    }
+
+-- | The configuration of the placeholder options in a text field control.
+textFieldControlDisplayOptions_placeholderOptions :: Lens.Lens' TextFieldControlDisplayOptions (Prelude.Maybe TextControlPlaceholderOptions)
+textFieldControlDisplayOptions_placeholderOptions = Lens.lens (\TextFieldControlDisplayOptions' {placeholderOptions} -> placeholderOptions) (\s@TextFieldControlDisplayOptions' {} a -> s {placeholderOptions = a} :: TextFieldControlDisplayOptions)
+
+-- | The options to configure the title visibility, name, and font size.
+textFieldControlDisplayOptions_titleOptions :: Lens.Lens' TextFieldControlDisplayOptions (Prelude.Maybe LabelOptions)
+textFieldControlDisplayOptions_titleOptions = Lens.lens (\TextFieldControlDisplayOptions' {titleOptions} -> titleOptions) (\s@TextFieldControlDisplayOptions' {} a -> s {titleOptions = a} :: TextFieldControlDisplayOptions)
+
+instance Data.FromJSON TextFieldControlDisplayOptions where
+  parseJSON =
+    Data.withObject
+      "TextFieldControlDisplayOptions"
+      ( \x ->
+          TextFieldControlDisplayOptions'
+            Prelude.<$> (x Data..:? "PlaceholderOptions")
+            Prelude.<*> (x Data..:? "TitleOptions")
+      )
+
+instance
+  Prelude.Hashable
+    TextFieldControlDisplayOptions
+  where
+  hashWithSalt
+    _salt
+    TextFieldControlDisplayOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` placeholderOptions
+        `Prelude.hashWithSalt` titleOptions
+
+instance
+  Prelude.NFData
+    TextFieldControlDisplayOptions
+  where
+  rnf TextFieldControlDisplayOptions' {..} =
+    Prelude.rnf placeholderOptions
+      `Prelude.seq` Prelude.rnf titleOptions
+
+instance Data.ToJSON TextFieldControlDisplayOptions where
+  toJSON TextFieldControlDisplayOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PlaceholderOptions" Data..=)
+              Prelude.<$> placeholderOptions,
+            ("TitleOptions" Data..=) Prelude.<$> titleOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TextQualifier.hs b/gen/Amazonka/QuickSight/Types/TextQualifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TextQualifier.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.QuickSight.Types.TextQualifier
+-- 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.QuickSight.Types.TextQualifier
+  ( TextQualifier
+      ( ..,
+        TextQualifier_DOUBLE_QUOTE,
+        TextQualifier_SINGLE_QUOTE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TextQualifier = TextQualifier'
+  { fromTextQualifier ::
+      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 TextQualifier_DOUBLE_QUOTE :: TextQualifier
+pattern TextQualifier_DOUBLE_QUOTE = TextQualifier' "DOUBLE_QUOTE"
+
+pattern TextQualifier_SINGLE_QUOTE :: TextQualifier
+pattern TextQualifier_SINGLE_QUOTE = TextQualifier' "SINGLE_QUOTE"
+
+{-# COMPLETE
+  TextQualifier_DOUBLE_QUOTE,
+  TextQualifier_SINGLE_QUOTE,
+  TextQualifier'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TextWrap.hs b/gen/Amazonka/QuickSight/Types/TextWrap.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TextWrap.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.QuickSight.Types.TextWrap
+-- 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.QuickSight.Types.TextWrap
+  ( TextWrap
+      ( ..,
+        TextWrap_NONE,
+        TextWrap_WRAP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TextWrap = TextWrap'
+  { fromTextWrap ::
+      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 TextWrap_NONE :: TextWrap
+pattern TextWrap_NONE = TextWrap' "NONE"
+
+pattern TextWrap_WRAP :: TextWrap
+pattern TextWrap_WRAP = TextWrap' "WRAP"
+
+{-# COMPLETE
+  TextWrap_NONE,
+  TextWrap_WRAP,
+  TextWrap'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Theme.hs b/gen/Amazonka/QuickSight/Types/Theme.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Theme.hs
@@ -0,0 +1,148 @@
+{-# 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.QuickSight.Types.Theme
+-- 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.QuickSight.Types.Theme 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.QuickSight.Types.ThemeType
+import Amazonka.QuickSight.Types.ThemeVersion
+
+-- | Summary information about a theme.
+--
+-- /See:/ 'newTheme' smart constructor.
+data Theme = Theme'
+  { -- | The Amazon Resource Name (ARN) of the theme.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the theme was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The date and time that the theme was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name that the user gives to the theme.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The identifier that the user gives to the theme.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The type of theme, based on how it was created. Valid values include:
+    -- @QUICKSIGHT@ and @CUSTOM@.
+    type' :: Prelude.Maybe ThemeType,
+    version :: Prelude.Maybe ThemeVersion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Theme' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'theme_arn' - The Amazon Resource Name (ARN) of the theme.
+--
+-- 'createdTime', 'theme_createdTime' - The date and time that the theme was created.
+--
+-- 'lastUpdatedTime', 'theme_lastUpdatedTime' - The date and time that the theme was last updated.
+--
+-- 'name', 'theme_name' - The name that the user gives to the theme.
+--
+-- 'themeId', 'theme_themeId' - The identifier that the user gives to the theme.
+--
+-- 'type'', 'theme_type' - The type of theme, based on how it was created. Valid values include:
+-- @QUICKSIGHT@ and @CUSTOM@.
+--
+-- 'version', 'theme_version' - Undocumented member.
+newTheme ::
+  Theme
+newTheme =
+  Theme'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      version = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the theme.
+theme_arn :: Lens.Lens' Theme (Prelude.Maybe Prelude.Text)
+theme_arn = Lens.lens (\Theme' {arn} -> arn) (\s@Theme' {} a -> s {arn = a} :: Theme)
+
+-- | The date and time that the theme was created.
+theme_createdTime :: Lens.Lens' Theme (Prelude.Maybe Prelude.UTCTime)
+theme_createdTime = Lens.lens (\Theme' {createdTime} -> createdTime) (\s@Theme' {} a -> s {createdTime = a} :: Theme) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that the theme was last updated.
+theme_lastUpdatedTime :: Lens.Lens' Theme (Prelude.Maybe Prelude.UTCTime)
+theme_lastUpdatedTime = Lens.lens (\Theme' {lastUpdatedTime} -> lastUpdatedTime) (\s@Theme' {} a -> s {lastUpdatedTime = a} :: Theme) Prelude.. Lens.mapping Data._Time
+
+-- | The name that the user gives to the theme.
+theme_name :: Lens.Lens' Theme (Prelude.Maybe Prelude.Text)
+theme_name = Lens.lens (\Theme' {name} -> name) (\s@Theme' {} a -> s {name = a} :: Theme)
+
+-- | The identifier that the user gives to the theme.
+theme_themeId :: Lens.Lens' Theme (Prelude.Maybe Prelude.Text)
+theme_themeId = Lens.lens (\Theme' {themeId} -> themeId) (\s@Theme' {} a -> s {themeId = a} :: Theme)
+
+-- | The type of theme, based on how it was created. Valid values include:
+-- @QUICKSIGHT@ and @CUSTOM@.
+theme_type :: Lens.Lens' Theme (Prelude.Maybe ThemeType)
+theme_type = Lens.lens (\Theme' {type'} -> type') (\s@Theme' {} a -> s {type' = a} :: Theme)
+
+-- | Undocumented member.
+theme_version :: Lens.Lens' Theme (Prelude.Maybe ThemeVersion)
+theme_version = Lens.lens (\Theme' {version} -> version) (\s@Theme' {} a -> s {version = a} :: Theme)
+
+instance Data.FromJSON Theme where
+  parseJSON =
+    Data.withObject
+      "Theme"
+      ( \x ->
+          Theme'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ThemeId")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "Version")
+      )
+
+instance Prelude.Hashable Theme where
+  hashWithSalt _salt Theme' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` version
+
+instance Prelude.NFData Theme where
+  rnf Theme' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf version
diff --git a/gen/Amazonka/QuickSight/Types/ThemeAlias.hs b/gen/Amazonka/QuickSight/Types/ThemeAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeAlias.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.QuickSight.Types.ThemeAlias
+-- 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.QuickSight.Types.ThemeAlias 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
+
+-- | An alias for a theme.
+--
+-- /See:/ 'newThemeAlias' smart constructor.
+data ThemeAlias = ThemeAlias'
+  { -- | The display name of the theme alias.
+    aliasName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the theme alias.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the theme alias.
+    themeVersionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThemeAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliasName', 'themeAlias_aliasName' - The display name of the theme alias.
+--
+-- 'arn', 'themeAlias_arn' - The Amazon Resource Name (ARN) of the theme alias.
+--
+-- 'themeVersionNumber', 'themeAlias_themeVersionNumber' - The version number of the theme alias.
+newThemeAlias ::
+  ThemeAlias
+newThemeAlias =
+  ThemeAlias'
+    { aliasName = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      themeVersionNumber = Prelude.Nothing
+    }
+
+-- | The display name of the theme alias.
+themeAlias_aliasName :: Lens.Lens' ThemeAlias (Prelude.Maybe Prelude.Text)
+themeAlias_aliasName = Lens.lens (\ThemeAlias' {aliasName} -> aliasName) (\s@ThemeAlias' {} a -> s {aliasName = a} :: ThemeAlias)
+
+-- | The Amazon Resource Name (ARN) of the theme alias.
+themeAlias_arn :: Lens.Lens' ThemeAlias (Prelude.Maybe Prelude.Text)
+themeAlias_arn = Lens.lens (\ThemeAlias' {arn} -> arn) (\s@ThemeAlias' {} a -> s {arn = a} :: ThemeAlias)
+
+-- | The version number of the theme alias.
+themeAlias_themeVersionNumber :: Lens.Lens' ThemeAlias (Prelude.Maybe Prelude.Natural)
+themeAlias_themeVersionNumber = Lens.lens (\ThemeAlias' {themeVersionNumber} -> themeVersionNumber) (\s@ThemeAlias' {} a -> s {themeVersionNumber = a} :: ThemeAlias)
+
+instance Data.FromJSON ThemeAlias where
+  parseJSON =
+    Data.withObject
+      "ThemeAlias"
+      ( \x ->
+          ThemeAlias'
+            Prelude.<$> (x Data..:? "AliasName")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "ThemeVersionNumber")
+      )
+
+instance Prelude.Hashable ThemeAlias where
+  hashWithSalt _salt ThemeAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` themeVersionNumber
+
+instance Prelude.NFData ThemeAlias where
+  rnf ThemeAlias' {..} =
+    Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf themeVersionNumber
diff --git a/gen/Amazonka/QuickSight/Types/ThemeConfiguration.hs b/gen/Amazonka/QuickSight/Types/ThemeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeConfiguration.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ThemeConfiguration
+-- 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.QuickSight.Types.ThemeConfiguration 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.QuickSight.Types.DataColorPalette
+import Amazonka.QuickSight.Types.SheetStyle
+import Amazonka.QuickSight.Types.Typography
+import Amazonka.QuickSight.Types.UIColorPalette
+
+-- | The theme configuration. This configuration contains all of the display
+-- properties for a theme.
+--
+-- /See:/ 'newThemeConfiguration' smart constructor.
+data ThemeConfiguration = ThemeConfiguration'
+  { -- | Color properties that apply to chart data colors.
+    dataColorPalette :: Prelude.Maybe DataColorPalette,
+    -- | Display options related to sheets.
+    sheet :: Prelude.Maybe SheetStyle,
+    typography :: Prelude.Maybe Typography,
+    -- | Color properties that apply to the UI and to charts, excluding the
+    -- colors that apply to data.
+    uIColorPalette :: Prelude.Maybe UIColorPalette
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThemeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataColorPalette', 'themeConfiguration_dataColorPalette' - Color properties that apply to chart data colors.
+--
+-- 'sheet', 'themeConfiguration_sheet' - Display options related to sheets.
+--
+-- 'typography', 'themeConfiguration_typography' - Undocumented member.
+--
+-- 'uIColorPalette', 'themeConfiguration_uIColorPalette' - Color properties that apply to the UI and to charts, excluding the
+-- colors that apply to data.
+newThemeConfiguration ::
+  ThemeConfiguration
+newThemeConfiguration =
+  ThemeConfiguration'
+    { dataColorPalette =
+        Prelude.Nothing,
+      sheet = Prelude.Nothing,
+      typography = Prelude.Nothing,
+      uIColorPalette = Prelude.Nothing
+    }
+
+-- | Color properties that apply to chart data colors.
+themeConfiguration_dataColorPalette :: Lens.Lens' ThemeConfiguration (Prelude.Maybe DataColorPalette)
+themeConfiguration_dataColorPalette = Lens.lens (\ThemeConfiguration' {dataColorPalette} -> dataColorPalette) (\s@ThemeConfiguration' {} a -> s {dataColorPalette = a} :: ThemeConfiguration)
+
+-- | Display options related to sheets.
+themeConfiguration_sheet :: Lens.Lens' ThemeConfiguration (Prelude.Maybe SheetStyle)
+themeConfiguration_sheet = Lens.lens (\ThemeConfiguration' {sheet} -> sheet) (\s@ThemeConfiguration' {} a -> s {sheet = a} :: ThemeConfiguration)
+
+-- | Undocumented member.
+themeConfiguration_typography :: Lens.Lens' ThemeConfiguration (Prelude.Maybe Typography)
+themeConfiguration_typography = Lens.lens (\ThemeConfiguration' {typography} -> typography) (\s@ThemeConfiguration' {} a -> s {typography = a} :: ThemeConfiguration)
+
+-- | Color properties that apply to the UI and to charts, excluding the
+-- colors that apply to data.
+themeConfiguration_uIColorPalette :: Lens.Lens' ThemeConfiguration (Prelude.Maybe UIColorPalette)
+themeConfiguration_uIColorPalette = Lens.lens (\ThemeConfiguration' {uIColorPalette} -> uIColorPalette) (\s@ThemeConfiguration' {} a -> s {uIColorPalette = a} :: ThemeConfiguration)
+
+instance Data.FromJSON ThemeConfiguration where
+  parseJSON =
+    Data.withObject
+      "ThemeConfiguration"
+      ( \x ->
+          ThemeConfiguration'
+            Prelude.<$> (x Data..:? "DataColorPalette")
+            Prelude.<*> (x Data..:? "Sheet")
+            Prelude.<*> (x Data..:? "Typography")
+            Prelude.<*> (x Data..:? "UIColorPalette")
+      )
+
+instance Prelude.Hashable ThemeConfiguration where
+  hashWithSalt _salt ThemeConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataColorPalette
+      `Prelude.hashWithSalt` sheet
+      `Prelude.hashWithSalt` typography
+      `Prelude.hashWithSalt` uIColorPalette
+
+instance Prelude.NFData ThemeConfiguration where
+  rnf ThemeConfiguration' {..} =
+    Prelude.rnf dataColorPalette
+      `Prelude.seq` Prelude.rnf sheet
+      `Prelude.seq` Prelude.rnf typography
+      `Prelude.seq` Prelude.rnf uIColorPalette
+
+instance Data.ToJSON ThemeConfiguration where
+  toJSON ThemeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataColorPalette" Data..=)
+              Prelude.<$> dataColorPalette,
+            ("Sheet" Data..=) Prelude.<$> sheet,
+            ("Typography" Data..=) Prelude.<$> typography,
+            ("UIColorPalette" Data..=)
+              Prelude.<$> uIColorPalette
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/ThemeError.hs b/gen/Amazonka/QuickSight/Types/ThemeError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeError.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.QuickSight.Types.ThemeError
+-- 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.QuickSight.Types.ThemeError 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.QuickSight.Types.ThemeErrorType
+
+-- | Theme error.
+--
+-- /See:/ 'newThemeError' smart constructor.
+data ThemeError = ThemeError'
+  { -- | The error message.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The type of error.
+    type' :: Prelude.Maybe ThemeErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThemeError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'message', 'themeError_message' - The error message.
+--
+-- 'type'', 'themeError_type' - The type of error.
+newThemeError ::
+  ThemeError
+newThemeError =
+  ThemeError'
+    { message = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The error message.
+themeError_message :: Lens.Lens' ThemeError (Prelude.Maybe Prelude.Text)
+themeError_message = Lens.lens (\ThemeError' {message} -> message) (\s@ThemeError' {} a -> s {message = a} :: ThemeError)
+
+-- | The type of error.
+themeError_type :: Lens.Lens' ThemeError (Prelude.Maybe ThemeErrorType)
+themeError_type = Lens.lens (\ThemeError' {type'} -> type') (\s@ThemeError' {} a -> s {type' = a} :: ThemeError)
+
+instance Data.FromJSON ThemeError where
+  parseJSON =
+    Data.withObject
+      "ThemeError"
+      ( \x ->
+          ThemeError'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ThemeError where
+  hashWithSalt _salt ThemeError' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ThemeError where
+  rnf ThemeError' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/QuickSight/Types/ThemeErrorType.hs b/gen/Amazonka/QuickSight/Types/ThemeErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeErrorType.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.QuickSight.Types.ThemeErrorType
+-- 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.QuickSight.Types.ThemeErrorType
+  ( ThemeErrorType
+      ( ..,
+        ThemeErrorType_INTERNAL_FAILURE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ThemeErrorType = ThemeErrorType'
+  { fromThemeErrorType ::
+      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 ThemeErrorType_INTERNAL_FAILURE :: ThemeErrorType
+pattern ThemeErrorType_INTERNAL_FAILURE = ThemeErrorType' "INTERNAL_FAILURE"
+
+{-# COMPLETE
+  ThemeErrorType_INTERNAL_FAILURE,
+  ThemeErrorType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ThemeSummary.hs b/gen/Amazonka/QuickSight/Types/ThemeSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeSummary.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.ThemeSummary
+-- 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.QuickSight.Types.ThemeSummary 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 theme summary.
+--
+-- /See:/ 'newThemeSummary' smart constructor.
+data ThemeSummary = ThemeSummary'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that this theme was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The last date and time that this theme was updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The latest version number for the theme.
+    latestVersionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | the display name for the theme.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the theme. This ID is unique per Amazon Web Services Region
+    -- for each Amazon Web Services account.
+    themeId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThemeSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'themeSummary_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'createdTime', 'themeSummary_createdTime' - The date and time that this theme was created.
+--
+-- 'lastUpdatedTime', 'themeSummary_lastUpdatedTime' - The last date and time that this theme was updated.
+--
+-- 'latestVersionNumber', 'themeSummary_latestVersionNumber' - The latest version number for the theme.
+--
+-- 'name', 'themeSummary_name' - the display name for the theme.
+--
+-- 'themeId', 'themeSummary_themeId' - The ID of the theme. This ID is unique per Amazon Web Services Region
+-- for each Amazon Web Services account.
+newThemeSummary ::
+  ThemeSummary
+newThemeSummary =
+  ThemeSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      latestVersionNumber = Prelude.Nothing,
+      name = Prelude.Nothing,
+      themeId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+themeSummary_arn :: Lens.Lens' ThemeSummary (Prelude.Maybe Prelude.Text)
+themeSummary_arn = Lens.lens (\ThemeSummary' {arn} -> arn) (\s@ThemeSummary' {} a -> s {arn = a} :: ThemeSummary)
+
+-- | The date and time that this theme was created.
+themeSummary_createdTime :: Lens.Lens' ThemeSummary (Prelude.Maybe Prelude.UTCTime)
+themeSummary_createdTime = Lens.lens (\ThemeSummary' {createdTime} -> createdTime) (\s@ThemeSummary' {} a -> s {createdTime = a} :: ThemeSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The last date and time that this theme was updated.
+themeSummary_lastUpdatedTime :: Lens.Lens' ThemeSummary (Prelude.Maybe Prelude.UTCTime)
+themeSummary_lastUpdatedTime = Lens.lens (\ThemeSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@ThemeSummary' {} a -> s {lastUpdatedTime = a} :: ThemeSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The latest version number for the theme.
+themeSummary_latestVersionNumber :: Lens.Lens' ThemeSummary (Prelude.Maybe Prelude.Natural)
+themeSummary_latestVersionNumber = Lens.lens (\ThemeSummary' {latestVersionNumber} -> latestVersionNumber) (\s@ThemeSummary' {} a -> s {latestVersionNumber = a} :: ThemeSummary)
+
+-- | the display name for the theme.
+themeSummary_name :: Lens.Lens' ThemeSummary (Prelude.Maybe Prelude.Text)
+themeSummary_name = Lens.lens (\ThemeSummary' {name} -> name) (\s@ThemeSummary' {} a -> s {name = a} :: ThemeSummary)
+
+-- | The ID of the theme. This ID is unique per Amazon Web Services Region
+-- for each Amazon Web Services account.
+themeSummary_themeId :: Lens.Lens' ThemeSummary (Prelude.Maybe Prelude.Text)
+themeSummary_themeId = Lens.lens (\ThemeSummary' {themeId} -> themeId) (\s@ThemeSummary' {} a -> s {themeId = a} :: ThemeSummary)
+
+instance Data.FromJSON ThemeSummary where
+  parseJSON =
+    Data.withObject
+      "ThemeSummary"
+      ( \x ->
+          ThemeSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "LatestVersionNumber")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ThemeId")
+      )
+
+instance Prelude.Hashable ThemeSummary where
+  hashWithSalt _salt ThemeSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` latestVersionNumber
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData ThemeSummary where
+  rnf ThemeSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf latestVersionNumber
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf themeId
diff --git a/gen/Amazonka/QuickSight/Types/ThemeType.hs b/gen/Amazonka/QuickSight/Types/ThemeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeType.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.QuickSight.Types.ThemeType
+-- 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.QuickSight.Types.ThemeType
+  ( ThemeType
+      ( ..,
+        ThemeType_ALL,
+        ThemeType_CUSTOM,
+        ThemeType_QUICKSIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ThemeType = ThemeType'
+  { fromThemeType ::
+      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 ThemeType_ALL :: ThemeType
+pattern ThemeType_ALL = ThemeType' "ALL"
+
+pattern ThemeType_CUSTOM :: ThemeType
+pattern ThemeType_CUSTOM = ThemeType' "CUSTOM"
+
+pattern ThemeType_QUICKSIGHT :: ThemeType
+pattern ThemeType_QUICKSIGHT = ThemeType' "QUICKSIGHT"
+
+{-# COMPLETE
+  ThemeType_ALL,
+  ThemeType_CUSTOM,
+  ThemeType_QUICKSIGHT,
+  ThemeType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ThemeVersion.hs b/gen/Amazonka/QuickSight/Types/ThemeVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeVersion.hs
@@ -0,0 +1,168 @@
+{-# 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.QuickSight.Types.ThemeVersion
+-- 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.QuickSight.Types.ThemeVersion 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.QuickSight.Types.ResourceStatus
+import Amazonka.QuickSight.Types.ThemeConfiguration
+import Amazonka.QuickSight.Types.ThemeError
+
+-- | A version of a theme.
+--
+-- /See:/ 'newThemeVersion' smart constructor.
+data ThemeVersion = ThemeVersion'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon QuickSight-defined ID of the theme that a custom theme
+    -- inherits from. All themes initially inherit from a default Amazon
+    -- QuickSight theme.
+    baseThemeId :: Prelude.Maybe Prelude.Text,
+    -- | The theme configuration, which contains all the theme display
+    -- properties.
+    configuration :: Prelude.Maybe ThemeConfiguration,
+    -- | The date and time that this theme version was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the theme.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Errors associated with the theme.
+    errors :: Prelude.Maybe (Prelude.NonEmpty ThemeError),
+    -- | The status of the theme version.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The version number of the theme.
+    versionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThemeVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'themeVersion_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'baseThemeId', 'themeVersion_baseThemeId' - The Amazon QuickSight-defined ID of the theme that a custom theme
+-- inherits from. All themes initially inherit from a default Amazon
+-- QuickSight theme.
+--
+-- 'configuration', 'themeVersion_configuration' - The theme configuration, which contains all the theme display
+-- properties.
+--
+-- 'createdTime', 'themeVersion_createdTime' - The date and time that this theme version was created.
+--
+-- 'description', 'themeVersion_description' - The description of the theme.
+--
+-- 'errors', 'themeVersion_errors' - Errors associated with the theme.
+--
+-- 'status', 'themeVersion_status' - The status of the theme version.
+--
+-- 'versionNumber', 'themeVersion_versionNumber' - The version number of the theme.
+newThemeVersion ::
+  ThemeVersion
+newThemeVersion =
+  ThemeVersion'
+    { arn = Prelude.Nothing,
+      baseThemeId = Prelude.Nothing,
+      configuration = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      errors = Prelude.Nothing,
+      status = Prelude.Nothing,
+      versionNumber = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+themeVersion_arn :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Text)
+themeVersion_arn = Lens.lens (\ThemeVersion' {arn} -> arn) (\s@ThemeVersion' {} a -> s {arn = a} :: ThemeVersion)
+
+-- | The Amazon QuickSight-defined ID of the theme that a custom theme
+-- inherits from. All themes initially inherit from a default Amazon
+-- QuickSight theme.
+themeVersion_baseThemeId :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Text)
+themeVersion_baseThemeId = Lens.lens (\ThemeVersion' {baseThemeId} -> baseThemeId) (\s@ThemeVersion' {} a -> s {baseThemeId = a} :: ThemeVersion)
+
+-- | The theme configuration, which contains all the theme display
+-- properties.
+themeVersion_configuration :: Lens.Lens' ThemeVersion (Prelude.Maybe ThemeConfiguration)
+themeVersion_configuration = Lens.lens (\ThemeVersion' {configuration} -> configuration) (\s@ThemeVersion' {} a -> s {configuration = a} :: ThemeVersion)
+
+-- | The date and time that this theme version was created.
+themeVersion_createdTime :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.UTCTime)
+themeVersion_createdTime = Lens.lens (\ThemeVersion' {createdTime} -> createdTime) (\s@ThemeVersion' {} a -> s {createdTime = a} :: ThemeVersion) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the theme.
+themeVersion_description :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Text)
+themeVersion_description = Lens.lens (\ThemeVersion' {description} -> description) (\s@ThemeVersion' {} a -> s {description = a} :: ThemeVersion)
+
+-- | Errors associated with the theme.
+themeVersion_errors :: Lens.Lens' ThemeVersion (Prelude.Maybe (Prelude.NonEmpty ThemeError))
+themeVersion_errors = Lens.lens (\ThemeVersion' {errors} -> errors) (\s@ThemeVersion' {} a -> s {errors = a} :: ThemeVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of the theme version.
+themeVersion_status :: Lens.Lens' ThemeVersion (Prelude.Maybe ResourceStatus)
+themeVersion_status = Lens.lens (\ThemeVersion' {status} -> status) (\s@ThemeVersion' {} a -> s {status = a} :: ThemeVersion)
+
+-- | The version number of the theme.
+themeVersion_versionNumber :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Natural)
+themeVersion_versionNumber = Lens.lens (\ThemeVersion' {versionNumber} -> versionNumber) (\s@ThemeVersion' {} a -> s {versionNumber = a} :: ThemeVersion)
+
+instance Data.FromJSON ThemeVersion where
+  parseJSON =
+    Data.withObject
+      "ThemeVersion"
+      ( \x ->
+          ThemeVersion'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "BaseThemeId")
+            Prelude.<*> (x Data..:? "Configuration")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Errors")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "VersionNumber")
+      )
+
+instance Prelude.Hashable ThemeVersion where
+  hashWithSalt _salt ThemeVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` baseThemeId
+      `Prelude.hashWithSalt` configuration
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` errors
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` versionNumber
+
+instance Prelude.NFData ThemeVersion where
+  rnf ThemeVersion' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf baseThemeId
+      `Prelude.seq` Prelude.rnf configuration
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf versionNumber
diff --git a/gen/Amazonka/QuickSight/Types/ThemeVersionSummary.hs b/gen/Amazonka/QuickSight/Types/ThemeVersionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThemeVersionSummary.hs
@@ -0,0 +1,121 @@
+{-# 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.QuickSight.Types.ThemeVersionSummary
+-- 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.QuickSight.Types.ThemeVersionSummary 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.QuickSight.Types.ResourceStatus
+
+-- | The theme version.
+--
+-- /See:/ 'newThemeVersionSummary' smart constructor.
+data ThemeVersionSummary = ThemeVersionSummary'
+  { -- | The Amazon Resource Name (ARN) of the theme version.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that this theme version was created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the theme version.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The status of the theme version.
+    status :: Prelude.Maybe ResourceStatus,
+    -- | The version number of the theme version.
+    versionNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThemeVersionSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'themeVersionSummary_arn' - The Amazon Resource Name (ARN) of the theme version.
+--
+-- 'createdTime', 'themeVersionSummary_createdTime' - The date and time that this theme version was created.
+--
+-- 'description', 'themeVersionSummary_description' - The description of the theme version.
+--
+-- 'status', 'themeVersionSummary_status' - The status of the theme version.
+--
+-- 'versionNumber', 'themeVersionSummary_versionNumber' - The version number of the theme version.
+newThemeVersionSummary ::
+  ThemeVersionSummary
+newThemeVersionSummary =
+  ThemeVersionSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      status = Prelude.Nothing,
+      versionNumber = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the theme version.
+themeVersionSummary_arn :: Lens.Lens' ThemeVersionSummary (Prelude.Maybe Prelude.Text)
+themeVersionSummary_arn = Lens.lens (\ThemeVersionSummary' {arn} -> arn) (\s@ThemeVersionSummary' {} a -> s {arn = a} :: ThemeVersionSummary)
+
+-- | The date and time that this theme version was created.
+themeVersionSummary_createdTime :: Lens.Lens' ThemeVersionSummary (Prelude.Maybe Prelude.UTCTime)
+themeVersionSummary_createdTime = Lens.lens (\ThemeVersionSummary' {createdTime} -> createdTime) (\s@ThemeVersionSummary' {} a -> s {createdTime = a} :: ThemeVersionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the theme version.
+themeVersionSummary_description :: Lens.Lens' ThemeVersionSummary (Prelude.Maybe Prelude.Text)
+themeVersionSummary_description = Lens.lens (\ThemeVersionSummary' {description} -> description) (\s@ThemeVersionSummary' {} a -> s {description = a} :: ThemeVersionSummary)
+
+-- | The status of the theme version.
+themeVersionSummary_status :: Lens.Lens' ThemeVersionSummary (Prelude.Maybe ResourceStatus)
+themeVersionSummary_status = Lens.lens (\ThemeVersionSummary' {status} -> status) (\s@ThemeVersionSummary' {} a -> s {status = a} :: ThemeVersionSummary)
+
+-- | The version number of the theme version.
+themeVersionSummary_versionNumber :: Lens.Lens' ThemeVersionSummary (Prelude.Maybe Prelude.Natural)
+themeVersionSummary_versionNumber = Lens.lens (\ThemeVersionSummary' {versionNumber} -> versionNumber) (\s@ThemeVersionSummary' {} a -> s {versionNumber = a} :: ThemeVersionSummary)
+
+instance Data.FromJSON ThemeVersionSummary where
+  parseJSON =
+    Data.withObject
+      "ThemeVersionSummary"
+      ( \x ->
+          ThemeVersionSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "VersionNumber")
+      )
+
+instance Prelude.Hashable ThemeVersionSummary where
+  hashWithSalt _salt ThemeVersionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` versionNumber
+
+instance Prelude.NFData ThemeVersionSummary where
+  rnf ThemeVersionSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf versionNumber
diff --git a/gen/Amazonka/QuickSight/Types/ThousandSeparatorOptions.hs b/gen/Amazonka/QuickSight/Types/ThousandSeparatorOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ThousandSeparatorOptions.hs
@@ -0,0 +1,95 @@
+{-# 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.QuickSight.Types.ThousandSeparatorOptions
+-- 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.QuickSight.Types.ThousandSeparatorOptions 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.QuickSight.Types.NumericSeparatorSymbol
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The options that determine the thousands separator configuration.
+--
+-- /See:/ 'newThousandSeparatorOptions' smart constructor.
+data ThousandSeparatorOptions = ThousandSeparatorOptions'
+  { -- | Determines the thousands separator symbol.
+    symbol :: Prelude.Maybe NumericSeparatorSymbol,
+    -- | Determines the visibility of the thousands separator.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThousandSeparatorOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'symbol', 'thousandSeparatorOptions_symbol' - Determines the thousands separator symbol.
+--
+-- 'visibility', 'thousandSeparatorOptions_visibility' - Determines the visibility of the thousands separator.
+newThousandSeparatorOptions ::
+  ThousandSeparatorOptions
+newThousandSeparatorOptions =
+  ThousandSeparatorOptions'
+    { symbol = Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | Determines the thousands separator symbol.
+thousandSeparatorOptions_symbol :: Lens.Lens' ThousandSeparatorOptions (Prelude.Maybe NumericSeparatorSymbol)
+thousandSeparatorOptions_symbol = Lens.lens (\ThousandSeparatorOptions' {symbol} -> symbol) (\s@ThousandSeparatorOptions' {} a -> s {symbol = a} :: ThousandSeparatorOptions)
+
+-- | Determines the visibility of the thousands separator.
+thousandSeparatorOptions_visibility :: Lens.Lens' ThousandSeparatorOptions (Prelude.Maybe Visibility)
+thousandSeparatorOptions_visibility = Lens.lens (\ThousandSeparatorOptions' {visibility} -> visibility) (\s@ThousandSeparatorOptions' {} a -> s {visibility = a} :: ThousandSeparatorOptions)
+
+instance Data.FromJSON ThousandSeparatorOptions where
+  parseJSON =
+    Data.withObject
+      "ThousandSeparatorOptions"
+      ( \x ->
+          ThousandSeparatorOptions'
+            Prelude.<$> (x Data..:? "Symbol")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable ThousandSeparatorOptions where
+  hashWithSalt _salt ThousandSeparatorOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` symbol
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData ThousandSeparatorOptions where
+  rnf ThousandSeparatorOptions' {..} =
+    Prelude.rnf symbol
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON ThousandSeparatorOptions where
+  toJSON ThousandSeparatorOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Symbol" Data..=) Prelude.<$> symbol,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TileLayoutStyle.hs b/gen/Amazonka/QuickSight/Types/TileLayoutStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TileLayoutStyle.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.QuickSight.Types.TileLayoutStyle
+-- 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.QuickSight.Types.TileLayoutStyle 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.QuickSight.Types.GutterStyle
+import Amazonka.QuickSight.Types.MarginStyle
+
+-- | The display options for the layout of tiles on a sheet.
+--
+-- /See:/ 'newTileLayoutStyle' smart constructor.
+data TileLayoutStyle = TileLayoutStyle'
+  { -- | The gutter settings that apply between tiles.
+    gutter :: Prelude.Maybe GutterStyle,
+    -- | The margin settings that apply around the outside edge of sheets.
+    margin :: Prelude.Maybe MarginStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TileLayoutStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'gutter', 'tileLayoutStyle_gutter' - The gutter settings that apply between tiles.
+--
+-- 'margin', 'tileLayoutStyle_margin' - The margin settings that apply around the outside edge of sheets.
+newTileLayoutStyle ::
+  TileLayoutStyle
+newTileLayoutStyle =
+  TileLayoutStyle'
+    { gutter = Prelude.Nothing,
+      margin = Prelude.Nothing
+    }
+
+-- | The gutter settings that apply between tiles.
+tileLayoutStyle_gutter :: Lens.Lens' TileLayoutStyle (Prelude.Maybe GutterStyle)
+tileLayoutStyle_gutter = Lens.lens (\TileLayoutStyle' {gutter} -> gutter) (\s@TileLayoutStyle' {} a -> s {gutter = a} :: TileLayoutStyle)
+
+-- | The margin settings that apply around the outside edge of sheets.
+tileLayoutStyle_margin :: Lens.Lens' TileLayoutStyle (Prelude.Maybe MarginStyle)
+tileLayoutStyle_margin = Lens.lens (\TileLayoutStyle' {margin} -> margin) (\s@TileLayoutStyle' {} a -> s {margin = a} :: TileLayoutStyle)
+
+instance Data.FromJSON TileLayoutStyle where
+  parseJSON =
+    Data.withObject
+      "TileLayoutStyle"
+      ( \x ->
+          TileLayoutStyle'
+            Prelude.<$> (x Data..:? "Gutter")
+            Prelude.<*> (x Data..:? "Margin")
+      )
+
+instance Prelude.Hashable TileLayoutStyle where
+  hashWithSalt _salt TileLayoutStyle' {..} =
+    _salt
+      `Prelude.hashWithSalt` gutter
+      `Prelude.hashWithSalt` margin
+
+instance Prelude.NFData TileLayoutStyle where
+  rnf TileLayoutStyle' {..} =
+    Prelude.rnf gutter `Prelude.seq` Prelude.rnf margin
+
+instance Data.ToJSON TileLayoutStyle where
+  toJSON TileLayoutStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Gutter" Data..=) Prelude.<$> gutter,
+            ("Margin" Data..=) Prelude.<$> margin
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TileStyle.hs b/gen/Amazonka/QuickSight/Types/TileStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TileStyle.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TileStyle
+-- 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.QuickSight.Types.TileStyle 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.QuickSight.Types.BorderStyle
+
+-- | Display options related to tiles on a sheet.
+--
+-- /See:/ 'newTileStyle' smart constructor.
+data TileStyle = TileStyle'
+  { -- | The border around a tile.
+    border :: Prelude.Maybe BorderStyle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TileStyle' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'border', 'tileStyle_border' - The border around a tile.
+newTileStyle ::
+  TileStyle
+newTileStyle = TileStyle' {border = Prelude.Nothing}
+
+-- | The border around a tile.
+tileStyle_border :: Lens.Lens' TileStyle (Prelude.Maybe BorderStyle)
+tileStyle_border = Lens.lens (\TileStyle' {border} -> border) (\s@TileStyle' {} a -> s {border = a} :: TileStyle)
+
+instance Data.FromJSON TileStyle where
+  parseJSON =
+    Data.withObject
+      "TileStyle"
+      (\x -> TileStyle' Prelude.<$> (x Data..:? "Border"))
+
+instance Prelude.Hashable TileStyle where
+  hashWithSalt _salt TileStyle' {..} =
+    _salt `Prelude.hashWithSalt` border
+
+instance Prelude.NFData TileStyle where
+  rnf TileStyle' {..} = Prelude.rnf border
+
+instance Data.ToJSON TileStyle where
+  toJSON TileStyle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Border" Data..=) Prelude.<$> border]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TimeBasedForecastProperties.hs b/gen/Amazonka/QuickSight/Types/TimeBasedForecastProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TimeBasedForecastProperties.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.QuickSight.Types.TimeBasedForecastProperties
+-- 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.QuickSight.Types.TimeBasedForecastProperties 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 forecast properties setup of a forecast in the line chart.
+--
+-- /See:/ 'newTimeBasedForecastProperties' smart constructor.
+data TimeBasedForecastProperties = TimeBasedForecastProperties'
+  { -- | The lower boundary setup of a forecast computation.
+    lowerBoundary :: Prelude.Maybe Prelude.Double,
+    -- | The periods backward setup of a forecast computation.
+    periodsBackward :: Prelude.Maybe Prelude.Natural,
+    -- | The periods forward setup of a forecast computation.
+    periodsForward :: Prelude.Maybe Prelude.Natural,
+    -- | The prediction interval setup of a forecast computation.
+    predictionInterval :: Prelude.Maybe Prelude.Natural,
+    -- | The seasonality setup of a forecast computation. Choose one of the
+    -- following options:
+    --
+    -- -   @NULL@: The input is set to @NULL@.
+    --
+    -- -   @NON_NULL@: The input is set to a custom value.
+    seasonality :: Prelude.Maybe Prelude.Natural,
+    -- | The upper boundary setup of a forecast computation.
+    upperBoundary :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeBasedForecastProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lowerBoundary', 'timeBasedForecastProperties_lowerBoundary' - The lower boundary setup of a forecast computation.
+--
+-- 'periodsBackward', 'timeBasedForecastProperties_periodsBackward' - The periods backward setup of a forecast computation.
+--
+-- 'periodsForward', 'timeBasedForecastProperties_periodsForward' - The periods forward setup of a forecast computation.
+--
+-- 'predictionInterval', 'timeBasedForecastProperties_predictionInterval' - The prediction interval setup of a forecast computation.
+--
+-- 'seasonality', 'timeBasedForecastProperties_seasonality' - The seasonality setup of a forecast computation. Choose one of the
+-- following options:
+--
+-- -   @NULL@: The input is set to @NULL@.
+--
+-- -   @NON_NULL@: The input is set to a custom value.
+--
+-- 'upperBoundary', 'timeBasedForecastProperties_upperBoundary' - The upper boundary setup of a forecast computation.
+newTimeBasedForecastProperties ::
+  TimeBasedForecastProperties
+newTimeBasedForecastProperties =
+  TimeBasedForecastProperties'
+    { lowerBoundary =
+        Prelude.Nothing,
+      periodsBackward = Prelude.Nothing,
+      periodsForward = Prelude.Nothing,
+      predictionInterval = Prelude.Nothing,
+      seasonality = Prelude.Nothing,
+      upperBoundary = Prelude.Nothing
+    }
+
+-- | The lower boundary setup of a forecast computation.
+timeBasedForecastProperties_lowerBoundary :: Lens.Lens' TimeBasedForecastProperties (Prelude.Maybe Prelude.Double)
+timeBasedForecastProperties_lowerBoundary = Lens.lens (\TimeBasedForecastProperties' {lowerBoundary} -> lowerBoundary) (\s@TimeBasedForecastProperties' {} a -> s {lowerBoundary = a} :: TimeBasedForecastProperties)
+
+-- | The periods backward setup of a forecast computation.
+timeBasedForecastProperties_periodsBackward :: Lens.Lens' TimeBasedForecastProperties (Prelude.Maybe Prelude.Natural)
+timeBasedForecastProperties_periodsBackward = Lens.lens (\TimeBasedForecastProperties' {periodsBackward} -> periodsBackward) (\s@TimeBasedForecastProperties' {} a -> s {periodsBackward = a} :: TimeBasedForecastProperties)
+
+-- | The periods forward setup of a forecast computation.
+timeBasedForecastProperties_periodsForward :: Lens.Lens' TimeBasedForecastProperties (Prelude.Maybe Prelude.Natural)
+timeBasedForecastProperties_periodsForward = Lens.lens (\TimeBasedForecastProperties' {periodsForward} -> periodsForward) (\s@TimeBasedForecastProperties' {} a -> s {periodsForward = a} :: TimeBasedForecastProperties)
+
+-- | The prediction interval setup of a forecast computation.
+timeBasedForecastProperties_predictionInterval :: Lens.Lens' TimeBasedForecastProperties (Prelude.Maybe Prelude.Natural)
+timeBasedForecastProperties_predictionInterval = Lens.lens (\TimeBasedForecastProperties' {predictionInterval} -> predictionInterval) (\s@TimeBasedForecastProperties' {} a -> s {predictionInterval = a} :: TimeBasedForecastProperties)
+
+-- | The seasonality setup of a forecast computation. Choose one of the
+-- following options:
+--
+-- -   @NULL@: The input is set to @NULL@.
+--
+-- -   @NON_NULL@: The input is set to a custom value.
+timeBasedForecastProperties_seasonality :: Lens.Lens' TimeBasedForecastProperties (Prelude.Maybe Prelude.Natural)
+timeBasedForecastProperties_seasonality = Lens.lens (\TimeBasedForecastProperties' {seasonality} -> seasonality) (\s@TimeBasedForecastProperties' {} a -> s {seasonality = a} :: TimeBasedForecastProperties)
+
+-- | The upper boundary setup of a forecast computation.
+timeBasedForecastProperties_upperBoundary :: Lens.Lens' TimeBasedForecastProperties (Prelude.Maybe Prelude.Double)
+timeBasedForecastProperties_upperBoundary = Lens.lens (\TimeBasedForecastProperties' {upperBoundary} -> upperBoundary) (\s@TimeBasedForecastProperties' {} a -> s {upperBoundary = a} :: TimeBasedForecastProperties)
+
+instance Data.FromJSON TimeBasedForecastProperties where
+  parseJSON =
+    Data.withObject
+      "TimeBasedForecastProperties"
+      ( \x ->
+          TimeBasedForecastProperties'
+            Prelude.<$> (x Data..:? "LowerBoundary")
+            Prelude.<*> (x Data..:? "PeriodsBackward")
+            Prelude.<*> (x Data..:? "PeriodsForward")
+            Prelude.<*> (x Data..:? "PredictionInterval")
+            Prelude.<*> (x Data..:? "Seasonality")
+            Prelude.<*> (x Data..:? "UpperBoundary")
+      )
+
+instance Prelude.Hashable TimeBasedForecastProperties where
+  hashWithSalt _salt TimeBasedForecastProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` lowerBoundary
+      `Prelude.hashWithSalt` periodsBackward
+      `Prelude.hashWithSalt` periodsForward
+      `Prelude.hashWithSalt` predictionInterval
+      `Prelude.hashWithSalt` seasonality
+      `Prelude.hashWithSalt` upperBoundary
+
+instance Prelude.NFData TimeBasedForecastProperties where
+  rnf TimeBasedForecastProperties' {..} =
+    Prelude.rnf lowerBoundary
+      `Prelude.seq` Prelude.rnf periodsBackward
+      `Prelude.seq` Prelude.rnf periodsForward
+      `Prelude.seq` Prelude.rnf predictionInterval
+      `Prelude.seq` Prelude.rnf seasonality
+      `Prelude.seq` Prelude.rnf upperBoundary
+
+instance Data.ToJSON TimeBasedForecastProperties where
+  toJSON TimeBasedForecastProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LowerBoundary" Data..=) Prelude.<$> lowerBoundary,
+            ("PeriodsBackward" Data..=)
+              Prelude.<$> periodsBackward,
+            ("PeriodsForward" Data..=)
+              Prelude.<$> periodsForward,
+            ("PredictionInterval" Data..=)
+              Prelude.<$> predictionInterval,
+            ("Seasonality" Data..=) Prelude.<$> seasonality,
+            ("UpperBoundary" Data..=) Prelude.<$> upperBoundary
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TimeEqualityFilter.hs b/gen/Amazonka/QuickSight/Types/TimeEqualityFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TimeEqualityFilter.hs
@@ -0,0 +1,155 @@
+{-# 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.QuickSight.Types.TimeEqualityFilter
+-- 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.QuickSight.Types.TimeEqualityFilter 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | A @TimeEqualityFilter@ filters values that are equal to a given value.
+--
+-- /See:/ 'newTimeEqualityFilter' smart constructor.
+data TimeEqualityFilter = TimeEqualityFilter'
+  { -- | The parameter whose value should be used for the filter value.
+    --
+    -- This field is mutually exclusive to @Value@.
+    parameterName :: Prelude.Maybe Prelude.Text,
+    -- | The level of time precision that is used to aggregate @DateTime@ values.
+    timeGranularity :: Prelude.Maybe TimeGranularity,
+    -- | The value of a @TimeEquality@ filter.
+    --
+    -- This field is mutually exclusive to @ParameterName@.
+    value :: Prelude.Maybe Data.POSIX,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeEqualityFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'parameterName', 'timeEqualityFilter_parameterName' - The parameter whose value should be used for the filter value.
+--
+-- This field is mutually exclusive to @Value@.
+--
+-- 'timeGranularity', 'timeEqualityFilter_timeGranularity' - The level of time precision that is used to aggregate @DateTime@ values.
+--
+-- 'value', 'timeEqualityFilter_value' - The value of a @TimeEquality@ filter.
+--
+-- This field is mutually exclusive to @ParameterName@.
+--
+-- 'filterId', 'timeEqualityFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'timeEqualityFilter_column' - The column that the filter is applied to.
+newTimeEqualityFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  TimeEqualityFilter
+newTimeEqualityFilter pFilterId_ pColumn_ =
+  TimeEqualityFilter'
+    { parameterName =
+        Prelude.Nothing,
+      timeGranularity = Prelude.Nothing,
+      value = Prelude.Nothing,
+      filterId = pFilterId_,
+      column = pColumn_
+    }
+
+-- | The parameter whose value should be used for the filter value.
+--
+-- This field is mutually exclusive to @Value@.
+timeEqualityFilter_parameterName :: Lens.Lens' TimeEqualityFilter (Prelude.Maybe Prelude.Text)
+timeEqualityFilter_parameterName = Lens.lens (\TimeEqualityFilter' {parameterName} -> parameterName) (\s@TimeEqualityFilter' {} a -> s {parameterName = a} :: TimeEqualityFilter)
+
+-- | The level of time precision that is used to aggregate @DateTime@ values.
+timeEqualityFilter_timeGranularity :: Lens.Lens' TimeEqualityFilter (Prelude.Maybe TimeGranularity)
+timeEqualityFilter_timeGranularity = Lens.lens (\TimeEqualityFilter' {timeGranularity} -> timeGranularity) (\s@TimeEqualityFilter' {} a -> s {timeGranularity = a} :: TimeEqualityFilter)
+
+-- | The value of a @TimeEquality@ filter.
+--
+-- This field is mutually exclusive to @ParameterName@.
+timeEqualityFilter_value :: Lens.Lens' TimeEqualityFilter (Prelude.Maybe Prelude.UTCTime)
+timeEqualityFilter_value = Lens.lens (\TimeEqualityFilter' {value} -> value) (\s@TimeEqualityFilter' {} a -> s {value = a} :: TimeEqualityFilter) Prelude.. Lens.mapping Data._Time
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+timeEqualityFilter_filterId :: Lens.Lens' TimeEqualityFilter Prelude.Text
+timeEqualityFilter_filterId = Lens.lens (\TimeEqualityFilter' {filterId} -> filterId) (\s@TimeEqualityFilter' {} a -> s {filterId = a} :: TimeEqualityFilter)
+
+-- | The column that the filter is applied to.
+timeEqualityFilter_column :: Lens.Lens' TimeEqualityFilter ColumnIdentifier
+timeEqualityFilter_column = Lens.lens (\TimeEqualityFilter' {column} -> column) (\s@TimeEqualityFilter' {} a -> s {column = a} :: TimeEqualityFilter)
+
+instance Data.FromJSON TimeEqualityFilter where
+  parseJSON =
+    Data.withObject
+      "TimeEqualityFilter"
+      ( \x ->
+          TimeEqualityFilter'
+            Prelude.<$> (x Data..:? "ParameterName")
+            Prelude.<*> (x Data..:? "TimeGranularity")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable TimeEqualityFilter where
+  hashWithSalt _salt TimeEqualityFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` parameterName
+      `Prelude.hashWithSalt` timeGranularity
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData TimeEqualityFilter where
+  rnf TimeEqualityFilter' {..} =
+    Prelude.rnf parameterName
+      `Prelude.seq` Prelude.rnf timeGranularity
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON TimeEqualityFilter where
+  toJSON TimeEqualityFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ParameterName" Data..=) Prelude.<$> parameterName,
+            ("TimeGranularity" Data..=)
+              Prelude.<$> timeGranularity,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TimeGranularity.hs b/gen/Amazonka/QuickSight/Types/TimeGranularity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TimeGranularity.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TimeGranularity
+-- 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.QuickSight.Types.TimeGranularity
+  ( TimeGranularity
+      ( ..,
+        TimeGranularity_DAY,
+        TimeGranularity_HOUR,
+        TimeGranularity_MILLISECOND,
+        TimeGranularity_MINUTE,
+        TimeGranularity_MONTH,
+        TimeGranularity_QUARTER,
+        TimeGranularity_SECOND,
+        TimeGranularity_WEEK,
+        TimeGranularity_YEAR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TimeGranularity = TimeGranularity'
+  { fromTimeGranularity ::
+      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 TimeGranularity_DAY :: TimeGranularity
+pattern TimeGranularity_DAY = TimeGranularity' "DAY"
+
+pattern TimeGranularity_HOUR :: TimeGranularity
+pattern TimeGranularity_HOUR = TimeGranularity' "HOUR"
+
+pattern TimeGranularity_MILLISECOND :: TimeGranularity
+pattern TimeGranularity_MILLISECOND = TimeGranularity' "MILLISECOND"
+
+pattern TimeGranularity_MINUTE :: TimeGranularity
+pattern TimeGranularity_MINUTE = TimeGranularity' "MINUTE"
+
+pattern TimeGranularity_MONTH :: TimeGranularity
+pattern TimeGranularity_MONTH = TimeGranularity' "MONTH"
+
+pattern TimeGranularity_QUARTER :: TimeGranularity
+pattern TimeGranularity_QUARTER = TimeGranularity' "QUARTER"
+
+pattern TimeGranularity_SECOND :: TimeGranularity
+pattern TimeGranularity_SECOND = TimeGranularity' "SECOND"
+
+pattern TimeGranularity_WEEK :: TimeGranularity
+pattern TimeGranularity_WEEK = TimeGranularity' "WEEK"
+
+pattern TimeGranularity_YEAR :: TimeGranularity
+pattern TimeGranularity_YEAR = TimeGranularity' "YEAR"
+
+{-# COMPLETE
+  TimeGranularity_DAY,
+  TimeGranularity_HOUR,
+  TimeGranularity_MILLISECOND,
+  TimeGranularity_MINUTE,
+  TimeGranularity_MONTH,
+  TimeGranularity_QUARTER,
+  TimeGranularity_SECOND,
+  TimeGranularity_WEEK,
+  TimeGranularity_YEAR,
+  TimeGranularity'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TimeRangeDrillDownFilter.hs b/gen/Amazonka/QuickSight/Types/TimeRangeDrillDownFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TimeRangeDrillDownFilter.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TimeRangeDrillDownFilter
+-- 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.QuickSight.Types.TimeRangeDrillDownFilter 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | The time range drill down filter.
+--
+-- /See:/ 'newTimeRangeDrillDownFilter' smart constructor.
+data TimeRangeDrillDownFilter = TimeRangeDrillDownFilter'
+  { -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | The minimum value for the filter value range.
+    rangeMinimum :: Data.POSIX,
+    -- | The maximum value for the filter value range.
+    rangeMaximum :: Data.POSIX,
+    -- | The level of time precision that is used to aggregate @DateTime@ values.
+    timeGranularity :: TimeGranularity
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeRangeDrillDownFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'column', 'timeRangeDrillDownFilter_column' - The column that the filter is applied to.
+--
+-- 'rangeMinimum', 'timeRangeDrillDownFilter_rangeMinimum' - The minimum value for the filter value range.
+--
+-- 'rangeMaximum', 'timeRangeDrillDownFilter_rangeMaximum' - The maximum value for the filter value range.
+--
+-- 'timeGranularity', 'timeRangeDrillDownFilter_timeGranularity' - The level of time precision that is used to aggregate @DateTime@ values.
+newTimeRangeDrillDownFilter ::
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'rangeMinimum'
+  Prelude.UTCTime ->
+  -- | 'rangeMaximum'
+  Prelude.UTCTime ->
+  -- | 'timeGranularity'
+  TimeGranularity ->
+  TimeRangeDrillDownFilter
+newTimeRangeDrillDownFilter
+  pColumn_
+  pRangeMinimum_
+  pRangeMaximum_
+  pTimeGranularity_ =
+    TimeRangeDrillDownFilter'
+      { column = pColumn_,
+        rangeMinimum = Data._Time Lens.# pRangeMinimum_,
+        rangeMaximum = Data._Time Lens.# pRangeMaximum_,
+        timeGranularity = pTimeGranularity_
+      }
+
+-- | The column that the filter is applied to.
+timeRangeDrillDownFilter_column :: Lens.Lens' TimeRangeDrillDownFilter ColumnIdentifier
+timeRangeDrillDownFilter_column = Lens.lens (\TimeRangeDrillDownFilter' {column} -> column) (\s@TimeRangeDrillDownFilter' {} a -> s {column = a} :: TimeRangeDrillDownFilter)
+
+-- | The minimum value for the filter value range.
+timeRangeDrillDownFilter_rangeMinimum :: Lens.Lens' TimeRangeDrillDownFilter Prelude.UTCTime
+timeRangeDrillDownFilter_rangeMinimum = Lens.lens (\TimeRangeDrillDownFilter' {rangeMinimum} -> rangeMinimum) (\s@TimeRangeDrillDownFilter' {} a -> s {rangeMinimum = a} :: TimeRangeDrillDownFilter) Prelude.. Data._Time
+
+-- | The maximum value for the filter value range.
+timeRangeDrillDownFilter_rangeMaximum :: Lens.Lens' TimeRangeDrillDownFilter Prelude.UTCTime
+timeRangeDrillDownFilter_rangeMaximum = Lens.lens (\TimeRangeDrillDownFilter' {rangeMaximum} -> rangeMaximum) (\s@TimeRangeDrillDownFilter' {} a -> s {rangeMaximum = a} :: TimeRangeDrillDownFilter) Prelude.. Data._Time
+
+-- | The level of time precision that is used to aggregate @DateTime@ values.
+timeRangeDrillDownFilter_timeGranularity :: Lens.Lens' TimeRangeDrillDownFilter TimeGranularity
+timeRangeDrillDownFilter_timeGranularity = Lens.lens (\TimeRangeDrillDownFilter' {timeGranularity} -> timeGranularity) (\s@TimeRangeDrillDownFilter' {} a -> s {timeGranularity = a} :: TimeRangeDrillDownFilter)
+
+instance Data.FromJSON TimeRangeDrillDownFilter where
+  parseJSON =
+    Data.withObject
+      "TimeRangeDrillDownFilter"
+      ( \x ->
+          TimeRangeDrillDownFilter'
+            Prelude.<$> (x Data..: "Column")
+            Prelude.<*> (x Data..: "RangeMinimum")
+            Prelude.<*> (x Data..: "RangeMaximum")
+            Prelude.<*> (x Data..: "TimeGranularity")
+      )
+
+instance Prelude.Hashable TimeRangeDrillDownFilter where
+  hashWithSalt _salt TimeRangeDrillDownFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` rangeMinimum
+      `Prelude.hashWithSalt` rangeMaximum
+      `Prelude.hashWithSalt` timeGranularity
+
+instance Prelude.NFData TimeRangeDrillDownFilter where
+  rnf TimeRangeDrillDownFilter' {..} =
+    Prelude.rnf column
+      `Prelude.seq` Prelude.rnf rangeMinimum
+      `Prelude.seq` Prelude.rnf rangeMaximum
+      `Prelude.seq` Prelude.rnf timeGranularity
+
+instance Data.ToJSON TimeRangeDrillDownFilter where
+  toJSON TimeRangeDrillDownFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Column" Data..= column),
+            Prelude.Just ("RangeMinimum" Data..= rangeMinimum),
+            Prelude.Just ("RangeMaximum" Data..= rangeMaximum),
+            Prelude.Just
+              ("TimeGranularity" Data..= timeGranularity)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TimeRangeFilter.hs b/gen/Amazonka/QuickSight/Types/TimeRangeFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TimeRangeFilter.hs
@@ -0,0 +1,233 @@
+{-# 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.QuickSight.Types.TimeRangeFilter
+-- 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.QuickSight.Types.TimeRangeFilter 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.ExcludePeriodConfiguration
+import Amazonka.QuickSight.Types.FilterNullOption
+import Amazonka.QuickSight.Types.TimeGranularity
+import Amazonka.QuickSight.Types.TimeRangeFilterValue
+
+-- | A @TimeRangeFilter@ filters values that are between two specified
+-- values.
+--
+-- /See:/ 'newTimeRangeFilter' smart constructor.
+data TimeRangeFilter = TimeRangeFilter'
+  { -- | The exclude period of the time range filter.
+    excludePeriodConfiguration :: Prelude.Maybe ExcludePeriodConfiguration,
+    -- | Determines whether the maximum value in the filter value range should be
+    -- included in the filtered results.
+    includeMaximum :: Prelude.Maybe Prelude.Bool,
+    -- | Determines whether the minimum value in the filter value range should be
+    -- included in the filtered results.
+    includeMinimum :: Prelude.Maybe Prelude.Bool,
+    -- | The maximum value for the filter value range.
+    rangeMaximumValue :: Prelude.Maybe TimeRangeFilterValue,
+    -- | The minimum value for the filter value range.
+    rangeMinimumValue :: Prelude.Maybe TimeRangeFilterValue,
+    -- | The level of time precision that is used to aggregate @DateTime@ values.
+    timeGranularity :: Prelude.Maybe TimeGranularity,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | This option determines how null values should be treated when filtering
+    -- data.
+    --
+    -- -   @ALL_VALUES@: Include null values in filtered results.
+    --
+    -- -   @NULLS_ONLY@: Only include null values in filtered results.
+    --
+    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+    nullOption :: FilterNullOption
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeRangeFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'excludePeriodConfiguration', 'timeRangeFilter_excludePeriodConfiguration' - The exclude period of the time range filter.
+--
+-- 'includeMaximum', 'timeRangeFilter_includeMaximum' - Determines whether the maximum value in the filter value range should be
+-- included in the filtered results.
+--
+-- 'includeMinimum', 'timeRangeFilter_includeMinimum' - Determines whether the minimum value in the filter value range should be
+-- included in the filtered results.
+--
+-- 'rangeMaximumValue', 'timeRangeFilter_rangeMaximumValue' - The maximum value for the filter value range.
+--
+-- 'rangeMinimumValue', 'timeRangeFilter_rangeMinimumValue' - The minimum value for the filter value range.
+--
+-- 'timeGranularity', 'timeRangeFilter_timeGranularity' - The level of time precision that is used to aggregate @DateTime@ values.
+--
+-- 'filterId', 'timeRangeFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'timeRangeFilter_column' - The column that the filter is applied to.
+--
+-- 'nullOption', 'timeRangeFilter_nullOption' - This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+newTimeRangeFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  -- | 'nullOption'
+  FilterNullOption ->
+  TimeRangeFilter
+newTimeRangeFilter pFilterId_ pColumn_ pNullOption_ =
+  TimeRangeFilter'
+    { excludePeriodConfiguration =
+        Prelude.Nothing,
+      includeMaximum = Prelude.Nothing,
+      includeMinimum = Prelude.Nothing,
+      rangeMaximumValue = Prelude.Nothing,
+      rangeMinimumValue = Prelude.Nothing,
+      timeGranularity = Prelude.Nothing,
+      filterId = pFilterId_,
+      column = pColumn_,
+      nullOption = pNullOption_
+    }
+
+-- | The exclude period of the time range filter.
+timeRangeFilter_excludePeriodConfiguration :: Lens.Lens' TimeRangeFilter (Prelude.Maybe ExcludePeriodConfiguration)
+timeRangeFilter_excludePeriodConfiguration = Lens.lens (\TimeRangeFilter' {excludePeriodConfiguration} -> excludePeriodConfiguration) (\s@TimeRangeFilter' {} a -> s {excludePeriodConfiguration = a} :: TimeRangeFilter)
+
+-- | Determines whether the maximum value in the filter value range should be
+-- included in the filtered results.
+timeRangeFilter_includeMaximum :: Lens.Lens' TimeRangeFilter (Prelude.Maybe Prelude.Bool)
+timeRangeFilter_includeMaximum = Lens.lens (\TimeRangeFilter' {includeMaximum} -> includeMaximum) (\s@TimeRangeFilter' {} a -> s {includeMaximum = a} :: TimeRangeFilter)
+
+-- | Determines whether the minimum value in the filter value range should be
+-- included in the filtered results.
+timeRangeFilter_includeMinimum :: Lens.Lens' TimeRangeFilter (Prelude.Maybe Prelude.Bool)
+timeRangeFilter_includeMinimum = Lens.lens (\TimeRangeFilter' {includeMinimum} -> includeMinimum) (\s@TimeRangeFilter' {} a -> s {includeMinimum = a} :: TimeRangeFilter)
+
+-- | The maximum value for the filter value range.
+timeRangeFilter_rangeMaximumValue :: Lens.Lens' TimeRangeFilter (Prelude.Maybe TimeRangeFilterValue)
+timeRangeFilter_rangeMaximumValue = Lens.lens (\TimeRangeFilter' {rangeMaximumValue} -> rangeMaximumValue) (\s@TimeRangeFilter' {} a -> s {rangeMaximumValue = a} :: TimeRangeFilter)
+
+-- | The minimum value for the filter value range.
+timeRangeFilter_rangeMinimumValue :: Lens.Lens' TimeRangeFilter (Prelude.Maybe TimeRangeFilterValue)
+timeRangeFilter_rangeMinimumValue = Lens.lens (\TimeRangeFilter' {rangeMinimumValue} -> rangeMinimumValue) (\s@TimeRangeFilter' {} a -> s {rangeMinimumValue = a} :: TimeRangeFilter)
+
+-- | The level of time precision that is used to aggregate @DateTime@ values.
+timeRangeFilter_timeGranularity :: Lens.Lens' TimeRangeFilter (Prelude.Maybe TimeGranularity)
+timeRangeFilter_timeGranularity = Lens.lens (\TimeRangeFilter' {timeGranularity} -> timeGranularity) (\s@TimeRangeFilter' {} a -> s {timeGranularity = a} :: TimeRangeFilter)
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+timeRangeFilter_filterId :: Lens.Lens' TimeRangeFilter Prelude.Text
+timeRangeFilter_filterId = Lens.lens (\TimeRangeFilter' {filterId} -> filterId) (\s@TimeRangeFilter' {} a -> s {filterId = a} :: TimeRangeFilter)
+
+-- | The column that the filter is applied to.
+timeRangeFilter_column :: Lens.Lens' TimeRangeFilter ColumnIdentifier
+timeRangeFilter_column = Lens.lens (\TimeRangeFilter' {column} -> column) (\s@TimeRangeFilter' {} a -> s {column = a} :: TimeRangeFilter)
+
+-- | This option determines how null values should be treated when filtering
+-- data.
+--
+-- -   @ALL_VALUES@: Include null values in filtered results.
+--
+-- -   @NULLS_ONLY@: Only include null values in filtered results.
+--
+-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
+timeRangeFilter_nullOption :: Lens.Lens' TimeRangeFilter FilterNullOption
+timeRangeFilter_nullOption = Lens.lens (\TimeRangeFilter' {nullOption} -> nullOption) (\s@TimeRangeFilter' {} a -> s {nullOption = a} :: TimeRangeFilter)
+
+instance Data.FromJSON TimeRangeFilter where
+  parseJSON =
+    Data.withObject
+      "TimeRangeFilter"
+      ( \x ->
+          TimeRangeFilter'
+            Prelude.<$> (x Data..:? "ExcludePeriodConfiguration")
+            Prelude.<*> (x Data..:? "IncludeMaximum")
+            Prelude.<*> (x Data..:? "IncludeMinimum")
+            Prelude.<*> (x Data..:? "RangeMaximumValue")
+            Prelude.<*> (x Data..:? "RangeMinimumValue")
+            Prelude.<*> (x Data..:? "TimeGranularity")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+            Prelude.<*> (x Data..: "NullOption")
+      )
+
+instance Prelude.Hashable TimeRangeFilter where
+  hashWithSalt _salt TimeRangeFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` excludePeriodConfiguration
+      `Prelude.hashWithSalt` includeMaximum
+      `Prelude.hashWithSalt` includeMinimum
+      `Prelude.hashWithSalt` rangeMaximumValue
+      `Prelude.hashWithSalt` rangeMinimumValue
+      `Prelude.hashWithSalt` timeGranularity
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` nullOption
+
+instance Prelude.NFData TimeRangeFilter where
+  rnf TimeRangeFilter' {..} =
+    Prelude.rnf excludePeriodConfiguration
+      `Prelude.seq` Prelude.rnf includeMaximum
+      `Prelude.seq` Prelude.rnf includeMinimum
+      `Prelude.seq` Prelude.rnf rangeMaximumValue
+      `Prelude.seq` Prelude.rnf rangeMinimumValue
+      `Prelude.seq` Prelude.rnf timeGranularity
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+      `Prelude.seq` Prelude.rnf nullOption
+
+instance Data.ToJSON TimeRangeFilter where
+  toJSON TimeRangeFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExcludePeriodConfiguration" Data..=)
+              Prelude.<$> excludePeriodConfiguration,
+            ("IncludeMaximum" Data..=)
+              Prelude.<$> includeMaximum,
+            ("IncludeMinimum" Data..=)
+              Prelude.<$> includeMinimum,
+            ("RangeMaximumValue" Data..=)
+              Prelude.<$> rangeMaximumValue,
+            ("RangeMinimumValue" Data..=)
+              Prelude.<$> rangeMinimumValue,
+            ("TimeGranularity" Data..=)
+              Prelude.<$> timeGranularity,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column),
+            Prelude.Just ("NullOption" Data..= nullOption)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TimeRangeFilterValue.hs b/gen/Amazonka/QuickSight/Types/TimeRangeFilterValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TimeRangeFilterValue.hs
@@ -0,0 +1,110 @@
+{-# 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.QuickSight.Types.TimeRangeFilterValue
+-- 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.QuickSight.Types.TimeRangeFilterValue 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.QuickSight.Types.RollingDateConfiguration
+
+-- | The value of a time range filter.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newTimeRangeFilterValue' smart constructor.
+data TimeRangeFilterValue = TimeRangeFilterValue'
+  { -- | The parameter type input value.
+    parameter :: Prelude.Maybe Prelude.Text,
+    -- | The rolling date input value.
+    rollingDate :: Prelude.Maybe RollingDateConfiguration,
+    -- | The static input value.
+    staticValue :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeRangeFilterValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'parameter', 'timeRangeFilterValue_parameter' - The parameter type input value.
+--
+-- 'rollingDate', 'timeRangeFilterValue_rollingDate' - The rolling date input value.
+--
+-- 'staticValue', 'timeRangeFilterValue_staticValue' - The static input value.
+newTimeRangeFilterValue ::
+  TimeRangeFilterValue
+newTimeRangeFilterValue =
+  TimeRangeFilterValue'
+    { parameter = Prelude.Nothing,
+      rollingDate = Prelude.Nothing,
+      staticValue = Prelude.Nothing
+    }
+
+-- | The parameter type input value.
+timeRangeFilterValue_parameter :: Lens.Lens' TimeRangeFilterValue (Prelude.Maybe Prelude.Text)
+timeRangeFilterValue_parameter = Lens.lens (\TimeRangeFilterValue' {parameter} -> parameter) (\s@TimeRangeFilterValue' {} a -> s {parameter = a} :: TimeRangeFilterValue)
+
+-- | The rolling date input value.
+timeRangeFilterValue_rollingDate :: Lens.Lens' TimeRangeFilterValue (Prelude.Maybe RollingDateConfiguration)
+timeRangeFilterValue_rollingDate = Lens.lens (\TimeRangeFilterValue' {rollingDate} -> rollingDate) (\s@TimeRangeFilterValue' {} a -> s {rollingDate = a} :: TimeRangeFilterValue)
+
+-- | The static input value.
+timeRangeFilterValue_staticValue :: Lens.Lens' TimeRangeFilterValue (Prelude.Maybe Prelude.UTCTime)
+timeRangeFilterValue_staticValue = Lens.lens (\TimeRangeFilterValue' {staticValue} -> staticValue) (\s@TimeRangeFilterValue' {} a -> s {staticValue = a} :: TimeRangeFilterValue) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON TimeRangeFilterValue where
+  parseJSON =
+    Data.withObject
+      "TimeRangeFilterValue"
+      ( \x ->
+          TimeRangeFilterValue'
+            Prelude.<$> (x Data..:? "Parameter")
+            Prelude.<*> (x Data..:? "RollingDate")
+            Prelude.<*> (x Data..:? "StaticValue")
+      )
+
+instance Prelude.Hashable TimeRangeFilterValue where
+  hashWithSalt _salt TimeRangeFilterValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` parameter
+      `Prelude.hashWithSalt` rollingDate
+      `Prelude.hashWithSalt` staticValue
+
+instance Prelude.NFData TimeRangeFilterValue where
+  rnf TimeRangeFilterValue' {..} =
+    Prelude.rnf parameter
+      `Prelude.seq` Prelude.rnf rollingDate
+      `Prelude.seq` Prelude.rnf staticValue
+
+instance Data.ToJSON TimeRangeFilterValue where
+  toJSON TimeRangeFilterValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Parameter" Data..=) Prelude.<$> parameter,
+            ("RollingDate" Data..=) Prelude.<$> rollingDate,
+            ("StaticValue" Data..=) Prelude.<$> staticValue
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TooltipItem.hs b/gen/Amazonka/QuickSight/Types/TooltipItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TooltipItem.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.QuickSight.Types.TooltipItem
+-- 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.QuickSight.Types.TooltipItem 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.QuickSight.Types.ColumnTooltipItem
+import Amazonka.QuickSight.Types.FieldTooltipItem
+
+-- | The tooltip.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newTooltipItem' smart constructor.
+data TooltipItem = TooltipItem'
+  { -- | The tooltip item for the columns that are not part of a field well.
+    columnTooltipItem :: Prelude.Maybe ColumnTooltipItem,
+    -- | The tooltip item for the fields.
+    fieldTooltipItem :: Prelude.Maybe FieldTooltipItem
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TooltipItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnTooltipItem', 'tooltipItem_columnTooltipItem' - The tooltip item for the columns that are not part of a field well.
+--
+-- 'fieldTooltipItem', 'tooltipItem_fieldTooltipItem' - The tooltip item for the fields.
+newTooltipItem ::
+  TooltipItem
+newTooltipItem =
+  TooltipItem'
+    { columnTooltipItem = Prelude.Nothing,
+      fieldTooltipItem = Prelude.Nothing
+    }
+
+-- | The tooltip item for the columns that are not part of a field well.
+tooltipItem_columnTooltipItem :: Lens.Lens' TooltipItem (Prelude.Maybe ColumnTooltipItem)
+tooltipItem_columnTooltipItem = Lens.lens (\TooltipItem' {columnTooltipItem} -> columnTooltipItem) (\s@TooltipItem' {} a -> s {columnTooltipItem = a} :: TooltipItem)
+
+-- | The tooltip item for the fields.
+tooltipItem_fieldTooltipItem :: Lens.Lens' TooltipItem (Prelude.Maybe FieldTooltipItem)
+tooltipItem_fieldTooltipItem = Lens.lens (\TooltipItem' {fieldTooltipItem} -> fieldTooltipItem) (\s@TooltipItem' {} a -> s {fieldTooltipItem = a} :: TooltipItem)
+
+instance Data.FromJSON TooltipItem where
+  parseJSON =
+    Data.withObject
+      "TooltipItem"
+      ( \x ->
+          TooltipItem'
+            Prelude.<$> (x Data..:? "ColumnTooltipItem")
+            Prelude.<*> (x Data..:? "FieldTooltipItem")
+      )
+
+instance Prelude.Hashable TooltipItem where
+  hashWithSalt _salt TooltipItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnTooltipItem
+      `Prelude.hashWithSalt` fieldTooltipItem
+
+instance Prelude.NFData TooltipItem where
+  rnf TooltipItem' {..} =
+    Prelude.rnf columnTooltipItem
+      `Prelude.seq` Prelude.rnf fieldTooltipItem
+
+instance Data.ToJSON TooltipItem where
+  toJSON TooltipItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnTooltipItem" Data..=)
+              Prelude.<$> columnTooltipItem,
+            ("FieldTooltipItem" Data..=)
+              Prelude.<$> fieldTooltipItem
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TooltipOptions.hs b/gen/Amazonka/QuickSight/Types/TooltipOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TooltipOptions.hs
@@ -0,0 +1,128 @@
+{-# 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.QuickSight.Types.TooltipOptions
+-- 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.QuickSight.Types.TooltipOptions 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.QuickSight.Types.FieldBasedTooltip
+import Amazonka.QuickSight.Types.SelectedTooltipType
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The display options for the visual tooltip.
+--
+-- /See:/ 'newTooltipOptions' smart constructor.
+data TooltipOptions = TooltipOptions'
+  { -- | The setup for the detailed tooltip. The tooltip setup is always saved.
+    -- The display type is decided based on the tooltip type.
+    fieldBasedTooltip :: Prelude.Maybe FieldBasedTooltip,
+    -- | The selected type for the tooltip. Choose one of the following options:
+    --
+    -- -   @BASIC@: A basic tooltip.
+    --
+    -- -   @DETAILED@: A detailed tooltip.
+    selectedTooltipType :: Prelude.Maybe SelectedTooltipType,
+    -- | Determines whether or not the tooltip is visible.
+    tooltipVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TooltipOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldBasedTooltip', 'tooltipOptions_fieldBasedTooltip' - The setup for the detailed tooltip. The tooltip setup is always saved.
+-- The display type is decided based on the tooltip type.
+--
+-- 'selectedTooltipType', 'tooltipOptions_selectedTooltipType' - The selected type for the tooltip. Choose one of the following options:
+--
+-- -   @BASIC@: A basic tooltip.
+--
+-- -   @DETAILED@: A detailed tooltip.
+--
+-- 'tooltipVisibility', 'tooltipOptions_tooltipVisibility' - Determines whether or not the tooltip is visible.
+newTooltipOptions ::
+  TooltipOptions
+newTooltipOptions =
+  TooltipOptions'
+    { fieldBasedTooltip =
+        Prelude.Nothing,
+      selectedTooltipType = Prelude.Nothing,
+      tooltipVisibility = Prelude.Nothing
+    }
+
+-- | The setup for the detailed tooltip. The tooltip setup is always saved.
+-- The display type is decided based on the tooltip type.
+tooltipOptions_fieldBasedTooltip :: Lens.Lens' TooltipOptions (Prelude.Maybe FieldBasedTooltip)
+tooltipOptions_fieldBasedTooltip = Lens.lens (\TooltipOptions' {fieldBasedTooltip} -> fieldBasedTooltip) (\s@TooltipOptions' {} a -> s {fieldBasedTooltip = a} :: TooltipOptions)
+
+-- | The selected type for the tooltip. Choose one of the following options:
+--
+-- -   @BASIC@: A basic tooltip.
+--
+-- -   @DETAILED@: A detailed tooltip.
+tooltipOptions_selectedTooltipType :: Lens.Lens' TooltipOptions (Prelude.Maybe SelectedTooltipType)
+tooltipOptions_selectedTooltipType = Lens.lens (\TooltipOptions' {selectedTooltipType} -> selectedTooltipType) (\s@TooltipOptions' {} a -> s {selectedTooltipType = a} :: TooltipOptions)
+
+-- | Determines whether or not the tooltip is visible.
+tooltipOptions_tooltipVisibility :: Lens.Lens' TooltipOptions (Prelude.Maybe Visibility)
+tooltipOptions_tooltipVisibility = Lens.lens (\TooltipOptions' {tooltipVisibility} -> tooltipVisibility) (\s@TooltipOptions' {} a -> s {tooltipVisibility = a} :: TooltipOptions)
+
+instance Data.FromJSON TooltipOptions where
+  parseJSON =
+    Data.withObject
+      "TooltipOptions"
+      ( \x ->
+          TooltipOptions'
+            Prelude.<$> (x Data..:? "FieldBasedTooltip")
+            Prelude.<*> (x Data..:? "SelectedTooltipType")
+            Prelude.<*> (x Data..:? "TooltipVisibility")
+      )
+
+instance Prelude.Hashable TooltipOptions where
+  hashWithSalt _salt TooltipOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldBasedTooltip
+      `Prelude.hashWithSalt` selectedTooltipType
+      `Prelude.hashWithSalt` tooltipVisibility
+
+instance Prelude.NFData TooltipOptions where
+  rnf TooltipOptions' {..} =
+    Prelude.rnf fieldBasedTooltip
+      `Prelude.seq` Prelude.rnf selectedTooltipType
+      `Prelude.seq` Prelude.rnf tooltipVisibility
+
+instance Data.ToJSON TooltipOptions where
+  toJSON TooltipOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FieldBasedTooltip" Data..=)
+              Prelude.<$> fieldBasedTooltip,
+            ("SelectedTooltipType" Data..=)
+              Prelude.<$> selectedTooltipType,
+            ("TooltipVisibility" Data..=)
+              Prelude.<$> tooltipVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TooltipTitleType.hs b/gen/Amazonka/QuickSight/Types/TooltipTitleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TooltipTitleType.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.QuickSight.Types.TooltipTitleType
+-- 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.QuickSight.Types.TooltipTitleType
+  ( TooltipTitleType
+      ( ..,
+        TooltipTitleType_NONE,
+        TooltipTitleType_PRIMARY_VALUE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TooltipTitleType = TooltipTitleType'
+  { fromTooltipTitleType ::
+      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 TooltipTitleType_NONE :: TooltipTitleType
+pattern TooltipTitleType_NONE = TooltipTitleType' "NONE"
+
+pattern TooltipTitleType_PRIMARY_VALUE :: TooltipTitleType
+pattern TooltipTitleType_PRIMARY_VALUE = TooltipTitleType' "PRIMARY_VALUE"
+
+{-# COMPLETE
+  TooltipTitleType_NONE,
+  TooltipTitleType_PRIMARY_VALUE,
+  TooltipTitleType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TopBottomComputationType.hs b/gen/Amazonka/QuickSight/Types/TopBottomComputationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TopBottomComputationType.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.QuickSight.Types.TopBottomComputationType
+-- 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.QuickSight.Types.TopBottomComputationType
+  ( TopBottomComputationType
+      ( ..,
+        TopBottomComputationType_BOTTOM,
+        TopBottomComputationType_TOP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TopBottomComputationType = TopBottomComputationType'
+  { fromTopBottomComputationType ::
+      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 TopBottomComputationType_BOTTOM :: TopBottomComputationType
+pattern TopBottomComputationType_BOTTOM = TopBottomComputationType' "BOTTOM"
+
+pattern TopBottomComputationType_TOP :: TopBottomComputationType
+pattern TopBottomComputationType_TOP = TopBottomComputationType' "TOP"
+
+{-# COMPLETE
+  TopBottomComputationType_BOTTOM,
+  TopBottomComputationType_TOP,
+  TopBottomComputationType'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TopBottomFilter.hs b/gen/Amazonka/QuickSight/Types/TopBottomFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TopBottomFilter.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TopBottomFilter
+-- 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.QuickSight.Types.TopBottomFilter 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.QuickSight.Types.AggregationSortConfiguration
+import Amazonka.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.TimeGranularity
+
+-- | A @TopBottomFilter@ filters values that are at the top or the bottom.
+--
+-- /See:/ 'newTopBottomFilter' smart constructor.
+data TopBottomFilter = TopBottomFilter'
+  { -- | The number of items to include in the top bottom filter results.
+    limit :: Prelude.Maybe Prelude.Int,
+    -- | The parameter whose value should be used for the filter value.
+    parameterName :: Prelude.Maybe Prelude.Text,
+    -- | The level of time precision that is used to aggregate @DateTime@ values.
+    timeGranularity :: Prelude.Maybe TimeGranularity,
+    -- | An identifier that uniquely identifies a filter within a dashboard,
+    -- analysis, or template.
+    filterId :: Prelude.Text,
+    -- | The column that the filter is applied to.
+    column :: ColumnIdentifier,
+    -- | The aggregation and sort configuration of the top bottom filter.
+    aggregationSortConfigurations :: [AggregationSortConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TopBottomFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'limit', 'topBottomFilter_limit' - The number of items to include in the top bottom filter results.
+--
+-- 'parameterName', 'topBottomFilter_parameterName' - The parameter whose value should be used for the filter value.
+--
+-- 'timeGranularity', 'topBottomFilter_timeGranularity' - The level of time precision that is used to aggregate @DateTime@ values.
+--
+-- 'filterId', 'topBottomFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+--
+-- 'column', 'topBottomFilter_column' - The column that the filter is applied to.
+--
+-- 'aggregationSortConfigurations', 'topBottomFilter_aggregationSortConfigurations' - The aggregation and sort configuration of the top bottom filter.
+newTopBottomFilter ::
+  -- | 'filterId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  TopBottomFilter
+newTopBottomFilter pFilterId_ pColumn_ =
+  TopBottomFilter'
+    { limit = Prelude.Nothing,
+      parameterName = Prelude.Nothing,
+      timeGranularity = Prelude.Nothing,
+      filterId = pFilterId_,
+      column = pColumn_,
+      aggregationSortConfigurations = Prelude.mempty
+    }
+
+-- | The number of items to include in the top bottom filter results.
+topBottomFilter_limit :: Lens.Lens' TopBottomFilter (Prelude.Maybe Prelude.Int)
+topBottomFilter_limit = Lens.lens (\TopBottomFilter' {limit} -> limit) (\s@TopBottomFilter' {} a -> s {limit = a} :: TopBottomFilter)
+
+-- | The parameter whose value should be used for the filter value.
+topBottomFilter_parameterName :: Lens.Lens' TopBottomFilter (Prelude.Maybe Prelude.Text)
+topBottomFilter_parameterName = Lens.lens (\TopBottomFilter' {parameterName} -> parameterName) (\s@TopBottomFilter' {} a -> s {parameterName = a} :: TopBottomFilter)
+
+-- | The level of time precision that is used to aggregate @DateTime@ values.
+topBottomFilter_timeGranularity :: Lens.Lens' TopBottomFilter (Prelude.Maybe TimeGranularity)
+topBottomFilter_timeGranularity = Lens.lens (\TopBottomFilter' {timeGranularity} -> timeGranularity) (\s@TopBottomFilter' {} a -> s {timeGranularity = a} :: TopBottomFilter)
+
+-- | An identifier that uniquely identifies a filter within a dashboard,
+-- analysis, or template.
+topBottomFilter_filterId :: Lens.Lens' TopBottomFilter Prelude.Text
+topBottomFilter_filterId = Lens.lens (\TopBottomFilter' {filterId} -> filterId) (\s@TopBottomFilter' {} a -> s {filterId = a} :: TopBottomFilter)
+
+-- | The column that the filter is applied to.
+topBottomFilter_column :: Lens.Lens' TopBottomFilter ColumnIdentifier
+topBottomFilter_column = Lens.lens (\TopBottomFilter' {column} -> column) (\s@TopBottomFilter' {} a -> s {column = a} :: TopBottomFilter)
+
+-- | The aggregation and sort configuration of the top bottom filter.
+topBottomFilter_aggregationSortConfigurations :: Lens.Lens' TopBottomFilter [AggregationSortConfiguration]
+topBottomFilter_aggregationSortConfigurations = Lens.lens (\TopBottomFilter' {aggregationSortConfigurations} -> aggregationSortConfigurations) (\s@TopBottomFilter' {} a -> s {aggregationSortConfigurations = a} :: TopBottomFilter) Prelude.. Lens.coerced
+
+instance Data.FromJSON TopBottomFilter where
+  parseJSON =
+    Data.withObject
+      "TopBottomFilter"
+      ( \x ->
+          TopBottomFilter'
+            Prelude.<$> (x Data..:? "Limit")
+            Prelude.<*> (x Data..:? "ParameterName")
+            Prelude.<*> (x Data..:? "TimeGranularity")
+            Prelude.<*> (x Data..: "FilterId")
+            Prelude.<*> (x Data..: "Column")
+            Prelude.<*> ( x
+                            Data..:? "AggregationSortConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable TopBottomFilter where
+  hashWithSalt _salt TopBottomFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` parameterName
+      `Prelude.hashWithSalt` timeGranularity
+      `Prelude.hashWithSalt` filterId
+      `Prelude.hashWithSalt` column
+      `Prelude.hashWithSalt` aggregationSortConfigurations
+
+instance Prelude.NFData TopBottomFilter where
+  rnf TopBottomFilter' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf parameterName
+      `Prelude.seq` Prelude.rnf timeGranularity
+      `Prelude.seq` Prelude.rnf filterId
+      `Prelude.seq` Prelude.rnf column
+      `Prelude.seq` Prelude.rnf aggregationSortConfigurations
+
+instance Data.ToJSON TopBottomFilter where
+  toJSON TopBottomFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Limit" Data..=) Prelude.<$> limit,
+            ("ParameterName" Data..=) Prelude.<$> parameterName,
+            ("TimeGranularity" Data..=)
+              Prelude.<$> timeGranularity,
+            Prelude.Just ("FilterId" Data..= filterId),
+            Prelude.Just ("Column" Data..= column),
+            Prelude.Just
+              ( "AggregationSortConfigurations"
+                  Data..= aggregationSortConfigurations
+              )
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TopBottomMoversComputation.hs b/gen/Amazonka/QuickSight/Types/TopBottomMoversComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TopBottomMoversComputation.hs
@@ -0,0 +1,200 @@
+{-# 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.QuickSight.Types.TopBottomMoversComputation
+-- 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.QuickSight.Types.TopBottomMoversComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+import Amazonka.QuickSight.Types.TopBottomComputationType
+import Amazonka.QuickSight.Types.TopBottomSortOrder
+
+-- | The top movers and bottom movers computation setup.
+--
+-- /See:/ 'newTopBottomMoversComputation' smart constructor.
+data TopBottomMoversComputation = TopBottomMoversComputation'
+  { -- | The mover size setup of the top and bottom movers computation.
+    moverSize :: Prelude.Maybe Prelude.Natural,
+    -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The sort order setup of the top and bottom movers computation.
+    sortOrder :: Prelude.Maybe TopBottomSortOrder,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The time field that is used in a computation.
+    time :: DimensionField,
+    -- | The category field that is used in a computation.
+    category :: DimensionField,
+    -- | The computation type. Choose from the following options:
+    --
+    -- -   TOP: Top movers computation.
+    --
+    -- -   BOTTOM: Bottom movers computation.
+    type' :: TopBottomComputationType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TopBottomMoversComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'moverSize', 'topBottomMoversComputation_moverSize' - The mover size setup of the top and bottom movers computation.
+--
+-- 'name', 'topBottomMoversComputation_name' - The name of a computation.
+--
+-- 'sortOrder', 'topBottomMoversComputation_sortOrder' - The sort order setup of the top and bottom movers computation.
+--
+-- 'value', 'topBottomMoversComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'topBottomMoversComputation_computationId' - The ID for a computation.
+--
+-- 'time', 'topBottomMoversComputation_time' - The time field that is used in a computation.
+--
+-- 'category', 'topBottomMoversComputation_category' - The category field that is used in a computation.
+--
+-- 'type'', 'topBottomMoversComputation_type' - The computation type. Choose from the following options:
+--
+-- -   TOP: Top movers computation.
+--
+-- -   BOTTOM: Bottom movers computation.
+newTopBottomMoversComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'time'
+  DimensionField ->
+  -- | 'category'
+  DimensionField ->
+  -- | 'type''
+  TopBottomComputationType ->
+  TopBottomMoversComputation
+newTopBottomMoversComputation
+  pComputationId_
+  pTime_
+  pCategory_
+  pType_ =
+    TopBottomMoversComputation'
+      { moverSize =
+          Prelude.Nothing,
+        name = Prelude.Nothing,
+        sortOrder = Prelude.Nothing,
+        value = Prelude.Nothing,
+        computationId = pComputationId_,
+        time = pTime_,
+        category = pCategory_,
+        type' = pType_
+      }
+
+-- | The mover size setup of the top and bottom movers computation.
+topBottomMoversComputation_moverSize :: Lens.Lens' TopBottomMoversComputation (Prelude.Maybe Prelude.Natural)
+topBottomMoversComputation_moverSize = Lens.lens (\TopBottomMoversComputation' {moverSize} -> moverSize) (\s@TopBottomMoversComputation' {} a -> s {moverSize = a} :: TopBottomMoversComputation)
+
+-- | The name of a computation.
+topBottomMoversComputation_name :: Lens.Lens' TopBottomMoversComputation (Prelude.Maybe Prelude.Text)
+topBottomMoversComputation_name = Lens.lens (\TopBottomMoversComputation' {name} -> name) (\s@TopBottomMoversComputation' {} a -> s {name = a} :: TopBottomMoversComputation)
+
+-- | The sort order setup of the top and bottom movers computation.
+topBottomMoversComputation_sortOrder :: Lens.Lens' TopBottomMoversComputation (Prelude.Maybe TopBottomSortOrder)
+topBottomMoversComputation_sortOrder = Lens.lens (\TopBottomMoversComputation' {sortOrder} -> sortOrder) (\s@TopBottomMoversComputation' {} a -> s {sortOrder = a} :: TopBottomMoversComputation)
+
+-- | The value field that is used in a computation.
+topBottomMoversComputation_value :: Lens.Lens' TopBottomMoversComputation (Prelude.Maybe MeasureField)
+topBottomMoversComputation_value = Lens.lens (\TopBottomMoversComputation' {value} -> value) (\s@TopBottomMoversComputation' {} a -> s {value = a} :: TopBottomMoversComputation)
+
+-- | The ID for a computation.
+topBottomMoversComputation_computationId :: Lens.Lens' TopBottomMoversComputation Prelude.Text
+topBottomMoversComputation_computationId = Lens.lens (\TopBottomMoversComputation' {computationId} -> computationId) (\s@TopBottomMoversComputation' {} a -> s {computationId = a} :: TopBottomMoversComputation)
+
+-- | The time field that is used in a computation.
+topBottomMoversComputation_time :: Lens.Lens' TopBottomMoversComputation DimensionField
+topBottomMoversComputation_time = Lens.lens (\TopBottomMoversComputation' {time} -> time) (\s@TopBottomMoversComputation' {} a -> s {time = a} :: TopBottomMoversComputation)
+
+-- | The category field that is used in a computation.
+topBottomMoversComputation_category :: Lens.Lens' TopBottomMoversComputation DimensionField
+topBottomMoversComputation_category = Lens.lens (\TopBottomMoversComputation' {category} -> category) (\s@TopBottomMoversComputation' {} a -> s {category = a} :: TopBottomMoversComputation)
+
+-- | The computation type. Choose from the following options:
+--
+-- -   TOP: Top movers computation.
+--
+-- -   BOTTOM: Bottom movers computation.
+topBottomMoversComputation_type :: Lens.Lens' TopBottomMoversComputation TopBottomComputationType
+topBottomMoversComputation_type = Lens.lens (\TopBottomMoversComputation' {type'} -> type') (\s@TopBottomMoversComputation' {} a -> s {type' = a} :: TopBottomMoversComputation)
+
+instance Data.FromJSON TopBottomMoversComputation where
+  parseJSON =
+    Data.withObject
+      "TopBottomMoversComputation"
+      ( \x ->
+          TopBottomMoversComputation'
+            Prelude.<$> (x Data..:? "MoverSize")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "SortOrder")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Time")
+            Prelude.<*> (x Data..: "Category")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable TopBottomMoversComputation where
+  hashWithSalt _salt TopBottomMoversComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` moverSize
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` time
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData TopBottomMoversComputation where
+  rnf TopBottomMoversComputation' {..} =
+    Prelude.rnf moverSize
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf time
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON TopBottomMoversComputation where
+  toJSON TopBottomMoversComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MoverSize" Data..=) Prelude.<$> moverSize,
+            ("Name" Data..=) Prelude.<$> name,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Time" Data..= time),
+            Prelude.Just ("Category" Data..= category),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TopBottomRankedComputation.hs b/gen/Amazonka/QuickSight/Types/TopBottomRankedComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TopBottomRankedComputation.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TopBottomRankedComputation
+-- 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.QuickSight.Types.TopBottomRankedComputation 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+import Amazonka.QuickSight.Types.TopBottomComputationType
+
+-- | The top ranked and bottom ranked computation configuration.
+--
+-- /See:/ 'newTopBottomRankedComputation' smart constructor.
+data TopBottomRankedComputation = TopBottomRankedComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The result size of a top and bottom ranked computation.
+    resultSize :: Prelude.Maybe Prelude.Natural,
+    -- | The value field that is used in a computation.
+    value :: Prelude.Maybe MeasureField,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The category field that is used in a computation.
+    category :: DimensionField,
+    -- | The computation type. Choose one of the following options:
+    --
+    -- -   TOP: A top ranked computation.
+    --
+    -- -   BOTTOM: A bottom ranked computation.
+    type' :: TopBottomComputationType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TopBottomRankedComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'topBottomRankedComputation_name' - The name of a computation.
+--
+-- 'resultSize', 'topBottomRankedComputation_resultSize' - The result size of a top and bottom ranked computation.
+--
+-- 'value', 'topBottomRankedComputation_value' - The value field that is used in a computation.
+--
+-- 'computationId', 'topBottomRankedComputation_computationId' - The ID for a computation.
+--
+-- 'category', 'topBottomRankedComputation_category' - The category field that is used in a computation.
+--
+-- 'type'', 'topBottomRankedComputation_type' - The computation type. Choose one of the following options:
+--
+-- -   TOP: A top ranked computation.
+--
+-- -   BOTTOM: A bottom ranked computation.
+newTopBottomRankedComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'category'
+  DimensionField ->
+  -- | 'type''
+  TopBottomComputationType ->
+  TopBottomRankedComputation
+newTopBottomRankedComputation
+  pComputationId_
+  pCategory_
+  pType_ =
+    TopBottomRankedComputation'
+      { name = Prelude.Nothing,
+        resultSize = Prelude.Nothing,
+        value = Prelude.Nothing,
+        computationId = pComputationId_,
+        category = pCategory_,
+        type' = pType_
+      }
+
+-- | The name of a computation.
+topBottomRankedComputation_name :: Lens.Lens' TopBottomRankedComputation (Prelude.Maybe Prelude.Text)
+topBottomRankedComputation_name = Lens.lens (\TopBottomRankedComputation' {name} -> name) (\s@TopBottomRankedComputation' {} a -> s {name = a} :: TopBottomRankedComputation)
+
+-- | The result size of a top and bottom ranked computation.
+topBottomRankedComputation_resultSize :: Lens.Lens' TopBottomRankedComputation (Prelude.Maybe Prelude.Natural)
+topBottomRankedComputation_resultSize = Lens.lens (\TopBottomRankedComputation' {resultSize} -> resultSize) (\s@TopBottomRankedComputation' {} a -> s {resultSize = a} :: TopBottomRankedComputation)
+
+-- | The value field that is used in a computation.
+topBottomRankedComputation_value :: Lens.Lens' TopBottomRankedComputation (Prelude.Maybe MeasureField)
+topBottomRankedComputation_value = Lens.lens (\TopBottomRankedComputation' {value} -> value) (\s@TopBottomRankedComputation' {} a -> s {value = a} :: TopBottomRankedComputation)
+
+-- | The ID for a computation.
+topBottomRankedComputation_computationId :: Lens.Lens' TopBottomRankedComputation Prelude.Text
+topBottomRankedComputation_computationId = Lens.lens (\TopBottomRankedComputation' {computationId} -> computationId) (\s@TopBottomRankedComputation' {} a -> s {computationId = a} :: TopBottomRankedComputation)
+
+-- | The category field that is used in a computation.
+topBottomRankedComputation_category :: Lens.Lens' TopBottomRankedComputation DimensionField
+topBottomRankedComputation_category = Lens.lens (\TopBottomRankedComputation' {category} -> category) (\s@TopBottomRankedComputation' {} a -> s {category = a} :: TopBottomRankedComputation)
+
+-- | The computation type. Choose one of the following options:
+--
+-- -   TOP: A top ranked computation.
+--
+-- -   BOTTOM: A bottom ranked computation.
+topBottomRankedComputation_type :: Lens.Lens' TopBottomRankedComputation TopBottomComputationType
+topBottomRankedComputation_type = Lens.lens (\TopBottomRankedComputation' {type'} -> type') (\s@TopBottomRankedComputation' {} a -> s {type' = a} :: TopBottomRankedComputation)
+
+instance Data.FromJSON TopBottomRankedComputation where
+  parseJSON =
+    Data.withObject
+      "TopBottomRankedComputation"
+      ( \x ->
+          TopBottomRankedComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ResultSize")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Category")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable TopBottomRankedComputation where
+  hashWithSalt _salt TopBottomRankedComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` resultSize
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData TopBottomRankedComputation where
+  rnf TopBottomRankedComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf resultSize
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON TopBottomRankedComputation where
+  toJSON TopBottomRankedComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("ResultSize" Data..=) Prelude.<$> resultSize,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Category" Data..= category),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TopBottomSortOrder.hs b/gen/Amazonka/QuickSight/Types/TopBottomSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TopBottomSortOrder.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.QuickSight.Types.TopBottomSortOrder
+-- 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.QuickSight.Types.TopBottomSortOrder
+  ( TopBottomSortOrder
+      ( ..,
+        TopBottomSortOrder_ABSOLUTE_DIFFERENCE,
+        TopBottomSortOrder_PERCENT_DIFFERENCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TopBottomSortOrder = TopBottomSortOrder'
+  { fromTopBottomSortOrder ::
+      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 TopBottomSortOrder_ABSOLUTE_DIFFERENCE :: TopBottomSortOrder
+pattern TopBottomSortOrder_ABSOLUTE_DIFFERENCE = TopBottomSortOrder' "ABSOLUTE_DIFFERENCE"
+
+pattern TopBottomSortOrder_PERCENT_DIFFERENCE :: TopBottomSortOrder
+pattern TopBottomSortOrder_PERCENT_DIFFERENCE = TopBottomSortOrder' "PERCENT_DIFFERENCE"
+
+{-# COMPLETE
+  TopBottomSortOrder_ABSOLUTE_DIFFERENCE,
+  TopBottomSortOrder_PERCENT_DIFFERENCE,
+  TopBottomSortOrder'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/TotalAggregationComputation.hs b/gen/Amazonka/QuickSight/Types/TotalAggregationComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TotalAggregationComputation.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.TotalAggregationComputation
+-- 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.QuickSight.Types.TotalAggregationComputation 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.QuickSight.Types.MeasureField
+
+-- | The total aggregation computation configuration.
+--
+-- /See:/ 'newTotalAggregationComputation' smart constructor.
+data TotalAggregationComputation = TotalAggregationComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The value field that is used in a computation.
+    value :: MeasureField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TotalAggregationComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'totalAggregationComputation_name' - The name of a computation.
+--
+-- 'computationId', 'totalAggregationComputation_computationId' - The ID for a computation.
+--
+-- 'value', 'totalAggregationComputation_value' - The value field that is used in a computation.
+newTotalAggregationComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'value'
+  MeasureField ->
+  TotalAggregationComputation
+newTotalAggregationComputation
+  pComputationId_
+  pValue_ =
+    TotalAggregationComputation'
+      { name =
+          Prelude.Nothing,
+        computationId = pComputationId_,
+        value = pValue_
+      }
+
+-- | The name of a computation.
+totalAggregationComputation_name :: Lens.Lens' TotalAggregationComputation (Prelude.Maybe Prelude.Text)
+totalAggregationComputation_name = Lens.lens (\TotalAggregationComputation' {name} -> name) (\s@TotalAggregationComputation' {} a -> s {name = a} :: TotalAggregationComputation)
+
+-- | The ID for a computation.
+totalAggregationComputation_computationId :: Lens.Lens' TotalAggregationComputation Prelude.Text
+totalAggregationComputation_computationId = Lens.lens (\TotalAggregationComputation' {computationId} -> computationId) (\s@TotalAggregationComputation' {} a -> s {computationId = a} :: TotalAggregationComputation)
+
+-- | The value field that is used in a computation.
+totalAggregationComputation_value :: Lens.Lens' TotalAggregationComputation MeasureField
+totalAggregationComputation_value = Lens.lens (\TotalAggregationComputation' {value} -> value) (\s@TotalAggregationComputation' {} a -> s {value = a} :: TotalAggregationComputation)
+
+instance Data.FromJSON TotalAggregationComputation where
+  parseJSON =
+    Data.withObject
+      "TotalAggregationComputation"
+      ( \x ->
+          TotalAggregationComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable TotalAggregationComputation where
+  hashWithSalt _salt TotalAggregationComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData TotalAggregationComputation where
+  rnf TotalAggregationComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON TotalAggregationComputation where
+  toJSON TotalAggregationComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TotalOptions.hs b/gen/Amazonka/QuickSight/Types/TotalOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TotalOptions.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TotalOptions
+-- 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.QuickSight.Types.TotalOptions 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.QuickSight.Types.TableCellStyle
+import Amazonka.QuickSight.Types.TableTotalsPlacement
+import Amazonka.QuickSight.Types.TableTotalsScrollStatus
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The total options for a table visual.
+--
+-- /See:/ 'newTotalOptions' smart constructor.
+data TotalOptions = TotalOptions'
+  { -- | The custom label string for the total cells.
+    customLabel :: Prelude.Maybe Prelude.Text,
+    -- | The placement (start, end) for the total cells.
+    placement :: Prelude.Maybe TableTotalsPlacement,
+    -- | The scroll status (pinned, scrolled) for the total cells.
+    scrollStatus :: Prelude.Maybe TableTotalsScrollStatus,
+    -- | Cell styling options for the total cells.
+    totalCellStyle :: Prelude.Maybe TableCellStyle,
+    -- | The visibility configuration for the total cells.
+    totalsVisibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TotalOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customLabel', 'totalOptions_customLabel' - The custom label string for the total cells.
+--
+-- 'placement', 'totalOptions_placement' - The placement (start, end) for the total cells.
+--
+-- 'scrollStatus', 'totalOptions_scrollStatus' - The scroll status (pinned, scrolled) for the total cells.
+--
+-- 'totalCellStyle', 'totalOptions_totalCellStyle' - Cell styling options for the total cells.
+--
+-- 'totalsVisibility', 'totalOptions_totalsVisibility' - The visibility configuration for the total cells.
+newTotalOptions ::
+  TotalOptions
+newTotalOptions =
+  TotalOptions'
+    { customLabel = Prelude.Nothing,
+      placement = Prelude.Nothing,
+      scrollStatus = Prelude.Nothing,
+      totalCellStyle = Prelude.Nothing,
+      totalsVisibility = Prelude.Nothing
+    }
+
+-- | The custom label string for the total cells.
+totalOptions_customLabel :: Lens.Lens' TotalOptions (Prelude.Maybe Prelude.Text)
+totalOptions_customLabel = Lens.lens (\TotalOptions' {customLabel} -> customLabel) (\s@TotalOptions' {} a -> s {customLabel = a} :: TotalOptions)
+
+-- | The placement (start, end) for the total cells.
+totalOptions_placement :: Lens.Lens' TotalOptions (Prelude.Maybe TableTotalsPlacement)
+totalOptions_placement = Lens.lens (\TotalOptions' {placement} -> placement) (\s@TotalOptions' {} a -> s {placement = a} :: TotalOptions)
+
+-- | The scroll status (pinned, scrolled) for the total cells.
+totalOptions_scrollStatus :: Lens.Lens' TotalOptions (Prelude.Maybe TableTotalsScrollStatus)
+totalOptions_scrollStatus = Lens.lens (\TotalOptions' {scrollStatus} -> scrollStatus) (\s@TotalOptions' {} a -> s {scrollStatus = a} :: TotalOptions)
+
+-- | Cell styling options for the total cells.
+totalOptions_totalCellStyle :: Lens.Lens' TotalOptions (Prelude.Maybe TableCellStyle)
+totalOptions_totalCellStyle = Lens.lens (\TotalOptions' {totalCellStyle} -> totalCellStyle) (\s@TotalOptions' {} a -> s {totalCellStyle = a} :: TotalOptions)
+
+-- | The visibility configuration for the total cells.
+totalOptions_totalsVisibility :: Lens.Lens' TotalOptions (Prelude.Maybe Visibility)
+totalOptions_totalsVisibility = Lens.lens (\TotalOptions' {totalsVisibility} -> totalsVisibility) (\s@TotalOptions' {} a -> s {totalsVisibility = a} :: TotalOptions)
+
+instance Data.FromJSON TotalOptions where
+  parseJSON =
+    Data.withObject
+      "TotalOptions"
+      ( \x ->
+          TotalOptions'
+            Prelude.<$> (x Data..:? "CustomLabel")
+            Prelude.<*> (x Data..:? "Placement")
+            Prelude.<*> (x Data..:? "ScrollStatus")
+            Prelude.<*> (x Data..:? "TotalCellStyle")
+            Prelude.<*> (x Data..:? "TotalsVisibility")
+      )
+
+instance Prelude.Hashable TotalOptions where
+  hashWithSalt _salt TotalOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLabel
+      `Prelude.hashWithSalt` placement
+      `Prelude.hashWithSalt` scrollStatus
+      `Prelude.hashWithSalt` totalCellStyle
+      `Prelude.hashWithSalt` totalsVisibility
+
+instance Prelude.NFData TotalOptions where
+  rnf TotalOptions' {..} =
+    Prelude.rnf customLabel
+      `Prelude.seq` Prelude.rnf placement
+      `Prelude.seq` Prelude.rnf scrollStatus
+      `Prelude.seq` Prelude.rnf totalCellStyle
+      `Prelude.seq` Prelude.rnf totalsVisibility
+
+instance Data.ToJSON TotalOptions where
+  toJSON TotalOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomLabel" Data..=) Prelude.<$> customLabel,
+            ("Placement" Data..=) Prelude.<$> placement,
+            ("ScrollStatus" Data..=) Prelude.<$> scrollStatus,
+            ("TotalCellStyle" Data..=)
+              Prelude.<$> totalCellStyle,
+            ("TotalsVisibility" Data..=)
+              Prelude.<$> totalsVisibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TransformOperation.hs b/gen/Amazonka/QuickSight/Types/TransformOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TransformOperation.hs
@@ -0,0 +1,180 @@
+{-# 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.QuickSight.Types.TransformOperation
+-- 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.QuickSight.Types.TransformOperation 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.QuickSight.Types.CastColumnTypeOperation
+import Amazonka.QuickSight.Types.CreateColumnsOperation
+import Amazonka.QuickSight.Types.FilterOperation
+import Amazonka.QuickSight.Types.ProjectOperation
+import Amazonka.QuickSight.Types.RenameColumnOperation
+import Amazonka.QuickSight.Types.TagColumnOperation
+import Amazonka.QuickSight.Types.UntagColumnOperation
+
+-- | A data transformation on a logical table. This is a variant type
+-- structure. For this structure to be valid, only one of the attributes
+-- can be non-null.
+--
+-- /See:/ 'newTransformOperation' smart constructor.
+data TransformOperation = TransformOperation'
+  { -- | A transform operation that casts a column to a different type.
+    castColumnTypeOperation :: Prelude.Maybe CastColumnTypeOperation,
+    -- | An operation that creates calculated columns. Columns created in one
+    -- such operation form a lexical closure.
+    createColumnsOperation :: Prelude.Maybe CreateColumnsOperation,
+    -- | An operation that filters rows based on some condition.
+    filterOperation :: Prelude.Maybe FilterOperation,
+    -- | An operation that projects columns. Operations that come after a
+    -- projection can only refer to projected columns.
+    projectOperation :: Prelude.Maybe ProjectOperation,
+    -- | An operation that renames a column.
+    renameColumnOperation :: Prelude.Maybe RenameColumnOperation,
+    -- | An operation that tags a column with additional information.
+    tagColumnOperation :: Prelude.Maybe TagColumnOperation,
+    untagColumnOperation :: Prelude.Maybe UntagColumnOperation
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'castColumnTypeOperation', 'transformOperation_castColumnTypeOperation' - A transform operation that casts a column to a different type.
+--
+-- 'createColumnsOperation', 'transformOperation_createColumnsOperation' - An operation that creates calculated columns. Columns created in one
+-- such operation form a lexical closure.
+--
+-- 'filterOperation', 'transformOperation_filterOperation' - An operation that filters rows based on some condition.
+--
+-- 'projectOperation', 'transformOperation_projectOperation' - An operation that projects columns. Operations that come after a
+-- projection can only refer to projected columns.
+--
+-- 'renameColumnOperation', 'transformOperation_renameColumnOperation' - An operation that renames a column.
+--
+-- 'tagColumnOperation', 'transformOperation_tagColumnOperation' - An operation that tags a column with additional information.
+--
+-- 'untagColumnOperation', 'transformOperation_untagColumnOperation' - Undocumented member.
+newTransformOperation ::
+  TransformOperation
+newTransformOperation =
+  TransformOperation'
+    { castColumnTypeOperation =
+        Prelude.Nothing,
+      createColumnsOperation = Prelude.Nothing,
+      filterOperation = Prelude.Nothing,
+      projectOperation = Prelude.Nothing,
+      renameColumnOperation = Prelude.Nothing,
+      tagColumnOperation = Prelude.Nothing,
+      untagColumnOperation = Prelude.Nothing
+    }
+
+-- | A transform operation that casts a column to a different type.
+transformOperation_castColumnTypeOperation :: Lens.Lens' TransformOperation (Prelude.Maybe CastColumnTypeOperation)
+transformOperation_castColumnTypeOperation = Lens.lens (\TransformOperation' {castColumnTypeOperation} -> castColumnTypeOperation) (\s@TransformOperation' {} a -> s {castColumnTypeOperation = a} :: TransformOperation)
+
+-- | An operation that creates calculated columns. Columns created in one
+-- such operation form a lexical closure.
+transformOperation_createColumnsOperation :: Lens.Lens' TransformOperation (Prelude.Maybe CreateColumnsOperation)
+transformOperation_createColumnsOperation = Lens.lens (\TransformOperation' {createColumnsOperation} -> createColumnsOperation) (\s@TransformOperation' {} a -> s {createColumnsOperation = a} :: TransformOperation)
+
+-- | An operation that filters rows based on some condition.
+transformOperation_filterOperation :: Lens.Lens' TransformOperation (Prelude.Maybe FilterOperation)
+transformOperation_filterOperation = Lens.lens (\TransformOperation' {filterOperation} -> filterOperation) (\s@TransformOperation' {} a -> s {filterOperation = a} :: TransformOperation)
+
+-- | An operation that projects columns. Operations that come after a
+-- projection can only refer to projected columns.
+transformOperation_projectOperation :: Lens.Lens' TransformOperation (Prelude.Maybe ProjectOperation)
+transformOperation_projectOperation = Lens.lens (\TransformOperation' {projectOperation} -> projectOperation) (\s@TransformOperation' {} a -> s {projectOperation = a} :: TransformOperation)
+
+-- | An operation that renames a column.
+transformOperation_renameColumnOperation :: Lens.Lens' TransformOperation (Prelude.Maybe RenameColumnOperation)
+transformOperation_renameColumnOperation = Lens.lens (\TransformOperation' {renameColumnOperation} -> renameColumnOperation) (\s@TransformOperation' {} a -> s {renameColumnOperation = a} :: TransformOperation)
+
+-- | An operation that tags a column with additional information.
+transformOperation_tagColumnOperation :: Lens.Lens' TransformOperation (Prelude.Maybe TagColumnOperation)
+transformOperation_tagColumnOperation = Lens.lens (\TransformOperation' {tagColumnOperation} -> tagColumnOperation) (\s@TransformOperation' {} a -> s {tagColumnOperation = a} :: TransformOperation)
+
+-- | Undocumented member.
+transformOperation_untagColumnOperation :: Lens.Lens' TransformOperation (Prelude.Maybe UntagColumnOperation)
+transformOperation_untagColumnOperation = Lens.lens (\TransformOperation' {untagColumnOperation} -> untagColumnOperation) (\s@TransformOperation' {} a -> s {untagColumnOperation = a} :: TransformOperation)
+
+instance Data.FromJSON TransformOperation where
+  parseJSON =
+    Data.withObject
+      "TransformOperation"
+      ( \x ->
+          TransformOperation'
+            Prelude.<$> (x Data..:? "CastColumnTypeOperation")
+            Prelude.<*> (x Data..:? "CreateColumnsOperation")
+            Prelude.<*> (x Data..:? "FilterOperation")
+            Prelude.<*> (x Data..:? "ProjectOperation")
+            Prelude.<*> (x Data..:? "RenameColumnOperation")
+            Prelude.<*> (x Data..:? "TagColumnOperation")
+            Prelude.<*> (x Data..:? "UntagColumnOperation")
+      )
+
+instance Prelude.Hashable TransformOperation where
+  hashWithSalt _salt TransformOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` castColumnTypeOperation
+      `Prelude.hashWithSalt` createColumnsOperation
+      `Prelude.hashWithSalt` filterOperation
+      `Prelude.hashWithSalt` projectOperation
+      `Prelude.hashWithSalt` renameColumnOperation
+      `Prelude.hashWithSalt` tagColumnOperation
+      `Prelude.hashWithSalt` untagColumnOperation
+
+instance Prelude.NFData TransformOperation where
+  rnf TransformOperation' {..} =
+    Prelude.rnf castColumnTypeOperation
+      `Prelude.seq` Prelude.rnf createColumnsOperation
+      `Prelude.seq` Prelude.rnf filterOperation
+      `Prelude.seq` Prelude.rnf projectOperation
+      `Prelude.seq` Prelude.rnf renameColumnOperation
+      `Prelude.seq` Prelude.rnf tagColumnOperation
+      `Prelude.seq` Prelude.rnf untagColumnOperation
+
+instance Data.ToJSON TransformOperation where
+  toJSON TransformOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CastColumnTypeOperation" Data..=)
+              Prelude.<$> castColumnTypeOperation,
+            ("CreateColumnsOperation" Data..=)
+              Prelude.<$> createColumnsOperation,
+            ("FilterOperation" Data..=)
+              Prelude.<$> filterOperation,
+            ("ProjectOperation" Data..=)
+              Prelude.<$> projectOperation,
+            ("RenameColumnOperation" Data..=)
+              Prelude.<$> renameColumnOperation,
+            ("TagColumnOperation" Data..=)
+              Prelude.<$> tagColumnOperation,
+            ("UntagColumnOperation" Data..=)
+              Prelude.<$> untagColumnOperation
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TreeMapAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/TreeMapAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TreeMapAggregatedFieldWells.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TreeMapAggregatedFieldWells
+-- 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.QuickSight.Types.TreeMapAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | Aggregated field wells of a tree map.
+--
+-- /See:/ 'newTreeMapAggregatedFieldWells' smart constructor.
+data TreeMapAggregatedFieldWells = TreeMapAggregatedFieldWells'
+  { -- | The color field well of a tree map. Values are grouped by aggregations
+    -- based on group by fields.
+    colors :: Prelude.Maybe [MeasureField],
+    -- | The group by field well of a tree map. Values are grouped based on group
+    -- by fields.
+    groups :: Prelude.Maybe [DimensionField],
+    -- | The size field well of a tree map. Values are aggregated based on group
+    -- by fields.
+    sizes :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TreeMapAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'colors', 'treeMapAggregatedFieldWells_colors' - The color field well of a tree map. Values are grouped by aggregations
+-- based on group by fields.
+--
+-- 'groups', 'treeMapAggregatedFieldWells_groups' - The group by field well of a tree map. Values are grouped based on group
+-- by fields.
+--
+-- 'sizes', 'treeMapAggregatedFieldWells_sizes' - The size field well of a tree map. Values are aggregated based on group
+-- by fields.
+newTreeMapAggregatedFieldWells ::
+  TreeMapAggregatedFieldWells
+newTreeMapAggregatedFieldWells =
+  TreeMapAggregatedFieldWells'
+    { colors =
+        Prelude.Nothing,
+      groups = Prelude.Nothing,
+      sizes = Prelude.Nothing
+    }
+
+-- | The color field well of a tree map. Values are grouped by aggregations
+-- based on group by fields.
+treeMapAggregatedFieldWells_colors :: Lens.Lens' TreeMapAggregatedFieldWells (Prelude.Maybe [MeasureField])
+treeMapAggregatedFieldWells_colors = Lens.lens (\TreeMapAggregatedFieldWells' {colors} -> colors) (\s@TreeMapAggregatedFieldWells' {} a -> s {colors = a} :: TreeMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The group by field well of a tree map. Values are grouped based on group
+-- by fields.
+treeMapAggregatedFieldWells_groups :: Lens.Lens' TreeMapAggregatedFieldWells (Prelude.Maybe [DimensionField])
+treeMapAggregatedFieldWells_groups = Lens.lens (\TreeMapAggregatedFieldWells' {groups} -> groups) (\s@TreeMapAggregatedFieldWells' {} a -> s {groups = a} :: TreeMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The size field well of a tree map. Values are aggregated based on group
+-- by fields.
+treeMapAggregatedFieldWells_sizes :: Lens.Lens' TreeMapAggregatedFieldWells (Prelude.Maybe [MeasureField])
+treeMapAggregatedFieldWells_sizes = Lens.lens (\TreeMapAggregatedFieldWells' {sizes} -> sizes) (\s@TreeMapAggregatedFieldWells' {} a -> s {sizes = a} :: TreeMapAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TreeMapAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "TreeMapAggregatedFieldWells"
+      ( \x ->
+          TreeMapAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Colors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Groups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Sizes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TreeMapAggregatedFieldWells where
+  hashWithSalt _salt TreeMapAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` colors
+      `Prelude.hashWithSalt` groups
+      `Prelude.hashWithSalt` sizes
+
+instance Prelude.NFData TreeMapAggregatedFieldWells where
+  rnf TreeMapAggregatedFieldWells' {..} =
+    Prelude.rnf colors
+      `Prelude.seq` Prelude.rnf groups
+      `Prelude.seq` Prelude.rnf sizes
+
+instance Data.ToJSON TreeMapAggregatedFieldWells where
+  toJSON TreeMapAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Colors" Data..=) Prelude.<$> colors,
+            ("Groups" Data..=) Prelude.<$> groups,
+            ("Sizes" Data..=) Prelude.<$> sizes
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TreeMapConfiguration.hs b/gen/Amazonka/QuickSight/Types/TreeMapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TreeMapConfiguration.hs
@@ -0,0 +1,205 @@
+{-# 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.QuickSight.Types.TreeMapConfiguration
+-- 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.QuickSight.Types.TreeMapConfiguration 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.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.ColorScale
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.TooltipOptions
+import Amazonka.QuickSight.Types.TreeMapFieldWells
+import Amazonka.QuickSight.Types.TreeMapSortConfiguration
+
+-- | The configuration of a tree map.
+--
+-- /See:/ 'newTreeMapConfiguration' smart constructor.
+data TreeMapConfiguration = TreeMapConfiguration'
+  { -- | The label options (label text, label visibility) for the colors
+    -- displayed in a tree map.
+    colorLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The color options (gradient color, point of divergence) of a tree map.
+    colorScale :: Prelude.Maybe ColorScale,
+    -- | The options that determine if visual data labels are displayed.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe TreeMapFieldWells,
+    -- | The label options (label text, label visibility) of the groups that are
+    -- displayed in a tree map.
+    groupLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The legend display setup of the visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The label options (label text, label visibility) of the sizes that are
+    -- displayed in a tree map.
+    sizeLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The sort configuration of a tree map.
+    sortConfiguration :: Prelude.Maybe TreeMapSortConfiguration,
+    -- | The tooltip display setup of the visual.
+    tooltip :: Prelude.Maybe TooltipOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TreeMapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'colorLabelOptions', 'treeMapConfiguration_colorLabelOptions' - The label options (label text, label visibility) for the colors
+-- displayed in a tree map.
+--
+-- 'colorScale', 'treeMapConfiguration_colorScale' - The color options (gradient color, point of divergence) of a tree map.
+--
+-- 'dataLabels', 'treeMapConfiguration_dataLabels' - The options that determine if visual data labels are displayed.
+--
+-- 'fieldWells', 'treeMapConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'groupLabelOptions', 'treeMapConfiguration_groupLabelOptions' - The label options (label text, label visibility) of the groups that are
+-- displayed in a tree map.
+--
+-- 'legend', 'treeMapConfiguration_legend' - The legend display setup of the visual.
+--
+-- 'sizeLabelOptions', 'treeMapConfiguration_sizeLabelOptions' - The label options (label text, label visibility) of the sizes that are
+-- displayed in a tree map.
+--
+-- 'sortConfiguration', 'treeMapConfiguration_sortConfiguration' - The sort configuration of a tree map.
+--
+-- 'tooltip', 'treeMapConfiguration_tooltip' - The tooltip display setup of the visual.
+newTreeMapConfiguration ::
+  TreeMapConfiguration
+newTreeMapConfiguration =
+  TreeMapConfiguration'
+    { colorLabelOptions =
+        Prelude.Nothing,
+      colorScale = Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      groupLabelOptions = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      sizeLabelOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      tooltip = Prelude.Nothing
+    }
+
+-- | The label options (label text, label visibility) for the colors
+-- displayed in a tree map.
+treeMapConfiguration_colorLabelOptions :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+treeMapConfiguration_colorLabelOptions = Lens.lens (\TreeMapConfiguration' {colorLabelOptions} -> colorLabelOptions) (\s@TreeMapConfiguration' {} a -> s {colorLabelOptions = a} :: TreeMapConfiguration)
+
+-- | The color options (gradient color, point of divergence) of a tree map.
+treeMapConfiguration_colorScale :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe ColorScale)
+treeMapConfiguration_colorScale = Lens.lens (\TreeMapConfiguration' {colorScale} -> colorScale) (\s@TreeMapConfiguration' {} a -> s {colorScale = a} :: TreeMapConfiguration)
+
+-- | The options that determine if visual data labels are displayed.
+treeMapConfiguration_dataLabels :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe DataLabelOptions)
+treeMapConfiguration_dataLabels = Lens.lens (\TreeMapConfiguration' {dataLabels} -> dataLabels) (\s@TreeMapConfiguration' {} a -> s {dataLabels = a} :: TreeMapConfiguration)
+
+-- | The field wells of the visual.
+treeMapConfiguration_fieldWells :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe TreeMapFieldWells)
+treeMapConfiguration_fieldWells = Lens.lens (\TreeMapConfiguration' {fieldWells} -> fieldWells) (\s@TreeMapConfiguration' {} a -> s {fieldWells = a} :: TreeMapConfiguration)
+
+-- | The label options (label text, label visibility) of the groups that are
+-- displayed in a tree map.
+treeMapConfiguration_groupLabelOptions :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+treeMapConfiguration_groupLabelOptions = Lens.lens (\TreeMapConfiguration' {groupLabelOptions} -> groupLabelOptions) (\s@TreeMapConfiguration' {} a -> s {groupLabelOptions = a} :: TreeMapConfiguration)
+
+-- | The legend display setup of the visual.
+treeMapConfiguration_legend :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe LegendOptions)
+treeMapConfiguration_legend = Lens.lens (\TreeMapConfiguration' {legend} -> legend) (\s@TreeMapConfiguration' {} a -> s {legend = a} :: TreeMapConfiguration)
+
+-- | The label options (label text, label visibility) of the sizes that are
+-- displayed in a tree map.
+treeMapConfiguration_sizeLabelOptions :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+treeMapConfiguration_sizeLabelOptions = Lens.lens (\TreeMapConfiguration' {sizeLabelOptions} -> sizeLabelOptions) (\s@TreeMapConfiguration' {} a -> s {sizeLabelOptions = a} :: TreeMapConfiguration)
+
+-- | The sort configuration of a tree map.
+treeMapConfiguration_sortConfiguration :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe TreeMapSortConfiguration)
+treeMapConfiguration_sortConfiguration = Lens.lens (\TreeMapConfiguration' {sortConfiguration} -> sortConfiguration) (\s@TreeMapConfiguration' {} a -> s {sortConfiguration = a} :: TreeMapConfiguration)
+
+-- | The tooltip display setup of the visual.
+treeMapConfiguration_tooltip :: Lens.Lens' TreeMapConfiguration (Prelude.Maybe TooltipOptions)
+treeMapConfiguration_tooltip = Lens.lens (\TreeMapConfiguration' {tooltip} -> tooltip) (\s@TreeMapConfiguration' {} a -> s {tooltip = a} :: TreeMapConfiguration)
+
+instance Data.FromJSON TreeMapConfiguration where
+  parseJSON =
+    Data.withObject
+      "TreeMapConfiguration"
+      ( \x ->
+          TreeMapConfiguration'
+            Prelude.<$> (x Data..:? "ColorLabelOptions")
+            Prelude.<*> (x Data..:? "ColorScale")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "GroupLabelOptions")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "SizeLabelOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "Tooltip")
+      )
+
+instance Prelude.Hashable TreeMapConfiguration where
+  hashWithSalt _salt TreeMapConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` colorLabelOptions
+      `Prelude.hashWithSalt` colorScale
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` groupLabelOptions
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` sizeLabelOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` tooltip
+
+instance Prelude.NFData TreeMapConfiguration where
+  rnf TreeMapConfiguration' {..} =
+    Prelude.rnf colorLabelOptions
+      `Prelude.seq` Prelude.rnf colorScale
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf groupLabelOptions
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf sizeLabelOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf tooltip
+
+instance Data.ToJSON TreeMapConfiguration where
+  toJSON TreeMapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColorLabelOptions" Data..=)
+              Prelude.<$> colorLabelOptions,
+            ("ColorScale" Data..=) Prelude.<$> colorScale,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("GroupLabelOptions" Data..=)
+              Prelude.<$> groupLabelOptions,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("SizeLabelOptions" Data..=)
+              Prelude.<$> sizeLabelOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("Tooltip" Data..=) Prelude.<$> tooltip
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TreeMapFieldWells.hs b/gen/Amazonka/QuickSight/Types/TreeMapFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TreeMapFieldWells.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.QuickSight.Types.TreeMapFieldWells
+-- 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.QuickSight.Types.TreeMapFieldWells 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.QuickSight.Types.TreeMapAggregatedFieldWells
+
+-- | The field wells of a tree map.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newTreeMapFieldWells' smart constructor.
+data TreeMapFieldWells = TreeMapFieldWells'
+  { -- | The aggregated field wells of a tree map.
+    treeMapAggregatedFieldWells :: Prelude.Maybe TreeMapAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TreeMapFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'treeMapAggregatedFieldWells', 'treeMapFieldWells_treeMapAggregatedFieldWells' - The aggregated field wells of a tree map.
+newTreeMapFieldWells ::
+  TreeMapFieldWells
+newTreeMapFieldWells =
+  TreeMapFieldWells'
+    { treeMapAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a tree map.
+treeMapFieldWells_treeMapAggregatedFieldWells :: Lens.Lens' TreeMapFieldWells (Prelude.Maybe TreeMapAggregatedFieldWells)
+treeMapFieldWells_treeMapAggregatedFieldWells = Lens.lens (\TreeMapFieldWells' {treeMapAggregatedFieldWells} -> treeMapAggregatedFieldWells) (\s@TreeMapFieldWells' {} a -> s {treeMapAggregatedFieldWells = a} :: TreeMapFieldWells)
+
+instance Data.FromJSON TreeMapFieldWells where
+  parseJSON =
+    Data.withObject
+      "TreeMapFieldWells"
+      ( \x ->
+          TreeMapFieldWells'
+            Prelude.<$> (x Data..:? "TreeMapAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable TreeMapFieldWells where
+  hashWithSalt _salt TreeMapFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` treeMapAggregatedFieldWells
+
+instance Prelude.NFData TreeMapFieldWells where
+  rnf TreeMapFieldWells' {..} =
+    Prelude.rnf treeMapAggregatedFieldWells
+
+instance Data.ToJSON TreeMapFieldWells where
+  toJSON TreeMapFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TreeMapAggregatedFieldWells" Data..=)
+              Prelude.<$> treeMapAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TreeMapSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/TreeMapSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TreeMapSortConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.TreeMapSortConfiguration
+-- 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.QuickSight.Types.TreeMapSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a tree map.
+--
+-- /See:/ 'newTreeMapSortConfiguration' smart constructor.
+data TreeMapSortConfiguration = TreeMapSortConfiguration'
+  { -- | The limit on the number of groups that are displayed.
+    treeMapGroupItemsLimitConfiguration :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of group by fields.
+    treeMapSort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TreeMapSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'treeMapGroupItemsLimitConfiguration', 'treeMapSortConfiguration_treeMapGroupItemsLimitConfiguration' - The limit on the number of groups that are displayed.
+--
+-- 'treeMapSort', 'treeMapSortConfiguration_treeMapSort' - The sort configuration of group by fields.
+newTreeMapSortConfiguration ::
+  TreeMapSortConfiguration
+newTreeMapSortConfiguration =
+  TreeMapSortConfiguration'
+    { treeMapGroupItemsLimitConfiguration =
+        Prelude.Nothing,
+      treeMapSort = Prelude.Nothing
+    }
+
+-- | The limit on the number of groups that are displayed.
+treeMapSortConfiguration_treeMapGroupItemsLimitConfiguration :: Lens.Lens' TreeMapSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+treeMapSortConfiguration_treeMapGroupItemsLimitConfiguration = Lens.lens (\TreeMapSortConfiguration' {treeMapGroupItemsLimitConfiguration} -> treeMapGroupItemsLimitConfiguration) (\s@TreeMapSortConfiguration' {} a -> s {treeMapGroupItemsLimitConfiguration = a} :: TreeMapSortConfiguration)
+
+-- | The sort configuration of group by fields.
+treeMapSortConfiguration_treeMapSort :: Lens.Lens' TreeMapSortConfiguration (Prelude.Maybe [FieldSortOptions])
+treeMapSortConfiguration_treeMapSort = Lens.lens (\TreeMapSortConfiguration' {treeMapSort} -> treeMapSort) (\s@TreeMapSortConfiguration' {} a -> s {treeMapSort = a} :: TreeMapSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TreeMapSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "TreeMapSortConfiguration"
+      ( \x ->
+          TreeMapSortConfiguration'
+            Prelude.<$> (x Data..:? "TreeMapGroupItemsLimitConfiguration")
+            Prelude.<*> (x Data..:? "TreeMapSort" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TreeMapSortConfiguration where
+  hashWithSalt _salt TreeMapSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` treeMapGroupItemsLimitConfiguration
+      `Prelude.hashWithSalt` treeMapSort
+
+instance Prelude.NFData TreeMapSortConfiguration where
+  rnf TreeMapSortConfiguration' {..} =
+    Prelude.rnf treeMapGroupItemsLimitConfiguration
+      `Prelude.seq` Prelude.rnf treeMapSort
+
+instance Data.ToJSON TreeMapSortConfiguration where
+  toJSON TreeMapSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TreeMapGroupItemsLimitConfiguration" Data..=)
+              Prelude.<$> treeMapGroupItemsLimitConfiguration,
+            ("TreeMapSort" Data..=) Prelude.<$> treeMapSort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TreeMapVisual.hs b/gen/Amazonka/QuickSight/Types/TreeMapVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TreeMapVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.TreeMapVisual
+-- 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.QuickSight.Types.TreeMapVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.TreeMapConfiguration
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+
+-- | A tree map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/tree-map.html Using tree maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newTreeMapVisual' smart constructor.
+data TreeMapVisual = TreeMapVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe TreeMapConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TreeMapVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'treeMapVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'treeMapVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'treeMapVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'treeMapVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'treeMapVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'treeMapVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newTreeMapVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  TreeMapVisual
+newTreeMapVisual pVisualId_ =
+  TreeMapVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+treeMapVisual_actions :: Lens.Lens' TreeMapVisual (Prelude.Maybe [VisualCustomAction])
+treeMapVisual_actions = Lens.lens (\TreeMapVisual' {actions} -> actions) (\s@TreeMapVisual' {} a -> s {actions = a} :: TreeMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+treeMapVisual_chartConfiguration :: Lens.Lens' TreeMapVisual (Prelude.Maybe TreeMapConfiguration)
+treeMapVisual_chartConfiguration = Lens.lens (\TreeMapVisual' {chartConfiguration} -> chartConfiguration) (\s@TreeMapVisual' {} a -> s {chartConfiguration = a} :: TreeMapVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+treeMapVisual_columnHierarchies :: Lens.Lens' TreeMapVisual (Prelude.Maybe [ColumnHierarchy])
+treeMapVisual_columnHierarchies = Lens.lens (\TreeMapVisual' {columnHierarchies} -> columnHierarchies) (\s@TreeMapVisual' {} a -> s {columnHierarchies = a} :: TreeMapVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+treeMapVisual_subtitle :: Lens.Lens' TreeMapVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+treeMapVisual_subtitle = Lens.lens (\TreeMapVisual' {subtitle} -> subtitle) (\s@TreeMapVisual' {} a -> s {subtitle = a} :: TreeMapVisual)
+
+-- | The title that is displayed on the visual.
+treeMapVisual_title :: Lens.Lens' TreeMapVisual (Prelude.Maybe VisualTitleLabelOptions)
+treeMapVisual_title = Lens.lens (\TreeMapVisual' {title} -> title) (\s@TreeMapVisual' {} a -> s {title = a} :: TreeMapVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+treeMapVisual_visualId :: Lens.Lens' TreeMapVisual Prelude.Text
+treeMapVisual_visualId = Lens.lens (\TreeMapVisual' {visualId} -> visualId) (\s@TreeMapVisual' {} a -> s {visualId = a} :: TreeMapVisual)
+
+instance Data.FromJSON TreeMapVisual where
+  parseJSON =
+    Data.withObject
+      "TreeMapVisual"
+      ( \x ->
+          TreeMapVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable TreeMapVisual where
+  hashWithSalt _salt TreeMapVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData TreeMapVisual where
+  rnf TreeMapVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON TreeMapVisual where
+  toJSON TreeMapVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TrendArrowOptions.hs b/gen/Amazonka/QuickSight/Types/TrendArrowOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TrendArrowOptions.hs
@@ -0,0 +1,77 @@
+{-# 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.QuickSight.Types.TrendArrowOptions
+-- 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.QuickSight.Types.TrendArrowOptions 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.QuickSight.Types.Visibility
+
+-- | The options that determine the presentation of trend arrows in a KPI
+-- visual.
+--
+-- /See:/ 'newTrendArrowOptions' smart constructor.
+data TrendArrowOptions = TrendArrowOptions'
+  { -- | The visibility of the trend arrows.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrendArrowOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'visibility', 'trendArrowOptions_visibility' - The visibility of the trend arrows.
+newTrendArrowOptions ::
+  TrendArrowOptions
+newTrendArrowOptions =
+  TrendArrowOptions' {visibility = Prelude.Nothing}
+
+-- | The visibility of the trend arrows.
+trendArrowOptions_visibility :: Lens.Lens' TrendArrowOptions (Prelude.Maybe Visibility)
+trendArrowOptions_visibility = Lens.lens (\TrendArrowOptions' {visibility} -> visibility) (\s@TrendArrowOptions' {} a -> s {visibility = a} :: TrendArrowOptions)
+
+instance Data.FromJSON TrendArrowOptions where
+  parseJSON =
+    Data.withObject
+      "TrendArrowOptions"
+      ( \x ->
+          TrendArrowOptions'
+            Prelude.<$> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable TrendArrowOptions where
+  hashWithSalt _salt TrendArrowOptions' {..} =
+    _salt `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData TrendArrowOptions where
+  rnf TrendArrowOptions' {..} = Prelude.rnf visibility
+
+instance Data.ToJSON TrendArrowOptions where
+  toJSON TrendArrowOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Visibility" Data..=) Prelude.<$> visibility]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/TwitterParameters.hs b/gen/Amazonka/QuickSight/Types/TwitterParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/TwitterParameters.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.QuickSight.Types.TwitterParameters
+-- 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.QuickSight.Types.TwitterParameters 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 parameters for Twitter.
+--
+-- /See:/ 'newTwitterParameters' smart constructor.
+data TwitterParameters = TwitterParameters'
+  { -- | Twitter query string.
+    query :: Prelude.Text,
+    -- | Maximum number of rows to query Twitter.
+    maxRows :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TwitterParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'query', 'twitterParameters_query' - Twitter query string.
+--
+-- 'maxRows', 'twitterParameters_maxRows' - Maximum number of rows to query Twitter.
+newTwitterParameters ::
+  -- | 'query'
+  Prelude.Text ->
+  -- | 'maxRows'
+  Prelude.Natural ->
+  TwitterParameters
+newTwitterParameters pQuery_ pMaxRows_ =
+  TwitterParameters'
+    { query = pQuery_,
+      maxRows = pMaxRows_
+    }
+
+-- | Twitter query string.
+twitterParameters_query :: Lens.Lens' TwitterParameters Prelude.Text
+twitterParameters_query = Lens.lens (\TwitterParameters' {query} -> query) (\s@TwitterParameters' {} a -> s {query = a} :: TwitterParameters)
+
+-- | Maximum number of rows to query Twitter.
+twitterParameters_maxRows :: Lens.Lens' TwitterParameters Prelude.Natural
+twitterParameters_maxRows = Lens.lens (\TwitterParameters' {maxRows} -> maxRows) (\s@TwitterParameters' {} a -> s {maxRows = a} :: TwitterParameters)
+
+instance Data.FromJSON TwitterParameters where
+  parseJSON =
+    Data.withObject
+      "TwitterParameters"
+      ( \x ->
+          TwitterParameters'
+            Prelude.<$> (x Data..: "Query")
+            Prelude.<*> (x Data..: "MaxRows")
+      )
+
+instance Prelude.Hashable TwitterParameters where
+  hashWithSalt _salt TwitterParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` query
+      `Prelude.hashWithSalt` maxRows
+
+instance Prelude.NFData TwitterParameters where
+  rnf TwitterParameters' {..} =
+    Prelude.rnf query `Prelude.seq` Prelude.rnf maxRows
+
+instance Data.ToJSON TwitterParameters where
+  toJSON TwitterParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Query" Data..= query),
+            Prelude.Just ("MaxRows" Data..= maxRows)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Typography.hs b/gen/Amazonka/QuickSight/Types/Typography.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Typography.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.QuickSight.Types.Typography
+-- 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.QuickSight.Types.Typography 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.QuickSight.Types.Font
+
+-- | Determines the typography options.
+--
+-- /See:/ 'newTypography' smart constructor.
+data Typography = Typography'
+  { -- | Determines the list of font families.
+    fontFamilies :: Prelude.Maybe [Font]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Typography' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fontFamilies', 'typography_fontFamilies' - Determines the list of font families.
+newTypography ::
+  Typography
+newTypography =
+  Typography' {fontFamilies = Prelude.Nothing}
+
+-- | Determines the list of font families.
+typography_fontFamilies :: Lens.Lens' Typography (Prelude.Maybe [Font])
+typography_fontFamilies = Lens.lens (\Typography' {fontFamilies} -> fontFamilies) (\s@Typography' {} a -> s {fontFamilies = a} :: Typography) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Typography where
+  parseJSON =
+    Data.withObject
+      "Typography"
+      ( \x ->
+          Typography'
+            Prelude.<$> (x Data..:? "FontFamilies" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Typography where
+  hashWithSalt _salt Typography' {..} =
+    _salt `Prelude.hashWithSalt` fontFamilies
+
+instance Prelude.NFData Typography where
+  rnf Typography' {..} = Prelude.rnf fontFamilies
+
+instance Data.ToJSON Typography where
+  toJSON Typography' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("FontFamilies" Data..=) Prelude.<$> fontFamilies]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/UIColorPalette.hs b/gen/Amazonka/QuickSight/Types/UIColorPalette.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/UIColorPalette.hs
@@ -0,0 +1,329 @@
+{-# 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.QuickSight.Types.UIColorPalette
+-- 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.QuickSight.Types.UIColorPalette 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 theme colors that apply to UI and to charts, excluding data colors.
+-- The colors description is a hexadecimal color code that consists of six
+-- alphanumerical characters, prefixed with @#@, for example #37BFF5. For
+-- more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html Using Themes in Amazon QuickSight>
+-- in the /Amazon QuickSight User Guide./
+--
+-- /See:/ 'newUIColorPalette' smart constructor.
+data UIColorPalette = UIColorPalette'
+  { -- | This color is that applies to selected states and buttons.
+    accent :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any text or other elements that
+    -- appear over the accent color.
+    accentForeground :: Prelude.Maybe Prelude.Text,
+    -- | The color that applies to error messages.
+    danger :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any text or other elements that
+    -- appear over the error color.
+    dangerForeground :: Prelude.Maybe Prelude.Text,
+    -- | The color that applies to the names of fields that are identified as
+    -- dimensions.
+    dimension :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any text or other elements that
+    -- appear over the dimension color.
+    dimensionForeground :: Prelude.Maybe Prelude.Text,
+    -- | The color that applies to the names of fields that are identified as
+    -- measures.
+    measure :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any text or other elements that
+    -- appear over the measure color.
+    measureForeground :: Prelude.Maybe Prelude.Text,
+    -- | The background color that applies to visuals and other high emphasis UI.
+    primaryBackground :: Prelude.Maybe Prelude.Text,
+    -- | The color of text and other foreground elements that appear over the
+    -- primary background regions, such as grid lines, borders, table banding,
+    -- icons, and so on.
+    primaryForeground :: Prelude.Maybe Prelude.Text,
+    -- | The background color that applies to the sheet background and sheet
+    -- controls.
+    secondaryBackground :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any sheet title, sheet control
+    -- text, or UI that appears over the secondary background.
+    secondaryForeground :: Prelude.Maybe Prelude.Text,
+    -- | The color that applies to success messages, for example the check mark
+    -- for a successful download.
+    success :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any text or other elements that
+    -- appear over the success color.
+    successForeground :: Prelude.Maybe Prelude.Text,
+    -- | This color that applies to warning and informational messages.
+    warning :: Prelude.Maybe Prelude.Text,
+    -- | The foreground color that applies to any text or other elements that
+    -- appear over the warning color.
+    warningForeground :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UIColorPalette' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accent', 'uIColorPalette_accent' - This color is that applies to selected states and buttons.
+--
+-- 'accentForeground', 'uIColorPalette_accentForeground' - The foreground color that applies to any text or other elements that
+-- appear over the accent color.
+--
+-- 'danger', 'uIColorPalette_danger' - The color that applies to error messages.
+--
+-- 'dangerForeground', 'uIColorPalette_dangerForeground' - The foreground color that applies to any text or other elements that
+-- appear over the error color.
+--
+-- 'dimension', 'uIColorPalette_dimension' - The color that applies to the names of fields that are identified as
+-- dimensions.
+--
+-- 'dimensionForeground', 'uIColorPalette_dimensionForeground' - The foreground color that applies to any text or other elements that
+-- appear over the dimension color.
+--
+-- 'measure', 'uIColorPalette_measure' - The color that applies to the names of fields that are identified as
+-- measures.
+--
+-- 'measureForeground', 'uIColorPalette_measureForeground' - The foreground color that applies to any text or other elements that
+-- appear over the measure color.
+--
+-- 'primaryBackground', 'uIColorPalette_primaryBackground' - The background color that applies to visuals and other high emphasis UI.
+--
+-- 'primaryForeground', 'uIColorPalette_primaryForeground' - The color of text and other foreground elements that appear over the
+-- primary background regions, such as grid lines, borders, table banding,
+-- icons, and so on.
+--
+-- 'secondaryBackground', 'uIColorPalette_secondaryBackground' - The background color that applies to the sheet background and sheet
+-- controls.
+--
+-- 'secondaryForeground', 'uIColorPalette_secondaryForeground' - The foreground color that applies to any sheet title, sheet control
+-- text, or UI that appears over the secondary background.
+--
+-- 'success', 'uIColorPalette_success' - The color that applies to success messages, for example the check mark
+-- for a successful download.
+--
+-- 'successForeground', 'uIColorPalette_successForeground' - The foreground color that applies to any text or other elements that
+-- appear over the success color.
+--
+-- 'warning', 'uIColorPalette_warning' - This color that applies to warning and informational messages.
+--
+-- 'warningForeground', 'uIColorPalette_warningForeground' - The foreground color that applies to any text or other elements that
+-- appear over the warning color.
+newUIColorPalette ::
+  UIColorPalette
+newUIColorPalette =
+  UIColorPalette'
+    { accent = Prelude.Nothing,
+      accentForeground = Prelude.Nothing,
+      danger = Prelude.Nothing,
+      dangerForeground = Prelude.Nothing,
+      dimension = Prelude.Nothing,
+      dimensionForeground = Prelude.Nothing,
+      measure = Prelude.Nothing,
+      measureForeground = Prelude.Nothing,
+      primaryBackground = Prelude.Nothing,
+      primaryForeground = Prelude.Nothing,
+      secondaryBackground = Prelude.Nothing,
+      secondaryForeground = Prelude.Nothing,
+      success = Prelude.Nothing,
+      successForeground = Prelude.Nothing,
+      warning = Prelude.Nothing,
+      warningForeground = Prelude.Nothing
+    }
+
+-- | This color is that applies to selected states and buttons.
+uIColorPalette_accent :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_accent = Lens.lens (\UIColorPalette' {accent} -> accent) (\s@UIColorPalette' {} a -> s {accent = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any text or other elements that
+-- appear over the accent color.
+uIColorPalette_accentForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_accentForeground = Lens.lens (\UIColorPalette' {accentForeground} -> accentForeground) (\s@UIColorPalette' {} a -> s {accentForeground = a} :: UIColorPalette)
+
+-- | The color that applies to error messages.
+uIColorPalette_danger :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_danger = Lens.lens (\UIColorPalette' {danger} -> danger) (\s@UIColorPalette' {} a -> s {danger = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any text or other elements that
+-- appear over the error color.
+uIColorPalette_dangerForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_dangerForeground = Lens.lens (\UIColorPalette' {dangerForeground} -> dangerForeground) (\s@UIColorPalette' {} a -> s {dangerForeground = a} :: UIColorPalette)
+
+-- | The color that applies to the names of fields that are identified as
+-- dimensions.
+uIColorPalette_dimension :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_dimension = Lens.lens (\UIColorPalette' {dimension} -> dimension) (\s@UIColorPalette' {} a -> s {dimension = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any text or other elements that
+-- appear over the dimension color.
+uIColorPalette_dimensionForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_dimensionForeground = Lens.lens (\UIColorPalette' {dimensionForeground} -> dimensionForeground) (\s@UIColorPalette' {} a -> s {dimensionForeground = a} :: UIColorPalette)
+
+-- | The color that applies to the names of fields that are identified as
+-- measures.
+uIColorPalette_measure :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_measure = Lens.lens (\UIColorPalette' {measure} -> measure) (\s@UIColorPalette' {} a -> s {measure = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any text or other elements that
+-- appear over the measure color.
+uIColorPalette_measureForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_measureForeground = Lens.lens (\UIColorPalette' {measureForeground} -> measureForeground) (\s@UIColorPalette' {} a -> s {measureForeground = a} :: UIColorPalette)
+
+-- | The background color that applies to visuals and other high emphasis UI.
+uIColorPalette_primaryBackground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_primaryBackground = Lens.lens (\UIColorPalette' {primaryBackground} -> primaryBackground) (\s@UIColorPalette' {} a -> s {primaryBackground = a} :: UIColorPalette)
+
+-- | The color of text and other foreground elements that appear over the
+-- primary background regions, such as grid lines, borders, table banding,
+-- icons, and so on.
+uIColorPalette_primaryForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_primaryForeground = Lens.lens (\UIColorPalette' {primaryForeground} -> primaryForeground) (\s@UIColorPalette' {} a -> s {primaryForeground = a} :: UIColorPalette)
+
+-- | The background color that applies to the sheet background and sheet
+-- controls.
+uIColorPalette_secondaryBackground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_secondaryBackground = Lens.lens (\UIColorPalette' {secondaryBackground} -> secondaryBackground) (\s@UIColorPalette' {} a -> s {secondaryBackground = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any sheet title, sheet control
+-- text, or UI that appears over the secondary background.
+uIColorPalette_secondaryForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_secondaryForeground = Lens.lens (\UIColorPalette' {secondaryForeground} -> secondaryForeground) (\s@UIColorPalette' {} a -> s {secondaryForeground = a} :: UIColorPalette)
+
+-- | The color that applies to success messages, for example the check mark
+-- for a successful download.
+uIColorPalette_success :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_success = Lens.lens (\UIColorPalette' {success} -> success) (\s@UIColorPalette' {} a -> s {success = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any text or other elements that
+-- appear over the success color.
+uIColorPalette_successForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_successForeground = Lens.lens (\UIColorPalette' {successForeground} -> successForeground) (\s@UIColorPalette' {} a -> s {successForeground = a} :: UIColorPalette)
+
+-- | This color that applies to warning and informational messages.
+uIColorPalette_warning :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_warning = Lens.lens (\UIColorPalette' {warning} -> warning) (\s@UIColorPalette' {} a -> s {warning = a} :: UIColorPalette)
+
+-- | The foreground color that applies to any text or other elements that
+-- appear over the warning color.
+uIColorPalette_warningForeground :: Lens.Lens' UIColorPalette (Prelude.Maybe Prelude.Text)
+uIColorPalette_warningForeground = Lens.lens (\UIColorPalette' {warningForeground} -> warningForeground) (\s@UIColorPalette' {} a -> s {warningForeground = a} :: UIColorPalette)
+
+instance Data.FromJSON UIColorPalette where
+  parseJSON =
+    Data.withObject
+      "UIColorPalette"
+      ( \x ->
+          UIColorPalette'
+            Prelude.<$> (x Data..:? "Accent")
+            Prelude.<*> (x Data..:? "AccentForeground")
+            Prelude.<*> (x Data..:? "Danger")
+            Prelude.<*> (x Data..:? "DangerForeground")
+            Prelude.<*> (x Data..:? "Dimension")
+            Prelude.<*> (x Data..:? "DimensionForeground")
+            Prelude.<*> (x Data..:? "Measure")
+            Prelude.<*> (x Data..:? "MeasureForeground")
+            Prelude.<*> (x Data..:? "PrimaryBackground")
+            Prelude.<*> (x Data..:? "PrimaryForeground")
+            Prelude.<*> (x Data..:? "SecondaryBackground")
+            Prelude.<*> (x Data..:? "SecondaryForeground")
+            Prelude.<*> (x Data..:? "Success")
+            Prelude.<*> (x Data..:? "SuccessForeground")
+            Prelude.<*> (x Data..:? "Warning")
+            Prelude.<*> (x Data..:? "WarningForeground")
+      )
+
+instance Prelude.Hashable UIColorPalette where
+  hashWithSalt _salt UIColorPalette' {..} =
+    _salt
+      `Prelude.hashWithSalt` accent
+      `Prelude.hashWithSalt` accentForeground
+      `Prelude.hashWithSalt` danger
+      `Prelude.hashWithSalt` dangerForeground
+      `Prelude.hashWithSalt` dimension
+      `Prelude.hashWithSalt` dimensionForeground
+      `Prelude.hashWithSalt` measure
+      `Prelude.hashWithSalt` measureForeground
+      `Prelude.hashWithSalt` primaryBackground
+      `Prelude.hashWithSalt` primaryForeground
+      `Prelude.hashWithSalt` secondaryBackground
+      `Prelude.hashWithSalt` secondaryForeground
+      `Prelude.hashWithSalt` success
+      `Prelude.hashWithSalt` successForeground
+      `Prelude.hashWithSalt` warning
+      `Prelude.hashWithSalt` warningForeground
+
+instance Prelude.NFData UIColorPalette where
+  rnf UIColorPalette' {..} =
+    Prelude.rnf accent
+      `Prelude.seq` Prelude.rnf accentForeground
+      `Prelude.seq` Prelude.rnf danger
+      `Prelude.seq` Prelude.rnf dangerForeground
+      `Prelude.seq` Prelude.rnf dimension
+      `Prelude.seq` Prelude.rnf dimensionForeground
+      `Prelude.seq` Prelude.rnf measure
+      `Prelude.seq` Prelude.rnf measureForeground
+      `Prelude.seq` Prelude.rnf primaryBackground
+      `Prelude.seq` Prelude.rnf primaryForeground
+      `Prelude.seq` Prelude.rnf secondaryBackground
+      `Prelude.seq` Prelude.rnf secondaryForeground
+      `Prelude.seq` Prelude.rnf success
+      `Prelude.seq` Prelude.rnf successForeground
+      `Prelude.seq` Prelude.rnf warning
+      `Prelude.seq` Prelude.rnf warningForeground
+
+instance Data.ToJSON UIColorPalette where
+  toJSON UIColorPalette' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Accent" Data..=) Prelude.<$> accent,
+            ("AccentForeground" Data..=)
+              Prelude.<$> accentForeground,
+            ("Danger" Data..=) Prelude.<$> danger,
+            ("DangerForeground" Data..=)
+              Prelude.<$> dangerForeground,
+            ("Dimension" Data..=) Prelude.<$> dimension,
+            ("DimensionForeground" Data..=)
+              Prelude.<$> dimensionForeground,
+            ("Measure" Data..=) Prelude.<$> measure,
+            ("MeasureForeground" Data..=)
+              Prelude.<$> measureForeground,
+            ("PrimaryBackground" Data..=)
+              Prelude.<$> primaryBackground,
+            ("PrimaryForeground" Data..=)
+              Prelude.<$> primaryForeground,
+            ("SecondaryBackground" Data..=)
+              Prelude.<$> secondaryBackground,
+            ("SecondaryForeground" Data..=)
+              Prelude.<$> secondaryForeground,
+            ("Success" Data..=) Prelude.<$> success,
+            ("SuccessForeground" Data..=)
+              Prelude.<$> successForeground,
+            ("Warning" Data..=) Prelude.<$> warning,
+            ("WarningForeground" Data..=)
+              Prelude.<$> warningForeground
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/URLTargetConfiguration.hs b/gen/Amazonka/QuickSight/Types/URLTargetConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/URLTargetConfiguration.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.QuickSight.Types.URLTargetConfiguration
+-- 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.QuickSight.Types.URLTargetConfiguration
+  ( URLTargetConfiguration
+      ( ..,
+        URLTargetConfiguration_NEW_TAB,
+        URLTargetConfiguration_NEW_WINDOW,
+        URLTargetConfiguration_SAME_TAB
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype URLTargetConfiguration = URLTargetConfiguration'
+  { fromURLTargetConfiguration ::
+      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 URLTargetConfiguration_NEW_TAB :: URLTargetConfiguration
+pattern URLTargetConfiguration_NEW_TAB = URLTargetConfiguration' "NEW_TAB"
+
+pattern URLTargetConfiguration_NEW_WINDOW :: URLTargetConfiguration
+pattern URLTargetConfiguration_NEW_WINDOW = URLTargetConfiguration' "NEW_WINDOW"
+
+pattern URLTargetConfiguration_SAME_TAB :: URLTargetConfiguration
+pattern URLTargetConfiguration_SAME_TAB = URLTargetConfiguration' "SAME_TAB"
+
+{-# COMPLETE
+  URLTargetConfiguration_NEW_TAB,
+  URLTargetConfiguration_NEW_WINDOW,
+  URLTargetConfiguration_SAME_TAB,
+  URLTargetConfiguration'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/UnaggregatedField.hs b/gen/Amazonka/QuickSight/Types/UnaggregatedField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/UnaggregatedField.hs
@@ -0,0 +1,114 @@
+{-# 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.QuickSight.Types.UnaggregatedField
+-- 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.QuickSight.Types.UnaggregatedField 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.QuickSight.Types.ColumnIdentifier
+import Amazonka.QuickSight.Types.FormatConfiguration
+
+-- | The unaggregated field for a table.
+--
+-- /See:/ 'newUnaggregatedField' smart constructor.
+data UnaggregatedField = UnaggregatedField'
+  { -- | The format configuration of the field.
+    formatConfiguration :: Prelude.Maybe FormatConfiguration,
+    -- | The custom field ID.
+    fieldId :: Prelude.Text,
+    -- | The column that is used in the @UnaggregatedField@.
+    column :: ColumnIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UnaggregatedField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatConfiguration', 'unaggregatedField_formatConfiguration' - The format configuration of the field.
+--
+-- 'fieldId', 'unaggregatedField_fieldId' - The custom field ID.
+--
+-- 'column', 'unaggregatedField_column' - The column that is used in the @UnaggregatedField@.
+newUnaggregatedField ::
+  -- | 'fieldId'
+  Prelude.Text ->
+  -- | 'column'
+  ColumnIdentifier ->
+  UnaggregatedField
+newUnaggregatedField pFieldId_ pColumn_ =
+  UnaggregatedField'
+    { formatConfiguration =
+        Prelude.Nothing,
+      fieldId = pFieldId_,
+      column = pColumn_
+    }
+
+-- | The format configuration of the field.
+unaggregatedField_formatConfiguration :: Lens.Lens' UnaggregatedField (Prelude.Maybe FormatConfiguration)
+unaggregatedField_formatConfiguration = Lens.lens (\UnaggregatedField' {formatConfiguration} -> formatConfiguration) (\s@UnaggregatedField' {} a -> s {formatConfiguration = a} :: UnaggregatedField)
+
+-- | The custom field ID.
+unaggregatedField_fieldId :: Lens.Lens' UnaggregatedField Prelude.Text
+unaggregatedField_fieldId = Lens.lens (\UnaggregatedField' {fieldId} -> fieldId) (\s@UnaggregatedField' {} a -> s {fieldId = a} :: UnaggregatedField)
+
+-- | The column that is used in the @UnaggregatedField@.
+unaggregatedField_column :: Lens.Lens' UnaggregatedField ColumnIdentifier
+unaggregatedField_column = Lens.lens (\UnaggregatedField' {column} -> column) (\s@UnaggregatedField' {} a -> s {column = a} :: UnaggregatedField)
+
+instance Data.FromJSON UnaggregatedField where
+  parseJSON =
+    Data.withObject
+      "UnaggregatedField"
+      ( \x ->
+          UnaggregatedField'
+            Prelude.<$> (x Data..:? "FormatConfiguration")
+            Prelude.<*> (x Data..: "FieldId")
+            Prelude.<*> (x Data..: "Column")
+      )
+
+instance Prelude.Hashable UnaggregatedField where
+  hashWithSalt _salt UnaggregatedField' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatConfiguration
+      `Prelude.hashWithSalt` fieldId
+      `Prelude.hashWithSalt` column
+
+instance Prelude.NFData UnaggregatedField where
+  rnf UnaggregatedField' {..} =
+    Prelude.rnf formatConfiguration
+      `Prelude.seq` Prelude.rnf fieldId
+      `Prelude.seq` Prelude.rnf column
+
+instance Data.ToJSON UnaggregatedField where
+  toJSON UnaggregatedField' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatConfiguration" Data..=)
+              Prelude.<$> formatConfiguration,
+            Prelude.Just ("FieldId" Data..= fieldId),
+            Prelude.Just ("Column" Data..= column)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/UniqueValuesComputation.hs b/gen/Amazonka/QuickSight/Types/UniqueValuesComputation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/UniqueValuesComputation.hs
@@ -0,0 +1,111 @@
+{-# 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.QuickSight.Types.UniqueValuesComputation
+-- 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.QuickSight.Types.UniqueValuesComputation 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.QuickSight.Types.DimensionField
+
+-- | The unique values computation configuration.
+--
+-- /See:/ 'newUniqueValuesComputation' smart constructor.
+data UniqueValuesComputation = UniqueValuesComputation'
+  { -- | The name of a computation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID for a computation.
+    computationId :: Prelude.Text,
+    -- | The category field that is used in a computation.
+    category :: DimensionField
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UniqueValuesComputation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'uniqueValuesComputation_name' - The name of a computation.
+--
+-- 'computationId', 'uniqueValuesComputation_computationId' - The ID for a computation.
+--
+-- 'category', 'uniqueValuesComputation_category' - The category field that is used in a computation.
+newUniqueValuesComputation ::
+  -- | 'computationId'
+  Prelude.Text ->
+  -- | 'category'
+  DimensionField ->
+  UniqueValuesComputation
+newUniqueValuesComputation pComputationId_ pCategory_ =
+  UniqueValuesComputation'
+    { name = Prelude.Nothing,
+      computationId = pComputationId_,
+      category = pCategory_
+    }
+
+-- | The name of a computation.
+uniqueValuesComputation_name :: Lens.Lens' UniqueValuesComputation (Prelude.Maybe Prelude.Text)
+uniqueValuesComputation_name = Lens.lens (\UniqueValuesComputation' {name} -> name) (\s@UniqueValuesComputation' {} a -> s {name = a} :: UniqueValuesComputation)
+
+-- | The ID for a computation.
+uniqueValuesComputation_computationId :: Lens.Lens' UniqueValuesComputation Prelude.Text
+uniqueValuesComputation_computationId = Lens.lens (\UniqueValuesComputation' {computationId} -> computationId) (\s@UniqueValuesComputation' {} a -> s {computationId = a} :: UniqueValuesComputation)
+
+-- | The category field that is used in a computation.
+uniqueValuesComputation_category :: Lens.Lens' UniqueValuesComputation DimensionField
+uniqueValuesComputation_category = Lens.lens (\UniqueValuesComputation' {category} -> category) (\s@UniqueValuesComputation' {} a -> s {category = a} :: UniqueValuesComputation)
+
+instance Data.FromJSON UniqueValuesComputation where
+  parseJSON =
+    Data.withObject
+      "UniqueValuesComputation"
+      ( \x ->
+          UniqueValuesComputation'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..: "ComputationId")
+            Prelude.<*> (x Data..: "Category")
+      )
+
+instance Prelude.Hashable UniqueValuesComputation where
+  hashWithSalt _salt UniqueValuesComputation' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` computationId
+      `Prelude.hashWithSalt` category
+
+instance Prelude.NFData UniqueValuesComputation where
+  rnf UniqueValuesComputation' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf computationId
+      `Prelude.seq` Prelude.rnf category
+
+instance Data.ToJSON UniqueValuesComputation where
+  toJSON UniqueValuesComputation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            Prelude.Just ("ComputationId" Data..= computationId),
+            Prelude.Just ("Category" Data..= category)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/UntagColumnOperation.hs b/gen/Amazonka/QuickSight/Types/UntagColumnOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/UntagColumnOperation.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.QuickSight.Types.UntagColumnOperation
+-- 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.QuickSight.Types.UntagColumnOperation 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.QuickSight.Types.ColumnTagName
+
+-- | A transform operation that removes tags associated with a column.
+--
+-- /See:/ 'newUntagColumnOperation' smart constructor.
+data UntagColumnOperation = UntagColumnOperation'
+  { -- | The column that this operation acts on.
+    columnName :: Prelude.Text,
+    -- | The column tags to remove from this column.
+    tagNames :: [ColumnTagName]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagColumnOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnName', 'untagColumnOperation_columnName' - The column that this operation acts on.
+--
+-- 'tagNames', 'untagColumnOperation_tagNames' - The column tags to remove from this column.
+newUntagColumnOperation ::
+  -- | 'columnName'
+  Prelude.Text ->
+  UntagColumnOperation
+newUntagColumnOperation pColumnName_ =
+  UntagColumnOperation'
+    { columnName = pColumnName_,
+      tagNames = Prelude.mempty
+    }
+
+-- | The column that this operation acts on.
+untagColumnOperation_columnName :: Lens.Lens' UntagColumnOperation Prelude.Text
+untagColumnOperation_columnName = Lens.lens (\UntagColumnOperation' {columnName} -> columnName) (\s@UntagColumnOperation' {} a -> s {columnName = a} :: UntagColumnOperation)
+
+-- | The column tags to remove from this column.
+untagColumnOperation_tagNames :: Lens.Lens' UntagColumnOperation [ColumnTagName]
+untagColumnOperation_tagNames = Lens.lens (\UntagColumnOperation' {tagNames} -> tagNames) (\s@UntagColumnOperation' {} a -> s {tagNames = a} :: UntagColumnOperation) Prelude.. Lens.coerced
+
+instance Data.FromJSON UntagColumnOperation where
+  parseJSON =
+    Data.withObject
+      "UntagColumnOperation"
+      ( \x ->
+          UntagColumnOperation'
+            Prelude.<$> (x Data..: "ColumnName")
+            Prelude.<*> (x Data..:? "TagNames" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable UntagColumnOperation where
+  hashWithSalt _salt UntagColumnOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnName
+      `Prelude.hashWithSalt` tagNames
+
+instance Prelude.NFData UntagColumnOperation where
+  rnf UntagColumnOperation' {..} =
+    Prelude.rnf columnName
+      `Prelude.seq` Prelude.rnf tagNames
+
+instance Data.ToJSON UntagColumnOperation where
+  toJSON UntagColumnOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ColumnName" Data..= columnName),
+            Prelude.Just ("TagNames" Data..= tagNames)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/UploadSettings.hs b/gen/Amazonka/QuickSight/Types/UploadSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/UploadSettings.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.UploadSettings
+-- 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.QuickSight.Types.UploadSettings 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.QuickSight.Types.FileFormat
+import Amazonka.QuickSight.Types.TextQualifier
+
+-- | Information about the format for a source file or files.
+--
+-- /See:/ 'newUploadSettings' smart constructor.
+data UploadSettings = UploadSettings'
+  { -- | Whether the file has a header row, or the files each have a header row.
+    containsHeader :: Prelude.Maybe Prelude.Bool,
+    -- | The delimiter between values in the file.
+    delimiter :: Prelude.Maybe Prelude.Text,
+    -- | File format.
+    format :: Prelude.Maybe FileFormat,
+    -- | A row number to start reading data from.
+    startFromRow :: Prelude.Maybe Prelude.Natural,
+    -- | Text qualifier.
+    textQualifier :: Prelude.Maybe TextQualifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UploadSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'containsHeader', 'uploadSettings_containsHeader' - Whether the file has a header row, or the files each have a header row.
+--
+-- 'delimiter', 'uploadSettings_delimiter' - The delimiter between values in the file.
+--
+-- 'format', 'uploadSettings_format' - File format.
+--
+-- 'startFromRow', 'uploadSettings_startFromRow' - A row number to start reading data from.
+--
+-- 'textQualifier', 'uploadSettings_textQualifier' - Text qualifier.
+newUploadSettings ::
+  UploadSettings
+newUploadSettings =
+  UploadSettings'
+    { containsHeader = Prelude.Nothing,
+      delimiter = Prelude.Nothing,
+      format = Prelude.Nothing,
+      startFromRow = Prelude.Nothing,
+      textQualifier = Prelude.Nothing
+    }
+
+-- | Whether the file has a header row, or the files each have a header row.
+uploadSettings_containsHeader :: Lens.Lens' UploadSettings (Prelude.Maybe Prelude.Bool)
+uploadSettings_containsHeader = Lens.lens (\UploadSettings' {containsHeader} -> containsHeader) (\s@UploadSettings' {} a -> s {containsHeader = a} :: UploadSettings)
+
+-- | The delimiter between values in the file.
+uploadSettings_delimiter :: Lens.Lens' UploadSettings (Prelude.Maybe Prelude.Text)
+uploadSettings_delimiter = Lens.lens (\UploadSettings' {delimiter} -> delimiter) (\s@UploadSettings' {} a -> s {delimiter = a} :: UploadSettings)
+
+-- | File format.
+uploadSettings_format :: Lens.Lens' UploadSettings (Prelude.Maybe FileFormat)
+uploadSettings_format = Lens.lens (\UploadSettings' {format} -> format) (\s@UploadSettings' {} a -> s {format = a} :: UploadSettings)
+
+-- | A row number to start reading data from.
+uploadSettings_startFromRow :: Lens.Lens' UploadSettings (Prelude.Maybe Prelude.Natural)
+uploadSettings_startFromRow = Lens.lens (\UploadSettings' {startFromRow} -> startFromRow) (\s@UploadSettings' {} a -> s {startFromRow = a} :: UploadSettings)
+
+-- | Text qualifier.
+uploadSettings_textQualifier :: Lens.Lens' UploadSettings (Prelude.Maybe TextQualifier)
+uploadSettings_textQualifier = Lens.lens (\UploadSettings' {textQualifier} -> textQualifier) (\s@UploadSettings' {} a -> s {textQualifier = a} :: UploadSettings)
+
+instance Data.FromJSON UploadSettings where
+  parseJSON =
+    Data.withObject
+      "UploadSettings"
+      ( \x ->
+          UploadSettings'
+            Prelude.<$> (x Data..:? "ContainsHeader")
+            Prelude.<*> (x Data..:? "Delimiter")
+            Prelude.<*> (x Data..:? "Format")
+            Prelude.<*> (x Data..:? "StartFromRow")
+            Prelude.<*> (x Data..:? "TextQualifier")
+      )
+
+instance Prelude.Hashable UploadSettings where
+  hashWithSalt _salt UploadSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` containsHeader
+      `Prelude.hashWithSalt` delimiter
+      `Prelude.hashWithSalt` format
+      `Prelude.hashWithSalt` startFromRow
+      `Prelude.hashWithSalt` textQualifier
+
+instance Prelude.NFData UploadSettings where
+  rnf UploadSettings' {..} =
+    Prelude.rnf containsHeader
+      `Prelude.seq` Prelude.rnf delimiter
+      `Prelude.seq` Prelude.rnf format
+      `Prelude.seq` Prelude.rnf startFromRow
+      `Prelude.seq` Prelude.rnf textQualifier
+
+instance Data.ToJSON UploadSettings where
+  toJSON UploadSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainsHeader" Data..=)
+              Prelude.<$> containsHeader,
+            ("Delimiter" Data..=) Prelude.<$> delimiter,
+            ("Format" Data..=) Prelude.<$> format,
+            ("StartFromRow" Data..=) Prelude.<$> startFromRow,
+            ("TextQualifier" Data..=) Prelude.<$> textQualifier
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/User.hs b/gen/Amazonka/QuickSight/Types/User.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/User.hs
@@ -0,0 +1,270 @@
+{-# 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.QuickSight.Types.User
+-- 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.QuickSight.Types.User 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.QuickSight.Types.IdentityType
+import Amazonka.QuickSight.Types.UserRole
+
+-- | A registered user of Amazon QuickSight.
+--
+-- /See:/ 'newUser' smart constructor.
+data User = User'
+  { -- | The active status of user. When you create an Amazon QuickSight user
+    -- that’s not an IAM user or an Active Directory user, that user is
+    -- inactive until they sign in and provide a password.
+    active :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) for the user.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The custom permissions profile associated with this user.
+    customPermissionsName :: Prelude.Maybe Prelude.Text,
+    -- | The user\'s email address.
+    email :: Prelude.Maybe Prelude.Text,
+    -- | The type of supported external login provider that provides identity to
+    -- let the user federate into Amazon QuickSight with an associated IAM
+    -- role. The type can be one of the following.
+    --
+    -- -   @COGNITO@: Amazon Cognito. The provider URL is
+    --     cognito-identity.amazonaws.com.
+    --
+    -- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider.
+    externalLoginFederationProviderType :: Prelude.Maybe Prelude.Text,
+    -- | The URL of the external login provider.
+    externalLoginFederationProviderUrl :: Prelude.Maybe Prelude.Text,
+    -- | The identity ID for the user in the external login provider.
+    externalLoginId :: Prelude.Maybe Prelude.Text,
+    -- | The type of identity authentication used by the user.
+    identityType :: Prelude.Maybe IdentityType,
+    -- | The principal ID of the user.
+    principalId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon QuickSight role for the user. The user role can be one of the
+    -- following:.
+    --
+    -- -   @READER@: A user who has read-only access to dashboards.
+    --
+    -- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+    --     and dashboards.
+    --
+    -- -   @ADMIN@: A user who is an author, who can also manage Amazon Amazon
+    --     QuickSight settings.
+    --
+    -- -   @RESTRICTED_READER@: This role isn\'t currently available for use.
+    --
+    -- -   @RESTRICTED_AUTHOR@: This role isn\'t currently available for use.
+    role' :: Prelude.Maybe UserRole,
+    -- | The user\'s user name. This value is required if you are registering a
+    -- user that will be managed in Amazon QuickSight. In the output, the value
+    -- for @UserName@ is @N\/A@ when the value for @IdentityType@ is @IAM@ and
+    -- the corresponding IAM user is deleted.
+    userName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'User' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'active', 'user_active' - The active status of user. When you create an Amazon QuickSight user
+-- that’s not an IAM user or an Active Directory user, that user is
+-- inactive until they sign in and provide a password.
+--
+-- 'arn', 'user_arn' - The Amazon Resource Name (ARN) for the user.
+--
+-- 'customPermissionsName', 'user_customPermissionsName' - The custom permissions profile associated with this user.
+--
+-- 'email', 'user_email' - The user\'s email address.
+--
+-- 'externalLoginFederationProviderType', 'user_externalLoginFederationProviderType' - The type of supported external login provider that provides identity to
+-- let the user federate into Amazon QuickSight with an associated IAM
+-- role. The type can be one of the following.
+--
+-- -   @COGNITO@: Amazon Cognito. The provider URL is
+--     cognito-identity.amazonaws.com.
+--
+-- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider.
+--
+-- 'externalLoginFederationProviderUrl', 'user_externalLoginFederationProviderUrl' - The URL of the external login provider.
+--
+-- 'externalLoginId', 'user_externalLoginId' - The identity ID for the user in the external login provider.
+--
+-- 'identityType', 'user_identityType' - The type of identity authentication used by the user.
+--
+-- 'principalId', 'user_principalId' - The principal ID of the user.
+--
+-- 'role'', 'user_role' - The Amazon QuickSight role for the user. The user role can be one of the
+-- following:.
+--
+-- -   @READER@: A user who has read-only access to dashboards.
+--
+-- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+--     and dashboards.
+--
+-- -   @ADMIN@: A user who is an author, who can also manage Amazon Amazon
+--     QuickSight settings.
+--
+-- -   @RESTRICTED_READER@: This role isn\'t currently available for use.
+--
+-- -   @RESTRICTED_AUTHOR@: This role isn\'t currently available for use.
+--
+-- 'userName', 'user_userName' - The user\'s user name. This value is required if you are registering a
+-- user that will be managed in Amazon QuickSight. In the output, the value
+-- for @UserName@ is @N\/A@ when the value for @IdentityType@ is @IAM@ and
+-- the corresponding IAM user is deleted.
+newUser ::
+  User
+newUser =
+  User'
+    { active = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      customPermissionsName = Prelude.Nothing,
+      email = Prelude.Nothing,
+      externalLoginFederationProviderType =
+        Prelude.Nothing,
+      externalLoginFederationProviderUrl = Prelude.Nothing,
+      externalLoginId = Prelude.Nothing,
+      identityType = Prelude.Nothing,
+      principalId = Prelude.Nothing,
+      role' = Prelude.Nothing,
+      userName = Prelude.Nothing
+    }
+
+-- | The active status of user. When you create an Amazon QuickSight user
+-- that’s not an IAM user or an Active Directory user, that user is
+-- inactive until they sign in and provide a password.
+user_active :: Lens.Lens' User (Prelude.Maybe Prelude.Bool)
+user_active = Lens.lens (\User' {active} -> active) (\s@User' {} a -> s {active = a} :: User)
+
+-- | The Amazon Resource Name (ARN) for the user.
+user_arn :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_arn = Lens.lens (\User' {arn} -> arn) (\s@User' {} a -> s {arn = a} :: User)
+
+-- | The custom permissions profile associated with this user.
+user_customPermissionsName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_customPermissionsName = Lens.lens (\User' {customPermissionsName} -> customPermissionsName) (\s@User' {} a -> s {customPermissionsName = a} :: User)
+
+-- | The user\'s email address.
+user_email :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_email = Lens.lens (\User' {email} -> email) (\s@User' {} a -> s {email = a} :: User)
+
+-- | The type of supported external login provider that provides identity to
+-- let the user federate into Amazon QuickSight with an associated IAM
+-- role. The type can be one of the following.
+--
+-- -   @COGNITO@: Amazon Cognito. The provider URL is
+--     cognito-identity.amazonaws.com.
+--
+-- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider.
+user_externalLoginFederationProviderType :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_externalLoginFederationProviderType = Lens.lens (\User' {externalLoginFederationProviderType} -> externalLoginFederationProviderType) (\s@User' {} a -> s {externalLoginFederationProviderType = a} :: User)
+
+-- | The URL of the external login provider.
+user_externalLoginFederationProviderUrl :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_externalLoginFederationProviderUrl = Lens.lens (\User' {externalLoginFederationProviderUrl} -> externalLoginFederationProviderUrl) (\s@User' {} a -> s {externalLoginFederationProviderUrl = a} :: User)
+
+-- | The identity ID for the user in the external login provider.
+user_externalLoginId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_externalLoginId = Lens.lens (\User' {externalLoginId} -> externalLoginId) (\s@User' {} a -> s {externalLoginId = a} :: User)
+
+-- | The type of identity authentication used by the user.
+user_identityType :: Lens.Lens' User (Prelude.Maybe IdentityType)
+user_identityType = Lens.lens (\User' {identityType} -> identityType) (\s@User' {} a -> s {identityType = a} :: User)
+
+-- | The principal ID of the user.
+user_principalId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_principalId = Lens.lens (\User' {principalId} -> principalId) (\s@User' {} a -> s {principalId = a} :: User)
+
+-- | The Amazon QuickSight role for the user. The user role can be one of the
+-- following:.
+--
+-- -   @READER@: A user who has read-only access to dashboards.
+--
+-- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+--     and dashboards.
+--
+-- -   @ADMIN@: A user who is an author, who can also manage Amazon Amazon
+--     QuickSight settings.
+--
+-- -   @RESTRICTED_READER@: This role isn\'t currently available for use.
+--
+-- -   @RESTRICTED_AUTHOR@: This role isn\'t currently available for use.
+user_role :: Lens.Lens' User (Prelude.Maybe UserRole)
+user_role = Lens.lens (\User' {role'} -> role') (\s@User' {} a -> s {role' = a} :: User)
+
+-- | The user\'s user name. This value is required if you are registering a
+-- user that will be managed in Amazon QuickSight. In the output, the value
+-- for @UserName@ is @N\/A@ when the value for @IdentityType@ is @IAM@ and
+-- the corresponding IAM user is deleted.
+user_userName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_userName = Lens.lens (\User' {userName} -> userName) (\s@User' {} a -> s {userName = a} :: User)
+
+instance Data.FromJSON User where
+  parseJSON =
+    Data.withObject
+      "User"
+      ( \x ->
+          User'
+            Prelude.<$> (x Data..:? "Active")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CustomPermissionsName")
+            Prelude.<*> (x Data..:? "Email")
+            Prelude.<*> (x Data..:? "ExternalLoginFederationProviderType")
+            Prelude.<*> (x Data..:? "ExternalLoginFederationProviderUrl")
+            Prelude.<*> (x Data..:? "ExternalLoginId")
+            Prelude.<*> (x Data..:? "IdentityType")
+            Prelude.<*> (x Data..:? "PrincipalId")
+            Prelude.<*> (x Data..:? "Role")
+            Prelude.<*> (x Data..:? "UserName")
+      )
+
+instance Prelude.Hashable User where
+  hashWithSalt _salt User' {..} =
+    _salt
+      `Prelude.hashWithSalt` active
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` customPermissionsName
+      `Prelude.hashWithSalt` email
+      `Prelude.hashWithSalt` externalLoginFederationProviderType
+      `Prelude.hashWithSalt` externalLoginFederationProviderUrl
+      `Prelude.hashWithSalt` externalLoginId
+      `Prelude.hashWithSalt` identityType
+      `Prelude.hashWithSalt` principalId
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` userName
+
+instance Prelude.NFData User where
+  rnf User' {..} =
+    Prelude.rnf active
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf customPermissionsName
+      `Prelude.seq` Prelude.rnf email
+      `Prelude.seq` Prelude.rnf externalLoginFederationProviderType
+      `Prelude.seq` Prelude.rnf externalLoginFederationProviderUrl
+      `Prelude.seq` Prelude.rnf externalLoginId
+      `Prelude.seq` Prelude.rnf identityType
+      `Prelude.seq` Prelude.rnf principalId
+      `Prelude.seq` Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf userName
diff --git a/gen/Amazonka/QuickSight/Types/UserRole.hs b/gen/Amazonka/QuickSight/Types/UserRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/UserRole.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.QuickSight.Types.UserRole
+-- 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.QuickSight.Types.UserRole
+  ( UserRole
+      ( ..,
+        UserRole_ADMIN,
+        UserRole_AUTHOR,
+        UserRole_READER,
+        UserRole_RESTRICTED_AUTHOR,
+        UserRole_RESTRICTED_READER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserRole = UserRole'
+  { fromUserRole ::
+      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 UserRole_ADMIN :: UserRole
+pattern UserRole_ADMIN = UserRole' "ADMIN"
+
+pattern UserRole_AUTHOR :: UserRole
+pattern UserRole_AUTHOR = UserRole' "AUTHOR"
+
+pattern UserRole_READER :: UserRole
+pattern UserRole_READER = UserRole' "READER"
+
+pattern UserRole_RESTRICTED_AUTHOR :: UserRole
+pattern UserRole_RESTRICTED_AUTHOR = UserRole' "RESTRICTED_AUTHOR"
+
+pattern UserRole_RESTRICTED_READER :: UserRole
+pattern UserRole_RESTRICTED_READER = UserRole' "RESTRICTED_READER"
+
+{-# COMPLETE
+  UserRole_ADMIN,
+  UserRole_AUTHOR,
+  UserRole_READER,
+  UserRole_RESTRICTED_AUTHOR,
+  UserRole_RESTRICTED_READER,
+  UserRole'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/ValueWhenUnsetOption.hs b/gen/Amazonka/QuickSight/Types/ValueWhenUnsetOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/ValueWhenUnsetOption.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.QuickSight.Types.ValueWhenUnsetOption
+-- 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.QuickSight.Types.ValueWhenUnsetOption
+  ( ValueWhenUnsetOption
+      ( ..,
+        ValueWhenUnsetOption_NULL,
+        ValueWhenUnsetOption_RECOMMENDED_VALUE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ValueWhenUnsetOption = ValueWhenUnsetOption'
+  { fromValueWhenUnsetOption ::
+      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 ValueWhenUnsetOption_NULL :: ValueWhenUnsetOption
+pattern ValueWhenUnsetOption_NULL = ValueWhenUnsetOption' "NULL"
+
+pattern ValueWhenUnsetOption_RECOMMENDED_VALUE :: ValueWhenUnsetOption
+pattern ValueWhenUnsetOption_RECOMMENDED_VALUE = ValueWhenUnsetOption' "RECOMMENDED_VALUE"
+
+{-# COMPLETE
+  ValueWhenUnsetOption_NULL,
+  ValueWhenUnsetOption_RECOMMENDED_VALUE,
+  ValueWhenUnsetOption'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/VerticalTextAlignment.hs b/gen/Amazonka/QuickSight/Types/VerticalTextAlignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VerticalTextAlignment.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.QuickSight.Types.VerticalTextAlignment
+-- 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.QuickSight.Types.VerticalTextAlignment
+  ( VerticalTextAlignment
+      ( ..,
+        VerticalTextAlignment_BOTTOM,
+        VerticalTextAlignment_MIDDLE,
+        VerticalTextAlignment_TOP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VerticalTextAlignment = VerticalTextAlignment'
+  { fromVerticalTextAlignment ::
+      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 VerticalTextAlignment_BOTTOM :: VerticalTextAlignment
+pattern VerticalTextAlignment_BOTTOM = VerticalTextAlignment' "BOTTOM"
+
+pattern VerticalTextAlignment_MIDDLE :: VerticalTextAlignment
+pattern VerticalTextAlignment_MIDDLE = VerticalTextAlignment' "MIDDLE"
+
+pattern VerticalTextAlignment_TOP :: VerticalTextAlignment
+pattern VerticalTextAlignment_TOP = VerticalTextAlignment' "TOP"
+
+{-# COMPLETE
+  VerticalTextAlignment_BOTTOM,
+  VerticalTextAlignment_MIDDLE,
+  VerticalTextAlignment_TOP,
+  VerticalTextAlignment'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/Visibility.hs b/gen/Amazonka/QuickSight/Types/Visibility.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Visibility.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.QuickSight.Types.Visibility
+-- 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.QuickSight.Types.Visibility
+  ( Visibility
+      ( ..,
+        Visibility_HIDDEN,
+        Visibility_VISIBLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Visibility = Visibility'
+  { fromVisibility ::
+      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 Visibility_HIDDEN :: Visibility
+pattern Visibility_HIDDEN = Visibility' "HIDDEN"
+
+pattern Visibility_VISIBLE :: Visibility
+pattern Visibility_VISIBLE = Visibility' "VISIBLE"
+
+{-# COMPLETE
+  Visibility_HIDDEN,
+  Visibility_VISIBLE,
+  Visibility'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/VisibleRangeOptions.hs b/gen/Amazonka/QuickSight/Types/VisibleRangeOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisibleRangeOptions.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.VisibleRangeOptions
+-- 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.QuickSight.Types.VisibleRangeOptions 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.QuickSight.Types.PercentVisibleRange
+
+-- | The range options for the data zoom scroll bar.
+--
+-- /See:/ 'newVisibleRangeOptions' smart constructor.
+data VisibleRangeOptions = VisibleRangeOptions'
+  { -- | The percent range in the visible range.
+    percentRange :: Prelude.Maybe PercentVisibleRange
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VisibleRangeOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'percentRange', 'visibleRangeOptions_percentRange' - The percent range in the visible range.
+newVisibleRangeOptions ::
+  VisibleRangeOptions
+newVisibleRangeOptions =
+  VisibleRangeOptions'
+    { percentRange =
+        Prelude.Nothing
+    }
+
+-- | The percent range in the visible range.
+visibleRangeOptions_percentRange :: Lens.Lens' VisibleRangeOptions (Prelude.Maybe PercentVisibleRange)
+visibleRangeOptions_percentRange = Lens.lens (\VisibleRangeOptions' {percentRange} -> percentRange) (\s@VisibleRangeOptions' {} a -> s {percentRange = a} :: VisibleRangeOptions)
+
+instance Data.FromJSON VisibleRangeOptions where
+  parseJSON =
+    Data.withObject
+      "VisibleRangeOptions"
+      ( \x ->
+          VisibleRangeOptions'
+            Prelude.<$> (x Data..:? "PercentRange")
+      )
+
+instance Prelude.Hashable VisibleRangeOptions where
+  hashWithSalt _salt VisibleRangeOptions' {..} =
+    _salt `Prelude.hashWithSalt` percentRange
+
+instance Prelude.NFData VisibleRangeOptions where
+  rnf VisibleRangeOptions' {..} =
+    Prelude.rnf percentRange
+
+instance Data.ToJSON VisibleRangeOptions where
+  toJSON VisibleRangeOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("PercentRange" Data..=) Prelude.<$> percentRange]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/Visual.hs b/gen/Amazonka/QuickSight/Types/Visual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/Visual.hs
@@ -0,0 +1,646 @@
+{-# 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.QuickSight.Types.Visual
+-- 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.QuickSight.Types.Visual 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.QuickSight.Types.BarChartVisual
+import Amazonka.QuickSight.Types.BoxPlotVisual
+import Amazonka.QuickSight.Types.ComboChartVisual
+import Amazonka.QuickSight.Types.CustomContentVisual
+import Amazonka.QuickSight.Types.EmptyVisual
+import Amazonka.QuickSight.Types.FilledMapVisual
+import Amazonka.QuickSight.Types.FunnelChartVisual
+import Amazonka.QuickSight.Types.GaugeChartVisual
+import Amazonka.QuickSight.Types.GeospatialMapVisual
+import Amazonka.QuickSight.Types.HeatMapVisual
+import Amazonka.QuickSight.Types.HistogramVisual
+import Amazonka.QuickSight.Types.InsightVisual
+import Amazonka.QuickSight.Types.KPIVisual
+import Amazonka.QuickSight.Types.LineChartVisual
+import Amazonka.QuickSight.Types.PieChartVisual
+import Amazonka.QuickSight.Types.PivotTableVisual
+import Amazonka.QuickSight.Types.SankeyDiagramVisual
+import Amazonka.QuickSight.Types.ScatterPlotVisual
+import Amazonka.QuickSight.Types.TableVisual
+import Amazonka.QuickSight.Types.TreeMapVisual
+import Amazonka.QuickSight.Types.WaterfallVisual
+import Amazonka.QuickSight.Types.WordCloudVisual
+
+-- | A visual displayed on a sheet in an analysis, dashboard, or template.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newVisual' smart constructor.
+data Visual = Visual'
+  { -- | A bar chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/bar-charts.html Using bar charts>
+    -- in the /Amazon QuickSight User Guide/.
+    barChartVisual :: Prelude.Maybe BarChartVisual,
+    -- | A box plot.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/box-plots.html Using box plots>
+    -- in the /Amazon QuickSight User Guide/.
+    boxPlotVisual :: Prelude.Maybe BoxPlotVisual,
+    -- | A combo chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/combo-charts.html Using combo charts>
+    -- in the /Amazon QuickSight User Guide/.
+    comboChartVisual :: Prelude.Maybe ComboChartVisual,
+    -- | A visual that contains custom content.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/custom-visual-content.html Using custom visual content>
+    -- in the /Amazon QuickSight User Guide/.
+    customContentVisual :: Prelude.Maybe CustomContentVisual,
+    -- | An empty visual.
+    emptyVisual :: Prelude.Maybe EmptyVisual,
+    -- | A filled map.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/filled-maps.html Creating filled maps>
+    -- in the /Amazon QuickSight User Guide/.
+    filledMapVisual :: Prelude.Maybe FilledMapVisual,
+    -- | A funnel chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/funnel-visual-content.html Using funnel charts>
+    -- in the /Amazon QuickSight User Guide/.
+    funnelChartVisual :: Prelude.Maybe FunnelChartVisual,
+    -- | A gauge chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/gauge-chart.html Using gauge charts>
+    -- in the /Amazon QuickSight User Guide/.
+    gaugeChartVisual :: Prelude.Maybe GaugeChartVisual,
+    -- | A geospatial map or a points on map visual.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/point-maps.html Creating point maps>
+    -- in the /Amazon QuickSight User Guide/.
+    geospatialMapVisual :: Prelude.Maybe GeospatialMapVisual,
+    -- | A heat map.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/heat-map.html Using heat maps>
+    -- in the /Amazon QuickSight User Guide/.
+    heatMapVisual :: Prelude.Maybe HeatMapVisual,
+    -- | A histogram.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/histogram-charts.html Using histograms>
+    -- in the /Amazon QuickSight User Guide/.
+    histogramVisual :: Prelude.Maybe HistogramVisual,
+    -- | An insight visual.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/computational-insights.html Working with insights>
+    -- in the /Amazon QuickSight User Guide/.
+    insightVisual :: Prelude.Maybe InsightVisual,
+    -- | A key performance indicator (KPI).
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/kpi.html Using KPIs>
+    -- in the /Amazon QuickSight User Guide/.
+    kPIVisual :: Prelude.Maybe KPIVisual,
+    -- | A line chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/line-charts.html Using line charts>
+    -- in the /Amazon QuickSight User Guide/.
+    lineChartVisual :: Prelude.Maybe LineChartVisual,
+    -- | A pie or donut chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/pie-chart.html Using pie charts>
+    -- in the /Amazon QuickSight User Guide/.
+    pieChartVisual :: Prelude.Maybe PieChartVisual,
+    -- | A pivot table.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/pivot-table.html Using pivot tables>
+    -- in the /Amazon QuickSight User Guide/.
+    pivotTableVisual :: Prelude.Maybe PivotTableVisual,
+    -- | A sankey diagram.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/sankey-diagram.html Using Sankey diagrams>
+    -- in the /Amazon QuickSight User Guide/.
+    sankeyDiagramVisual :: Prelude.Maybe SankeyDiagramVisual,
+    -- | A scatter plot.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/scatter-plot.html Using scatter plots>
+    -- in the /Amazon QuickSight User Guide/.
+    scatterPlotVisual :: Prelude.Maybe ScatterPlotVisual,
+    -- | A table visual.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/tabular.html Using tables as visuals>
+    -- in the /Amazon QuickSight User Guide/.
+    tableVisual :: Prelude.Maybe TableVisual,
+    -- | A tree map.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/tree-map.html Using tree maps>
+    -- in the /Amazon QuickSight User Guide/.
+    treeMapVisual :: Prelude.Maybe TreeMapVisual,
+    -- | A waterfall chart.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/waterfall-chart.html Using waterfall charts>
+    -- in the /Amazon QuickSight User Guide/.
+    waterfallVisual :: Prelude.Maybe WaterfallVisual,
+    -- | A word cloud.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/quicksight/latest/user/word-cloud.html Using word clouds>
+    -- in the /Amazon QuickSight User Guide/.
+    wordCloudVisual :: Prelude.Maybe WordCloudVisual
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Visual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'barChartVisual', 'visual_barChartVisual' - A bar chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/bar-charts.html Using bar charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'boxPlotVisual', 'visual_boxPlotVisual' - A box plot.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/box-plots.html Using box plots>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'comboChartVisual', 'visual_comboChartVisual' - A combo chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/combo-charts.html Using combo charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'customContentVisual', 'visual_customContentVisual' - A visual that contains custom content.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/custom-visual-content.html Using custom visual content>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'emptyVisual', 'visual_emptyVisual' - An empty visual.
+--
+-- 'filledMapVisual', 'visual_filledMapVisual' - A filled map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filled-maps.html Creating filled maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'funnelChartVisual', 'visual_funnelChartVisual' - A funnel chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/funnel-visual-content.html Using funnel charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'gaugeChartVisual', 'visual_gaugeChartVisual' - A gauge chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/gauge-chart.html Using gauge charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'geospatialMapVisual', 'visual_geospatialMapVisual' - A geospatial map or a points on map visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/point-maps.html Creating point maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'heatMapVisual', 'visual_heatMapVisual' - A heat map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/heat-map.html Using heat maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'histogramVisual', 'visual_histogramVisual' - A histogram.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/histogram-charts.html Using histograms>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'insightVisual', 'visual_insightVisual' - An insight visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/computational-insights.html Working with insights>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'kPIVisual', 'visual_kPIVisual' - A key performance indicator (KPI).
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/kpi.html Using KPIs>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'lineChartVisual', 'visual_lineChartVisual' - A line chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/line-charts.html Using line charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'pieChartVisual', 'visual_pieChartVisual' - A pie or donut chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/pie-chart.html Using pie charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'pivotTableVisual', 'visual_pivotTableVisual' - A pivot table.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/pivot-table.html Using pivot tables>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'sankeyDiagramVisual', 'visual_sankeyDiagramVisual' - A sankey diagram.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/sankey-diagram.html Using Sankey diagrams>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'scatterPlotVisual', 'visual_scatterPlotVisual' - A scatter plot.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/scatter-plot.html Using scatter plots>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'tableVisual', 'visual_tableVisual' - A table visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/tabular.html Using tables as visuals>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'treeMapVisual', 'visual_treeMapVisual' - A tree map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/tree-map.html Using tree maps>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'waterfallVisual', 'visual_waterfallVisual' - A waterfall chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/waterfall-chart.html Using waterfall charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- 'wordCloudVisual', 'visual_wordCloudVisual' - A word cloud.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/word-cloud.html Using word clouds>
+-- in the /Amazon QuickSight User Guide/.
+newVisual ::
+  Visual
+newVisual =
+  Visual'
+    { barChartVisual = Prelude.Nothing,
+      boxPlotVisual = Prelude.Nothing,
+      comboChartVisual = Prelude.Nothing,
+      customContentVisual = Prelude.Nothing,
+      emptyVisual = Prelude.Nothing,
+      filledMapVisual = Prelude.Nothing,
+      funnelChartVisual = Prelude.Nothing,
+      gaugeChartVisual = Prelude.Nothing,
+      geospatialMapVisual = Prelude.Nothing,
+      heatMapVisual = Prelude.Nothing,
+      histogramVisual = Prelude.Nothing,
+      insightVisual = Prelude.Nothing,
+      kPIVisual = Prelude.Nothing,
+      lineChartVisual = Prelude.Nothing,
+      pieChartVisual = Prelude.Nothing,
+      pivotTableVisual = Prelude.Nothing,
+      sankeyDiagramVisual = Prelude.Nothing,
+      scatterPlotVisual = Prelude.Nothing,
+      tableVisual = Prelude.Nothing,
+      treeMapVisual = Prelude.Nothing,
+      waterfallVisual = Prelude.Nothing,
+      wordCloudVisual = Prelude.Nothing
+    }
+
+-- | A bar chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/bar-charts.html Using bar charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_barChartVisual :: Lens.Lens' Visual (Prelude.Maybe BarChartVisual)
+visual_barChartVisual = Lens.lens (\Visual' {barChartVisual} -> barChartVisual) (\s@Visual' {} a -> s {barChartVisual = a} :: Visual)
+
+-- | A box plot.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/box-plots.html Using box plots>
+-- in the /Amazon QuickSight User Guide/.
+visual_boxPlotVisual :: Lens.Lens' Visual (Prelude.Maybe BoxPlotVisual)
+visual_boxPlotVisual = Lens.lens (\Visual' {boxPlotVisual} -> boxPlotVisual) (\s@Visual' {} a -> s {boxPlotVisual = a} :: Visual)
+
+-- | A combo chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/combo-charts.html Using combo charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_comboChartVisual :: Lens.Lens' Visual (Prelude.Maybe ComboChartVisual)
+visual_comboChartVisual = Lens.lens (\Visual' {comboChartVisual} -> comboChartVisual) (\s@Visual' {} a -> s {comboChartVisual = a} :: Visual)
+
+-- | A visual that contains custom content.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/custom-visual-content.html Using custom visual content>
+-- in the /Amazon QuickSight User Guide/.
+visual_customContentVisual :: Lens.Lens' Visual (Prelude.Maybe CustomContentVisual)
+visual_customContentVisual = Lens.lens (\Visual' {customContentVisual} -> customContentVisual) (\s@Visual' {} a -> s {customContentVisual = a} :: Visual)
+
+-- | An empty visual.
+visual_emptyVisual :: Lens.Lens' Visual (Prelude.Maybe EmptyVisual)
+visual_emptyVisual = Lens.lens (\Visual' {emptyVisual} -> emptyVisual) (\s@Visual' {} a -> s {emptyVisual = a} :: Visual)
+
+-- | A filled map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/filled-maps.html Creating filled maps>
+-- in the /Amazon QuickSight User Guide/.
+visual_filledMapVisual :: Lens.Lens' Visual (Prelude.Maybe FilledMapVisual)
+visual_filledMapVisual = Lens.lens (\Visual' {filledMapVisual} -> filledMapVisual) (\s@Visual' {} a -> s {filledMapVisual = a} :: Visual)
+
+-- | A funnel chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/funnel-visual-content.html Using funnel charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_funnelChartVisual :: Lens.Lens' Visual (Prelude.Maybe FunnelChartVisual)
+visual_funnelChartVisual = Lens.lens (\Visual' {funnelChartVisual} -> funnelChartVisual) (\s@Visual' {} a -> s {funnelChartVisual = a} :: Visual)
+
+-- | A gauge chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/gauge-chart.html Using gauge charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_gaugeChartVisual :: Lens.Lens' Visual (Prelude.Maybe GaugeChartVisual)
+visual_gaugeChartVisual = Lens.lens (\Visual' {gaugeChartVisual} -> gaugeChartVisual) (\s@Visual' {} a -> s {gaugeChartVisual = a} :: Visual)
+
+-- | A geospatial map or a points on map visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/point-maps.html Creating point maps>
+-- in the /Amazon QuickSight User Guide/.
+visual_geospatialMapVisual :: Lens.Lens' Visual (Prelude.Maybe GeospatialMapVisual)
+visual_geospatialMapVisual = Lens.lens (\Visual' {geospatialMapVisual} -> geospatialMapVisual) (\s@Visual' {} a -> s {geospatialMapVisual = a} :: Visual)
+
+-- | A heat map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/heat-map.html Using heat maps>
+-- in the /Amazon QuickSight User Guide/.
+visual_heatMapVisual :: Lens.Lens' Visual (Prelude.Maybe HeatMapVisual)
+visual_heatMapVisual = Lens.lens (\Visual' {heatMapVisual} -> heatMapVisual) (\s@Visual' {} a -> s {heatMapVisual = a} :: Visual)
+
+-- | A histogram.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/histogram-charts.html Using histograms>
+-- in the /Amazon QuickSight User Guide/.
+visual_histogramVisual :: Lens.Lens' Visual (Prelude.Maybe HistogramVisual)
+visual_histogramVisual = Lens.lens (\Visual' {histogramVisual} -> histogramVisual) (\s@Visual' {} a -> s {histogramVisual = a} :: Visual)
+
+-- | An insight visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/computational-insights.html Working with insights>
+-- in the /Amazon QuickSight User Guide/.
+visual_insightVisual :: Lens.Lens' Visual (Prelude.Maybe InsightVisual)
+visual_insightVisual = Lens.lens (\Visual' {insightVisual} -> insightVisual) (\s@Visual' {} a -> s {insightVisual = a} :: Visual)
+
+-- | A key performance indicator (KPI).
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/kpi.html Using KPIs>
+-- in the /Amazon QuickSight User Guide/.
+visual_kPIVisual :: Lens.Lens' Visual (Prelude.Maybe KPIVisual)
+visual_kPIVisual = Lens.lens (\Visual' {kPIVisual} -> kPIVisual) (\s@Visual' {} a -> s {kPIVisual = a} :: Visual)
+
+-- | A line chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/line-charts.html Using line charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_lineChartVisual :: Lens.Lens' Visual (Prelude.Maybe LineChartVisual)
+visual_lineChartVisual = Lens.lens (\Visual' {lineChartVisual} -> lineChartVisual) (\s@Visual' {} a -> s {lineChartVisual = a} :: Visual)
+
+-- | A pie or donut chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/pie-chart.html Using pie charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_pieChartVisual :: Lens.Lens' Visual (Prelude.Maybe PieChartVisual)
+visual_pieChartVisual = Lens.lens (\Visual' {pieChartVisual} -> pieChartVisual) (\s@Visual' {} a -> s {pieChartVisual = a} :: Visual)
+
+-- | A pivot table.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/pivot-table.html Using pivot tables>
+-- in the /Amazon QuickSight User Guide/.
+visual_pivotTableVisual :: Lens.Lens' Visual (Prelude.Maybe PivotTableVisual)
+visual_pivotTableVisual = Lens.lens (\Visual' {pivotTableVisual} -> pivotTableVisual) (\s@Visual' {} a -> s {pivotTableVisual = a} :: Visual)
+
+-- | A sankey diagram.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/sankey-diagram.html Using Sankey diagrams>
+-- in the /Amazon QuickSight User Guide/.
+visual_sankeyDiagramVisual :: Lens.Lens' Visual (Prelude.Maybe SankeyDiagramVisual)
+visual_sankeyDiagramVisual = Lens.lens (\Visual' {sankeyDiagramVisual} -> sankeyDiagramVisual) (\s@Visual' {} a -> s {sankeyDiagramVisual = a} :: Visual)
+
+-- | A scatter plot.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/scatter-plot.html Using scatter plots>
+-- in the /Amazon QuickSight User Guide/.
+visual_scatterPlotVisual :: Lens.Lens' Visual (Prelude.Maybe ScatterPlotVisual)
+visual_scatterPlotVisual = Lens.lens (\Visual' {scatterPlotVisual} -> scatterPlotVisual) (\s@Visual' {} a -> s {scatterPlotVisual = a} :: Visual)
+
+-- | A table visual.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/tabular.html Using tables as visuals>
+-- in the /Amazon QuickSight User Guide/.
+visual_tableVisual :: Lens.Lens' Visual (Prelude.Maybe TableVisual)
+visual_tableVisual = Lens.lens (\Visual' {tableVisual} -> tableVisual) (\s@Visual' {} a -> s {tableVisual = a} :: Visual)
+
+-- | A tree map.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/tree-map.html Using tree maps>
+-- in the /Amazon QuickSight User Guide/.
+visual_treeMapVisual :: Lens.Lens' Visual (Prelude.Maybe TreeMapVisual)
+visual_treeMapVisual = Lens.lens (\Visual' {treeMapVisual} -> treeMapVisual) (\s@Visual' {} a -> s {treeMapVisual = a} :: Visual)
+
+-- | A waterfall chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/waterfall-chart.html Using waterfall charts>
+-- in the /Amazon QuickSight User Guide/.
+visual_waterfallVisual :: Lens.Lens' Visual (Prelude.Maybe WaterfallVisual)
+visual_waterfallVisual = Lens.lens (\Visual' {waterfallVisual} -> waterfallVisual) (\s@Visual' {} a -> s {waterfallVisual = a} :: Visual)
+
+-- | A word cloud.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/word-cloud.html Using word clouds>
+-- in the /Amazon QuickSight User Guide/.
+visual_wordCloudVisual :: Lens.Lens' Visual (Prelude.Maybe WordCloudVisual)
+visual_wordCloudVisual = Lens.lens (\Visual' {wordCloudVisual} -> wordCloudVisual) (\s@Visual' {} a -> s {wordCloudVisual = a} :: Visual)
+
+instance Data.FromJSON Visual where
+  parseJSON =
+    Data.withObject
+      "Visual"
+      ( \x ->
+          Visual'
+            Prelude.<$> (x Data..:? "BarChartVisual")
+            Prelude.<*> (x Data..:? "BoxPlotVisual")
+            Prelude.<*> (x Data..:? "ComboChartVisual")
+            Prelude.<*> (x Data..:? "CustomContentVisual")
+            Prelude.<*> (x Data..:? "EmptyVisual")
+            Prelude.<*> (x Data..:? "FilledMapVisual")
+            Prelude.<*> (x Data..:? "FunnelChartVisual")
+            Prelude.<*> (x Data..:? "GaugeChartVisual")
+            Prelude.<*> (x Data..:? "GeospatialMapVisual")
+            Prelude.<*> (x Data..:? "HeatMapVisual")
+            Prelude.<*> (x Data..:? "HistogramVisual")
+            Prelude.<*> (x Data..:? "InsightVisual")
+            Prelude.<*> (x Data..:? "KPIVisual")
+            Prelude.<*> (x Data..:? "LineChartVisual")
+            Prelude.<*> (x Data..:? "PieChartVisual")
+            Prelude.<*> (x Data..:? "PivotTableVisual")
+            Prelude.<*> (x Data..:? "SankeyDiagramVisual")
+            Prelude.<*> (x Data..:? "ScatterPlotVisual")
+            Prelude.<*> (x Data..:? "TableVisual")
+            Prelude.<*> (x Data..:? "TreeMapVisual")
+            Prelude.<*> (x Data..:? "WaterfallVisual")
+            Prelude.<*> (x Data..:? "WordCloudVisual")
+      )
+
+instance Prelude.Hashable Visual where
+  hashWithSalt _salt Visual' {..} =
+    _salt
+      `Prelude.hashWithSalt` barChartVisual
+      `Prelude.hashWithSalt` boxPlotVisual
+      `Prelude.hashWithSalt` comboChartVisual
+      `Prelude.hashWithSalt` customContentVisual
+      `Prelude.hashWithSalt` emptyVisual
+      `Prelude.hashWithSalt` filledMapVisual
+      `Prelude.hashWithSalt` funnelChartVisual
+      `Prelude.hashWithSalt` gaugeChartVisual
+      `Prelude.hashWithSalt` geospatialMapVisual
+      `Prelude.hashWithSalt` heatMapVisual
+      `Prelude.hashWithSalt` histogramVisual
+      `Prelude.hashWithSalt` insightVisual
+      `Prelude.hashWithSalt` kPIVisual
+      `Prelude.hashWithSalt` lineChartVisual
+      `Prelude.hashWithSalt` pieChartVisual
+      `Prelude.hashWithSalt` pivotTableVisual
+      `Prelude.hashWithSalt` sankeyDiagramVisual
+      `Prelude.hashWithSalt` scatterPlotVisual
+      `Prelude.hashWithSalt` tableVisual
+      `Prelude.hashWithSalt` treeMapVisual
+      `Prelude.hashWithSalt` waterfallVisual
+      `Prelude.hashWithSalt` wordCloudVisual
+
+instance Prelude.NFData Visual where
+  rnf Visual' {..} =
+    Prelude.rnf barChartVisual
+      `Prelude.seq` Prelude.rnf boxPlotVisual
+      `Prelude.seq` Prelude.rnf comboChartVisual
+      `Prelude.seq` Prelude.rnf customContentVisual
+      `Prelude.seq` Prelude.rnf emptyVisual
+      `Prelude.seq` Prelude.rnf filledMapVisual
+      `Prelude.seq` Prelude.rnf funnelChartVisual
+      `Prelude.seq` Prelude.rnf gaugeChartVisual
+      `Prelude.seq` Prelude.rnf geospatialMapVisual
+      `Prelude.seq` Prelude.rnf heatMapVisual
+      `Prelude.seq` Prelude.rnf histogramVisual
+      `Prelude.seq` Prelude.rnf insightVisual
+      `Prelude.seq` Prelude.rnf kPIVisual
+      `Prelude.seq` Prelude.rnf lineChartVisual
+      `Prelude.seq` Prelude.rnf pieChartVisual
+      `Prelude.seq` Prelude.rnf pivotTableVisual
+      `Prelude.seq` Prelude.rnf sankeyDiagramVisual
+      `Prelude.seq` Prelude.rnf scatterPlotVisual
+      `Prelude.seq` Prelude.rnf tableVisual
+      `Prelude.seq` Prelude.rnf treeMapVisual
+      `Prelude.seq` Prelude.rnf waterfallVisual
+      `Prelude.seq` Prelude.rnf
+        wordCloudVisual
+
+instance Data.ToJSON Visual where
+  toJSON Visual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BarChartVisual" Data..=)
+              Prelude.<$> barChartVisual,
+            ("BoxPlotVisual" Data..=) Prelude.<$> boxPlotVisual,
+            ("ComboChartVisual" Data..=)
+              Prelude.<$> comboChartVisual,
+            ("CustomContentVisual" Data..=)
+              Prelude.<$> customContentVisual,
+            ("EmptyVisual" Data..=) Prelude.<$> emptyVisual,
+            ("FilledMapVisual" Data..=)
+              Prelude.<$> filledMapVisual,
+            ("FunnelChartVisual" Data..=)
+              Prelude.<$> funnelChartVisual,
+            ("GaugeChartVisual" Data..=)
+              Prelude.<$> gaugeChartVisual,
+            ("GeospatialMapVisual" Data..=)
+              Prelude.<$> geospatialMapVisual,
+            ("HeatMapVisual" Data..=) Prelude.<$> heatMapVisual,
+            ("HistogramVisual" Data..=)
+              Prelude.<$> histogramVisual,
+            ("InsightVisual" Data..=) Prelude.<$> insightVisual,
+            ("KPIVisual" Data..=) Prelude.<$> kPIVisual,
+            ("LineChartVisual" Data..=)
+              Prelude.<$> lineChartVisual,
+            ("PieChartVisual" Data..=)
+              Prelude.<$> pieChartVisual,
+            ("PivotTableVisual" Data..=)
+              Prelude.<$> pivotTableVisual,
+            ("SankeyDiagramVisual" Data..=)
+              Prelude.<$> sankeyDiagramVisual,
+            ("ScatterPlotVisual" Data..=)
+              Prelude.<$> scatterPlotVisual,
+            ("TableVisual" Data..=) Prelude.<$> tableVisual,
+            ("TreeMapVisual" Data..=) Prelude.<$> treeMapVisual,
+            ("WaterfallVisual" Data..=)
+              Prelude.<$> waterfallVisual,
+            ("WordCloudVisual" Data..=)
+              Prelude.<$> wordCloudVisual
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/VisualCustomAction.hs b/gen/Amazonka/QuickSight/Types/VisualCustomAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisualCustomAction.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.VisualCustomAction
+-- 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.QuickSight.Types.VisualCustomAction 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.QuickSight.Types.VisualCustomActionOperation
+import Amazonka.QuickSight.Types.VisualCustomActionTrigger
+import Amazonka.QuickSight.Types.WidgetStatus
+
+-- | A custom action defined on a visual.
+--
+-- /See:/ 'newVisualCustomAction' smart constructor.
+data VisualCustomAction = VisualCustomAction'
+  { -- | The status of the @VisualCustomAction@.
+    status :: Prelude.Maybe WidgetStatus,
+    -- | The ID of the @VisualCustomAction@.
+    customActionId :: Prelude.Text,
+    -- | The name of the @VisualCustomAction@.
+    name :: Prelude.Text,
+    -- | The trigger of the @VisualCustomAction@.
+    --
+    -- Valid values are defined as follows:
+    --
+    -- -   @DATA_POINT_CLICK@: Initiates a custom action by a left pointer
+    --     click on a data point.
+    --
+    -- -   @DATA_POINT_MENU@: Initiates a custom action by right pointer click
+    --     from the menu.
+    trigger :: VisualCustomActionTrigger,
+    -- | A list of @VisualCustomActionOperations@.
+    --
+    -- This is a union type structure. For this structure to be valid, only one
+    -- of the attributes can be defined.
+    actionOperations :: Prelude.NonEmpty VisualCustomActionOperation
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VisualCustomAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'visualCustomAction_status' - The status of the @VisualCustomAction@.
+--
+-- 'customActionId', 'visualCustomAction_customActionId' - The ID of the @VisualCustomAction@.
+--
+-- 'name', 'visualCustomAction_name' - The name of the @VisualCustomAction@.
+--
+-- 'trigger', 'visualCustomAction_trigger' - The trigger of the @VisualCustomAction@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @DATA_POINT_CLICK@: Initiates a custom action by a left pointer
+--     click on a data point.
+--
+-- -   @DATA_POINT_MENU@: Initiates a custom action by right pointer click
+--     from the menu.
+--
+-- 'actionOperations', 'visualCustomAction_actionOperations' - A list of @VisualCustomActionOperations@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+newVisualCustomAction ::
+  -- | 'customActionId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'trigger'
+  VisualCustomActionTrigger ->
+  -- | 'actionOperations'
+  Prelude.NonEmpty VisualCustomActionOperation ->
+  VisualCustomAction
+newVisualCustomAction
+  pCustomActionId_
+  pName_
+  pTrigger_
+  pActionOperations_ =
+    VisualCustomAction'
+      { status = Prelude.Nothing,
+        customActionId = pCustomActionId_,
+        name = pName_,
+        trigger = pTrigger_,
+        actionOperations =
+          Lens.coerced Lens.# pActionOperations_
+      }
+
+-- | The status of the @VisualCustomAction@.
+visualCustomAction_status :: Lens.Lens' VisualCustomAction (Prelude.Maybe WidgetStatus)
+visualCustomAction_status = Lens.lens (\VisualCustomAction' {status} -> status) (\s@VisualCustomAction' {} a -> s {status = a} :: VisualCustomAction)
+
+-- | The ID of the @VisualCustomAction@.
+visualCustomAction_customActionId :: Lens.Lens' VisualCustomAction Prelude.Text
+visualCustomAction_customActionId = Lens.lens (\VisualCustomAction' {customActionId} -> customActionId) (\s@VisualCustomAction' {} a -> s {customActionId = a} :: VisualCustomAction)
+
+-- | The name of the @VisualCustomAction@.
+visualCustomAction_name :: Lens.Lens' VisualCustomAction Prelude.Text
+visualCustomAction_name = Lens.lens (\VisualCustomAction' {name} -> name) (\s@VisualCustomAction' {} a -> s {name = a} :: VisualCustomAction)
+
+-- | The trigger of the @VisualCustomAction@.
+--
+-- Valid values are defined as follows:
+--
+-- -   @DATA_POINT_CLICK@: Initiates a custom action by a left pointer
+--     click on a data point.
+--
+-- -   @DATA_POINT_MENU@: Initiates a custom action by right pointer click
+--     from the menu.
+visualCustomAction_trigger :: Lens.Lens' VisualCustomAction VisualCustomActionTrigger
+visualCustomAction_trigger = Lens.lens (\VisualCustomAction' {trigger} -> trigger) (\s@VisualCustomAction' {} a -> s {trigger = a} :: VisualCustomAction)
+
+-- | A list of @VisualCustomActionOperations@.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+visualCustomAction_actionOperations :: Lens.Lens' VisualCustomAction (Prelude.NonEmpty VisualCustomActionOperation)
+visualCustomAction_actionOperations = Lens.lens (\VisualCustomAction' {actionOperations} -> actionOperations) (\s@VisualCustomAction' {} a -> s {actionOperations = a} :: VisualCustomAction) Prelude.. Lens.coerced
+
+instance Data.FromJSON VisualCustomAction where
+  parseJSON =
+    Data.withObject
+      "VisualCustomAction"
+      ( \x ->
+          VisualCustomAction'
+            Prelude.<$> (x Data..:? "Status")
+            Prelude.<*> (x Data..: "CustomActionId")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Trigger")
+            Prelude.<*> (x Data..: "ActionOperations")
+      )
+
+instance Prelude.Hashable VisualCustomAction where
+  hashWithSalt _salt VisualCustomAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` customActionId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` trigger
+      `Prelude.hashWithSalt` actionOperations
+
+instance Prelude.NFData VisualCustomAction where
+  rnf VisualCustomAction' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf customActionId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf trigger
+      `Prelude.seq` Prelude.rnf actionOperations
+
+instance Data.ToJSON VisualCustomAction where
+  toJSON VisualCustomAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just
+              ("CustomActionId" Data..= customActionId),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Trigger" Data..= trigger),
+            Prelude.Just
+              ("ActionOperations" Data..= actionOperations)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/VisualCustomActionOperation.hs b/gen/Amazonka/QuickSight/Types/VisualCustomActionOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisualCustomActionOperation.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.VisualCustomActionOperation
+-- 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.QuickSight.Types.VisualCustomActionOperation 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.QuickSight.Types.CustomActionFilterOperation
+import Amazonka.QuickSight.Types.CustomActionNavigationOperation
+import Amazonka.QuickSight.Types.CustomActionSetParametersOperation
+import Amazonka.QuickSight.Types.CustomActionURLOperation
+
+-- | The operation that is defined by the custom action.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newVisualCustomActionOperation' smart constructor.
+data VisualCustomActionOperation = VisualCustomActionOperation'
+  { -- | The filter operation that filters data included in a visual or in an
+    -- entire sheet.
+    filterOperation :: Prelude.Maybe CustomActionFilterOperation,
+    -- | The navigation operation that navigates between different sheets in the
+    -- same analysis.
+    navigationOperation :: Prelude.Maybe CustomActionNavigationOperation,
+    -- | The set parameter operation that sets parameters in custom action.
+    setParametersOperation :: Prelude.Maybe CustomActionSetParametersOperation,
+    -- | The URL operation that opens a link to another webpage.
+    uRLOperation :: Prelude.Maybe CustomActionURLOperation
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VisualCustomActionOperation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filterOperation', 'visualCustomActionOperation_filterOperation' - The filter operation that filters data included in a visual or in an
+-- entire sheet.
+--
+-- 'navigationOperation', 'visualCustomActionOperation_navigationOperation' - The navigation operation that navigates between different sheets in the
+-- same analysis.
+--
+-- 'setParametersOperation', 'visualCustomActionOperation_setParametersOperation' - The set parameter operation that sets parameters in custom action.
+--
+-- 'uRLOperation', 'visualCustomActionOperation_uRLOperation' - The URL operation that opens a link to another webpage.
+newVisualCustomActionOperation ::
+  VisualCustomActionOperation
+newVisualCustomActionOperation =
+  VisualCustomActionOperation'
+    { filterOperation =
+        Prelude.Nothing,
+      navigationOperation = Prelude.Nothing,
+      setParametersOperation = Prelude.Nothing,
+      uRLOperation = Prelude.Nothing
+    }
+
+-- | The filter operation that filters data included in a visual or in an
+-- entire sheet.
+visualCustomActionOperation_filterOperation :: Lens.Lens' VisualCustomActionOperation (Prelude.Maybe CustomActionFilterOperation)
+visualCustomActionOperation_filterOperation = Lens.lens (\VisualCustomActionOperation' {filterOperation} -> filterOperation) (\s@VisualCustomActionOperation' {} a -> s {filterOperation = a} :: VisualCustomActionOperation)
+
+-- | The navigation operation that navigates between different sheets in the
+-- same analysis.
+visualCustomActionOperation_navigationOperation :: Lens.Lens' VisualCustomActionOperation (Prelude.Maybe CustomActionNavigationOperation)
+visualCustomActionOperation_navigationOperation = Lens.lens (\VisualCustomActionOperation' {navigationOperation} -> navigationOperation) (\s@VisualCustomActionOperation' {} a -> s {navigationOperation = a} :: VisualCustomActionOperation)
+
+-- | The set parameter operation that sets parameters in custom action.
+visualCustomActionOperation_setParametersOperation :: Lens.Lens' VisualCustomActionOperation (Prelude.Maybe CustomActionSetParametersOperation)
+visualCustomActionOperation_setParametersOperation = Lens.lens (\VisualCustomActionOperation' {setParametersOperation} -> setParametersOperation) (\s@VisualCustomActionOperation' {} a -> s {setParametersOperation = a} :: VisualCustomActionOperation)
+
+-- | The URL operation that opens a link to another webpage.
+visualCustomActionOperation_uRLOperation :: Lens.Lens' VisualCustomActionOperation (Prelude.Maybe CustomActionURLOperation)
+visualCustomActionOperation_uRLOperation = Lens.lens (\VisualCustomActionOperation' {uRLOperation} -> uRLOperation) (\s@VisualCustomActionOperation' {} a -> s {uRLOperation = a} :: VisualCustomActionOperation)
+
+instance Data.FromJSON VisualCustomActionOperation where
+  parseJSON =
+    Data.withObject
+      "VisualCustomActionOperation"
+      ( \x ->
+          VisualCustomActionOperation'
+            Prelude.<$> (x Data..:? "FilterOperation")
+            Prelude.<*> (x Data..:? "NavigationOperation")
+            Prelude.<*> (x Data..:? "SetParametersOperation")
+            Prelude.<*> (x Data..:? "URLOperation")
+      )
+
+instance Prelude.Hashable VisualCustomActionOperation where
+  hashWithSalt _salt VisualCustomActionOperation' {..} =
+    _salt
+      `Prelude.hashWithSalt` filterOperation
+      `Prelude.hashWithSalt` navigationOperation
+      `Prelude.hashWithSalt` setParametersOperation
+      `Prelude.hashWithSalt` uRLOperation
+
+instance Prelude.NFData VisualCustomActionOperation where
+  rnf VisualCustomActionOperation' {..} =
+    Prelude.rnf filterOperation
+      `Prelude.seq` Prelude.rnf navigationOperation
+      `Prelude.seq` Prelude.rnf setParametersOperation
+      `Prelude.seq` Prelude.rnf uRLOperation
+
+instance Data.ToJSON VisualCustomActionOperation where
+  toJSON VisualCustomActionOperation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FilterOperation" Data..=)
+              Prelude.<$> filterOperation,
+            ("NavigationOperation" Data..=)
+              Prelude.<$> navigationOperation,
+            ("SetParametersOperation" Data..=)
+              Prelude.<$> setParametersOperation,
+            ("URLOperation" Data..=) Prelude.<$> uRLOperation
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/VisualCustomActionTrigger.hs b/gen/Amazonka/QuickSight/Types/VisualCustomActionTrigger.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisualCustomActionTrigger.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.QuickSight.Types.VisualCustomActionTrigger
+-- 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.QuickSight.Types.VisualCustomActionTrigger
+  ( VisualCustomActionTrigger
+      ( ..,
+        VisualCustomActionTrigger_DATA_POINT_CLICK,
+        VisualCustomActionTrigger_DATA_POINT_MENU
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VisualCustomActionTrigger = VisualCustomActionTrigger'
+  { fromVisualCustomActionTrigger ::
+      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 VisualCustomActionTrigger_DATA_POINT_CLICK :: VisualCustomActionTrigger
+pattern VisualCustomActionTrigger_DATA_POINT_CLICK = VisualCustomActionTrigger' "DATA_POINT_CLICK"
+
+pattern VisualCustomActionTrigger_DATA_POINT_MENU :: VisualCustomActionTrigger
+pattern VisualCustomActionTrigger_DATA_POINT_MENU = VisualCustomActionTrigger' "DATA_POINT_MENU"
+
+{-# COMPLETE
+  VisualCustomActionTrigger_DATA_POINT_CLICK,
+  VisualCustomActionTrigger_DATA_POINT_MENU,
+  VisualCustomActionTrigger'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/VisualPalette.hs b/gen/Amazonka/QuickSight/Types/VisualPalette.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisualPalette.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.QuickSight.Types.VisualPalette
+-- 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.QuickSight.Types.VisualPalette 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.QuickSight.Types.DataPathColor
+
+-- | The visual display options for the visual palette.
+--
+-- /See:/ 'newVisualPalette' smart constructor.
+data VisualPalette = VisualPalette'
+  { -- | The chart color options for the visual palette.
+    chartColor :: Prelude.Maybe Prelude.Text,
+    -- | The color map options for the visual palette.
+    colorMap :: Prelude.Maybe [DataPathColor]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VisualPalette' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chartColor', 'visualPalette_chartColor' - The chart color options for the visual palette.
+--
+-- 'colorMap', 'visualPalette_colorMap' - The color map options for the visual palette.
+newVisualPalette ::
+  VisualPalette
+newVisualPalette =
+  VisualPalette'
+    { chartColor = Prelude.Nothing,
+      colorMap = Prelude.Nothing
+    }
+
+-- | The chart color options for the visual palette.
+visualPalette_chartColor :: Lens.Lens' VisualPalette (Prelude.Maybe Prelude.Text)
+visualPalette_chartColor = Lens.lens (\VisualPalette' {chartColor} -> chartColor) (\s@VisualPalette' {} a -> s {chartColor = a} :: VisualPalette)
+
+-- | The color map options for the visual palette.
+visualPalette_colorMap :: Lens.Lens' VisualPalette (Prelude.Maybe [DataPathColor])
+visualPalette_colorMap = Lens.lens (\VisualPalette' {colorMap} -> colorMap) (\s@VisualPalette' {} a -> s {colorMap = a} :: VisualPalette) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON VisualPalette where
+  parseJSON =
+    Data.withObject
+      "VisualPalette"
+      ( \x ->
+          VisualPalette'
+            Prelude.<$> (x Data..:? "ChartColor")
+            Prelude.<*> (x Data..:? "ColorMap" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable VisualPalette where
+  hashWithSalt _salt VisualPalette' {..} =
+    _salt
+      `Prelude.hashWithSalt` chartColor
+      `Prelude.hashWithSalt` colorMap
+
+instance Prelude.NFData VisualPalette where
+  rnf VisualPalette' {..} =
+    Prelude.rnf chartColor
+      `Prelude.seq` Prelude.rnf colorMap
+
+instance Data.ToJSON VisualPalette where
+  toJSON VisualPalette' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ChartColor" Data..=) Prelude.<$> chartColor,
+            ("ColorMap" Data..=) Prelude.<$> colorMap
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/VisualSubtitleLabelOptions.hs b/gen/Amazonka/QuickSight/Types/VisualSubtitleLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisualSubtitleLabelOptions.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+-- 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.QuickSight.Types.VisualSubtitleLabelOptions 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.QuickSight.Types.LongFormatText
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The subtitle label options for a visual.
+--
+-- /See:/ 'newVisualSubtitleLabelOptions' smart constructor.
+data VisualSubtitleLabelOptions = VisualSubtitleLabelOptions'
+  { -- | The long text format of the subtitle label, such as plain text or rich
+    -- text.
+    formatText :: Prelude.Maybe LongFormatText,
+    -- | The visibility of the subtitle label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VisualSubtitleLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatText', 'visualSubtitleLabelOptions_formatText' - The long text format of the subtitle label, such as plain text or rich
+-- text.
+--
+-- 'visibility', 'visualSubtitleLabelOptions_visibility' - The visibility of the subtitle label.
+newVisualSubtitleLabelOptions ::
+  VisualSubtitleLabelOptions
+newVisualSubtitleLabelOptions =
+  VisualSubtitleLabelOptions'
+    { formatText =
+        Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The long text format of the subtitle label, such as plain text or rich
+-- text.
+visualSubtitleLabelOptions_formatText :: Lens.Lens' VisualSubtitleLabelOptions (Prelude.Maybe LongFormatText)
+visualSubtitleLabelOptions_formatText = Lens.lens (\VisualSubtitleLabelOptions' {formatText} -> formatText) (\s@VisualSubtitleLabelOptions' {} a -> s {formatText = a} :: VisualSubtitleLabelOptions)
+
+-- | The visibility of the subtitle label.
+visualSubtitleLabelOptions_visibility :: Lens.Lens' VisualSubtitleLabelOptions (Prelude.Maybe Visibility)
+visualSubtitleLabelOptions_visibility = Lens.lens (\VisualSubtitleLabelOptions' {visibility} -> visibility) (\s@VisualSubtitleLabelOptions' {} a -> s {visibility = a} :: VisualSubtitleLabelOptions)
+
+instance Data.FromJSON VisualSubtitleLabelOptions where
+  parseJSON =
+    Data.withObject
+      "VisualSubtitleLabelOptions"
+      ( \x ->
+          VisualSubtitleLabelOptions'
+            Prelude.<$> (x Data..:? "FormatText")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable VisualSubtitleLabelOptions where
+  hashWithSalt _salt VisualSubtitleLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatText
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData VisualSubtitleLabelOptions where
+  rnf VisualSubtitleLabelOptions' {..} =
+    Prelude.rnf formatText
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON VisualSubtitleLabelOptions where
+  toJSON VisualSubtitleLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatText" Data..=) Prelude.<$> formatText,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/VisualTitleLabelOptions.hs b/gen/Amazonka/QuickSight/Types/VisualTitleLabelOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VisualTitleLabelOptions.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.VisualTitleLabelOptions
+-- 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.QuickSight.Types.VisualTitleLabelOptions 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.QuickSight.Types.ShortFormatText
+import Amazonka.QuickSight.Types.Visibility
+
+-- | The title label options for a visual.
+--
+-- /See:/ 'newVisualTitleLabelOptions' smart constructor.
+data VisualTitleLabelOptions = VisualTitleLabelOptions'
+  { -- | The short text format of the title label, such as plain text or rich
+    -- text.
+    formatText :: Prelude.Maybe ShortFormatText,
+    -- | The visibility of the title label.
+    visibility :: Prelude.Maybe Visibility
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VisualTitleLabelOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'formatText', 'visualTitleLabelOptions_formatText' - The short text format of the title label, such as plain text or rich
+-- text.
+--
+-- 'visibility', 'visualTitleLabelOptions_visibility' - The visibility of the title label.
+newVisualTitleLabelOptions ::
+  VisualTitleLabelOptions
+newVisualTitleLabelOptions =
+  VisualTitleLabelOptions'
+    { formatText =
+        Prelude.Nothing,
+      visibility = Prelude.Nothing
+    }
+
+-- | The short text format of the title label, such as plain text or rich
+-- text.
+visualTitleLabelOptions_formatText :: Lens.Lens' VisualTitleLabelOptions (Prelude.Maybe ShortFormatText)
+visualTitleLabelOptions_formatText = Lens.lens (\VisualTitleLabelOptions' {formatText} -> formatText) (\s@VisualTitleLabelOptions' {} a -> s {formatText = a} :: VisualTitleLabelOptions)
+
+-- | The visibility of the title label.
+visualTitleLabelOptions_visibility :: Lens.Lens' VisualTitleLabelOptions (Prelude.Maybe Visibility)
+visualTitleLabelOptions_visibility = Lens.lens (\VisualTitleLabelOptions' {visibility} -> visibility) (\s@VisualTitleLabelOptions' {} a -> s {visibility = a} :: VisualTitleLabelOptions)
+
+instance Data.FromJSON VisualTitleLabelOptions where
+  parseJSON =
+    Data.withObject
+      "VisualTitleLabelOptions"
+      ( \x ->
+          VisualTitleLabelOptions'
+            Prelude.<$> (x Data..:? "FormatText")
+            Prelude.<*> (x Data..:? "Visibility")
+      )
+
+instance Prelude.Hashable VisualTitleLabelOptions where
+  hashWithSalt _salt VisualTitleLabelOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` formatText
+      `Prelude.hashWithSalt` visibility
+
+instance Prelude.NFData VisualTitleLabelOptions where
+  rnf VisualTitleLabelOptions' {..} =
+    Prelude.rnf formatText
+      `Prelude.seq` Prelude.rnf visibility
+
+instance Data.ToJSON VisualTitleLabelOptions where
+  toJSON VisualTitleLabelOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FormatText" Data..=) Prelude.<$> formatText,
+            ("Visibility" Data..=) Prelude.<$> visibility
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/VpcConnectionProperties.hs b/gen/Amazonka/QuickSight/Types/VpcConnectionProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/VpcConnectionProperties.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.VpcConnectionProperties
+-- 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.QuickSight.Types.VpcConnectionProperties 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
+
+-- | VPC connection properties.
+--
+-- /See:/ 'newVpcConnectionProperties' smart constructor.
+data VpcConnectionProperties = VpcConnectionProperties'
+  { -- | The Amazon Resource Name (ARN) for the VPC connection.
+    vpcConnectionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VpcConnectionProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'vpcConnectionArn', 'vpcConnectionProperties_vpcConnectionArn' - The Amazon Resource Name (ARN) for the VPC connection.
+newVpcConnectionProperties ::
+  -- | 'vpcConnectionArn'
+  Prelude.Text ->
+  VpcConnectionProperties
+newVpcConnectionProperties pVpcConnectionArn_ =
+  VpcConnectionProperties'
+    { vpcConnectionArn =
+        pVpcConnectionArn_
+    }
+
+-- | The Amazon Resource Name (ARN) for the VPC connection.
+vpcConnectionProperties_vpcConnectionArn :: Lens.Lens' VpcConnectionProperties Prelude.Text
+vpcConnectionProperties_vpcConnectionArn = Lens.lens (\VpcConnectionProperties' {vpcConnectionArn} -> vpcConnectionArn) (\s@VpcConnectionProperties' {} a -> s {vpcConnectionArn = a} :: VpcConnectionProperties)
+
+instance Data.FromJSON VpcConnectionProperties where
+  parseJSON =
+    Data.withObject
+      "VpcConnectionProperties"
+      ( \x ->
+          VpcConnectionProperties'
+            Prelude.<$> (x Data..: "VpcConnectionArn")
+      )
+
+instance Prelude.Hashable VpcConnectionProperties where
+  hashWithSalt _salt VpcConnectionProperties' {..} =
+    _salt `Prelude.hashWithSalt` vpcConnectionArn
+
+instance Prelude.NFData VpcConnectionProperties where
+  rnf VpcConnectionProperties' {..} =
+    Prelude.rnf vpcConnectionArn
+
+instance Data.ToJSON VpcConnectionProperties where
+  toJSON VpcConnectionProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("VpcConnectionArn" Data..= vpcConnectionArn)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WaterfallChartAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/WaterfallChartAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WaterfallChartAggregatedFieldWells.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WaterfallChartAggregatedFieldWells
+-- 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.QuickSight.Types.WaterfallChartAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The field well configuration of a waterfall visual.
+--
+-- /See:/ 'newWaterfallChartAggregatedFieldWells' smart constructor.
+data WaterfallChartAggregatedFieldWells = WaterfallChartAggregatedFieldWells'
+  { -- | The breakdown field wells of a waterfall visual.
+    breakdowns :: Prelude.Maybe [DimensionField],
+    -- | The category field wells of a waterfall visual.
+    categories :: Prelude.Maybe [DimensionField],
+    -- | The value field wells of a waterfall visual.
+    values :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WaterfallChartAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'breakdowns', 'waterfallChartAggregatedFieldWells_breakdowns' - The breakdown field wells of a waterfall visual.
+--
+-- 'categories', 'waterfallChartAggregatedFieldWells_categories' - The category field wells of a waterfall visual.
+--
+-- 'values', 'waterfallChartAggregatedFieldWells_values' - The value field wells of a waterfall visual.
+newWaterfallChartAggregatedFieldWells ::
+  WaterfallChartAggregatedFieldWells
+newWaterfallChartAggregatedFieldWells =
+  WaterfallChartAggregatedFieldWells'
+    { breakdowns =
+        Prelude.Nothing,
+      categories = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The breakdown field wells of a waterfall visual.
+waterfallChartAggregatedFieldWells_breakdowns :: Lens.Lens' WaterfallChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+waterfallChartAggregatedFieldWells_breakdowns = Lens.lens (\WaterfallChartAggregatedFieldWells' {breakdowns} -> breakdowns) (\s@WaterfallChartAggregatedFieldWells' {} a -> s {breakdowns = a} :: WaterfallChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The category field wells of a waterfall visual.
+waterfallChartAggregatedFieldWells_categories :: Lens.Lens' WaterfallChartAggregatedFieldWells (Prelude.Maybe [DimensionField])
+waterfallChartAggregatedFieldWells_categories = Lens.lens (\WaterfallChartAggregatedFieldWells' {categories} -> categories) (\s@WaterfallChartAggregatedFieldWells' {} a -> s {categories = a} :: WaterfallChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The value field wells of a waterfall visual.
+waterfallChartAggregatedFieldWells_values :: Lens.Lens' WaterfallChartAggregatedFieldWells (Prelude.Maybe [MeasureField])
+waterfallChartAggregatedFieldWells_values = Lens.lens (\WaterfallChartAggregatedFieldWells' {values} -> values) (\s@WaterfallChartAggregatedFieldWells' {} a -> s {values = a} :: WaterfallChartAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    WaterfallChartAggregatedFieldWells
+  where
+  parseJSON =
+    Data.withObject
+      "WaterfallChartAggregatedFieldWells"
+      ( \x ->
+          WaterfallChartAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "Breakdowns" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Categories" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    WaterfallChartAggregatedFieldWells
+  where
+  hashWithSalt
+    _salt
+    WaterfallChartAggregatedFieldWells' {..} =
+      _salt
+        `Prelude.hashWithSalt` breakdowns
+        `Prelude.hashWithSalt` categories
+        `Prelude.hashWithSalt` values
+
+instance
+  Prelude.NFData
+    WaterfallChartAggregatedFieldWells
+  where
+  rnf WaterfallChartAggregatedFieldWells' {..} =
+    Prelude.rnf breakdowns
+      `Prelude.seq` Prelude.rnf categories
+      `Prelude.seq` Prelude.rnf values
+
+instance
+  Data.ToJSON
+    WaterfallChartAggregatedFieldWells
+  where
+  toJSON WaterfallChartAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Breakdowns" Data..=) Prelude.<$> breakdowns,
+            ("Categories" Data..=) Prelude.<$> categories,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WaterfallChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/WaterfallChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WaterfallChartConfiguration.hs
@@ -0,0 +1,212 @@
+{-# 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.QuickSight.Types.WaterfallChartConfiguration
+-- 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.QuickSight.Types.WaterfallChartConfiguration 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.QuickSight.Types.AxisDisplayOptions
+import Amazonka.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.DataLabelOptions
+import Amazonka.QuickSight.Types.LegendOptions
+import Amazonka.QuickSight.Types.VisualPalette
+import Amazonka.QuickSight.Types.WaterfallChartFieldWells
+import Amazonka.QuickSight.Types.WaterfallChartOptions
+import Amazonka.QuickSight.Types.WaterfallChartSortConfiguration
+
+-- | The configuration for a waterfall visual.
+--
+-- /See:/ 'newWaterfallChartConfiguration' smart constructor.
+data WaterfallChartConfiguration = WaterfallChartConfiguration'
+  { -- | The options that determine the presentation of the category axis.
+    categoryAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The options that determine the presentation of the category axis label.
+    categoryAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The data label configuration of a waterfall visual.
+    dataLabels :: Prelude.Maybe DataLabelOptions,
+    -- | The field well configuration of a waterfall visual.
+    fieldWells :: Prelude.Maybe WaterfallChartFieldWells,
+    -- | The legend configuration of a waterfall visual.
+    legend :: Prelude.Maybe LegendOptions,
+    -- | The options that determine the presentation of the y-axis.
+    primaryYAxisDisplayOptions :: Prelude.Maybe AxisDisplayOptions,
+    -- | The options that determine the presentation of the y-axis label.
+    primaryYAxisLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The sort configuration of a waterfall visual.
+    sortConfiguration :: Prelude.Maybe WaterfallChartSortConfiguration,
+    -- | The visual palette configuration of a waterfall visual.
+    visualPalette :: Prelude.Maybe VisualPalette,
+    -- | The options that determine the presentation of a waterfall visual.
+    waterfallChartOptions :: Prelude.Maybe WaterfallChartOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WaterfallChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryAxisDisplayOptions', 'waterfallChartConfiguration_categoryAxisDisplayOptions' - The options that determine the presentation of the category axis.
+--
+-- 'categoryAxisLabelOptions', 'waterfallChartConfiguration_categoryAxisLabelOptions' - The options that determine the presentation of the category axis label.
+--
+-- 'dataLabels', 'waterfallChartConfiguration_dataLabels' - The data label configuration of a waterfall visual.
+--
+-- 'fieldWells', 'waterfallChartConfiguration_fieldWells' - The field well configuration of a waterfall visual.
+--
+-- 'legend', 'waterfallChartConfiguration_legend' - The legend configuration of a waterfall visual.
+--
+-- 'primaryYAxisDisplayOptions', 'waterfallChartConfiguration_primaryYAxisDisplayOptions' - The options that determine the presentation of the y-axis.
+--
+-- 'primaryYAxisLabelOptions', 'waterfallChartConfiguration_primaryYAxisLabelOptions' - The options that determine the presentation of the y-axis label.
+--
+-- 'sortConfiguration', 'waterfallChartConfiguration_sortConfiguration' - The sort configuration of a waterfall visual.
+--
+-- 'visualPalette', 'waterfallChartConfiguration_visualPalette' - The visual palette configuration of a waterfall visual.
+--
+-- 'waterfallChartOptions', 'waterfallChartConfiguration_waterfallChartOptions' - The options that determine the presentation of a waterfall visual.
+newWaterfallChartConfiguration ::
+  WaterfallChartConfiguration
+newWaterfallChartConfiguration =
+  WaterfallChartConfiguration'
+    { categoryAxisDisplayOptions =
+        Prelude.Nothing,
+      categoryAxisLabelOptions = Prelude.Nothing,
+      dataLabels = Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      legend = Prelude.Nothing,
+      primaryYAxisDisplayOptions = Prelude.Nothing,
+      primaryYAxisLabelOptions = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      visualPalette = Prelude.Nothing,
+      waterfallChartOptions = Prelude.Nothing
+    }
+
+-- | The options that determine the presentation of the category axis.
+waterfallChartConfiguration_categoryAxisDisplayOptions :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+waterfallChartConfiguration_categoryAxisDisplayOptions = Lens.lens (\WaterfallChartConfiguration' {categoryAxisDisplayOptions} -> categoryAxisDisplayOptions) (\s@WaterfallChartConfiguration' {} a -> s {categoryAxisDisplayOptions = a} :: WaterfallChartConfiguration)
+
+-- | The options that determine the presentation of the category axis label.
+waterfallChartConfiguration_categoryAxisLabelOptions :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+waterfallChartConfiguration_categoryAxisLabelOptions = Lens.lens (\WaterfallChartConfiguration' {categoryAxisLabelOptions} -> categoryAxisLabelOptions) (\s@WaterfallChartConfiguration' {} a -> s {categoryAxisLabelOptions = a} :: WaterfallChartConfiguration)
+
+-- | The data label configuration of a waterfall visual.
+waterfallChartConfiguration_dataLabels :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe DataLabelOptions)
+waterfallChartConfiguration_dataLabels = Lens.lens (\WaterfallChartConfiguration' {dataLabels} -> dataLabels) (\s@WaterfallChartConfiguration' {} a -> s {dataLabels = a} :: WaterfallChartConfiguration)
+
+-- | The field well configuration of a waterfall visual.
+waterfallChartConfiguration_fieldWells :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe WaterfallChartFieldWells)
+waterfallChartConfiguration_fieldWells = Lens.lens (\WaterfallChartConfiguration' {fieldWells} -> fieldWells) (\s@WaterfallChartConfiguration' {} a -> s {fieldWells = a} :: WaterfallChartConfiguration)
+
+-- | The legend configuration of a waterfall visual.
+waterfallChartConfiguration_legend :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe LegendOptions)
+waterfallChartConfiguration_legend = Lens.lens (\WaterfallChartConfiguration' {legend} -> legend) (\s@WaterfallChartConfiguration' {} a -> s {legend = a} :: WaterfallChartConfiguration)
+
+-- | The options that determine the presentation of the y-axis.
+waterfallChartConfiguration_primaryYAxisDisplayOptions :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe AxisDisplayOptions)
+waterfallChartConfiguration_primaryYAxisDisplayOptions = Lens.lens (\WaterfallChartConfiguration' {primaryYAxisDisplayOptions} -> primaryYAxisDisplayOptions) (\s@WaterfallChartConfiguration' {} a -> s {primaryYAxisDisplayOptions = a} :: WaterfallChartConfiguration)
+
+-- | The options that determine the presentation of the y-axis label.
+waterfallChartConfiguration_primaryYAxisLabelOptions :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+waterfallChartConfiguration_primaryYAxisLabelOptions = Lens.lens (\WaterfallChartConfiguration' {primaryYAxisLabelOptions} -> primaryYAxisLabelOptions) (\s@WaterfallChartConfiguration' {} a -> s {primaryYAxisLabelOptions = a} :: WaterfallChartConfiguration)
+
+-- | The sort configuration of a waterfall visual.
+waterfallChartConfiguration_sortConfiguration :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe WaterfallChartSortConfiguration)
+waterfallChartConfiguration_sortConfiguration = Lens.lens (\WaterfallChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@WaterfallChartConfiguration' {} a -> s {sortConfiguration = a} :: WaterfallChartConfiguration)
+
+-- | The visual palette configuration of a waterfall visual.
+waterfallChartConfiguration_visualPalette :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe VisualPalette)
+waterfallChartConfiguration_visualPalette = Lens.lens (\WaterfallChartConfiguration' {visualPalette} -> visualPalette) (\s@WaterfallChartConfiguration' {} a -> s {visualPalette = a} :: WaterfallChartConfiguration)
+
+-- | The options that determine the presentation of a waterfall visual.
+waterfallChartConfiguration_waterfallChartOptions :: Lens.Lens' WaterfallChartConfiguration (Prelude.Maybe WaterfallChartOptions)
+waterfallChartConfiguration_waterfallChartOptions = Lens.lens (\WaterfallChartConfiguration' {waterfallChartOptions} -> waterfallChartOptions) (\s@WaterfallChartConfiguration' {} a -> s {waterfallChartOptions = a} :: WaterfallChartConfiguration)
+
+instance Data.FromJSON WaterfallChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "WaterfallChartConfiguration"
+      ( \x ->
+          WaterfallChartConfiguration'
+            Prelude.<$> (x Data..:? "CategoryAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "CategoryAxisLabelOptions")
+            Prelude.<*> (x Data..:? "DataLabels")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "Legend")
+            Prelude.<*> (x Data..:? "PrimaryYAxisDisplayOptions")
+            Prelude.<*> (x Data..:? "PrimaryYAxisLabelOptions")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "VisualPalette")
+            Prelude.<*> (x Data..:? "WaterfallChartOptions")
+      )
+
+instance Prelude.Hashable WaterfallChartConfiguration where
+  hashWithSalt _salt WaterfallChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryAxisDisplayOptions
+      `Prelude.hashWithSalt` categoryAxisLabelOptions
+      `Prelude.hashWithSalt` dataLabels
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` legend
+      `Prelude.hashWithSalt` primaryYAxisDisplayOptions
+      `Prelude.hashWithSalt` primaryYAxisLabelOptions
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` visualPalette
+      `Prelude.hashWithSalt` waterfallChartOptions
+
+instance Prelude.NFData WaterfallChartConfiguration where
+  rnf WaterfallChartConfiguration' {..} =
+    Prelude.rnf categoryAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf categoryAxisLabelOptions
+      `Prelude.seq` Prelude.rnf dataLabels
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf legend
+      `Prelude.seq` Prelude.rnf primaryYAxisDisplayOptions
+      `Prelude.seq` Prelude.rnf primaryYAxisLabelOptions
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf visualPalette
+      `Prelude.seq` Prelude.rnf waterfallChartOptions
+
+instance Data.ToJSON WaterfallChartConfiguration where
+  toJSON WaterfallChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryAxisDisplayOptions" Data..=)
+              Prelude.<$> categoryAxisDisplayOptions,
+            ("CategoryAxisLabelOptions" Data..=)
+              Prelude.<$> categoryAxisLabelOptions,
+            ("DataLabels" Data..=) Prelude.<$> dataLabels,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("Legend" Data..=) Prelude.<$> legend,
+            ("PrimaryYAxisDisplayOptions" Data..=)
+              Prelude.<$> primaryYAxisDisplayOptions,
+            ("PrimaryYAxisLabelOptions" Data..=)
+              Prelude.<$> primaryYAxisLabelOptions,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("VisualPalette" Data..=) Prelude.<$> visualPalette,
+            ("WaterfallChartOptions" Data..=)
+              Prelude.<$> waterfallChartOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WaterfallChartFieldWells.hs b/gen/Amazonka/QuickSight/Types/WaterfallChartFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WaterfallChartFieldWells.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WaterfallChartFieldWells
+-- 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.QuickSight.Types.WaterfallChartFieldWells 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.QuickSight.Types.WaterfallChartAggregatedFieldWells
+
+-- | The field well configuration of a waterfall visual.
+--
+-- /See:/ 'newWaterfallChartFieldWells' smart constructor.
+data WaterfallChartFieldWells = WaterfallChartFieldWells'
+  { -- | The field well configuration of a waterfall visual.
+    waterfallChartAggregatedFieldWells :: Prelude.Maybe WaterfallChartAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WaterfallChartFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'waterfallChartAggregatedFieldWells', 'waterfallChartFieldWells_waterfallChartAggregatedFieldWells' - The field well configuration of a waterfall visual.
+newWaterfallChartFieldWells ::
+  WaterfallChartFieldWells
+newWaterfallChartFieldWells =
+  WaterfallChartFieldWells'
+    { waterfallChartAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The field well configuration of a waterfall visual.
+waterfallChartFieldWells_waterfallChartAggregatedFieldWells :: Lens.Lens' WaterfallChartFieldWells (Prelude.Maybe WaterfallChartAggregatedFieldWells)
+waterfallChartFieldWells_waterfallChartAggregatedFieldWells = Lens.lens (\WaterfallChartFieldWells' {waterfallChartAggregatedFieldWells} -> waterfallChartAggregatedFieldWells) (\s@WaterfallChartFieldWells' {} a -> s {waterfallChartAggregatedFieldWells = a} :: WaterfallChartFieldWells)
+
+instance Data.FromJSON WaterfallChartFieldWells where
+  parseJSON =
+    Data.withObject
+      "WaterfallChartFieldWells"
+      ( \x ->
+          WaterfallChartFieldWells'
+            Prelude.<$> (x Data..:? "WaterfallChartAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable WaterfallChartFieldWells where
+  hashWithSalt _salt WaterfallChartFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` waterfallChartAggregatedFieldWells
+
+instance Prelude.NFData WaterfallChartFieldWells where
+  rnf WaterfallChartFieldWells' {..} =
+    Prelude.rnf waterfallChartAggregatedFieldWells
+
+instance Data.ToJSON WaterfallChartFieldWells where
+  toJSON WaterfallChartFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("WaterfallChartAggregatedFieldWells" Data..=)
+              Prelude.<$> waterfallChartAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WaterfallChartOptions.hs b/gen/Amazonka/QuickSight/Types/WaterfallChartOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WaterfallChartOptions.hs
@@ -0,0 +1,81 @@
+{-# 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.QuickSight.Types.WaterfallChartOptions
+-- 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.QuickSight.Types.WaterfallChartOptions 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 options that determine the presentation of a waterfall visual.
+--
+-- /See:/ 'newWaterfallChartOptions' smart constructor.
+data WaterfallChartOptions = WaterfallChartOptions'
+  { -- | This option determines the total bar label of a waterfall visual.
+    totalBarLabel :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WaterfallChartOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'totalBarLabel', 'waterfallChartOptions_totalBarLabel' - This option determines the total bar label of a waterfall visual.
+newWaterfallChartOptions ::
+  WaterfallChartOptions
+newWaterfallChartOptions =
+  WaterfallChartOptions'
+    { totalBarLabel =
+        Prelude.Nothing
+    }
+
+-- | This option determines the total bar label of a waterfall visual.
+waterfallChartOptions_totalBarLabel :: Lens.Lens' WaterfallChartOptions (Prelude.Maybe Prelude.Text)
+waterfallChartOptions_totalBarLabel = Lens.lens (\WaterfallChartOptions' {totalBarLabel} -> totalBarLabel) (\s@WaterfallChartOptions' {} a -> s {totalBarLabel = a} :: WaterfallChartOptions)
+
+instance Data.FromJSON WaterfallChartOptions where
+  parseJSON =
+    Data.withObject
+      "WaterfallChartOptions"
+      ( \x ->
+          WaterfallChartOptions'
+            Prelude.<$> (x Data..:? "TotalBarLabel")
+      )
+
+instance Prelude.Hashable WaterfallChartOptions where
+  hashWithSalt _salt WaterfallChartOptions' {..} =
+    _salt `Prelude.hashWithSalt` totalBarLabel
+
+instance Prelude.NFData WaterfallChartOptions where
+  rnf WaterfallChartOptions' {..} =
+    Prelude.rnf totalBarLabel
+
+instance Data.ToJSON WaterfallChartOptions where
+  toJSON WaterfallChartOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TotalBarLabel" Data..=)
+              Prelude.<$> totalBarLabel
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WaterfallChartSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/WaterfallChartSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WaterfallChartSortConfiguration.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WaterfallChartSortConfiguration
+-- 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.QuickSight.Types.WaterfallChartSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a waterfall visual.
+--
+-- /See:/ 'newWaterfallChartSortConfiguration' smart constructor.
+data WaterfallChartSortConfiguration = WaterfallChartSortConfiguration'
+  { -- | The limit on the number of bar groups that are displayed.
+    breakdownItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of the category fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WaterfallChartSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'breakdownItemsLimit', 'waterfallChartSortConfiguration_breakdownItemsLimit' - The limit on the number of bar groups that are displayed.
+--
+-- 'categorySort', 'waterfallChartSortConfiguration_categorySort' - The sort configuration of the category fields.
+newWaterfallChartSortConfiguration ::
+  WaterfallChartSortConfiguration
+newWaterfallChartSortConfiguration =
+  WaterfallChartSortConfiguration'
+    { breakdownItemsLimit =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing
+    }
+
+-- | The limit on the number of bar groups that are displayed.
+waterfallChartSortConfiguration_breakdownItemsLimit :: Lens.Lens' WaterfallChartSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+waterfallChartSortConfiguration_breakdownItemsLimit = Lens.lens (\WaterfallChartSortConfiguration' {breakdownItemsLimit} -> breakdownItemsLimit) (\s@WaterfallChartSortConfiguration' {} a -> s {breakdownItemsLimit = a} :: WaterfallChartSortConfiguration)
+
+-- | The sort configuration of the category fields.
+waterfallChartSortConfiguration_categorySort :: Lens.Lens' WaterfallChartSortConfiguration (Prelude.Maybe [FieldSortOptions])
+waterfallChartSortConfiguration_categorySort = Lens.lens (\WaterfallChartSortConfiguration' {categorySort} -> categorySort) (\s@WaterfallChartSortConfiguration' {} a -> s {categorySort = a} :: WaterfallChartSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    WaterfallChartSortConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "WaterfallChartSortConfiguration"
+      ( \x ->
+          WaterfallChartSortConfiguration'
+            Prelude.<$> (x Data..:? "BreakdownItemsLimit")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    WaterfallChartSortConfiguration
+  where
+  hashWithSalt
+    _salt
+    WaterfallChartSortConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` breakdownItemsLimit
+        `Prelude.hashWithSalt` categorySort
+
+instance
+  Prelude.NFData
+    WaterfallChartSortConfiguration
+  where
+  rnf WaterfallChartSortConfiguration' {..} =
+    Prelude.rnf breakdownItemsLimit
+      `Prelude.seq` Prelude.rnf categorySort
+
+instance Data.ToJSON WaterfallChartSortConfiguration where
+  toJSON WaterfallChartSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BreakdownItemsLimit" Data..=)
+              Prelude.<$> breakdownItemsLimit,
+            ("CategorySort" Data..=) Prelude.<$> categorySort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WaterfallVisual.hs b/gen/Amazonka/QuickSight/Types/WaterfallVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WaterfallVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.WaterfallVisual
+-- 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.QuickSight.Types.WaterfallVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+import Amazonka.QuickSight.Types.WaterfallChartConfiguration
+
+-- | A waterfall chart.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/waterfall-chart.html Using waterfall charts>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newWaterfallVisual' smart constructor.
+data WaterfallVisual = WaterfallVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration for a waterfall visual.
+    chartConfiguration :: Prelude.Maybe WaterfallChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers.
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WaterfallVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'waterfallVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'waterfallVisual_chartConfiguration' - The configuration for a waterfall visual.
+--
+-- 'columnHierarchies', 'waterfallVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'waterfallVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'waterfallVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'waterfallVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+newWaterfallVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  WaterfallVisual
+newWaterfallVisual pVisualId_ =
+  WaterfallVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+waterfallVisual_actions :: Lens.Lens' WaterfallVisual (Prelude.Maybe [VisualCustomAction])
+waterfallVisual_actions = Lens.lens (\WaterfallVisual' {actions} -> actions) (\s@WaterfallVisual' {} a -> s {actions = a} :: WaterfallVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration for a waterfall visual.
+waterfallVisual_chartConfiguration :: Lens.Lens' WaterfallVisual (Prelude.Maybe WaterfallChartConfiguration)
+waterfallVisual_chartConfiguration = Lens.lens (\WaterfallVisual' {chartConfiguration} -> chartConfiguration) (\s@WaterfallVisual' {} a -> s {chartConfiguration = a} :: WaterfallVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+waterfallVisual_columnHierarchies :: Lens.Lens' WaterfallVisual (Prelude.Maybe [ColumnHierarchy])
+waterfallVisual_columnHierarchies = Lens.lens (\WaterfallVisual' {columnHierarchies} -> columnHierarchies) (\s@WaterfallVisual' {} a -> s {columnHierarchies = a} :: WaterfallVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+waterfallVisual_subtitle :: Lens.Lens' WaterfallVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+waterfallVisual_subtitle = Lens.lens (\WaterfallVisual' {subtitle} -> subtitle) (\s@WaterfallVisual' {} a -> s {subtitle = a} :: WaterfallVisual)
+
+-- | The title that is displayed on the visual.
+waterfallVisual_title :: Lens.Lens' WaterfallVisual (Prelude.Maybe VisualTitleLabelOptions)
+waterfallVisual_title = Lens.lens (\WaterfallVisual' {title} -> title) (\s@WaterfallVisual' {} a -> s {title = a} :: WaterfallVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers.
+waterfallVisual_visualId :: Lens.Lens' WaterfallVisual Prelude.Text
+waterfallVisual_visualId = Lens.lens (\WaterfallVisual' {visualId} -> visualId) (\s@WaterfallVisual' {} a -> s {visualId = a} :: WaterfallVisual)
+
+instance Data.FromJSON WaterfallVisual where
+  parseJSON =
+    Data.withObject
+      "WaterfallVisual"
+      ( \x ->
+          WaterfallVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable WaterfallVisual where
+  hashWithSalt _salt WaterfallVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData WaterfallVisual where
+  rnf WaterfallVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON WaterfallVisual where
+  toJSON WaterfallVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WhatIfPointScenario.hs b/gen/Amazonka/QuickSight/Types/WhatIfPointScenario.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WhatIfPointScenario.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WhatIfPointScenario
+-- 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.QuickSight.Types.WhatIfPointScenario where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides the forecast to meet the target for a particular date.
+--
+-- /See:/ 'newWhatIfPointScenario' smart constructor.
+data WhatIfPointScenario = WhatIfPointScenario'
+  { -- | The date that you need the forecast results for.
+    date :: Data.POSIX,
+    -- | The target value that you want to meet for the provided date.
+    value :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WhatIfPointScenario' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'date', 'whatIfPointScenario_date' - The date that you need the forecast results for.
+--
+-- 'value', 'whatIfPointScenario_value' - The target value that you want to meet for the provided date.
+newWhatIfPointScenario ::
+  -- | 'date'
+  Prelude.UTCTime ->
+  -- | 'value'
+  Prelude.Double ->
+  WhatIfPointScenario
+newWhatIfPointScenario pDate_ pValue_ =
+  WhatIfPointScenario'
+    { date =
+        Data._Time Lens.# pDate_,
+      value = pValue_
+    }
+
+-- | The date that you need the forecast results for.
+whatIfPointScenario_date :: Lens.Lens' WhatIfPointScenario Prelude.UTCTime
+whatIfPointScenario_date = Lens.lens (\WhatIfPointScenario' {date} -> date) (\s@WhatIfPointScenario' {} a -> s {date = a} :: WhatIfPointScenario) Prelude.. Data._Time
+
+-- | The target value that you want to meet for the provided date.
+whatIfPointScenario_value :: Lens.Lens' WhatIfPointScenario Prelude.Double
+whatIfPointScenario_value = Lens.lens (\WhatIfPointScenario' {value} -> value) (\s@WhatIfPointScenario' {} a -> s {value = a} :: WhatIfPointScenario)
+
+instance Data.FromJSON WhatIfPointScenario where
+  parseJSON =
+    Data.withObject
+      "WhatIfPointScenario"
+      ( \x ->
+          WhatIfPointScenario'
+            Prelude.<$> (x Data..: "Date")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable WhatIfPointScenario where
+  hashWithSalt _salt WhatIfPointScenario' {..} =
+    _salt
+      `Prelude.hashWithSalt` date
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData WhatIfPointScenario where
+  rnf WhatIfPointScenario' {..} =
+    Prelude.rnf date `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON WhatIfPointScenario where
+  toJSON WhatIfPointScenario' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Date" Data..= date),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WhatIfRangeScenario.hs b/gen/Amazonka/QuickSight/Types/WhatIfRangeScenario.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WhatIfRangeScenario.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WhatIfRangeScenario
+-- 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.QuickSight.Types.WhatIfRangeScenario where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides the forecast to meet the target for a particular date range.
+--
+-- /See:/ 'newWhatIfRangeScenario' smart constructor.
+data WhatIfRangeScenario = WhatIfRangeScenario'
+  { -- | The start date in the date range that you need the forecast results for.
+    startDate :: Data.POSIX,
+    -- | The end date in the date range that you need the forecast results for.
+    endDate :: Data.POSIX,
+    -- | The target value that you want to meet for the provided date range.
+    value :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WhatIfRangeScenario' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'startDate', 'whatIfRangeScenario_startDate' - The start date in the date range that you need the forecast results for.
+--
+-- 'endDate', 'whatIfRangeScenario_endDate' - The end date in the date range that you need the forecast results for.
+--
+-- 'value', 'whatIfRangeScenario_value' - The target value that you want to meet for the provided date range.
+newWhatIfRangeScenario ::
+  -- | 'startDate'
+  Prelude.UTCTime ->
+  -- | 'endDate'
+  Prelude.UTCTime ->
+  -- | 'value'
+  Prelude.Double ->
+  WhatIfRangeScenario
+newWhatIfRangeScenario pStartDate_ pEndDate_ pValue_ =
+  WhatIfRangeScenario'
+    { startDate =
+        Data._Time Lens.# pStartDate_,
+      endDate = Data._Time Lens.# pEndDate_,
+      value = pValue_
+    }
+
+-- | The start date in the date range that you need the forecast results for.
+whatIfRangeScenario_startDate :: Lens.Lens' WhatIfRangeScenario Prelude.UTCTime
+whatIfRangeScenario_startDate = Lens.lens (\WhatIfRangeScenario' {startDate} -> startDate) (\s@WhatIfRangeScenario' {} a -> s {startDate = a} :: WhatIfRangeScenario) Prelude.. Data._Time
+
+-- | The end date in the date range that you need the forecast results for.
+whatIfRangeScenario_endDate :: Lens.Lens' WhatIfRangeScenario Prelude.UTCTime
+whatIfRangeScenario_endDate = Lens.lens (\WhatIfRangeScenario' {endDate} -> endDate) (\s@WhatIfRangeScenario' {} a -> s {endDate = a} :: WhatIfRangeScenario) Prelude.. Data._Time
+
+-- | The target value that you want to meet for the provided date range.
+whatIfRangeScenario_value :: Lens.Lens' WhatIfRangeScenario Prelude.Double
+whatIfRangeScenario_value = Lens.lens (\WhatIfRangeScenario' {value} -> value) (\s@WhatIfRangeScenario' {} a -> s {value = a} :: WhatIfRangeScenario)
+
+instance Data.FromJSON WhatIfRangeScenario where
+  parseJSON =
+    Data.withObject
+      "WhatIfRangeScenario"
+      ( \x ->
+          WhatIfRangeScenario'
+            Prelude.<$> (x Data..: "StartDate")
+            Prelude.<*> (x Data..: "EndDate")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable WhatIfRangeScenario where
+  hashWithSalt _salt WhatIfRangeScenario' {..} =
+    _salt
+      `Prelude.hashWithSalt` startDate
+      `Prelude.hashWithSalt` endDate
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData WhatIfRangeScenario where
+  rnf WhatIfRangeScenario' {..} =
+    Prelude.rnf startDate
+      `Prelude.seq` Prelude.rnf endDate
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON WhatIfRangeScenario where
+  toJSON WhatIfRangeScenario' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("StartDate" Data..= startDate),
+            Prelude.Just ("EndDate" Data..= endDate),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WidgetStatus.hs b/gen/Amazonka/QuickSight/Types/WidgetStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WidgetStatus.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.QuickSight.Types.WidgetStatus
+-- 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.QuickSight.Types.WidgetStatus
+  ( WidgetStatus
+      ( ..,
+        WidgetStatus_DISABLED,
+        WidgetStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WidgetStatus = WidgetStatus'
+  { fromWidgetStatus ::
+      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 WidgetStatus_DISABLED :: WidgetStatus
+pattern WidgetStatus_DISABLED = WidgetStatus' "DISABLED"
+
+pattern WidgetStatus_ENABLED :: WidgetStatus
+pattern WidgetStatus_ENABLED = WidgetStatus' "ENABLED"
+
+{-# COMPLETE
+  WidgetStatus_DISABLED,
+  WidgetStatus_ENABLED,
+  WidgetStatus'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudAggregatedFieldWells.hs b/gen/Amazonka/QuickSight/Types/WordCloudAggregatedFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudAggregatedFieldWells.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WordCloudAggregatedFieldWells
+-- 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.QuickSight.Types.WordCloudAggregatedFieldWells 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.QuickSight.Types.DimensionField
+import Amazonka.QuickSight.Types.MeasureField
+
+-- | The aggregated field wells of a word cloud.
+--
+-- /See:/ 'newWordCloudAggregatedFieldWells' smart constructor.
+data WordCloudAggregatedFieldWells = WordCloudAggregatedFieldWells'
+  { -- | The group by field well of a word cloud. Values are grouped by group by
+    -- fields.
+    groupBy :: Prelude.Maybe [DimensionField],
+    -- | The size field well of a word cloud. Values are aggregated based on
+    -- group by fields.
+    size :: Prelude.Maybe [MeasureField]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WordCloudAggregatedFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupBy', 'wordCloudAggregatedFieldWells_groupBy' - The group by field well of a word cloud. Values are grouped by group by
+-- fields.
+--
+-- 'size', 'wordCloudAggregatedFieldWells_size' - The size field well of a word cloud. Values are aggregated based on
+-- group by fields.
+newWordCloudAggregatedFieldWells ::
+  WordCloudAggregatedFieldWells
+newWordCloudAggregatedFieldWells =
+  WordCloudAggregatedFieldWells'
+    { groupBy =
+        Prelude.Nothing,
+      size = Prelude.Nothing
+    }
+
+-- | The group by field well of a word cloud. Values are grouped by group by
+-- fields.
+wordCloudAggregatedFieldWells_groupBy :: Lens.Lens' WordCloudAggregatedFieldWells (Prelude.Maybe [DimensionField])
+wordCloudAggregatedFieldWells_groupBy = Lens.lens (\WordCloudAggregatedFieldWells' {groupBy} -> groupBy) (\s@WordCloudAggregatedFieldWells' {} a -> s {groupBy = a} :: WordCloudAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+-- | The size field well of a word cloud. Values are aggregated based on
+-- group by fields.
+wordCloudAggregatedFieldWells_size :: Lens.Lens' WordCloudAggregatedFieldWells (Prelude.Maybe [MeasureField])
+wordCloudAggregatedFieldWells_size = Lens.lens (\WordCloudAggregatedFieldWells' {size} -> size) (\s@WordCloudAggregatedFieldWells' {} a -> s {size = a} :: WordCloudAggregatedFieldWells) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON WordCloudAggregatedFieldWells where
+  parseJSON =
+    Data.withObject
+      "WordCloudAggregatedFieldWells"
+      ( \x ->
+          WordCloudAggregatedFieldWells'
+            Prelude.<$> (x Data..:? "GroupBy" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Size" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    WordCloudAggregatedFieldWells
+  where
+  hashWithSalt _salt WordCloudAggregatedFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupBy
+      `Prelude.hashWithSalt` size
+
+instance Prelude.NFData WordCloudAggregatedFieldWells where
+  rnf WordCloudAggregatedFieldWells' {..} =
+    Prelude.rnf groupBy `Prelude.seq` Prelude.rnf size
+
+instance Data.ToJSON WordCloudAggregatedFieldWells where
+  toJSON WordCloudAggregatedFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GroupBy" Data..=) Prelude.<$> groupBy,
+            ("Size" Data..=) Prelude.<$> size
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudChartConfiguration.hs b/gen/Amazonka/QuickSight/Types/WordCloudChartConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudChartConfiguration.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.QuickSight.Types.WordCloudChartConfiguration
+-- 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.QuickSight.Types.WordCloudChartConfiguration 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.QuickSight.Types.ChartAxisLabelOptions
+import Amazonka.QuickSight.Types.WordCloudFieldWells
+import Amazonka.QuickSight.Types.WordCloudOptions
+import Amazonka.QuickSight.Types.WordCloudSortConfiguration
+
+-- | The configuration of a word cloud visual.
+--
+-- /See:/ 'newWordCloudChartConfiguration' smart constructor.
+data WordCloudChartConfiguration = WordCloudChartConfiguration'
+  { -- | The label options (label text, label visibility, and sort icon
+    -- visibility) for the word cloud category.
+    categoryLabelOptions :: Prelude.Maybe ChartAxisLabelOptions,
+    -- | The field wells of the visual.
+    fieldWells :: Prelude.Maybe WordCloudFieldWells,
+    -- | The sort configuration of a word cloud visual.
+    sortConfiguration :: Prelude.Maybe WordCloudSortConfiguration,
+    -- | The options for a word cloud visual.
+    wordCloudOptions :: Prelude.Maybe WordCloudOptions
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WordCloudChartConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryLabelOptions', 'wordCloudChartConfiguration_categoryLabelOptions' - The label options (label text, label visibility, and sort icon
+-- visibility) for the word cloud category.
+--
+-- 'fieldWells', 'wordCloudChartConfiguration_fieldWells' - The field wells of the visual.
+--
+-- 'sortConfiguration', 'wordCloudChartConfiguration_sortConfiguration' - The sort configuration of a word cloud visual.
+--
+-- 'wordCloudOptions', 'wordCloudChartConfiguration_wordCloudOptions' - The options for a word cloud visual.
+newWordCloudChartConfiguration ::
+  WordCloudChartConfiguration
+newWordCloudChartConfiguration =
+  WordCloudChartConfiguration'
+    { categoryLabelOptions =
+        Prelude.Nothing,
+      fieldWells = Prelude.Nothing,
+      sortConfiguration = Prelude.Nothing,
+      wordCloudOptions = Prelude.Nothing
+    }
+
+-- | The label options (label text, label visibility, and sort icon
+-- visibility) for the word cloud category.
+wordCloudChartConfiguration_categoryLabelOptions :: Lens.Lens' WordCloudChartConfiguration (Prelude.Maybe ChartAxisLabelOptions)
+wordCloudChartConfiguration_categoryLabelOptions = Lens.lens (\WordCloudChartConfiguration' {categoryLabelOptions} -> categoryLabelOptions) (\s@WordCloudChartConfiguration' {} a -> s {categoryLabelOptions = a} :: WordCloudChartConfiguration)
+
+-- | The field wells of the visual.
+wordCloudChartConfiguration_fieldWells :: Lens.Lens' WordCloudChartConfiguration (Prelude.Maybe WordCloudFieldWells)
+wordCloudChartConfiguration_fieldWells = Lens.lens (\WordCloudChartConfiguration' {fieldWells} -> fieldWells) (\s@WordCloudChartConfiguration' {} a -> s {fieldWells = a} :: WordCloudChartConfiguration)
+
+-- | The sort configuration of a word cloud visual.
+wordCloudChartConfiguration_sortConfiguration :: Lens.Lens' WordCloudChartConfiguration (Prelude.Maybe WordCloudSortConfiguration)
+wordCloudChartConfiguration_sortConfiguration = Lens.lens (\WordCloudChartConfiguration' {sortConfiguration} -> sortConfiguration) (\s@WordCloudChartConfiguration' {} a -> s {sortConfiguration = a} :: WordCloudChartConfiguration)
+
+-- | The options for a word cloud visual.
+wordCloudChartConfiguration_wordCloudOptions :: Lens.Lens' WordCloudChartConfiguration (Prelude.Maybe WordCloudOptions)
+wordCloudChartConfiguration_wordCloudOptions = Lens.lens (\WordCloudChartConfiguration' {wordCloudOptions} -> wordCloudOptions) (\s@WordCloudChartConfiguration' {} a -> s {wordCloudOptions = a} :: WordCloudChartConfiguration)
+
+instance Data.FromJSON WordCloudChartConfiguration where
+  parseJSON =
+    Data.withObject
+      "WordCloudChartConfiguration"
+      ( \x ->
+          WordCloudChartConfiguration'
+            Prelude.<$> (x Data..:? "CategoryLabelOptions")
+            Prelude.<*> (x Data..:? "FieldWells")
+            Prelude.<*> (x Data..:? "SortConfiguration")
+            Prelude.<*> (x Data..:? "WordCloudOptions")
+      )
+
+instance Prelude.Hashable WordCloudChartConfiguration where
+  hashWithSalt _salt WordCloudChartConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryLabelOptions
+      `Prelude.hashWithSalt` fieldWells
+      `Prelude.hashWithSalt` sortConfiguration
+      `Prelude.hashWithSalt` wordCloudOptions
+
+instance Prelude.NFData WordCloudChartConfiguration where
+  rnf WordCloudChartConfiguration' {..} =
+    Prelude.rnf categoryLabelOptions
+      `Prelude.seq` Prelude.rnf fieldWells
+      `Prelude.seq` Prelude.rnf sortConfiguration
+      `Prelude.seq` Prelude.rnf wordCloudOptions
+
+instance Data.ToJSON WordCloudChartConfiguration where
+  toJSON WordCloudChartConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryLabelOptions" Data..=)
+              Prelude.<$> categoryLabelOptions,
+            ("FieldWells" Data..=) Prelude.<$> fieldWells,
+            ("SortConfiguration" Data..=)
+              Prelude.<$> sortConfiguration,
+            ("WordCloudOptions" Data..=)
+              Prelude.<$> wordCloudOptions
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudCloudLayout.hs b/gen/Amazonka/QuickSight/Types/WordCloudCloudLayout.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudCloudLayout.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.QuickSight.Types.WordCloudCloudLayout
+-- 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.QuickSight.Types.WordCloudCloudLayout
+  ( WordCloudCloudLayout
+      ( ..,
+        WordCloudCloudLayout_FLUID,
+        WordCloudCloudLayout_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WordCloudCloudLayout = WordCloudCloudLayout'
+  { fromWordCloudCloudLayout ::
+      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 WordCloudCloudLayout_FLUID :: WordCloudCloudLayout
+pattern WordCloudCloudLayout_FLUID = WordCloudCloudLayout' "FLUID"
+
+pattern WordCloudCloudLayout_NORMAL :: WordCloudCloudLayout
+pattern WordCloudCloudLayout_NORMAL = WordCloudCloudLayout' "NORMAL"
+
+{-# COMPLETE
+  WordCloudCloudLayout_FLUID,
+  WordCloudCloudLayout_NORMAL,
+  WordCloudCloudLayout'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudFieldWells.hs b/gen/Amazonka/QuickSight/Types/WordCloudFieldWells.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudFieldWells.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.QuickSight.Types.WordCloudFieldWells
+-- 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.QuickSight.Types.WordCloudFieldWells 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.QuickSight.Types.WordCloudAggregatedFieldWells
+
+-- | The field wells of a word cloud visual.
+--
+-- This is a union type structure. For this structure to be valid, only one
+-- of the attributes can be defined.
+--
+-- /See:/ 'newWordCloudFieldWells' smart constructor.
+data WordCloudFieldWells = WordCloudFieldWells'
+  { -- | The aggregated field wells of a word cloud.
+    wordCloudAggregatedFieldWells :: Prelude.Maybe WordCloudAggregatedFieldWells
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WordCloudFieldWells' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'wordCloudAggregatedFieldWells', 'wordCloudFieldWells_wordCloudAggregatedFieldWells' - The aggregated field wells of a word cloud.
+newWordCloudFieldWells ::
+  WordCloudFieldWells
+newWordCloudFieldWells =
+  WordCloudFieldWells'
+    { wordCloudAggregatedFieldWells =
+        Prelude.Nothing
+    }
+
+-- | The aggregated field wells of a word cloud.
+wordCloudFieldWells_wordCloudAggregatedFieldWells :: Lens.Lens' WordCloudFieldWells (Prelude.Maybe WordCloudAggregatedFieldWells)
+wordCloudFieldWells_wordCloudAggregatedFieldWells = Lens.lens (\WordCloudFieldWells' {wordCloudAggregatedFieldWells} -> wordCloudAggregatedFieldWells) (\s@WordCloudFieldWells' {} a -> s {wordCloudAggregatedFieldWells = a} :: WordCloudFieldWells)
+
+instance Data.FromJSON WordCloudFieldWells where
+  parseJSON =
+    Data.withObject
+      "WordCloudFieldWells"
+      ( \x ->
+          WordCloudFieldWells'
+            Prelude.<$> (x Data..:? "WordCloudAggregatedFieldWells")
+      )
+
+instance Prelude.Hashable WordCloudFieldWells where
+  hashWithSalt _salt WordCloudFieldWells' {..} =
+    _salt
+      `Prelude.hashWithSalt` wordCloudAggregatedFieldWells
+
+instance Prelude.NFData WordCloudFieldWells where
+  rnf WordCloudFieldWells' {..} =
+    Prelude.rnf wordCloudAggregatedFieldWells
+
+instance Data.ToJSON WordCloudFieldWells where
+  toJSON WordCloudFieldWells' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("WordCloudAggregatedFieldWells" Data..=)
+              Prelude.<$> wordCloudAggregatedFieldWells
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudOptions.hs b/gen/Amazonka/QuickSight/Types/WordCloudOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudOptions.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.QuickSight.Types.WordCloudOptions
+-- 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.QuickSight.Types.WordCloudOptions 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.QuickSight.Types.WordCloudCloudLayout
+import Amazonka.QuickSight.Types.WordCloudWordCasing
+import Amazonka.QuickSight.Types.WordCloudWordOrientation
+import Amazonka.QuickSight.Types.WordCloudWordPadding
+import Amazonka.QuickSight.Types.WordCloudWordScaling
+
+-- | The word cloud options for a word cloud visual.
+--
+-- /See:/ 'newWordCloudOptions' smart constructor.
+data WordCloudOptions = WordCloudOptions'
+  { -- | The cloud layout options (fluid, normal) of a word cloud.
+    cloudLayout :: Prelude.Maybe WordCloudCloudLayout,
+    -- | The length limit of each word from 1-100.
+    maximumStringLength :: Prelude.Maybe Prelude.Natural,
+    -- | The word casing options (lower_case, existing_case) for the words in a
+    -- word cloud.
+    wordCasing :: Prelude.Maybe WordCloudWordCasing,
+    -- | The word orientation options (horizontal, horizontal_and_vertical) for
+    -- the words in a word cloud.
+    wordOrientation :: Prelude.Maybe WordCloudWordOrientation,
+    -- | The word padding options (none, small, medium, large) for the words in a
+    -- word cloud.
+    wordPadding :: Prelude.Maybe WordCloudWordPadding,
+    -- | The word scaling options (emphasize, normal) for the words in a word
+    -- cloud.
+    wordScaling :: Prelude.Maybe WordCloudWordScaling
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WordCloudOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cloudLayout', 'wordCloudOptions_cloudLayout' - The cloud layout options (fluid, normal) of a word cloud.
+--
+-- 'maximumStringLength', 'wordCloudOptions_maximumStringLength' - The length limit of each word from 1-100.
+--
+-- 'wordCasing', 'wordCloudOptions_wordCasing' - The word casing options (lower_case, existing_case) for the words in a
+-- word cloud.
+--
+-- 'wordOrientation', 'wordCloudOptions_wordOrientation' - The word orientation options (horizontal, horizontal_and_vertical) for
+-- the words in a word cloud.
+--
+-- 'wordPadding', 'wordCloudOptions_wordPadding' - The word padding options (none, small, medium, large) for the words in a
+-- word cloud.
+--
+-- 'wordScaling', 'wordCloudOptions_wordScaling' - The word scaling options (emphasize, normal) for the words in a word
+-- cloud.
+newWordCloudOptions ::
+  WordCloudOptions
+newWordCloudOptions =
+  WordCloudOptions'
+    { cloudLayout = Prelude.Nothing,
+      maximumStringLength = Prelude.Nothing,
+      wordCasing = Prelude.Nothing,
+      wordOrientation = Prelude.Nothing,
+      wordPadding = Prelude.Nothing,
+      wordScaling = Prelude.Nothing
+    }
+
+-- | The cloud layout options (fluid, normal) of a word cloud.
+wordCloudOptions_cloudLayout :: Lens.Lens' WordCloudOptions (Prelude.Maybe WordCloudCloudLayout)
+wordCloudOptions_cloudLayout = Lens.lens (\WordCloudOptions' {cloudLayout} -> cloudLayout) (\s@WordCloudOptions' {} a -> s {cloudLayout = a} :: WordCloudOptions)
+
+-- | The length limit of each word from 1-100.
+wordCloudOptions_maximumStringLength :: Lens.Lens' WordCloudOptions (Prelude.Maybe Prelude.Natural)
+wordCloudOptions_maximumStringLength = Lens.lens (\WordCloudOptions' {maximumStringLength} -> maximumStringLength) (\s@WordCloudOptions' {} a -> s {maximumStringLength = a} :: WordCloudOptions)
+
+-- | The word casing options (lower_case, existing_case) for the words in a
+-- word cloud.
+wordCloudOptions_wordCasing :: Lens.Lens' WordCloudOptions (Prelude.Maybe WordCloudWordCasing)
+wordCloudOptions_wordCasing = Lens.lens (\WordCloudOptions' {wordCasing} -> wordCasing) (\s@WordCloudOptions' {} a -> s {wordCasing = a} :: WordCloudOptions)
+
+-- | The word orientation options (horizontal, horizontal_and_vertical) for
+-- the words in a word cloud.
+wordCloudOptions_wordOrientation :: Lens.Lens' WordCloudOptions (Prelude.Maybe WordCloudWordOrientation)
+wordCloudOptions_wordOrientation = Lens.lens (\WordCloudOptions' {wordOrientation} -> wordOrientation) (\s@WordCloudOptions' {} a -> s {wordOrientation = a} :: WordCloudOptions)
+
+-- | The word padding options (none, small, medium, large) for the words in a
+-- word cloud.
+wordCloudOptions_wordPadding :: Lens.Lens' WordCloudOptions (Prelude.Maybe WordCloudWordPadding)
+wordCloudOptions_wordPadding = Lens.lens (\WordCloudOptions' {wordPadding} -> wordPadding) (\s@WordCloudOptions' {} a -> s {wordPadding = a} :: WordCloudOptions)
+
+-- | The word scaling options (emphasize, normal) for the words in a word
+-- cloud.
+wordCloudOptions_wordScaling :: Lens.Lens' WordCloudOptions (Prelude.Maybe WordCloudWordScaling)
+wordCloudOptions_wordScaling = Lens.lens (\WordCloudOptions' {wordScaling} -> wordScaling) (\s@WordCloudOptions' {} a -> s {wordScaling = a} :: WordCloudOptions)
+
+instance Data.FromJSON WordCloudOptions where
+  parseJSON =
+    Data.withObject
+      "WordCloudOptions"
+      ( \x ->
+          WordCloudOptions'
+            Prelude.<$> (x Data..:? "CloudLayout")
+            Prelude.<*> (x Data..:? "MaximumStringLength")
+            Prelude.<*> (x Data..:? "WordCasing")
+            Prelude.<*> (x Data..:? "WordOrientation")
+            Prelude.<*> (x Data..:? "WordPadding")
+            Prelude.<*> (x Data..:? "WordScaling")
+      )
+
+instance Prelude.Hashable WordCloudOptions where
+  hashWithSalt _salt WordCloudOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` cloudLayout
+      `Prelude.hashWithSalt` maximumStringLength
+      `Prelude.hashWithSalt` wordCasing
+      `Prelude.hashWithSalt` wordOrientation
+      `Prelude.hashWithSalt` wordPadding
+      `Prelude.hashWithSalt` wordScaling
+
+instance Prelude.NFData WordCloudOptions where
+  rnf WordCloudOptions' {..} =
+    Prelude.rnf cloudLayout
+      `Prelude.seq` Prelude.rnf maximumStringLength
+      `Prelude.seq` Prelude.rnf wordCasing
+      `Prelude.seq` Prelude.rnf wordOrientation
+      `Prelude.seq` Prelude.rnf wordPadding
+      `Prelude.seq` Prelude.rnf wordScaling
+
+instance Data.ToJSON WordCloudOptions where
+  toJSON WordCloudOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CloudLayout" Data..=) Prelude.<$> cloudLayout,
+            ("MaximumStringLength" Data..=)
+              Prelude.<$> maximumStringLength,
+            ("WordCasing" Data..=) Prelude.<$> wordCasing,
+            ("WordOrientation" Data..=)
+              Prelude.<$> wordOrientation,
+            ("WordPadding" Data..=) Prelude.<$> wordPadding,
+            ("WordScaling" Data..=) Prelude.<$> wordScaling
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudSortConfiguration.hs b/gen/Amazonka/QuickSight/Types/WordCloudSortConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudSortConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.Types.WordCloudSortConfiguration
+-- 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.QuickSight.Types.WordCloudSortConfiguration 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.QuickSight.Types.FieldSortOptions
+import Amazonka.QuickSight.Types.ItemsLimitConfiguration
+
+-- | The sort configuration of a word cloud visual.
+--
+-- /See:/ 'newWordCloudSortConfiguration' smart constructor.
+data WordCloudSortConfiguration = WordCloudSortConfiguration'
+  { -- | The limit on the number of groups that are displayed in a word cloud.
+    categoryItemsLimit :: Prelude.Maybe ItemsLimitConfiguration,
+    -- | The sort configuration of group by fields.
+    categorySort :: Prelude.Maybe [FieldSortOptions]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WordCloudSortConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoryItemsLimit', 'wordCloudSortConfiguration_categoryItemsLimit' - The limit on the number of groups that are displayed in a word cloud.
+--
+-- 'categorySort', 'wordCloudSortConfiguration_categorySort' - The sort configuration of group by fields.
+newWordCloudSortConfiguration ::
+  WordCloudSortConfiguration
+newWordCloudSortConfiguration =
+  WordCloudSortConfiguration'
+    { categoryItemsLimit =
+        Prelude.Nothing,
+      categorySort = Prelude.Nothing
+    }
+
+-- | The limit on the number of groups that are displayed in a word cloud.
+wordCloudSortConfiguration_categoryItemsLimit :: Lens.Lens' WordCloudSortConfiguration (Prelude.Maybe ItemsLimitConfiguration)
+wordCloudSortConfiguration_categoryItemsLimit = Lens.lens (\WordCloudSortConfiguration' {categoryItemsLimit} -> categoryItemsLimit) (\s@WordCloudSortConfiguration' {} a -> s {categoryItemsLimit = a} :: WordCloudSortConfiguration)
+
+-- | The sort configuration of group by fields.
+wordCloudSortConfiguration_categorySort :: Lens.Lens' WordCloudSortConfiguration (Prelude.Maybe [FieldSortOptions])
+wordCloudSortConfiguration_categorySort = Lens.lens (\WordCloudSortConfiguration' {categorySort} -> categorySort) (\s@WordCloudSortConfiguration' {} a -> s {categorySort = a} :: WordCloudSortConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON WordCloudSortConfiguration where
+  parseJSON =
+    Data.withObject
+      "WordCloudSortConfiguration"
+      ( \x ->
+          WordCloudSortConfiguration'
+            Prelude.<$> (x Data..:? "CategoryItemsLimit")
+            Prelude.<*> (x Data..:? "CategorySort" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable WordCloudSortConfiguration where
+  hashWithSalt _salt WordCloudSortConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoryItemsLimit
+      `Prelude.hashWithSalt` categorySort
+
+instance Prelude.NFData WordCloudSortConfiguration where
+  rnf WordCloudSortConfiguration' {..} =
+    Prelude.rnf categoryItemsLimit
+      `Prelude.seq` Prelude.rnf categorySort
+
+instance Data.ToJSON WordCloudSortConfiguration where
+  toJSON WordCloudSortConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoryItemsLimit" Data..=)
+              Prelude.<$> categoryItemsLimit,
+            ("CategorySort" Data..=) Prelude.<$> categorySort
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudVisual.hs b/gen/Amazonka/QuickSight/Types/WordCloudVisual.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudVisual.hs
@@ -0,0 +1,167 @@
+{-# 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.QuickSight.Types.WordCloudVisual
+-- 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.QuickSight.Types.WordCloudVisual 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.QuickSight.Types.ColumnHierarchy
+import Amazonka.QuickSight.Types.VisualCustomAction
+import Amazonka.QuickSight.Types.VisualSubtitleLabelOptions
+import Amazonka.QuickSight.Types.VisualTitleLabelOptions
+import Amazonka.QuickSight.Types.WordCloudChartConfiguration
+
+-- | A word cloud.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/word-cloud.html Using word clouds>
+-- in the /Amazon QuickSight User Guide/.
+--
+-- /See:/ 'newWordCloudVisual' smart constructor.
+data WordCloudVisual = WordCloudVisual'
+  { -- | The list of custom actions that are configured for a visual.
+    actions :: Prelude.Maybe [VisualCustomAction],
+    -- | The configuration settings of the visual.
+    chartConfiguration :: Prelude.Maybe WordCloudChartConfiguration,
+    -- | The column hierarchy that is used during drill-downs and drill-ups.
+    columnHierarchies :: Prelude.Maybe [ColumnHierarchy],
+    -- | The subtitle that is displayed on the visual.
+    subtitle :: Prelude.Maybe VisualSubtitleLabelOptions,
+    -- | The title that is displayed on the visual.
+    title :: Prelude.Maybe VisualTitleLabelOptions,
+    -- | The unique identifier of a visual. This identifier must be unique within
+    -- the context of a dashboard, template, or analysis. Two dashboards,
+    -- analyses, or templates can have visuals with the same identifiers..
+    visualId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WordCloudVisual' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'wordCloudVisual_actions' - The list of custom actions that are configured for a visual.
+--
+-- 'chartConfiguration', 'wordCloudVisual_chartConfiguration' - The configuration settings of the visual.
+--
+-- 'columnHierarchies', 'wordCloudVisual_columnHierarchies' - The column hierarchy that is used during drill-downs and drill-ups.
+--
+-- 'subtitle', 'wordCloudVisual_subtitle' - The subtitle that is displayed on the visual.
+--
+-- 'title', 'wordCloudVisual_title' - The title that is displayed on the visual.
+--
+-- 'visualId', 'wordCloudVisual_visualId' - The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+newWordCloudVisual ::
+  -- | 'visualId'
+  Prelude.Text ->
+  WordCloudVisual
+newWordCloudVisual pVisualId_ =
+  WordCloudVisual'
+    { actions = Prelude.Nothing,
+      chartConfiguration = Prelude.Nothing,
+      columnHierarchies = Prelude.Nothing,
+      subtitle = Prelude.Nothing,
+      title = Prelude.Nothing,
+      visualId = pVisualId_
+    }
+
+-- | The list of custom actions that are configured for a visual.
+wordCloudVisual_actions :: Lens.Lens' WordCloudVisual (Prelude.Maybe [VisualCustomAction])
+wordCloudVisual_actions = Lens.lens (\WordCloudVisual' {actions} -> actions) (\s@WordCloudVisual' {} a -> s {actions = a} :: WordCloudVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration settings of the visual.
+wordCloudVisual_chartConfiguration :: Lens.Lens' WordCloudVisual (Prelude.Maybe WordCloudChartConfiguration)
+wordCloudVisual_chartConfiguration = Lens.lens (\WordCloudVisual' {chartConfiguration} -> chartConfiguration) (\s@WordCloudVisual' {} a -> s {chartConfiguration = a} :: WordCloudVisual)
+
+-- | The column hierarchy that is used during drill-downs and drill-ups.
+wordCloudVisual_columnHierarchies :: Lens.Lens' WordCloudVisual (Prelude.Maybe [ColumnHierarchy])
+wordCloudVisual_columnHierarchies = Lens.lens (\WordCloudVisual' {columnHierarchies} -> columnHierarchies) (\s@WordCloudVisual' {} a -> s {columnHierarchies = a} :: WordCloudVisual) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subtitle that is displayed on the visual.
+wordCloudVisual_subtitle :: Lens.Lens' WordCloudVisual (Prelude.Maybe VisualSubtitleLabelOptions)
+wordCloudVisual_subtitle = Lens.lens (\WordCloudVisual' {subtitle} -> subtitle) (\s@WordCloudVisual' {} a -> s {subtitle = a} :: WordCloudVisual)
+
+-- | The title that is displayed on the visual.
+wordCloudVisual_title :: Lens.Lens' WordCloudVisual (Prelude.Maybe VisualTitleLabelOptions)
+wordCloudVisual_title = Lens.lens (\WordCloudVisual' {title} -> title) (\s@WordCloudVisual' {} a -> s {title = a} :: WordCloudVisual)
+
+-- | The unique identifier of a visual. This identifier must be unique within
+-- the context of a dashboard, template, or analysis. Two dashboards,
+-- analyses, or templates can have visuals with the same identifiers..
+wordCloudVisual_visualId :: Lens.Lens' WordCloudVisual Prelude.Text
+wordCloudVisual_visualId = Lens.lens (\WordCloudVisual' {visualId} -> visualId) (\s@WordCloudVisual' {} a -> s {visualId = a} :: WordCloudVisual)
+
+instance Data.FromJSON WordCloudVisual where
+  parseJSON =
+    Data.withObject
+      "WordCloudVisual"
+      ( \x ->
+          WordCloudVisual'
+            Prelude.<$> (x Data..:? "Actions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ChartConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ColumnHierarchies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Subtitle")
+            Prelude.<*> (x Data..:? "Title")
+            Prelude.<*> (x Data..: "VisualId")
+      )
+
+instance Prelude.Hashable WordCloudVisual where
+  hashWithSalt _salt WordCloudVisual' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chartConfiguration
+      `Prelude.hashWithSalt` columnHierarchies
+      `Prelude.hashWithSalt` subtitle
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` visualId
+
+instance Prelude.NFData WordCloudVisual where
+  rnf WordCloudVisual' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chartConfiguration
+      `Prelude.seq` Prelude.rnf columnHierarchies
+      `Prelude.seq` Prelude.rnf subtitle
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf visualId
+
+instance Data.ToJSON WordCloudVisual where
+  toJSON WordCloudVisual' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Actions" Data..=) Prelude.<$> actions,
+            ("ChartConfiguration" Data..=)
+              Prelude.<$> chartConfiguration,
+            ("ColumnHierarchies" Data..=)
+              Prelude.<$> columnHierarchies,
+            ("Subtitle" Data..=) Prelude.<$> subtitle,
+            ("Title" Data..=) Prelude.<$> title,
+            Prelude.Just ("VisualId" Data..= visualId)
+          ]
+      )
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudWordCasing.hs b/gen/Amazonka/QuickSight/Types/WordCloudWordCasing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudWordCasing.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.QuickSight.Types.WordCloudWordCasing
+-- 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.QuickSight.Types.WordCloudWordCasing
+  ( WordCloudWordCasing
+      ( ..,
+        WordCloudWordCasing_EXISTING_CASE,
+        WordCloudWordCasing_LOWER_CASE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WordCloudWordCasing = WordCloudWordCasing'
+  { fromWordCloudWordCasing ::
+      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 WordCloudWordCasing_EXISTING_CASE :: WordCloudWordCasing
+pattern WordCloudWordCasing_EXISTING_CASE = WordCloudWordCasing' "EXISTING_CASE"
+
+pattern WordCloudWordCasing_LOWER_CASE :: WordCloudWordCasing
+pattern WordCloudWordCasing_LOWER_CASE = WordCloudWordCasing' "LOWER_CASE"
+
+{-# COMPLETE
+  WordCloudWordCasing_EXISTING_CASE,
+  WordCloudWordCasing_LOWER_CASE,
+  WordCloudWordCasing'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudWordOrientation.hs b/gen/Amazonka/QuickSight/Types/WordCloudWordOrientation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudWordOrientation.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.QuickSight.Types.WordCloudWordOrientation
+-- 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.QuickSight.Types.WordCloudWordOrientation
+  ( WordCloudWordOrientation
+      ( ..,
+        WordCloudWordOrientation_HORIZONTAL,
+        WordCloudWordOrientation_HORIZONTAL_AND_VERTICAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WordCloudWordOrientation = WordCloudWordOrientation'
+  { fromWordCloudWordOrientation ::
+      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 WordCloudWordOrientation_HORIZONTAL :: WordCloudWordOrientation
+pattern WordCloudWordOrientation_HORIZONTAL = WordCloudWordOrientation' "HORIZONTAL"
+
+pattern WordCloudWordOrientation_HORIZONTAL_AND_VERTICAL :: WordCloudWordOrientation
+pattern WordCloudWordOrientation_HORIZONTAL_AND_VERTICAL = WordCloudWordOrientation' "HORIZONTAL_AND_VERTICAL"
+
+{-# COMPLETE
+  WordCloudWordOrientation_HORIZONTAL,
+  WordCloudWordOrientation_HORIZONTAL_AND_VERTICAL,
+  WordCloudWordOrientation'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudWordPadding.hs b/gen/Amazonka/QuickSight/Types/WordCloudWordPadding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudWordPadding.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.QuickSight.Types.WordCloudWordPadding
+-- 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.QuickSight.Types.WordCloudWordPadding
+  ( WordCloudWordPadding
+      ( ..,
+        WordCloudWordPadding_LARGE,
+        WordCloudWordPadding_MEDIUM,
+        WordCloudWordPadding_NONE,
+        WordCloudWordPadding_SMALL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WordCloudWordPadding = WordCloudWordPadding'
+  { fromWordCloudWordPadding ::
+      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 WordCloudWordPadding_LARGE :: WordCloudWordPadding
+pattern WordCloudWordPadding_LARGE = WordCloudWordPadding' "LARGE"
+
+pattern WordCloudWordPadding_MEDIUM :: WordCloudWordPadding
+pattern WordCloudWordPadding_MEDIUM = WordCloudWordPadding' "MEDIUM"
+
+pattern WordCloudWordPadding_NONE :: WordCloudWordPadding
+pattern WordCloudWordPadding_NONE = WordCloudWordPadding' "NONE"
+
+pattern WordCloudWordPadding_SMALL :: WordCloudWordPadding
+pattern WordCloudWordPadding_SMALL = WordCloudWordPadding' "SMALL"
+
+{-# COMPLETE
+  WordCloudWordPadding_LARGE,
+  WordCloudWordPadding_MEDIUM,
+  WordCloudWordPadding_NONE,
+  WordCloudWordPadding_SMALL,
+  WordCloudWordPadding'
+  #-}
diff --git a/gen/Amazonka/QuickSight/Types/WordCloudWordScaling.hs b/gen/Amazonka/QuickSight/Types/WordCloudWordScaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/Types/WordCloudWordScaling.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.QuickSight.Types.WordCloudWordScaling
+-- 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.QuickSight.Types.WordCloudWordScaling
+  ( WordCloudWordScaling
+      ( ..,
+        WordCloudWordScaling_EMPHASIZE,
+        WordCloudWordScaling_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WordCloudWordScaling = WordCloudWordScaling'
+  { fromWordCloudWordScaling ::
+      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 WordCloudWordScaling_EMPHASIZE :: WordCloudWordScaling
+pattern WordCloudWordScaling_EMPHASIZE = WordCloudWordScaling' "EMPHASIZE"
+
+pattern WordCloudWordScaling_NORMAL :: WordCloudWordScaling
+pattern WordCloudWordScaling_NORMAL = WordCloudWordScaling' "NORMAL"
+
+{-# COMPLETE
+  WordCloudWordScaling_EMPHASIZE,
+  WordCloudWordScaling_NORMAL,
+  WordCloudWordScaling'
+  #-}
diff --git a/gen/Amazonka/QuickSight/UntagResource.hs b/gen/Amazonka/QuickSight/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UntagResource.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a tag or tags from a resource.
+module Amazonka.QuickSight.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_requestId,
+    untagResourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to untag.
+    resourceArn :: Prelude.Text,
+    -- | The keys of the key-value pairs for the resource tag or tags assigned to
+    -- 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:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to untag.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The keys of the key-value pairs for the resource tag or tags assigned to
+-- the resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to untag.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The keys of the key-value pairs for the resource tag or tags assigned to
+-- 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.receiveJSON
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat
+      ["/resources/", Data.toBS resourceArn, "/tags"]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["keys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: 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:
+--
+-- 'requestId', 'untagResourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'untagResourceResponse_status' - The HTTP status of the request.
+newUntagResourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pStatus_ =
+  UntagResourceResponse'
+    { requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+untagResourceResponse_requestId :: Lens.Lens' UntagResourceResponse (Prelude.Maybe Prelude.Text)
+untagResourceResponse_requestId = Lens.lens (\UntagResourceResponse' {requestId} -> requestId) (\s@UntagResourceResponse' {} a -> s {requestId = a} :: UntagResourceResponse)
+
+-- | The HTTP status of the request.
+untagResourceResponse_status :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_status = Lens.lens (\UntagResourceResponse' {status} -> status) (\s@UntagResourceResponse' {} a -> s {status = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateAccountCustomization.hs b/gen/Amazonka/QuickSight/UpdateAccountCustomization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateAccountCustomization.hs
@@ -0,0 +1,285 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateAccountCustomization
+-- 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 Amazon QuickSight customizations for the current Amazon Web
+-- Services Region. Currently, the only customization that you can use is a
+-- theme.
+--
+-- You can use customizations for your Amazon Web Services account or, if
+-- you specify a namespace, for a Amazon QuickSight namespace instead.
+-- Customizations that apply to a namespace override customizations that
+-- apply to an Amazon Web Services account. To find out which
+-- customizations apply, use the @DescribeAccountCustomization@ API
+-- operation.
+module Amazonka.QuickSight.UpdateAccountCustomization
+  ( -- * Creating a Request
+    UpdateAccountCustomization (..),
+    newUpdateAccountCustomization,
+
+    -- * Request Lenses
+    updateAccountCustomization_namespace,
+    updateAccountCustomization_awsAccountId,
+    updateAccountCustomization_accountCustomization,
+
+    -- * Destructuring the Response
+    UpdateAccountCustomizationResponse (..),
+    newUpdateAccountCustomizationResponse,
+
+    -- * Response Lenses
+    updateAccountCustomizationResponse_accountCustomization,
+    updateAccountCustomizationResponse_arn,
+    updateAccountCustomizationResponse_awsAccountId,
+    updateAccountCustomizationResponse_namespace,
+    updateAccountCustomizationResponse_requestId,
+    updateAccountCustomizationResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAccountCustomization' smart constructor.
+data UpdateAccountCustomization = UpdateAccountCustomization'
+  { -- | The namespace that you want to update Amazon QuickSight customizations
+    -- for.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that you want to update
+    -- Amazon QuickSight customizations for.
+    awsAccountId :: Prelude.Text,
+    -- | The Amazon QuickSight customizations you\'re updating in the current
+    -- Amazon Web Services Region.
+    accountCustomization :: AccountCustomization
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountCustomization' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'namespace', 'updateAccountCustomization_namespace' - The namespace that you want to update Amazon QuickSight customizations
+-- for.
+--
+-- 'awsAccountId', 'updateAccountCustomization_awsAccountId' - The ID for the Amazon Web Services account that you want to update
+-- Amazon QuickSight customizations for.
+--
+-- 'accountCustomization', 'updateAccountCustomization_accountCustomization' - The Amazon QuickSight customizations you\'re updating in the current
+-- Amazon Web Services Region.
+newUpdateAccountCustomization ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'accountCustomization'
+  AccountCustomization ->
+  UpdateAccountCustomization
+newUpdateAccountCustomization
+  pAwsAccountId_
+  pAccountCustomization_ =
+    UpdateAccountCustomization'
+      { namespace =
+          Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        accountCustomization = pAccountCustomization_
+      }
+
+-- | The namespace that you want to update Amazon QuickSight customizations
+-- for.
+updateAccountCustomization_namespace :: Lens.Lens' UpdateAccountCustomization (Prelude.Maybe Prelude.Text)
+updateAccountCustomization_namespace = Lens.lens (\UpdateAccountCustomization' {namespace} -> namespace) (\s@UpdateAccountCustomization' {} a -> s {namespace = a} :: UpdateAccountCustomization)
+
+-- | The ID for the Amazon Web Services account that you want to update
+-- Amazon QuickSight customizations for.
+updateAccountCustomization_awsAccountId :: Lens.Lens' UpdateAccountCustomization Prelude.Text
+updateAccountCustomization_awsAccountId = Lens.lens (\UpdateAccountCustomization' {awsAccountId} -> awsAccountId) (\s@UpdateAccountCustomization' {} a -> s {awsAccountId = a} :: UpdateAccountCustomization)
+
+-- | The Amazon QuickSight customizations you\'re updating in the current
+-- Amazon Web Services Region.
+updateAccountCustomization_accountCustomization :: Lens.Lens' UpdateAccountCustomization AccountCustomization
+updateAccountCustomization_accountCustomization = Lens.lens (\UpdateAccountCustomization' {accountCustomization} -> accountCustomization) (\s@UpdateAccountCustomization' {} a -> s {accountCustomization = a} :: UpdateAccountCustomization)
+
+instance Core.AWSRequest UpdateAccountCustomization where
+  type
+    AWSResponse UpdateAccountCustomization =
+      UpdateAccountCustomizationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAccountCustomizationResponse'
+            Prelude.<$> (x Data..?> "AccountCustomization")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "AwsAccountId")
+            Prelude.<*> (x Data..?> "Namespace")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAccountCustomization where
+  hashWithSalt _salt UpdateAccountCustomization' {..} =
+    _salt
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` accountCustomization
+
+instance Prelude.NFData UpdateAccountCustomization where
+  rnf UpdateAccountCustomization' {..} =
+    Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf accountCustomization
+
+instance Data.ToHeaders UpdateAccountCustomization where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAccountCustomization where
+  toJSON UpdateAccountCustomization' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "AccountCustomization"
+                  Data..= accountCustomization
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateAccountCustomization where
+  toPath UpdateAccountCustomization' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/customizations"
+      ]
+
+instance Data.ToQuery UpdateAccountCustomization where
+  toQuery UpdateAccountCustomization' {..} =
+    Prelude.mconcat ["namespace" Data.=: namespace]
+
+-- | /See:/ 'newUpdateAccountCustomizationResponse' smart constructor.
+data UpdateAccountCustomizationResponse = UpdateAccountCustomizationResponse'
+  { -- | The Amazon QuickSight customizations you\'re updating in the current
+    -- Amazon Web Services Region.
+    accountCustomization :: Prelude.Maybe AccountCustomization,
+    -- | The Amazon Resource Name (ARN) for the updated customization for this
+    -- Amazon Web Services account.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the Amazon Web Services account that you want to update
+    -- Amazon QuickSight customizations for.
+    awsAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The namespace associated with the customization that you\'re updating.
+    namespace :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountCustomizationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountCustomization', 'updateAccountCustomizationResponse_accountCustomization' - The Amazon QuickSight customizations you\'re updating in the current
+-- Amazon Web Services Region.
+--
+-- 'arn', 'updateAccountCustomizationResponse_arn' - The Amazon Resource Name (ARN) for the updated customization for this
+-- Amazon Web Services account.
+--
+-- 'awsAccountId', 'updateAccountCustomizationResponse_awsAccountId' - The ID for the Amazon Web Services account that you want to update
+-- Amazon QuickSight customizations for.
+--
+-- 'namespace', 'updateAccountCustomizationResponse_namespace' - The namespace associated with the customization that you\'re updating.
+--
+-- 'requestId', 'updateAccountCustomizationResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateAccountCustomizationResponse_status' - The HTTP status of the request.
+newUpdateAccountCustomizationResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateAccountCustomizationResponse
+newUpdateAccountCustomizationResponse pStatus_ =
+  UpdateAccountCustomizationResponse'
+    { accountCustomization =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      awsAccountId = Prelude.Nothing,
+      namespace = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon QuickSight customizations you\'re updating in the current
+-- Amazon Web Services Region.
+updateAccountCustomizationResponse_accountCustomization :: Lens.Lens' UpdateAccountCustomizationResponse (Prelude.Maybe AccountCustomization)
+updateAccountCustomizationResponse_accountCustomization = Lens.lens (\UpdateAccountCustomizationResponse' {accountCustomization} -> accountCustomization) (\s@UpdateAccountCustomizationResponse' {} a -> s {accountCustomization = a} :: UpdateAccountCustomizationResponse)
+
+-- | The Amazon Resource Name (ARN) for the updated customization for this
+-- Amazon Web Services account.
+updateAccountCustomizationResponse_arn :: Lens.Lens' UpdateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+updateAccountCustomizationResponse_arn = Lens.lens (\UpdateAccountCustomizationResponse' {arn} -> arn) (\s@UpdateAccountCustomizationResponse' {} a -> s {arn = a} :: UpdateAccountCustomizationResponse)
+
+-- | The ID for the Amazon Web Services account that you want to update
+-- Amazon QuickSight customizations for.
+updateAccountCustomizationResponse_awsAccountId :: Lens.Lens' UpdateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+updateAccountCustomizationResponse_awsAccountId = Lens.lens (\UpdateAccountCustomizationResponse' {awsAccountId} -> awsAccountId) (\s@UpdateAccountCustomizationResponse' {} a -> s {awsAccountId = a} :: UpdateAccountCustomizationResponse)
+
+-- | The namespace associated with the customization that you\'re updating.
+updateAccountCustomizationResponse_namespace :: Lens.Lens' UpdateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+updateAccountCustomizationResponse_namespace = Lens.lens (\UpdateAccountCustomizationResponse' {namespace} -> namespace) (\s@UpdateAccountCustomizationResponse' {} a -> s {namespace = a} :: UpdateAccountCustomizationResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateAccountCustomizationResponse_requestId :: Lens.Lens' UpdateAccountCustomizationResponse (Prelude.Maybe Prelude.Text)
+updateAccountCustomizationResponse_requestId = Lens.lens (\UpdateAccountCustomizationResponse' {requestId} -> requestId) (\s@UpdateAccountCustomizationResponse' {} a -> s {requestId = a} :: UpdateAccountCustomizationResponse)
+
+-- | The HTTP status of the request.
+updateAccountCustomizationResponse_status :: Lens.Lens' UpdateAccountCustomizationResponse Prelude.Int
+updateAccountCustomizationResponse_status = Lens.lens (\UpdateAccountCustomizationResponse' {status} -> status) (\s@UpdateAccountCustomizationResponse' {} a -> s {status = a} :: UpdateAccountCustomizationResponse)
+
+instance
+  Prelude.NFData
+    UpdateAccountCustomizationResponse
+  where
+  rnf UpdateAccountCustomizationResponse' {..} =
+    Prelude.rnf accountCustomization
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateAccountSettings.hs b/gen/Amazonka/QuickSight/UpdateAccountSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateAccountSettings.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateAccountSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the Amazon QuickSight settings in your Amazon Web Services
+-- account.
+module Amazonka.QuickSight.UpdateAccountSettings
+  ( -- * Creating a Request
+    UpdateAccountSettings (..),
+    newUpdateAccountSettings,
+
+    -- * Request Lenses
+    updateAccountSettings_notificationEmail,
+    updateAccountSettings_terminationProtectionEnabled,
+    updateAccountSettings_awsAccountId,
+    updateAccountSettings_defaultNamespace,
+
+    -- * Destructuring the Response
+    UpdateAccountSettingsResponse (..),
+    newUpdateAccountSettingsResponse,
+
+    -- * Response Lenses
+    updateAccountSettingsResponse_requestId,
+    updateAccountSettingsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAccountSettings' smart constructor.
+data UpdateAccountSettings = UpdateAccountSettings'
+  { -- | The email address that you want Amazon QuickSight to send notifications
+    -- to regarding your Amazon Web Services account or Amazon QuickSight
+    -- subscription.
+    notificationEmail :: Prelude.Maybe Prelude.Text,
+    -- | A boolean value that determines whether or not an Amazon QuickSight
+    -- account can be deleted. A @True@ value doesn\'t allow the account to be
+    -- deleted and results in an error message if a user tries to make a
+    -- @DeleteAccountSubscription@ request. A @False@ value will allow the
+    -- account to be deleted.
+    terminationProtectionEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The ID for the Amazon Web Services account that contains the Amazon
+    -- QuickSight settings that you want to list.
+    awsAccountId :: Prelude.Text,
+    -- | The default namespace for this Amazon Web Services account. Currently,
+    -- the default is @default@. Identity and Access Management (IAM) users
+    -- that register for the first time with Amazon QuickSight provide an email
+    -- address that becomes associated with the default namespace.
+    defaultNamespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'notificationEmail', 'updateAccountSettings_notificationEmail' - The email address that you want Amazon QuickSight to send notifications
+-- to regarding your Amazon Web Services account or Amazon QuickSight
+-- subscription.
+--
+-- 'terminationProtectionEnabled', 'updateAccountSettings_terminationProtectionEnabled' - A boolean value that determines whether or not an Amazon QuickSight
+-- account can be deleted. A @True@ value doesn\'t allow the account to be
+-- deleted and results in an error message if a user tries to make a
+-- @DeleteAccountSubscription@ request. A @False@ value will allow the
+-- account to be deleted.
+--
+-- 'awsAccountId', 'updateAccountSettings_awsAccountId' - The ID for the Amazon Web Services account that contains the Amazon
+-- QuickSight settings that you want to list.
+--
+-- 'defaultNamespace', 'updateAccountSettings_defaultNamespace' - The default namespace for this Amazon Web Services account. Currently,
+-- the default is @default@. Identity and Access Management (IAM) users
+-- that register for the first time with Amazon QuickSight provide an email
+-- address that becomes associated with the default namespace.
+newUpdateAccountSettings ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'defaultNamespace'
+  Prelude.Text ->
+  UpdateAccountSettings
+newUpdateAccountSettings
+  pAwsAccountId_
+  pDefaultNamespace_ =
+    UpdateAccountSettings'
+      { notificationEmail =
+          Prelude.Nothing,
+        terminationProtectionEnabled = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        defaultNamespace = pDefaultNamespace_
+      }
+
+-- | The email address that you want Amazon QuickSight to send notifications
+-- to regarding your Amazon Web Services account or Amazon QuickSight
+-- subscription.
+updateAccountSettings_notificationEmail :: Lens.Lens' UpdateAccountSettings (Prelude.Maybe Prelude.Text)
+updateAccountSettings_notificationEmail = Lens.lens (\UpdateAccountSettings' {notificationEmail} -> notificationEmail) (\s@UpdateAccountSettings' {} a -> s {notificationEmail = a} :: UpdateAccountSettings)
+
+-- | A boolean value that determines whether or not an Amazon QuickSight
+-- account can be deleted. A @True@ value doesn\'t allow the account to be
+-- deleted and results in an error message if a user tries to make a
+-- @DeleteAccountSubscription@ request. A @False@ value will allow the
+-- account to be deleted.
+updateAccountSettings_terminationProtectionEnabled :: Lens.Lens' UpdateAccountSettings (Prelude.Maybe Prelude.Bool)
+updateAccountSettings_terminationProtectionEnabled = Lens.lens (\UpdateAccountSettings' {terminationProtectionEnabled} -> terminationProtectionEnabled) (\s@UpdateAccountSettings' {} a -> s {terminationProtectionEnabled = a} :: UpdateAccountSettings)
+
+-- | The ID for the Amazon Web Services account that contains the Amazon
+-- QuickSight settings that you want to list.
+updateAccountSettings_awsAccountId :: Lens.Lens' UpdateAccountSettings Prelude.Text
+updateAccountSettings_awsAccountId = Lens.lens (\UpdateAccountSettings' {awsAccountId} -> awsAccountId) (\s@UpdateAccountSettings' {} a -> s {awsAccountId = a} :: UpdateAccountSettings)
+
+-- | The default namespace for this Amazon Web Services account. Currently,
+-- the default is @default@. Identity and Access Management (IAM) users
+-- that register for the first time with Amazon QuickSight provide an email
+-- address that becomes associated with the default namespace.
+updateAccountSettings_defaultNamespace :: Lens.Lens' UpdateAccountSettings Prelude.Text
+updateAccountSettings_defaultNamespace = Lens.lens (\UpdateAccountSettings' {defaultNamespace} -> defaultNamespace) (\s@UpdateAccountSettings' {} a -> s {defaultNamespace = a} :: UpdateAccountSettings)
+
+instance Core.AWSRequest UpdateAccountSettings where
+  type
+    AWSResponse UpdateAccountSettings =
+      UpdateAccountSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAccountSettingsResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAccountSettings where
+  hashWithSalt _salt UpdateAccountSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` notificationEmail
+      `Prelude.hashWithSalt` terminationProtectionEnabled
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` defaultNamespace
+
+instance Prelude.NFData UpdateAccountSettings where
+  rnf UpdateAccountSettings' {..} =
+    Prelude.rnf notificationEmail
+      `Prelude.seq` Prelude.rnf terminationProtectionEnabled
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf defaultNamespace
+
+instance Data.ToHeaders UpdateAccountSettings where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAccountSettings where
+  toJSON UpdateAccountSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NotificationEmail" Data..=)
+              Prelude.<$> notificationEmail,
+            ("TerminationProtectionEnabled" Data..=)
+              Prelude.<$> terminationProtectionEnabled,
+            Prelude.Just
+              ("DefaultNamespace" Data..= defaultNamespace)
+          ]
+      )
+
+instance Data.ToPath UpdateAccountSettings where
+  toPath UpdateAccountSettings' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS awsAccountId, "/settings"]
+
+instance Data.ToQuery UpdateAccountSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAccountSettingsResponse' smart constructor.
+data UpdateAccountSettingsResponse = UpdateAccountSettingsResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'updateAccountSettingsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateAccountSettingsResponse_status' - The HTTP status of the request.
+newUpdateAccountSettingsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateAccountSettingsResponse
+newUpdateAccountSettingsResponse pStatus_ =
+  UpdateAccountSettingsResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+updateAccountSettingsResponse_requestId :: Lens.Lens' UpdateAccountSettingsResponse (Prelude.Maybe Prelude.Text)
+updateAccountSettingsResponse_requestId = Lens.lens (\UpdateAccountSettingsResponse' {requestId} -> requestId) (\s@UpdateAccountSettingsResponse' {} a -> s {requestId = a} :: UpdateAccountSettingsResponse)
+
+-- | The HTTP status of the request.
+updateAccountSettingsResponse_status :: Lens.Lens' UpdateAccountSettingsResponse Prelude.Int
+updateAccountSettingsResponse_status = Lens.lens (\UpdateAccountSettingsResponse' {status} -> status) (\s@UpdateAccountSettingsResponse' {} a -> s {status = a} :: UpdateAccountSettingsResponse)
+
+instance Prelude.NFData UpdateAccountSettingsResponse where
+  rnf UpdateAccountSettingsResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateAnalysis.hs b/gen/Amazonka/QuickSight/UpdateAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateAnalysis.hs
@@ -0,0 +1,327 @@
+{-# 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.QuickSight.UpdateAnalysis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an analysis in Amazon QuickSight
+module Amazonka.QuickSight.UpdateAnalysis
+  ( -- * Creating a Request
+    UpdateAnalysis (..),
+    newUpdateAnalysis,
+
+    -- * Request Lenses
+    updateAnalysis_definition,
+    updateAnalysis_parameters,
+    updateAnalysis_sourceEntity,
+    updateAnalysis_themeArn,
+    updateAnalysis_awsAccountId,
+    updateAnalysis_analysisId,
+    updateAnalysis_name,
+
+    -- * Destructuring the Response
+    UpdateAnalysisResponse (..),
+    newUpdateAnalysisResponse,
+
+    -- * Response Lenses
+    updateAnalysisResponse_analysisId,
+    updateAnalysisResponse_arn,
+    updateAnalysisResponse_requestId,
+    updateAnalysisResponse_updateStatus,
+    updateAnalysisResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAnalysis' smart constructor.
+data UpdateAnalysis = UpdateAnalysis'
+  { -- | The definition of an analysis.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe AnalysisDefinition,
+    -- | The parameter names and override values that you want to use. An
+    -- analysis can have any parameter type, and some parameters might accept
+    -- multiple values.
+    parameters :: Prelude.Maybe Parameters,
+    -- | A source entity to use for the analysis that you\'re updating. This
+    -- metadata structure contains details that describe a source template and
+    -- one or more datasets.
+    sourceEntity :: Prelude.Maybe AnalysisSourceEntity,
+    -- | The Amazon Resource Name (ARN) for the theme to apply to the analysis
+    -- that you\'re creating. To see the theme in the Amazon QuickSight
+    -- console, make sure that you have access to it.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the analysis
+    -- that you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the analysis that you\'re updating. This ID displays in the
+    -- URL of the analysis.
+    analysisId :: Prelude.Text,
+    -- | A descriptive name for the analysis that you\'re updating. This name
+    -- displays for the analysis in the Amazon QuickSight console.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'definition', 'updateAnalysis_definition' - The definition of an analysis.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'parameters', 'updateAnalysis_parameters' - The parameter names and override values that you want to use. An
+-- analysis can have any parameter type, and some parameters might accept
+-- multiple values.
+--
+-- 'sourceEntity', 'updateAnalysis_sourceEntity' - A source entity to use for the analysis that you\'re updating. This
+-- metadata structure contains details that describe a source template and
+-- one or more datasets.
+--
+-- 'themeArn', 'updateAnalysis_themeArn' - The Amazon Resource Name (ARN) for the theme to apply to the analysis
+-- that you\'re creating. To see the theme in the Amazon QuickSight
+-- console, make sure that you have access to it.
+--
+-- 'awsAccountId', 'updateAnalysis_awsAccountId' - The ID of the Amazon Web Services account that contains the analysis
+-- that you\'re updating.
+--
+-- 'analysisId', 'updateAnalysis_analysisId' - The ID for the analysis that you\'re updating. This ID displays in the
+-- URL of the analysis.
+--
+-- 'name', 'updateAnalysis_name' - A descriptive name for the analysis that you\'re updating. This name
+-- displays for the analysis in the Amazon QuickSight console.
+newUpdateAnalysis ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateAnalysis
+newUpdateAnalysis pAwsAccountId_ pAnalysisId_ pName_ =
+  UpdateAnalysis'
+    { definition = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      sourceEntity = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      analysisId = pAnalysisId_,
+      name = pName_
+    }
+
+-- | The definition of an analysis.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+updateAnalysis_definition :: Lens.Lens' UpdateAnalysis (Prelude.Maybe AnalysisDefinition)
+updateAnalysis_definition = Lens.lens (\UpdateAnalysis' {definition} -> definition) (\s@UpdateAnalysis' {} a -> s {definition = a} :: UpdateAnalysis)
+
+-- | The parameter names and override values that you want to use. An
+-- analysis can have any parameter type, and some parameters might accept
+-- multiple values.
+updateAnalysis_parameters :: Lens.Lens' UpdateAnalysis (Prelude.Maybe Parameters)
+updateAnalysis_parameters = Lens.lens (\UpdateAnalysis' {parameters} -> parameters) (\s@UpdateAnalysis' {} a -> s {parameters = a} :: UpdateAnalysis)
+
+-- | A source entity to use for the analysis that you\'re updating. This
+-- metadata structure contains details that describe a source template and
+-- one or more datasets.
+updateAnalysis_sourceEntity :: Lens.Lens' UpdateAnalysis (Prelude.Maybe AnalysisSourceEntity)
+updateAnalysis_sourceEntity = Lens.lens (\UpdateAnalysis' {sourceEntity} -> sourceEntity) (\s@UpdateAnalysis' {} a -> s {sourceEntity = a} :: UpdateAnalysis)
+
+-- | The Amazon Resource Name (ARN) for the theme to apply to the analysis
+-- that you\'re creating. To see the theme in the Amazon QuickSight
+-- console, make sure that you have access to it.
+updateAnalysis_themeArn :: Lens.Lens' UpdateAnalysis (Prelude.Maybe Prelude.Text)
+updateAnalysis_themeArn = Lens.lens (\UpdateAnalysis' {themeArn} -> themeArn) (\s@UpdateAnalysis' {} a -> s {themeArn = a} :: UpdateAnalysis)
+
+-- | The ID of the Amazon Web Services account that contains the analysis
+-- that you\'re updating.
+updateAnalysis_awsAccountId :: Lens.Lens' UpdateAnalysis Prelude.Text
+updateAnalysis_awsAccountId = Lens.lens (\UpdateAnalysis' {awsAccountId} -> awsAccountId) (\s@UpdateAnalysis' {} a -> s {awsAccountId = a} :: UpdateAnalysis)
+
+-- | The ID for the analysis that you\'re updating. This ID displays in the
+-- URL of the analysis.
+updateAnalysis_analysisId :: Lens.Lens' UpdateAnalysis Prelude.Text
+updateAnalysis_analysisId = Lens.lens (\UpdateAnalysis' {analysisId} -> analysisId) (\s@UpdateAnalysis' {} a -> s {analysisId = a} :: UpdateAnalysis)
+
+-- | A descriptive name for the analysis that you\'re updating. This name
+-- displays for the analysis in the Amazon QuickSight console.
+updateAnalysis_name :: Lens.Lens' UpdateAnalysis Prelude.Text
+updateAnalysis_name = Lens.lens (\UpdateAnalysis' {name} -> name) (\s@UpdateAnalysis' {} a -> s {name = a} :: UpdateAnalysis)
+
+instance Core.AWSRequest UpdateAnalysis where
+  type
+    AWSResponse UpdateAnalysis =
+      UpdateAnalysisResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAnalysisResponse'
+            Prelude.<$> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "UpdateStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAnalysis where
+  hashWithSalt _salt UpdateAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` sourceEntity
+      `Prelude.hashWithSalt` themeArn
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateAnalysis where
+  rnf UpdateAnalysis' {..} =
+    Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf sourceEntity
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAnalysis where
+  toJSON UpdateAnalysis' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Definition" Data..=) Prelude.<$> definition,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("SourceEntity" Data..=) Prelude.<$> sourceEntity,
+            ("ThemeArn" Data..=) Prelude.<$> themeArn,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateAnalysis where
+  toPath UpdateAnalysis' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId
+      ]
+
+instance Data.ToQuery UpdateAnalysis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAnalysisResponse' smart constructor.
+data UpdateAnalysisResponse = UpdateAnalysisResponse'
+  { -- | The ID of the analysis.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the analysis that you\'re updating.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The update status of the last update that was made to the analysis.
+    updateStatus :: Prelude.Maybe ResourceStatus,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisId', 'updateAnalysisResponse_analysisId' - The ID of the analysis.
+--
+-- 'arn', 'updateAnalysisResponse_arn' - The ARN of the analysis that you\'re updating.
+--
+-- 'requestId', 'updateAnalysisResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'updateStatus', 'updateAnalysisResponse_updateStatus' - The update status of the last update that was made to the analysis.
+--
+-- 'status', 'updateAnalysisResponse_status' - The HTTP status of the request.
+newUpdateAnalysisResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateAnalysisResponse
+newUpdateAnalysisResponse pStatus_ =
+  UpdateAnalysisResponse'
+    { analysisId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      updateStatus = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the analysis.
+updateAnalysisResponse_analysisId :: Lens.Lens' UpdateAnalysisResponse (Prelude.Maybe Prelude.Text)
+updateAnalysisResponse_analysisId = Lens.lens (\UpdateAnalysisResponse' {analysisId} -> analysisId) (\s@UpdateAnalysisResponse' {} a -> s {analysisId = a} :: UpdateAnalysisResponse)
+
+-- | The ARN of the analysis that you\'re updating.
+updateAnalysisResponse_arn :: Lens.Lens' UpdateAnalysisResponse (Prelude.Maybe Prelude.Text)
+updateAnalysisResponse_arn = Lens.lens (\UpdateAnalysisResponse' {arn} -> arn) (\s@UpdateAnalysisResponse' {} a -> s {arn = a} :: UpdateAnalysisResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateAnalysisResponse_requestId :: Lens.Lens' UpdateAnalysisResponse (Prelude.Maybe Prelude.Text)
+updateAnalysisResponse_requestId = Lens.lens (\UpdateAnalysisResponse' {requestId} -> requestId) (\s@UpdateAnalysisResponse' {} a -> s {requestId = a} :: UpdateAnalysisResponse)
+
+-- | The update status of the last update that was made to the analysis.
+updateAnalysisResponse_updateStatus :: Lens.Lens' UpdateAnalysisResponse (Prelude.Maybe ResourceStatus)
+updateAnalysisResponse_updateStatus = Lens.lens (\UpdateAnalysisResponse' {updateStatus} -> updateStatus) (\s@UpdateAnalysisResponse' {} a -> s {updateStatus = a} :: UpdateAnalysisResponse)
+
+-- | The HTTP status of the request.
+updateAnalysisResponse_status :: Lens.Lens' UpdateAnalysisResponse Prelude.Int
+updateAnalysisResponse_status = Lens.lens (\UpdateAnalysisResponse' {status} -> status) (\s@UpdateAnalysisResponse' {} a -> s {status = a} :: UpdateAnalysisResponse)
+
+instance Prelude.NFData UpdateAnalysisResponse where
+  rnf UpdateAnalysisResponse' {..} =
+    Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf updateStatus
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateAnalysisPermissions.hs b/gen/Amazonka/QuickSight/UpdateAnalysisPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateAnalysisPermissions.hs
@@ -0,0 +1,277 @@
+{-# 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.QuickSight.UpdateAnalysisPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the read and write permissions for an analysis.
+module Amazonka.QuickSight.UpdateAnalysisPermissions
+  ( -- * Creating a Request
+    UpdateAnalysisPermissions (..),
+    newUpdateAnalysisPermissions,
+
+    -- * Request Lenses
+    updateAnalysisPermissions_grantPermissions,
+    updateAnalysisPermissions_revokePermissions,
+    updateAnalysisPermissions_awsAccountId,
+    updateAnalysisPermissions_analysisId,
+
+    -- * Destructuring the Response
+    UpdateAnalysisPermissionsResponse (..),
+    newUpdateAnalysisPermissionsResponse,
+
+    -- * Response Lenses
+    updateAnalysisPermissionsResponse_analysisArn,
+    updateAnalysisPermissionsResponse_analysisId,
+    updateAnalysisPermissionsResponse_permissions,
+    updateAnalysisPermissionsResponse_requestId,
+    updateAnalysisPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAnalysisPermissions' smart constructor.
+data UpdateAnalysisPermissions = UpdateAnalysisPermissions'
+  { -- | A structure that describes the permissions to add and the principal to
+    -- add them to.
+    grantPermissions :: Prelude.Maybe [ResourcePermission],
+    -- | A structure that describes the permissions to remove and the principal
+    -- to remove them from.
+    revokePermissions :: Prelude.Maybe [ResourcePermission],
+    -- | The ID of the Amazon Web Services account that contains the analysis
+    -- whose permissions you\'re updating. You must be using the Amazon Web
+    -- Services account that the analysis is in.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the analysis whose permissions you\'re updating. The ID is
+    -- part of the analysis URL.
+    analysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAnalysisPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantPermissions', 'updateAnalysisPermissions_grantPermissions' - A structure that describes the permissions to add and the principal to
+-- add them to.
+--
+-- 'revokePermissions', 'updateAnalysisPermissions_revokePermissions' - A structure that describes the permissions to remove and the principal
+-- to remove them from.
+--
+-- 'awsAccountId', 'updateAnalysisPermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the analysis
+-- whose permissions you\'re updating. You must be using the Amazon Web
+-- Services account that the analysis is in.
+--
+-- 'analysisId', 'updateAnalysisPermissions_analysisId' - The ID of the analysis whose permissions you\'re updating. The ID is
+-- part of the analysis URL.
+newUpdateAnalysisPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'analysisId'
+  Prelude.Text ->
+  UpdateAnalysisPermissions
+newUpdateAnalysisPermissions
+  pAwsAccountId_
+  pAnalysisId_ =
+    UpdateAnalysisPermissions'
+      { grantPermissions =
+          Prelude.Nothing,
+        revokePermissions = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        analysisId = pAnalysisId_
+      }
+
+-- | A structure that describes the permissions to add and the principal to
+-- add them to.
+updateAnalysisPermissions_grantPermissions :: Lens.Lens' UpdateAnalysisPermissions (Prelude.Maybe [ResourcePermission])
+updateAnalysisPermissions_grantPermissions = Lens.lens (\UpdateAnalysisPermissions' {grantPermissions} -> grantPermissions) (\s@UpdateAnalysisPermissions' {} a -> s {grantPermissions = a} :: UpdateAnalysisPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | A structure that describes the permissions to remove and the principal
+-- to remove them from.
+updateAnalysisPermissions_revokePermissions :: Lens.Lens' UpdateAnalysisPermissions (Prelude.Maybe [ResourcePermission])
+updateAnalysisPermissions_revokePermissions = Lens.lens (\UpdateAnalysisPermissions' {revokePermissions} -> revokePermissions) (\s@UpdateAnalysisPermissions' {} a -> s {revokePermissions = a} :: UpdateAnalysisPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Amazon Web Services account that contains the analysis
+-- whose permissions you\'re updating. You must be using the Amazon Web
+-- Services account that the analysis is in.
+updateAnalysisPermissions_awsAccountId :: Lens.Lens' UpdateAnalysisPermissions Prelude.Text
+updateAnalysisPermissions_awsAccountId = Lens.lens (\UpdateAnalysisPermissions' {awsAccountId} -> awsAccountId) (\s@UpdateAnalysisPermissions' {} a -> s {awsAccountId = a} :: UpdateAnalysisPermissions)
+
+-- | The ID of the analysis whose permissions you\'re updating. The ID is
+-- part of the analysis URL.
+updateAnalysisPermissions_analysisId :: Lens.Lens' UpdateAnalysisPermissions Prelude.Text
+updateAnalysisPermissions_analysisId = Lens.lens (\UpdateAnalysisPermissions' {analysisId} -> analysisId) (\s@UpdateAnalysisPermissions' {} a -> s {analysisId = a} :: UpdateAnalysisPermissions)
+
+instance Core.AWSRequest UpdateAnalysisPermissions where
+  type
+    AWSResponse UpdateAnalysisPermissions =
+      UpdateAnalysisPermissionsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAnalysisPermissionsResponse'
+            Prelude.<$> (x Data..?> "AnalysisArn")
+            Prelude.<*> (x Data..?> "AnalysisId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAnalysisPermissions where
+  hashWithSalt _salt UpdateAnalysisPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` analysisId
+
+instance Prelude.NFData UpdateAnalysisPermissions where
+  rnf UpdateAnalysisPermissions' {..} =
+    Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf analysisId
+
+instance Data.ToHeaders UpdateAnalysisPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAnalysisPermissions where
+  toJSON UpdateAnalysisPermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateAnalysisPermissions where
+  toPath UpdateAnalysisPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/analyses/",
+        Data.toBS analysisId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateAnalysisPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAnalysisPermissionsResponse' smart constructor.
+data UpdateAnalysisPermissionsResponse = UpdateAnalysisPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the analysis that you updated.
+    analysisArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the analysis that you updated permissions for.
+    analysisId :: Prelude.Maybe Prelude.Text,
+    -- | A structure that describes the principals and the resource-level
+    -- permissions on an analysis.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAnalysisPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisArn', 'updateAnalysisPermissionsResponse_analysisArn' - The Amazon Resource Name (ARN) of the analysis that you updated.
+--
+-- 'analysisId', 'updateAnalysisPermissionsResponse_analysisId' - The ID of the analysis that you updated permissions for.
+--
+-- 'permissions', 'updateAnalysisPermissionsResponse_permissions' - A structure that describes the principals and the resource-level
+-- permissions on an analysis.
+--
+-- 'requestId', 'updateAnalysisPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateAnalysisPermissionsResponse_status' - The HTTP status of the request.
+newUpdateAnalysisPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateAnalysisPermissionsResponse
+newUpdateAnalysisPermissionsResponse pStatus_ =
+  UpdateAnalysisPermissionsResponse'
+    { analysisArn =
+        Prelude.Nothing,
+      analysisId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the analysis that you updated.
+updateAnalysisPermissionsResponse_analysisArn :: Lens.Lens' UpdateAnalysisPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateAnalysisPermissionsResponse_analysisArn = Lens.lens (\UpdateAnalysisPermissionsResponse' {analysisArn} -> analysisArn) (\s@UpdateAnalysisPermissionsResponse' {} a -> s {analysisArn = a} :: UpdateAnalysisPermissionsResponse)
+
+-- | The ID of the analysis that you updated permissions for.
+updateAnalysisPermissionsResponse_analysisId :: Lens.Lens' UpdateAnalysisPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateAnalysisPermissionsResponse_analysisId = Lens.lens (\UpdateAnalysisPermissionsResponse' {analysisId} -> analysisId) (\s@UpdateAnalysisPermissionsResponse' {} a -> s {analysisId = a} :: UpdateAnalysisPermissionsResponse)
+
+-- | A structure that describes the principals and the resource-level
+-- permissions on an analysis.
+updateAnalysisPermissionsResponse_permissions :: Lens.Lens' UpdateAnalysisPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateAnalysisPermissionsResponse_permissions = Lens.lens (\UpdateAnalysisPermissionsResponse' {permissions} -> permissions) (\s@UpdateAnalysisPermissionsResponse' {} a -> s {permissions = a} :: UpdateAnalysisPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+updateAnalysisPermissionsResponse_requestId :: Lens.Lens' UpdateAnalysisPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateAnalysisPermissionsResponse_requestId = Lens.lens (\UpdateAnalysisPermissionsResponse' {requestId} -> requestId) (\s@UpdateAnalysisPermissionsResponse' {} a -> s {requestId = a} :: UpdateAnalysisPermissionsResponse)
+
+-- | The HTTP status of the request.
+updateAnalysisPermissionsResponse_status :: Lens.Lens' UpdateAnalysisPermissionsResponse Prelude.Int
+updateAnalysisPermissionsResponse_status = Lens.lens (\UpdateAnalysisPermissionsResponse' {status} -> status) (\s@UpdateAnalysisPermissionsResponse' {} a -> s {status = a} :: UpdateAnalysisPermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateAnalysisPermissionsResponse
+  where
+  rnf UpdateAnalysisPermissionsResponse' {..} =
+    Prelude.rnf analysisArn
+      `Prelude.seq` Prelude.rnf analysisId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateDashboard.hs b/gen/Amazonka/QuickSight/UpdateDashboard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDashboard.hs
@@ -0,0 +1,463 @@
+{-# 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.QuickSight.UpdateDashboard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a dashboard in an Amazon Web Services account.
+--
+-- Updating a Dashboard creates a new dashboard version but does not
+-- immediately publish the new version. You can update the published
+-- version of a dashboard by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardPublishedVersion.html UpdateDashboardPublishedVersion>@ @
+-- API operation.
+module Amazonka.QuickSight.UpdateDashboard
+  ( -- * Creating a Request
+    UpdateDashboard (..),
+    newUpdateDashboard,
+
+    -- * Request Lenses
+    updateDashboard_dashboardPublishOptions,
+    updateDashboard_definition,
+    updateDashboard_parameters,
+    updateDashboard_sourceEntity,
+    updateDashboard_themeArn,
+    updateDashboard_versionDescription,
+    updateDashboard_awsAccountId,
+    updateDashboard_dashboardId,
+    updateDashboard_name,
+
+    -- * Destructuring the Response
+    UpdateDashboardResponse (..),
+    newUpdateDashboardResponse,
+
+    -- * Response Lenses
+    updateDashboardResponse_arn,
+    updateDashboardResponse_creationStatus,
+    updateDashboardResponse_dashboardId,
+    updateDashboardResponse_requestId,
+    updateDashboardResponse_status,
+    updateDashboardResponse_versionArn,
+    updateDashboardResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDashboard' smart constructor.
+data UpdateDashboard = UpdateDashboard'
+  { -- | Options for publishing the dashboard when you create it:
+    --
+    -- -   @AvailabilityStatus@ for @AdHocFilteringOption@ - This status can be
+    --     either @ENABLED@ or @DISABLED@. When this is set to @DISABLED@,
+    --     Amazon QuickSight disables the left filter pane on the published
+    --     dashboard, which can be used for ad hoc (one-time) filtering. This
+    --     option is @ENABLED@ by default.
+    --
+    -- -   @AvailabilityStatus@ for @ExportToCSVOption@ - This status can be
+    --     either @ENABLED@ or @DISABLED@. The visual option to export data to
+    --     .CSV format isn\'t enabled when this is set to @DISABLED@. This
+    --     option is @ENABLED@ by default.
+    --
+    -- -   @VisibilityState@ for @SheetControlsOption@ - This visibility state
+    --     can be either @COLLAPSED@ or @EXPANDED@. This option is @COLLAPSED@
+    --     by default.
+    dashboardPublishOptions :: Prelude.Maybe DashboardPublishOptions,
+    -- | The definition of a dashboard.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe DashboardVersionDefinition,
+    -- | A structure that contains the parameters of the dashboard. These are
+    -- parameter overrides for a dashboard. A dashboard can have any type of
+    -- parameters, and some parameters might accept multiple values.
+    parameters :: Prelude.Maybe Parameters,
+    -- | The entity that you are using as a source when you update the dashboard.
+    -- In @SourceEntity@, you specify the type of object you\'re using as
+    -- source. You can only update a dashboard from a template, so you use a
+    -- @SourceTemplate@ entity. If you need to update a dashboard from an
+    -- analysis, first convert the analysis to a template by using the
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+    -- API operation. For @SourceTemplate@, specify the Amazon Resource Name
+    -- (ARN) of the source template. The @SourceTemplate@ ARN can contain any
+    -- Amazon Web Services account and any Amazon QuickSight-supported Amazon
+    -- Web Services Region.
+    --
+    -- Use the @DataSetReferences@ entity within @SourceTemplate@ to list the
+    -- replacement datasets for the placeholders listed in the original. The
+    -- schema in each dataset must match its placeholder.
+    sourceEntity :: Prelude.Maybe DashboardSourceEntity,
+    -- | The Amazon Resource Name (ARN) of the theme that is being used for this
+    -- dashboard. If you add a value for this field, it overrides the value
+    -- that was originally associated with the entity. The theme ARN must exist
+    -- in the same Amazon Web Services account where you create the dashboard.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | A description for the first version of the dashboard being created.
+    versionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text,
+    -- | The display name of the dashboard.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDashboard' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardPublishOptions', 'updateDashboard_dashboardPublishOptions' - Options for publishing the dashboard when you create it:
+--
+-- -   @AvailabilityStatus@ for @AdHocFilteringOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. When this is set to @DISABLED@,
+--     Amazon QuickSight disables the left filter pane on the published
+--     dashboard, which can be used for ad hoc (one-time) filtering. This
+--     option is @ENABLED@ by default.
+--
+-- -   @AvailabilityStatus@ for @ExportToCSVOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. The visual option to export data to
+--     .CSV format isn\'t enabled when this is set to @DISABLED@. This
+--     option is @ENABLED@ by default.
+--
+-- -   @VisibilityState@ for @SheetControlsOption@ - This visibility state
+--     can be either @COLLAPSED@ or @EXPANDED@. This option is @COLLAPSED@
+--     by default.
+--
+-- 'definition', 'updateDashboard_definition' - The definition of a dashboard.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'parameters', 'updateDashboard_parameters' - A structure that contains the parameters of the dashboard. These are
+-- parameter overrides for a dashboard. A dashboard can have any type of
+-- parameters, and some parameters might accept multiple values.
+--
+-- 'sourceEntity', 'updateDashboard_sourceEntity' - The entity that you are using as a source when you update the dashboard.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source. You can only update a dashboard from a template, so you use a
+-- @SourceTemplate@ entity. If you need to update a dashboard from an
+-- analysis, first convert the analysis to a template by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+-- API operation. For @SourceTemplate@, specify the Amazon Resource Name
+-- (ARN) of the source template. The @SourceTemplate@ ARN can contain any
+-- Amazon Web Services account and any Amazon QuickSight-supported Amazon
+-- Web Services Region.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ to list the
+-- replacement datasets for the placeholders listed in the original. The
+-- schema in each dataset must match its placeholder.
+--
+-- 'themeArn', 'updateDashboard_themeArn' - The Amazon Resource Name (ARN) of the theme that is being used for this
+-- dashboard. If you add a value for this field, it overrides the value
+-- that was originally associated with the entity. The theme ARN must exist
+-- in the same Amazon Web Services account where you create the dashboard.
+--
+-- 'versionDescription', 'updateDashboard_versionDescription' - A description for the first version of the dashboard being created.
+--
+-- 'awsAccountId', 'updateDashboard_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re updating.
+--
+-- 'dashboardId', 'updateDashboard_dashboardId' - The ID for the dashboard.
+--
+-- 'name', 'updateDashboard_name' - The display name of the dashboard.
+newUpdateDashboard ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateDashboard
+newUpdateDashboard
+  pAwsAccountId_
+  pDashboardId_
+  pName_ =
+    UpdateDashboard'
+      { dashboardPublishOptions =
+          Prelude.Nothing,
+        definition = Prelude.Nothing,
+        parameters = Prelude.Nothing,
+        sourceEntity = Prelude.Nothing,
+        themeArn = Prelude.Nothing,
+        versionDescription = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dashboardId = pDashboardId_,
+        name = pName_
+      }
+
+-- | Options for publishing the dashboard when you create it:
+--
+-- -   @AvailabilityStatus@ for @AdHocFilteringOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. When this is set to @DISABLED@,
+--     Amazon QuickSight disables the left filter pane on the published
+--     dashboard, which can be used for ad hoc (one-time) filtering. This
+--     option is @ENABLED@ by default.
+--
+-- -   @AvailabilityStatus@ for @ExportToCSVOption@ - This status can be
+--     either @ENABLED@ or @DISABLED@. The visual option to export data to
+--     .CSV format isn\'t enabled when this is set to @DISABLED@. This
+--     option is @ENABLED@ by default.
+--
+-- -   @VisibilityState@ for @SheetControlsOption@ - This visibility state
+--     can be either @COLLAPSED@ or @EXPANDED@. This option is @COLLAPSED@
+--     by default.
+updateDashboard_dashboardPublishOptions :: Lens.Lens' UpdateDashboard (Prelude.Maybe DashboardPublishOptions)
+updateDashboard_dashboardPublishOptions = Lens.lens (\UpdateDashboard' {dashboardPublishOptions} -> dashboardPublishOptions) (\s@UpdateDashboard' {} a -> s {dashboardPublishOptions = a} :: UpdateDashboard)
+
+-- | The definition of a dashboard.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+updateDashboard_definition :: Lens.Lens' UpdateDashboard (Prelude.Maybe DashboardVersionDefinition)
+updateDashboard_definition = Lens.lens (\UpdateDashboard' {definition} -> definition) (\s@UpdateDashboard' {} a -> s {definition = a} :: UpdateDashboard)
+
+-- | A structure that contains the parameters of the dashboard. These are
+-- parameter overrides for a dashboard. A dashboard can have any type of
+-- parameters, and some parameters might accept multiple values.
+updateDashboard_parameters :: Lens.Lens' UpdateDashboard (Prelude.Maybe Parameters)
+updateDashboard_parameters = Lens.lens (\UpdateDashboard' {parameters} -> parameters) (\s@UpdateDashboard' {} a -> s {parameters = a} :: UpdateDashboard)
+
+-- | The entity that you are using as a source when you update the dashboard.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source. You can only update a dashboard from a template, so you use a
+-- @SourceTemplate@ entity. If you need to update a dashboard from an
+-- analysis, first convert the analysis to a template by using the
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html CreateTemplate>@ @
+-- API operation. For @SourceTemplate@, specify the Amazon Resource Name
+-- (ARN) of the source template. The @SourceTemplate@ ARN can contain any
+-- Amazon Web Services account and any Amazon QuickSight-supported Amazon
+-- Web Services Region.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ to list the
+-- replacement datasets for the placeholders listed in the original. The
+-- schema in each dataset must match its placeholder.
+updateDashboard_sourceEntity :: Lens.Lens' UpdateDashboard (Prelude.Maybe DashboardSourceEntity)
+updateDashboard_sourceEntity = Lens.lens (\UpdateDashboard' {sourceEntity} -> sourceEntity) (\s@UpdateDashboard' {} a -> s {sourceEntity = a} :: UpdateDashboard)
+
+-- | The Amazon Resource Name (ARN) of the theme that is being used for this
+-- dashboard. If you add a value for this field, it overrides the value
+-- that was originally associated with the entity. The theme ARN must exist
+-- in the same Amazon Web Services account where you create the dashboard.
+updateDashboard_themeArn :: Lens.Lens' UpdateDashboard (Prelude.Maybe Prelude.Text)
+updateDashboard_themeArn = Lens.lens (\UpdateDashboard' {themeArn} -> themeArn) (\s@UpdateDashboard' {} a -> s {themeArn = a} :: UpdateDashboard)
+
+-- | A description for the first version of the dashboard being created.
+updateDashboard_versionDescription :: Lens.Lens' UpdateDashboard (Prelude.Maybe Prelude.Text)
+updateDashboard_versionDescription = Lens.lens (\UpdateDashboard' {versionDescription} -> versionDescription) (\s@UpdateDashboard' {} a -> s {versionDescription = a} :: UpdateDashboard)
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re updating.
+updateDashboard_awsAccountId :: Lens.Lens' UpdateDashboard Prelude.Text
+updateDashboard_awsAccountId = Lens.lens (\UpdateDashboard' {awsAccountId} -> awsAccountId) (\s@UpdateDashboard' {} a -> s {awsAccountId = a} :: UpdateDashboard)
+
+-- | The ID for the dashboard.
+updateDashboard_dashboardId :: Lens.Lens' UpdateDashboard Prelude.Text
+updateDashboard_dashboardId = Lens.lens (\UpdateDashboard' {dashboardId} -> dashboardId) (\s@UpdateDashboard' {} a -> s {dashboardId = a} :: UpdateDashboard)
+
+-- | The display name of the dashboard.
+updateDashboard_name :: Lens.Lens' UpdateDashboard Prelude.Text
+updateDashboard_name = Lens.lens (\UpdateDashboard' {name} -> name) (\s@UpdateDashboard' {} a -> s {name = a} :: UpdateDashboard)
+
+instance Core.AWSRequest UpdateDashboard where
+  type
+    AWSResponse UpdateDashboard =
+      UpdateDashboardResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDashboardResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "VersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDashboard where
+  hashWithSalt _salt UpdateDashboard' {..} =
+    _salt
+      `Prelude.hashWithSalt` dashboardPublishOptions
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` sourceEntity
+      `Prelude.hashWithSalt` themeArn
+      `Prelude.hashWithSalt` versionDescription
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateDashboard where
+  rnf UpdateDashboard' {..} =
+    Prelude.rnf dashboardPublishOptions
+      `Prelude.seq` Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf sourceEntity
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf versionDescription
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateDashboard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDashboard where
+  toJSON UpdateDashboard' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DashboardPublishOptions" Data..=)
+              Prelude.<$> dashboardPublishOptions,
+            ("Definition" Data..=) Prelude.<$> definition,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("SourceEntity" Data..=) Prelude.<$> sourceEntity,
+            ("ThemeArn" Data..=) Prelude.<$> themeArn,
+            ("VersionDescription" Data..=)
+              Prelude.<$> versionDescription,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateDashboard where
+  toPath UpdateDashboard' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId
+      ]
+
+instance Data.ToQuery UpdateDashboard where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDashboardResponse' smart constructor.
+data UpdateDashboardResponse = UpdateDashboardResponse'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The creation status of the request.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe Prelude.Int,
+    -- | The ARN of the dashboard, including the version number.
+    versionArn :: 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 'UpdateDashboardResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateDashboardResponse_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'creationStatus', 'updateDashboardResponse_creationStatus' - The creation status of the request.
+--
+-- 'dashboardId', 'updateDashboardResponse_dashboardId' - The ID for the dashboard.
+--
+-- 'requestId', 'updateDashboardResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateDashboardResponse_status' - The HTTP status of the request.
+--
+-- 'versionArn', 'updateDashboardResponse_versionArn' - The ARN of the dashboard, including the version number.
+--
+-- 'httpStatus', 'updateDashboardResponse_httpStatus' - The response's http status code.
+newUpdateDashboardResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateDashboardResponse
+newUpdateDashboardResponse pHttpStatus_ =
+  UpdateDashboardResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      versionArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+updateDashboardResponse_arn :: Lens.Lens' UpdateDashboardResponse (Prelude.Maybe Prelude.Text)
+updateDashboardResponse_arn = Lens.lens (\UpdateDashboardResponse' {arn} -> arn) (\s@UpdateDashboardResponse' {} a -> s {arn = a} :: UpdateDashboardResponse)
+
+-- | The creation status of the request.
+updateDashboardResponse_creationStatus :: Lens.Lens' UpdateDashboardResponse (Prelude.Maybe ResourceStatus)
+updateDashboardResponse_creationStatus = Lens.lens (\UpdateDashboardResponse' {creationStatus} -> creationStatus) (\s@UpdateDashboardResponse' {} a -> s {creationStatus = a} :: UpdateDashboardResponse)
+
+-- | The ID for the dashboard.
+updateDashboardResponse_dashboardId :: Lens.Lens' UpdateDashboardResponse (Prelude.Maybe Prelude.Text)
+updateDashboardResponse_dashboardId = Lens.lens (\UpdateDashboardResponse' {dashboardId} -> dashboardId) (\s@UpdateDashboardResponse' {} a -> s {dashboardId = a} :: UpdateDashboardResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateDashboardResponse_requestId :: Lens.Lens' UpdateDashboardResponse (Prelude.Maybe Prelude.Text)
+updateDashboardResponse_requestId = Lens.lens (\UpdateDashboardResponse' {requestId} -> requestId) (\s@UpdateDashboardResponse' {} a -> s {requestId = a} :: UpdateDashboardResponse)
+
+-- | The HTTP status of the request.
+updateDashboardResponse_status :: Lens.Lens' UpdateDashboardResponse (Prelude.Maybe Prelude.Int)
+updateDashboardResponse_status = Lens.lens (\UpdateDashboardResponse' {status} -> status) (\s@UpdateDashboardResponse' {} a -> s {status = a} :: UpdateDashboardResponse)
+
+-- | The ARN of the dashboard, including the version number.
+updateDashboardResponse_versionArn :: Lens.Lens' UpdateDashboardResponse (Prelude.Maybe Prelude.Text)
+updateDashboardResponse_versionArn = Lens.lens (\UpdateDashboardResponse' {versionArn} -> versionArn) (\s@UpdateDashboardResponse' {} a -> s {versionArn = a} :: UpdateDashboardResponse)
+
+-- | The response's http status code.
+updateDashboardResponse_httpStatus :: Lens.Lens' UpdateDashboardResponse Prelude.Int
+updateDashboardResponse_httpStatus = Lens.lens (\UpdateDashboardResponse' {httpStatus} -> httpStatus) (\s@UpdateDashboardResponse' {} a -> s {httpStatus = a} :: UpdateDashboardResponse)
+
+instance Prelude.NFData UpdateDashboardResponse where
+  rnf UpdateDashboardResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf versionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/QuickSight/UpdateDashboardPermissions.hs b/gen/Amazonka/QuickSight/UpdateDashboardPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDashboardPermissions.hs
@@ -0,0 +1,306 @@
+{-# 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.QuickSight.UpdateDashboardPermissions
+-- 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 read and write permissions on a dashboard.
+module Amazonka.QuickSight.UpdateDashboardPermissions
+  ( -- * Creating a Request
+    UpdateDashboardPermissions (..),
+    newUpdateDashboardPermissions,
+
+    -- * Request Lenses
+    updateDashboardPermissions_grantLinkPermissions,
+    updateDashboardPermissions_grantPermissions,
+    updateDashboardPermissions_revokeLinkPermissions,
+    updateDashboardPermissions_revokePermissions,
+    updateDashboardPermissions_awsAccountId,
+    updateDashboardPermissions_dashboardId,
+
+    -- * Destructuring the Response
+    UpdateDashboardPermissionsResponse (..),
+    newUpdateDashboardPermissionsResponse,
+
+    -- * Response Lenses
+    updateDashboardPermissionsResponse_dashboardArn,
+    updateDashboardPermissionsResponse_dashboardId,
+    updateDashboardPermissionsResponse_linkSharingConfiguration,
+    updateDashboardPermissionsResponse_permissions,
+    updateDashboardPermissionsResponse_requestId,
+    updateDashboardPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDashboardPermissions' smart constructor.
+data UpdateDashboardPermissions = UpdateDashboardPermissions'
+  { -- | Grants link permissions to all users in a defined namespace.
+    grantLinkPermissions :: Prelude.Maybe [ResourcePermission],
+    -- | The permissions that you want to grant on this resource.
+    grantPermissions :: Prelude.Maybe [ResourcePermission],
+    -- | Revokes link permissions from all users in a defined namespace.
+    revokeLinkPermissions :: Prelude.Maybe [ResourcePermission],
+    -- | The permissions that you want to revoke from this resource.
+    revokePermissions :: Prelude.Maybe [ResourcePermission],
+    -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- whose permissions you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDashboardPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantLinkPermissions', 'updateDashboardPermissions_grantLinkPermissions' - Grants link permissions to all users in a defined namespace.
+--
+-- 'grantPermissions', 'updateDashboardPermissions_grantPermissions' - The permissions that you want to grant on this resource.
+--
+-- 'revokeLinkPermissions', 'updateDashboardPermissions_revokeLinkPermissions' - Revokes link permissions from all users in a defined namespace.
+--
+-- 'revokePermissions', 'updateDashboardPermissions_revokePermissions' - The permissions that you want to revoke from this resource.
+--
+-- 'awsAccountId', 'updateDashboardPermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- whose permissions you\'re updating.
+--
+-- 'dashboardId', 'updateDashboardPermissions_dashboardId' - The ID for the dashboard.
+newUpdateDashboardPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  UpdateDashboardPermissions
+newUpdateDashboardPermissions
+  pAwsAccountId_
+  pDashboardId_ =
+    UpdateDashboardPermissions'
+      { grantLinkPermissions =
+          Prelude.Nothing,
+        grantPermissions = Prelude.Nothing,
+        revokeLinkPermissions = Prelude.Nothing,
+        revokePermissions = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dashboardId = pDashboardId_
+      }
+
+-- | Grants link permissions to all users in a defined namespace.
+updateDashboardPermissions_grantLinkPermissions :: Lens.Lens' UpdateDashboardPermissions (Prelude.Maybe [ResourcePermission])
+updateDashboardPermissions_grantLinkPermissions = Lens.lens (\UpdateDashboardPermissions' {grantLinkPermissions} -> grantLinkPermissions) (\s@UpdateDashboardPermissions' {} a -> s {grantLinkPermissions = a} :: UpdateDashboardPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The permissions that you want to grant on this resource.
+updateDashboardPermissions_grantPermissions :: Lens.Lens' UpdateDashboardPermissions (Prelude.Maybe [ResourcePermission])
+updateDashboardPermissions_grantPermissions = Lens.lens (\UpdateDashboardPermissions' {grantPermissions} -> grantPermissions) (\s@UpdateDashboardPermissions' {} a -> s {grantPermissions = a} :: UpdateDashboardPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | Revokes link permissions from all users in a defined namespace.
+updateDashboardPermissions_revokeLinkPermissions :: Lens.Lens' UpdateDashboardPermissions (Prelude.Maybe [ResourcePermission])
+updateDashboardPermissions_revokeLinkPermissions = Lens.lens (\UpdateDashboardPermissions' {revokeLinkPermissions} -> revokeLinkPermissions) (\s@UpdateDashboardPermissions' {} a -> s {revokeLinkPermissions = a} :: UpdateDashboardPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The permissions that you want to revoke from this resource.
+updateDashboardPermissions_revokePermissions :: Lens.Lens' UpdateDashboardPermissions (Prelude.Maybe [ResourcePermission])
+updateDashboardPermissions_revokePermissions = Lens.lens (\UpdateDashboardPermissions' {revokePermissions} -> revokePermissions) (\s@UpdateDashboardPermissions' {} a -> s {revokePermissions = a} :: UpdateDashboardPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- whose permissions you\'re updating.
+updateDashboardPermissions_awsAccountId :: Lens.Lens' UpdateDashboardPermissions Prelude.Text
+updateDashboardPermissions_awsAccountId = Lens.lens (\UpdateDashboardPermissions' {awsAccountId} -> awsAccountId) (\s@UpdateDashboardPermissions' {} a -> s {awsAccountId = a} :: UpdateDashboardPermissions)
+
+-- | The ID for the dashboard.
+updateDashboardPermissions_dashboardId :: Lens.Lens' UpdateDashboardPermissions Prelude.Text
+updateDashboardPermissions_dashboardId = Lens.lens (\UpdateDashboardPermissions' {dashboardId} -> dashboardId) (\s@UpdateDashboardPermissions' {} a -> s {dashboardId = a} :: UpdateDashboardPermissions)
+
+instance Core.AWSRequest UpdateDashboardPermissions where
+  type
+    AWSResponse UpdateDashboardPermissions =
+      UpdateDashboardPermissionsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDashboardPermissionsResponse'
+            Prelude.<$> (x Data..?> "DashboardArn")
+            Prelude.<*> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "LinkSharingConfiguration")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDashboardPermissions where
+  hashWithSalt _salt UpdateDashboardPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantLinkPermissions
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokeLinkPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dashboardId
+
+instance Prelude.NFData UpdateDashboardPermissions where
+  rnf UpdateDashboardPermissions' {..} =
+    Prelude.rnf grantLinkPermissions
+      `Prelude.seq` Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokeLinkPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+
+instance Data.ToHeaders UpdateDashboardPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDashboardPermissions where
+  toJSON UpdateDashboardPermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantLinkPermissions" Data..=)
+              Prelude.<$> grantLinkPermissions,
+            ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokeLinkPermissions" Data..=)
+              Prelude.<$> revokeLinkPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateDashboardPermissions where
+  toPath UpdateDashboardPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateDashboardPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDashboardPermissionsResponse' smart constructor.
+data UpdateDashboardPermissionsResponse = UpdateDashboardPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the dashboard.
+    dashboardArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | Updates the permissions of a shared link to an Amazon QuickSight
+    -- dashboard.
+    linkSharingConfiguration :: Prelude.Maybe LinkSharingConfiguration,
+    -- | Information about the permissions on the dashboard.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDashboardPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardArn', 'updateDashboardPermissionsResponse_dashboardArn' - The Amazon Resource Name (ARN) of the dashboard.
+--
+-- 'dashboardId', 'updateDashboardPermissionsResponse_dashboardId' - The ID for the dashboard.
+--
+-- 'linkSharingConfiguration', 'updateDashboardPermissionsResponse_linkSharingConfiguration' - Updates the permissions of a shared link to an Amazon QuickSight
+-- dashboard.
+--
+-- 'permissions', 'updateDashboardPermissionsResponse_permissions' - Information about the permissions on the dashboard.
+--
+-- 'requestId', 'updateDashboardPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateDashboardPermissionsResponse_status' - The HTTP status of the request.
+newUpdateDashboardPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateDashboardPermissionsResponse
+newUpdateDashboardPermissionsResponse pStatus_ =
+  UpdateDashboardPermissionsResponse'
+    { dashboardArn =
+        Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      linkSharingConfiguration =
+        Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dashboard.
+updateDashboardPermissionsResponse_dashboardArn :: Lens.Lens' UpdateDashboardPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDashboardPermissionsResponse_dashboardArn = Lens.lens (\UpdateDashboardPermissionsResponse' {dashboardArn} -> dashboardArn) (\s@UpdateDashboardPermissionsResponse' {} a -> s {dashboardArn = a} :: UpdateDashboardPermissionsResponse)
+
+-- | The ID for the dashboard.
+updateDashboardPermissionsResponse_dashboardId :: Lens.Lens' UpdateDashboardPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDashboardPermissionsResponse_dashboardId = Lens.lens (\UpdateDashboardPermissionsResponse' {dashboardId} -> dashboardId) (\s@UpdateDashboardPermissionsResponse' {} a -> s {dashboardId = a} :: UpdateDashboardPermissionsResponse)
+
+-- | Updates the permissions of a shared link to an Amazon QuickSight
+-- dashboard.
+updateDashboardPermissionsResponse_linkSharingConfiguration :: Lens.Lens' UpdateDashboardPermissionsResponse (Prelude.Maybe LinkSharingConfiguration)
+updateDashboardPermissionsResponse_linkSharingConfiguration = Lens.lens (\UpdateDashboardPermissionsResponse' {linkSharingConfiguration} -> linkSharingConfiguration) (\s@UpdateDashboardPermissionsResponse' {} a -> s {linkSharingConfiguration = a} :: UpdateDashboardPermissionsResponse)
+
+-- | Information about the permissions on the dashboard.
+updateDashboardPermissionsResponse_permissions :: Lens.Lens' UpdateDashboardPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateDashboardPermissionsResponse_permissions = Lens.lens (\UpdateDashboardPermissionsResponse' {permissions} -> permissions) (\s@UpdateDashboardPermissionsResponse' {} a -> s {permissions = a} :: UpdateDashboardPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+updateDashboardPermissionsResponse_requestId :: Lens.Lens' UpdateDashboardPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDashboardPermissionsResponse_requestId = Lens.lens (\UpdateDashboardPermissionsResponse' {requestId} -> requestId) (\s@UpdateDashboardPermissionsResponse' {} a -> s {requestId = a} :: UpdateDashboardPermissionsResponse)
+
+-- | The HTTP status of the request.
+updateDashboardPermissionsResponse_status :: Lens.Lens' UpdateDashboardPermissionsResponse Prelude.Int
+updateDashboardPermissionsResponse_status = Lens.lens (\UpdateDashboardPermissionsResponse' {status} -> status) (\s@UpdateDashboardPermissionsResponse' {} a -> s {status = a} :: UpdateDashboardPermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateDashboardPermissionsResponse
+  where
+  rnf UpdateDashboardPermissionsResponse' {..} =
+    Prelude.rnf dashboardArn
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf linkSharingConfiguration
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateDashboardPublishedVersion.hs b/gen/Amazonka/QuickSight/UpdateDashboardPublishedVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDashboardPublishedVersion.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateDashboardPublishedVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the published version of a dashboard.
+module Amazonka.QuickSight.UpdateDashboardPublishedVersion
+  ( -- * Creating a Request
+    UpdateDashboardPublishedVersion (..),
+    newUpdateDashboardPublishedVersion,
+
+    -- * Request Lenses
+    updateDashboardPublishedVersion_awsAccountId,
+    updateDashboardPublishedVersion_dashboardId,
+    updateDashboardPublishedVersion_versionNumber,
+
+    -- * Destructuring the Response
+    UpdateDashboardPublishedVersionResponse (..),
+    newUpdateDashboardPublishedVersionResponse,
+
+    -- * Response Lenses
+    updateDashboardPublishedVersionResponse_dashboardArn,
+    updateDashboardPublishedVersionResponse_dashboardId,
+    updateDashboardPublishedVersionResponse_requestId,
+    updateDashboardPublishedVersionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDashboardPublishedVersion' smart constructor.
+data UpdateDashboardPublishedVersion = UpdateDashboardPublishedVersion'
+  { -- | The ID of the Amazon Web Services account that contains the dashboard
+    -- that you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Text,
+    -- | The version number of the dashboard.
+    versionNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDashboardPublishedVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'updateDashboardPublishedVersion_awsAccountId' - The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re updating.
+--
+-- 'dashboardId', 'updateDashboardPublishedVersion_dashboardId' - The ID for the dashboard.
+--
+-- 'versionNumber', 'updateDashboardPublishedVersion_versionNumber' - The version number of the dashboard.
+newUpdateDashboardPublishedVersion ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dashboardId'
+  Prelude.Text ->
+  -- | 'versionNumber'
+  Prelude.Natural ->
+  UpdateDashboardPublishedVersion
+newUpdateDashboardPublishedVersion
+  pAwsAccountId_
+  pDashboardId_
+  pVersionNumber_ =
+    UpdateDashboardPublishedVersion'
+      { awsAccountId =
+          pAwsAccountId_,
+        dashboardId = pDashboardId_,
+        versionNumber = pVersionNumber_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the dashboard
+-- that you\'re updating.
+updateDashboardPublishedVersion_awsAccountId :: Lens.Lens' UpdateDashboardPublishedVersion Prelude.Text
+updateDashboardPublishedVersion_awsAccountId = Lens.lens (\UpdateDashboardPublishedVersion' {awsAccountId} -> awsAccountId) (\s@UpdateDashboardPublishedVersion' {} a -> s {awsAccountId = a} :: UpdateDashboardPublishedVersion)
+
+-- | The ID for the dashboard.
+updateDashboardPublishedVersion_dashboardId :: Lens.Lens' UpdateDashboardPublishedVersion Prelude.Text
+updateDashboardPublishedVersion_dashboardId = Lens.lens (\UpdateDashboardPublishedVersion' {dashboardId} -> dashboardId) (\s@UpdateDashboardPublishedVersion' {} a -> s {dashboardId = a} :: UpdateDashboardPublishedVersion)
+
+-- | The version number of the dashboard.
+updateDashboardPublishedVersion_versionNumber :: Lens.Lens' UpdateDashboardPublishedVersion Prelude.Natural
+updateDashboardPublishedVersion_versionNumber = Lens.lens (\UpdateDashboardPublishedVersion' {versionNumber} -> versionNumber) (\s@UpdateDashboardPublishedVersion' {} a -> s {versionNumber = a} :: UpdateDashboardPublishedVersion)
+
+instance
+  Core.AWSRequest
+    UpdateDashboardPublishedVersion
+  where
+  type
+    AWSResponse UpdateDashboardPublishedVersion =
+      UpdateDashboardPublishedVersionResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDashboardPublishedVersionResponse'
+            Prelude.<$> (x Data..?> "DashboardArn")
+            Prelude.<*> (x Data..?> "DashboardId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateDashboardPublishedVersion
+  where
+  hashWithSalt
+    _salt
+    UpdateDashboardPublishedVersion' {..} =
+      _salt
+        `Prelude.hashWithSalt` awsAccountId
+        `Prelude.hashWithSalt` dashboardId
+        `Prelude.hashWithSalt` versionNumber
+
+instance
+  Prelude.NFData
+    UpdateDashboardPublishedVersion
+  where
+  rnf UpdateDashboardPublishedVersion' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf versionNumber
+
+instance
+  Data.ToHeaders
+    UpdateDashboardPublishedVersion
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDashboardPublishedVersion where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath UpdateDashboardPublishedVersion where
+  toPath UpdateDashboardPublishedVersion' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/dashboards/",
+        Data.toBS dashboardId,
+        "/versions/",
+        Data.toBS versionNumber
+      ]
+
+instance Data.ToQuery UpdateDashboardPublishedVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDashboardPublishedVersionResponse' smart constructor.
+data UpdateDashboardPublishedVersionResponse = UpdateDashboardPublishedVersionResponse'
+  { -- | The Amazon Resource Name (ARN) of the dashboard.
+    dashboardArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dashboard.
+    dashboardId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDashboardPublishedVersionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dashboardArn', 'updateDashboardPublishedVersionResponse_dashboardArn' - The Amazon Resource Name (ARN) of the dashboard.
+--
+-- 'dashboardId', 'updateDashboardPublishedVersionResponse_dashboardId' - The ID for the dashboard.
+--
+-- 'requestId', 'updateDashboardPublishedVersionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateDashboardPublishedVersionResponse_status' - The HTTP status of the request.
+newUpdateDashboardPublishedVersionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateDashboardPublishedVersionResponse
+newUpdateDashboardPublishedVersionResponse pStatus_ =
+  UpdateDashboardPublishedVersionResponse'
+    { dashboardArn =
+        Prelude.Nothing,
+      dashboardId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dashboard.
+updateDashboardPublishedVersionResponse_dashboardArn :: Lens.Lens' UpdateDashboardPublishedVersionResponse (Prelude.Maybe Prelude.Text)
+updateDashboardPublishedVersionResponse_dashboardArn = Lens.lens (\UpdateDashboardPublishedVersionResponse' {dashboardArn} -> dashboardArn) (\s@UpdateDashboardPublishedVersionResponse' {} a -> s {dashboardArn = a} :: UpdateDashboardPublishedVersionResponse)
+
+-- | The ID for the dashboard.
+updateDashboardPublishedVersionResponse_dashboardId :: Lens.Lens' UpdateDashboardPublishedVersionResponse (Prelude.Maybe Prelude.Text)
+updateDashboardPublishedVersionResponse_dashboardId = Lens.lens (\UpdateDashboardPublishedVersionResponse' {dashboardId} -> dashboardId) (\s@UpdateDashboardPublishedVersionResponse' {} a -> s {dashboardId = a} :: UpdateDashboardPublishedVersionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateDashboardPublishedVersionResponse_requestId :: Lens.Lens' UpdateDashboardPublishedVersionResponse (Prelude.Maybe Prelude.Text)
+updateDashboardPublishedVersionResponse_requestId = Lens.lens (\UpdateDashboardPublishedVersionResponse' {requestId} -> requestId) (\s@UpdateDashboardPublishedVersionResponse' {} a -> s {requestId = a} :: UpdateDashboardPublishedVersionResponse)
+
+-- | The HTTP status of the request.
+updateDashboardPublishedVersionResponse_status :: Lens.Lens' UpdateDashboardPublishedVersionResponse Prelude.Int
+updateDashboardPublishedVersionResponse_status = Lens.lens (\UpdateDashboardPublishedVersionResponse' {status} -> status) (\s@UpdateDashboardPublishedVersionResponse' {} a -> s {status = a} :: UpdateDashboardPublishedVersionResponse)
+
+instance
+  Prelude.NFData
+    UpdateDashboardPublishedVersionResponse
+  where
+  rnf UpdateDashboardPublishedVersionResponse' {..} =
+    Prelude.rnf dashboardArn
+      `Prelude.seq` Prelude.rnf dashboardId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateDataSet.hs b/gen/Amazonka/QuickSight/UpdateDataSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDataSet.hs
@@ -0,0 +1,410 @@
+{-# 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.QuickSight.UpdateDataSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a dataset. This operation doesn\'t support datasets that include
+-- uploaded files as a source. Partial updates are not supported by this
+-- operation.
+module Amazonka.QuickSight.UpdateDataSet
+  ( -- * Creating a Request
+    UpdateDataSet (..),
+    newUpdateDataSet,
+
+    -- * Request Lenses
+    updateDataSet_columnGroups,
+    updateDataSet_columnLevelPermissionRules,
+    updateDataSet_dataSetUsageConfiguration,
+    updateDataSet_fieldFolders,
+    updateDataSet_logicalTableMap,
+    updateDataSet_rowLevelPermissionDataSet,
+    updateDataSet_rowLevelPermissionTagConfiguration,
+    updateDataSet_awsAccountId,
+    updateDataSet_dataSetId,
+    updateDataSet_name,
+    updateDataSet_physicalTableMap,
+    updateDataSet_importMode,
+
+    -- * Destructuring the Response
+    UpdateDataSetResponse (..),
+    newUpdateDataSetResponse,
+
+    -- * Response Lenses
+    updateDataSetResponse_arn,
+    updateDataSetResponse_dataSetId,
+    updateDataSetResponse_ingestionArn,
+    updateDataSetResponse_ingestionId,
+    updateDataSetResponse_requestId,
+    updateDataSetResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDataSet' smart constructor.
+data UpdateDataSet = UpdateDataSet'
+  { -- | Groupings of columns that work together in certain Amazon QuickSight
+    -- features. Currently, only geospatial hierarchy is supported.
+    columnGroups :: Prelude.Maybe (Prelude.NonEmpty ColumnGroup),
+    -- | A set of one or more definitions of a
+    -- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+    columnLevelPermissionRules :: Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule),
+    dataSetUsageConfiguration :: Prelude.Maybe DataSetUsageConfiguration,
+    -- | The folder that contains fields and nested subfolders for your dataset.
+    fieldFolders :: Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder),
+    -- | Configures the combination and transformation of the data from the
+    -- physical tables.
+    logicalTableMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable),
+    -- | The row-level security configuration for the data you want to create.
+    rowLevelPermissionDataSet :: Prelude.Maybe RowLevelPermissionDataSet,
+    -- | The configuration of tags on a dataset to set row-level security.
+    -- Row-level security tags are currently supported for anonymous embedding
+    -- only.
+    rowLevelPermissionTagConfiguration :: Prelude.Maybe RowLevelPermissionTagConfiguration,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dataset that you want to update. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Text,
+    -- | The display name for the dataset.
+    name :: Prelude.Text,
+    -- | Declares the physical tables that are available in the underlying data
+    -- sources.
+    physicalTableMap :: Prelude.HashMap Prelude.Text PhysicalTable,
+    -- | Indicates whether you want to import the data into SPICE.
+    importMode :: DataSetImportMode
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'columnGroups', 'updateDataSet_columnGroups' - Groupings of columns that work together in certain Amazon QuickSight
+-- features. Currently, only geospatial hierarchy is supported.
+--
+-- 'columnLevelPermissionRules', 'updateDataSet_columnLevelPermissionRules' - A set of one or more definitions of a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+--
+-- 'dataSetUsageConfiguration', 'updateDataSet_dataSetUsageConfiguration' - Undocumented member.
+--
+-- 'fieldFolders', 'updateDataSet_fieldFolders' - The folder that contains fields and nested subfolders for your dataset.
+--
+-- 'logicalTableMap', 'updateDataSet_logicalTableMap' - Configures the combination and transformation of the data from the
+-- physical tables.
+--
+-- 'rowLevelPermissionDataSet', 'updateDataSet_rowLevelPermissionDataSet' - The row-level security configuration for the data you want to create.
+--
+-- 'rowLevelPermissionTagConfiguration', 'updateDataSet_rowLevelPermissionTagConfiguration' - The configuration of tags on a dataset to set row-level security.
+-- Row-level security tags are currently supported for anonymous embedding
+-- only.
+--
+-- 'awsAccountId', 'updateDataSet_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'updateDataSet_dataSetId' - The ID for the dataset that you want to update. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+--
+-- 'name', 'updateDataSet_name' - The display name for the dataset.
+--
+-- 'physicalTableMap', 'updateDataSet_physicalTableMap' - Declares the physical tables that are available in the underlying data
+-- sources.
+--
+-- 'importMode', 'updateDataSet_importMode' - Indicates whether you want to import the data into SPICE.
+newUpdateDataSet ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'importMode'
+  DataSetImportMode ->
+  UpdateDataSet
+newUpdateDataSet
+  pAwsAccountId_
+  pDataSetId_
+  pName_
+  pImportMode_ =
+    UpdateDataSet'
+      { columnGroups = Prelude.Nothing,
+        columnLevelPermissionRules = Prelude.Nothing,
+        dataSetUsageConfiguration = Prelude.Nothing,
+        fieldFolders = Prelude.Nothing,
+        logicalTableMap = Prelude.Nothing,
+        rowLevelPermissionDataSet = Prelude.Nothing,
+        rowLevelPermissionTagConfiguration = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dataSetId = pDataSetId_,
+        name = pName_,
+        physicalTableMap = Prelude.mempty,
+        importMode = pImportMode_
+      }
+
+-- | Groupings of columns that work together in certain Amazon QuickSight
+-- features. Currently, only geospatial hierarchy is supported.
+updateDataSet_columnGroups :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnGroup))
+updateDataSet_columnGroups = Lens.lens (\UpdateDataSet' {columnGroups} -> columnGroups) (\s@UpdateDataSet' {} a -> s {columnGroups = a} :: UpdateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | A set of one or more definitions of a
+-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
+updateDataSet_columnLevelPermissionRules :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule))
+updateDataSet_columnLevelPermissionRules = Lens.lens (\UpdateDataSet' {columnLevelPermissionRules} -> columnLevelPermissionRules) (\s@UpdateDataSet' {} a -> s {columnLevelPermissionRules = a} :: UpdateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateDataSet_dataSetUsageConfiguration :: Lens.Lens' UpdateDataSet (Prelude.Maybe DataSetUsageConfiguration)
+updateDataSet_dataSetUsageConfiguration = Lens.lens (\UpdateDataSet' {dataSetUsageConfiguration} -> dataSetUsageConfiguration) (\s@UpdateDataSet' {} a -> s {dataSetUsageConfiguration = a} :: UpdateDataSet)
+
+-- | The folder that contains fields and nested subfolders for your dataset.
+updateDataSet_fieldFolders :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder))
+updateDataSet_fieldFolders = Lens.lens (\UpdateDataSet' {fieldFolders} -> fieldFolders) (\s@UpdateDataSet' {} a -> s {fieldFolders = a} :: UpdateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | Configures the combination and transformation of the data from the
+-- physical tables.
+updateDataSet_logicalTableMap :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable))
+updateDataSet_logicalTableMap = Lens.lens (\UpdateDataSet' {logicalTableMap} -> logicalTableMap) (\s@UpdateDataSet' {} a -> s {logicalTableMap = a} :: UpdateDataSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The row-level security configuration for the data you want to create.
+updateDataSet_rowLevelPermissionDataSet :: Lens.Lens' UpdateDataSet (Prelude.Maybe RowLevelPermissionDataSet)
+updateDataSet_rowLevelPermissionDataSet = Lens.lens (\UpdateDataSet' {rowLevelPermissionDataSet} -> rowLevelPermissionDataSet) (\s@UpdateDataSet' {} a -> s {rowLevelPermissionDataSet = a} :: UpdateDataSet)
+
+-- | The configuration of tags on a dataset to set row-level security.
+-- Row-level security tags are currently supported for anonymous embedding
+-- only.
+updateDataSet_rowLevelPermissionTagConfiguration :: Lens.Lens' UpdateDataSet (Prelude.Maybe RowLevelPermissionTagConfiguration)
+updateDataSet_rowLevelPermissionTagConfiguration = Lens.lens (\UpdateDataSet' {rowLevelPermissionTagConfiguration} -> rowLevelPermissionTagConfiguration) (\s@UpdateDataSet' {} a -> s {rowLevelPermissionTagConfiguration = a} :: UpdateDataSet)
+
+-- | The Amazon Web Services account ID.
+updateDataSet_awsAccountId :: Lens.Lens' UpdateDataSet Prelude.Text
+updateDataSet_awsAccountId = Lens.lens (\UpdateDataSet' {awsAccountId} -> awsAccountId) (\s@UpdateDataSet' {} a -> s {awsAccountId = a} :: UpdateDataSet)
+
+-- | The ID for the dataset that you want to update. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+updateDataSet_dataSetId :: Lens.Lens' UpdateDataSet Prelude.Text
+updateDataSet_dataSetId = Lens.lens (\UpdateDataSet' {dataSetId} -> dataSetId) (\s@UpdateDataSet' {} a -> s {dataSetId = a} :: UpdateDataSet)
+
+-- | The display name for the dataset.
+updateDataSet_name :: Lens.Lens' UpdateDataSet Prelude.Text
+updateDataSet_name = Lens.lens (\UpdateDataSet' {name} -> name) (\s@UpdateDataSet' {} a -> s {name = a} :: UpdateDataSet)
+
+-- | Declares the physical tables that are available in the underlying data
+-- sources.
+updateDataSet_physicalTableMap :: Lens.Lens' UpdateDataSet (Prelude.HashMap Prelude.Text PhysicalTable)
+updateDataSet_physicalTableMap = Lens.lens (\UpdateDataSet' {physicalTableMap} -> physicalTableMap) (\s@UpdateDataSet' {} a -> s {physicalTableMap = a} :: UpdateDataSet) Prelude.. Lens.coerced
+
+-- | Indicates whether you want to import the data into SPICE.
+updateDataSet_importMode :: Lens.Lens' UpdateDataSet DataSetImportMode
+updateDataSet_importMode = Lens.lens (\UpdateDataSet' {importMode} -> importMode) (\s@UpdateDataSet' {} a -> s {importMode = a} :: UpdateDataSet)
+
+instance Core.AWSRequest UpdateDataSet where
+  type
+    AWSResponse UpdateDataSet =
+      UpdateDataSetResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDataSetResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DataSetId")
+            Prelude.<*> (x Data..?> "IngestionArn")
+            Prelude.<*> (x Data..?> "IngestionId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDataSet where
+  hashWithSalt _salt UpdateDataSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` columnGroups
+      `Prelude.hashWithSalt` columnLevelPermissionRules
+      `Prelude.hashWithSalt` dataSetUsageConfiguration
+      `Prelude.hashWithSalt` fieldFolders
+      `Prelude.hashWithSalt` logicalTableMap
+      `Prelude.hashWithSalt` rowLevelPermissionDataSet
+      `Prelude.hashWithSalt` rowLevelPermissionTagConfiguration
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` physicalTableMap
+      `Prelude.hashWithSalt` importMode
+
+instance Prelude.NFData UpdateDataSet where
+  rnf UpdateDataSet' {..} =
+    Prelude.rnf columnGroups
+      `Prelude.seq` Prelude.rnf columnLevelPermissionRules
+      `Prelude.seq` Prelude.rnf dataSetUsageConfiguration
+      `Prelude.seq` Prelude.rnf fieldFolders
+      `Prelude.seq` Prelude.rnf logicalTableMap
+      `Prelude.seq` Prelude.rnf rowLevelPermissionDataSet
+      `Prelude.seq` Prelude.rnf rowLevelPermissionTagConfiguration
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf physicalTableMap
+      `Prelude.seq` Prelude.rnf importMode
+
+instance Data.ToHeaders UpdateDataSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDataSet where
+  toJSON UpdateDataSet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ColumnGroups" Data..=) Prelude.<$> columnGroups,
+            ("ColumnLevelPermissionRules" Data..=)
+              Prelude.<$> columnLevelPermissionRules,
+            ("DataSetUsageConfiguration" Data..=)
+              Prelude.<$> dataSetUsageConfiguration,
+            ("FieldFolders" Data..=) Prelude.<$> fieldFolders,
+            ("LogicalTableMap" Data..=)
+              Prelude.<$> logicalTableMap,
+            ("RowLevelPermissionDataSet" Data..=)
+              Prelude.<$> rowLevelPermissionDataSet,
+            ("RowLevelPermissionTagConfiguration" Data..=)
+              Prelude.<$> rowLevelPermissionTagConfiguration,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("PhysicalTableMap" Data..= physicalTableMap),
+            Prelude.Just ("ImportMode" Data..= importMode)
+          ]
+      )
+
+instance Data.ToPath UpdateDataSet where
+  toPath UpdateDataSet' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId
+      ]
+
+instance Data.ToQuery UpdateDataSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDataSetResponse' smart constructor.
+data UpdateDataSetResponse = UpdateDataSetResponse'
+  { -- | The Amazon Resource Name (ARN) of the dataset.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dataset that you want to create. This ID is unique per
+    -- Amazon Web Services Region for each Amazon Web Services account.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the ingestion, which is triggered as a result of dataset
+    -- creation if the import mode is SPICE.
+    ingestionArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the ingestion, which is triggered as a result of dataset
+    -- creation if the import mode is SPICE.
+    ingestionId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateDataSetResponse_arn' - The Amazon Resource Name (ARN) of the dataset.
+--
+-- 'dataSetId', 'updateDataSetResponse_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+--
+-- 'ingestionArn', 'updateDataSetResponse_ingestionArn' - The ARN for the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+--
+-- 'ingestionId', 'updateDataSetResponse_ingestionId' - The ID of the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+--
+-- 'requestId', 'updateDataSetResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateDataSetResponse_status' - The HTTP status of the request.
+newUpdateDataSetResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateDataSetResponse
+newUpdateDataSetResponse pStatus_ =
+  UpdateDataSetResponse'
+    { arn = Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      ingestionArn = Prelude.Nothing,
+      ingestionId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset.
+updateDataSetResponse_arn :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
+updateDataSetResponse_arn = Lens.lens (\UpdateDataSetResponse' {arn} -> arn) (\s@UpdateDataSetResponse' {} a -> s {arn = a} :: UpdateDataSetResponse)
+
+-- | The ID for the dataset that you want to create. This ID is unique per
+-- Amazon Web Services Region for each Amazon Web Services account.
+updateDataSetResponse_dataSetId :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
+updateDataSetResponse_dataSetId = Lens.lens (\UpdateDataSetResponse' {dataSetId} -> dataSetId) (\s@UpdateDataSetResponse' {} a -> s {dataSetId = a} :: UpdateDataSetResponse)
+
+-- | The ARN for the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+updateDataSetResponse_ingestionArn :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
+updateDataSetResponse_ingestionArn = Lens.lens (\UpdateDataSetResponse' {ingestionArn} -> ingestionArn) (\s@UpdateDataSetResponse' {} a -> s {ingestionArn = a} :: UpdateDataSetResponse)
+
+-- | The ID of the ingestion, which is triggered as a result of dataset
+-- creation if the import mode is SPICE.
+updateDataSetResponse_ingestionId :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
+updateDataSetResponse_ingestionId = Lens.lens (\UpdateDataSetResponse' {ingestionId} -> ingestionId) (\s@UpdateDataSetResponse' {} a -> s {ingestionId = a} :: UpdateDataSetResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateDataSetResponse_requestId :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
+updateDataSetResponse_requestId = Lens.lens (\UpdateDataSetResponse' {requestId} -> requestId) (\s@UpdateDataSetResponse' {} a -> s {requestId = a} :: UpdateDataSetResponse)
+
+-- | The HTTP status of the request.
+updateDataSetResponse_status :: Lens.Lens' UpdateDataSetResponse Prelude.Int
+updateDataSetResponse_status = Lens.lens (\UpdateDataSetResponse' {status} -> status) (\s@UpdateDataSetResponse' {} a -> s {status = a} :: UpdateDataSetResponse)
+
+instance Prelude.NFData UpdateDataSetResponse where
+  rnf UpdateDataSetResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf ingestionArn
+      `Prelude.seq` Prelude.rnf ingestionId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateDataSetPermissions.hs b/gen/Amazonka/QuickSight/UpdateDataSetPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDataSetPermissions.hs
@@ -0,0 +1,262 @@
+{-# 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.QuickSight.UpdateDataSetPermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the permissions on a dataset.
+--
+-- The permissions resource is
+-- @arn:aws:quicksight:region:aws-account-id:dataset\/data-set-id@.
+module Amazonka.QuickSight.UpdateDataSetPermissions
+  ( -- * Creating a Request
+    UpdateDataSetPermissions (..),
+    newUpdateDataSetPermissions,
+
+    -- * Request Lenses
+    updateDataSetPermissions_grantPermissions,
+    updateDataSetPermissions_revokePermissions,
+    updateDataSetPermissions_awsAccountId,
+    updateDataSetPermissions_dataSetId,
+
+    -- * Destructuring the Response
+    UpdateDataSetPermissionsResponse (..),
+    newUpdateDataSetPermissionsResponse,
+
+    -- * Response Lenses
+    updateDataSetPermissionsResponse_dataSetArn,
+    updateDataSetPermissionsResponse_dataSetId,
+    updateDataSetPermissionsResponse_requestId,
+    updateDataSetPermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDataSetPermissions' smart constructor.
+data UpdateDataSetPermissions = UpdateDataSetPermissions'
+  { -- | The resource permissions that you want to grant to the dataset.
+    grantPermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The resource permissions that you want to revoke from the dataset.
+    revokePermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the dataset whose permissions you want to update. This ID is
+    -- unique per Amazon Web Services Region for each Amazon Web Services
+    -- account.
+    dataSetId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSetPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantPermissions', 'updateDataSetPermissions_grantPermissions' - The resource permissions that you want to grant to the dataset.
+--
+-- 'revokePermissions', 'updateDataSetPermissions_revokePermissions' - The resource permissions that you want to revoke from the dataset.
+--
+-- 'awsAccountId', 'updateDataSetPermissions_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSetId', 'updateDataSetPermissions_dataSetId' - The ID for the dataset whose permissions you want to update. This ID is
+-- unique per Amazon Web Services Region for each Amazon Web Services
+-- account.
+newUpdateDataSetPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSetId'
+  Prelude.Text ->
+  UpdateDataSetPermissions
+newUpdateDataSetPermissions
+  pAwsAccountId_
+  pDataSetId_ =
+    UpdateDataSetPermissions'
+      { grantPermissions =
+          Prelude.Nothing,
+        revokePermissions = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dataSetId = pDataSetId_
+      }
+
+-- | The resource permissions that you want to grant to the dataset.
+updateDataSetPermissions_grantPermissions :: Lens.Lens' UpdateDataSetPermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateDataSetPermissions_grantPermissions = Lens.lens (\UpdateDataSetPermissions' {grantPermissions} -> grantPermissions) (\s@UpdateDataSetPermissions' {} a -> s {grantPermissions = a} :: UpdateDataSetPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The resource permissions that you want to revoke from the dataset.
+updateDataSetPermissions_revokePermissions :: Lens.Lens' UpdateDataSetPermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateDataSetPermissions_revokePermissions = Lens.lens (\UpdateDataSetPermissions' {revokePermissions} -> revokePermissions) (\s@UpdateDataSetPermissions' {} a -> s {revokePermissions = a} :: UpdateDataSetPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services account ID.
+updateDataSetPermissions_awsAccountId :: Lens.Lens' UpdateDataSetPermissions Prelude.Text
+updateDataSetPermissions_awsAccountId = Lens.lens (\UpdateDataSetPermissions' {awsAccountId} -> awsAccountId) (\s@UpdateDataSetPermissions' {} a -> s {awsAccountId = a} :: UpdateDataSetPermissions)
+
+-- | The ID for the dataset whose permissions you want to update. This ID is
+-- unique per Amazon Web Services Region for each Amazon Web Services
+-- account.
+updateDataSetPermissions_dataSetId :: Lens.Lens' UpdateDataSetPermissions Prelude.Text
+updateDataSetPermissions_dataSetId = Lens.lens (\UpdateDataSetPermissions' {dataSetId} -> dataSetId) (\s@UpdateDataSetPermissions' {} a -> s {dataSetId = a} :: UpdateDataSetPermissions)
+
+instance Core.AWSRequest UpdateDataSetPermissions where
+  type
+    AWSResponse UpdateDataSetPermissions =
+      UpdateDataSetPermissionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDataSetPermissionsResponse'
+            Prelude.<$> (x Data..?> "DataSetArn")
+            Prelude.<*> (x Data..?> "DataSetId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDataSetPermissions where
+  hashWithSalt _salt UpdateDataSetPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSetId
+
+instance Prelude.NFData UpdateDataSetPermissions where
+  rnf UpdateDataSetPermissions' {..} =
+    Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSetId
+
+instance Data.ToHeaders UpdateDataSetPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDataSetPermissions where
+  toJSON UpdateDataSetPermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateDataSetPermissions where
+  toPath UpdateDataSetPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sets/",
+        Data.toBS dataSetId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateDataSetPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDataSetPermissionsResponse' smart constructor.
+data UpdateDataSetPermissionsResponse = UpdateDataSetPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the dataset.
+    dataSetArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the dataset whose permissions you want to update. This ID is
+    -- unique per Amazon Web Services Region for each Amazon Web Services
+    -- account.
+    dataSetId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSetPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSetArn', 'updateDataSetPermissionsResponse_dataSetArn' - The Amazon Resource Name (ARN) of the dataset.
+--
+-- 'dataSetId', 'updateDataSetPermissionsResponse_dataSetId' - The ID for the dataset whose permissions you want to update. This ID is
+-- unique per Amazon Web Services Region for each Amazon Web Services
+-- account.
+--
+-- 'requestId', 'updateDataSetPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateDataSetPermissionsResponse_status' - The HTTP status of the request.
+newUpdateDataSetPermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateDataSetPermissionsResponse
+newUpdateDataSetPermissionsResponse pStatus_ =
+  UpdateDataSetPermissionsResponse'
+    { dataSetArn =
+        Prelude.Nothing,
+      dataSetId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset.
+updateDataSetPermissionsResponse_dataSetArn :: Lens.Lens' UpdateDataSetPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDataSetPermissionsResponse_dataSetArn = Lens.lens (\UpdateDataSetPermissionsResponse' {dataSetArn} -> dataSetArn) (\s@UpdateDataSetPermissionsResponse' {} a -> s {dataSetArn = a} :: UpdateDataSetPermissionsResponse)
+
+-- | The ID for the dataset whose permissions you want to update. This ID is
+-- unique per Amazon Web Services Region for each Amazon Web Services
+-- account.
+updateDataSetPermissionsResponse_dataSetId :: Lens.Lens' UpdateDataSetPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDataSetPermissionsResponse_dataSetId = Lens.lens (\UpdateDataSetPermissionsResponse' {dataSetId} -> dataSetId) (\s@UpdateDataSetPermissionsResponse' {} a -> s {dataSetId = a} :: UpdateDataSetPermissionsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateDataSetPermissionsResponse_requestId :: Lens.Lens' UpdateDataSetPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDataSetPermissionsResponse_requestId = Lens.lens (\UpdateDataSetPermissionsResponse' {requestId} -> requestId) (\s@UpdateDataSetPermissionsResponse' {} a -> s {requestId = a} :: UpdateDataSetPermissionsResponse)
+
+-- | The HTTP status of the request.
+updateDataSetPermissionsResponse_status :: Lens.Lens' UpdateDataSetPermissionsResponse Prelude.Int
+updateDataSetPermissionsResponse_status = Lens.lens (\UpdateDataSetPermissionsResponse' {status} -> status) (\s@UpdateDataSetPermissionsResponse' {} a -> s {status = a} :: UpdateDataSetPermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateDataSetPermissionsResponse
+  where
+  rnf UpdateDataSetPermissionsResponse' {..} =
+    Prelude.rnf dataSetArn
+      `Prelude.seq` Prelude.rnf dataSetId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateDataSource.hs b/gen/Amazonka/QuickSight/UpdateDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDataSource.hs
@@ -0,0 +1,316 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a data source.
+module Amazonka.QuickSight.UpdateDataSource
+  ( -- * Creating a Request
+    UpdateDataSource (..),
+    newUpdateDataSource,
+
+    -- * Request Lenses
+    updateDataSource_credentials,
+    updateDataSource_dataSourceParameters,
+    updateDataSource_sslProperties,
+    updateDataSource_vpcConnectionProperties,
+    updateDataSource_awsAccountId,
+    updateDataSource_dataSourceId,
+    updateDataSource_name,
+
+    -- * Destructuring the Response
+    UpdateDataSourceResponse (..),
+    newUpdateDataSourceResponse,
+
+    -- * Response Lenses
+    updateDataSourceResponse_arn,
+    updateDataSourceResponse_dataSourceId,
+    updateDataSourceResponse_requestId,
+    updateDataSourceResponse_updateStatus,
+    updateDataSourceResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDataSource' smart constructor.
+data UpdateDataSource = UpdateDataSource'
+  { -- | The credentials that Amazon QuickSight that uses to connect to your
+    -- underlying source. Currently, only credentials based on user name and
+    -- password are supported.
+    credentials :: Prelude.Maybe (Data.Sensitive DataSourceCredentials),
+    -- | The parameters that Amazon QuickSight uses to connect to your underlying
+    -- source.
+    dataSourceParameters :: Prelude.Maybe DataSourceParameters,
+    -- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+    -- connects to your underlying source.
+    sslProperties :: Prelude.Maybe SslProperties,
+    -- | Use this parameter only when you want Amazon QuickSight to use a VPC
+    -- connection when connecting to your underlying source.
+    vpcConnectionProperties :: Prelude.Maybe VpcConnectionProperties,
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Text,
+    -- | A display name for the data source.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'credentials', 'updateDataSource_credentials' - The credentials that Amazon QuickSight that uses to connect to your
+-- underlying source. Currently, only credentials based on user name and
+-- password are supported.
+--
+-- 'dataSourceParameters', 'updateDataSource_dataSourceParameters' - The parameters that Amazon QuickSight uses to connect to your underlying
+-- source.
+--
+-- 'sslProperties', 'updateDataSource_sslProperties' - Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying source.
+--
+-- 'vpcConnectionProperties', 'updateDataSource_vpcConnectionProperties' - Use this parameter only when you want Amazon QuickSight to use a VPC
+-- connection when connecting to your underlying source.
+--
+-- 'awsAccountId', 'updateDataSource_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSourceId', 'updateDataSource_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'name', 'updateDataSource_name' - A display name for the data source.
+newUpdateDataSource ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSourceId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateDataSource
+newUpdateDataSource
+  pAwsAccountId_
+  pDataSourceId_
+  pName_ =
+    UpdateDataSource'
+      { credentials = Prelude.Nothing,
+        dataSourceParameters = Prelude.Nothing,
+        sslProperties = Prelude.Nothing,
+        vpcConnectionProperties = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dataSourceId = pDataSourceId_,
+        name = pName_
+      }
+
+-- | The credentials that Amazon QuickSight that uses to connect to your
+-- underlying source. Currently, only credentials based on user name and
+-- password are supported.
+updateDataSource_credentials :: Lens.Lens' UpdateDataSource (Prelude.Maybe DataSourceCredentials)
+updateDataSource_credentials = Lens.lens (\UpdateDataSource' {credentials} -> credentials) (\s@UpdateDataSource' {} a -> s {credentials = a} :: UpdateDataSource) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The parameters that Amazon QuickSight uses to connect to your underlying
+-- source.
+updateDataSource_dataSourceParameters :: Lens.Lens' UpdateDataSource (Prelude.Maybe DataSourceParameters)
+updateDataSource_dataSourceParameters = Lens.lens (\UpdateDataSource' {dataSourceParameters} -> dataSourceParameters) (\s@UpdateDataSource' {} a -> s {dataSourceParameters = a} :: UpdateDataSource)
+
+-- | Secure Socket Layer (SSL) properties that apply when Amazon QuickSight
+-- connects to your underlying source.
+updateDataSource_sslProperties :: Lens.Lens' UpdateDataSource (Prelude.Maybe SslProperties)
+updateDataSource_sslProperties = Lens.lens (\UpdateDataSource' {sslProperties} -> sslProperties) (\s@UpdateDataSource' {} a -> s {sslProperties = a} :: UpdateDataSource)
+
+-- | Use this parameter only when you want Amazon QuickSight to use a VPC
+-- connection when connecting to your underlying source.
+updateDataSource_vpcConnectionProperties :: Lens.Lens' UpdateDataSource (Prelude.Maybe VpcConnectionProperties)
+updateDataSource_vpcConnectionProperties = Lens.lens (\UpdateDataSource' {vpcConnectionProperties} -> vpcConnectionProperties) (\s@UpdateDataSource' {} a -> s {vpcConnectionProperties = a} :: UpdateDataSource)
+
+-- | The Amazon Web Services account ID.
+updateDataSource_awsAccountId :: Lens.Lens' UpdateDataSource Prelude.Text
+updateDataSource_awsAccountId = Lens.lens (\UpdateDataSource' {awsAccountId} -> awsAccountId) (\s@UpdateDataSource' {} a -> s {awsAccountId = a} :: UpdateDataSource)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+updateDataSource_dataSourceId :: Lens.Lens' UpdateDataSource Prelude.Text
+updateDataSource_dataSourceId = Lens.lens (\UpdateDataSource' {dataSourceId} -> dataSourceId) (\s@UpdateDataSource' {} a -> s {dataSourceId = a} :: UpdateDataSource)
+
+-- | A display name for the data source.
+updateDataSource_name :: Lens.Lens' UpdateDataSource Prelude.Text
+updateDataSource_name = Lens.lens (\UpdateDataSource' {name} -> name) (\s@UpdateDataSource' {} a -> s {name = a} :: UpdateDataSource)
+
+instance Core.AWSRequest UpdateDataSource where
+  type
+    AWSResponse UpdateDataSource =
+      UpdateDataSourceResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDataSourceResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "DataSourceId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "UpdateStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDataSource where
+  hashWithSalt _salt UpdateDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` credentials
+      `Prelude.hashWithSalt` dataSourceParameters
+      `Prelude.hashWithSalt` sslProperties
+      `Prelude.hashWithSalt` vpcConnectionProperties
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSourceId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateDataSource where
+  rnf UpdateDataSource' {..} =
+    Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf dataSourceParameters
+      `Prelude.seq` Prelude.rnf sslProperties
+      `Prelude.seq` Prelude.rnf vpcConnectionProperties
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateDataSource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDataSource where
+  toJSON UpdateDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Credentials" Data..=) Prelude.<$> credentials,
+            ("DataSourceParameters" Data..=)
+              Prelude.<$> dataSourceParameters,
+            ("SslProperties" Data..=) Prelude.<$> sslProperties,
+            ("VpcConnectionProperties" Data..=)
+              Prelude.<$> vpcConnectionProperties,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateDataSource where
+  toPath UpdateDataSource' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources/",
+        Data.toBS dataSourceId
+      ]
+
+instance Data.ToQuery UpdateDataSource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDataSourceResponse' smart constructor.
+data UpdateDataSourceResponse = UpdateDataSourceResponse'
+  { -- | The Amazon Resource Name (ARN) of the data source.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The update status of the data source\'s last update.
+    updateStatus :: Prelude.Maybe ResourceStatus,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateDataSourceResponse_arn' - The Amazon Resource Name (ARN) of the data source.
+--
+-- 'dataSourceId', 'updateDataSourceResponse_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'requestId', 'updateDataSourceResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'updateStatus', 'updateDataSourceResponse_updateStatus' - The update status of the data source\'s last update.
+--
+-- 'status', 'updateDataSourceResponse_status' - The HTTP status of the request.
+newUpdateDataSourceResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateDataSourceResponse
+newUpdateDataSourceResponse pStatus_ =
+  UpdateDataSourceResponse'
+    { arn = Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      updateStatus = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the data source.
+updateDataSourceResponse_arn :: Lens.Lens' UpdateDataSourceResponse (Prelude.Maybe Prelude.Text)
+updateDataSourceResponse_arn = Lens.lens (\UpdateDataSourceResponse' {arn} -> arn) (\s@UpdateDataSourceResponse' {} a -> s {arn = a} :: UpdateDataSourceResponse)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+updateDataSourceResponse_dataSourceId :: Lens.Lens' UpdateDataSourceResponse (Prelude.Maybe Prelude.Text)
+updateDataSourceResponse_dataSourceId = Lens.lens (\UpdateDataSourceResponse' {dataSourceId} -> dataSourceId) (\s@UpdateDataSourceResponse' {} a -> s {dataSourceId = a} :: UpdateDataSourceResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateDataSourceResponse_requestId :: Lens.Lens' UpdateDataSourceResponse (Prelude.Maybe Prelude.Text)
+updateDataSourceResponse_requestId = Lens.lens (\UpdateDataSourceResponse' {requestId} -> requestId) (\s@UpdateDataSourceResponse' {} a -> s {requestId = a} :: UpdateDataSourceResponse)
+
+-- | The update status of the data source\'s last update.
+updateDataSourceResponse_updateStatus :: Lens.Lens' UpdateDataSourceResponse (Prelude.Maybe ResourceStatus)
+updateDataSourceResponse_updateStatus = Lens.lens (\UpdateDataSourceResponse' {updateStatus} -> updateStatus) (\s@UpdateDataSourceResponse' {} a -> s {updateStatus = a} :: UpdateDataSourceResponse)
+
+-- | The HTTP status of the request.
+updateDataSourceResponse_status :: Lens.Lens' UpdateDataSourceResponse Prelude.Int
+updateDataSourceResponse_status = Lens.lens (\UpdateDataSourceResponse' {status} -> status) (\s@UpdateDataSourceResponse' {} a -> s {status = a} :: UpdateDataSourceResponse)
+
+instance Prelude.NFData UpdateDataSourceResponse where
+  rnf UpdateDataSourceResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf updateStatus
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateDataSourcePermissions.hs b/gen/Amazonka/QuickSight/UpdateDataSourcePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateDataSourcePermissions.hs
@@ -0,0 +1,259 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateDataSourcePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the permissions to a data source.
+module Amazonka.QuickSight.UpdateDataSourcePermissions
+  ( -- * Creating a Request
+    UpdateDataSourcePermissions (..),
+    newUpdateDataSourcePermissions,
+
+    -- * Request Lenses
+    updateDataSourcePermissions_grantPermissions,
+    updateDataSourcePermissions_revokePermissions,
+    updateDataSourcePermissions_awsAccountId,
+    updateDataSourcePermissions_dataSourceId,
+
+    -- * Destructuring the Response
+    UpdateDataSourcePermissionsResponse (..),
+    newUpdateDataSourcePermissionsResponse,
+
+    -- * Response Lenses
+    updateDataSourcePermissionsResponse_dataSourceArn,
+    updateDataSourcePermissionsResponse_dataSourceId,
+    updateDataSourcePermissionsResponse_requestId,
+    updateDataSourcePermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDataSourcePermissions' smart constructor.
+data UpdateDataSourcePermissions = UpdateDataSourcePermissions'
+  { -- | A list of resource permissions that you want to grant on the data
+    -- source.
+    grantPermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | A list of resource permissions that you want to revoke on the data
+    -- source.
+    revokePermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSourcePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantPermissions', 'updateDataSourcePermissions_grantPermissions' - A list of resource permissions that you want to grant on the data
+-- source.
+--
+-- 'revokePermissions', 'updateDataSourcePermissions_revokePermissions' - A list of resource permissions that you want to revoke on the data
+-- source.
+--
+-- 'awsAccountId', 'updateDataSourcePermissions_awsAccountId' - The Amazon Web Services account ID.
+--
+-- 'dataSourceId', 'updateDataSourcePermissions_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+newUpdateDataSourcePermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'dataSourceId'
+  Prelude.Text ->
+  UpdateDataSourcePermissions
+newUpdateDataSourcePermissions
+  pAwsAccountId_
+  pDataSourceId_ =
+    UpdateDataSourcePermissions'
+      { grantPermissions =
+          Prelude.Nothing,
+        revokePermissions = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        dataSourceId = pDataSourceId_
+      }
+
+-- | A list of resource permissions that you want to grant on the data
+-- source.
+updateDataSourcePermissions_grantPermissions :: Lens.Lens' UpdateDataSourcePermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateDataSourcePermissions_grantPermissions = Lens.lens (\UpdateDataSourcePermissions' {grantPermissions} -> grantPermissions) (\s@UpdateDataSourcePermissions' {} a -> s {grantPermissions = a} :: UpdateDataSourcePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of resource permissions that you want to revoke on the data
+-- source.
+updateDataSourcePermissions_revokePermissions :: Lens.Lens' UpdateDataSourcePermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateDataSourcePermissions_revokePermissions = Lens.lens (\UpdateDataSourcePermissions' {revokePermissions} -> revokePermissions) (\s@UpdateDataSourcePermissions' {} a -> s {revokePermissions = a} :: UpdateDataSourcePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services account ID.
+updateDataSourcePermissions_awsAccountId :: Lens.Lens' UpdateDataSourcePermissions Prelude.Text
+updateDataSourcePermissions_awsAccountId = Lens.lens (\UpdateDataSourcePermissions' {awsAccountId} -> awsAccountId) (\s@UpdateDataSourcePermissions' {} a -> s {awsAccountId = a} :: UpdateDataSourcePermissions)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+updateDataSourcePermissions_dataSourceId :: Lens.Lens' UpdateDataSourcePermissions Prelude.Text
+updateDataSourcePermissions_dataSourceId = Lens.lens (\UpdateDataSourcePermissions' {dataSourceId} -> dataSourceId) (\s@UpdateDataSourcePermissions' {} a -> s {dataSourceId = a} :: UpdateDataSourcePermissions)
+
+instance Core.AWSRequest UpdateDataSourcePermissions where
+  type
+    AWSResponse UpdateDataSourcePermissions =
+      UpdateDataSourcePermissionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDataSourcePermissionsResponse'
+            Prelude.<$> (x Data..?> "DataSourceArn")
+            Prelude.<*> (x Data..?> "DataSourceId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDataSourcePermissions where
+  hashWithSalt _salt UpdateDataSourcePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` dataSourceId
+
+instance Prelude.NFData UpdateDataSourcePermissions where
+  rnf UpdateDataSourcePermissions' {..} =
+    Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf dataSourceId
+
+instance Data.ToHeaders UpdateDataSourcePermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDataSourcePermissions where
+  toJSON UpdateDataSourcePermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateDataSourcePermissions where
+  toPath UpdateDataSourcePermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/data-sources/",
+        Data.toBS dataSourceId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateDataSourcePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDataSourcePermissionsResponse' smart constructor.
+data UpdateDataSourcePermissionsResponse = UpdateDataSourcePermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the data source.
+    dataSourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the data source. This ID is unique per Amazon Web Services
+    -- Region for each Amazon Web Services account.
+    dataSourceId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataSourcePermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSourceArn', 'updateDataSourcePermissionsResponse_dataSourceArn' - The Amazon Resource Name (ARN) of the data source.
+--
+-- 'dataSourceId', 'updateDataSourcePermissionsResponse_dataSourceId' - The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+--
+-- 'requestId', 'updateDataSourcePermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateDataSourcePermissionsResponse_status' - The HTTP status of the request.
+newUpdateDataSourcePermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateDataSourcePermissionsResponse
+newUpdateDataSourcePermissionsResponse pStatus_ =
+  UpdateDataSourcePermissionsResponse'
+    { dataSourceArn =
+        Prelude.Nothing,
+      dataSourceId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the data source.
+updateDataSourcePermissionsResponse_dataSourceArn :: Lens.Lens' UpdateDataSourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDataSourcePermissionsResponse_dataSourceArn = Lens.lens (\UpdateDataSourcePermissionsResponse' {dataSourceArn} -> dataSourceArn) (\s@UpdateDataSourcePermissionsResponse' {} a -> s {dataSourceArn = a} :: UpdateDataSourcePermissionsResponse)
+
+-- | The ID of the data source. This ID is unique per Amazon Web Services
+-- Region for each Amazon Web Services account.
+updateDataSourcePermissionsResponse_dataSourceId :: Lens.Lens' UpdateDataSourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDataSourcePermissionsResponse_dataSourceId = Lens.lens (\UpdateDataSourcePermissionsResponse' {dataSourceId} -> dataSourceId) (\s@UpdateDataSourcePermissionsResponse' {} a -> s {dataSourceId = a} :: UpdateDataSourcePermissionsResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateDataSourcePermissionsResponse_requestId :: Lens.Lens' UpdateDataSourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateDataSourcePermissionsResponse_requestId = Lens.lens (\UpdateDataSourcePermissionsResponse' {requestId} -> requestId) (\s@UpdateDataSourcePermissionsResponse' {} a -> s {requestId = a} :: UpdateDataSourcePermissionsResponse)
+
+-- | The HTTP status of the request.
+updateDataSourcePermissionsResponse_status :: Lens.Lens' UpdateDataSourcePermissionsResponse Prelude.Int
+updateDataSourcePermissionsResponse_status = Lens.lens (\UpdateDataSourcePermissionsResponse' {status} -> status) (\s@UpdateDataSourcePermissionsResponse' {} a -> s {status = a} :: UpdateDataSourcePermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateDataSourcePermissionsResponse
+  where
+  rnf UpdateDataSourcePermissionsResponse' {..} =
+    Prelude.rnf dataSourceArn
+      `Prelude.seq` Prelude.rnf dataSourceId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateFolder.hs b/gen/Amazonka/QuickSight/UpdateFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateFolder.hs
@@ -0,0 +1,226 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the name of a folder.
+module Amazonka.QuickSight.UpdateFolder
+  ( -- * Creating a Request
+    UpdateFolder (..),
+    newUpdateFolder,
+
+    -- * Request Lenses
+    updateFolder_awsAccountId,
+    updateFolder_folderId,
+    updateFolder_name,
+
+    -- * Destructuring the Response
+    UpdateFolderResponse (..),
+    newUpdateFolderResponse,
+
+    -- * Response Lenses
+    updateFolderResponse_arn,
+    updateFolderResponse_folderId,
+    updateFolderResponse_requestId,
+    updateFolderResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateFolder' smart constructor.
+data UpdateFolder = UpdateFolder'
+  { -- | The ID for the Amazon Web Services account that contains the folder to
+    -- update.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text,
+    -- | The name of the folder.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFolder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'updateFolder_awsAccountId' - The ID for the Amazon Web Services account that contains the folder to
+-- update.
+--
+-- 'folderId', 'updateFolder_folderId' - The ID of the folder.
+--
+-- 'name', 'updateFolder_name' - The name of the folder.
+newUpdateFolder ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateFolder
+newUpdateFolder pAwsAccountId_ pFolderId_ pName_ =
+  UpdateFolder'
+    { awsAccountId = pAwsAccountId_,
+      folderId = pFolderId_,
+      name = pName_
+    }
+
+-- | The ID for the Amazon Web Services account that contains the folder to
+-- update.
+updateFolder_awsAccountId :: Lens.Lens' UpdateFolder Prelude.Text
+updateFolder_awsAccountId = Lens.lens (\UpdateFolder' {awsAccountId} -> awsAccountId) (\s@UpdateFolder' {} a -> s {awsAccountId = a} :: UpdateFolder)
+
+-- | The ID of the folder.
+updateFolder_folderId :: Lens.Lens' UpdateFolder Prelude.Text
+updateFolder_folderId = Lens.lens (\UpdateFolder' {folderId} -> folderId) (\s@UpdateFolder' {} a -> s {folderId = a} :: UpdateFolder)
+
+-- | The name of the folder.
+updateFolder_name :: Lens.Lens' UpdateFolder Prelude.Text
+updateFolder_name = Lens.lens (\UpdateFolder' {name} -> name) (\s@UpdateFolder' {} a -> s {name = a} :: UpdateFolder)
+
+instance Core.AWSRequest UpdateFolder where
+  type AWSResponse UpdateFolder = UpdateFolderResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateFolderResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "FolderId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateFolder where
+  hashWithSalt _salt UpdateFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateFolder where
+  rnf UpdateFolder' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateFolder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFolder where
+  toJSON UpdateFolder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
+
+instance Data.ToPath UpdateFolder where
+  toPath UpdateFolder' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId
+      ]
+
+instance Data.ToQuery UpdateFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFolderResponse' smart constructor.
+data UpdateFolderResponse = UpdateFolderResponse'
+  { -- | The Amazon Resource Name (ARN) of the folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFolderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateFolderResponse_arn' - The Amazon Resource Name (ARN) of the folder.
+--
+-- 'folderId', 'updateFolderResponse_folderId' - The ID of the folder.
+--
+-- 'requestId', 'updateFolderResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateFolderResponse_status' - The HTTP status of the request.
+newUpdateFolderResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateFolderResponse
+newUpdateFolderResponse pStatus_ =
+  UpdateFolderResponse'
+    { arn = Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the folder.
+updateFolderResponse_arn :: Lens.Lens' UpdateFolderResponse (Prelude.Maybe Prelude.Text)
+updateFolderResponse_arn = Lens.lens (\UpdateFolderResponse' {arn} -> arn) (\s@UpdateFolderResponse' {} a -> s {arn = a} :: UpdateFolderResponse)
+
+-- | The ID of the folder.
+updateFolderResponse_folderId :: Lens.Lens' UpdateFolderResponse (Prelude.Maybe Prelude.Text)
+updateFolderResponse_folderId = Lens.lens (\UpdateFolderResponse' {folderId} -> folderId) (\s@UpdateFolderResponse' {} a -> s {folderId = a} :: UpdateFolderResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateFolderResponse_requestId :: Lens.Lens' UpdateFolderResponse (Prelude.Maybe Prelude.Text)
+updateFolderResponse_requestId = Lens.lens (\UpdateFolderResponse' {requestId} -> requestId) (\s@UpdateFolderResponse' {} a -> s {requestId = a} :: UpdateFolderResponse)
+
+-- | The HTTP status of the request.
+updateFolderResponse_status :: Lens.Lens' UpdateFolderResponse Prelude.Int
+updateFolderResponse_status = Lens.lens (\UpdateFolderResponse' {status} -> status) (\s@UpdateFolderResponse' {} a -> s {status = a} :: UpdateFolderResponse)
+
+instance Prelude.NFData UpdateFolderResponse where
+  rnf UpdateFolderResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateFolderPermissions.hs b/gen/Amazonka/QuickSight/UpdateFolderPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateFolderPermissions.hs
@@ -0,0 +1,272 @@
+{-# 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.QuickSight.UpdateFolderPermissions
+-- 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 permissions of a folder.
+module Amazonka.QuickSight.UpdateFolderPermissions
+  ( -- * Creating a Request
+    UpdateFolderPermissions (..),
+    newUpdateFolderPermissions,
+
+    -- * Request Lenses
+    updateFolderPermissions_grantPermissions,
+    updateFolderPermissions_revokePermissions,
+    updateFolderPermissions_awsAccountId,
+    updateFolderPermissions_folderId,
+
+    -- * Destructuring the Response
+    UpdateFolderPermissionsResponse (..),
+    newUpdateFolderPermissionsResponse,
+
+    -- * Response Lenses
+    updateFolderPermissionsResponse_arn,
+    updateFolderPermissionsResponse_folderId,
+    updateFolderPermissionsResponse_permissions,
+    updateFolderPermissionsResponse_requestId,
+    updateFolderPermissionsResponse_status,
+    updateFolderPermissionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateFolderPermissions' smart constructor.
+data UpdateFolderPermissions = UpdateFolderPermissions'
+  { -- | The permissions that you want to grant on a resource.
+    grantPermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The permissions that you want to revoke from a resource.
+    revokePermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The ID for the Amazon Web Services account that contains the folder to
+    -- update.
+    awsAccountId :: Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFolderPermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantPermissions', 'updateFolderPermissions_grantPermissions' - The permissions that you want to grant on a resource.
+--
+-- 'revokePermissions', 'updateFolderPermissions_revokePermissions' - The permissions that you want to revoke from a resource.
+--
+-- 'awsAccountId', 'updateFolderPermissions_awsAccountId' - The ID for the Amazon Web Services account that contains the folder to
+-- update.
+--
+-- 'folderId', 'updateFolderPermissions_folderId' - The ID of the folder.
+newUpdateFolderPermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'folderId'
+  Prelude.Text ->
+  UpdateFolderPermissions
+newUpdateFolderPermissions pAwsAccountId_ pFolderId_ =
+  UpdateFolderPermissions'
+    { grantPermissions =
+        Prelude.Nothing,
+      revokePermissions = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      folderId = pFolderId_
+    }
+
+-- | The permissions that you want to grant on a resource.
+updateFolderPermissions_grantPermissions :: Lens.Lens' UpdateFolderPermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateFolderPermissions_grantPermissions = Lens.lens (\UpdateFolderPermissions' {grantPermissions} -> grantPermissions) (\s@UpdateFolderPermissions' {} a -> s {grantPermissions = a} :: UpdateFolderPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The permissions that you want to revoke from a resource.
+updateFolderPermissions_revokePermissions :: Lens.Lens' UpdateFolderPermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateFolderPermissions_revokePermissions = Lens.lens (\UpdateFolderPermissions' {revokePermissions} -> revokePermissions) (\s@UpdateFolderPermissions' {} a -> s {revokePermissions = a} :: UpdateFolderPermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID for the Amazon Web Services account that contains the folder to
+-- update.
+updateFolderPermissions_awsAccountId :: Lens.Lens' UpdateFolderPermissions Prelude.Text
+updateFolderPermissions_awsAccountId = Lens.lens (\UpdateFolderPermissions' {awsAccountId} -> awsAccountId) (\s@UpdateFolderPermissions' {} a -> s {awsAccountId = a} :: UpdateFolderPermissions)
+
+-- | The ID of the folder.
+updateFolderPermissions_folderId :: Lens.Lens' UpdateFolderPermissions Prelude.Text
+updateFolderPermissions_folderId = Lens.lens (\UpdateFolderPermissions' {folderId} -> folderId) (\s@UpdateFolderPermissions' {} a -> s {folderId = a} :: UpdateFolderPermissions)
+
+instance Core.AWSRequest UpdateFolderPermissions where
+  type
+    AWSResponse UpdateFolderPermissions =
+      UpdateFolderPermissionsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateFolderPermissionsResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "FolderId")
+            Prelude.<*> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateFolderPermissions where
+  hashWithSalt _salt UpdateFolderPermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData UpdateFolderPermissions where
+  rnf UpdateFolderPermissions' {..} =
+    Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders UpdateFolderPermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFolderPermissions where
+  toJSON UpdateFolderPermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateFolderPermissions where
+  toPath UpdateFolderPermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/folders/",
+        Data.toBS folderId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateFolderPermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFolderPermissionsResponse' smart constructor.
+data UpdateFolderPermissionsResponse = UpdateFolderPermissionsResponse'
+  { -- | The Amazon Resource Name (ARN) of the folder.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the permissions for the folder.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Maybe Prelude.Int,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFolderPermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateFolderPermissionsResponse_arn' - The Amazon Resource Name (ARN) of the folder.
+--
+-- 'folderId', 'updateFolderPermissionsResponse_folderId' - The ID of the folder.
+--
+-- 'permissions', 'updateFolderPermissionsResponse_permissions' - Information about the permissions for the folder.
+--
+-- 'requestId', 'updateFolderPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateFolderPermissionsResponse_status' - The HTTP status of the request.
+--
+-- 'httpStatus', 'updateFolderPermissionsResponse_httpStatus' - The response's http status code.
+newUpdateFolderPermissionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateFolderPermissionsResponse
+newUpdateFolderPermissionsResponse pHttpStatus_ =
+  UpdateFolderPermissionsResponse'
+    { arn =
+        Prelude.Nothing,
+      folderId = Prelude.Nothing,
+      permissions = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the folder.
+updateFolderPermissionsResponse_arn :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateFolderPermissionsResponse_arn = Lens.lens (\UpdateFolderPermissionsResponse' {arn} -> arn) (\s@UpdateFolderPermissionsResponse' {} a -> s {arn = a} :: UpdateFolderPermissionsResponse)
+
+-- | The ID of the folder.
+updateFolderPermissionsResponse_folderId :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateFolderPermissionsResponse_folderId = Lens.lens (\UpdateFolderPermissionsResponse' {folderId} -> folderId) (\s@UpdateFolderPermissionsResponse' {} a -> s {folderId = a} :: UpdateFolderPermissionsResponse)
+
+-- | Information about the permissions for the folder.
+updateFolderPermissionsResponse_permissions :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateFolderPermissionsResponse_permissions = Lens.lens (\UpdateFolderPermissionsResponse' {permissions} -> permissions) (\s@UpdateFolderPermissionsResponse' {} a -> s {permissions = a} :: UpdateFolderPermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+updateFolderPermissionsResponse_requestId :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
+updateFolderPermissionsResponse_requestId = Lens.lens (\UpdateFolderPermissionsResponse' {requestId} -> requestId) (\s@UpdateFolderPermissionsResponse' {} a -> s {requestId = a} :: UpdateFolderPermissionsResponse)
+
+-- | The HTTP status of the request.
+updateFolderPermissionsResponse_status :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Int)
+updateFolderPermissionsResponse_status = Lens.lens (\UpdateFolderPermissionsResponse' {status} -> status) (\s@UpdateFolderPermissionsResponse' {} a -> s {status = a} :: UpdateFolderPermissionsResponse)
+
+-- | The response's http status code.
+updateFolderPermissionsResponse_httpStatus :: Lens.Lens' UpdateFolderPermissionsResponse Prelude.Int
+updateFolderPermissionsResponse_httpStatus = Lens.lens (\UpdateFolderPermissionsResponse' {httpStatus} -> httpStatus) (\s@UpdateFolderPermissionsResponse' {} a -> s {httpStatus = a} :: UpdateFolderPermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateFolderPermissionsResponse
+  where
+  rnf UpdateFolderPermissionsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf folderId
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/QuickSight/UpdateGroup.hs b/gen/Amazonka/QuickSight/UpdateGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateGroup.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.QuickSight.UpdateGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes a group description.
+module Amazonka.QuickSight.UpdateGroup
+  ( -- * Creating a Request
+    UpdateGroup (..),
+    newUpdateGroup,
+
+    -- * Request Lenses
+    updateGroup_description,
+    updateGroup_groupName,
+    updateGroup_awsAccountId,
+    updateGroup_namespace,
+
+    -- * Destructuring the Response
+    UpdateGroupResponse (..),
+    newUpdateGroupResponse,
+
+    -- * Response Lenses
+    updateGroupResponse_group,
+    updateGroupResponse_requestId,
+    updateGroupResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateGroup' smart constructor.
+data UpdateGroup = UpdateGroup'
+  { -- | The description for the group that you want to update.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the group that you want to update.
+    groupName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the group is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace of the group that you want to update.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateGroup_description' - The description for the group that you want to update.
+--
+-- 'groupName', 'updateGroup_groupName' - The name of the group that you want to update.
+--
+-- 'awsAccountId', 'updateGroup_awsAccountId' - The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'updateGroup_namespace' - The namespace of the group that you want to update.
+newUpdateGroup ::
+  -- | 'groupName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  UpdateGroup
+newUpdateGroup pGroupName_ pAwsAccountId_ pNamespace_ =
+  UpdateGroup'
+    { description = Prelude.Nothing,
+      groupName = pGroupName_,
+      awsAccountId = pAwsAccountId_,
+      namespace = pNamespace_
+    }
+
+-- | The description for the group that you want to update.
+updateGroup_description :: Lens.Lens' UpdateGroup (Prelude.Maybe Prelude.Text)
+updateGroup_description = Lens.lens (\UpdateGroup' {description} -> description) (\s@UpdateGroup' {} a -> s {description = a} :: UpdateGroup)
+
+-- | The name of the group that you want to update.
+updateGroup_groupName :: Lens.Lens' UpdateGroup Prelude.Text
+updateGroup_groupName = Lens.lens (\UpdateGroup' {groupName} -> groupName) (\s@UpdateGroup' {} a -> s {groupName = a} :: UpdateGroup)
+
+-- | The ID for the Amazon Web Services account that the group is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+updateGroup_awsAccountId :: Lens.Lens' UpdateGroup Prelude.Text
+updateGroup_awsAccountId = Lens.lens (\UpdateGroup' {awsAccountId} -> awsAccountId) (\s@UpdateGroup' {} a -> s {awsAccountId = a} :: UpdateGroup)
+
+-- | The namespace of the group that you want to update.
+updateGroup_namespace :: Lens.Lens' UpdateGroup Prelude.Text
+updateGroup_namespace = Lens.lens (\UpdateGroup' {namespace} -> namespace) (\s@UpdateGroup' {} a -> s {namespace = a} :: UpdateGroup)
+
+instance Core.AWSRequest UpdateGroup where
+  type AWSResponse UpdateGroup = UpdateGroupResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateGroupResponse'
+            Prelude.<$> (x Data..?> "Group")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateGroup where
+  hashWithSalt _salt UpdateGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` groupName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData UpdateGroup where
+  rnf UpdateGroup' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf groupName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders UpdateGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateGroup where
+  toJSON UpdateGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Description" Data..=) Prelude.<$> description]
+      )
+
+instance Data.ToPath UpdateGroup where
+  toPath UpdateGroup' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/groups/",
+        Data.toBS groupName
+      ]
+
+instance Data.ToQuery UpdateGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateGroupResponse' smart constructor.
+data UpdateGroupResponse = UpdateGroupResponse'
+  { -- | The name of the group.
+    group' :: Prelude.Maybe Group,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'group'', 'updateGroupResponse_group' - The name of the group.
+--
+-- 'requestId', 'updateGroupResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateGroupResponse_status' - The HTTP status of the request.
+newUpdateGroupResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateGroupResponse
+newUpdateGroupResponse pStatus_ =
+  UpdateGroupResponse'
+    { group' = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The name of the group.
+updateGroupResponse_group :: Lens.Lens' UpdateGroupResponse (Prelude.Maybe Group)
+updateGroupResponse_group = Lens.lens (\UpdateGroupResponse' {group'} -> group') (\s@UpdateGroupResponse' {} a -> s {group' = a} :: UpdateGroupResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateGroupResponse_requestId :: Lens.Lens' UpdateGroupResponse (Prelude.Maybe Prelude.Text)
+updateGroupResponse_requestId = Lens.lens (\UpdateGroupResponse' {requestId} -> requestId) (\s@UpdateGroupResponse' {} a -> s {requestId = a} :: UpdateGroupResponse)
+
+-- | The HTTP status of the request.
+updateGroupResponse_status :: Lens.Lens' UpdateGroupResponse Prelude.Int
+updateGroupResponse_status = Lens.lens (\UpdateGroupResponse' {status} -> status) (\s@UpdateGroupResponse' {} a -> s {status = a} :: UpdateGroupResponse)
+
+instance Prelude.NFData UpdateGroupResponse where
+  rnf UpdateGroupResponse' {..} =
+    Prelude.rnf group'
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateIAMPolicyAssignment.hs b/gen/Amazonka/QuickSight/UpdateIAMPolicyAssignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateIAMPolicyAssignment.hs
@@ -0,0 +1,385 @@
+{-# 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.QuickSight.UpdateIAMPolicyAssignment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing IAM policy assignment. This operation updates only
+-- the optional parameter or parameters that are specified in the request.
+-- This overwrites all of the users included in @Identities@.
+module Amazonka.QuickSight.UpdateIAMPolicyAssignment
+  ( -- * Creating a Request
+    UpdateIAMPolicyAssignment (..),
+    newUpdateIAMPolicyAssignment,
+
+    -- * Request Lenses
+    updateIAMPolicyAssignment_assignmentStatus,
+    updateIAMPolicyAssignment_identities,
+    updateIAMPolicyAssignment_policyArn,
+    updateIAMPolicyAssignment_awsAccountId,
+    updateIAMPolicyAssignment_assignmentName,
+    updateIAMPolicyAssignment_namespace,
+
+    -- * Destructuring the Response
+    UpdateIAMPolicyAssignmentResponse (..),
+    newUpdateIAMPolicyAssignmentResponse,
+
+    -- * Response Lenses
+    updateIAMPolicyAssignmentResponse_assignmentId,
+    updateIAMPolicyAssignmentResponse_assignmentName,
+    updateIAMPolicyAssignmentResponse_assignmentStatus,
+    updateIAMPolicyAssignmentResponse_identities,
+    updateIAMPolicyAssignmentResponse_policyArn,
+    updateIAMPolicyAssignmentResponse_requestId,
+    updateIAMPolicyAssignmentResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateIAMPolicyAssignment' smart constructor.
+data UpdateIAMPolicyAssignment = UpdateIAMPolicyAssignment'
+  { -- | The status of the assignment. Possible values are as follows:
+    --
+    -- -   @ENABLED@ - Anything specified in this assignment is used when
+    --     creating the data source.
+    --
+    -- -   @DISABLED@ - This assignment isn\'t used when creating the data
+    --     source.
+    --
+    -- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+    --     when creating the data source.
+    assignmentStatus :: Prelude.Maybe AssignmentStatus,
+    -- | The Amazon QuickSight users, groups, or both that you want to assign the
+    -- policy to.
+    identities :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | The ARN for the IAM policy to apply to the Amazon QuickSight users and
+    -- groups specified in this assignment.
+    policyArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the IAM policy
+    -- assignment.
+    awsAccountId :: Prelude.Text,
+    -- | The name of the assignment, also called a rule. This name must be unique
+    -- within an Amazon Web Services account.
+    assignmentName :: Prelude.Text,
+    -- | The namespace of the assignment.
+    namespace :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIAMPolicyAssignment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentStatus', 'updateIAMPolicyAssignment_assignmentStatus' - The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+--
+-- 'identities', 'updateIAMPolicyAssignment_identities' - The Amazon QuickSight users, groups, or both that you want to assign the
+-- policy to.
+--
+-- 'policyArn', 'updateIAMPolicyAssignment_policyArn' - The ARN for the IAM policy to apply to the Amazon QuickSight users and
+-- groups specified in this assignment.
+--
+-- 'awsAccountId', 'updateIAMPolicyAssignment_awsAccountId' - The ID of the Amazon Web Services account that contains the IAM policy
+-- assignment.
+--
+-- 'assignmentName', 'updateIAMPolicyAssignment_assignmentName' - The name of the assignment, also called a rule. This name must be unique
+-- within an Amazon Web Services account.
+--
+-- 'namespace', 'updateIAMPolicyAssignment_namespace' - The namespace of the assignment.
+newUpdateIAMPolicyAssignment ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'assignmentName'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  UpdateIAMPolicyAssignment
+newUpdateIAMPolicyAssignment
+  pAwsAccountId_
+  pAssignmentName_
+  pNamespace_ =
+    UpdateIAMPolicyAssignment'
+      { assignmentStatus =
+          Prelude.Nothing,
+        identities = Prelude.Nothing,
+        policyArn = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        assignmentName = pAssignmentName_,
+        namespace = pNamespace_
+      }
+
+-- | The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+updateIAMPolicyAssignment_assignmentStatus :: Lens.Lens' UpdateIAMPolicyAssignment (Prelude.Maybe AssignmentStatus)
+updateIAMPolicyAssignment_assignmentStatus = Lens.lens (\UpdateIAMPolicyAssignment' {assignmentStatus} -> assignmentStatus) (\s@UpdateIAMPolicyAssignment' {} a -> s {assignmentStatus = a} :: UpdateIAMPolicyAssignment)
+
+-- | The Amazon QuickSight users, groups, or both that you want to assign the
+-- policy to.
+updateIAMPolicyAssignment_identities :: Lens.Lens' UpdateIAMPolicyAssignment (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+updateIAMPolicyAssignment_identities = Lens.lens (\UpdateIAMPolicyAssignment' {identities} -> identities) (\s@UpdateIAMPolicyAssignment' {} a -> s {identities = a} :: UpdateIAMPolicyAssignment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN for the IAM policy to apply to the Amazon QuickSight users and
+-- groups specified in this assignment.
+updateIAMPolicyAssignment_policyArn :: Lens.Lens' UpdateIAMPolicyAssignment (Prelude.Maybe Prelude.Text)
+updateIAMPolicyAssignment_policyArn = Lens.lens (\UpdateIAMPolicyAssignment' {policyArn} -> policyArn) (\s@UpdateIAMPolicyAssignment' {} a -> s {policyArn = a} :: UpdateIAMPolicyAssignment)
+
+-- | The ID of the Amazon Web Services account that contains the IAM policy
+-- assignment.
+updateIAMPolicyAssignment_awsAccountId :: Lens.Lens' UpdateIAMPolicyAssignment Prelude.Text
+updateIAMPolicyAssignment_awsAccountId = Lens.lens (\UpdateIAMPolicyAssignment' {awsAccountId} -> awsAccountId) (\s@UpdateIAMPolicyAssignment' {} a -> s {awsAccountId = a} :: UpdateIAMPolicyAssignment)
+
+-- | The name of the assignment, also called a rule. This name must be unique
+-- within an Amazon Web Services account.
+updateIAMPolicyAssignment_assignmentName :: Lens.Lens' UpdateIAMPolicyAssignment Prelude.Text
+updateIAMPolicyAssignment_assignmentName = Lens.lens (\UpdateIAMPolicyAssignment' {assignmentName} -> assignmentName) (\s@UpdateIAMPolicyAssignment' {} a -> s {assignmentName = a} :: UpdateIAMPolicyAssignment)
+
+-- | The namespace of the assignment.
+updateIAMPolicyAssignment_namespace :: Lens.Lens' UpdateIAMPolicyAssignment Prelude.Text
+updateIAMPolicyAssignment_namespace = Lens.lens (\UpdateIAMPolicyAssignment' {namespace} -> namespace) (\s@UpdateIAMPolicyAssignment' {} a -> s {namespace = a} :: UpdateIAMPolicyAssignment)
+
+instance Core.AWSRequest UpdateIAMPolicyAssignment where
+  type
+    AWSResponse UpdateIAMPolicyAssignment =
+      UpdateIAMPolicyAssignmentResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateIAMPolicyAssignmentResponse'
+            Prelude.<$> (x Data..?> "AssignmentId")
+            Prelude.<*> (x Data..?> "AssignmentName")
+            Prelude.<*> (x Data..?> "AssignmentStatus")
+            Prelude.<*> (x Data..?> "Identities" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "PolicyArn")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateIAMPolicyAssignment where
+  hashWithSalt _salt UpdateIAMPolicyAssignment' {..} =
+    _salt
+      `Prelude.hashWithSalt` assignmentStatus
+      `Prelude.hashWithSalt` identities
+      `Prelude.hashWithSalt` policyArn
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` assignmentName
+      `Prelude.hashWithSalt` namespace
+
+instance Prelude.NFData UpdateIAMPolicyAssignment where
+  rnf UpdateIAMPolicyAssignment' {..} =
+    Prelude.rnf assignmentStatus
+      `Prelude.seq` Prelude.rnf identities
+      `Prelude.seq` Prelude.rnf policyArn
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf namespace
+
+instance Data.ToHeaders UpdateIAMPolicyAssignment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateIAMPolicyAssignment where
+  toJSON UpdateIAMPolicyAssignment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AssignmentStatus" Data..=)
+              Prelude.<$> assignmentStatus,
+            ("Identities" Data..=) Prelude.<$> identities,
+            ("PolicyArn" Data..=) Prelude.<$> policyArn
+          ]
+      )
+
+instance Data.ToPath UpdateIAMPolicyAssignment where
+  toPath UpdateIAMPolicyAssignment' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/iam-policy-assignments/",
+        Data.toBS assignmentName
+      ]
+
+instance Data.ToQuery UpdateIAMPolicyAssignment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateIAMPolicyAssignmentResponse' smart constructor.
+data UpdateIAMPolicyAssignmentResponse = UpdateIAMPolicyAssignmentResponse'
+  { -- | The ID of the assignment.
+    assignmentId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the assignment or rule.
+    assignmentName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the assignment. Possible values are as follows:
+    --
+    -- -   @ENABLED@ - Anything specified in this assignment is used when
+    --     creating the data source.
+    --
+    -- -   @DISABLED@ - This assignment isn\'t used when creating the data
+    --     source.
+    --
+    -- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+    --     when creating the data source.
+    assignmentStatus :: Prelude.Maybe AssignmentStatus,
+    -- | The Amazon QuickSight users, groups, or both that the IAM policy is
+    -- assigned to.
+    identities :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | The ARN for the IAM policy applied to the Amazon QuickSight users and
+    -- groups specified in this assignment.
+    policyArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIAMPolicyAssignmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignmentId', 'updateIAMPolicyAssignmentResponse_assignmentId' - The ID of the assignment.
+--
+-- 'assignmentName', 'updateIAMPolicyAssignmentResponse_assignmentName' - The name of the assignment or rule.
+--
+-- 'assignmentStatus', 'updateIAMPolicyAssignmentResponse_assignmentStatus' - The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+--
+-- 'identities', 'updateIAMPolicyAssignmentResponse_identities' - The Amazon QuickSight users, groups, or both that the IAM policy is
+-- assigned to.
+--
+-- 'policyArn', 'updateIAMPolicyAssignmentResponse_policyArn' - The ARN for the IAM policy applied to the Amazon QuickSight users and
+-- groups specified in this assignment.
+--
+-- 'requestId', 'updateIAMPolicyAssignmentResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateIAMPolicyAssignmentResponse_status' - The HTTP status of the request.
+newUpdateIAMPolicyAssignmentResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateIAMPolicyAssignmentResponse
+newUpdateIAMPolicyAssignmentResponse pStatus_ =
+  UpdateIAMPolicyAssignmentResponse'
+    { assignmentId =
+        Prelude.Nothing,
+      assignmentName = Prelude.Nothing,
+      assignmentStatus = Prelude.Nothing,
+      identities = Prelude.Nothing,
+      policyArn = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the assignment.
+updateIAMPolicyAssignmentResponse_assignmentId :: Lens.Lens' UpdateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+updateIAMPolicyAssignmentResponse_assignmentId = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {assignmentId} -> assignmentId) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {assignmentId = a} :: UpdateIAMPolicyAssignmentResponse)
+
+-- | The name of the assignment or rule.
+updateIAMPolicyAssignmentResponse_assignmentName :: Lens.Lens' UpdateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+updateIAMPolicyAssignmentResponse_assignmentName = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {assignmentName} -> assignmentName) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {assignmentName = a} :: UpdateIAMPolicyAssignmentResponse)
+
+-- | The status of the assignment. Possible values are as follows:
+--
+-- -   @ENABLED@ - Anything specified in this assignment is used when
+--     creating the data source.
+--
+-- -   @DISABLED@ - This assignment isn\'t used when creating the data
+--     source.
+--
+-- -   @DRAFT@ - This assignment is an unfinished draft and isn\'t used
+--     when creating the data source.
+updateIAMPolicyAssignmentResponse_assignmentStatus :: Lens.Lens' UpdateIAMPolicyAssignmentResponse (Prelude.Maybe AssignmentStatus)
+updateIAMPolicyAssignmentResponse_assignmentStatus = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {assignmentStatus} -> assignmentStatus) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {assignmentStatus = a} :: UpdateIAMPolicyAssignmentResponse)
+
+-- | The Amazon QuickSight users, groups, or both that the IAM policy is
+-- assigned to.
+updateIAMPolicyAssignmentResponse_identities :: Lens.Lens' UpdateIAMPolicyAssignmentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+updateIAMPolicyAssignmentResponse_identities = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {identities} -> identities) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {identities = a} :: UpdateIAMPolicyAssignmentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN for the IAM policy applied to the Amazon QuickSight users and
+-- groups specified in this assignment.
+updateIAMPolicyAssignmentResponse_policyArn :: Lens.Lens' UpdateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+updateIAMPolicyAssignmentResponse_policyArn = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {policyArn} -> policyArn) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {policyArn = a} :: UpdateIAMPolicyAssignmentResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateIAMPolicyAssignmentResponse_requestId :: Lens.Lens' UpdateIAMPolicyAssignmentResponse (Prelude.Maybe Prelude.Text)
+updateIAMPolicyAssignmentResponse_requestId = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {requestId} -> requestId) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {requestId = a} :: UpdateIAMPolicyAssignmentResponse)
+
+-- | The HTTP status of the request.
+updateIAMPolicyAssignmentResponse_status :: Lens.Lens' UpdateIAMPolicyAssignmentResponse Prelude.Int
+updateIAMPolicyAssignmentResponse_status = Lens.lens (\UpdateIAMPolicyAssignmentResponse' {status} -> status) (\s@UpdateIAMPolicyAssignmentResponse' {} a -> s {status = a} :: UpdateIAMPolicyAssignmentResponse)
+
+instance
+  Prelude.NFData
+    UpdateIAMPolicyAssignmentResponse
+  where
+  rnf UpdateIAMPolicyAssignmentResponse' {..} =
+    Prelude.rnf assignmentId
+      `Prelude.seq` Prelude.rnf assignmentName
+      `Prelude.seq` Prelude.rnf assignmentStatus
+      `Prelude.seq` Prelude.rnf identities
+      `Prelude.seq` Prelude.rnf policyArn
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateIpRestriction.hs b/gen/Amazonka/QuickSight/UpdateIpRestriction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateIpRestriction.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.QuickSight.UpdateIpRestriction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the content and status of IP rules. To use this operation, you
+-- need to provide the entire map of rules. You can use the
+-- @DescribeIpRestriction@ operation to get the current rule map.
+module Amazonka.QuickSight.UpdateIpRestriction
+  ( -- * Creating a Request
+    UpdateIpRestriction (..),
+    newUpdateIpRestriction,
+
+    -- * Request Lenses
+    updateIpRestriction_enabled,
+    updateIpRestriction_ipRestrictionRuleMap,
+    updateIpRestriction_awsAccountId,
+
+    -- * Destructuring the Response
+    UpdateIpRestrictionResponse (..),
+    newUpdateIpRestrictionResponse,
+
+    -- * Response Lenses
+    updateIpRestrictionResponse_awsAccountId,
+    updateIpRestrictionResponse_requestId,
+    updateIpRestrictionResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateIpRestriction' smart constructor.
+data UpdateIpRestriction = UpdateIpRestriction'
+  { -- | A value that specifies whether IP rules are turned on.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | A map that describes the updated IP rules with CIDR ranges and
+    -- descriptions.
+    ipRestrictionRuleMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The ID of the Amazon Web Services account that contains the IP rules.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIpRestriction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'enabled', 'updateIpRestriction_enabled' - A value that specifies whether IP rules are turned on.
+--
+-- 'ipRestrictionRuleMap', 'updateIpRestriction_ipRestrictionRuleMap' - A map that describes the updated IP rules with CIDR ranges and
+-- descriptions.
+--
+-- 'awsAccountId', 'updateIpRestriction_awsAccountId' - The ID of the Amazon Web Services account that contains the IP rules.
+newUpdateIpRestriction ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  UpdateIpRestriction
+newUpdateIpRestriction pAwsAccountId_ =
+  UpdateIpRestriction'
+    { enabled = Prelude.Nothing,
+      ipRestrictionRuleMap = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | A value that specifies whether IP rules are turned on.
+updateIpRestriction_enabled :: Lens.Lens' UpdateIpRestriction (Prelude.Maybe Prelude.Bool)
+updateIpRestriction_enabled = Lens.lens (\UpdateIpRestriction' {enabled} -> enabled) (\s@UpdateIpRestriction' {} a -> s {enabled = a} :: UpdateIpRestriction)
+
+-- | A map that describes the updated IP rules with CIDR ranges and
+-- descriptions.
+updateIpRestriction_ipRestrictionRuleMap :: Lens.Lens' UpdateIpRestriction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateIpRestriction_ipRestrictionRuleMap = Lens.lens (\UpdateIpRestriction' {ipRestrictionRuleMap} -> ipRestrictionRuleMap) (\s@UpdateIpRestriction' {} a -> s {ipRestrictionRuleMap = a} :: UpdateIpRestriction) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Amazon Web Services account that contains the IP rules.
+updateIpRestriction_awsAccountId :: Lens.Lens' UpdateIpRestriction Prelude.Text
+updateIpRestriction_awsAccountId = Lens.lens (\UpdateIpRestriction' {awsAccountId} -> awsAccountId) (\s@UpdateIpRestriction' {} a -> s {awsAccountId = a} :: UpdateIpRestriction)
+
+instance Core.AWSRequest UpdateIpRestriction where
+  type
+    AWSResponse UpdateIpRestriction =
+      UpdateIpRestrictionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateIpRestrictionResponse'
+            Prelude.<$> (x Data..?> "AwsAccountId")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateIpRestriction where
+  hashWithSalt _salt UpdateIpRestriction' {..} =
+    _salt
+      `Prelude.hashWithSalt` enabled
+      `Prelude.hashWithSalt` ipRestrictionRuleMap
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData UpdateIpRestriction where
+  rnf UpdateIpRestriction' {..} =
+    Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf ipRestrictionRuleMap
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders UpdateIpRestriction where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateIpRestriction where
+  toJSON UpdateIpRestriction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Enabled" Data..=) Prelude.<$> enabled,
+            ("IpRestrictionRuleMap" Data..=)
+              Prelude.<$> ipRestrictionRuleMap
+          ]
+      )
+
+instance Data.ToPath UpdateIpRestriction where
+  toPath UpdateIpRestriction' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/ip-restriction"
+      ]
+
+instance Data.ToQuery UpdateIpRestriction where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateIpRestrictionResponse' smart constructor.
+data UpdateIpRestrictionResponse = UpdateIpRestrictionResponse'
+  { -- | The ID of the Amazon Web Services account that contains the IP rules.
+    awsAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIpRestrictionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'updateIpRestrictionResponse_awsAccountId' - The ID of the Amazon Web Services account that contains the IP rules.
+--
+-- 'requestId', 'updateIpRestrictionResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updateIpRestrictionResponse_status' - The HTTP status of the request.
+newUpdateIpRestrictionResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateIpRestrictionResponse
+newUpdateIpRestrictionResponse pStatus_ =
+  UpdateIpRestrictionResponse'
+    { awsAccountId =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The ID of the Amazon Web Services account that contains the IP rules.
+updateIpRestrictionResponse_awsAccountId :: Lens.Lens' UpdateIpRestrictionResponse (Prelude.Maybe Prelude.Text)
+updateIpRestrictionResponse_awsAccountId = Lens.lens (\UpdateIpRestrictionResponse' {awsAccountId} -> awsAccountId) (\s@UpdateIpRestrictionResponse' {} a -> s {awsAccountId = a} :: UpdateIpRestrictionResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateIpRestrictionResponse_requestId :: Lens.Lens' UpdateIpRestrictionResponse (Prelude.Maybe Prelude.Text)
+updateIpRestrictionResponse_requestId = Lens.lens (\UpdateIpRestrictionResponse' {requestId} -> requestId) (\s@UpdateIpRestrictionResponse' {} a -> s {requestId = a} :: UpdateIpRestrictionResponse)
+
+-- | The HTTP status of the request.
+updateIpRestrictionResponse_status :: Lens.Lens' UpdateIpRestrictionResponse Prelude.Int
+updateIpRestrictionResponse_status = Lens.lens (\UpdateIpRestrictionResponse' {status} -> status) (\s@UpdateIpRestrictionResponse' {} a -> s {status = a} :: UpdateIpRestrictionResponse)
+
+instance Prelude.NFData UpdateIpRestrictionResponse where
+  rnf UpdateIpRestrictionResponse' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdatePublicSharingSettings.hs b/gen/Amazonka/QuickSight/UpdatePublicSharingSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdatePublicSharingSettings.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.QuickSight.UpdatePublicSharingSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use the @UpdatePublicSharingSettings@ operation to turn on or turn off
+-- the public sharing settings of an Amazon QuickSight dashboard.
+--
+-- To use this operation, turn on session capacity pricing for your Amazon
+-- QuickSight account.
+--
+-- Before you can turn on public sharing on your account, make sure to give
+-- public sharing permissions to an administrative user in the Identity and
+-- Access Management (IAM) console. For more information on using IAM with
+-- Amazon QuickSight, see
+-- <https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html Using Amazon QuickSight with IAM>
+-- in the /Amazon QuickSight User Guide/.
+module Amazonka.QuickSight.UpdatePublicSharingSettings
+  ( -- * Creating a Request
+    UpdatePublicSharingSettings (..),
+    newUpdatePublicSharingSettings,
+
+    -- * Request Lenses
+    updatePublicSharingSettings_publicSharingEnabled,
+    updatePublicSharingSettings_awsAccountId,
+
+    -- * Destructuring the Response
+    UpdatePublicSharingSettingsResponse (..),
+    newUpdatePublicSharingSettingsResponse,
+
+    -- * Response Lenses
+    updatePublicSharingSettingsResponse_requestId,
+    updatePublicSharingSettingsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePublicSharingSettings' smart constructor.
+data UpdatePublicSharingSettings = UpdatePublicSharingSettings'
+  { -- | A Boolean value that indicates whether public sharing is turned on for
+    -- an Amazon QuickSight account.
+    publicSharingEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Web Services account ID associated with your Amazon
+    -- QuickSight subscription.
+    awsAccountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePublicSharingSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'publicSharingEnabled', 'updatePublicSharingSettings_publicSharingEnabled' - A Boolean value that indicates whether public sharing is turned on for
+-- an Amazon QuickSight account.
+--
+-- 'awsAccountId', 'updatePublicSharingSettings_awsAccountId' - The Amazon Web Services account ID associated with your Amazon
+-- QuickSight subscription.
+newUpdatePublicSharingSettings ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  UpdatePublicSharingSettings
+newUpdatePublicSharingSettings pAwsAccountId_ =
+  UpdatePublicSharingSettings'
+    { publicSharingEnabled =
+        Prelude.Nothing,
+      awsAccountId = pAwsAccountId_
+    }
+
+-- | A Boolean value that indicates whether public sharing is turned on for
+-- an Amazon QuickSight account.
+updatePublicSharingSettings_publicSharingEnabled :: Lens.Lens' UpdatePublicSharingSettings (Prelude.Maybe Prelude.Bool)
+updatePublicSharingSettings_publicSharingEnabled = Lens.lens (\UpdatePublicSharingSettings' {publicSharingEnabled} -> publicSharingEnabled) (\s@UpdatePublicSharingSettings' {} a -> s {publicSharingEnabled = a} :: UpdatePublicSharingSettings)
+
+-- | The Amazon Web Services account ID associated with your Amazon
+-- QuickSight subscription.
+updatePublicSharingSettings_awsAccountId :: Lens.Lens' UpdatePublicSharingSettings Prelude.Text
+updatePublicSharingSettings_awsAccountId = Lens.lens (\UpdatePublicSharingSettings' {awsAccountId} -> awsAccountId) (\s@UpdatePublicSharingSettings' {} a -> s {awsAccountId = a} :: UpdatePublicSharingSettings)
+
+instance Core.AWSRequest UpdatePublicSharingSettings where
+  type
+    AWSResponse UpdatePublicSharingSettings =
+      UpdatePublicSharingSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePublicSharingSettingsResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePublicSharingSettings where
+  hashWithSalt _salt UpdatePublicSharingSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` publicSharingEnabled
+      `Prelude.hashWithSalt` awsAccountId
+
+instance Prelude.NFData UpdatePublicSharingSettings where
+  rnf UpdatePublicSharingSettings' {..} =
+    Prelude.rnf publicSharingEnabled
+      `Prelude.seq` Prelude.rnf awsAccountId
+
+instance Data.ToHeaders UpdatePublicSharingSettings where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePublicSharingSettings where
+  toJSON UpdatePublicSharingSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PublicSharingEnabled" Data..=)
+              Prelude.<$> publicSharingEnabled
+          ]
+      )
+
+instance Data.ToPath UpdatePublicSharingSettings where
+  toPath UpdatePublicSharingSettings' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/public-sharing-settings"
+      ]
+
+instance Data.ToQuery UpdatePublicSharingSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePublicSharingSettingsResponse' smart constructor.
+data UpdatePublicSharingSettingsResponse = UpdatePublicSharingSettingsResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePublicSharingSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'updatePublicSharingSettingsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'status', 'updatePublicSharingSettingsResponse_status' - The HTTP status of the request.
+newUpdatePublicSharingSettingsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdatePublicSharingSettingsResponse
+newUpdatePublicSharingSettingsResponse pStatus_ =
+  UpdatePublicSharingSettingsResponse'
+    { requestId =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+updatePublicSharingSettingsResponse_requestId :: Lens.Lens' UpdatePublicSharingSettingsResponse (Prelude.Maybe Prelude.Text)
+updatePublicSharingSettingsResponse_requestId = Lens.lens (\UpdatePublicSharingSettingsResponse' {requestId} -> requestId) (\s@UpdatePublicSharingSettingsResponse' {} a -> s {requestId = a} :: UpdatePublicSharingSettingsResponse)
+
+-- | The HTTP status of the request.
+updatePublicSharingSettingsResponse_status :: Lens.Lens' UpdatePublicSharingSettingsResponse Prelude.Int
+updatePublicSharingSettingsResponse_status = Lens.lens (\UpdatePublicSharingSettingsResponse' {status} -> status) (\s@UpdatePublicSharingSettingsResponse' {} a -> s {status = a} :: UpdatePublicSharingSettingsResponse)
+
+instance
+  Prelude.NFData
+    UpdatePublicSharingSettingsResponse
+  where
+  rnf UpdatePublicSharingSettingsResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateTemplate.hs b/gen/Amazonka/QuickSight/UpdateTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateTemplate.hs
@@ -0,0 +1,349 @@
+{-# 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.QuickSight.UpdateTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a template from an existing Amazon QuickSight analysis or
+-- another template.
+module Amazonka.QuickSight.UpdateTemplate
+  ( -- * Creating a Request
+    UpdateTemplate (..),
+    newUpdateTemplate,
+
+    -- * Request Lenses
+    updateTemplate_definition,
+    updateTemplate_name,
+    updateTemplate_sourceEntity,
+    updateTemplate_versionDescription,
+    updateTemplate_awsAccountId,
+    updateTemplate_templateId,
+
+    -- * Destructuring the Response
+    UpdateTemplateResponse (..),
+    newUpdateTemplateResponse,
+
+    -- * Response Lenses
+    updateTemplateResponse_arn,
+    updateTemplateResponse_creationStatus,
+    updateTemplateResponse_requestId,
+    updateTemplateResponse_templateId,
+    updateTemplateResponse_versionArn,
+    updateTemplateResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateTemplate' smart constructor.
+data UpdateTemplate = UpdateTemplate'
+  { -- | The definition of a template.
+    --
+    -- A definition is the data model of all features in a Dashboard, Template,
+    -- or Analysis.
+    definition :: Prelude.Maybe TemplateVersionDefinition,
+    -- | The name for the template.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The entity that you are using as a source when you update the template.
+    -- In @SourceEntity@, you specify the type of object you\'re using as
+    -- source: @SourceTemplate@ for a template or @SourceAnalysis@ for an
+    -- analysis. Both of these require an Amazon Resource Name (ARN). For
+    -- @SourceTemplate@, specify the ARN of the source template. For
+    -- @SourceAnalysis@, specify the ARN of the source analysis. The
+    -- @SourceTemplate@ ARN can contain any Amazon Web Services account and any
+    -- Amazon QuickSight-supported Amazon Web Services Region;.
+    --
+    -- Use the @DataSetReferences@ entity within @SourceTemplate@ or
+    -- @SourceAnalysis@ to list the replacement datasets for the placeholders
+    -- listed in the original. The schema in each dataset must match its
+    -- placeholder.
+    sourceEntity :: Prelude.Maybe TemplateSourceEntity,
+    -- | A description of the current template version that is being updated.
+    -- Every time you call @UpdateTemplate@, you create a new version of the
+    -- template. Each version of the template maintains a description of the
+    -- version in the @VersionDescription@ field.
+    versionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the template
+    -- that you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'definition', 'updateTemplate_definition' - The definition of a template.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+--
+-- 'name', 'updateTemplate_name' - The name for the template.
+--
+-- 'sourceEntity', 'updateTemplate_sourceEntity' - The entity that you are using as a source when you update the template.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source: @SourceTemplate@ for a template or @SourceAnalysis@ for an
+-- analysis. Both of these require an Amazon Resource Name (ARN). For
+-- @SourceTemplate@, specify the ARN of the source template. For
+-- @SourceAnalysis@, specify the ARN of the source analysis. The
+-- @SourceTemplate@ ARN can contain any Amazon Web Services account and any
+-- Amazon QuickSight-supported Amazon Web Services Region;.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ or
+-- @SourceAnalysis@ to list the replacement datasets for the placeholders
+-- listed in the original. The schema in each dataset must match its
+-- placeholder.
+--
+-- 'versionDescription', 'updateTemplate_versionDescription' - A description of the current template version that is being updated.
+-- Every time you call @UpdateTemplate@, you create a new version of the
+-- template. Each version of the template maintains a description of the
+-- version in the @VersionDescription@ field.
+--
+-- 'awsAccountId', 'updateTemplate_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- that you\'re updating.
+--
+-- 'templateId', 'updateTemplate_templateId' - The ID for the template.
+newUpdateTemplate ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  UpdateTemplate
+newUpdateTemplate pAwsAccountId_ pTemplateId_ =
+  UpdateTemplate'
+    { definition = Prelude.Nothing,
+      name = Prelude.Nothing,
+      sourceEntity = Prelude.Nothing,
+      versionDescription = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      templateId = pTemplateId_
+    }
+
+-- | The definition of a template.
+--
+-- A definition is the data model of all features in a Dashboard, Template,
+-- or Analysis.
+updateTemplate_definition :: Lens.Lens' UpdateTemplate (Prelude.Maybe TemplateVersionDefinition)
+updateTemplate_definition = Lens.lens (\UpdateTemplate' {definition} -> definition) (\s@UpdateTemplate' {} a -> s {definition = a} :: UpdateTemplate)
+
+-- | The name for the template.
+updateTemplate_name :: Lens.Lens' UpdateTemplate (Prelude.Maybe Prelude.Text)
+updateTemplate_name = Lens.lens (\UpdateTemplate' {name} -> name) (\s@UpdateTemplate' {} a -> s {name = a} :: UpdateTemplate)
+
+-- | The entity that you are using as a source when you update the template.
+-- In @SourceEntity@, you specify the type of object you\'re using as
+-- source: @SourceTemplate@ for a template or @SourceAnalysis@ for an
+-- analysis. Both of these require an Amazon Resource Name (ARN). For
+-- @SourceTemplate@, specify the ARN of the source template. For
+-- @SourceAnalysis@, specify the ARN of the source analysis. The
+-- @SourceTemplate@ ARN can contain any Amazon Web Services account and any
+-- Amazon QuickSight-supported Amazon Web Services Region;.
+--
+-- Use the @DataSetReferences@ entity within @SourceTemplate@ or
+-- @SourceAnalysis@ to list the replacement datasets for the placeholders
+-- listed in the original. The schema in each dataset must match its
+-- placeholder.
+updateTemplate_sourceEntity :: Lens.Lens' UpdateTemplate (Prelude.Maybe TemplateSourceEntity)
+updateTemplate_sourceEntity = Lens.lens (\UpdateTemplate' {sourceEntity} -> sourceEntity) (\s@UpdateTemplate' {} a -> s {sourceEntity = a} :: UpdateTemplate)
+
+-- | A description of the current template version that is being updated.
+-- Every time you call @UpdateTemplate@, you create a new version of the
+-- template. Each version of the template maintains a description of the
+-- version in the @VersionDescription@ field.
+updateTemplate_versionDescription :: Lens.Lens' UpdateTemplate (Prelude.Maybe Prelude.Text)
+updateTemplate_versionDescription = Lens.lens (\UpdateTemplate' {versionDescription} -> versionDescription) (\s@UpdateTemplate' {} a -> s {versionDescription = a} :: UpdateTemplate)
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- that you\'re updating.
+updateTemplate_awsAccountId :: Lens.Lens' UpdateTemplate Prelude.Text
+updateTemplate_awsAccountId = Lens.lens (\UpdateTemplate' {awsAccountId} -> awsAccountId) (\s@UpdateTemplate' {} a -> s {awsAccountId = a} :: UpdateTemplate)
+
+-- | The ID for the template.
+updateTemplate_templateId :: Lens.Lens' UpdateTemplate Prelude.Text
+updateTemplate_templateId = Lens.lens (\UpdateTemplate' {templateId} -> templateId) (\s@UpdateTemplate' {} a -> s {templateId = a} :: UpdateTemplate)
+
+instance Core.AWSRequest UpdateTemplate where
+  type
+    AWSResponse UpdateTemplate =
+      UpdateTemplateResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateTemplateResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (x Data..?> "VersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTemplate where
+  hashWithSalt _salt UpdateTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sourceEntity
+      `Prelude.hashWithSalt` versionDescription
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData UpdateTemplate where
+  rnf UpdateTemplate' {..} =
+    Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sourceEntity
+      `Prelude.seq` Prelude.rnf versionDescription
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders UpdateTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTemplate where
+  toJSON UpdateTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Definition" Data..=) Prelude.<$> definition,
+            ("Name" Data..=) Prelude.<$> name,
+            ("SourceEntity" Data..=) Prelude.<$> sourceEntity,
+            ("VersionDescription" Data..=)
+              Prelude.<$> versionDescription
+          ]
+      )
+
+instance Data.ToPath UpdateTemplate where
+  toPath UpdateTemplate' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId
+      ]
+
+instance Data.ToQuery UpdateTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTemplateResponse' smart constructor.
+data UpdateTemplateResponse = UpdateTemplateResponse'
+  { -- | The Amazon Resource Name (ARN) for the template.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The creation status of the template.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN for the template, including the version information of the first
+    -- version.
+    versionArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateTemplateResponse_arn' - The Amazon Resource Name (ARN) for the template.
+--
+-- 'creationStatus', 'updateTemplateResponse_creationStatus' - The creation status of the template.
+--
+-- 'requestId', 'updateTemplateResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateId', 'updateTemplateResponse_templateId' - The ID for the template.
+--
+-- 'versionArn', 'updateTemplateResponse_versionArn' - The ARN for the template, including the version information of the first
+-- version.
+--
+-- 'status', 'updateTemplateResponse_status' - The HTTP status of the request.
+newUpdateTemplateResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateTemplateResponse
+newUpdateTemplateResponse pStatus_ =
+  UpdateTemplateResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      versionArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the template.
+updateTemplateResponse_arn :: Lens.Lens' UpdateTemplateResponse (Prelude.Maybe Prelude.Text)
+updateTemplateResponse_arn = Lens.lens (\UpdateTemplateResponse' {arn} -> arn) (\s@UpdateTemplateResponse' {} a -> s {arn = a} :: UpdateTemplateResponse)
+
+-- | The creation status of the template.
+updateTemplateResponse_creationStatus :: Lens.Lens' UpdateTemplateResponse (Prelude.Maybe ResourceStatus)
+updateTemplateResponse_creationStatus = Lens.lens (\UpdateTemplateResponse' {creationStatus} -> creationStatus) (\s@UpdateTemplateResponse' {} a -> s {creationStatus = a} :: UpdateTemplateResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateTemplateResponse_requestId :: Lens.Lens' UpdateTemplateResponse (Prelude.Maybe Prelude.Text)
+updateTemplateResponse_requestId = Lens.lens (\UpdateTemplateResponse' {requestId} -> requestId) (\s@UpdateTemplateResponse' {} a -> s {requestId = a} :: UpdateTemplateResponse)
+
+-- | The ID for the template.
+updateTemplateResponse_templateId :: Lens.Lens' UpdateTemplateResponse (Prelude.Maybe Prelude.Text)
+updateTemplateResponse_templateId = Lens.lens (\UpdateTemplateResponse' {templateId} -> templateId) (\s@UpdateTemplateResponse' {} a -> s {templateId = a} :: UpdateTemplateResponse)
+
+-- | The ARN for the template, including the version information of the first
+-- version.
+updateTemplateResponse_versionArn :: Lens.Lens' UpdateTemplateResponse (Prelude.Maybe Prelude.Text)
+updateTemplateResponse_versionArn = Lens.lens (\UpdateTemplateResponse' {versionArn} -> versionArn) (\s@UpdateTemplateResponse' {} a -> s {versionArn = a} :: UpdateTemplateResponse)
+
+-- | The HTTP status of the request.
+updateTemplateResponse_status :: Lens.Lens' UpdateTemplateResponse Prelude.Int
+updateTemplateResponse_status = Lens.lens (\UpdateTemplateResponse' {status} -> status) (\s@UpdateTemplateResponse' {} a -> s {status = a} :: UpdateTemplateResponse)
+
+instance Prelude.NFData UpdateTemplateResponse where
+  rnf UpdateTemplateResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf versionArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateTemplateAlias.hs b/gen/Amazonka/QuickSight/UpdateTemplateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateTemplateAlias.hs
@@ -0,0 +1,253 @@
+{-# 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.QuickSight.UpdateTemplateAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the template alias of a template.
+module Amazonka.QuickSight.UpdateTemplateAlias
+  ( -- * Creating a Request
+    UpdateTemplateAlias (..),
+    newUpdateTemplateAlias,
+
+    -- * Request Lenses
+    updateTemplateAlias_awsAccountId,
+    updateTemplateAlias_templateId,
+    updateTemplateAlias_aliasName,
+    updateTemplateAlias_templateVersionNumber,
+
+    -- * Destructuring the Response
+    UpdateTemplateAliasResponse (..),
+    newUpdateTemplateAliasResponse,
+
+    -- * Response Lenses
+    updateTemplateAliasResponse_requestId,
+    updateTemplateAliasResponse_templateAlias,
+    updateTemplateAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateTemplateAlias' smart constructor.
+data UpdateTemplateAlias = UpdateTemplateAlias'
+  { -- | The ID of the Amazon Web Services account that contains the template
+    -- alias that you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text,
+    -- | The alias of the template that you want to update. If you name a
+    -- specific alias, you update the version that the alias points to. You can
+    -- specify the latest version of the template by providing the keyword
+    -- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+    -- doesn\'t apply to templates.
+    aliasName :: Prelude.Text,
+    -- | The version number of the template.
+    templateVersionNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplateAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'updateTemplateAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the template
+-- alias that you\'re updating.
+--
+-- 'templateId', 'updateTemplateAlias_templateId' - The ID for the template.
+--
+-- 'aliasName', 'updateTemplateAlias_aliasName' - The alias of the template that you want to update. If you name a
+-- specific alias, you update the version that the alias points to. You can
+-- specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+--
+-- 'templateVersionNumber', 'updateTemplateAlias_templateVersionNumber' - The version number of the template.
+newUpdateTemplateAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  -- | 'templateVersionNumber'
+  Prelude.Natural ->
+  UpdateTemplateAlias
+newUpdateTemplateAlias
+  pAwsAccountId_
+  pTemplateId_
+  pAliasName_
+  pTemplateVersionNumber_ =
+    UpdateTemplateAlias'
+      { awsAccountId = pAwsAccountId_,
+        templateId = pTemplateId_,
+        aliasName = pAliasName_,
+        templateVersionNumber = pTemplateVersionNumber_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the template
+-- alias that you\'re updating.
+updateTemplateAlias_awsAccountId :: Lens.Lens' UpdateTemplateAlias Prelude.Text
+updateTemplateAlias_awsAccountId = Lens.lens (\UpdateTemplateAlias' {awsAccountId} -> awsAccountId) (\s@UpdateTemplateAlias' {} a -> s {awsAccountId = a} :: UpdateTemplateAlias)
+
+-- | The ID for the template.
+updateTemplateAlias_templateId :: Lens.Lens' UpdateTemplateAlias Prelude.Text
+updateTemplateAlias_templateId = Lens.lens (\UpdateTemplateAlias' {templateId} -> templateId) (\s@UpdateTemplateAlias' {} a -> s {templateId = a} :: UpdateTemplateAlias)
+
+-- | The alias of the template that you want to update. If you name a
+-- specific alias, you update the version that the alias points to. You can
+-- specify the latest version of the template by providing the keyword
+-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
+-- doesn\'t apply to templates.
+updateTemplateAlias_aliasName :: Lens.Lens' UpdateTemplateAlias Prelude.Text
+updateTemplateAlias_aliasName = Lens.lens (\UpdateTemplateAlias' {aliasName} -> aliasName) (\s@UpdateTemplateAlias' {} a -> s {aliasName = a} :: UpdateTemplateAlias)
+
+-- | The version number of the template.
+updateTemplateAlias_templateVersionNumber :: Lens.Lens' UpdateTemplateAlias Prelude.Natural
+updateTemplateAlias_templateVersionNumber = Lens.lens (\UpdateTemplateAlias' {templateVersionNumber} -> templateVersionNumber) (\s@UpdateTemplateAlias' {} a -> s {templateVersionNumber = a} :: UpdateTemplateAlias)
+
+instance Core.AWSRequest UpdateTemplateAlias where
+  type
+    AWSResponse UpdateTemplateAlias =
+      UpdateTemplateAliasResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateTemplateAliasResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateAlias")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTemplateAlias where
+  hashWithSalt _salt UpdateTemplateAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` templateVersionNumber
+
+instance Prelude.NFData UpdateTemplateAlias where
+  rnf UpdateTemplateAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf templateVersionNumber
+
+instance Data.ToHeaders UpdateTemplateAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTemplateAlias where
+  toJSON UpdateTemplateAlias' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "TemplateVersionNumber"
+                  Data..= templateVersionNumber
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateTemplateAlias where
+  toPath UpdateTemplateAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery UpdateTemplateAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTemplateAliasResponse' smart constructor.
+data UpdateTemplateAliasResponse = UpdateTemplateAliasResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The template alias.
+    templateAlias :: Prelude.Maybe TemplateAlias,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplateAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'updateTemplateAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateAlias', 'updateTemplateAliasResponse_templateAlias' - The template alias.
+--
+-- 'status', 'updateTemplateAliasResponse_status' - The HTTP status of the request.
+newUpdateTemplateAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateTemplateAliasResponse
+newUpdateTemplateAliasResponse pStatus_ =
+  UpdateTemplateAliasResponse'
+    { requestId =
+        Prelude.Nothing,
+      templateAlias = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+updateTemplateAliasResponse_requestId :: Lens.Lens' UpdateTemplateAliasResponse (Prelude.Maybe Prelude.Text)
+updateTemplateAliasResponse_requestId = Lens.lens (\UpdateTemplateAliasResponse' {requestId} -> requestId) (\s@UpdateTemplateAliasResponse' {} a -> s {requestId = a} :: UpdateTemplateAliasResponse)
+
+-- | The template alias.
+updateTemplateAliasResponse_templateAlias :: Lens.Lens' UpdateTemplateAliasResponse (Prelude.Maybe TemplateAlias)
+updateTemplateAliasResponse_templateAlias = Lens.lens (\UpdateTemplateAliasResponse' {templateAlias} -> templateAlias) (\s@UpdateTemplateAliasResponse' {} a -> s {templateAlias = a} :: UpdateTemplateAliasResponse)
+
+-- | The HTTP status of the request.
+updateTemplateAliasResponse_status :: Lens.Lens' UpdateTemplateAliasResponse Prelude.Int
+updateTemplateAliasResponse_status = Lens.lens (\UpdateTemplateAliasResponse' {status} -> status) (\s@UpdateTemplateAliasResponse' {} a -> s {status = a} :: UpdateTemplateAliasResponse)
+
+instance Prelude.NFData UpdateTemplateAliasResponse where
+  rnf UpdateTemplateAliasResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateAlias
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateTemplatePermissions.hs b/gen/Amazonka/QuickSight/UpdateTemplatePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateTemplatePermissions.hs
@@ -0,0 +1,259 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.QuickSight.UpdateTemplatePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the resource permissions for a template.
+module Amazonka.QuickSight.UpdateTemplatePermissions
+  ( -- * Creating a Request
+    UpdateTemplatePermissions (..),
+    newUpdateTemplatePermissions,
+
+    -- * Request Lenses
+    updateTemplatePermissions_grantPermissions,
+    updateTemplatePermissions_revokePermissions,
+    updateTemplatePermissions_awsAccountId,
+    updateTemplatePermissions_templateId,
+
+    -- * Destructuring the Response
+    UpdateTemplatePermissionsResponse (..),
+    newUpdateTemplatePermissionsResponse,
+
+    -- * Response Lenses
+    updateTemplatePermissionsResponse_permissions,
+    updateTemplatePermissionsResponse_requestId,
+    updateTemplatePermissionsResponse_templateArn,
+    updateTemplatePermissionsResponse_templateId,
+    updateTemplatePermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateTemplatePermissions' smart constructor.
+data UpdateTemplatePermissions = UpdateTemplatePermissions'
+  { -- | A list of resource permissions to be granted on the template.
+    grantPermissions :: Prelude.Maybe [ResourcePermission],
+    -- | A list of resource permissions to be revoked from the template.
+    revokePermissions :: Prelude.Maybe [ResourcePermission],
+    -- | The ID of the Amazon Web Services account that contains the template.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplatePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantPermissions', 'updateTemplatePermissions_grantPermissions' - A list of resource permissions to be granted on the template.
+--
+-- 'revokePermissions', 'updateTemplatePermissions_revokePermissions' - A list of resource permissions to be revoked from the template.
+--
+-- 'awsAccountId', 'updateTemplatePermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the template.
+--
+-- 'templateId', 'updateTemplatePermissions_templateId' - The ID for the template.
+newUpdateTemplatePermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'templateId'
+  Prelude.Text ->
+  UpdateTemplatePermissions
+newUpdateTemplatePermissions
+  pAwsAccountId_
+  pTemplateId_ =
+    UpdateTemplatePermissions'
+      { grantPermissions =
+          Prelude.Nothing,
+        revokePermissions = Prelude.Nothing,
+        awsAccountId = pAwsAccountId_,
+        templateId = pTemplateId_
+      }
+
+-- | A list of resource permissions to be granted on the template.
+updateTemplatePermissions_grantPermissions :: Lens.Lens' UpdateTemplatePermissions (Prelude.Maybe [ResourcePermission])
+updateTemplatePermissions_grantPermissions = Lens.lens (\UpdateTemplatePermissions' {grantPermissions} -> grantPermissions) (\s@UpdateTemplatePermissions' {} a -> s {grantPermissions = a} :: UpdateTemplatePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of resource permissions to be revoked from the template.
+updateTemplatePermissions_revokePermissions :: Lens.Lens' UpdateTemplatePermissions (Prelude.Maybe [ResourcePermission])
+updateTemplatePermissions_revokePermissions = Lens.lens (\UpdateTemplatePermissions' {revokePermissions} -> revokePermissions) (\s@UpdateTemplatePermissions' {} a -> s {revokePermissions = a} :: UpdateTemplatePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Amazon Web Services account that contains the template.
+updateTemplatePermissions_awsAccountId :: Lens.Lens' UpdateTemplatePermissions Prelude.Text
+updateTemplatePermissions_awsAccountId = Lens.lens (\UpdateTemplatePermissions' {awsAccountId} -> awsAccountId) (\s@UpdateTemplatePermissions' {} a -> s {awsAccountId = a} :: UpdateTemplatePermissions)
+
+-- | The ID for the template.
+updateTemplatePermissions_templateId :: Lens.Lens' UpdateTemplatePermissions Prelude.Text
+updateTemplatePermissions_templateId = Lens.lens (\UpdateTemplatePermissions' {templateId} -> templateId) (\s@UpdateTemplatePermissions' {} a -> s {templateId = a} :: UpdateTemplatePermissions)
+
+instance Core.AWSRequest UpdateTemplatePermissions where
+  type
+    AWSResponse UpdateTemplatePermissions =
+      UpdateTemplatePermissionsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateTemplatePermissionsResponse'
+            Prelude.<$> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "TemplateArn")
+            Prelude.<*> (x Data..?> "TemplateId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTemplatePermissions where
+  hashWithSalt _salt UpdateTemplatePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` templateId
+
+instance Prelude.NFData UpdateTemplatePermissions where
+  rnf UpdateTemplatePermissions' {..} =
+    Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf templateId
+
+instance Data.ToHeaders UpdateTemplatePermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTemplatePermissions where
+  toJSON UpdateTemplatePermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateTemplatePermissions where
+  toPath UpdateTemplatePermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/templates/",
+        Data.toBS templateId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateTemplatePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTemplatePermissionsResponse' smart constructor.
+data UpdateTemplatePermissionsResponse = UpdateTemplatePermissionsResponse'
+  { -- | A list of resource permissions to be set on the template.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the template.
+    templateArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the template.
+    templateId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplatePermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissions', 'updateTemplatePermissionsResponse_permissions' - A list of resource permissions to be set on the template.
+--
+-- 'requestId', 'updateTemplatePermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'templateArn', 'updateTemplatePermissionsResponse_templateArn' - The Amazon Resource Name (ARN) of the template.
+--
+-- 'templateId', 'updateTemplatePermissionsResponse_templateId' - The ID for the template.
+--
+-- 'status', 'updateTemplatePermissionsResponse_status' - The HTTP status of the request.
+newUpdateTemplatePermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateTemplatePermissionsResponse
+newUpdateTemplatePermissionsResponse pStatus_ =
+  UpdateTemplatePermissionsResponse'
+    { permissions =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      templateArn = Prelude.Nothing,
+      templateId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | A list of resource permissions to be set on the template.
+updateTemplatePermissionsResponse_permissions :: Lens.Lens' UpdateTemplatePermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateTemplatePermissionsResponse_permissions = Lens.lens (\UpdateTemplatePermissionsResponse' {permissions} -> permissions) (\s@UpdateTemplatePermissionsResponse' {} a -> s {permissions = a} :: UpdateTemplatePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+updateTemplatePermissionsResponse_requestId :: Lens.Lens' UpdateTemplatePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateTemplatePermissionsResponse_requestId = Lens.lens (\UpdateTemplatePermissionsResponse' {requestId} -> requestId) (\s@UpdateTemplatePermissionsResponse' {} a -> s {requestId = a} :: UpdateTemplatePermissionsResponse)
+
+-- | The Amazon Resource Name (ARN) of the template.
+updateTemplatePermissionsResponse_templateArn :: Lens.Lens' UpdateTemplatePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateTemplatePermissionsResponse_templateArn = Lens.lens (\UpdateTemplatePermissionsResponse' {templateArn} -> templateArn) (\s@UpdateTemplatePermissionsResponse' {} a -> s {templateArn = a} :: UpdateTemplatePermissionsResponse)
+
+-- | The ID for the template.
+updateTemplatePermissionsResponse_templateId :: Lens.Lens' UpdateTemplatePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateTemplatePermissionsResponse_templateId = Lens.lens (\UpdateTemplatePermissionsResponse' {templateId} -> templateId) (\s@UpdateTemplatePermissionsResponse' {} a -> s {templateId = a} :: UpdateTemplatePermissionsResponse)
+
+-- | The HTTP status of the request.
+updateTemplatePermissionsResponse_status :: Lens.Lens' UpdateTemplatePermissionsResponse Prelude.Int
+updateTemplatePermissionsResponse_status = Lens.lens (\UpdateTemplatePermissionsResponse' {status} -> status) (\s@UpdateTemplatePermissionsResponse' {} a -> s {status = a} :: UpdateTemplatePermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateTemplatePermissionsResponse
+  where
+  rnf UpdateTemplatePermissionsResponse' {..} =
+    Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf templateArn
+      `Prelude.seq` Prelude.rnf templateId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateTheme.hs b/gen/Amazonka/QuickSight/UpdateTheme.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateTheme.hs
@@ -0,0 +1,306 @@
+{-# 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.QuickSight.UpdateTheme
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a theme.
+module Amazonka.QuickSight.UpdateTheme
+  ( -- * Creating a Request
+    UpdateTheme (..),
+    newUpdateTheme,
+
+    -- * Request Lenses
+    updateTheme_configuration,
+    updateTheme_name,
+    updateTheme_versionDescription,
+    updateTheme_awsAccountId,
+    updateTheme_themeId,
+    updateTheme_baseThemeId,
+
+    -- * Destructuring the Response
+    UpdateThemeResponse (..),
+    newUpdateThemeResponse,
+
+    -- * Response Lenses
+    updateThemeResponse_arn,
+    updateThemeResponse_creationStatus,
+    updateThemeResponse_requestId,
+    updateThemeResponse_themeId,
+    updateThemeResponse_versionArn,
+    updateThemeResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateTheme' smart constructor.
+data UpdateTheme = UpdateTheme'
+  { -- | The theme configuration, which contains the theme display properties.
+    configuration :: Prelude.Maybe ThemeConfiguration,
+    -- | The name for the theme.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | A description of the theme version that you\'re updating Every time that
+    -- you call @UpdateTheme@, you create a new version of the theme. Each
+    -- version of the theme maintains a description of the version in
+    -- @VersionDescription@.
+    versionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Web Services account that contains the theme that
+    -- you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text,
+    -- | The theme ID, defined by Amazon QuickSight, that a custom theme inherits
+    -- from. All themes initially inherit from a default Amazon QuickSight
+    -- theme.
+    baseThemeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTheme' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configuration', 'updateTheme_configuration' - The theme configuration, which contains the theme display properties.
+--
+-- 'name', 'updateTheme_name' - The name for the theme.
+--
+-- 'versionDescription', 'updateTheme_versionDescription' - A description of the theme version that you\'re updating Every time that
+-- you call @UpdateTheme@, you create a new version of the theme. Each
+-- version of the theme maintains a description of the version in
+-- @VersionDescription@.
+--
+-- 'awsAccountId', 'updateTheme_awsAccountId' - The ID of the Amazon Web Services account that contains the theme that
+-- you\'re updating.
+--
+-- 'themeId', 'updateTheme_themeId' - The ID for the theme.
+--
+-- 'baseThemeId', 'updateTheme_baseThemeId' - The theme ID, defined by Amazon QuickSight, that a custom theme inherits
+-- from. All themes initially inherit from a default Amazon QuickSight
+-- theme.
+newUpdateTheme ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  -- | 'baseThemeId'
+  Prelude.Text ->
+  UpdateTheme
+newUpdateTheme pAwsAccountId_ pThemeId_ pBaseThemeId_ =
+  UpdateTheme'
+    { configuration = Prelude.Nothing,
+      name = Prelude.Nothing,
+      versionDescription = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      themeId = pThemeId_,
+      baseThemeId = pBaseThemeId_
+    }
+
+-- | The theme configuration, which contains the theme display properties.
+updateTheme_configuration :: Lens.Lens' UpdateTheme (Prelude.Maybe ThemeConfiguration)
+updateTheme_configuration = Lens.lens (\UpdateTheme' {configuration} -> configuration) (\s@UpdateTheme' {} a -> s {configuration = a} :: UpdateTheme)
+
+-- | The name for the theme.
+updateTheme_name :: Lens.Lens' UpdateTheme (Prelude.Maybe Prelude.Text)
+updateTheme_name = Lens.lens (\UpdateTheme' {name} -> name) (\s@UpdateTheme' {} a -> s {name = a} :: UpdateTheme)
+
+-- | A description of the theme version that you\'re updating Every time that
+-- you call @UpdateTheme@, you create a new version of the theme. Each
+-- version of the theme maintains a description of the version in
+-- @VersionDescription@.
+updateTheme_versionDescription :: Lens.Lens' UpdateTheme (Prelude.Maybe Prelude.Text)
+updateTheme_versionDescription = Lens.lens (\UpdateTheme' {versionDescription} -> versionDescription) (\s@UpdateTheme' {} a -> s {versionDescription = a} :: UpdateTheme)
+
+-- | The ID of the Amazon Web Services account that contains the theme that
+-- you\'re updating.
+updateTheme_awsAccountId :: Lens.Lens' UpdateTheme Prelude.Text
+updateTheme_awsAccountId = Lens.lens (\UpdateTheme' {awsAccountId} -> awsAccountId) (\s@UpdateTheme' {} a -> s {awsAccountId = a} :: UpdateTheme)
+
+-- | The ID for the theme.
+updateTheme_themeId :: Lens.Lens' UpdateTheme Prelude.Text
+updateTheme_themeId = Lens.lens (\UpdateTheme' {themeId} -> themeId) (\s@UpdateTheme' {} a -> s {themeId = a} :: UpdateTheme)
+
+-- | The theme ID, defined by Amazon QuickSight, that a custom theme inherits
+-- from. All themes initially inherit from a default Amazon QuickSight
+-- theme.
+updateTheme_baseThemeId :: Lens.Lens' UpdateTheme Prelude.Text
+updateTheme_baseThemeId = Lens.lens (\UpdateTheme' {baseThemeId} -> baseThemeId) (\s@UpdateTheme' {} a -> s {baseThemeId = a} :: UpdateTheme)
+
+instance Core.AWSRequest UpdateTheme where
+  type AWSResponse UpdateTheme = UpdateThemeResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateThemeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationStatus")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeId")
+            Prelude.<*> (x Data..?> "VersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTheme where
+  hashWithSalt _salt UpdateTheme' {..} =
+    _salt
+      `Prelude.hashWithSalt` configuration
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` versionDescription
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` baseThemeId
+
+instance Prelude.NFData UpdateTheme where
+  rnf UpdateTheme' {..} =
+    Prelude.rnf configuration
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf versionDescription
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf baseThemeId
+
+instance Data.ToHeaders UpdateTheme where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTheme where
+  toJSON UpdateTheme' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Configuration" Data..=) Prelude.<$> configuration,
+            ("Name" Data..=) Prelude.<$> name,
+            ("VersionDescription" Data..=)
+              Prelude.<$> versionDescription,
+            Prelude.Just ("BaseThemeId" Data..= baseThemeId)
+          ]
+      )
+
+instance Data.ToPath UpdateTheme where
+  toPath UpdateTheme' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId
+      ]
+
+instance Data.ToQuery UpdateTheme where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateThemeResponse' smart constructor.
+data UpdateThemeResponse = UpdateThemeResponse'
+  { -- | The Amazon Resource Name (ARN) for the theme.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The creation status of the theme.
+    creationStatus :: Prelude.Maybe ResourceStatus,
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the new version of the theme.
+    versionArn :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateThemeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateThemeResponse_arn' - The Amazon Resource Name (ARN) for the theme.
+--
+-- 'creationStatus', 'updateThemeResponse_creationStatus' - The creation status of the theme.
+--
+-- 'requestId', 'updateThemeResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeId', 'updateThemeResponse_themeId' - The ID for the theme.
+--
+-- 'versionArn', 'updateThemeResponse_versionArn' - The Amazon Resource Name (ARN) for the new version of the theme.
+--
+-- 'status', 'updateThemeResponse_status' - The HTTP status of the request.
+newUpdateThemeResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateThemeResponse
+newUpdateThemeResponse pStatus_ =
+  UpdateThemeResponse'
+    { arn = Prelude.Nothing,
+      creationStatus = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      versionArn = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the theme.
+updateThemeResponse_arn :: Lens.Lens' UpdateThemeResponse (Prelude.Maybe Prelude.Text)
+updateThemeResponse_arn = Lens.lens (\UpdateThemeResponse' {arn} -> arn) (\s@UpdateThemeResponse' {} a -> s {arn = a} :: UpdateThemeResponse)
+
+-- | The creation status of the theme.
+updateThemeResponse_creationStatus :: Lens.Lens' UpdateThemeResponse (Prelude.Maybe ResourceStatus)
+updateThemeResponse_creationStatus = Lens.lens (\UpdateThemeResponse' {creationStatus} -> creationStatus) (\s@UpdateThemeResponse' {} a -> s {creationStatus = a} :: UpdateThemeResponse)
+
+-- | The Amazon Web Services request ID for this operation.
+updateThemeResponse_requestId :: Lens.Lens' UpdateThemeResponse (Prelude.Maybe Prelude.Text)
+updateThemeResponse_requestId = Lens.lens (\UpdateThemeResponse' {requestId} -> requestId) (\s@UpdateThemeResponse' {} a -> s {requestId = a} :: UpdateThemeResponse)
+
+-- | The ID for the theme.
+updateThemeResponse_themeId :: Lens.Lens' UpdateThemeResponse (Prelude.Maybe Prelude.Text)
+updateThemeResponse_themeId = Lens.lens (\UpdateThemeResponse' {themeId} -> themeId) (\s@UpdateThemeResponse' {} a -> s {themeId = a} :: UpdateThemeResponse)
+
+-- | The Amazon Resource Name (ARN) for the new version of the theme.
+updateThemeResponse_versionArn :: Lens.Lens' UpdateThemeResponse (Prelude.Maybe Prelude.Text)
+updateThemeResponse_versionArn = Lens.lens (\UpdateThemeResponse' {versionArn} -> versionArn) (\s@UpdateThemeResponse' {} a -> s {versionArn = a} :: UpdateThemeResponse)
+
+-- | The HTTP status of the request.
+updateThemeResponse_status :: Lens.Lens' UpdateThemeResponse Prelude.Int
+updateThemeResponse_status = Lens.lens (\UpdateThemeResponse' {status} -> status) (\s@UpdateThemeResponse' {} a -> s {status = a} :: UpdateThemeResponse)
+
+instance Prelude.NFData UpdateThemeResponse where
+  rnf UpdateThemeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationStatus
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf versionArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateThemeAlias.hs b/gen/Amazonka/QuickSight/UpdateThemeAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateThemeAlias.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.QuickSight.UpdateThemeAlias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an alias of a theme.
+module Amazonka.QuickSight.UpdateThemeAlias
+  ( -- * Creating a Request
+    UpdateThemeAlias (..),
+    newUpdateThemeAlias,
+
+    -- * Request Lenses
+    updateThemeAlias_awsAccountId,
+    updateThemeAlias_themeId,
+    updateThemeAlias_aliasName,
+    updateThemeAlias_themeVersionNumber,
+
+    -- * Destructuring the Response
+    UpdateThemeAliasResponse (..),
+    newUpdateThemeAliasResponse,
+
+    -- * Response Lenses
+    updateThemeAliasResponse_requestId,
+    updateThemeAliasResponse_themeAlias,
+    updateThemeAliasResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateThemeAlias' smart constructor.
+data UpdateThemeAlias = UpdateThemeAlias'
+  { -- | The ID of the Amazon Web Services account that contains the theme alias
+    -- that you\'re updating.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text,
+    -- | The name of the theme alias that you want to update.
+    aliasName :: Prelude.Text,
+    -- | The version number of the theme that the alias should reference.
+    themeVersionNumber :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateThemeAlias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'updateThemeAlias_awsAccountId' - The ID of the Amazon Web Services account that contains the theme alias
+-- that you\'re updating.
+--
+-- 'themeId', 'updateThemeAlias_themeId' - The ID for the theme.
+--
+-- 'aliasName', 'updateThemeAlias_aliasName' - The name of the theme alias that you want to update.
+--
+-- 'themeVersionNumber', 'updateThemeAlias_themeVersionNumber' - The version number of the theme that the alias should reference.
+newUpdateThemeAlias ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  -- | 'aliasName'
+  Prelude.Text ->
+  -- | 'themeVersionNumber'
+  Prelude.Natural ->
+  UpdateThemeAlias
+newUpdateThemeAlias
+  pAwsAccountId_
+  pThemeId_
+  pAliasName_
+  pThemeVersionNumber_ =
+    UpdateThemeAlias'
+      { awsAccountId = pAwsAccountId_,
+        themeId = pThemeId_,
+        aliasName = pAliasName_,
+        themeVersionNumber = pThemeVersionNumber_
+      }
+
+-- | The ID of the Amazon Web Services account that contains the theme alias
+-- that you\'re updating.
+updateThemeAlias_awsAccountId :: Lens.Lens' UpdateThemeAlias Prelude.Text
+updateThemeAlias_awsAccountId = Lens.lens (\UpdateThemeAlias' {awsAccountId} -> awsAccountId) (\s@UpdateThemeAlias' {} a -> s {awsAccountId = a} :: UpdateThemeAlias)
+
+-- | The ID for the theme.
+updateThemeAlias_themeId :: Lens.Lens' UpdateThemeAlias Prelude.Text
+updateThemeAlias_themeId = Lens.lens (\UpdateThemeAlias' {themeId} -> themeId) (\s@UpdateThemeAlias' {} a -> s {themeId = a} :: UpdateThemeAlias)
+
+-- | The name of the theme alias that you want to update.
+updateThemeAlias_aliasName :: Lens.Lens' UpdateThemeAlias Prelude.Text
+updateThemeAlias_aliasName = Lens.lens (\UpdateThemeAlias' {aliasName} -> aliasName) (\s@UpdateThemeAlias' {} a -> s {aliasName = a} :: UpdateThemeAlias)
+
+-- | The version number of the theme that the alias should reference.
+updateThemeAlias_themeVersionNumber :: Lens.Lens' UpdateThemeAlias Prelude.Natural
+updateThemeAlias_themeVersionNumber = Lens.lens (\UpdateThemeAlias' {themeVersionNumber} -> themeVersionNumber) (\s@UpdateThemeAlias' {} a -> s {themeVersionNumber = a} :: UpdateThemeAlias)
+
+instance Core.AWSRequest UpdateThemeAlias where
+  type
+    AWSResponse UpdateThemeAlias =
+      UpdateThemeAliasResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateThemeAliasResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeAlias")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateThemeAlias where
+  hashWithSalt _salt UpdateThemeAlias' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+      `Prelude.hashWithSalt` aliasName
+      `Prelude.hashWithSalt` themeVersionNumber
+
+instance Prelude.NFData UpdateThemeAlias where
+  rnf UpdateThemeAlias' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf aliasName
+      `Prelude.seq` Prelude.rnf themeVersionNumber
+
+instance Data.ToHeaders UpdateThemeAlias where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateThemeAlias where
+  toJSON UpdateThemeAlias' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ThemeVersionNumber" Data..= themeVersionNumber)
+          ]
+      )
+
+instance Data.ToPath UpdateThemeAlias where
+  toPath UpdateThemeAlias' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/aliases/",
+        Data.toBS aliasName
+      ]
+
+instance Data.ToQuery UpdateThemeAlias where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateThemeAliasResponse' smart constructor.
+data UpdateThemeAliasResponse = UpdateThemeAliasResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the theme alias.
+    themeAlias :: Prelude.Maybe ThemeAlias,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateThemeAliasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'updateThemeAliasResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeAlias', 'updateThemeAliasResponse_themeAlias' - Information about the theme alias.
+--
+-- 'status', 'updateThemeAliasResponse_status' - The HTTP status of the request.
+newUpdateThemeAliasResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateThemeAliasResponse
+newUpdateThemeAliasResponse pStatus_ =
+  UpdateThemeAliasResponse'
+    { requestId =
+        Prelude.Nothing,
+      themeAlias = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+updateThemeAliasResponse_requestId :: Lens.Lens' UpdateThemeAliasResponse (Prelude.Maybe Prelude.Text)
+updateThemeAliasResponse_requestId = Lens.lens (\UpdateThemeAliasResponse' {requestId} -> requestId) (\s@UpdateThemeAliasResponse' {} a -> s {requestId = a} :: UpdateThemeAliasResponse)
+
+-- | Information about the theme alias.
+updateThemeAliasResponse_themeAlias :: Lens.Lens' UpdateThemeAliasResponse (Prelude.Maybe ThemeAlias)
+updateThemeAliasResponse_themeAlias = Lens.lens (\UpdateThemeAliasResponse' {themeAlias} -> themeAlias) (\s@UpdateThemeAliasResponse' {} a -> s {themeAlias = a} :: UpdateThemeAliasResponse)
+
+-- | The HTTP status of the request.
+updateThemeAliasResponse_status :: Lens.Lens' UpdateThemeAliasResponse Prelude.Int
+updateThemeAliasResponse_status = Lens.lens (\UpdateThemeAliasResponse' {status} -> status) (\s@UpdateThemeAliasResponse' {} a -> s {status = a} :: UpdateThemeAliasResponse)
+
+instance Prelude.NFData UpdateThemeAliasResponse where
+  rnf UpdateThemeAliasResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeAlias
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateThemePermissions.hs b/gen/Amazonka/QuickSight/UpdateThemePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateThemePermissions.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.QuickSight.UpdateThemePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the resource permissions for a theme. Permissions apply to the
+-- action to grant or revoke permissions on, for example
+-- @\"quicksight:DescribeTheme\"@.
+--
+-- Theme permissions apply in groupings. Valid groupings include the
+-- following for the three levels of permissions, which are user, owner, or
+-- no permissions:
+--
+-- -   User
+--
+--     -   @\"quicksight:DescribeTheme\"@
+--
+--     -   @\"quicksight:DescribeThemeAlias\"@
+--
+--     -   @\"quicksight:ListThemeAliases\"@
+--
+--     -   @\"quicksight:ListThemeVersions\"@
+--
+-- -   Owner
+--
+--     -   @\"quicksight:DescribeTheme\"@
+--
+--     -   @\"quicksight:DescribeThemeAlias\"@
+--
+--     -   @\"quicksight:ListThemeAliases\"@
+--
+--     -   @\"quicksight:ListThemeVersions\"@
+--
+--     -   @\"quicksight:DeleteTheme\"@
+--
+--     -   @\"quicksight:UpdateTheme\"@
+--
+--     -   @\"quicksight:CreateThemeAlias\"@
+--
+--     -   @\"quicksight:DeleteThemeAlias\"@
+--
+--     -   @\"quicksight:UpdateThemeAlias\"@
+--
+--     -   @\"quicksight:UpdateThemePermissions\"@
+--
+--     -   @\"quicksight:DescribeThemePermissions\"@
+--
+-- -   To specify no permissions, omit the permissions list.
+module Amazonka.QuickSight.UpdateThemePermissions
+  ( -- * Creating a Request
+    UpdateThemePermissions (..),
+    newUpdateThemePermissions,
+
+    -- * Request Lenses
+    updateThemePermissions_grantPermissions,
+    updateThemePermissions_revokePermissions,
+    updateThemePermissions_awsAccountId,
+    updateThemePermissions_themeId,
+
+    -- * Destructuring the Response
+    UpdateThemePermissionsResponse (..),
+    newUpdateThemePermissionsResponse,
+
+    -- * Response Lenses
+    updateThemePermissionsResponse_permissions,
+    updateThemePermissionsResponse_requestId,
+    updateThemePermissionsResponse_themeArn,
+    updateThemePermissionsResponse_themeId,
+    updateThemePermissionsResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateThemePermissions' smart constructor.
+data UpdateThemePermissions = UpdateThemePermissions'
+  { -- | A list of resource permissions to be granted for the theme.
+    grantPermissions :: Prelude.Maybe [ResourcePermission],
+    -- | A list of resource permissions to be revoked from the theme.
+    revokePermissions :: Prelude.Maybe [ResourcePermission],
+    -- | The ID of the Amazon Web Services account that contains the theme.
+    awsAccountId :: Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateThemePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'grantPermissions', 'updateThemePermissions_grantPermissions' - A list of resource permissions to be granted for the theme.
+--
+-- 'revokePermissions', 'updateThemePermissions_revokePermissions' - A list of resource permissions to be revoked from the theme.
+--
+-- 'awsAccountId', 'updateThemePermissions_awsAccountId' - The ID of the Amazon Web Services account that contains the theme.
+--
+-- 'themeId', 'updateThemePermissions_themeId' - The ID for the theme.
+newUpdateThemePermissions ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'themeId'
+  Prelude.Text ->
+  UpdateThemePermissions
+newUpdateThemePermissions pAwsAccountId_ pThemeId_ =
+  UpdateThemePermissions'
+    { grantPermissions =
+        Prelude.Nothing,
+      revokePermissions = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      themeId = pThemeId_
+    }
+
+-- | A list of resource permissions to be granted for the theme.
+updateThemePermissions_grantPermissions :: Lens.Lens' UpdateThemePermissions (Prelude.Maybe [ResourcePermission])
+updateThemePermissions_grantPermissions = Lens.lens (\UpdateThemePermissions' {grantPermissions} -> grantPermissions) (\s@UpdateThemePermissions' {} a -> s {grantPermissions = a} :: UpdateThemePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of resource permissions to be revoked from the theme.
+updateThemePermissions_revokePermissions :: Lens.Lens' UpdateThemePermissions (Prelude.Maybe [ResourcePermission])
+updateThemePermissions_revokePermissions = Lens.lens (\UpdateThemePermissions' {revokePermissions} -> revokePermissions) (\s@UpdateThemePermissions' {} a -> s {revokePermissions = a} :: UpdateThemePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Amazon Web Services account that contains the theme.
+updateThemePermissions_awsAccountId :: Lens.Lens' UpdateThemePermissions Prelude.Text
+updateThemePermissions_awsAccountId = Lens.lens (\UpdateThemePermissions' {awsAccountId} -> awsAccountId) (\s@UpdateThemePermissions' {} a -> s {awsAccountId = a} :: UpdateThemePermissions)
+
+-- | The ID for the theme.
+updateThemePermissions_themeId :: Lens.Lens' UpdateThemePermissions Prelude.Text
+updateThemePermissions_themeId = Lens.lens (\UpdateThemePermissions' {themeId} -> themeId) (\s@UpdateThemePermissions' {} a -> s {themeId = a} :: UpdateThemePermissions)
+
+instance Core.AWSRequest UpdateThemePermissions where
+  type
+    AWSResponse UpdateThemePermissions =
+      UpdateThemePermissionsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateThemePermissionsResponse'
+            Prelude.<$> (x Data..?> "Permissions")
+            Prelude.<*> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "ThemeArn")
+            Prelude.<*> (x Data..?> "ThemeId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateThemePermissions where
+  hashWithSalt _salt UpdateThemePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` grantPermissions
+      `Prelude.hashWithSalt` revokePermissions
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` themeId
+
+instance Prelude.NFData UpdateThemePermissions where
+  rnf UpdateThemePermissions' {..} =
+    Prelude.rnf grantPermissions
+      `Prelude.seq` Prelude.rnf revokePermissions
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf themeId
+
+instance Data.ToHeaders UpdateThemePermissions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateThemePermissions where
+  toJSON UpdateThemePermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GrantPermissions" Data..=)
+              Prelude.<$> grantPermissions,
+            ("RevokePermissions" Data..=)
+              Prelude.<$> revokePermissions
+          ]
+      )
+
+instance Data.ToPath UpdateThemePermissions where
+  toPath UpdateThemePermissions' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/themes/",
+        Data.toBS themeId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery UpdateThemePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateThemePermissionsResponse' smart constructor.
+data UpdateThemePermissionsResponse = UpdateThemePermissionsResponse'
+  { -- | The resulting list of resource permissions for the theme.
+    permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
+    -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the theme.
+    themeArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the theme.
+    themeId :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateThemePermissionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'permissions', 'updateThemePermissionsResponse_permissions' - The resulting list of resource permissions for the theme.
+--
+-- 'requestId', 'updateThemePermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'themeArn', 'updateThemePermissionsResponse_themeArn' - The Amazon Resource Name (ARN) of the theme.
+--
+-- 'themeId', 'updateThemePermissionsResponse_themeId' - The ID for the theme.
+--
+-- 'status', 'updateThemePermissionsResponse_status' - The HTTP status of the request.
+newUpdateThemePermissionsResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateThemePermissionsResponse
+newUpdateThemePermissionsResponse pStatus_ =
+  UpdateThemePermissionsResponse'
+    { permissions =
+        Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      themeArn = Prelude.Nothing,
+      themeId = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The resulting list of resource permissions for the theme.
+updateThemePermissionsResponse_permissions :: Lens.Lens' UpdateThemePermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
+updateThemePermissionsResponse_permissions = Lens.lens (\UpdateThemePermissionsResponse' {permissions} -> permissions) (\s@UpdateThemePermissionsResponse' {} a -> s {permissions = a} :: UpdateThemePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services request ID for this operation.
+updateThemePermissionsResponse_requestId :: Lens.Lens' UpdateThemePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateThemePermissionsResponse_requestId = Lens.lens (\UpdateThemePermissionsResponse' {requestId} -> requestId) (\s@UpdateThemePermissionsResponse' {} a -> s {requestId = a} :: UpdateThemePermissionsResponse)
+
+-- | The Amazon Resource Name (ARN) of the theme.
+updateThemePermissionsResponse_themeArn :: Lens.Lens' UpdateThemePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateThemePermissionsResponse_themeArn = Lens.lens (\UpdateThemePermissionsResponse' {themeArn} -> themeArn) (\s@UpdateThemePermissionsResponse' {} a -> s {themeArn = a} :: UpdateThemePermissionsResponse)
+
+-- | The ID for the theme.
+updateThemePermissionsResponse_themeId :: Lens.Lens' UpdateThemePermissionsResponse (Prelude.Maybe Prelude.Text)
+updateThemePermissionsResponse_themeId = Lens.lens (\UpdateThemePermissionsResponse' {themeId} -> themeId) (\s@UpdateThemePermissionsResponse' {} a -> s {themeId = a} :: UpdateThemePermissionsResponse)
+
+-- | The HTTP status of the request.
+updateThemePermissionsResponse_status :: Lens.Lens' UpdateThemePermissionsResponse Prelude.Int
+updateThemePermissionsResponse_status = Lens.lens (\UpdateThemePermissionsResponse' {status} -> status) (\s@UpdateThemePermissionsResponse' {} a -> s {status = a} :: UpdateThemePermissionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateThemePermissionsResponse
+  where
+  rnf UpdateThemePermissionsResponse' {..} =
+    Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf themeArn
+      `Prelude.seq` Prelude.rnf themeId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/UpdateUser.hs b/gen/Amazonka/QuickSight/UpdateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/UpdateUser.hs
@@ -0,0 +1,509 @@
+{-# 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.QuickSight.UpdateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an Amazon QuickSight user.
+module Amazonka.QuickSight.UpdateUser
+  ( -- * Creating a Request
+    UpdateUser (..),
+    newUpdateUser,
+
+    -- * Request Lenses
+    updateUser_customFederationProviderUrl,
+    updateUser_customPermissionsName,
+    updateUser_externalLoginFederationProviderType,
+    updateUser_externalLoginId,
+    updateUser_unapplyCustomPermissions,
+    updateUser_userName,
+    updateUser_awsAccountId,
+    updateUser_namespace,
+    updateUser_email,
+    updateUser_role,
+
+    -- * Destructuring the Response
+    UpdateUserResponse (..),
+    newUpdateUserResponse,
+
+    -- * Response Lenses
+    updateUserResponse_requestId,
+    updateUserResponse_user,
+    updateUserResponse_status,
+  )
+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.QuickSight.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateUser' smart constructor.
+data UpdateUser = UpdateUser'
+  { -- | The URL of the custom OpenID Connect (OIDC) provider that provides
+    -- identity to let a user federate into Amazon QuickSight with an
+    -- associated Identity and Access Management(IAM) role. This parameter
+    -- should only be used when @ExternalLoginFederationProviderType@ parameter
+    -- is set to @CUSTOM_OIDC@.
+    customFederationProviderUrl :: Prelude.Maybe Prelude.Text,
+    -- | (Enterprise edition only) The name of the custom permissions profile
+    -- that you want to assign to this user. Customized permissions allows you
+    -- to control a user\'s access by restricting access the following
+    -- operations:
+    --
+    -- -   Create and update data sources
+    --
+    -- -   Create and update datasets
+    --
+    -- -   Create and update email reports
+    --
+    -- -   Subscribe to email reports
+    --
+    -- A set of custom permissions includes any combination of these
+    -- restrictions. Currently, you need to create the profile names for custom
+    -- permission sets by using the Amazon QuickSight console. Then, you use
+    -- the @RegisterUser@ API operation to assign the named set of permissions
+    -- to a Amazon QuickSight user.
+    --
+    -- Amazon QuickSight custom permissions are applied through IAM policies.
+    -- Therefore, they override the permissions typically granted by assigning
+    -- Amazon QuickSight users to one of the default security cohorts in Amazon
+    -- QuickSight (admin, author, reader).
+    --
+    -- This feature is available only to Amazon QuickSight Enterprise edition
+    -- subscriptions.
+    customPermissionsName :: Prelude.Maybe Prelude.Text,
+    -- | The type of supported external login provider that provides identity to
+    -- let a user federate into Amazon QuickSight with an associated Identity
+    -- and Access Management(IAM) role. The type of supported external login
+    -- provider can be one of the following.
+    --
+    -- -   @COGNITO@: Amazon Cognito. The provider URL is
+    --     cognito-identity.amazonaws.com. When choosing the @COGNITO@ provider
+    --     type, don’t use the \"CustomFederationProviderUrl\" parameter which
+    --     is only needed when the external provider is custom.
+    --
+    -- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider. When choosing
+    --     @CUSTOM_OIDC@ type, use the @CustomFederationProviderUrl@ parameter
+    --     to provide the custom OIDC provider URL.
+    --
+    -- -   @NONE@: This clears all the previously saved external login
+    --     information for a user. Use the
+    --     @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html DescribeUser>@ @
+    --     API operation to check the external login information.
+    externalLoginFederationProviderType :: Prelude.Maybe Prelude.Text,
+    -- | The identity ID for a user in the external login provider.
+    externalLoginId :: Prelude.Maybe Prelude.Text,
+    -- | A flag that you use to indicate that you want to remove all custom
+    -- permissions from this user. Using this parameter resets the user to the
+    -- state it was in before a custom permissions profile was applied. This
+    -- parameter defaults to NULL and it doesn\'t accept any other value.
+    unapplyCustomPermissions :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon QuickSight user name that you want to update.
+    userName :: Prelude.Text,
+    -- | The ID for the Amazon Web Services account that the user is in.
+    -- Currently, you use the ID for the Amazon Web Services account that
+    -- contains your Amazon QuickSight account.
+    awsAccountId :: Prelude.Text,
+    -- | The namespace. Currently, you should set this to @default@.
+    namespace :: Prelude.Text,
+    -- | The email address of the user that you want to update.
+    email :: Prelude.Text,
+    -- | The Amazon QuickSight role of the user. The role can be one of the
+    -- following default security cohorts:
+    --
+    -- -   @READER@: A user who has read-only access to dashboards.
+    --
+    -- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+    --     and dashboards.
+    --
+    -- -   @ADMIN@: A user who is an author, who can also manage Amazon
+    --     QuickSight settings.
+    --
+    -- The name of the Amazon QuickSight role is invisible to the user except
+    -- for the console screens dealing with permissions.
+    role' :: UserRole
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customFederationProviderUrl', 'updateUser_customFederationProviderUrl' - The URL of the custom OpenID Connect (OIDC) provider that provides
+-- identity to let a user federate into Amazon QuickSight with an
+-- associated Identity and Access Management(IAM) role. This parameter
+-- should only be used when @ExternalLoginFederationProviderType@ parameter
+-- is set to @CUSTOM_OIDC@.
+--
+-- 'customPermissionsName', 'updateUser_customPermissionsName' - (Enterprise edition only) The name of the custom permissions profile
+-- that you want to assign to this user. Customized permissions allows you
+-- to control a user\'s access by restricting access the following
+-- operations:
+--
+-- -   Create and update data sources
+--
+-- -   Create and update datasets
+--
+-- -   Create and update email reports
+--
+-- -   Subscribe to email reports
+--
+-- A set of custom permissions includes any combination of these
+-- restrictions. Currently, you need to create the profile names for custom
+-- permission sets by using the Amazon QuickSight console. Then, you use
+-- the @RegisterUser@ API operation to assign the named set of permissions
+-- to a Amazon QuickSight user.
+--
+-- Amazon QuickSight custom permissions are applied through IAM policies.
+-- Therefore, they override the permissions typically granted by assigning
+-- Amazon QuickSight users to one of the default security cohorts in Amazon
+-- QuickSight (admin, author, reader).
+--
+-- This feature is available only to Amazon QuickSight Enterprise edition
+-- subscriptions.
+--
+-- 'externalLoginFederationProviderType', 'updateUser_externalLoginFederationProviderType' - The type of supported external login provider that provides identity to
+-- let a user federate into Amazon QuickSight with an associated Identity
+-- and Access Management(IAM) role. The type of supported external login
+-- provider can be one of the following.
+--
+-- -   @COGNITO@: Amazon Cognito. The provider URL is
+--     cognito-identity.amazonaws.com. When choosing the @COGNITO@ provider
+--     type, don’t use the \"CustomFederationProviderUrl\" parameter which
+--     is only needed when the external provider is custom.
+--
+-- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider. When choosing
+--     @CUSTOM_OIDC@ type, use the @CustomFederationProviderUrl@ parameter
+--     to provide the custom OIDC provider URL.
+--
+-- -   @NONE@: This clears all the previously saved external login
+--     information for a user. Use the
+--     @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html DescribeUser>@ @
+--     API operation to check the external login information.
+--
+-- 'externalLoginId', 'updateUser_externalLoginId' - The identity ID for a user in the external login provider.
+--
+-- 'unapplyCustomPermissions', 'updateUser_unapplyCustomPermissions' - A flag that you use to indicate that you want to remove all custom
+-- permissions from this user. Using this parameter resets the user to the
+-- state it was in before a custom permissions profile was applied. This
+-- parameter defaults to NULL and it doesn\'t accept any other value.
+--
+-- 'userName', 'updateUser_userName' - The Amazon QuickSight user name that you want to update.
+--
+-- 'awsAccountId', 'updateUser_awsAccountId' - The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+--
+-- 'namespace', 'updateUser_namespace' - The namespace. Currently, you should set this to @default@.
+--
+-- 'email', 'updateUser_email' - The email address of the user that you want to update.
+--
+-- 'role'', 'updateUser_role' - The Amazon QuickSight role of the user. The role can be one of the
+-- following default security cohorts:
+--
+-- -   @READER@: A user who has read-only access to dashboards.
+--
+-- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+--     and dashboards.
+--
+-- -   @ADMIN@: A user who is an author, who can also manage Amazon
+--     QuickSight settings.
+--
+-- The name of the Amazon QuickSight role is invisible to the user except
+-- for the console screens dealing with permissions.
+newUpdateUser ::
+  -- | 'userName'
+  Prelude.Text ->
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'namespace'
+  Prelude.Text ->
+  -- | 'email'
+  Prelude.Text ->
+  -- | 'role''
+  UserRole ->
+  UpdateUser
+newUpdateUser
+  pUserName_
+  pAwsAccountId_
+  pNamespace_
+  pEmail_
+  pRole_ =
+    UpdateUser'
+      { customFederationProviderUrl =
+          Prelude.Nothing,
+        customPermissionsName = Prelude.Nothing,
+        externalLoginFederationProviderType =
+          Prelude.Nothing,
+        externalLoginId = Prelude.Nothing,
+        unapplyCustomPermissions = Prelude.Nothing,
+        userName = pUserName_,
+        awsAccountId = pAwsAccountId_,
+        namespace = pNamespace_,
+        email = pEmail_,
+        role' = pRole_
+      }
+
+-- | The URL of the custom OpenID Connect (OIDC) provider that provides
+-- identity to let a user federate into Amazon QuickSight with an
+-- associated Identity and Access Management(IAM) role. This parameter
+-- should only be used when @ExternalLoginFederationProviderType@ parameter
+-- is set to @CUSTOM_OIDC@.
+updateUser_customFederationProviderUrl :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_customFederationProviderUrl = Lens.lens (\UpdateUser' {customFederationProviderUrl} -> customFederationProviderUrl) (\s@UpdateUser' {} a -> s {customFederationProviderUrl = a} :: UpdateUser)
+
+-- | (Enterprise edition only) The name of the custom permissions profile
+-- that you want to assign to this user. Customized permissions allows you
+-- to control a user\'s access by restricting access the following
+-- operations:
+--
+-- -   Create and update data sources
+--
+-- -   Create and update datasets
+--
+-- -   Create and update email reports
+--
+-- -   Subscribe to email reports
+--
+-- A set of custom permissions includes any combination of these
+-- restrictions. Currently, you need to create the profile names for custom
+-- permission sets by using the Amazon QuickSight console. Then, you use
+-- the @RegisterUser@ API operation to assign the named set of permissions
+-- to a Amazon QuickSight user.
+--
+-- Amazon QuickSight custom permissions are applied through IAM policies.
+-- Therefore, they override the permissions typically granted by assigning
+-- Amazon QuickSight users to one of the default security cohorts in Amazon
+-- QuickSight (admin, author, reader).
+--
+-- This feature is available only to Amazon QuickSight Enterprise edition
+-- subscriptions.
+updateUser_customPermissionsName :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_customPermissionsName = Lens.lens (\UpdateUser' {customPermissionsName} -> customPermissionsName) (\s@UpdateUser' {} a -> s {customPermissionsName = a} :: UpdateUser)
+
+-- | The type of supported external login provider that provides identity to
+-- let a user federate into Amazon QuickSight with an associated Identity
+-- and Access Management(IAM) role. The type of supported external login
+-- provider can be one of the following.
+--
+-- -   @COGNITO@: Amazon Cognito. The provider URL is
+--     cognito-identity.amazonaws.com. When choosing the @COGNITO@ provider
+--     type, don’t use the \"CustomFederationProviderUrl\" parameter which
+--     is only needed when the external provider is custom.
+--
+-- -   @CUSTOM_OIDC@: Custom OpenID Connect (OIDC) provider. When choosing
+--     @CUSTOM_OIDC@ type, use the @CustomFederationProviderUrl@ parameter
+--     to provide the custom OIDC provider URL.
+--
+-- -   @NONE@: This clears all the previously saved external login
+--     information for a user. Use the
+--     @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html DescribeUser>@ @
+--     API operation to check the external login information.
+updateUser_externalLoginFederationProviderType :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_externalLoginFederationProviderType = Lens.lens (\UpdateUser' {externalLoginFederationProviderType} -> externalLoginFederationProviderType) (\s@UpdateUser' {} a -> s {externalLoginFederationProviderType = a} :: UpdateUser)
+
+-- | The identity ID for a user in the external login provider.
+updateUser_externalLoginId :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_externalLoginId = Lens.lens (\UpdateUser' {externalLoginId} -> externalLoginId) (\s@UpdateUser' {} a -> s {externalLoginId = a} :: UpdateUser)
+
+-- | A flag that you use to indicate that you want to remove all custom
+-- permissions from this user. Using this parameter resets the user to the
+-- state it was in before a custom permissions profile was applied. This
+-- parameter defaults to NULL and it doesn\'t accept any other value.
+updateUser_unapplyCustomPermissions :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Bool)
+updateUser_unapplyCustomPermissions = Lens.lens (\UpdateUser' {unapplyCustomPermissions} -> unapplyCustomPermissions) (\s@UpdateUser' {} a -> s {unapplyCustomPermissions = a} :: UpdateUser)
+
+-- | The Amazon QuickSight user name that you want to update.
+updateUser_userName :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_userName = Lens.lens (\UpdateUser' {userName} -> userName) (\s@UpdateUser' {} a -> s {userName = a} :: UpdateUser)
+
+-- | The ID for the Amazon Web Services account that the user is in.
+-- Currently, you use the ID for the Amazon Web Services account that
+-- contains your Amazon QuickSight account.
+updateUser_awsAccountId :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_awsAccountId = Lens.lens (\UpdateUser' {awsAccountId} -> awsAccountId) (\s@UpdateUser' {} a -> s {awsAccountId = a} :: UpdateUser)
+
+-- | The namespace. Currently, you should set this to @default@.
+updateUser_namespace :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_namespace = Lens.lens (\UpdateUser' {namespace} -> namespace) (\s@UpdateUser' {} a -> s {namespace = a} :: UpdateUser)
+
+-- | The email address of the user that you want to update.
+updateUser_email :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_email = Lens.lens (\UpdateUser' {email} -> email) (\s@UpdateUser' {} a -> s {email = a} :: UpdateUser)
+
+-- | The Amazon QuickSight role of the user. The role can be one of the
+-- following default security cohorts:
+--
+-- -   @READER@: A user who has read-only access to dashboards.
+--
+-- -   @AUTHOR@: A user who can create data sources, datasets, analyses,
+--     and dashboards.
+--
+-- -   @ADMIN@: A user who is an author, who can also manage Amazon
+--     QuickSight settings.
+--
+-- The name of the Amazon QuickSight role is invisible to the user except
+-- for the console screens dealing with permissions.
+updateUser_role :: Lens.Lens' UpdateUser UserRole
+updateUser_role = Lens.lens (\UpdateUser' {role'} -> role') (\s@UpdateUser' {} a -> s {role' = a} :: UpdateUser)
+
+instance Core.AWSRequest UpdateUser where
+  type AWSResponse UpdateUser = UpdateUserResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateUserResponse'
+            Prelude.<$> (x Data..?> "RequestId")
+            Prelude.<*> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateUser where
+  hashWithSalt _salt UpdateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` customFederationProviderUrl
+      `Prelude.hashWithSalt` customPermissionsName
+      `Prelude.hashWithSalt` externalLoginFederationProviderType
+      `Prelude.hashWithSalt` externalLoginId
+      `Prelude.hashWithSalt` unapplyCustomPermissions
+      `Prelude.hashWithSalt` userName
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` namespace
+      `Prelude.hashWithSalt` email
+      `Prelude.hashWithSalt` role'
+
+instance Prelude.NFData UpdateUser where
+  rnf UpdateUser' {..} =
+    Prelude.rnf customFederationProviderUrl
+      `Prelude.seq` Prelude.rnf customPermissionsName
+      `Prelude.seq` Prelude.rnf externalLoginFederationProviderType
+      `Prelude.seq` Prelude.rnf externalLoginId
+      `Prelude.seq` Prelude.rnf unapplyCustomPermissions
+      `Prelude.seq` Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf namespace
+      `Prelude.seq` Prelude.rnf email
+      `Prelude.seq` Prelude.rnf role'
+
+instance Data.ToHeaders UpdateUser where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateUser where
+  toJSON UpdateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomFederationProviderUrl" Data..=)
+              Prelude.<$> customFederationProviderUrl,
+            ("CustomPermissionsName" Data..=)
+              Prelude.<$> customPermissionsName,
+            ("ExternalLoginFederationProviderType" Data..=)
+              Prelude.<$> externalLoginFederationProviderType,
+            ("ExternalLoginId" Data..=)
+              Prelude.<$> externalLoginId,
+            ("UnapplyCustomPermissions" Data..=)
+              Prelude.<$> unapplyCustomPermissions,
+            Prelude.Just ("Email" Data..= email),
+            Prelude.Just ("Role" Data..= role')
+          ]
+      )
+
+instance Data.ToPath UpdateUser where
+  toPath UpdateUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS awsAccountId,
+        "/namespaces/",
+        Data.toBS namespace,
+        "/users/",
+        Data.toBS userName
+      ]
+
+instance Data.ToQuery UpdateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateUserResponse' smart constructor.
+data UpdateUserResponse = UpdateUserResponse'
+  { -- | The Amazon Web Services request ID for this operation.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon QuickSight user.
+    user :: Prelude.Maybe User,
+    -- | The HTTP status of the request.
+    status :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'updateUserResponse_requestId' - The Amazon Web Services request ID for this operation.
+--
+-- 'user', 'updateUserResponse_user' - The Amazon QuickSight user.
+--
+-- 'status', 'updateUserResponse_status' - The HTTP status of the request.
+newUpdateUserResponse ::
+  -- | 'status'
+  Prelude.Int ->
+  UpdateUserResponse
+newUpdateUserResponse pStatus_ =
+  UpdateUserResponse'
+    { requestId = Prelude.Nothing,
+      user = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The Amazon Web Services request ID for this operation.
+updateUserResponse_requestId :: Lens.Lens' UpdateUserResponse (Prelude.Maybe Prelude.Text)
+updateUserResponse_requestId = Lens.lens (\UpdateUserResponse' {requestId} -> requestId) (\s@UpdateUserResponse' {} a -> s {requestId = a} :: UpdateUserResponse)
+
+-- | The Amazon QuickSight user.
+updateUserResponse_user :: Lens.Lens' UpdateUserResponse (Prelude.Maybe User)
+updateUserResponse_user = Lens.lens (\UpdateUserResponse' {user} -> user) (\s@UpdateUserResponse' {} a -> s {user = a} :: UpdateUserResponse)
+
+-- | The HTTP status of the request.
+updateUserResponse_status :: Lens.Lens' UpdateUserResponse Prelude.Int
+updateUserResponse_status = Lens.lens (\UpdateUserResponse' {status} -> status) (\s@UpdateUserResponse' {} a -> s {status = a} :: UpdateUserResponse)
+
+instance Prelude.NFData UpdateUserResponse where
+  rnf UpdateUserResponse' {..} =
+    Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf user
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/QuickSight/Waiters.hs b/gen/Amazonka/QuickSight/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/QuickSight/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.QuickSight.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.QuickSight.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.QuickSight.Lens
+import Amazonka.QuickSight.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.QuickSight
+import Test.Amazonka.QuickSight.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "QuickSight"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/QuickSight.hs b/test/Test/Amazonka/Gen/QuickSight.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/QuickSight.hs
@@ -0,0 +1,2558 @@
+{-# 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.QuickSight
+-- 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.QuickSight where
+
+import Amazonka.QuickSight
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.QuickSight.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"
+--         [ requestCancelIngestion $
+--             newCancelIngestion
+--
+--         , requestCreateAccountCustomization $
+--             newCreateAccountCustomization
+--
+--         , requestCreateAccountSubscription $
+--             newCreateAccountSubscription
+--
+--         , requestCreateAnalysis $
+--             newCreateAnalysis
+--
+--         , requestCreateDashboard $
+--             newCreateDashboard
+--
+--         , requestCreateDataSet $
+--             newCreateDataSet
+--
+--         , requestCreateDataSource $
+--             newCreateDataSource
+--
+--         , requestCreateFolder $
+--             newCreateFolder
+--
+--         , requestCreateFolderMembership $
+--             newCreateFolderMembership
+--
+--         , requestCreateGroup $
+--             newCreateGroup
+--
+--         , requestCreateGroupMembership $
+--             newCreateGroupMembership
+--
+--         , requestCreateIAMPolicyAssignment $
+--             newCreateIAMPolicyAssignment
+--
+--         , requestCreateIngestion $
+--             newCreateIngestion
+--
+--         , requestCreateNamespace $
+--             newCreateNamespace
+--
+--         , requestCreateTemplate $
+--             newCreateTemplate
+--
+--         , requestCreateTemplateAlias $
+--             newCreateTemplateAlias
+--
+--         , requestCreateTheme $
+--             newCreateTheme
+--
+--         , requestCreateThemeAlias $
+--             newCreateThemeAlias
+--
+--         , requestDeleteAccountCustomization $
+--             newDeleteAccountCustomization
+--
+--         , requestDeleteAccountSubscription $
+--             newDeleteAccountSubscription
+--
+--         , requestDeleteAnalysis $
+--             newDeleteAnalysis
+--
+--         , requestDeleteDashboard $
+--             newDeleteDashboard
+--
+--         , requestDeleteDataSet $
+--             newDeleteDataSet
+--
+--         , requestDeleteDataSource $
+--             newDeleteDataSource
+--
+--         , requestDeleteFolder $
+--             newDeleteFolder
+--
+--         , requestDeleteFolderMembership $
+--             newDeleteFolderMembership
+--
+--         , requestDeleteGroup $
+--             newDeleteGroup
+--
+--         , requestDeleteGroupMembership $
+--             newDeleteGroupMembership
+--
+--         , requestDeleteIAMPolicyAssignment $
+--             newDeleteIAMPolicyAssignment
+--
+--         , requestDeleteNamespace $
+--             newDeleteNamespace
+--
+--         , requestDeleteTemplate $
+--             newDeleteTemplate
+--
+--         , requestDeleteTemplateAlias $
+--             newDeleteTemplateAlias
+--
+--         , requestDeleteTheme $
+--             newDeleteTheme
+--
+--         , requestDeleteThemeAlias $
+--             newDeleteThemeAlias
+--
+--         , requestDeleteUser $
+--             newDeleteUser
+--
+--         , requestDeleteUserByPrincipalId $
+--             newDeleteUserByPrincipalId
+--
+--         , requestDescribeAccountCustomization $
+--             newDescribeAccountCustomization
+--
+--         , requestDescribeAccountSettings $
+--             newDescribeAccountSettings
+--
+--         , requestDescribeAccountSubscription $
+--             newDescribeAccountSubscription
+--
+--         , requestDescribeAnalysis $
+--             newDescribeAnalysis
+--
+--         , requestDescribeAnalysisDefinition $
+--             newDescribeAnalysisDefinition
+--
+--         , requestDescribeAnalysisPermissions $
+--             newDescribeAnalysisPermissions
+--
+--         , requestDescribeDashboard $
+--             newDescribeDashboard
+--
+--         , requestDescribeDashboardDefinition $
+--             newDescribeDashboardDefinition
+--
+--         , requestDescribeDashboardPermissions $
+--             newDescribeDashboardPermissions
+--
+--         , requestDescribeDataSet $
+--             newDescribeDataSet
+--
+--         , requestDescribeDataSetPermissions $
+--             newDescribeDataSetPermissions
+--
+--         , requestDescribeDataSource $
+--             newDescribeDataSource
+--
+--         , requestDescribeDataSourcePermissions $
+--             newDescribeDataSourcePermissions
+--
+--         , requestDescribeFolder $
+--             newDescribeFolder
+--
+--         , requestDescribeFolderPermissions $
+--             newDescribeFolderPermissions
+--
+--         , requestDescribeFolderResolvedPermissions $
+--             newDescribeFolderResolvedPermissions
+--
+--         , requestDescribeGroup $
+--             newDescribeGroup
+--
+--         , requestDescribeGroupMembership $
+--             newDescribeGroupMembership
+--
+--         , requestDescribeIAMPolicyAssignment $
+--             newDescribeIAMPolicyAssignment
+--
+--         , requestDescribeIngestion $
+--             newDescribeIngestion
+--
+--         , requestDescribeIpRestriction $
+--             newDescribeIpRestriction
+--
+--         , requestDescribeNamespace $
+--             newDescribeNamespace
+--
+--         , requestDescribeTemplate $
+--             newDescribeTemplate
+--
+--         , requestDescribeTemplateAlias $
+--             newDescribeTemplateAlias
+--
+--         , requestDescribeTemplateDefinition $
+--             newDescribeTemplateDefinition
+--
+--         , requestDescribeTemplatePermissions $
+--             newDescribeTemplatePermissions
+--
+--         , requestDescribeTheme $
+--             newDescribeTheme
+--
+--         , requestDescribeThemeAlias $
+--             newDescribeThemeAlias
+--
+--         , requestDescribeThemePermissions $
+--             newDescribeThemePermissions
+--
+--         , requestDescribeUser $
+--             newDescribeUser
+--
+--         , requestGenerateEmbedUrlForAnonymousUser $
+--             newGenerateEmbedUrlForAnonymousUser
+--
+--         , requestGenerateEmbedUrlForRegisteredUser $
+--             newGenerateEmbedUrlForRegisteredUser
+--
+--         , requestGetDashboardEmbedUrl $
+--             newGetDashboardEmbedUrl
+--
+--         , requestGetSessionEmbedUrl $
+--             newGetSessionEmbedUrl
+--
+--         , requestListAnalyses $
+--             newListAnalyses
+--
+--         , requestListDashboardVersions $
+--             newListDashboardVersions
+--
+--         , requestListDashboards $
+--             newListDashboards
+--
+--         , requestListDataSets $
+--             newListDataSets
+--
+--         , requestListDataSources $
+--             newListDataSources
+--
+--         , requestListFolderMembers $
+--             newListFolderMembers
+--
+--         , requestListFolders $
+--             newListFolders
+--
+--         , requestListGroupMemberships $
+--             newListGroupMemberships
+--
+--         , requestListGroups $
+--             newListGroups
+--
+--         , requestListIAMPolicyAssignments $
+--             newListIAMPolicyAssignments
+--
+--         , requestListIAMPolicyAssignmentsForUser $
+--             newListIAMPolicyAssignmentsForUser
+--
+--         , requestListIngestions $
+--             newListIngestions
+--
+--         , requestListNamespaces $
+--             newListNamespaces
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestListTemplateAliases $
+--             newListTemplateAliases
+--
+--         , requestListTemplateVersions $
+--             newListTemplateVersions
+--
+--         , requestListTemplates $
+--             newListTemplates
+--
+--         , requestListThemeAliases $
+--             newListThemeAliases
+--
+--         , requestListThemeVersions $
+--             newListThemeVersions
+--
+--         , requestListThemes $
+--             newListThemes
+--
+--         , requestListUserGroups $
+--             newListUserGroups
+--
+--         , requestListUsers $
+--             newListUsers
+--
+--         , requestRegisterUser $
+--             newRegisterUser
+--
+--         , requestRestoreAnalysis $
+--             newRestoreAnalysis
+--
+--         , requestSearchAnalyses $
+--             newSearchAnalyses
+--
+--         , requestSearchDashboards $
+--             newSearchDashboards
+--
+--         , requestSearchDataSets $
+--             newSearchDataSets
+--
+--         , requestSearchDataSources $
+--             newSearchDataSources
+--
+--         , requestSearchFolders $
+--             newSearchFolders
+--
+--         , requestSearchGroups $
+--             newSearchGroups
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateAccountCustomization $
+--             newUpdateAccountCustomization
+--
+--         , requestUpdateAccountSettings $
+--             newUpdateAccountSettings
+--
+--         , requestUpdateAnalysis $
+--             newUpdateAnalysis
+--
+--         , requestUpdateAnalysisPermissions $
+--             newUpdateAnalysisPermissions
+--
+--         , requestUpdateDashboard $
+--             newUpdateDashboard
+--
+--         , requestUpdateDashboardPermissions $
+--             newUpdateDashboardPermissions
+--
+--         , requestUpdateDashboardPublishedVersion $
+--             newUpdateDashboardPublishedVersion
+--
+--         , requestUpdateDataSet $
+--             newUpdateDataSet
+--
+--         , requestUpdateDataSetPermissions $
+--             newUpdateDataSetPermissions
+--
+--         , requestUpdateDataSource $
+--             newUpdateDataSource
+--
+--         , requestUpdateDataSourcePermissions $
+--             newUpdateDataSourcePermissions
+--
+--         , requestUpdateFolder $
+--             newUpdateFolder
+--
+--         , requestUpdateFolderPermissions $
+--             newUpdateFolderPermissions
+--
+--         , requestUpdateGroup $
+--             newUpdateGroup
+--
+--         , requestUpdateIAMPolicyAssignment $
+--             newUpdateIAMPolicyAssignment
+--
+--         , requestUpdateIpRestriction $
+--             newUpdateIpRestriction
+--
+--         , requestUpdatePublicSharingSettings $
+--             newUpdatePublicSharingSettings
+--
+--         , requestUpdateTemplate $
+--             newUpdateTemplate
+--
+--         , requestUpdateTemplateAlias $
+--             newUpdateTemplateAlias
+--
+--         , requestUpdateTemplatePermissions $
+--             newUpdateTemplatePermissions
+--
+--         , requestUpdateTheme $
+--             newUpdateTheme
+--
+--         , requestUpdateThemeAlias $
+--             newUpdateThemeAlias
+--
+--         , requestUpdateThemePermissions $
+--             newUpdateThemePermissions
+--
+--         , requestUpdateUser $
+--             newUpdateUser
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCancelIngestion $
+--             newCancelIngestionResponse
+--
+--         , responseCreateAccountCustomization $
+--             newCreateAccountCustomizationResponse
+--
+--         , responseCreateAccountSubscription $
+--             newCreateAccountSubscriptionResponse
+--
+--         , responseCreateAnalysis $
+--             newCreateAnalysisResponse
+--
+--         , responseCreateDashboard $
+--             newCreateDashboardResponse
+--
+--         , responseCreateDataSet $
+--             newCreateDataSetResponse
+--
+--         , responseCreateDataSource $
+--             newCreateDataSourceResponse
+--
+--         , responseCreateFolder $
+--             newCreateFolderResponse
+--
+--         , responseCreateFolderMembership $
+--             newCreateFolderMembershipResponse
+--
+--         , responseCreateGroup $
+--             newCreateGroupResponse
+--
+--         , responseCreateGroupMembership $
+--             newCreateGroupMembershipResponse
+--
+--         , responseCreateIAMPolicyAssignment $
+--             newCreateIAMPolicyAssignmentResponse
+--
+--         , responseCreateIngestion $
+--             newCreateIngestionResponse
+--
+--         , responseCreateNamespace $
+--             newCreateNamespaceResponse
+--
+--         , responseCreateTemplate $
+--             newCreateTemplateResponse
+--
+--         , responseCreateTemplateAlias $
+--             newCreateTemplateAliasResponse
+--
+--         , responseCreateTheme $
+--             newCreateThemeResponse
+--
+--         , responseCreateThemeAlias $
+--             newCreateThemeAliasResponse
+--
+--         , responseDeleteAccountCustomization $
+--             newDeleteAccountCustomizationResponse
+--
+--         , responseDeleteAccountSubscription $
+--             newDeleteAccountSubscriptionResponse
+--
+--         , responseDeleteAnalysis $
+--             newDeleteAnalysisResponse
+--
+--         , responseDeleteDashboard $
+--             newDeleteDashboardResponse
+--
+--         , responseDeleteDataSet $
+--             newDeleteDataSetResponse
+--
+--         , responseDeleteDataSource $
+--             newDeleteDataSourceResponse
+--
+--         , responseDeleteFolder $
+--             newDeleteFolderResponse
+--
+--         , responseDeleteFolderMembership $
+--             newDeleteFolderMembershipResponse
+--
+--         , responseDeleteGroup $
+--             newDeleteGroupResponse
+--
+--         , responseDeleteGroupMembership $
+--             newDeleteGroupMembershipResponse
+--
+--         , responseDeleteIAMPolicyAssignment $
+--             newDeleteIAMPolicyAssignmentResponse
+--
+--         , responseDeleteNamespace $
+--             newDeleteNamespaceResponse
+--
+--         , responseDeleteTemplate $
+--             newDeleteTemplateResponse
+--
+--         , responseDeleteTemplateAlias $
+--             newDeleteTemplateAliasResponse
+--
+--         , responseDeleteTheme $
+--             newDeleteThemeResponse
+--
+--         , responseDeleteThemeAlias $
+--             newDeleteThemeAliasResponse
+--
+--         , responseDeleteUser $
+--             newDeleteUserResponse
+--
+--         , responseDeleteUserByPrincipalId $
+--             newDeleteUserByPrincipalIdResponse
+--
+--         , responseDescribeAccountCustomization $
+--             newDescribeAccountCustomizationResponse
+--
+--         , responseDescribeAccountSettings $
+--             newDescribeAccountSettingsResponse
+--
+--         , responseDescribeAccountSubscription $
+--             newDescribeAccountSubscriptionResponse
+--
+--         , responseDescribeAnalysis $
+--             newDescribeAnalysisResponse
+--
+--         , responseDescribeAnalysisDefinition $
+--             newDescribeAnalysisDefinitionResponse
+--
+--         , responseDescribeAnalysisPermissions $
+--             newDescribeAnalysisPermissionsResponse
+--
+--         , responseDescribeDashboard $
+--             newDescribeDashboardResponse
+--
+--         , responseDescribeDashboardDefinition $
+--             newDescribeDashboardDefinitionResponse
+--
+--         , responseDescribeDashboardPermissions $
+--             newDescribeDashboardPermissionsResponse
+--
+--         , responseDescribeDataSet $
+--             newDescribeDataSetResponse
+--
+--         , responseDescribeDataSetPermissions $
+--             newDescribeDataSetPermissionsResponse
+--
+--         , responseDescribeDataSource $
+--             newDescribeDataSourceResponse
+--
+--         , responseDescribeDataSourcePermissions $
+--             newDescribeDataSourcePermissionsResponse
+--
+--         , responseDescribeFolder $
+--             newDescribeFolderResponse
+--
+--         , responseDescribeFolderPermissions $
+--             newDescribeFolderPermissionsResponse
+--
+--         , responseDescribeFolderResolvedPermissions $
+--             newDescribeFolderResolvedPermissionsResponse
+--
+--         , responseDescribeGroup $
+--             newDescribeGroupResponse
+--
+--         , responseDescribeGroupMembership $
+--             newDescribeGroupMembershipResponse
+--
+--         , responseDescribeIAMPolicyAssignment $
+--             newDescribeIAMPolicyAssignmentResponse
+--
+--         , responseDescribeIngestion $
+--             newDescribeIngestionResponse
+--
+--         , responseDescribeIpRestriction $
+--             newDescribeIpRestrictionResponse
+--
+--         , responseDescribeNamespace $
+--             newDescribeNamespaceResponse
+--
+--         , responseDescribeTemplate $
+--             newDescribeTemplateResponse
+--
+--         , responseDescribeTemplateAlias $
+--             newDescribeTemplateAliasResponse
+--
+--         , responseDescribeTemplateDefinition $
+--             newDescribeTemplateDefinitionResponse
+--
+--         , responseDescribeTemplatePermissions $
+--             newDescribeTemplatePermissionsResponse
+--
+--         , responseDescribeTheme $
+--             newDescribeThemeResponse
+--
+--         , responseDescribeThemeAlias $
+--             newDescribeThemeAliasResponse
+--
+--         , responseDescribeThemePermissions $
+--             newDescribeThemePermissionsResponse
+--
+--         , responseDescribeUser $
+--             newDescribeUserResponse
+--
+--         , responseGenerateEmbedUrlForAnonymousUser $
+--             newGenerateEmbedUrlForAnonymousUserResponse
+--
+--         , responseGenerateEmbedUrlForRegisteredUser $
+--             newGenerateEmbedUrlForRegisteredUserResponse
+--
+--         , responseGetDashboardEmbedUrl $
+--             newGetDashboardEmbedUrlResponse
+--
+--         , responseGetSessionEmbedUrl $
+--             newGetSessionEmbedUrlResponse
+--
+--         , responseListAnalyses $
+--             newListAnalysesResponse
+--
+--         , responseListDashboardVersions $
+--             newListDashboardVersionsResponse
+--
+--         , responseListDashboards $
+--             newListDashboardsResponse
+--
+--         , responseListDataSets $
+--             newListDataSetsResponse
+--
+--         , responseListDataSources $
+--             newListDataSourcesResponse
+--
+--         , responseListFolderMembers $
+--             newListFolderMembersResponse
+--
+--         , responseListFolders $
+--             newListFoldersResponse
+--
+--         , responseListGroupMemberships $
+--             newListGroupMembershipsResponse
+--
+--         , responseListGroups $
+--             newListGroupsResponse
+--
+--         , responseListIAMPolicyAssignments $
+--             newListIAMPolicyAssignmentsResponse
+--
+--         , responseListIAMPolicyAssignmentsForUser $
+--             newListIAMPolicyAssignmentsForUserResponse
+--
+--         , responseListIngestions $
+--             newListIngestionsResponse
+--
+--         , responseListNamespaces $
+--             newListNamespacesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseListTemplateAliases $
+--             newListTemplateAliasesResponse
+--
+--         , responseListTemplateVersions $
+--             newListTemplateVersionsResponse
+--
+--         , responseListTemplates $
+--             newListTemplatesResponse
+--
+--         , responseListThemeAliases $
+--             newListThemeAliasesResponse
+--
+--         , responseListThemeVersions $
+--             newListThemeVersionsResponse
+--
+--         , responseListThemes $
+--             newListThemesResponse
+--
+--         , responseListUserGroups $
+--             newListUserGroupsResponse
+--
+--         , responseListUsers $
+--             newListUsersResponse
+--
+--         , responseRegisterUser $
+--             newRegisterUserResponse
+--
+--         , responseRestoreAnalysis $
+--             newRestoreAnalysisResponse
+--
+--         , responseSearchAnalyses $
+--             newSearchAnalysesResponse
+--
+--         , responseSearchDashboards $
+--             newSearchDashboardsResponse
+--
+--         , responseSearchDataSets $
+--             newSearchDataSetsResponse
+--
+--         , responseSearchDataSources $
+--             newSearchDataSourcesResponse
+--
+--         , responseSearchFolders $
+--             newSearchFoldersResponse
+--
+--         , responseSearchGroups $
+--             newSearchGroupsResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateAccountCustomization $
+--             newUpdateAccountCustomizationResponse
+--
+--         , responseUpdateAccountSettings $
+--             newUpdateAccountSettingsResponse
+--
+--         , responseUpdateAnalysis $
+--             newUpdateAnalysisResponse
+--
+--         , responseUpdateAnalysisPermissions $
+--             newUpdateAnalysisPermissionsResponse
+--
+--         , responseUpdateDashboard $
+--             newUpdateDashboardResponse
+--
+--         , responseUpdateDashboardPermissions $
+--             newUpdateDashboardPermissionsResponse
+--
+--         , responseUpdateDashboardPublishedVersion $
+--             newUpdateDashboardPublishedVersionResponse
+--
+--         , responseUpdateDataSet $
+--             newUpdateDataSetResponse
+--
+--         , responseUpdateDataSetPermissions $
+--             newUpdateDataSetPermissionsResponse
+--
+--         , responseUpdateDataSource $
+--             newUpdateDataSourceResponse
+--
+--         , responseUpdateDataSourcePermissions $
+--             newUpdateDataSourcePermissionsResponse
+--
+--         , responseUpdateFolder $
+--             newUpdateFolderResponse
+--
+--         , responseUpdateFolderPermissions $
+--             newUpdateFolderPermissionsResponse
+--
+--         , responseUpdateGroup $
+--             newUpdateGroupResponse
+--
+--         , responseUpdateIAMPolicyAssignment $
+--             newUpdateIAMPolicyAssignmentResponse
+--
+--         , responseUpdateIpRestriction $
+--             newUpdateIpRestrictionResponse
+--
+--         , responseUpdatePublicSharingSettings $
+--             newUpdatePublicSharingSettingsResponse
+--
+--         , responseUpdateTemplate $
+--             newUpdateTemplateResponse
+--
+--         , responseUpdateTemplateAlias $
+--             newUpdateTemplateAliasResponse
+--
+--         , responseUpdateTemplatePermissions $
+--             newUpdateTemplatePermissionsResponse
+--
+--         , responseUpdateTheme $
+--             newUpdateThemeResponse
+--
+--         , responseUpdateThemeAlias $
+--             newUpdateThemeAliasResponse
+--
+--         , responseUpdateThemePermissions $
+--             newUpdateThemePermissionsResponse
+--
+--         , responseUpdateUser $
+--             newUpdateUserResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCancelIngestion :: CancelIngestion -> TestTree
+requestCancelIngestion =
+  req
+    "CancelIngestion"
+    "fixture/CancelIngestion.yaml"
+
+requestCreateAccountCustomization :: CreateAccountCustomization -> TestTree
+requestCreateAccountCustomization =
+  req
+    "CreateAccountCustomization"
+    "fixture/CreateAccountCustomization.yaml"
+
+requestCreateAccountSubscription :: CreateAccountSubscription -> TestTree
+requestCreateAccountSubscription =
+  req
+    "CreateAccountSubscription"
+    "fixture/CreateAccountSubscription.yaml"
+
+requestCreateAnalysis :: CreateAnalysis -> TestTree
+requestCreateAnalysis =
+  req
+    "CreateAnalysis"
+    "fixture/CreateAnalysis.yaml"
+
+requestCreateDashboard :: CreateDashboard -> TestTree
+requestCreateDashboard =
+  req
+    "CreateDashboard"
+    "fixture/CreateDashboard.yaml"
+
+requestCreateDataSet :: CreateDataSet -> TestTree
+requestCreateDataSet =
+  req
+    "CreateDataSet"
+    "fixture/CreateDataSet.yaml"
+
+requestCreateDataSource :: CreateDataSource -> TestTree
+requestCreateDataSource =
+  req
+    "CreateDataSource"
+    "fixture/CreateDataSource.yaml"
+
+requestCreateFolder :: CreateFolder -> TestTree
+requestCreateFolder =
+  req
+    "CreateFolder"
+    "fixture/CreateFolder.yaml"
+
+requestCreateFolderMembership :: CreateFolderMembership -> TestTree
+requestCreateFolderMembership =
+  req
+    "CreateFolderMembership"
+    "fixture/CreateFolderMembership.yaml"
+
+requestCreateGroup :: CreateGroup -> TestTree
+requestCreateGroup =
+  req
+    "CreateGroup"
+    "fixture/CreateGroup.yaml"
+
+requestCreateGroupMembership :: CreateGroupMembership -> TestTree
+requestCreateGroupMembership =
+  req
+    "CreateGroupMembership"
+    "fixture/CreateGroupMembership.yaml"
+
+requestCreateIAMPolicyAssignment :: CreateIAMPolicyAssignment -> TestTree
+requestCreateIAMPolicyAssignment =
+  req
+    "CreateIAMPolicyAssignment"
+    "fixture/CreateIAMPolicyAssignment.yaml"
+
+requestCreateIngestion :: CreateIngestion -> TestTree
+requestCreateIngestion =
+  req
+    "CreateIngestion"
+    "fixture/CreateIngestion.yaml"
+
+requestCreateNamespace :: CreateNamespace -> TestTree
+requestCreateNamespace =
+  req
+    "CreateNamespace"
+    "fixture/CreateNamespace.yaml"
+
+requestCreateTemplate :: CreateTemplate -> TestTree
+requestCreateTemplate =
+  req
+    "CreateTemplate"
+    "fixture/CreateTemplate.yaml"
+
+requestCreateTemplateAlias :: CreateTemplateAlias -> TestTree
+requestCreateTemplateAlias =
+  req
+    "CreateTemplateAlias"
+    "fixture/CreateTemplateAlias.yaml"
+
+requestCreateTheme :: CreateTheme -> TestTree
+requestCreateTheme =
+  req
+    "CreateTheme"
+    "fixture/CreateTheme.yaml"
+
+requestCreateThemeAlias :: CreateThemeAlias -> TestTree
+requestCreateThemeAlias =
+  req
+    "CreateThemeAlias"
+    "fixture/CreateThemeAlias.yaml"
+
+requestDeleteAccountCustomization :: DeleteAccountCustomization -> TestTree
+requestDeleteAccountCustomization =
+  req
+    "DeleteAccountCustomization"
+    "fixture/DeleteAccountCustomization.yaml"
+
+requestDeleteAccountSubscription :: DeleteAccountSubscription -> TestTree
+requestDeleteAccountSubscription =
+  req
+    "DeleteAccountSubscription"
+    "fixture/DeleteAccountSubscription.yaml"
+
+requestDeleteAnalysis :: DeleteAnalysis -> TestTree
+requestDeleteAnalysis =
+  req
+    "DeleteAnalysis"
+    "fixture/DeleteAnalysis.yaml"
+
+requestDeleteDashboard :: DeleteDashboard -> TestTree
+requestDeleteDashboard =
+  req
+    "DeleteDashboard"
+    "fixture/DeleteDashboard.yaml"
+
+requestDeleteDataSet :: DeleteDataSet -> TestTree
+requestDeleteDataSet =
+  req
+    "DeleteDataSet"
+    "fixture/DeleteDataSet.yaml"
+
+requestDeleteDataSource :: DeleteDataSource -> TestTree
+requestDeleteDataSource =
+  req
+    "DeleteDataSource"
+    "fixture/DeleteDataSource.yaml"
+
+requestDeleteFolder :: DeleteFolder -> TestTree
+requestDeleteFolder =
+  req
+    "DeleteFolder"
+    "fixture/DeleteFolder.yaml"
+
+requestDeleteFolderMembership :: DeleteFolderMembership -> TestTree
+requestDeleteFolderMembership =
+  req
+    "DeleteFolderMembership"
+    "fixture/DeleteFolderMembership.yaml"
+
+requestDeleteGroup :: DeleteGroup -> TestTree
+requestDeleteGroup =
+  req
+    "DeleteGroup"
+    "fixture/DeleteGroup.yaml"
+
+requestDeleteGroupMembership :: DeleteGroupMembership -> TestTree
+requestDeleteGroupMembership =
+  req
+    "DeleteGroupMembership"
+    "fixture/DeleteGroupMembership.yaml"
+
+requestDeleteIAMPolicyAssignment :: DeleteIAMPolicyAssignment -> TestTree
+requestDeleteIAMPolicyAssignment =
+  req
+    "DeleteIAMPolicyAssignment"
+    "fixture/DeleteIAMPolicyAssignment.yaml"
+
+requestDeleteNamespace :: DeleteNamespace -> TestTree
+requestDeleteNamespace =
+  req
+    "DeleteNamespace"
+    "fixture/DeleteNamespace.yaml"
+
+requestDeleteTemplate :: DeleteTemplate -> TestTree
+requestDeleteTemplate =
+  req
+    "DeleteTemplate"
+    "fixture/DeleteTemplate.yaml"
+
+requestDeleteTemplateAlias :: DeleteTemplateAlias -> TestTree
+requestDeleteTemplateAlias =
+  req
+    "DeleteTemplateAlias"
+    "fixture/DeleteTemplateAlias.yaml"
+
+requestDeleteTheme :: DeleteTheme -> TestTree
+requestDeleteTheme =
+  req
+    "DeleteTheme"
+    "fixture/DeleteTheme.yaml"
+
+requestDeleteThemeAlias :: DeleteThemeAlias -> TestTree
+requestDeleteThemeAlias =
+  req
+    "DeleteThemeAlias"
+    "fixture/DeleteThemeAlias.yaml"
+
+requestDeleteUser :: DeleteUser -> TestTree
+requestDeleteUser =
+  req
+    "DeleteUser"
+    "fixture/DeleteUser.yaml"
+
+requestDeleteUserByPrincipalId :: DeleteUserByPrincipalId -> TestTree
+requestDeleteUserByPrincipalId =
+  req
+    "DeleteUserByPrincipalId"
+    "fixture/DeleteUserByPrincipalId.yaml"
+
+requestDescribeAccountCustomization :: DescribeAccountCustomization -> TestTree
+requestDescribeAccountCustomization =
+  req
+    "DescribeAccountCustomization"
+    "fixture/DescribeAccountCustomization.yaml"
+
+requestDescribeAccountSettings :: DescribeAccountSettings -> TestTree
+requestDescribeAccountSettings =
+  req
+    "DescribeAccountSettings"
+    "fixture/DescribeAccountSettings.yaml"
+
+requestDescribeAccountSubscription :: DescribeAccountSubscription -> TestTree
+requestDescribeAccountSubscription =
+  req
+    "DescribeAccountSubscription"
+    "fixture/DescribeAccountSubscription.yaml"
+
+requestDescribeAnalysis :: DescribeAnalysis -> TestTree
+requestDescribeAnalysis =
+  req
+    "DescribeAnalysis"
+    "fixture/DescribeAnalysis.yaml"
+
+requestDescribeAnalysisDefinition :: DescribeAnalysisDefinition -> TestTree
+requestDescribeAnalysisDefinition =
+  req
+    "DescribeAnalysisDefinition"
+    "fixture/DescribeAnalysisDefinition.yaml"
+
+requestDescribeAnalysisPermissions :: DescribeAnalysisPermissions -> TestTree
+requestDescribeAnalysisPermissions =
+  req
+    "DescribeAnalysisPermissions"
+    "fixture/DescribeAnalysisPermissions.yaml"
+
+requestDescribeDashboard :: DescribeDashboard -> TestTree
+requestDescribeDashboard =
+  req
+    "DescribeDashboard"
+    "fixture/DescribeDashboard.yaml"
+
+requestDescribeDashboardDefinition :: DescribeDashboardDefinition -> TestTree
+requestDescribeDashboardDefinition =
+  req
+    "DescribeDashboardDefinition"
+    "fixture/DescribeDashboardDefinition.yaml"
+
+requestDescribeDashboardPermissions :: DescribeDashboardPermissions -> TestTree
+requestDescribeDashboardPermissions =
+  req
+    "DescribeDashboardPermissions"
+    "fixture/DescribeDashboardPermissions.yaml"
+
+requestDescribeDataSet :: DescribeDataSet -> TestTree
+requestDescribeDataSet =
+  req
+    "DescribeDataSet"
+    "fixture/DescribeDataSet.yaml"
+
+requestDescribeDataSetPermissions :: DescribeDataSetPermissions -> TestTree
+requestDescribeDataSetPermissions =
+  req
+    "DescribeDataSetPermissions"
+    "fixture/DescribeDataSetPermissions.yaml"
+
+requestDescribeDataSource :: DescribeDataSource -> TestTree
+requestDescribeDataSource =
+  req
+    "DescribeDataSource"
+    "fixture/DescribeDataSource.yaml"
+
+requestDescribeDataSourcePermissions :: DescribeDataSourcePermissions -> TestTree
+requestDescribeDataSourcePermissions =
+  req
+    "DescribeDataSourcePermissions"
+    "fixture/DescribeDataSourcePermissions.yaml"
+
+requestDescribeFolder :: DescribeFolder -> TestTree
+requestDescribeFolder =
+  req
+    "DescribeFolder"
+    "fixture/DescribeFolder.yaml"
+
+requestDescribeFolderPermissions :: DescribeFolderPermissions -> TestTree
+requestDescribeFolderPermissions =
+  req
+    "DescribeFolderPermissions"
+    "fixture/DescribeFolderPermissions.yaml"
+
+requestDescribeFolderResolvedPermissions :: DescribeFolderResolvedPermissions -> TestTree
+requestDescribeFolderResolvedPermissions =
+  req
+    "DescribeFolderResolvedPermissions"
+    "fixture/DescribeFolderResolvedPermissions.yaml"
+
+requestDescribeGroup :: DescribeGroup -> TestTree
+requestDescribeGroup =
+  req
+    "DescribeGroup"
+    "fixture/DescribeGroup.yaml"
+
+requestDescribeGroupMembership :: DescribeGroupMembership -> TestTree
+requestDescribeGroupMembership =
+  req
+    "DescribeGroupMembership"
+    "fixture/DescribeGroupMembership.yaml"
+
+requestDescribeIAMPolicyAssignment :: DescribeIAMPolicyAssignment -> TestTree
+requestDescribeIAMPolicyAssignment =
+  req
+    "DescribeIAMPolicyAssignment"
+    "fixture/DescribeIAMPolicyAssignment.yaml"
+
+requestDescribeIngestion :: DescribeIngestion -> TestTree
+requestDescribeIngestion =
+  req
+    "DescribeIngestion"
+    "fixture/DescribeIngestion.yaml"
+
+requestDescribeIpRestriction :: DescribeIpRestriction -> TestTree
+requestDescribeIpRestriction =
+  req
+    "DescribeIpRestriction"
+    "fixture/DescribeIpRestriction.yaml"
+
+requestDescribeNamespace :: DescribeNamespace -> TestTree
+requestDescribeNamespace =
+  req
+    "DescribeNamespace"
+    "fixture/DescribeNamespace.yaml"
+
+requestDescribeTemplate :: DescribeTemplate -> TestTree
+requestDescribeTemplate =
+  req
+    "DescribeTemplate"
+    "fixture/DescribeTemplate.yaml"
+
+requestDescribeTemplateAlias :: DescribeTemplateAlias -> TestTree
+requestDescribeTemplateAlias =
+  req
+    "DescribeTemplateAlias"
+    "fixture/DescribeTemplateAlias.yaml"
+
+requestDescribeTemplateDefinition :: DescribeTemplateDefinition -> TestTree
+requestDescribeTemplateDefinition =
+  req
+    "DescribeTemplateDefinition"
+    "fixture/DescribeTemplateDefinition.yaml"
+
+requestDescribeTemplatePermissions :: DescribeTemplatePermissions -> TestTree
+requestDescribeTemplatePermissions =
+  req
+    "DescribeTemplatePermissions"
+    "fixture/DescribeTemplatePermissions.yaml"
+
+requestDescribeTheme :: DescribeTheme -> TestTree
+requestDescribeTheme =
+  req
+    "DescribeTheme"
+    "fixture/DescribeTheme.yaml"
+
+requestDescribeThemeAlias :: DescribeThemeAlias -> TestTree
+requestDescribeThemeAlias =
+  req
+    "DescribeThemeAlias"
+    "fixture/DescribeThemeAlias.yaml"
+
+requestDescribeThemePermissions :: DescribeThemePermissions -> TestTree
+requestDescribeThemePermissions =
+  req
+    "DescribeThemePermissions"
+    "fixture/DescribeThemePermissions.yaml"
+
+requestDescribeUser :: DescribeUser -> TestTree
+requestDescribeUser =
+  req
+    "DescribeUser"
+    "fixture/DescribeUser.yaml"
+
+requestGenerateEmbedUrlForAnonymousUser :: GenerateEmbedUrlForAnonymousUser -> TestTree
+requestGenerateEmbedUrlForAnonymousUser =
+  req
+    "GenerateEmbedUrlForAnonymousUser"
+    "fixture/GenerateEmbedUrlForAnonymousUser.yaml"
+
+requestGenerateEmbedUrlForRegisteredUser :: GenerateEmbedUrlForRegisteredUser -> TestTree
+requestGenerateEmbedUrlForRegisteredUser =
+  req
+    "GenerateEmbedUrlForRegisteredUser"
+    "fixture/GenerateEmbedUrlForRegisteredUser.yaml"
+
+requestGetDashboardEmbedUrl :: GetDashboardEmbedUrl -> TestTree
+requestGetDashboardEmbedUrl =
+  req
+    "GetDashboardEmbedUrl"
+    "fixture/GetDashboardEmbedUrl.yaml"
+
+requestGetSessionEmbedUrl :: GetSessionEmbedUrl -> TestTree
+requestGetSessionEmbedUrl =
+  req
+    "GetSessionEmbedUrl"
+    "fixture/GetSessionEmbedUrl.yaml"
+
+requestListAnalyses :: ListAnalyses -> TestTree
+requestListAnalyses =
+  req
+    "ListAnalyses"
+    "fixture/ListAnalyses.yaml"
+
+requestListDashboardVersions :: ListDashboardVersions -> TestTree
+requestListDashboardVersions =
+  req
+    "ListDashboardVersions"
+    "fixture/ListDashboardVersions.yaml"
+
+requestListDashboards :: ListDashboards -> TestTree
+requestListDashboards =
+  req
+    "ListDashboards"
+    "fixture/ListDashboards.yaml"
+
+requestListDataSets :: ListDataSets -> TestTree
+requestListDataSets =
+  req
+    "ListDataSets"
+    "fixture/ListDataSets.yaml"
+
+requestListDataSources :: ListDataSources -> TestTree
+requestListDataSources =
+  req
+    "ListDataSources"
+    "fixture/ListDataSources.yaml"
+
+requestListFolderMembers :: ListFolderMembers -> TestTree
+requestListFolderMembers =
+  req
+    "ListFolderMembers"
+    "fixture/ListFolderMembers.yaml"
+
+requestListFolders :: ListFolders -> TestTree
+requestListFolders =
+  req
+    "ListFolders"
+    "fixture/ListFolders.yaml"
+
+requestListGroupMemberships :: ListGroupMemberships -> TestTree
+requestListGroupMemberships =
+  req
+    "ListGroupMemberships"
+    "fixture/ListGroupMemberships.yaml"
+
+requestListGroups :: ListGroups -> TestTree
+requestListGroups =
+  req
+    "ListGroups"
+    "fixture/ListGroups.yaml"
+
+requestListIAMPolicyAssignments :: ListIAMPolicyAssignments -> TestTree
+requestListIAMPolicyAssignments =
+  req
+    "ListIAMPolicyAssignments"
+    "fixture/ListIAMPolicyAssignments.yaml"
+
+requestListIAMPolicyAssignmentsForUser :: ListIAMPolicyAssignmentsForUser -> TestTree
+requestListIAMPolicyAssignmentsForUser =
+  req
+    "ListIAMPolicyAssignmentsForUser"
+    "fixture/ListIAMPolicyAssignmentsForUser.yaml"
+
+requestListIngestions :: ListIngestions -> TestTree
+requestListIngestions =
+  req
+    "ListIngestions"
+    "fixture/ListIngestions.yaml"
+
+requestListNamespaces :: ListNamespaces -> TestTree
+requestListNamespaces =
+  req
+    "ListNamespaces"
+    "fixture/ListNamespaces.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestListTemplateAliases :: ListTemplateAliases -> TestTree
+requestListTemplateAliases =
+  req
+    "ListTemplateAliases"
+    "fixture/ListTemplateAliases.yaml"
+
+requestListTemplateVersions :: ListTemplateVersions -> TestTree
+requestListTemplateVersions =
+  req
+    "ListTemplateVersions"
+    "fixture/ListTemplateVersions.yaml"
+
+requestListTemplates :: ListTemplates -> TestTree
+requestListTemplates =
+  req
+    "ListTemplates"
+    "fixture/ListTemplates.yaml"
+
+requestListThemeAliases :: ListThemeAliases -> TestTree
+requestListThemeAliases =
+  req
+    "ListThemeAliases"
+    "fixture/ListThemeAliases.yaml"
+
+requestListThemeVersions :: ListThemeVersions -> TestTree
+requestListThemeVersions =
+  req
+    "ListThemeVersions"
+    "fixture/ListThemeVersions.yaml"
+
+requestListThemes :: ListThemes -> TestTree
+requestListThemes =
+  req
+    "ListThemes"
+    "fixture/ListThemes.yaml"
+
+requestListUserGroups :: ListUserGroups -> TestTree
+requestListUserGroups =
+  req
+    "ListUserGroups"
+    "fixture/ListUserGroups.yaml"
+
+requestListUsers :: ListUsers -> TestTree
+requestListUsers =
+  req
+    "ListUsers"
+    "fixture/ListUsers.yaml"
+
+requestRegisterUser :: RegisterUser -> TestTree
+requestRegisterUser =
+  req
+    "RegisterUser"
+    "fixture/RegisterUser.yaml"
+
+requestRestoreAnalysis :: RestoreAnalysis -> TestTree
+requestRestoreAnalysis =
+  req
+    "RestoreAnalysis"
+    "fixture/RestoreAnalysis.yaml"
+
+requestSearchAnalyses :: SearchAnalyses -> TestTree
+requestSearchAnalyses =
+  req
+    "SearchAnalyses"
+    "fixture/SearchAnalyses.yaml"
+
+requestSearchDashboards :: SearchDashboards -> TestTree
+requestSearchDashboards =
+  req
+    "SearchDashboards"
+    "fixture/SearchDashboards.yaml"
+
+requestSearchDataSets :: SearchDataSets -> TestTree
+requestSearchDataSets =
+  req
+    "SearchDataSets"
+    "fixture/SearchDataSets.yaml"
+
+requestSearchDataSources :: SearchDataSources -> TestTree
+requestSearchDataSources =
+  req
+    "SearchDataSources"
+    "fixture/SearchDataSources.yaml"
+
+requestSearchFolders :: SearchFolders -> TestTree
+requestSearchFolders =
+  req
+    "SearchFolders"
+    "fixture/SearchFolders.yaml"
+
+requestSearchGroups :: SearchGroups -> TestTree
+requestSearchGroups =
+  req
+    "SearchGroups"
+    "fixture/SearchGroups.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateAccountCustomization :: UpdateAccountCustomization -> TestTree
+requestUpdateAccountCustomization =
+  req
+    "UpdateAccountCustomization"
+    "fixture/UpdateAccountCustomization.yaml"
+
+requestUpdateAccountSettings :: UpdateAccountSettings -> TestTree
+requestUpdateAccountSettings =
+  req
+    "UpdateAccountSettings"
+    "fixture/UpdateAccountSettings.yaml"
+
+requestUpdateAnalysis :: UpdateAnalysis -> TestTree
+requestUpdateAnalysis =
+  req
+    "UpdateAnalysis"
+    "fixture/UpdateAnalysis.yaml"
+
+requestUpdateAnalysisPermissions :: UpdateAnalysisPermissions -> TestTree
+requestUpdateAnalysisPermissions =
+  req
+    "UpdateAnalysisPermissions"
+    "fixture/UpdateAnalysisPermissions.yaml"
+
+requestUpdateDashboard :: UpdateDashboard -> TestTree
+requestUpdateDashboard =
+  req
+    "UpdateDashboard"
+    "fixture/UpdateDashboard.yaml"
+
+requestUpdateDashboardPermissions :: UpdateDashboardPermissions -> TestTree
+requestUpdateDashboardPermissions =
+  req
+    "UpdateDashboardPermissions"
+    "fixture/UpdateDashboardPermissions.yaml"
+
+requestUpdateDashboardPublishedVersion :: UpdateDashboardPublishedVersion -> TestTree
+requestUpdateDashboardPublishedVersion =
+  req
+    "UpdateDashboardPublishedVersion"
+    "fixture/UpdateDashboardPublishedVersion.yaml"
+
+requestUpdateDataSet :: UpdateDataSet -> TestTree
+requestUpdateDataSet =
+  req
+    "UpdateDataSet"
+    "fixture/UpdateDataSet.yaml"
+
+requestUpdateDataSetPermissions :: UpdateDataSetPermissions -> TestTree
+requestUpdateDataSetPermissions =
+  req
+    "UpdateDataSetPermissions"
+    "fixture/UpdateDataSetPermissions.yaml"
+
+requestUpdateDataSource :: UpdateDataSource -> TestTree
+requestUpdateDataSource =
+  req
+    "UpdateDataSource"
+    "fixture/UpdateDataSource.yaml"
+
+requestUpdateDataSourcePermissions :: UpdateDataSourcePermissions -> TestTree
+requestUpdateDataSourcePermissions =
+  req
+    "UpdateDataSourcePermissions"
+    "fixture/UpdateDataSourcePermissions.yaml"
+
+requestUpdateFolder :: UpdateFolder -> TestTree
+requestUpdateFolder =
+  req
+    "UpdateFolder"
+    "fixture/UpdateFolder.yaml"
+
+requestUpdateFolderPermissions :: UpdateFolderPermissions -> TestTree
+requestUpdateFolderPermissions =
+  req
+    "UpdateFolderPermissions"
+    "fixture/UpdateFolderPermissions.yaml"
+
+requestUpdateGroup :: UpdateGroup -> TestTree
+requestUpdateGroup =
+  req
+    "UpdateGroup"
+    "fixture/UpdateGroup.yaml"
+
+requestUpdateIAMPolicyAssignment :: UpdateIAMPolicyAssignment -> TestTree
+requestUpdateIAMPolicyAssignment =
+  req
+    "UpdateIAMPolicyAssignment"
+    "fixture/UpdateIAMPolicyAssignment.yaml"
+
+requestUpdateIpRestriction :: UpdateIpRestriction -> TestTree
+requestUpdateIpRestriction =
+  req
+    "UpdateIpRestriction"
+    "fixture/UpdateIpRestriction.yaml"
+
+requestUpdatePublicSharingSettings :: UpdatePublicSharingSettings -> TestTree
+requestUpdatePublicSharingSettings =
+  req
+    "UpdatePublicSharingSettings"
+    "fixture/UpdatePublicSharingSettings.yaml"
+
+requestUpdateTemplate :: UpdateTemplate -> TestTree
+requestUpdateTemplate =
+  req
+    "UpdateTemplate"
+    "fixture/UpdateTemplate.yaml"
+
+requestUpdateTemplateAlias :: UpdateTemplateAlias -> TestTree
+requestUpdateTemplateAlias =
+  req
+    "UpdateTemplateAlias"
+    "fixture/UpdateTemplateAlias.yaml"
+
+requestUpdateTemplatePermissions :: UpdateTemplatePermissions -> TestTree
+requestUpdateTemplatePermissions =
+  req
+    "UpdateTemplatePermissions"
+    "fixture/UpdateTemplatePermissions.yaml"
+
+requestUpdateTheme :: UpdateTheme -> TestTree
+requestUpdateTheme =
+  req
+    "UpdateTheme"
+    "fixture/UpdateTheme.yaml"
+
+requestUpdateThemeAlias :: UpdateThemeAlias -> TestTree
+requestUpdateThemeAlias =
+  req
+    "UpdateThemeAlias"
+    "fixture/UpdateThemeAlias.yaml"
+
+requestUpdateThemePermissions :: UpdateThemePermissions -> TestTree
+requestUpdateThemePermissions =
+  req
+    "UpdateThemePermissions"
+    "fixture/UpdateThemePermissions.yaml"
+
+requestUpdateUser :: UpdateUser -> TestTree
+requestUpdateUser =
+  req
+    "UpdateUser"
+    "fixture/UpdateUser.yaml"
+
+-- Responses
+
+responseCancelIngestion :: CancelIngestionResponse -> TestTree
+responseCancelIngestion =
+  res
+    "CancelIngestionResponse"
+    "fixture/CancelIngestionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CancelIngestion)
+
+responseCreateAccountCustomization :: CreateAccountCustomizationResponse -> TestTree
+responseCreateAccountCustomization =
+  res
+    "CreateAccountCustomizationResponse"
+    "fixture/CreateAccountCustomizationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAccountCustomization)
+
+responseCreateAccountSubscription :: CreateAccountSubscriptionResponse -> TestTree
+responseCreateAccountSubscription =
+  res
+    "CreateAccountSubscriptionResponse"
+    "fixture/CreateAccountSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAccountSubscription)
+
+responseCreateAnalysis :: CreateAnalysisResponse -> TestTree
+responseCreateAnalysis =
+  res
+    "CreateAnalysisResponse"
+    "fixture/CreateAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAnalysis)
+
+responseCreateDashboard :: CreateDashboardResponse -> TestTree
+responseCreateDashboard =
+  res
+    "CreateDashboardResponse"
+    "fixture/CreateDashboardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDashboard)
+
+responseCreateDataSet :: CreateDataSetResponse -> TestTree
+responseCreateDataSet =
+  res
+    "CreateDataSetResponse"
+    "fixture/CreateDataSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDataSet)
+
+responseCreateDataSource :: CreateDataSourceResponse -> TestTree
+responseCreateDataSource =
+  res
+    "CreateDataSourceResponse"
+    "fixture/CreateDataSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDataSource)
+
+responseCreateFolder :: CreateFolderResponse -> TestTree
+responseCreateFolder =
+  res
+    "CreateFolderResponse"
+    "fixture/CreateFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFolder)
+
+responseCreateFolderMembership :: CreateFolderMembershipResponse -> TestTree
+responseCreateFolderMembership =
+  res
+    "CreateFolderMembershipResponse"
+    "fixture/CreateFolderMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFolderMembership)
+
+responseCreateGroup :: CreateGroupResponse -> TestTree
+responseCreateGroup =
+  res
+    "CreateGroupResponse"
+    "fixture/CreateGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateGroup)
+
+responseCreateGroupMembership :: CreateGroupMembershipResponse -> TestTree
+responseCreateGroupMembership =
+  res
+    "CreateGroupMembershipResponse"
+    "fixture/CreateGroupMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateGroupMembership)
+
+responseCreateIAMPolicyAssignment :: CreateIAMPolicyAssignmentResponse -> TestTree
+responseCreateIAMPolicyAssignment =
+  res
+    "CreateIAMPolicyAssignmentResponse"
+    "fixture/CreateIAMPolicyAssignmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateIAMPolicyAssignment)
+
+responseCreateIngestion :: CreateIngestionResponse -> TestTree
+responseCreateIngestion =
+  res
+    "CreateIngestionResponse"
+    "fixture/CreateIngestionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateIngestion)
+
+responseCreateNamespace :: CreateNamespaceResponse -> TestTree
+responseCreateNamespace =
+  res
+    "CreateNamespaceResponse"
+    "fixture/CreateNamespaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateNamespace)
+
+responseCreateTemplate :: CreateTemplateResponse -> TestTree
+responseCreateTemplate =
+  res
+    "CreateTemplateResponse"
+    "fixture/CreateTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTemplate)
+
+responseCreateTemplateAlias :: CreateTemplateAliasResponse -> TestTree
+responseCreateTemplateAlias =
+  res
+    "CreateTemplateAliasResponse"
+    "fixture/CreateTemplateAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTemplateAlias)
+
+responseCreateTheme :: CreateThemeResponse -> TestTree
+responseCreateTheme =
+  res
+    "CreateThemeResponse"
+    "fixture/CreateThemeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTheme)
+
+responseCreateThemeAlias :: CreateThemeAliasResponse -> TestTree
+responseCreateThemeAlias =
+  res
+    "CreateThemeAliasResponse"
+    "fixture/CreateThemeAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateThemeAlias)
+
+responseDeleteAccountCustomization :: DeleteAccountCustomizationResponse -> TestTree
+responseDeleteAccountCustomization =
+  res
+    "DeleteAccountCustomizationResponse"
+    "fixture/DeleteAccountCustomizationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAccountCustomization)
+
+responseDeleteAccountSubscription :: DeleteAccountSubscriptionResponse -> TestTree
+responseDeleteAccountSubscription =
+  res
+    "DeleteAccountSubscriptionResponse"
+    "fixture/DeleteAccountSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAccountSubscription)
+
+responseDeleteAnalysis :: DeleteAnalysisResponse -> TestTree
+responseDeleteAnalysis =
+  res
+    "DeleteAnalysisResponse"
+    "fixture/DeleteAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAnalysis)
+
+responseDeleteDashboard :: DeleteDashboardResponse -> TestTree
+responseDeleteDashboard =
+  res
+    "DeleteDashboardResponse"
+    "fixture/DeleteDashboardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDashboard)
+
+responseDeleteDataSet :: DeleteDataSetResponse -> TestTree
+responseDeleteDataSet =
+  res
+    "DeleteDataSetResponse"
+    "fixture/DeleteDataSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDataSet)
+
+responseDeleteDataSource :: DeleteDataSourceResponse -> TestTree
+responseDeleteDataSource =
+  res
+    "DeleteDataSourceResponse"
+    "fixture/DeleteDataSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDataSource)
+
+responseDeleteFolder :: DeleteFolderResponse -> TestTree
+responseDeleteFolder =
+  res
+    "DeleteFolderResponse"
+    "fixture/DeleteFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFolder)
+
+responseDeleteFolderMembership :: DeleteFolderMembershipResponse -> TestTree
+responseDeleteFolderMembership =
+  res
+    "DeleteFolderMembershipResponse"
+    "fixture/DeleteFolderMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFolderMembership)
+
+responseDeleteGroup :: DeleteGroupResponse -> TestTree
+responseDeleteGroup =
+  res
+    "DeleteGroupResponse"
+    "fixture/DeleteGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteGroup)
+
+responseDeleteGroupMembership :: DeleteGroupMembershipResponse -> TestTree
+responseDeleteGroupMembership =
+  res
+    "DeleteGroupMembershipResponse"
+    "fixture/DeleteGroupMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteGroupMembership)
+
+responseDeleteIAMPolicyAssignment :: DeleteIAMPolicyAssignmentResponse -> TestTree
+responseDeleteIAMPolicyAssignment =
+  res
+    "DeleteIAMPolicyAssignmentResponse"
+    "fixture/DeleteIAMPolicyAssignmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteIAMPolicyAssignment)
+
+responseDeleteNamespace :: DeleteNamespaceResponse -> TestTree
+responseDeleteNamespace =
+  res
+    "DeleteNamespaceResponse"
+    "fixture/DeleteNamespaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteNamespace)
+
+responseDeleteTemplate :: DeleteTemplateResponse -> TestTree
+responseDeleteTemplate =
+  res
+    "DeleteTemplateResponse"
+    "fixture/DeleteTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTemplate)
+
+responseDeleteTemplateAlias :: DeleteTemplateAliasResponse -> TestTree
+responseDeleteTemplateAlias =
+  res
+    "DeleteTemplateAliasResponse"
+    "fixture/DeleteTemplateAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTemplateAlias)
+
+responseDeleteTheme :: DeleteThemeResponse -> TestTree
+responseDeleteTheme =
+  res
+    "DeleteThemeResponse"
+    "fixture/DeleteThemeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTheme)
+
+responseDeleteThemeAlias :: DeleteThemeAliasResponse -> TestTree
+responseDeleteThemeAlias =
+  res
+    "DeleteThemeAliasResponse"
+    "fixture/DeleteThemeAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteThemeAlias)
+
+responseDeleteUser :: DeleteUserResponse -> TestTree
+responseDeleteUser =
+  res
+    "DeleteUserResponse"
+    "fixture/DeleteUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteUser)
+
+responseDeleteUserByPrincipalId :: DeleteUserByPrincipalIdResponse -> TestTree
+responseDeleteUserByPrincipalId =
+  res
+    "DeleteUserByPrincipalIdResponse"
+    "fixture/DeleteUserByPrincipalIdResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteUserByPrincipalId)
+
+responseDescribeAccountCustomization :: DescribeAccountCustomizationResponse -> TestTree
+responseDescribeAccountCustomization =
+  res
+    "DescribeAccountCustomizationResponse"
+    "fixture/DescribeAccountCustomizationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAccountCustomization)
+
+responseDescribeAccountSettings :: DescribeAccountSettingsResponse -> TestTree
+responseDescribeAccountSettings =
+  res
+    "DescribeAccountSettingsResponse"
+    "fixture/DescribeAccountSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAccountSettings)
+
+responseDescribeAccountSubscription :: DescribeAccountSubscriptionResponse -> TestTree
+responseDescribeAccountSubscription =
+  res
+    "DescribeAccountSubscriptionResponse"
+    "fixture/DescribeAccountSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAccountSubscription)
+
+responseDescribeAnalysis :: DescribeAnalysisResponse -> TestTree
+responseDescribeAnalysis =
+  res
+    "DescribeAnalysisResponse"
+    "fixture/DescribeAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAnalysis)
+
+responseDescribeAnalysisDefinition :: DescribeAnalysisDefinitionResponse -> TestTree
+responseDescribeAnalysisDefinition =
+  res
+    "DescribeAnalysisDefinitionResponse"
+    "fixture/DescribeAnalysisDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAnalysisDefinition)
+
+responseDescribeAnalysisPermissions :: DescribeAnalysisPermissionsResponse -> TestTree
+responseDescribeAnalysisPermissions =
+  res
+    "DescribeAnalysisPermissionsResponse"
+    "fixture/DescribeAnalysisPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAnalysisPermissions)
+
+responseDescribeDashboard :: DescribeDashboardResponse -> TestTree
+responseDescribeDashboard =
+  res
+    "DescribeDashboardResponse"
+    "fixture/DescribeDashboardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDashboard)
+
+responseDescribeDashboardDefinition :: DescribeDashboardDefinitionResponse -> TestTree
+responseDescribeDashboardDefinition =
+  res
+    "DescribeDashboardDefinitionResponse"
+    "fixture/DescribeDashboardDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDashboardDefinition)
+
+responseDescribeDashboardPermissions :: DescribeDashboardPermissionsResponse -> TestTree
+responseDescribeDashboardPermissions =
+  res
+    "DescribeDashboardPermissionsResponse"
+    "fixture/DescribeDashboardPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDashboardPermissions)
+
+responseDescribeDataSet :: DescribeDataSetResponse -> TestTree
+responseDescribeDataSet =
+  res
+    "DescribeDataSetResponse"
+    "fixture/DescribeDataSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataSet)
+
+responseDescribeDataSetPermissions :: DescribeDataSetPermissionsResponse -> TestTree
+responseDescribeDataSetPermissions =
+  res
+    "DescribeDataSetPermissionsResponse"
+    "fixture/DescribeDataSetPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataSetPermissions)
+
+responseDescribeDataSource :: DescribeDataSourceResponse -> TestTree
+responseDescribeDataSource =
+  res
+    "DescribeDataSourceResponse"
+    "fixture/DescribeDataSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataSource)
+
+responseDescribeDataSourcePermissions :: DescribeDataSourcePermissionsResponse -> TestTree
+responseDescribeDataSourcePermissions =
+  res
+    "DescribeDataSourcePermissionsResponse"
+    "fixture/DescribeDataSourcePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataSourcePermissions)
+
+responseDescribeFolder :: DescribeFolderResponse -> TestTree
+responseDescribeFolder =
+  res
+    "DescribeFolderResponse"
+    "fixture/DescribeFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFolder)
+
+responseDescribeFolderPermissions :: DescribeFolderPermissionsResponse -> TestTree
+responseDescribeFolderPermissions =
+  res
+    "DescribeFolderPermissionsResponse"
+    "fixture/DescribeFolderPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFolderPermissions)
+
+responseDescribeFolderResolvedPermissions :: DescribeFolderResolvedPermissionsResponse -> TestTree
+responseDescribeFolderResolvedPermissions =
+  res
+    "DescribeFolderResolvedPermissionsResponse"
+    "fixture/DescribeFolderResolvedPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFolderResolvedPermissions)
+
+responseDescribeGroup :: DescribeGroupResponse -> TestTree
+responseDescribeGroup =
+  res
+    "DescribeGroupResponse"
+    "fixture/DescribeGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeGroup)
+
+responseDescribeGroupMembership :: DescribeGroupMembershipResponse -> TestTree
+responseDescribeGroupMembership =
+  res
+    "DescribeGroupMembershipResponse"
+    "fixture/DescribeGroupMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeGroupMembership)
+
+responseDescribeIAMPolicyAssignment :: DescribeIAMPolicyAssignmentResponse -> TestTree
+responseDescribeIAMPolicyAssignment =
+  res
+    "DescribeIAMPolicyAssignmentResponse"
+    "fixture/DescribeIAMPolicyAssignmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeIAMPolicyAssignment)
+
+responseDescribeIngestion :: DescribeIngestionResponse -> TestTree
+responseDescribeIngestion =
+  res
+    "DescribeIngestionResponse"
+    "fixture/DescribeIngestionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeIngestion)
+
+responseDescribeIpRestriction :: DescribeIpRestrictionResponse -> TestTree
+responseDescribeIpRestriction =
+  res
+    "DescribeIpRestrictionResponse"
+    "fixture/DescribeIpRestrictionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeIpRestriction)
+
+responseDescribeNamespace :: DescribeNamespaceResponse -> TestTree
+responseDescribeNamespace =
+  res
+    "DescribeNamespaceResponse"
+    "fixture/DescribeNamespaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeNamespace)
+
+responseDescribeTemplate :: DescribeTemplateResponse -> TestTree
+responseDescribeTemplate =
+  res
+    "DescribeTemplateResponse"
+    "fixture/DescribeTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTemplate)
+
+responseDescribeTemplateAlias :: DescribeTemplateAliasResponse -> TestTree
+responseDescribeTemplateAlias =
+  res
+    "DescribeTemplateAliasResponse"
+    "fixture/DescribeTemplateAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTemplateAlias)
+
+responseDescribeTemplateDefinition :: DescribeTemplateDefinitionResponse -> TestTree
+responseDescribeTemplateDefinition =
+  res
+    "DescribeTemplateDefinitionResponse"
+    "fixture/DescribeTemplateDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTemplateDefinition)
+
+responseDescribeTemplatePermissions :: DescribeTemplatePermissionsResponse -> TestTree
+responseDescribeTemplatePermissions =
+  res
+    "DescribeTemplatePermissionsResponse"
+    "fixture/DescribeTemplatePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTemplatePermissions)
+
+responseDescribeTheme :: DescribeThemeResponse -> TestTree
+responseDescribeTheme =
+  res
+    "DescribeThemeResponse"
+    "fixture/DescribeThemeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTheme)
+
+responseDescribeThemeAlias :: DescribeThemeAliasResponse -> TestTree
+responseDescribeThemeAlias =
+  res
+    "DescribeThemeAliasResponse"
+    "fixture/DescribeThemeAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeThemeAlias)
+
+responseDescribeThemePermissions :: DescribeThemePermissionsResponse -> TestTree
+responseDescribeThemePermissions =
+  res
+    "DescribeThemePermissionsResponse"
+    "fixture/DescribeThemePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeThemePermissions)
+
+responseDescribeUser :: DescribeUserResponse -> TestTree
+responseDescribeUser =
+  res
+    "DescribeUserResponse"
+    "fixture/DescribeUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeUser)
+
+responseGenerateEmbedUrlForAnonymousUser :: GenerateEmbedUrlForAnonymousUserResponse -> TestTree
+responseGenerateEmbedUrlForAnonymousUser =
+  res
+    "GenerateEmbedUrlForAnonymousUserResponse"
+    "fixture/GenerateEmbedUrlForAnonymousUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GenerateEmbedUrlForAnonymousUser)
+
+responseGenerateEmbedUrlForRegisteredUser :: GenerateEmbedUrlForRegisteredUserResponse -> TestTree
+responseGenerateEmbedUrlForRegisteredUser =
+  res
+    "GenerateEmbedUrlForRegisteredUserResponse"
+    "fixture/GenerateEmbedUrlForRegisteredUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GenerateEmbedUrlForRegisteredUser)
+
+responseGetDashboardEmbedUrl :: GetDashboardEmbedUrlResponse -> TestTree
+responseGetDashboardEmbedUrl =
+  res
+    "GetDashboardEmbedUrlResponse"
+    "fixture/GetDashboardEmbedUrlResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDashboardEmbedUrl)
+
+responseGetSessionEmbedUrl :: GetSessionEmbedUrlResponse -> TestTree
+responseGetSessionEmbedUrl =
+  res
+    "GetSessionEmbedUrlResponse"
+    "fixture/GetSessionEmbedUrlResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSessionEmbedUrl)
+
+responseListAnalyses :: ListAnalysesResponse -> TestTree
+responseListAnalyses =
+  res
+    "ListAnalysesResponse"
+    "fixture/ListAnalysesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAnalyses)
+
+responseListDashboardVersions :: ListDashboardVersionsResponse -> TestTree
+responseListDashboardVersions =
+  res
+    "ListDashboardVersionsResponse"
+    "fixture/ListDashboardVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDashboardVersions)
+
+responseListDashboards :: ListDashboardsResponse -> TestTree
+responseListDashboards =
+  res
+    "ListDashboardsResponse"
+    "fixture/ListDashboardsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDashboards)
+
+responseListDataSets :: ListDataSetsResponse -> TestTree
+responseListDataSets =
+  res
+    "ListDataSetsResponse"
+    "fixture/ListDataSetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDataSets)
+
+responseListDataSources :: ListDataSourcesResponse -> TestTree
+responseListDataSources =
+  res
+    "ListDataSourcesResponse"
+    "fixture/ListDataSourcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDataSources)
+
+responseListFolderMembers :: ListFolderMembersResponse -> TestTree
+responseListFolderMembers =
+  res
+    "ListFolderMembersResponse"
+    "fixture/ListFolderMembersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFolderMembers)
+
+responseListFolders :: ListFoldersResponse -> TestTree
+responseListFolders =
+  res
+    "ListFoldersResponse"
+    "fixture/ListFoldersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFolders)
+
+responseListGroupMemberships :: ListGroupMembershipsResponse -> TestTree
+responseListGroupMemberships =
+  res
+    "ListGroupMembershipsResponse"
+    "fixture/ListGroupMembershipsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListGroupMemberships)
+
+responseListGroups :: ListGroupsResponse -> TestTree
+responseListGroups =
+  res
+    "ListGroupsResponse"
+    "fixture/ListGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListGroups)
+
+responseListIAMPolicyAssignments :: ListIAMPolicyAssignmentsResponse -> TestTree
+responseListIAMPolicyAssignments =
+  res
+    "ListIAMPolicyAssignmentsResponse"
+    "fixture/ListIAMPolicyAssignmentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIAMPolicyAssignments)
+
+responseListIAMPolicyAssignmentsForUser :: ListIAMPolicyAssignmentsForUserResponse -> TestTree
+responseListIAMPolicyAssignmentsForUser =
+  res
+    "ListIAMPolicyAssignmentsForUserResponse"
+    "fixture/ListIAMPolicyAssignmentsForUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIAMPolicyAssignmentsForUser)
+
+responseListIngestions :: ListIngestionsResponse -> TestTree
+responseListIngestions =
+  res
+    "ListIngestionsResponse"
+    "fixture/ListIngestionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIngestions)
+
+responseListNamespaces :: ListNamespacesResponse -> TestTree
+responseListNamespaces =
+  res
+    "ListNamespacesResponse"
+    "fixture/ListNamespacesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNamespaces)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseListTemplateAliases :: ListTemplateAliasesResponse -> TestTree
+responseListTemplateAliases =
+  res
+    "ListTemplateAliasesResponse"
+    "fixture/ListTemplateAliasesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTemplateAliases)
+
+responseListTemplateVersions :: ListTemplateVersionsResponse -> TestTree
+responseListTemplateVersions =
+  res
+    "ListTemplateVersionsResponse"
+    "fixture/ListTemplateVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTemplateVersions)
+
+responseListTemplates :: ListTemplatesResponse -> TestTree
+responseListTemplates =
+  res
+    "ListTemplatesResponse"
+    "fixture/ListTemplatesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTemplates)
+
+responseListThemeAliases :: ListThemeAliasesResponse -> TestTree
+responseListThemeAliases =
+  res
+    "ListThemeAliasesResponse"
+    "fixture/ListThemeAliasesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListThemeAliases)
+
+responseListThemeVersions :: ListThemeVersionsResponse -> TestTree
+responseListThemeVersions =
+  res
+    "ListThemeVersionsResponse"
+    "fixture/ListThemeVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListThemeVersions)
+
+responseListThemes :: ListThemesResponse -> TestTree
+responseListThemes =
+  res
+    "ListThemesResponse"
+    "fixture/ListThemesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListThemes)
+
+responseListUserGroups :: ListUserGroupsResponse -> TestTree
+responseListUserGroups =
+  res
+    "ListUserGroupsResponse"
+    "fixture/ListUserGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListUserGroups)
+
+responseListUsers :: ListUsersResponse -> TestTree
+responseListUsers =
+  res
+    "ListUsersResponse"
+    "fixture/ListUsersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListUsers)
+
+responseRegisterUser :: RegisterUserResponse -> TestTree
+responseRegisterUser =
+  res
+    "RegisterUserResponse"
+    "fixture/RegisterUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegisterUser)
+
+responseRestoreAnalysis :: RestoreAnalysisResponse -> TestTree
+responseRestoreAnalysis =
+  res
+    "RestoreAnalysisResponse"
+    "fixture/RestoreAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestoreAnalysis)
+
+responseSearchAnalyses :: SearchAnalysesResponse -> TestTree
+responseSearchAnalyses =
+  res
+    "SearchAnalysesResponse"
+    "fixture/SearchAnalysesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchAnalyses)
+
+responseSearchDashboards :: SearchDashboardsResponse -> TestTree
+responseSearchDashboards =
+  res
+    "SearchDashboardsResponse"
+    "fixture/SearchDashboardsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchDashboards)
+
+responseSearchDataSets :: SearchDataSetsResponse -> TestTree
+responseSearchDataSets =
+  res
+    "SearchDataSetsResponse"
+    "fixture/SearchDataSetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchDataSets)
+
+responseSearchDataSources :: SearchDataSourcesResponse -> TestTree
+responseSearchDataSources =
+  res
+    "SearchDataSourcesResponse"
+    "fixture/SearchDataSourcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchDataSources)
+
+responseSearchFolders :: SearchFoldersResponse -> TestTree
+responseSearchFolders =
+  res
+    "SearchFoldersResponse"
+    "fixture/SearchFoldersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchFolders)
+
+responseSearchGroups :: SearchGroupsResponse -> TestTree
+responseSearchGroups =
+  res
+    "SearchGroupsResponse"
+    "fixture/SearchGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchGroups)
+
+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)
+
+responseUpdateAccountCustomization :: UpdateAccountCustomizationResponse -> TestTree
+responseUpdateAccountCustomization =
+  res
+    "UpdateAccountCustomizationResponse"
+    "fixture/UpdateAccountCustomizationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAccountCustomization)
+
+responseUpdateAccountSettings :: UpdateAccountSettingsResponse -> TestTree
+responseUpdateAccountSettings =
+  res
+    "UpdateAccountSettingsResponse"
+    "fixture/UpdateAccountSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAccountSettings)
+
+responseUpdateAnalysis :: UpdateAnalysisResponse -> TestTree
+responseUpdateAnalysis =
+  res
+    "UpdateAnalysisResponse"
+    "fixture/UpdateAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAnalysis)
+
+responseUpdateAnalysisPermissions :: UpdateAnalysisPermissionsResponse -> TestTree
+responseUpdateAnalysisPermissions =
+  res
+    "UpdateAnalysisPermissionsResponse"
+    "fixture/UpdateAnalysisPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAnalysisPermissions)
+
+responseUpdateDashboard :: UpdateDashboardResponse -> TestTree
+responseUpdateDashboard =
+  res
+    "UpdateDashboardResponse"
+    "fixture/UpdateDashboardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDashboard)
+
+responseUpdateDashboardPermissions :: UpdateDashboardPermissionsResponse -> TestTree
+responseUpdateDashboardPermissions =
+  res
+    "UpdateDashboardPermissionsResponse"
+    "fixture/UpdateDashboardPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDashboardPermissions)
+
+responseUpdateDashboardPublishedVersion :: UpdateDashboardPublishedVersionResponse -> TestTree
+responseUpdateDashboardPublishedVersion =
+  res
+    "UpdateDashboardPublishedVersionResponse"
+    "fixture/UpdateDashboardPublishedVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDashboardPublishedVersion)
+
+responseUpdateDataSet :: UpdateDataSetResponse -> TestTree
+responseUpdateDataSet =
+  res
+    "UpdateDataSetResponse"
+    "fixture/UpdateDataSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDataSet)
+
+responseUpdateDataSetPermissions :: UpdateDataSetPermissionsResponse -> TestTree
+responseUpdateDataSetPermissions =
+  res
+    "UpdateDataSetPermissionsResponse"
+    "fixture/UpdateDataSetPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDataSetPermissions)
+
+responseUpdateDataSource :: UpdateDataSourceResponse -> TestTree
+responseUpdateDataSource =
+  res
+    "UpdateDataSourceResponse"
+    "fixture/UpdateDataSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDataSource)
+
+responseUpdateDataSourcePermissions :: UpdateDataSourcePermissionsResponse -> TestTree
+responseUpdateDataSourcePermissions =
+  res
+    "UpdateDataSourcePermissionsResponse"
+    "fixture/UpdateDataSourcePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDataSourcePermissions)
+
+responseUpdateFolder :: UpdateFolderResponse -> TestTree
+responseUpdateFolder =
+  res
+    "UpdateFolderResponse"
+    "fixture/UpdateFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFolder)
+
+responseUpdateFolderPermissions :: UpdateFolderPermissionsResponse -> TestTree
+responseUpdateFolderPermissions =
+  res
+    "UpdateFolderPermissionsResponse"
+    "fixture/UpdateFolderPermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFolderPermissions)
+
+responseUpdateGroup :: UpdateGroupResponse -> TestTree
+responseUpdateGroup =
+  res
+    "UpdateGroupResponse"
+    "fixture/UpdateGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateGroup)
+
+responseUpdateIAMPolicyAssignment :: UpdateIAMPolicyAssignmentResponse -> TestTree
+responseUpdateIAMPolicyAssignment =
+  res
+    "UpdateIAMPolicyAssignmentResponse"
+    "fixture/UpdateIAMPolicyAssignmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateIAMPolicyAssignment)
+
+responseUpdateIpRestriction :: UpdateIpRestrictionResponse -> TestTree
+responseUpdateIpRestriction =
+  res
+    "UpdateIpRestrictionResponse"
+    "fixture/UpdateIpRestrictionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateIpRestriction)
+
+responseUpdatePublicSharingSettings :: UpdatePublicSharingSettingsResponse -> TestTree
+responseUpdatePublicSharingSettings =
+  res
+    "UpdatePublicSharingSettingsResponse"
+    "fixture/UpdatePublicSharingSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePublicSharingSettings)
+
+responseUpdateTemplate :: UpdateTemplateResponse -> TestTree
+responseUpdateTemplate =
+  res
+    "UpdateTemplateResponse"
+    "fixture/UpdateTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTemplate)
+
+responseUpdateTemplateAlias :: UpdateTemplateAliasResponse -> TestTree
+responseUpdateTemplateAlias =
+  res
+    "UpdateTemplateAliasResponse"
+    "fixture/UpdateTemplateAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTemplateAlias)
+
+responseUpdateTemplatePermissions :: UpdateTemplatePermissionsResponse -> TestTree
+responseUpdateTemplatePermissions =
+  res
+    "UpdateTemplatePermissionsResponse"
+    "fixture/UpdateTemplatePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTemplatePermissions)
+
+responseUpdateTheme :: UpdateThemeResponse -> TestTree
+responseUpdateTheme =
+  res
+    "UpdateThemeResponse"
+    "fixture/UpdateThemeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTheme)
+
+responseUpdateThemeAlias :: UpdateThemeAliasResponse -> TestTree
+responseUpdateThemeAlias =
+  res
+    "UpdateThemeAliasResponse"
+    "fixture/UpdateThemeAliasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateThemeAlias)
+
+responseUpdateThemePermissions :: UpdateThemePermissionsResponse -> TestTree
+responseUpdateThemePermissions =
+  res
+    "UpdateThemePermissionsResponse"
+    "fixture/UpdateThemePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateThemePermissions)
+
+responseUpdateUser :: UpdateUserResponse -> TestTree
+responseUpdateUser =
+  res
+    "UpdateUserResponse"
+    "fixture/UpdateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateUser)
diff --git a/test/Test/Amazonka/QuickSight.hs b/test/Test/Amazonka/QuickSight.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/QuickSight.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.QuickSight
+-- 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.QuickSight
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/QuickSight/Internal.hs b/test/Test/Amazonka/QuickSight/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/QuickSight/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.QuickSight.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.QuickSight.Internal where
