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 FSx SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2018-03-01@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-fsx)
+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.FSx](http://hackage.haskell.org/package/amazonka-fsx/docs/Amazonka-FSx.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-fsx` 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-fsx.cabal b/amazonka-fsx.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-fsx.cabal
@@ -0,0 +1,264 @@
+cabal-version:      2.2
+name:               amazonka-fsx
+version:            2.0
+synopsis:           Amazon FSx 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-03-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.FSx.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.FSx" 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-fsx
+
+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.FSx
+    Amazonka.FSx.AssociateFileSystemAliases
+    Amazonka.FSx.CancelDataRepositoryTask
+    Amazonka.FSx.CopyBackup
+    Amazonka.FSx.CreateBackup
+    Amazonka.FSx.CreateDataRepositoryAssociation
+    Amazonka.FSx.CreateDataRepositoryTask
+    Amazonka.FSx.CreateFileCache
+    Amazonka.FSx.CreateFileSystem
+    Amazonka.FSx.CreateFileSystemFromBackup
+    Amazonka.FSx.CreateSnapshot
+    Amazonka.FSx.CreateStorageVirtualMachine
+    Amazonka.FSx.CreateVolume
+    Amazonka.FSx.CreateVolumeFromBackup
+    Amazonka.FSx.DeleteBackup
+    Amazonka.FSx.DeleteDataRepositoryAssociation
+    Amazonka.FSx.DeleteFileCache
+    Amazonka.FSx.DeleteFileSystem
+    Amazonka.FSx.DeleteSnapshot
+    Amazonka.FSx.DeleteStorageVirtualMachine
+    Amazonka.FSx.DeleteVolume
+    Amazonka.FSx.DescribeBackups
+    Amazonka.FSx.DescribeDataRepositoryAssociations
+    Amazonka.FSx.DescribeDataRepositoryTasks
+    Amazonka.FSx.DescribeFileCaches
+    Amazonka.FSx.DescribeFileSystemAliases
+    Amazonka.FSx.DescribeFileSystems
+    Amazonka.FSx.DescribeSnapshots
+    Amazonka.FSx.DescribeStorageVirtualMachines
+    Amazonka.FSx.DescribeVolumes
+    Amazonka.FSx.DisassociateFileSystemAliases
+    Amazonka.FSx.Lens
+    Amazonka.FSx.ListTagsForResource
+    Amazonka.FSx.ReleaseFileSystemNfsV3Locks
+    Amazonka.FSx.RestoreVolumeFromSnapshot
+    Amazonka.FSx.TagResource
+    Amazonka.FSx.Types
+    Amazonka.FSx.Types.ActiveDirectoryBackupAttributes
+    Amazonka.FSx.Types.AdministrativeAction
+    Amazonka.FSx.Types.AdministrativeActionFailureDetails
+    Amazonka.FSx.Types.AdministrativeActionType
+    Amazonka.FSx.Types.Alias
+    Amazonka.FSx.Types.AliasLifecycle
+    Amazonka.FSx.Types.AutoExportPolicy
+    Amazonka.FSx.Types.AutoImportPolicy
+    Amazonka.FSx.Types.AutoImportPolicyType
+    Amazonka.FSx.Types.Backup
+    Amazonka.FSx.Types.BackupFailureDetails
+    Amazonka.FSx.Types.BackupLifecycle
+    Amazonka.FSx.Types.BackupType
+    Amazonka.FSx.Types.CompletionReport
+    Amazonka.FSx.Types.CreateFileCacheLustreConfiguration
+    Amazonka.FSx.Types.CreateFileSystemLustreConfiguration
+    Amazonka.FSx.Types.CreateFileSystemOntapConfiguration
+    Amazonka.FSx.Types.CreateFileSystemOpenZFSConfiguration
+    Amazonka.FSx.Types.CreateFileSystemWindowsConfiguration
+    Amazonka.FSx.Types.CreateOntapVolumeConfiguration
+    Amazonka.FSx.Types.CreateOpenZFSOriginSnapshotConfiguration
+    Amazonka.FSx.Types.CreateOpenZFSVolumeConfiguration
+    Amazonka.FSx.Types.CreateSvmActiveDirectoryConfiguration
+    Amazonka.FSx.Types.DataCompressionType
+    Amazonka.FSx.Types.DataRepositoryAssociation
+    Amazonka.FSx.Types.DataRepositoryConfiguration
+    Amazonka.FSx.Types.DataRepositoryFailureDetails
+    Amazonka.FSx.Types.DataRepositoryLifecycle
+    Amazonka.FSx.Types.DataRepositoryTask
+    Amazonka.FSx.Types.DataRepositoryTaskFailureDetails
+    Amazonka.FSx.Types.DataRepositoryTaskFilter
+    Amazonka.FSx.Types.DataRepositoryTaskFilterName
+    Amazonka.FSx.Types.DataRepositoryTaskLifecycle
+    Amazonka.FSx.Types.DataRepositoryTaskStatus
+    Amazonka.FSx.Types.DataRepositoryTaskType
+    Amazonka.FSx.Types.DeleteFileSystemLustreConfiguration
+    Amazonka.FSx.Types.DeleteFileSystemLustreResponse
+    Amazonka.FSx.Types.DeleteFileSystemOpenZFSConfiguration
+    Amazonka.FSx.Types.DeleteFileSystemOpenZFSOption
+    Amazonka.FSx.Types.DeleteFileSystemOpenZFSResponse
+    Amazonka.FSx.Types.DeleteFileSystemWindowsConfiguration
+    Amazonka.FSx.Types.DeleteFileSystemWindowsResponse
+    Amazonka.FSx.Types.DeleteOpenZFSVolumeOption
+    Amazonka.FSx.Types.DeleteVolumeOntapConfiguration
+    Amazonka.FSx.Types.DeleteVolumeOntapResponse
+    Amazonka.FSx.Types.DeleteVolumeOpenZFSConfiguration
+    Amazonka.FSx.Types.DiskIopsConfiguration
+    Amazonka.FSx.Types.DiskIopsConfigurationMode
+    Amazonka.FSx.Types.DriveCacheType
+    Amazonka.FSx.Types.EventType
+    Amazonka.FSx.Types.FileCache
+    Amazonka.FSx.Types.FileCacheCreating
+    Amazonka.FSx.Types.FileCacheDataRepositoryAssociation
+    Amazonka.FSx.Types.FileCacheFailureDetails
+    Amazonka.FSx.Types.FileCacheLifecycle
+    Amazonka.FSx.Types.FileCacheLustreConfiguration
+    Amazonka.FSx.Types.FileCacheLustreDeploymentType
+    Amazonka.FSx.Types.FileCacheLustreMetadataConfiguration
+    Amazonka.FSx.Types.FileCacheNFSConfiguration
+    Amazonka.FSx.Types.FileCacheType
+    Amazonka.FSx.Types.FileSystem
+    Amazonka.FSx.Types.FileSystemEndpoint
+    Amazonka.FSx.Types.FileSystemEndpoints
+    Amazonka.FSx.Types.FileSystemFailureDetails
+    Amazonka.FSx.Types.FileSystemLifecycle
+    Amazonka.FSx.Types.FileSystemMaintenanceOperation
+    Amazonka.FSx.Types.FileSystemType
+    Amazonka.FSx.Types.Filter
+    Amazonka.FSx.Types.FilterName
+    Amazonka.FSx.Types.FlexCacheEndpointType
+    Amazonka.FSx.Types.InputOntapVolumeType
+    Amazonka.FSx.Types.LifecycleTransitionReason
+    Amazonka.FSx.Types.LustreAccessAuditLogLevel
+    Amazonka.FSx.Types.LustreDeploymentType
+    Amazonka.FSx.Types.LustreFileSystemConfiguration
+    Amazonka.FSx.Types.LustreLogConfiguration
+    Amazonka.FSx.Types.LustreLogCreateConfiguration
+    Amazonka.FSx.Types.LustreRootSquashConfiguration
+    Amazonka.FSx.Types.NFSDataRepositoryConfiguration
+    Amazonka.FSx.Types.NfsVersion
+    Amazonka.FSx.Types.OntapDeploymentType
+    Amazonka.FSx.Types.OntapFileSystemConfiguration
+    Amazonka.FSx.Types.OntapVolumeConfiguration
+    Amazonka.FSx.Types.OntapVolumeType
+    Amazonka.FSx.Types.OpenZFSClientConfiguration
+    Amazonka.FSx.Types.OpenZFSCopyStrategy
+    Amazonka.FSx.Types.OpenZFSCreateRootVolumeConfiguration
+    Amazonka.FSx.Types.OpenZFSDataCompressionType
+    Amazonka.FSx.Types.OpenZFSDeploymentType
+    Amazonka.FSx.Types.OpenZFSFileSystemConfiguration
+    Amazonka.FSx.Types.OpenZFSNfsExport
+    Amazonka.FSx.Types.OpenZFSOriginSnapshotConfiguration
+    Amazonka.FSx.Types.OpenZFSQuotaType
+    Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+    Amazonka.FSx.Types.OpenZFSVolumeConfiguration
+    Amazonka.FSx.Types.ReportFormat
+    Amazonka.FSx.Types.ReportScope
+    Amazonka.FSx.Types.ResourceType
+    Amazonka.FSx.Types.RestoreOpenZFSVolumeOption
+    Amazonka.FSx.Types.S3DataRepositoryConfiguration
+    Amazonka.FSx.Types.SecurityStyle
+    Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes
+    Amazonka.FSx.Types.SelfManagedActiveDirectoryConfiguration
+    Amazonka.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates
+    Amazonka.FSx.Types.Snapshot
+    Amazonka.FSx.Types.SnapshotFilter
+    Amazonka.FSx.Types.SnapshotFilterName
+    Amazonka.FSx.Types.SnapshotLifecycle
+    Amazonka.FSx.Types.Status
+    Amazonka.FSx.Types.StorageType
+    Amazonka.FSx.Types.StorageVirtualMachine
+    Amazonka.FSx.Types.StorageVirtualMachineFilter
+    Amazonka.FSx.Types.StorageVirtualMachineFilterName
+    Amazonka.FSx.Types.StorageVirtualMachineLifecycle
+    Amazonka.FSx.Types.StorageVirtualMachineRootVolumeSecurityStyle
+    Amazonka.FSx.Types.StorageVirtualMachineSubtype
+    Amazonka.FSx.Types.SvmActiveDirectoryConfiguration
+    Amazonka.FSx.Types.SvmEndpoint
+    Amazonka.FSx.Types.SvmEndpoints
+    Amazonka.FSx.Types.Tag
+    Amazonka.FSx.Types.TieringPolicy
+    Amazonka.FSx.Types.TieringPolicyName
+    Amazonka.FSx.Types.UpdateFileCacheLustreConfiguration
+    Amazonka.FSx.Types.UpdateFileSystemLustreConfiguration
+    Amazonka.FSx.Types.UpdateFileSystemOntapConfiguration
+    Amazonka.FSx.Types.UpdateFileSystemOpenZFSConfiguration
+    Amazonka.FSx.Types.UpdateFileSystemWindowsConfiguration
+    Amazonka.FSx.Types.UpdateOntapVolumeConfiguration
+    Amazonka.FSx.Types.UpdateOpenZFSVolumeConfiguration
+    Amazonka.FSx.Types.UpdateSvmActiveDirectoryConfiguration
+    Amazonka.FSx.Types.Volume
+    Amazonka.FSx.Types.VolumeFilter
+    Amazonka.FSx.Types.VolumeFilterName
+    Amazonka.FSx.Types.VolumeLifecycle
+    Amazonka.FSx.Types.VolumeType
+    Amazonka.FSx.Types.WindowsAccessAuditLogLevel
+    Amazonka.FSx.Types.WindowsAuditLogConfiguration
+    Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
+    Amazonka.FSx.Types.WindowsDeploymentType
+    Amazonka.FSx.Types.WindowsFileSystemConfiguration
+    Amazonka.FSx.UntagResource
+    Amazonka.FSx.UpdateDataRepositoryAssociation
+    Amazonka.FSx.UpdateFileCache
+    Amazonka.FSx.UpdateFileSystem
+    Amazonka.FSx.UpdateSnapshot
+    Amazonka.FSx.UpdateStorageVirtualMachine
+    Amazonka.FSx.UpdateVolume
+    Amazonka.FSx.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-fsx-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.FSx
+    Test.Amazonka.FSx.Internal
+    Test.Amazonka.Gen.FSx
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-fsx
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateFileSystemAliases.yaml b/fixture/AssociateFileSystemAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateFileSystemAliases.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/AssociateFileSystemAliasesResponse.proto b/fixture/AssociateFileSystemAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateFileSystemAliasesResponse.proto
diff --git a/fixture/CancelDataRepositoryTask.yaml b/fixture/CancelDataRepositoryTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CancelDataRepositoryTask.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CancelDataRepositoryTaskResponse.proto b/fixture/CancelDataRepositoryTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CancelDataRepositoryTaskResponse.proto
diff --git a/fixture/CopyBackup.yaml b/fixture/CopyBackup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CopyBackup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CopyBackupResponse.proto b/fixture/CopyBackupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CopyBackupResponse.proto
diff --git a/fixture/CreateBackup.yaml b/fixture/CreateBackup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateBackupResponse.proto b/fixture/CreateBackupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackupResponse.proto
diff --git a/fixture/CreateDataRepositoryAssociation.yaml b/fixture/CreateDataRepositoryAssociation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataRepositoryAssociation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateDataRepositoryAssociationResponse.proto b/fixture/CreateDataRepositoryAssociationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataRepositoryAssociationResponse.proto
diff --git a/fixture/CreateDataRepositoryTask.yaml b/fixture/CreateDataRepositoryTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataRepositoryTask.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateDataRepositoryTaskResponse.proto b/fixture/CreateDataRepositoryTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataRepositoryTaskResponse.proto
diff --git a/fixture/CreateFileCache.yaml b/fixture/CreateFileCache.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFileCache.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateFileCacheResponse.proto b/fixture/CreateFileCacheResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFileCacheResponse.proto
diff --git a/fixture/CreateFileSystem.yaml b/fixture/CreateFileSystem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFileSystem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateFileSystemFromBackup.yaml b/fixture/CreateFileSystemFromBackup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFileSystemFromBackup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateFileSystemFromBackupResponse.proto b/fixture/CreateFileSystemFromBackupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFileSystemFromBackupResponse.proto
diff --git a/fixture/CreateFileSystemResponse.proto b/fixture/CreateFileSystemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFileSystemResponse.proto
diff --git a/fixture/CreateSnapshot.yaml b/fixture/CreateSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateSnapshotResponse.proto b/fixture/CreateSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSnapshotResponse.proto
diff --git a/fixture/CreateStorageVirtualMachine.yaml b/fixture/CreateStorageVirtualMachine.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStorageVirtualMachine.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateStorageVirtualMachineResponse.proto b/fixture/CreateStorageVirtualMachineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStorageVirtualMachineResponse.proto
diff --git a/fixture/CreateVolume.yaml b/fixture/CreateVolume.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVolume.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateVolumeFromBackup.yaml b/fixture/CreateVolumeFromBackup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVolumeFromBackup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/CreateVolumeFromBackupResponse.proto b/fixture/CreateVolumeFromBackupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVolumeFromBackupResponse.proto
diff --git a/fixture/CreateVolumeResponse.proto b/fixture/CreateVolumeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVolumeResponse.proto
diff --git a/fixture/DeleteBackup.yaml b/fixture/DeleteBackup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteBackupResponse.proto b/fixture/DeleteBackupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackupResponse.proto
diff --git a/fixture/DeleteDataRepositoryAssociation.yaml b/fixture/DeleteDataRepositoryAssociation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataRepositoryAssociation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteDataRepositoryAssociationResponse.proto b/fixture/DeleteDataRepositoryAssociationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataRepositoryAssociationResponse.proto
diff --git a/fixture/DeleteFileCache.yaml b/fixture/DeleteFileCache.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFileCache.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteFileCacheResponse.proto b/fixture/DeleteFileCacheResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFileCacheResponse.proto
diff --git a/fixture/DeleteFileSystem.yaml b/fixture/DeleteFileSystem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFileSystem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteFileSystemResponse.proto b/fixture/DeleteFileSystemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFileSystemResponse.proto
diff --git a/fixture/DeleteSnapshot.yaml b/fixture/DeleteSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteSnapshotResponse.proto b/fixture/DeleteSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSnapshotResponse.proto
diff --git a/fixture/DeleteStorageVirtualMachine.yaml b/fixture/DeleteStorageVirtualMachine.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteStorageVirtualMachine.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteStorageVirtualMachineResponse.proto b/fixture/DeleteStorageVirtualMachineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteStorageVirtualMachineResponse.proto
diff --git a/fixture/DeleteVolume.yaml b/fixture/DeleteVolume.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVolume.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DeleteVolumeResponse.proto b/fixture/DeleteVolumeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVolumeResponse.proto
diff --git a/fixture/DescribeBackups.yaml b/fixture/DescribeBackups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeBackups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeBackupsResponse.proto b/fixture/DescribeBackupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeBackupsResponse.proto
diff --git a/fixture/DescribeDataRepositoryAssociations.yaml b/fixture/DescribeDataRepositoryAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataRepositoryAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeDataRepositoryAssociationsResponse.proto b/fixture/DescribeDataRepositoryAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataRepositoryAssociationsResponse.proto
diff --git a/fixture/DescribeDataRepositoryTasks.yaml b/fixture/DescribeDataRepositoryTasks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataRepositoryTasks.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeDataRepositoryTasksResponse.proto b/fixture/DescribeDataRepositoryTasksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataRepositoryTasksResponse.proto
diff --git a/fixture/DescribeFileCaches.yaml b/fixture/DescribeFileCaches.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFileCaches.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeFileCachesResponse.proto b/fixture/DescribeFileCachesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFileCachesResponse.proto
diff --git a/fixture/DescribeFileSystemAliases.yaml b/fixture/DescribeFileSystemAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFileSystemAliases.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeFileSystemAliasesResponse.proto b/fixture/DescribeFileSystemAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFileSystemAliasesResponse.proto
diff --git a/fixture/DescribeFileSystems.yaml b/fixture/DescribeFileSystems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFileSystems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeFileSystemsResponse.proto b/fixture/DescribeFileSystemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFileSystemsResponse.proto
diff --git a/fixture/DescribeSnapshots.yaml b/fixture/DescribeSnapshots.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSnapshots.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeSnapshotsResponse.proto b/fixture/DescribeSnapshotsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSnapshotsResponse.proto
diff --git a/fixture/DescribeStorageVirtualMachines.yaml b/fixture/DescribeStorageVirtualMachines.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeStorageVirtualMachines.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeStorageVirtualMachinesResponse.proto b/fixture/DescribeStorageVirtualMachinesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeStorageVirtualMachinesResponse.proto
diff --git a/fixture/DescribeVolumes.yaml b/fixture/DescribeVolumes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeVolumes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DescribeVolumesResponse.proto b/fixture/DescribeVolumesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeVolumesResponse.proto
diff --git a/fixture/DisassociateFileSystemAliases.yaml b/fixture/DisassociateFileSystemAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateFileSystemAliases.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/DisassociateFileSystemAliasesResponse.proto b/fixture/DisassociateFileSystemAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateFileSystemAliasesResponse.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: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/ReleaseFileSystemNfsV3Locks.yaml b/fixture/ReleaseFileSystemNfsV3Locks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ReleaseFileSystemNfsV3Locks.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/ReleaseFileSystemNfsV3LocksResponse.proto b/fixture/ReleaseFileSystemNfsV3LocksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ReleaseFileSystemNfsV3LocksResponse.proto
diff --git a/fixture/RestoreVolumeFromSnapshot.yaml b/fixture/RestoreVolumeFromSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreVolumeFromSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/RestoreVolumeFromSnapshotResponse.proto b/fixture/RestoreVolumeFromSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreVolumeFromSnapshotResponse.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/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateDataRepositoryAssociation.yaml b/fixture/UpdateDataRepositoryAssociation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataRepositoryAssociation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateDataRepositoryAssociationResponse.proto b/fixture/UpdateDataRepositoryAssociationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDataRepositoryAssociationResponse.proto
diff --git a/fixture/UpdateFileCache.yaml b/fixture/UpdateFileCache.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFileCache.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateFileCacheResponse.proto b/fixture/UpdateFileCacheResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFileCacheResponse.proto
diff --git a/fixture/UpdateFileSystem.yaml b/fixture/UpdateFileSystem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFileSystem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateFileSystemResponse.proto b/fixture/UpdateFileSystemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFileSystemResponse.proto
diff --git a/fixture/UpdateSnapshot.yaml b/fixture/UpdateSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateSnapshotResponse.proto b/fixture/UpdateSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSnapshotResponse.proto
diff --git a/fixture/UpdateStorageVirtualMachine.yaml b/fixture/UpdateStorageVirtualMachine.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateStorageVirtualMachine.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateStorageVirtualMachineResponse.proto b/fixture/UpdateStorageVirtualMachineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateStorageVirtualMachineResponse.proto
diff --git a/fixture/UpdateVolume.yaml b/fixture/UpdateVolume.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVolume.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fsx/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  fsx.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/UpdateVolumeResponse.proto b/fixture/UpdateVolumeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVolumeResponse.proto
diff --git a/gen/Amazonka/FSx.hs b/gen/Amazonka/FSx.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx.hs
@@ -0,0 +1,962 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.FSx
+-- 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-03-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon FSx is a fully managed service that makes it easy for storage and
+-- application administrators to launch and use shared file storage.
+module Amazonka.FSx
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** ActiveDirectoryError
+    _ActiveDirectoryError,
+
+    -- ** BackupBeingCopied
+    _BackupBeingCopied,
+
+    -- ** BackupInProgress
+    _BackupInProgress,
+
+    -- ** BackupNotFound
+    _BackupNotFound,
+
+    -- ** BackupRestoring
+    _BackupRestoring,
+
+    -- ** BadRequest
+    _BadRequest,
+
+    -- ** DataRepositoryAssociationNotFound
+    _DataRepositoryAssociationNotFound,
+
+    -- ** DataRepositoryTaskEnded
+    _DataRepositoryTaskEnded,
+
+    -- ** DataRepositoryTaskExecuting
+    _DataRepositoryTaskExecuting,
+
+    -- ** DataRepositoryTaskNotFound
+    _DataRepositoryTaskNotFound,
+
+    -- ** FileCacheNotFound
+    _FileCacheNotFound,
+
+    -- ** FileSystemNotFound
+    _FileSystemNotFound,
+
+    -- ** IncompatibleParameterError
+    _IncompatibleParameterError,
+
+    -- ** IncompatibleRegionForMultiAZ
+    _IncompatibleRegionForMultiAZ,
+
+    -- ** InternalServerError
+    _InternalServerError,
+
+    -- ** InvalidDataRepositoryType
+    _InvalidDataRepositoryType,
+
+    -- ** InvalidDestinationKmsKey
+    _InvalidDestinationKmsKey,
+
+    -- ** InvalidExportPath
+    _InvalidExportPath,
+
+    -- ** InvalidImportPath
+    _InvalidImportPath,
+
+    -- ** InvalidNetworkSettings
+    _InvalidNetworkSettings,
+
+    -- ** InvalidPerUnitStorageThroughput
+    _InvalidPerUnitStorageThroughput,
+
+    -- ** InvalidRegion
+    _InvalidRegion,
+
+    -- ** InvalidSourceKmsKey
+    _InvalidSourceKmsKey,
+
+    -- ** MissingFileCacheConfiguration
+    _MissingFileCacheConfiguration,
+
+    -- ** MissingFileSystemConfiguration
+    _MissingFileSystemConfiguration,
+
+    -- ** MissingVolumeConfiguration
+    _MissingVolumeConfiguration,
+
+    -- ** NotServiceResourceError
+    _NotServiceResourceError,
+
+    -- ** ResourceDoesNotSupportTagging
+    _ResourceDoesNotSupportTagging,
+
+    -- ** ResourceNotFound
+    _ResourceNotFound,
+
+    -- ** ServiceLimitExceeded
+    _ServiceLimitExceeded,
+
+    -- ** SnapshotNotFound
+    _SnapshotNotFound,
+
+    -- ** SourceBackupUnavailable
+    _SourceBackupUnavailable,
+
+    -- ** StorageVirtualMachineNotFound
+    _StorageVirtualMachineNotFound,
+
+    -- ** UnsupportedOperation
+    _UnsupportedOperation,
+
+    -- ** VolumeNotFound
+    _VolumeNotFound,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateFileSystemAliases
+    AssociateFileSystemAliases (AssociateFileSystemAliases'),
+    newAssociateFileSystemAliases,
+    AssociateFileSystemAliasesResponse (AssociateFileSystemAliasesResponse'),
+    newAssociateFileSystemAliasesResponse,
+
+    -- ** CancelDataRepositoryTask
+    CancelDataRepositoryTask (CancelDataRepositoryTask'),
+    newCancelDataRepositoryTask,
+    CancelDataRepositoryTaskResponse (CancelDataRepositoryTaskResponse'),
+    newCancelDataRepositoryTaskResponse,
+
+    -- ** CopyBackup
+    CopyBackup (CopyBackup'),
+    newCopyBackup,
+    CopyBackupResponse (CopyBackupResponse'),
+    newCopyBackupResponse,
+
+    -- ** CreateBackup
+    CreateBackup (CreateBackup'),
+    newCreateBackup,
+    CreateBackupResponse (CreateBackupResponse'),
+    newCreateBackupResponse,
+
+    -- ** CreateDataRepositoryAssociation
+    CreateDataRepositoryAssociation (CreateDataRepositoryAssociation'),
+    newCreateDataRepositoryAssociation,
+    CreateDataRepositoryAssociationResponse (CreateDataRepositoryAssociationResponse'),
+    newCreateDataRepositoryAssociationResponse,
+
+    -- ** CreateDataRepositoryTask
+    CreateDataRepositoryTask (CreateDataRepositoryTask'),
+    newCreateDataRepositoryTask,
+    CreateDataRepositoryTaskResponse (CreateDataRepositoryTaskResponse'),
+    newCreateDataRepositoryTaskResponse,
+
+    -- ** CreateFileCache
+    CreateFileCache (CreateFileCache'),
+    newCreateFileCache,
+    CreateFileCacheResponse (CreateFileCacheResponse'),
+    newCreateFileCacheResponse,
+
+    -- ** CreateFileSystem
+    CreateFileSystem (CreateFileSystem'),
+    newCreateFileSystem,
+    CreateFileSystemResponse (CreateFileSystemResponse'),
+    newCreateFileSystemResponse,
+
+    -- ** CreateFileSystemFromBackup
+    CreateFileSystemFromBackup (CreateFileSystemFromBackup'),
+    newCreateFileSystemFromBackup,
+    CreateFileSystemFromBackupResponse (CreateFileSystemFromBackupResponse'),
+    newCreateFileSystemFromBackupResponse,
+
+    -- ** CreateSnapshot
+    CreateSnapshot (CreateSnapshot'),
+    newCreateSnapshot,
+    CreateSnapshotResponse (CreateSnapshotResponse'),
+    newCreateSnapshotResponse,
+
+    -- ** CreateStorageVirtualMachine
+    CreateStorageVirtualMachine (CreateStorageVirtualMachine'),
+    newCreateStorageVirtualMachine,
+    CreateStorageVirtualMachineResponse (CreateStorageVirtualMachineResponse'),
+    newCreateStorageVirtualMachineResponse,
+
+    -- ** CreateVolume
+    CreateVolume (CreateVolume'),
+    newCreateVolume,
+    CreateVolumeResponse (CreateVolumeResponse'),
+    newCreateVolumeResponse,
+
+    -- ** CreateVolumeFromBackup
+    CreateVolumeFromBackup (CreateVolumeFromBackup'),
+    newCreateVolumeFromBackup,
+    CreateVolumeFromBackupResponse (CreateVolumeFromBackupResponse'),
+    newCreateVolumeFromBackupResponse,
+
+    -- ** DeleteBackup
+    DeleteBackup (DeleteBackup'),
+    newDeleteBackup,
+    DeleteBackupResponse (DeleteBackupResponse'),
+    newDeleteBackupResponse,
+
+    -- ** DeleteDataRepositoryAssociation
+    DeleteDataRepositoryAssociation (DeleteDataRepositoryAssociation'),
+    newDeleteDataRepositoryAssociation,
+    DeleteDataRepositoryAssociationResponse (DeleteDataRepositoryAssociationResponse'),
+    newDeleteDataRepositoryAssociationResponse,
+
+    -- ** DeleteFileCache
+    DeleteFileCache (DeleteFileCache'),
+    newDeleteFileCache,
+    DeleteFileCacheResponse (DeleteFileCacheResponse'),
+    newDeleteFileCacheResponse,
+
+    -- ** DeleteFileSystem
+    DeleteFileSystem (DeleteFileSystem'),
+    newDeleteFileSystem,
+    DeleteFileSystemResponse (DeleteFileSystemResponse'),
+    newDeleteFileSystemResponse,
+
+    -- ** DeleteSnapshot
+    DeleteSnapshot (DeleteSnapshot'),
+    newDeleteSnapshot,
+    DeleteSnapshotResponse (DeleteSnapshotResponse'),
+    newDeleteSnapshotResponse,
+
+    -- ** DeleteStorageVirtualMachine
+    DeleteStorageVirtualMachine (DeleteStorageVirtualMachine'),
+    newDeleteStorageVirtualMachine,
+    DeleteStorageVirtualMachineResponse (DeleteStorageVirtualMachineResponse'),
+    newDeleteStorageVirtualMachineResponse,
+
+    -- ** DeleteVolume
+    DeleteVolume (DeleteVolume'),
+    newDeleteVolume,
+    DeleteVolumeResponse (DeleteVolumeResponse'),
+    newDeleteVolumeResponse,
+
+    -- ** DescribeBackups (Paginated)
+    DescribeBackups (DescribeBackups'),
+    newDescribeBackups,
+    DescribeBackupsResponse (DescribeBackupsResponse'),
+    newDescribeBackupsResponse,
+
+    -- ** DescribeDataRepositoryAssociations
+    DescribeDataRepositoryAssociations (DescribeDataRepositoryAssociations'),
+    newDescribeDataRepositoryAssociations,
+    DescribeDataRepositoryAssociationsResponse (DescribeDataRepositoryAssociationsResponse'),
+    newDescribeDataRepositoryAssociationsResponse,
+
+    -- ** DescribeDataRepositoryTasks
+    DescribeDataRepositoryTasks (DescribeDataRepositoryTasks'),
+    newDescribeDataRepositoryTasks,
+    DescribeDataRepositoryTasksResponse (DescribeDataRepositoryTasksResponse'),
+    newDescribeDataRepositoryTasksResponse,
+
+    -- ** DescribeFileCaches
+    DescribeFileCaches (DescribeFileCaches'),
+    newDescribeFileCaches,
+    DescribeFileCachesResponse (DescribeFileCachesResponse'),
+    newDescribeFileCachesResponse,
+
+    -- ** DescribeFileSystemAliases
+    DescribeFileSystemAliases (DescribeFileSystemAliases'),
+    newDescribeFileSystemAliases,
+    DescribeFileSystemAliasesResponse (DescribeFileSystemAliasesResponse'),
+    newDescribeFileSystemAliasesResponse,
+
+    -- ** DescribeFileSystems (Paginated)
+    DescribeFileSystems (DescribeFileSystems'),
+    newDescribeFileSystems,
+    DescribeFileSystemsResponse (DescribeFileSystemsResponse'),
+    newDescribeFileSystemsResponse,
+
+    -- ** DescribeSnapshots
+    DescribeSnapshots (DescribeSnapshots'),
+    newDescribeSnapshots,
+    DescribeSnapshotsResponse (DescribeSnapshotsResponse'),
+    newDescribeSnapshotsResponse,
+
+    -- ** DescribeStorageVirtualMachines (Paginated)
+    DescribeStorageVirtualMachines (DescribeStorageVirtualMachines'),
+    newDescribeStorageVirtualMachines,
+    DescribeStorageVirtualMachinesResponse (DescribeStorageVirtualMachinesResponse'),
+    newDescribeStorageVirtualMachinesResponse,
+
+    -- ** DescribeVolumes (Paginated)
+    DescribeVolumes (DescribeVolumes'),
+    newDescribeVolumes,
+    DescribeVolumesResponse (DescribeVolumesResponse'),
+    newDescribeVolumesResponse,
+
+    -- ** DisassociateFileSystemAliases
+    DisassociateFileSystemAliases (DisassociateFileSystemAliases'),
+    newDisassociateFileSystemAliases,
+    DisassociateFileSystemAliasesResponse (DisassociateFileSystemAliasesResponse'),
+    newDisassociateFileSystemAliasesResponse,
+
+    -- ** ListTagsForResource (Paginated)
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ReleaseFileSystemNfsV3Locks
+    ReleaseFileSystemNfsV3Locks (ReleaseFileSystemNfsV3Locks'),
+    newReleaseFileSystemNfsV3Locks,
+    ReleaseFileSystemNfsV3LocksResponse (ReleaseFileSystemNfsV3LocksResponse'),
+    newReleaseFileSystemNfsV3LocksResponse,
+
+    -- ** RestoreVolumeFromSnapshot
+    RestoreVolumeFromSnapshot (RestoreVolumeFromSnapshot'),
+    newRestoreVolumeFromSnapshot,
+    RestoreVolumeFromSnapshotResponse (RestoreVolumeFromSnapshotResponse'),
+    newRestoreVolumeFromSnapshotResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateDataRepositoryAssociation
+    UpdateDataRepositoryAssociation (UpdateDataRepositoryAssociation'),
+    newUpdateDataRepositoryAssociation,
+    UpdateDataRepositoryAssociationResponse (UpdateDataRepositoryAssociationResponse'),
+    newUpdateDataRepositoryAssociationResponse,
+
+    -- ** UpdateFileCache
+    UpdateFileCache (UpdateFileCache'),
+    newUpdateFileCache,
+    UpdateFileCacheResponse (UpdateFileCacheResponse'),
+    newUpdateFileCacheResponse,
+
+    -- ** UpdateFileSystem
+    UpdateFileSystem (UpdateFileSystem'),
+    newUpdateFileSystem,
+    UpdateFileSystemResponse (UpdateFileSystemResponse'),
+    newUpdateFileSystemResponse,
+
+    -- ** UpdateSnapshot
+    UpdateSnapshot (UpdateSnapshot'),
+    newUpdateSnapshot,
+    UpdateSnapshotResponse (UpdateSnapshotResponse'),
+    newUpdateSnapshotResponse,
+
+    -- ** UpdateStorageVirtualMachine
+    UpdateStorageVirtualMachine (UpdateStorageVirtualMachine'),
+    newUpdateStorageVirtualMachine,
+    UpdateStorageVirtualMachineResponse (UpdateStorageVirtualMachineResponse'),
+    newUpdateStorageVirtualMachineResponse,
+
+    -- ** UpdateVolume
+    UpdateVolume (UpdateVolume'),
+    newUpdateVolume,
+    UpdateVolumeResponse (UpdateVolumeResponse'),
+    newUpdateVolumeResponse,
+
+    -- * Types
+
+    -- ** AdministrativeActionType
+    AdministrativeActionType (..),
+
+    -- ** AliasLifecycle
+    AliasLifecycle (..),
+
+    -- ** AutoImportPolicyType
+    AutoImportPolicyType (..),
+
+    -- ** BackupLifecycle
+    BackupLifecycle (..),
+
+    -- ** BackupType
+    BackupType (..),
+
+    -- ** DataCompressionType
+    DataCompressionType (..),
+
+    -- ** DataRepositoryLifecycle
+    DataRepositoryLifecycle (..),
+
+    -- ** DataRepositoryTaskFilterName
+    DataRepositoryTaskFilterName (..),
+
+    -- ** DataRepositoryTaskLifecycle
+    DataRepositoryTaskLifecycle (..),
+
+    -- ** DataRepositoryTaskType
+    DataRepositoryTaskType (..),
+
+    -- ** DeleteFileSystemOpenZFSOption
+    DeleteFileSystemOpenZFSOption (..),
+
+    -- ** DeleteOpenZFSVolumeOption
+    DeleteOpenZFSVolumeOption (..),
+
+    -- ** DiskIopsConfigurationMode
+    DiskIopsConfigurationMode (..),
+
+    -- ** DriveCacheType
+    DriveCacheType (..),
+
+    -- ** EventType
+    EventType (..),
+
+    -- ** FileCacheLifecycle
+    FileCacheLifecycle (..),
+
+    -- ** FileCacheLustreDeploymentType
+    FileCacheLustreDeploymentType (..),
+
+    -- ** FileCacheType
+    FileCacheType (..),
+
+    -- ** FileSystemLifecycle
+    FileSystemLifecycle (..),
+
+    -- ** FileSystemMaintenanceOperation
+    FileSystemMaintenanceOperation (..),
+
+    -- ** FileSystemType
+    FileSystemType (..),
+
+    -- ** FilterName
+    FilterName (..),
+
+    -- ** FlexCacheEndpointType
+    FlexCacheEndpointType (..),
+
+    -- ** InputOntapVolumeType
+    InputOntapVolumeType (..),
+
+    -- ** LustreAccessAuditLogLevel
+    LustreAccessAuditLogLevel (..),
+
+    -- ** LustreDeploymentType
+    LustreDeploymentType (..),
+
+    -- ** NfsVersion
+    NfsVersion (..),
+
+    -- ** OntapDeploymentType
+    OntapDeploymentType (..),
+
+    -- ** OntapVolumeType
+    OntapVolumeType (..),
+
+    -- ** OpenZFSCopyStrategy
+    OpenZFSCopyStrategy (..),
+
+    -- ** OpenZFSDataCompressionType
+    OpenZFSDataCompressionType (..),
+
+    -- ** OpenZFSDeploymentType
+    OpenZFSDeploymentType (..),
+
+    -- ** OpenZFSQuotaType
+    OpenZFSQuotaType (..),
+
+    -- ** ReportFormat
+    ReportFormat (..),
+
+    -- ** ReportScope
+    ReportScope (..),
+
+    -- ** ResourceType
+    ResourceType (..),
+
+    -- ** RestoreOpenZFSVolumeOption
+    RestoreOpenZFSVolumeOption (..),
+
+    -- ** SecurityStyle
+    SecurityStyle (..),
+
+    -- ** SnapshotFilterName
+    SnapshotFilterName (..),
+
+    -- ** SnapshotLifecycle
+    SnapshotLifecycle (..),
+
+    -- ** Status
+    Status (..),
+
+    -- ** StorageType
+    StorageType (..),
+
+    -- ** StorageVirtualMachineFilterName
+    StorageVirtualMachineFilterName (..),
+
+    -- ** StorageVirtualMachineLifecycle
+    StorageVirtualMachineLifecycle (..),
+
+    -- ** StorageVirtualMachineRootVolumeSecurityStyle
+    StorageVirtualMachineRootVolumeSecurityStyle (..),
+
+    -- ** StorageVirtualMachineSubtype
+    StorageVirtualMachineSubtype (..),
+
+    -- ** TieringPolicyName
+    TieringPolicyName (..),
+
+    -- ** VolumeFilterName
+    VolumeFilterName (..),
+
+    -- ** VolumeLifecycle
+    VolumeLifecycle (..),
+
+    -- ** VolumeType
+    VolumeType (..),
+
+    -- ** WindowsAccessAuditLogLevel
+    WindowsAccessAuditLogLevel (..),
+
+    -- ** WindowsDeploymentType
+    WindowsDeploymentType (..),
+
+    -- ** ActiveDirectoryBackupAttributes
+    ActiveDirectoryBackupAttributes (ActiveDirectoryBackupAttributes'),
+    newActiveDirectoryBackupAttributes,
+
+    -- ** AdministrativeAction
+    AdministrativeAction (AdministrativeAction'),
+    newAdministrativeAction,
+
+    -- ** AdministrativeActionFailureDetails
+    AdministrativeActionFailureDetails (AdministrativeActionFailureDetails'),
+    newAdministrativeActionFailureDetails,
+
+    -- ** Alias
+    Alias (Alias'),
+    newAlias,
+
+    -- ** AutoExportPolicy
+    AutoExportPolicy (AutoExportPolicy'),
+    newAutoExportPolicy,
+
+    -- ** AutoImportPolicy
+    AutoImportPolicy (AutoImportPolicy'),
+    newAutoImportPolicy,
+
+    -- ** Backup
+    Backup (Backup'),
+    newBackup,
+
+    -- ** BackupFailureDetails
+    BackupFailureDetails (BackupFailureDetails'),
+    newBackupFailureDetails,
+
+    -- ** CompletionReport
+    CompletionReport (CompletionReport'),
+    newCompletionReport,
+
+    -- ** CreateFileCacheLustreConfiguration
+    CreateFileCacheLustreConfiguration (CreateFileCacheLustreConfiguration'),
+    newCreateFileCacheLustreConfiguration,
+
+    -- ** CreateFileSystemLustreConfiguration
+    CreateFileSystemLustreConfiguration (CreateFileSystemLustreConfiguration'),
+    newCreateFileSystemLustreConfiguration,
+
+    -- ** CreateFileSystemOntapConfiguration
+    CreateFileSystemOntapConfiguration (CreateFileSystemOntapConfiguration'),
+    newCreateFileSystemOntapConfiguration,
+
+    -- ** CreateFileSystemOpenZFSConfiguration
+    CreateFileSystemOpenZFSConfiguration (CreateFileSystemOpenZFSConfiguration'),
+    newCreateFileSystemOpenZFSConfiguration,
+
+    -- ** CreateFileSystemWindowsConfiguration
+    CreateFileSystemWindowsConfiguration (CreateFileSystemWindowsConfiguration'),
+    newCreateFileSystemWindowsConfiguration,
+
+    -- ** CreateOntapVolumeConfiguration
+    CreateOntapVolumeConfiguration (CreateOntapVolumeConfiguration'),
+    newCreateOntapVolumeConfiguration,
+
+    -- ** CreateOpenZFSOriginSnapshotConfiguration
+    CreateOpenZFSOriginSnapshotConfiguration (CreateOpenZFSOriginSnapshotConfiguration'),
+    newCreateOpenZFSOriginSnapshotConfiguration,
+
+    -- ** CreateOpenZFSVolumeConfiguration
+    CreateOpenZFSVolumeConfiguration (CreateOpenZFSVolumeConfiguration'),
+    newCreateOpenZFSVolumeConfiguration,
+
+    -- ** CreateSvmActiveDirectoryConfiguration
+    CreateSvmActiveDirectoryConfiguration (CreateSvmActiveDirectoryConfiguration'),
+    newCreateSvmActiveDirectoryConfiguration,
+
+    -- ** DataRepositoryAssociation
+    DataRepositoryAssociation (DataRepositoryAssociation'),
+    newDataRepositoryAssociation,
+
+    -- ** DataRepositoryConfiguration
+    DataRepositoryConfiguration (DataRepositoryConfiguration'),
+    newDataRepositoryConfiguration,
+
+    -- ** DataRepositoryFailureDetails
+    DataRepositoryFailureDetails (DataRepositoryFailureDetails'),
+    newDataRepositoryFailureDetails,
+
+    -- ** DataRepositoryTask
+    DataRepositoryTask (DataRepositoryTask'),
+    newDataRepositoryTask,
+
+    -- ** DataRepositoryTaskFailureDetails
+    DataRepositoryTaskFailureDetails (DataRepositoryTaskFailureDetails'),
+    newDataRepositoryTaskFailureDetails,
+
+    -- ** DataRepositoryTaskFilter
+    DataRepositoryTaskFilter (DataRepositoryTaskFilter'),
+    newDataRepositoryTaskFilter,
+
+    -- ** DataRepositoryTaskStatus
+    DataRepositoryTaskStatus (DataRepositoryTaskStatus'),
+    newDataRepositoryTaskStatus,
+
+    -- ** DeleteFileSystemLustreConfiguration
+    DeleteFileSystemLustreConfiguration (DeleteFileSystemLustreConfiguration'),
+    newDeleteFileSystemLustreConfiguration,
+
+    -- ** DeleteFileSystemLustreResponse
+    DeleteFileSystemLustreResponse (DeleteFileSystemLustreResponse'),
+    newDeleteFileSystemLustreResponse,
+
+    -- ** DeleteFileSystemOpenZFSConfiguration
+    DeleteFileSystemOpenZFSConfiguration (DeleteFileSystemOpenZFSConfiguration'),
+    newDeleteFileSystemOpenZFSConfiguration,
+
+    -- ** DeleteFileSystemOpenZFSResponse
+    DeleteFileSystemOpenZFSResponse (DeleteFileSystemOpenZFSResponse'),
+    newDeleteFileSystemOpenZFSResponse,
+
+    -- ** DeleteFileSystemWindowsConfiguration
+    DeleteFileSystemWindowsConfiguration (DeleteFileSystemWindowsConfiguration'),
+    newDeleteFileSystemWindowsConfiguration,
+
+    -- ** DeleteFileSystemWindowsResponse
+    DeleteFileSystemWindowsResponse (DeleteFileSystemWindowsResponse'),
+    newDeleteFileSystemWindowsResponse,
+
+    -- ** DeleteVolumeOntapConfiguration
+    DeleteVolumeOntapConfiguration (DeleteVolumeOntapConfiguration'),
+    newDeleteVolumeOntapConfiguration,
+
+    -- ** DeleteVolumeOntapResponse
+    DeleteVolumeOntapResponse (DeleteVolumeOntapResponse'),
+    newDeleteVolumeOntapResponse,
+
+    -- ** DeleteVolumeOpenZFSConfiguration
+    DeleteVolumeOpenZFSConfiguration (DeleteVolumeOpenZFSConfiguration'),
+    newDeleteVolumeOpenZFSConfiguration,
+
+    -- ** DiskIopsConfiguration
+    DiskIopsConfiguration (DiskIopsConfiguration'),
+    newDiskIopsConfiguration,
+
+    -- ** FileCache
+    FileCache (FileCache'),
+    newFileCache,
+
+    -- ** FileCacheCreating
+    FileCacheCreating (FileCacheCreating'),
+    newFileCacheCreating,
+
+    -- ** FileCacheDataRepositoryAssociation
+    FileCacheDataRepositoryAssociation (FileCacheDataRepositoryAssociation'),
+    newFileCacheDataRepositoryAssociation,
+
+    -- ** FileCacheFailureDetails
+    FileCacheFailureDetails (FileCacheFailureDetails'),
+    newFileCacheFailureDetails,
+
+    -- ** FileCacheLustreConfiguration
+    FileCacheLustreConfiguration (FileCacheLustreConfiguration'),
+    newFileCacheLustreConfiguration,
+
+    -- ** FileCacheLustreMetadataConfiguration
+    FileCacheLustreMetadataConfiguration (FileCacheLustreMetadataConfiguration'),
+    newFileCacheLustreMetadataConfiguration,
+
+    -- ** FileCacheNFSConfiguration
+    FileCacheNFSConfiguration (FileCacheNFSConfiguration'),
+    newFileCacheNFSConfiguration,
+
+    -- ** FileSystem
+    FileSystem (FileSystem'),
+    newFileSystem,
+
+    -- ** FileSystemEndpoint
+    FileSystemEndpoint (FileSystemEndpoint'),
+    newFileSystemEndpoint,
+
+    -- ** FileSystemEndpoints
+    FileSystemEndpoints (FileSystemEndpoints'),
+    newFileSystemEndpoints,
+
+    -- ** FileSystemFailureDetails
+    FileSystemFailureDetails (FileSystemFailureDetails'),
+    newFileSystemFailureDetails,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** LifecycleTransitionReason
+    LifecycleTransitionReason (LifecycleTransitionReason'),
+    newLifecycleTransitionReason,
+
+    -- ** LustreFileSystemConfiguration
+    LustreFileSystemConfiguration (LustreFileSystemConfiguration'),
+    newLustreFileSystemConfiguration,
+
+    -- ** LustreLogConfiguration
+    LustreLogConfiguration (LustreLogConfiguration'),
+    newLustreLogConfiguration,
+
+    -- ** LustreLogCreateConfiguration
+    LustreLogCreateConfiguration (LustreLogCreateConfiguration'),
+    newLustreLogCreateConfiguration,
+
+    -- ** LustreRootSquashConfiguration
+    LustreRootSquashConfiguration (LustreRootSquashConfiguration'),
+    newLustreRootSquashConfiguration,
+
+    -- ** NFSDataRepositoryConfiguration
+    NFSDataRepositoryConfiguration (NFSDataRepositoryConfiguration'),
+    newNFSDataRepositoryConfiguration,
+
+    -- ** OntapFileSystemConfiguration
+    OntapFileSystemConfiguration (OntapFileSystemConfiguration'),
+    newOntapFileSystemConfiguration,
+
+    -- ** OntapVolumeConfiguration
+    OntapVolumeConfiguration (OntapVolumeConfiguration'),
+    newOntapVolumeConfiguration,
+
+    -- ** OpenZFSClientConfiguration
+    OpenZFSClientConfiguration (OpenZFSClientConfiguration'),
+    newOpenZFSClientConfiguration,
+
+    -- ** OpenZFSCreateRootVolumeConfiguration
+    OpenZFSCreateRootVolumeConfiguration (OpenZFSCreateRootVolumeConfiguration'),
+    newOpenZFSCreateRootVolumeConfiguration,
+
+    -- ** OpenZFSFileSystemConfiguration
+    OpenZFSFileSystemConfiguration (OpenZFSFileSystemConfiguration'),
+    newOpenZFSFileSystemConfiguration,
+
+    -- ** OpenZFSNfsExport
+    OpenZFSNfsExport (OpenZFSNfsExport'),
+    newOpenZFSNfsExport,
+
+    -- ** OpenZFSOriginSnapshotConfiguration
+    OpenZFSOriginSnapshotConfiguration (OpenZFSOriginSnapshotConfiguration'),
+    newOpenZFSOriginSnapshotConfiguration,
+
+    -- ** OpenZFSUserOrGroupQuota
+    OpenZFSUserOrGroupQuota (OpenZFSUserOrGroupQuota'),
+    newOpenZFSUserOrGroupQuota,
+
+    -- ** OpenZFSVolumeConfiguration
+    OpenZFSVolumeConfiguration (OpenZFSVolumeConfiguration'),
+    newOpenZFSVolumeConfiguration,
+
+    -- ** S3DataRepositoryConfiguration
+    S3DataRepositoryConfiguration (S3DataRepositoryConfiguration'),
+    newS3DataRepositoryConfiguration,
+
+    -- ** SelfManagedActiveDirectoryAttributes
+    SelfManagedActiveDirectoryAttributes (SelfManagedActiveDirectoryAttributes'),
+    newSelfManagedActiveDirectoryAttributes,
+
+    -- ** SelfManagedActiveDirectoryConfiguration
+    SelfManagedActiveDirectoryConfiguration (SelfManagedActiveDirectoryConfiguration'),
+    newSelfManagedActiveDirectoryConfiguration,
+
+    -- ** SelfManagedActiveDirectoryConfigurationUpdates
+    SelfManagedActiveDirectoryConfigurationUpdates (SelfManagedActiveDirectoryConfigurationUpdates'),
+    newSelfManagedActiveDirectoryConfigurationUpdates,
+
+    -- ** Snapshot
+    Snapshot (Snapshot'),
+    newSnapshot,
+
+    -- ** SnapshotFilter
+    SnapshotFilter (SnapshotFilter'),
+    newSnapshotFilter,
+
+    -- ** StorageVirtualMachine
+    StorageVirtualMachine (StorageVirtualMachine'),
+    newStorageVirtualMachine,
+
+    -- ** StorageVirtualMachineFilter
+    StorageVirtualMachineFilter (StorageVirtualMachineFilter'),
+    newStorageVirtualMachineFilter,
+
+    -- ** SvmActiveDirectoryConfiguration
+    SvmActiveDirectoryConfiguration (SvmActiveDirectoryConfiguration'),
+    newSvmActiveDirectoryConfiguration,
+
+    -- ** SvmEndpoint
+    SvmEndpoint (SvmEndpoint'),
+    newSvmEndpoint,
+
+    -- ** SvmEndpoints
+    SvmEndpoints (SvmEndpoints'),
+    newSvmEndpoints,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TieringPolicy
+    TieringPolicy (TieringPolicy'),
+    newTieringPolicy,
+
+    -- ** UpdateFileCacheLustreConfiguration
+    UpdateFileCacheLustreConfiguration (UpdateFileCacheLustreConfiguration'),
+    newUpdateFileCacheLustreConfiguration,
+
+    -- ** UpdateFileSystemLustreConfiguration
+    UpdateFileSystemLustreConfiguration (UpdateFileSystemLustreConfiguration'),
+    newUpdateFileSystemLustreConfiguration,
+
+    -- ** UpdateFileSystemOntapConfiguration
+    UpdateFileSystemOntapConfiguration (UpdateFileSystemOntapConfiguration'),
+    newUpdateFileSystemOntapConfiguration,
+
+    -- ** UpdateFileSystemOpenZFSConfiguration
+    UpdateFileSystemOpenZFSConfiguration (UpdateFileSystemOpenZFSConfiguration'),
+    newUpdateFileSystemOpenZFSConfiguration,
+
+    -- ** UpdateFileSystemWindowsConfiguration
+    UpdateFileSystemWindowsConfiguration (UpdateFileSystemWindowsConfiguration'),
+    newUpdateFileSystemWindowsConfiguration,
+
+    -- ** UpdateOntapVolumeConfiguration
+    UpdateOntapVolumeConfiguration (UpdateOntapVolumeConfiguration'),
+    newUpdateOntapVolumeConfiguration,
+
+    -- ** UpdateOpenZFSVolumeConfiguration
+    UpdateOpenZFSVolumeConfiguration (UpdateOpenZFSVolumeConfiguration'),
+    newUpdateOpenZFSVolumeConfiguration,
+
+    -- ** UpdateSvmActiveDirectoryConfiguration
+    UpdateSvmActiveDirectoryConfiguration (UpdateSvmActiveDirectoryConfiguration'),
+    newUpdateSvmActiveDirectoryConfiguration,
+
+    -- ** Volume
+    Volume (Volume'),
+    newVolume,
+
+    -- ** VolumeFilter
+    VolumeFilter (VolumeFilter'),
+    newVolumeFilter,
+
+    -- ** WindowsAuditLogConfiguration
+    WindowsAuditLogConfiguration (WindowsAuditLogConfiguration'),
+    newWindowsAuditLogConfiguration,
+
+    -- ** WindowsAuditLogCreateConfiguration
+    WindowsAuditLogCreateConfiguration (WindowsAuditLogCreateConfiguration'),
+    newWindowsAuditLogCreateConfiguration,
+
+    -- ** WindowsFileSystemConfiguration
+    WindowsFileSystemConfiguration (WindowsFileSystemConfiguration'),
+    newWindowsFileSystemConfiguration,
+  )
+where
+
+import Amazonka.FSx.AssociateFileSystemAliases
+import Amazonka.FSx.CancelDataRepositoryTask
+import Amazonka.FSx.CopyBackup
+import Amazonka.FSx.CreateBackup
+import Amazonka.FSx.CreateDataRepositoryAssociation
+import Amazonka.FSx.CreateDataRepositoryTask
+import Amazonka.FSx.CreateFileCache
+import Amazonka.FSx.CreateFileSystem
+import Amazonka.FSx.CreateFileSystemFromBackup
+import Amazonka.FSx.CreateSnapshot
+import Amazonka.FSx.CreateStorageVirtualMachine
+import Amazonka.FSx.CreateVolume
+import Amazonka.FSx.CreateVolumeFromBackup
+import Amazonka.FSx.DeleteBackup
+import Amazonka.FSx.DeleteDataRepositoryAssociation
+import Amazonka.FSx.DeleteFileCache
+import Amazonka.FSx.DeleteFileSystem
+import Amazonka.FSx.DeleteSnapshot
+import Amazonka.FSx.DeleteStorageVirtualMachine
+import Amazonka.FSx.DeleteVolume
+import Amazonka.FSx.DescribeBackups
+import Amazonka.FSx.DescribeDataRepositoryAssociations
+import Amazonka.FSx.DescribeDataRepositoryTasks
+import Amazonka.FSx.DescribeFileCaches
+import Amazonka.FSx.DescribeFileSystemAliases
+import Amazonka.FSx.DescribeFileSystems
+import Amazonka.FSx.DescribeSnapshots
+import Amazonka.FSx.DescribeStorageVirtualMachines
+import Amazonka.FSx.DescribeVolumes
+import Amazonka.FSx.DisassociateFileSystemAliases
+import Amazonka.FSx.Lens
+import Amazonka.FSx.ListTagsForResource
+import Amazonka.FSx.ReleaseFileSystemNfsV3Locks
+import Amazonka.FSx.RestoreVolumeFromSnapshot
+import Amazonka.FSx.TagResource
+import Amazonka.FSx.Types
+import Amazonka.FSx.UntagResource
+import Amazonka.FSx.UpdateDataRepositoryAssociation
+import Amazonka.FSx.UpdateFileCache
+import Amazonka.FSx.UpdateFileSystem
+import Amazonka.FSx.UpdateSnapshot
+import Amazonka.FSx.UpdateStorageVirtualMachine
+import Amazonka.FSx.UpdateVolume
+import Amazonka.FSx.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 'FSx'.
+
+-- $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/FSx/AssociateFileSystemAliases.hs b/gen/Amazonka/FSx/AssociateFileSystemAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/AssociateFileSystemAliases.hs
@@ -0,0 +1,280 @@
+{-# 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.FSx.AssociateFileSystemAliases
+-- 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 this action to associate one or more Domain Name Server (DNS)
+-- aliases with an existing Amazon FSx for Windows File Server file system.
+-- A file system can have a maximum of 50 DNS aliases associated with it at
+-- any one time. If you try to associate a DNS alias that is already
+-- associated with the file system, FSx takes no action on that alias in
+-- the request. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
+-- and
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
+-- including additional steps you must take to be able to access your file
+-- system using a DNS alias.
+--
+-- The system response shows the DNS aliases that Amazon FSx is attempting
+-- to associate with the file system. Use the API operation to monitor the
+-- status of the aliases Amazon FSx is associating with the file system.
+module Amazonka.FSx.AssociateFileSystemAliases
+  ( -- * Creating a Request
+    AssociateFileSystemAliases (..),
+    newAssociateFileSystemAliases,
+
+    -- * Request Lenses
+    associateFileSystemAliases_clientRequestToken,
+    associateFileSystemAliases_fileSystemId,
+    associateFileSystemAliases_aliases,
+
+    -- * Destructuring the Response
+    AssociateFileSystemAliasesResponse (..),
+    newAssociateFileSystemAliasesResponse,
+
+    -- * Response Lenses
+    associateFileSystemAliasesResponse_aliases,
+    associateFileSystemAliasesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object specifying one or more DNS alias names to associate
+-- with an Amazon FSx for Windows File Server file system.
+--
+-- /See:/ 'newAssociateFileSystemAliases' smart constructor.
+data AssociateFileSystemAliases = AssociateFileSystemAliases'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the file system with which you want to associate one or more
+    -- DNS aliases.
+    fileSystemId :: Prelude.Text,
+    -- | An array of one or more DNS alias names to associate with the file
+    -- system. The alias name has to comply with the following formatting
+    -- requirements:
+    --
+    -- -   Formatted as a fully-qualified domain name (FQDN),
+    --     /@hostname.domain@/ , for example, @accounting.corp.example.com@.
+    --
+    -- -   Can contain alphanumeric characters and the hyphen (-).
+    --
+    -- -   Cannot start or end with a hyphen.
+    --
+    -- -   Can start with a numeric.
+    --
+    -- For DNS alias names, Amazon FSx stores alphabetic characters as
+    -- lowercase letters (a-z), regardless of how you specify them: as
+    -- uppercase letters, lowercase letters, or the corresponding letters in
+    -- escape codes.
+    aliases :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateFileSystemAliases' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'associateFileSystemAliases_clientRequestToken' - Undocumented member.
+--
+-- 'fileSystemId', 'associateFileSystemAliases_fileSystemId' - Specifies the file system with which you want to associate one or more
+-- DNS aliases.
+--
+-- 'aliases', 'associateFileSystemAliases_aliases' - An array of one or more DNS alias names to associate with the file
+-- system. The alias name has to comply with the following formatting
+-- requirements:
+--
+-- -   Formatted as a fully-qualified domain name (FQDN),
+--     /@hostname.domain@/ , for example, @accounting.corp.example.com@.
+--
+-- -   Can contain alphanumeric characters and the hyphen (-).
+--
+-- -   Cannot start or end with a hyphen.
+--
+-- -   Can start with a numeric.
+--
+-- For DNS alias names, Amazon FSx stores alphabetic characters as
+-- lowercase letters (a-z), regardless of how you specify them: as
+-- uppercase letters, lowercase letters, or the corresponding letters in
+-- escape codes.
+newAssociateFileSystemAliases ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  AssociateFileSystemAliases
+newAssociateFileSystemAliases pFileSystemId_ =
+  AssociateFileSystemAliases'
+    { clientRequestToken =
+        Prelude.Nothing,
+      fileSystemId = pFileSystemId_,
+      aliases = Prelude.mempty
+    }
+
+-- | Undocumented member.
+associateFileSystemAliases_clientRequestToken :: Lens.Lens' AssociateFileSystemAliases (Prelude.Maybe Prelude.Text)
+associateFileSystemAliases_clientRequestToken = Lens.lens (\AssociateFileSystemAliases' {clientRequestToken} -> clientRequestToken) (\s@AssociateFileSystemAliases' {} a -> s {clientRequestToken = a} :: AssociateFileSystemAliases)
+
+-- | Specifies the file system with which you want to associate one or more
+-- DNS aliases.
+associateFileSystemAliases_fileSystemId :: Lens.Lens' AssociateFileSystemAliases Prelude.Text
+associateFileSystemAliases_fileSystemId = Lens.lens (\AssociateFileSystemAliases' {fileSystemId} -> fileSystemId) (\s@AssociateFileSystemAliases' {} a -> s {fileSystemId = a} :: AssociateFileSystemAliases)
+
+-- | An array of one or more DNS alias names to associate with the file
+-- system. The alias name has to comply with the following formatting
+-- requirements:
+--
+-- -   Formatted as a fully-qualified domain name (FQDN),
+--     /@hostname.domain@/ , for example, @accounting.corp.example.com@.
+--
+-- -   Can contain alphanumeric characters and the hyphen (-).
+--
+-- -   Cannot start or end with a hyphen.
+--
+-- -   Can start with a numeric.
+--
+-- For DNS alias names, Amazon FSx stores alphabetic characters as
+-- lowercase letters (a-z), regardless of how you specify them: as
+-- uppercase letters, lowercase letters, or the corresponding letters in
+-- escape codes.
+associateFileSystemAliases_aliases :: Lens.Lens' AssociateFileSystemAliases [Prelude.Text]
+associateFileSystemAliases_aliases = Lens.lens (\AssociateFileSystemAliases' {aliases} -> aliases) (\s@AssociateFileSystemAliases' {} a -> s {aliases = a} :: AssociateFileSystemAliases) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AssociateFileSystemAliases where
+  type
+    AWSResponse AssociateFileSystemAliases =
+      AssociateFileSystemAliasesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateFileSystemAliasesResponse'
+            Prelude.<$> (x Data..?> "Aliases" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateFileSystemAliases where
+  hashWithSalt _salt AssociateFileSystemAliases' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` aliases
+
+instance Prelude.NFData AssociateFileSystemAliases where
+  rnf AssociateFileSystemAliases' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf aliases
+
+instance Data.ToHeaders AssociateFileSystemAliases where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.AssociateFileSystemAliases" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateFileSystemAliases where
+  toJSON AssociateFileSystemAliases' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId),
+            Prelude.Just ("Aliases" Data..= aliases)
+          ]
+      )
+
+instance Data.ToPath AssociateFileSystemAliases where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AssociateFileSystemAliases where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The system generated response showing the DNS aliases that Amazon FSx is
+-- attempting to associate with the file system. Use the API operation to
+-- monitor the status of the aliases Amazon FSx is associating with the
+-- file system. It can take up to 2.5 minutes for the alias status to
+-- change from @CREATING@ to @AVAILABLE@.
+--
+-- /See:/ 'newAssociateFileSystemAliasesResponse' smart constructor.
+data AssociateFileSystemAliasesResponse = AssociateFileSystemAliasesResponse'
+  { -- | An array of the DNS aliases that Amazon FSx is associating with the file
+    -- system.
+    aliases :: Prelude.Maybe [Alias],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateFileSystemAliasesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliases', 'associateFileSystemAliasesResponse_aliases' - An array of the DNS aliases that Amazon FSx is associating with the file
+-- system.
+--
+-- 'httpStatus', 'associateFileSystemAliasesResponse_httpStatus' - The response's http status code.
+newAssociateFileSystemAliasesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateFileSystemAliasesResponse
+newAssociateFileSystemAliasesResponse pHttpStatus_ =
+  AssociateFileSystemAliasesResponse'
+    { aliases =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of the DNS aliases that Amazon FSx is associating with the file
+-- system.
+associateFileSystemAliasesResponse_aliases :: Lens.Lens' AssociateFileSystemAliasesResponse (Prelude.Maybe [Alias])
+associateFileSystemAliasesResponse_aliases = Lens.lens (\AssociateFileSystemAliasesResponse' {aliases} -> aliases) (\s@AssociateFileSystemAliasesResponse' {} a -> s {aliases = a} :: AssociateFileSystemAliasesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+associateFileSystemAliasesResponse_httpStatus :: Lens.Lens' AssociateFileSystemAliasesResponse Prelude.Int
+associateFileSystemAliasesResponse_httpStatus = Lens.lens (\AssociateFileSystemAliasesResponse' {httpStatus} -> httpStatus) (\s@AssociateFileSystemAliasesResponse' {} a -> s {httpStatus = a} :: AssociateFileSystemAliasesResponse)
+
+instance
+  Prelude.NFData
+    AssociateFileSystemAliasesResponse
+  where
+  rnf AssociateFileSystemAliasesResponse' {..} =
+    Prelude.rnf aliases
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CancelDataRepositoryTask.hs b/gen/Amazonka/FSx/CancelDataRepositoryTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CancelDataRepositoryTask.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.CancelDataRepositoryTask
+-- 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 existing Amazon FSx for Lustre data repository task if that
+-- task is in either the @PENDING@ or @EXECUTING@ state. When you cancel a
+-- task, Amazon FSx does the following.
+--
+-- -   Any files that FSx has already exported are not reverted.
+--
+-- -   FSx continues to export any files that are \"in-flight\" when the
+--     cancel operation is received.
+--
+-- -   FSx does not export any files that have not yet been exported.
+module Amazonka.FSx.CancelDataRepositoryTask
+  ( -- * Creating a Request
+    CancelDataRepositoryTask (..),
+    newCancelDataRepositoryTask,
+
+    -- * Request Lenses
+    cancelDataRepositoryTask_taskId,
+
+    -- * Destructuring the Response
+    CancelDataRepositoryTaskResponse (..),
+    newCancelDataRepositoryTaskResponse,
+
+    -- * Response Lenses
+    cancelDataRepositoryTaskResponse_lifecycle,
+    cancelDataRepositoryTaskResponse_taskId,
+    cancelDataRepositoryTaskResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Cancels a data repository task.
+--
+-- /See:/ 'newCancelDataRepositoryTask' smart constructor.
+data CancelDataRepositoryTask = CancelDataRepositoryTask'
+  { -- | Specifies the data repository task to cancel.
+    taskId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelDataRepositoryTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'taskId', 'cancelDataRepositoryTask_taskId' - Specifies the data repository task to cancel.
+newCancelDataRepositoryTask ::
+  -- | 'taskId'
+  Prelude.Text ->
+  CancelDataRepositoryTask
+newCancelDataRepositoryTask pTaskId_ =
+  CancelDataRepositoryTask' {taskId = pTaskId_}
+
+-- | Specifies the data repository task to cancel.
+cancelDataRepositoryTask_taskId :: Lens.Lens' CancelDataRepositoryTask Prelude.Text
+cancelDataRepositoryTask_taskId = Lens.lens (\CancelDataRepositoryTask' {taskId} -> taskId) (\s@CancelDataRepositoryTask' {} a -> s {taskId = a} :: CancelDataRepositoryTask)
+
+instance Core.AWSRequest CancelDataRepositoryTask where
+  type
+    AWSResponse CancelDataRepositoryTask =
+      CancelDataRepositoryTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CancelDataRepositoryTaskResponse'
+            Prelude.<$> (x Data..?> "Lifecycle")
+            Prelude.<*> (x Data..?> "TaskId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CancelDataRepositoryTask where
+  hashWithSalt _salt CancelDataRepositoryTask' {..} =
+    _salt `Prelude.hashWithSalt` taskId
+
+instance Prelude.NFData CancelDataRepositoryTask where
+  rnf CancelDataRepositoryTask' {..} =
+    Prelude.rnf taskId
+
+instance Data.ToHeaders CancelDataRepositoryTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CancelDataRepositoryTask" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CancelDataRepositoryTask where
+  toJSON CancelDataRepositoryTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("TaskId" Data..= taskId)]
+      )
+
+instance Data.ToPath CancelDataRepositoryTask where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CancelDataRepositoryTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCancelDataRepositoryTaskResponse' smart constructor.
+data CancelDataRepositoryTaskResponse = CancelDataRepositoryTaskResponse'
+  { -- | The lifecycle status of the data repository task, as follows:
+    --
+    -- -   @PENDING@ - Amazon FSx has not started the task.
+    --
+    -- -   @EXECUTING@ - Amazon FSx is processing the task.
+    --
+    -- -   @FAILED@ - Amazon FSx was not able to complete the task. For
+    --     example, there may be files the task failed to process. The
+    --     DataRepositoryTaskFailureDetails property provides more information
+    --     about task failures.
+    --
+    -- -   @SUCCEEDED@ - FSx completed the task successfully.
+    --
+    -- -   @CANCELED@ - Amazon FSx canceled the task and it did not complete.
+    --
+    -- -   @CANCELING@ - FSx is in process of canceling the task.
+    lifecycle :: Prelude.Maybe DataRepositoryTaskLifecycle,
+    -- | The ID of the task being canceled.
+    taskId :: 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 'CancelDataRepositoryTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lifecycle', 'cancelDataRepositoryTaskResponse_lifecycle' - The lifecycle status of the data repository task, as follows:
+--
+-- -   @PENDING@ - Amazon FSx has not started the task.
+--
+-- -   @EXECUTING@ - Amazon FSx is processing the task.
+--
+-- -   @FAILED@ - Amazon FSx was not able to complete the task. For
+--     example, there may be files the task failed to process. The
+--     DataRepositoryTaskFailureDetails property provides more information
+--     about task failures.
+--
+-- -   @SUCCEEDED@ - FSx completed the task successfully.
+--
+-- -   @CANCELED@ - Amazon FSx canceled the task and it did not complete.
+--
+-- -   @CANCELING@ - FSx is in process of canceling the task.
+--
+-- 'taskId', 'cancelDataRepositoryTaskResponse_taskId' - The ID of the task being canceled.
+--
+-- 'httpStatus', 'cancelDataRepositoryTaskResponse_httpStatus' - The response's http status code.
+newCancelDataRepositoryTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CancelDataRepositoryTaskResponse
+newCancelDataRepositoryTaskResponse pHttpStatus_ =
+  CancelDataRepositoryTaskResponse'
+    { lifecycle =
+        Prelude.Nothing,
+      taskId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The lifecycle status of the data repository task, as follows:
+--
+-- -   @PENDING@ - Amazon FSx has not started the task.
+--
+-- -   @EXECUTING@ - Amazon FSx is processing the task.
+--
+-- -   @FAILED@ - Amazon FSx was not able to complete the task. For
+--     example, there may be files the task failed to process. The
+--     DataRepositoryTaskFailureDetails property provides more information
+--     about task failures.
+--
+-- -   @SUCCEEDED@ - FSx completed the task successfully.
+--
+-- -   @CANCELED@ - Amazon FSx canceled the task and it did not complete.
+--
+-- -   @CANCELING@ - FSx is in process of canceling the task.
+cancelDataRepositoryTaskResponse_lifecycle :: Lens.Lens' CancelDataRepositoryTaskResponse (Prelude.Maybe DataRepositoryTaskLifecycle)
+cancelDataRepositoryTaskResponse_lifecycle = Lens.lens (\CancelDataRepositoryTaskResponse' {lifecycle} -> lifecycle) (\s@CancelDataRepositoryTaskResponse' {} a -> s {lifecycle = a} :: CancelDataRepositoryTaskResponse)
+
+-- | The ID of the task being canceled.
+cancelDataRepositoryTaskResponse_taskId :: Lens.Lens' CancelDataRepositoryTaskResponse (Prelude.Maybe Prelude.Text)
+cancelDataRepositoryTaskResponse_taskId = Lens.lens (\CancelDataRepositoryTaskResponse' {taskId} -> taskId) (\s@CancelDataRepositoryTaskResponse' {} a -> s {taskId = a} :: CancelDataRepositoryTaskResponse)
+
+-- | The response's http status code.
+cancelDataRepositoryTaskResponse_httpStatus :: Lens.Lens' CancelDataRepositoryTaskResponse Prelude.Int
+cancelDataRepositoryTaskResponse_httpStatus = Lens.lens (\CancelDataRepositoryTaskResponse' {httpStatus} -> httpStatus) (\s@CancelDataRepositoryTaskResponse' {} a -> s {httpStatus = a} :: CancelDataRepositoryTaskResponse)
+
+instance
+  Prelude.NFData
+    CancelDataRepositoryTaskResponse
+  where
+  rnf CancelDataRepositoryTaskResponse' {..} =
+    Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf taskId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CopyBackup.hs b/gen/Amazonka/FSx/CopyBackup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CopyBackup.hs
@@ -0,0 +1,305 @@
+{-# 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.FSx.CopyBackup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Copies an existing backup within the same Amazon Web Services account to
+-- another Amazon Web Services Region (cross-Region copy) or within the
+-- same Amazon Web Services Region (in-Region copy). You can have up to
+-- five backup copy requests in progress to a single destination Region per
+-- account.
+--
+-- You can use cross-Region backup copies for cross-Region disaster
+-- recovery. You can periodically take backups and copy them to another
+-- Region so that in the event of a disaster in the primary Region, you can
+-- restore from backup and recover availability quickly in the other
+-- Region. You can make cross-Region copies only within your Amazon Web
+-- Services partition. A partition is a grouping of Regions. Amazon Web
+-- Services currently has three partitions: @aws@ (Standard Regions),
+-- @aws-cn@ (China Regions), and @aws-us-gov@ (Amazon Web Services GovCloud
+-- [US] Regions).
+--
+-- You can also use backup copies to clone your file dataset to another
+-- Region or within the same Region.
+--
+-- You can use the @SourceRegion@ parameter to specify the Amazon Web
+-- Services Region from which the backup will be copied. For example, if
+-- you make the call from the @us-west-1@ Region and want to copy a backup
+-- from the @us-east-2@ Region, you specify @us-east-2@ in the
+-- @SourceRegion@ parameter to make a cross-Region copy. If you don\'t
+-- specify a Region, the backup copy is created in the same Region where
+-- the request is sent from (in-Region copy).
+--
+-- For more information about creating backup copies, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/using-backups.html#copy-backups Copying backups>
+-- in the /Amazon FSx for Windows User Guide/,
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html#copy-backups Copying backups>
+-- in the /Amazon FSx for Lustre User Guide/, and
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/using-backups.html#copy-backups Copying backups>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+module Amazonka.FSx.CopyBackup
+  ( -- * Creating a Request
+    CopyBackup (..),
+    newCopyBackup,
+
+    -- * Request Lenses
+    copyBackup_clientRequestToken,
+    copyBackup_copyTags,
+    copyBackup_kmsKeyId,
+    copyBackup_sourceRegion,
+    copyBackup_tags,
+    copyBackup_sourceBackupId,
+
+    -- * Destructuring the Response
+    CopyBackupResponse (..),
+    newCopyBackupResponse,
+
+    -- * Response Lenses
+    copyBackupResponse_backup,
+    copyBackupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCopyBackup' smart constructor.
+data CopyBackup = CopyBackup'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean flag indicating whether tags from the source backup should be
+    -- copied to the backup copy. This value defaults to @false@.
+    --
+    -- If you set @CopyTags@ to @true@ and the source backup has existing tags,
+    -- you can use the @Tags@ parameter to create new tags, provided that the
+    -- sum of the source backup tags and the new tags doesn\'t exceed 50. Both
+    -- sets of tags are merged. If there are tag conflicts (for example, two
+    -- tags with the same key but different values), the tags created with the
+    -- @Tags@ parameter take precedence.
+    copyTags :: Prelude.Maybe Prelude.Bool,
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The source Amazon Web Services Region of the backup. Specifies the
+    -- Amazon Web Services Region from which the backup is being copied. The
+    -- source and destination Regions must be in the same Amazon Web Services
+    -- partition. If you don\'t specify a Region, @SourceRegion@ defaults to
+    -- the Region where the request is sent from (in-Region copy).
+    sourceRegion :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ID of the source backup. Specifies the ID of the backup that\'s
+    -- being copied.
+    sourceBackupId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CopyBackup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'copyBackup_clientRequestToken' - Undocumented member.
+--
+-- 'copyTags', 'copyBackup_copyTags' - A Boolean flag indicating whether tags from the source backup should be
+-- copied to the backup copy. This value defaults to @false@.
+--
+-- If you set @CopyTags@ to @true@ and the source backup has existing tags,
+-- you can use the @Tags@ parameter to create new tags, provided that the
+-- sum of the source backup tags and the new tags doesn\'t exceed 50. Both
+-- sets of tags are merged. If there are tag conflicts (for example, two
+-- tags with the same key but different values), the tags created with the
+-- @Tags@ parameter take precedence.
+--
+-- 'kmsKeyId', 'copyBackup_kmsKeyId' - Undocumented member.
+--
+-- 'sourceRegion', 'copyBackup_sourceRegion' - The source Amazon Web Services Region of the backup. Specifies the
+-- Amazon Web Services Region from which the backup is being copied. The
+-- source and destination Regions must be in the same Amazon Web Services
+-- partition. If you don\'t specify a Region, @SourceRegion@ defaults to
+-- the Region where the request is sent from (in-Region copy).
+--
+-- 'tags', 'copyBackup_tags' - Undocumented member.
+--
+-- 'sourceBackupId', 'copyBackup_sourceBackupId' - The ID of the source backup. Specifies the ID of the backup that\'s
+-- being copied.
+newCopyBackup ::
+  -- | 'sourceBackupId'
+  Prelude.Text ->
+  CopyBackup
+newCopyBackup pSourceBackupId_ =
+  CopyBackup'
+    { clientRequestToken = Prelude.Nothing,
+      copyTags = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      sourceRegion = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      sourceBackupId = pSourceBackupId_
+    }
+
+-- | Undocumented member.
+copyBackup_clientRequestToken :: Lens.Lens' CopyBackup (Prelude.Maybe Prelude.Text)
+copyBackup_clientRequestToken = Lens.lens (\CopyBackup' {clientRequestToken} -> clientRequestToken) (\s@CopyBackup' {} a -> s {clientRequestToken = a} :: CopyBackup)
+
+-- | A Boolean flag indicating whether tags from the source backup should be
+-- copied to the backup copy. This value defaults to @false@.
+--
+-- If you set @CopyTags@ to @true@ and the source backup has existing tags,
+-- you can use the @Tags@ parameter to create new tags, provided that the
+-- sum of the source backup tags and the new tags doesn\'t exceed 50. Both
+-- sets of tags are merged. If there are tag conflicts (for example, two
+-- tags with the same key but different values), the tags created with the
+-- @Tags@ parameter take precedence.
+copyBackup_copyTags :: Lens.Lens' CopyBackup (Prelude.Maybe Prelude.Bool)
+copyBackup_copyTags = Lens.lens (\CopyBackup' {copyTags} -> copyTags) (\s@CopyBackup' {} a -> s {copyTags = a} :: CopyBackup)
+
+-- | Undocumented member.
+copyBackup_kmsKeyId :: Lens.Lens' CopyBackup (Prelude.Maybe Prelude.Text)
+copyBackup_kmsKeyId = Lens.lens (\CopyBackup' {kmsKeyId} -> kmsKeyId) (\s@CopyBackup' {} a -> s {kmsKeyId = a} :: CopyBackup)
+
+-- | The source Amazon Web Services Region of the backup. Specifies the
+-- Amazon Web Services Region from which the backup is being copied. The
+-- source and destination Regions must be in the same Amazon Web Services
+-- partition. If you don\'t specify a Region, @SourceRegion@ defaults to
+-- the Region where the request is sent from (in-Region copy).
+copyBackup_sourceRegion :: Lens.Lens' CopyBackup (Prelude.Maybe Prelude.Text)
+copyBackup_sourceRegion = Lens.lens (\CopyBackup' {sourceRegion} -> sourceRegion) (\s@CopyBackup' {} a -> s {sourceRegion = a} :: CopyBackup)
+
+-- | Undocumented member.
+copyBackup_tags :: Lens.Lens' CopyBackup (Prelude.Maybe (Prelude.NonEmpty Tag))
+copyBackup_tags = Lens.lens (\CopyBackup' {tags} -> tags) (\s@CopyBackup' {} a -> s {tags = a} :: CopyBackup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the source backup. Specifies the ID of the backup that\'s
+-- being copied.
+copyBackup_sourceBackupId :: Lens.Lens' CopyBackup Prelude.Text
+copyBackup_sourceBackupId = Lens.lens (\CopyBackup' {sourceBackupId} -> sourceBackupId) (\s@CopyBackup' {} a -> s {sourceBackupId = a} :: CopyBackup)
+
+instance Core.AWSRequest CopyBackup where
+  type AWSResponse CopyBackup = CopyBackupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CopyBackupResponse'
+            Prelude.<$> (x Data..?> "Backup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CopyBackup where
+  hashWithSalt _salt CopyBackup' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` copyTags
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` sourceRegion
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` sourceBackupId
+
+instance Prelude.NFData CopyBackup where
+  rnf CopyBackup' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf copyTags
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf sourceRegion
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sourceBackupId
+
+instance Data.ToHeaders CopyBackup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CopyBackup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CopyBackup where
+  toJSON CopyBackup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("CopyTags" Data..=) Prelude.<$> copyTags,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("SourceRegion" Data..=) Prelude.<$> sourceRegion,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("SourceBackupId" Data..= sourceBackupId)
+          ]
+      )
+
+instance Data.ToPath CopyBackup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CopyBackup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCopyBackupResponse' smart constructor.
+data CopyBackupResponse = CopyBackupResponse'
+  { backup :: Prelude.Maybe Backup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CopyBackupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backup', 'copyBackupResponse_backup' - Undocumented member.
+--
+-- 'httpStatus', 'copyBackupResponse_httpStatus' - The response's http status code.
+newCopyBackupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CopyBackupResponse
+newCopyBackupResponse pHttpStatus_ =
+  CopyBackupResponse'
+    { backup = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+copyBackupResponse_backup :: Lens.Lens' CopyBackupResponse (Prelude.Maybe Backup)
+copyBackupResponse_backup = Lens.lens (\CopyBackupResponse' {backup} -> backup) (\s@CopyBackupResponse' {} a -> s {backup = a} :: CopyBackupResponse)
+
+-- | The response's http status code.
+copyBackupResponse_httpStatus :: Lens.Lens' CopyBackupResponse Prelude.Int
+copyBackupResponse_httpStatus = Lens.lens (\CopyBackupResponse' {httpStatus} -> httpStatus) (\s@CopyBackupResponse' {} a -> s {httpStatus = a} :: CopyBackupResponse)
+
+instance Prelude.NFData CopyBackupResponse where
+  rnf CopyBackupResponse' {..} =
+    Prelude.rnf backup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateBackup.hs b/gen/Amazonka/FSx/CreateBackup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateBackup.hs
@@ -0,0 +1,283 @@
+{-# 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.FSx.CreateBackup
+-- 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 backup of an existing Amazon FSx for Windows File Server file
+-- system, Amazon FSx for Lustre file system, Amazon FSx for NetApp ONTAP
+-- volume, or Amazon FSx for OpenZFS file system. We recommend creating
+-- regular backups so that you can restore a file system or volume from a
+-- backup if an issue arises with the original file system or volume.
+--
+-- For Amazon FSx for Lustre file systems, you can create a backup only for
+-- file systems that have the following configuration:
+--
+-- -   A Persistent deployment type
+--
+-- -   Are /not/ linked to a data repository
+--
+-- For more information about backups, see the following:
+--
+-- -   For Amazon FSx for Lustre, see
+--     <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html Working with FSx for Lustre backups>.
+--
+-- -   For Amazon FSx for Windows, see
+--     <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/using-backups.html Working with FSx for Windows backups>.
+--
+-- -   For Amazon FSx for NetApp ONTAP, see
+--     <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/using-backups.html Working with FSx for NetApp ONTAP backups>.
+--
+-- -   For Amazon FSx for OpenZFS, see
+--     <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/using-backups.html Working with FSx for OpenZFS backups>.
+--
+-- If a backup with the specified client request token exists and the
+-- parameters match, this operation returns the description of the existing
+-- backup. If a backup with the specified client request token exists and
+-- the parameters don\'t match, this operation returns
+-- @IncompatibleParameterError@. If a backup with the specified client
+-- request token doesn\'t exist, @CreateBackup@ does the following:
+--
+-- -   Creates a new Amazon FSx backup with an assigned ID, and an initial
+--     lifecycle state of @CREATING@.
+--
+-- -   Returns the description of the backup.
+--
+-- By using the idempotent operation, you can retry a @CreateBackup@
+-- operation without the risk of creating an extra backup. This approach
+-- can be useful when an initial call fails in a way that makes it unclear
+-- whether a backup was created. If you use the same client request token
+-- and the initial call created a backup, the operation returns a
+-- successful result because all the parameters are the same.
+--
+-- The @CreateBackup@ operation returns while the backup\'s lifecycle state
+-- is still @CREATING@. You can check the backup creation status by calling
+-- the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeBackups.html DescribeBackups>
+-- operation, which returns the backup state along with other information.
+module Amazonka.FSx.CreateBackup
+  ( -- * Creating a Request
+    CreateBackup (..),
+    newCreateBackup,
+
+    -- * Request Lenses
+    createBackup_clientRequestToken,
+    createBackup_fileSystemId,
+    createBackup_tags,
+    createBackup_volumeId,
+
+    -- * Destructuring the Response
+    CreateBackupResponse (..),
+    newCreateBackupResponse,
+
+    -- * Response Lenses
+    createBackupResponse_backup,
+    createBackupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for the @CreateBackup@ operation.
+--
+-- /See:/ 'newCreateBackup' smart constructor.
+data CreateBackup = CreateBackup'
+  { -- | (Optional) A string of up to 64 ASCII characters that Amazon FSx uses to
+    -- ensure idempotent creation. This string is automatically filled on your
+    -- behalf when you use the Command Line Interface (CLI) or an Amazon Web
+    -- Services SDK.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the file system to back up.
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) The tags to apply to the backup at backup creation. The key
+    -- value of the @Name@ tag appears in the console as the backup name. If
+    -- you have set @CopyTagsToBackups@ to @true@, and you specify one or more
+    -- tags using the @CreateBackup@ operation, no existing file system tags
+    -- are copied from the file system to the backup.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | (Optional) The ID of the FSx for ONTAP volume to back up.
+    volumeId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createBackup_clientRequestToken' - (Optional) A string of up to 64 ASCII characters that Amazon FSx uses to
+-- ensure idempotent creation. This string is automatically filled on your
+-- behalf when you use the Command Line Interface (CLI) or an Amazon Web
+-- Services SDK.
+--
+-- 'fileSystemId', 'createBackup_fileSystemId' - The ID of the file system to back up.
+--
+-- 'tags', 'createBackup_tags' - (Optional) The tags to apply to the backup at backup creation. The key
+-- value of the @Name@ tag appears in the console as the backup name. If
+-- you have set @CopyTagsToBackups@ to @true@, and you specify one or more
+-- tags using the @CreateBackup@ operation, no existing file system tags
+-- are copied from the file system to the backup.
+--
+-- 'volumeId', 'createBackup_volumeId' - (Optional) The ID of the FSx for ONTAP volume to back up.
+newCreateBackup ::
+  CreateBackup
+newCreateBackup =
+  CreateBackup'
+    { clientRequestToken = Prelude.Nothing,
+      fileSystemId = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      volumeId = Prelude.Nothing
+    }
+
+-- | (Optional) A string of up to 64 ASCII characters that Amazon FSx uses to
+-- ensure idempotent creation. This string is automatically filled on your
+-- behalf when you use the Command Line Interface (CLI) or an Amazon Web
+-- Services SDK.
+createBackup_clientRequestToken :: Lens.Lens' CreateBackup (Prelude.Maybe Prelude.Text)
+createBackup_clientRequestToken = Lens.lens (\CreateBackup' {clientRequestToken} -> clientRequestToken) (\s@CreateBackup' {} a -> s {clientRequestToken = a} :: CreateBackup)
+
+-- | The ID of the file system to back up.
+createBackup_fileSystemId :: Lens.Lens' CreateBackup (Prelude.Maybe Prelude.Text)
+createBackup_fileSystemId = Lens.lens (\CreateBackup' {fileSystemId} -> fileSystemId) (\s@CreateBackup' {} a -> s {fileSystemId = a} :: CreateBackup)
+
+-- | (Optional) The tags to apply to the backup at backup creation. The key
+-- value of the @Name@ tag appears in the console as the backup name. If
+-- you have set @CopyTagsToBackups@ to @true@, and you specify one or more
+-- tags using the @CreateBackup@ operation, no existing file system tags
+-- are copied from the file system to the backup.
+createBackup_tags :: Lens.Lens' CreateBackup (Prelude.Maybe (Prelude.NonEmpty Tag))
+createBackup_tags = Lens.lens (\CreateBackup' {tags} -> tags) (\s@CreateBackup' {} a -> s {tags = a} :: CreateBackup) Prelude.. Lens.mapping Lens.coerced
+
+-- | (Optional) The ID of the FSx for ONTAP volume to back up.
+createBackup_volumeId :: Lens.Lens' CreateBackup (Prelude.Maybe Prelude.Text)
+createBackup_volumeId = Lens.lens (\CreateBackup' {volumeId} -> volumeId) (\s@CreateBackup' {} a -> s {volumeId = a} :: CreateBackup)
+
+instance Core.AWSRequest CreateBackup where
+  type AWSResponse CreateBackup = CreateBackupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBackupResponse'
+            Prelude.<$> (x Data..?> "Backup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBackup where
+  hashWithSalt _salt CreateBackup' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` volumeId
+
+instance Prelude.NFData CreateBackup where
+  rnf CreateBackup' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf volumeId
+
+instance Data.ToHeaders CreateBackup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateBackup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateBackup where
+  toJSON CreateBackup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("FileSystemId" Data..=) Prelude.<$> fileSystemId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VolumeId" Data..=) Prelude.<$> volumeId
+          ]
+      )
+
+instance Data.ToPath CreateBackup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateBackup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for the @CreateBackup@ operation.
+--
+-- /See:/ 'newCreateBackupResponse' smart constructor.
+data CreateBackupResponse = CreateBackupResponse'
+  { -- | A description of the backup.
+    backup :: Prelude.Maybe Backup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backup', 'createBackupResponse_backup' - A description of the backup.
+--
+-- 'httpStatus', 'createBackupResponse_httpStatus' - The response's http status code.
+newCreateBackupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBackupResponse
+newCreateBackupResponse pHttpStatus_ =
+  CreateBackupResponse'
+    { backup = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the backup.
+createBackupResponse_backup :: Lens.Lens' CreateBackupResponse (Prelude.Maybe Backup)
+createBackupResponse_backup = Lens.lens (\CreateBackupResponse' {backup} -> backup) (\s@CreateBackupResponse' {} a -> s {backup = a} :: CreateBackupResponse)
+
+-- | The response's http status code.
+createBackupResponse_httpStatus :: Lens.Lens' CreateBackupResponse Prelude.Int
+createBackupResponse_httpStatus = Lens.lens (\CreateBackupResponse' {httpStatus} -> httpStatus) (\s@CreateBackupResponse' {} a -> s {httpStatus = a} :: CreateBackupResponse)
+
+instance Prelude.NFData CreateBackupResponse where
+  rnf CreateBackupResponse' {..} =
+    Prelude.rnf backup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateDataRepositoryAssociation.hs b/gen/Amazonka/FSx/CreateDataRepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateDataRepositoryAssociation.hs
@@ -0,0 +1,407 @@
+{-# 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.FSx.CreateDataRepositoryAssociation
+-- 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 FSx for Lustre data repository association (DRA). A
+-- data repository association is a link between a directory on the file
+-- system and an Amazon S3 bucket or prefix. You can have a maximum of 8
+-- data repository associations on a file system. Data repository
+-- associations are supported only for file systems with the @Persistent_2@
+-- deployment type.
+--
+-- Each data repository association must have a unique Amazon FSx file
+-- system directory and a unique S3 bucket or prefix associated with it.
+-- You can configure a data repository association for automatic import
+-- only, for automatic export only, or for both. To learn more about
+-- linking a data repository to your file system, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/create-dra-linked-data-repo.html Linking your file system to an S3 bucket>.
+--
+-- @CreateDataRepositoryAssociation@ isn\'t supported on Amazon File Cache
+-- resources. To create a DRA on Amazon File Cache, use the
+-- @CreateFileCache@ operation.
+module Amazonka.FSx.CreateDataRepositoryAssociation
+  ( -- * Creating a Request
+    CreateDataRepositoryAssociation (..),
+    newCreateDataRepositoryAssociation,
+
+    -- * Request Lenses
+    createDataRepositoryAssociation_batchImportMetaDataOnCreate,
+    createDataRepositoryAssociation_clientRequestToken,
+    createDataRepositoryAssociation_fileSystemPath,
+    createDataRepositoryAssociation_importedFileChunkSize,
+    createDataRepositoryAssociation_s3,
+    createDataRepositoryAssociation_tags,
+    createDataRepositoryAssociation_fileSystemId,
+    createDataRepositoryAssociation_dataRepositoryPath,
+
+    -- * Destructuring the Response
+    CreateDataRepositoryAssociationResponse (..),
+    newCreateDataRepositoryAssociationResponse,
+
+    -- * Response Lenses
+    createDataRepositoryAssociationResponse_association,
+    createDataRepositoryAssociationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDataRepositoryAssociation' smart constructor.
+data CreateDataRepositoryAssociation = CreateDataRepositoryAssociation'
+  { -- | Set to @true@ to run an import data repository task to import metadata
+    -- from the data repository to the file system after the data repository
+    -- association is created. Default is @false@.
+    batchImportMetaDataOnCreate :: Prelude.Maybe Prelude.Bool,
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A path on the file system that points to a high-level directory (such as
+    -- @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that will be
+    -- mapped 1-1 with @DataRepositoryPath@. The leading forward slash in the
+    -- name is required. Two data repository associations cannot have
+    -- overlapping file system paths. For example, if a data repository is
+    -- associated with file system path @\/ns1\/@, then you cannot link another
+    -- data repository with file system path @\/ns1\/ns2@.
+    --
+    -- This path specifies where in your file system files will be exported
+    -- from or imported to. This file system directory can be linked to only
+    -- one Amazon S3 bucket, and no other S3 bucket can be linked to the
+    -- directory.
+    --
+    -- If you specify only a forward slash (@\/@) as the file system path, you
+    -- can link only one data repository to the file system. You can only
+    -- specify \"\/\" as the file system path for the first data repository
+    -- associated with a file system.
+    fileSystemPath :: Prelude.Maybe Prelude.Text,
+    -- | For files imported from a data repository, this value determines the
+    -- stripe count and maximum amount of data per file (in MiB) stored on a
+    -- single physical disk. The maximum number of disks that a single file can
+    -- be striped across is limited by the total number of disks that make up
+    -- the file system.
+    --
+    -- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+    -- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+    importedFileChunkSize :: Prelude.Maybe Prelude.Natural,
+    -- | The configuration for an Amazon S3 data repository linked to an Amazon
+    -- FSx Lustre file system with a data repository association. The
+    -- configuration defines which file events (new, changed, or deleted files
+    -- or directories) are automatically imported from the linked data
+    -- repository to the file system or automatically exported from the file
+    -- system to the data repository.
+    s3 :: Prelude.Maybe S3DataRepositoryConfiguration,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    fileSystemId :: Prelude.Text,
+    -- | The path to the Amazon S3 data repository that will be linked to the
+    -- file system. The path can be an S3 bucket or prefix in the format
+    -- @s3:\/\/myBucket\/myPrefix\/@. This path specifies where in the S3 data
+    -- repository files will be imported from or exported to.
+    dataRepositoryPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataRepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchImportMetaDataOnCreate', 'createDataRepositoryAssociation_batchImportMetaDataOnCreate' - Set to @true@ to run an import data repository task to import metadata
+-- from the data repository to the file system after the data repository
+-- association is created. Default is @false@.
+--
+-- 'clientRequestToken', 'createDataRepositoryAssociation_clientRequestToken' - Undocumented member.
+--
+-- 'fileSystemPath', 'createDataRepositoryAssociation_fileSystemPath' - A path on the file system that points to a high-level directory (such as
+-- @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that will be
+-- mapped 1-1 with @DataRepositoryPath@. The leading forward slash in the
+-- name is required. Two data repository associations cannot have
+-- overlapping file system paths. For example, if a data repository is
+-- associated with file system path @\/ns1\/@, then you cannot link another
+-- data repository with file system path @\/ns1\/ns2@.
+--
+-- This path specifies where in your file system files will be exported
+-- from or imported to. This file system directory can be linked to only
+-- one Amazon S3 bucket, and no other S3 bucket can be linked to the
+-- directory.
+--
+-- If you specify only a forward slash (@\/@) as the file system path, you
+-- can link only one data repository to the file system. You can only
+-- specify \"\/\" as the file system path for the first data repository
+-- associated with a file system.
+--
+-- 'importedFileChunkSize', 'createDataRepositoryAssociation_importedFileChunkSize' - For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+--
+-- 's3', 'createDataRepositoryAssociation_s3' - The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx Lustre file system with a data repository association. The
+-- configuration defines which file events (new, changed, or deleted files
+-- or directories) are automatically imported from the linked data
+-- repository to the file system or automatically exported from the file
+-- system to the data repository.
+--
+-- 'tags', 'createDataRepositoryAssociation_tags' - Undocumented member.
+--
+-- 'fileSystemId', 'createDataRepositoryAssociation_fileSystemId' - Undocumented member.
+--
+-- 'dataRepositoryPath', 'createDataRepositoryAssociation_dataRepositoryPath' - The path to the Amazon S3 data repository that will be linked to the
+-- file system. The path can be an S3 bucket or prefix in the format
+-- @s3:\/\/myBucket\/myPrefix\/@. This path specifies where in the S3 data
+-- repository files will be imported from or exported to.
+newCreateDataRepositoryAssociation ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  -- | 'dataRepositoryPath'
+  Prelude.Text ->
+  CreateDataRepositoryAssociation
+newCreateDataRepositoryAssociation
+  pFileSystemId_
+  pDataRepositoryPath_ =
+    CreateDataRepositoryAssociation'
+      { batchImportMetaDataOnCreate =
+          Prelude.Nothing,
+        clientRequestToken = Prelude.Nothing,
+        fileSystemPath = Prelude.Nothing,
+        importedFileChunkSize = Prelude.Nothing,
+        s3 = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        fileSystemId = pFileSystemId_,
+        dataRepositoryPath = pDataRepositoryPath_
+      }
+
+-- | Set to @true@ to run an import data repository task to import metadata
+-- from the data repository to the file system after the data repository
+-- association is created. Default is @false@.
+createDataRepositoryAssociation_batchImportMetaDataOnCreate :: Lens.Lens' CreateDataRepositoryAssociation (Prelude.Maybe Prelude.Bool)
+createDataRepositoryAssociation_batchImportMetaDataOnCreate = Lens.lens (\CreateDataRepositoryAssociation' {batchImportMetaDataOnCreate} -> batchImportMetaDataOnCreate) (\s@CreateDataRepositoryAssociation' {} a -> s {batchImportMetaDataOnCreate = a} :: CreateDataRepositoryAssociation)
+
+-- | Undocumented member.
+createDataRepositoryAssociation_clientRequestToken :: Lens.Lens' CreateDataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+createDataRepositoryAssociation_clientRequestToken = Lens.lens (\CreateDataRepositoryAssociation' {clientRequestToken} -> clientRequestToken) (\s@CreateDataRepositoryAssociation' {} a -> s {clientRequestToken = a} :: CreateDataRepositoryAssociation)
+
+-- | A path on the file system that points to a high-level directory (such as
+-- @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that will be
+-- mapped 1-1 with @DataRepositoryPath@. The leading forward slash in the
+-- name is required. Two data repository associations cannot have
+-- overlapping file system paths. For example, if a data repository is
+-- associated with file system path @\/ns1\/@, then you cannot link another
+-- data repository with file system path @\/ns1\/ns2@.
+--
+-- This path specifies where in your file system files will be exported
+-- from or imported to. This file system directory can be linked to only
+-- one Amazon S3 bucket, and no other S3 bucket can be linked to the
+-- directory.
+--
+-- If you specify only a forward slash (@\/@) as the file system path, you
+-- can link only one data repository to the file system. You can only
+-- specify \"\/\" as the file system path for the first data repository
+-- associated with a file system.
+createDataRepositoryAssociation_fileSystemPath :: Lens.Lens' CreateDataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+createDataRepositoryAssociation_fileSystemPath = Lens.lens (\CreateDataRepositoryAssociation' {fileSystemPath} -> fileSystemPath) (\s@CreateDataRepositoryAssociation' {} a -> s {fileSystemPath = a} :: CreateDataRepositoryAssociation)
+
+-- | For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+createDataRepositoryAssociation_importedFileChunkSize :: Lens.Lens' CreateDataRepositoryAssociation (Prelude.Maybe Prelude.Natural)
+createDataRepositoryAssociation_importedFileChunkSize = Lens.lens (\CreateDataRepositoryAssociation' {importedFileChunkSize} -> importedFileChunkSize) (\s@CreateDataRepositoryAssociation' {} a -> s {importedFileChunkSize = a} :: CreateDataRepositoryAssociation)
+
+-- | The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx Lustre file system with a data repository association. The
+-- configuration defines which file events (new, changed, or deleted files
+-- or directories) are automatically imported from the linked data
+-- repository to the file system or automatically exported from the file
+-- system to the data repository.
+createDataRepositoryAssociation_s3 :: Lens.Lens' CreateDataRepositoryAssociation (Prelude.Maybe S3DataRepositoryConfiguration)
+createDataRepositoryAssociation_s3 = Lens.lens (\CreateDataRepositoryAssociation' {s3} -> s3) (\s@CreateDataRepositoryAssociation' {} a -> s {s3 = a} :: CreateDataRepositoryAssociation)
+
+-- | Undocumented member.
+createDataRepositoryAssociation_tags :: Lens.Lens' CreateDataRepositoryAssociation (Prelude.Maybe (Prelude.NonEmpty Tag))
+createDataRepositoryAssociation_tags = Lens.lens (\CreateDataRepositoryAssociation' {tags} -> tags) (\s@CreateDataRepositoryAssociation' {} a -> s {tags = a} :: CreateDataRepositoryAssociation) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createDataRepositoryAssociation_fileSystemId :: Lens.Lens' CreateDataRepositoryAssociation Prelude.Text
+createDataRepositoryAssociation_fileSystemId = Lens.lens (\CreateDataRepositoryAssociation' {fileSystemId} -> fileSystemId) (\s@CreateDataRepositoryAssociation' {} a -> s {fileSystemId = a} :: CreateDataRepositoryAssociation)
+
+-- | The path to the Amazon S3 data repository that will be linked to the
+-- file system. The path can be an S3 bucket or prefix in the format
+-- @s3:\/\/myBucket\/myPrefix\/@. This path specifies where in the S3 data
+-- repository files will be imported from or exported to.
+createDataRepositoryAssociation_dataRepositoryPath :: Lens.Lens' CreateDataRepositoryAssociation Prelude.Text
+createDataRepositoryAssociation_dataRepositoryPath = Lens.lens (\CreateDataRepositoryAssociation' {dataRepositoryPath} -> dataRepositoryPath) (\s@CreateDataRepositoryAssociation' {} a -> s {dataRepositoryPath = a} :: CreateDataRepositoryAssociation)
+
+instance
+  Core.AWSRequest
+    CreateDataRepositoryAssociation
+  where
+  type
+    AWSResponse CreateDataRepositoryAssociation =
+      CreateDataRepositoryAssociationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDataRepositoryAssociationResponse'
+            Prelude.<$> (x Data..?> "Association")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateDataRepositoryAssociation
+  where
+  hashWithSalt
+    _salt
+    CreateDataRepositoryAssociation' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchImportMetaDataOnCreate
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` fileSystemPath
+        `Prelude.hashWithSalt` importedFileChunkSize
+        `Prelude.hashWithSalt` s3
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` fileSystemId
+        `Prelude.hashWithSalt` dataRepositoryPath
+
+instance
+  Prelude.NFData
+    CreateDataRepositoryAssociation
+  where
+  rnf CreateDataRepositoryAssociation' {..} =
+    Prelude.rnf batchImportMetaDataOnCreate
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemPath
+      `Prelude.seq` Prelude.rnf importedFileChunkSize
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf dataRepositoryPath
+
+instance
+  Data.ToHeaders
+    CreateDataRepositoryAssociation
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateDataRepositoryAssociation" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDataRepositoryAssociation where
+  toJSON CreateDataRepositoryAssociation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchImportMetaDataOnCreate" Data..=)
+              Prelude.<$> batchImportMetaDataOnCreate,
+            ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("FileSystemPath" Data..=)
+              Prelude.<$> fileSystemPath,
+            ("ImportedFileChunkSize" Data..=)
+              Prelude.<$> importedFileChunkSize,
+            ("S3" Data..=) Prelude.<$> s3,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId),
+            Prelude.Just
+              ("DataRepositoryPath" Data..= dataRepositoryPath)
+          ]
+      )
+
+instance Data.ToPath CreateDataRepositoryAssociation where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDataRepositoryAssociation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDataRepositoryAssociationResponse' smart constructor.
+data CreateDataRepositoryAssociationResponse = CreateDataRepositoryAssociationResponse'
+  { -- | The response object returned after the data repository association is
+    -- created.
+    association :: Prelude.Maybe DataRepositoryAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataRepositoryAssociationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'association', 'createDataRepositoryAssociationResponse_association' - The response object returned after the data repository association is
+-- created.
+--
+-- 'httpStatus', 'createDataRepositoryAssociationResponse_httpStatus' - The response's http status code.
+newCreateDataRepositoryAssociationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDataRepositoryAssociationResponse
+newCreateDataRepositoryAssociationResponse
+  pHttpStatus_ =
+    CreateDataRepositoryAssociationResponse'
+      { association =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The response object returned after the data repository association is
+-- created.
+createDataRepositoryAssociationResponse_association :: Lens.Lens' CreateDataRepositoryAssociationResponse (Prelude.Maybe DataRepositoryAssociation)
+createDataRepositoryAssociationResponse_association = Lens.lens (\CreateDataRepositoryAssociationResponse' {association} -> association) (\s@CreateDataRepositoryAssociationResponse' {} a -> s {association = a} :: CreateDataRepositoryAssociationResponse)
+
+-- | The response's http status code.
+createDataRepositoryAssociationResponse_httpStatus :: Lens.Lens' CreateDataRepositoryAssociationResponse Prelude.Int
+createDataRepositoryAssociationResponse_httpStatus = Lens.lens (\CreateDataRepositoryAssociationResponse' {httpStatus} -> httpStatus) (\s@CreateDataRepositoryAssociationResponse' {} a -> s {httpStatus = a} :: CreateDataRepositoryAssociationResponse)
+
+instance
+  Prelude.NFData
+    CreateDataRepositoryAssociationResponse
+  where
+  rnf CreateDataRepositoryAssociationResponse' {..} =
+    Prelude.rnf association
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateDataRepositoryTask.hs b/gen/Amazonka/FSx/CreateDataRepositoryTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateDataRepositoryTask.hs
@@ -0,0 +1,332 @@
+{-# 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.FSx.CreateDataRepositoryTask
+-- 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 FSx for Lustre data repository task. You use data
+-- repository tasks to perform bulk operations between your Amazon FSx file
+-- system and its linked data repositories. An example of a data repository
+-- task is exporting any data and metadata changes, including POSIX
+-- metadata, to files, directories, and symbolic links (symlinks) from your
+-- FSx file system to a linked data repository. A
+-- @CreateDataRepositoryTask@ operation will fail if a data repository is
+-- not linked to the FSx file system. To learn more about data repository
+-- tasks, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-repository-tasks.html Data Repository Tasks>.
+-- To learn more about linking a data repository to your file system, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/create-dra-linked-data-repo.html Linking your file system to an S3 bucket>.
+module Amazonka.FSx.CreateDataRepositoryTask
+  ( -- * Creating a Request
+    CreateDataRepositoryTask (..),
+    newCreateDataRepositoryTask,
+
+    -- * Request Lenses
+    createDataRepositoryTask_capacityToRelease,
+    createDataRepositoryTask_clientRequestToken,
+    createDataRepositoryTask_paths,
+    createDataRepositoryTask_tags,
+    createDataRepositoryTask_type,
+    createDataRepositoryTask_fileSystemId,
+    createDataRepositoryTask_report,
+
+    -- * Destructuring the Response
+    CreateDataRepositoryTaskResponse (..),
+    newCreateDataRepositoryTaskResponse,
+
+    -- * Response Lenses
+    createDataRepositoryTaskResponse_dataRepositoryTask,
+    createDataRepositoryTaskResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDataRepositoryTask' smart constructor.
+data CreateDataRepositoryTask = CreateDataRepositoryTask'
+  { -- | Specifies the amount of data to release, in GiB, by an Amazon File Cache
+    -- @AUTO_RELEASE_DATA@ task that automatically releases files from the
+    -- cache.
+    capacityToRelease :: Prelude.Maybe Prelude.Natural,
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of paths for the data repository task to use when the task is
+    -- processed. If a path that you provide isn\'t valid, the task fails.
+    --
+    -- -   For export tasks, the list contains paths on the Amazon FSx file
+    --     system from which the files are exported to the Amazon S3 bucket.
+    --     The default path is the file system root directory. The paths you
+    --     provide need to be relative to the mount point of the file system.
+    --     If the mount point is @\/mnt\/fsx@ and @\/mnt\/fsx\/path1@ is a
+    --     directory or file on the file system you want to export, then the
+    --     path to provide is @path1@.
+    --
+    -- -   For import tasks, the list contains paths in the Amazon S3 bucket
+    --     from which POSIX metadata changes are imported to the Amazon FSx
+    --     file system. The path can be an S3 bucket or prefix in the format
+    --     @s3:\/\/myBucket\/myPrefix@ (where @myPrefix@ is optional).
+    paths :: Prelude.Maybe [Prelude.Text],
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Specifies the type of data repository task to create.
+    type' :: DataRepositoryTaskType,
+    fileSystemId :: Prelude.Text,
+    -- | Defines whether or not Amazon FSx provides a CompletionReport once the
+    -- task has completed. A CompletionReport provides a detailed report on the
+    -- files that Amazon FSx processed that meet the criteria specified by the
+    -- @Scope@ parameter. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/task-completion-report.html Working with Task Completion Reports>.
+    report :: CompletionReport
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataRepositoryTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'capacityToRelease', 'createDataRepositoryTask_capacityToRelease' - Specifies the amount of data to release, in GiB, by an Amazon File Cache
+-- @AUTO_RELEASE_DATA@ task that automatically releases files from the
+-- cache.
+--
+-- 'clientRequestToken', 'createDataRepositoryTask_clientRequestToken' - Undocumented member.
+--
+-- 'paths', 'createDataRepositoryTask_paths' - A list of paths for the data repository task to use when the task is
+-- processed. If a path that you provide isn\'t valid, the task fails.
+--
+-- -   For export tasks, the list contains paths on the Amazon FSx file
+--     system from which the files are exported to the Amazon S3 bucket.
+--     The default path is the file system root directory. The paths you
+--     provide need to be relative to the mount point of the file system.
+--     If the mount point is @\/mnt\/fsx@ and @\/mnt\/fsx\/path1@ is a
+--     directory or file on the file system you want to export, then the
+--     path to provide is @path1@.
+--
+-- -   For import tasks, the list contains paths in the Amazon S3 bucket
+--     from which POSIX metadata changes are imported to the Amazon FSx
+--     file system. The path can be an S3 bucket or prefix in the format
+--     @s3:\/\/myBucket\/myPrefix@ (where @myPrefix@ is optional).
+--
+-- 'tags', 'createDataRepositoryTask_tags' - Undocumented member.
+--
+-- 'type'', 'createDataRepositoryTask_type' - Specifies the type of data repository task to create.
+--
+-- 'fileSystemId', 'createDataRepositoryTask_fileSystemId' - Undocumented member.
+--
+-- 'report', 'createDataRepositoryTask_report' - Defines whether or not Amazon FSx provides a CompletionReport once the
+-- task has completed. A CompletionReport provides a detailed report on the
+-- files that Amazon FSx processed that meet the criteria specified by the
+-- @Scope@ parameter. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/task-completion-report.html Working with Task Completion Reports>.
+newCreateDataRepositoryTask ::
+  -- | 'type''
+  DataRepositoryTaskType ->
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  -- | 'report'
+  CompletionReport ->
+  CreateDataRepositoryTask
+newCreateDataRepositoryTask
+  pType_
+  pFileSystemId_
+  pReport_ =
+    CreateDataRepositoryTask'
+      { capacityToRelease =
+          Prelude.Nothing,
+        clientRequestToken = Prelude.Nothing,
+        paths = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        type' = pType_,
+        fileSystemId = pFileSystemId_,
+        report = pReport_
+      }
+
+-- | Specifies the amount of data to release, in GiB, by an Amazon File Cache
+-- @AUTO_RELEASE_DATA@ task that automatically releases files from the
+-- cache.
+createDataRepositoryTask_capacityToRelease :: Lens.Lens' CreateDataRepositoryTask (Prelude.Maybe Prelude.Natural)
+createDataRepositoryTask_capacityToRelease = Lens.lens (\CreateDataRepositoryTask' {capacityToRelease} -> capacityToRelease) (\s@CreateDataRepositoryTask' {} a -> s {capacityToRelease = a} :: CreateDataRepositoryTask)
+
+-- | Undocumented member.
+createDataRepositoryTask_clientRequestToken :: Lens.Lens' CreateDataRepositoryTask (Prelude.Maybe Prelude.Text)
+createDataRepositoryTask_clientRequestToken = Lens.lens (\CreateDataRepositoryTask' {clientRequestToken} -> clientRequestToken) (\s@CreateDataRepositoryTask' {} a -> s {clientRequestToken = a} :: CreateDataRepositoryTask)
+
+-- | A list of paths for the data repository task to use when the task is
+-- processed. If a path that you provide isn\'t valid, the task fails.
+--
+-- -   For export tasks, the list contains paths on the Amazon FSx file
+--     system from which the files are exported to the Amazon S3 bucket.
+--     The default path is the file system root directory. The paths you
+--     provide need to be relative to the mount point of the file system.
+--     If the mount point is @\/mnt\/fsx@ and @\/mnt\/fsx\/path1@ is a
+--     directory or file on the file system you want to export, then the
+--     path to provide is @path1@.
+--
+-- -   For import tasks, the list contains paths in the Amazon S3 bucket
+--     from which POSIX metadata changes are imported to the Amazon FSx
+--     file system. The path can be an S3 bucket or prefix in the format
+--     @s3:\/\/myBucket\/myPrefix@ (where @myPrefix@ is optional).
+createDataRepositoryTask_paths :: Lens.Lens' CreateDataRepositoryTask (Prelude.Maybe [Prelude.Text])
+createDataRepositoryTask_paths = Lens.lens (\CreateDataRepositoryTask' {paths} -> paths) (\s@CreateDataRepositoryTask' {} a -> s {paths = a} :: CreateDataRepositoryTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createDataRepositoryTask_tags :: Lens.Lens' CreateDataRepositoryTask (Prelude.Maybe (Prelude.NonEmpty Tag))
+createDataRepositoryTask_tags = Lens.lens (\CreateDataRepositoryTask' {tags} -> tags) (\s@CreateDataRepositoryTask' {} a -> s {tags = a} :: CreateDataRepositoryTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the type of data repository task to create.
+createDataRepositoryTask_type :: Lens.Lens' CreateDataRepositoryTask DataRepositoryTaskType
+createDataRepositoryTask_type = Lens.lens (\CreateDataRepositoryTask' {type'} -> type') (\s@CreateDataRepositoryTask' {} a -> s {type' = a} :: CreateDataRepositoryTask)
+
+-- | Undocumented member.
+createDataRepositoryTask_fileSystemId :: Lens.Lens' CreateDataRepositoryTask Prelude.Text
+createDataRepositoryTask_fileSystemId = Lens.lens (\CreateDataRepositoryTask' {fileSystemId} -> fileSystemId) (\s@CreateDataRepositoryTask' {} a -> s {fileSystemId = a} :: CreateDataRepositoryTask)
+
+-- | Defines whether or not Amazon FSx provides a CompletionReport once the
+-- task has completed. A CompletionReport provides a detailed report on the
+-- files that Amazon FSx processed that meet the criteria specified by the
+-- @Scope@ parameter. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/task-completion-report.html Working with Task Completion Reports>.
+createDataRepositoryTask_report :: Lens.Lens' CreateDataRepositoryTask CompletionReport
+createDataRepositoryTask_report = Lens.lens (\CreateDataRepositoryTask' {report} -> report) (\s@CreateDataRepositoryTask' {} a -> s {report = a} :: CreateDataRepositoryTask)
+
+instance Core.AWSRequest CreateDataRepositoryTask where
+  type
+    AWSResponse CreateDataRepositoryTask =
+      CreateDataRepositoryTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDataRepositoryTaskResponse'
+            Prelude.<$> (x Data..?> "DataRepositoryTask")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDataRepositoryTask where
+  hashWithSalt _salt CreateDataRepositoryTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` capacityToRelease
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` paths
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` report
+
+instance Prelude.NFData CreateDataRepositoryTask where
+  rnf CreateDataRepositoryTask' {..} =
+    Prelude.rnf capacityToRelease
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf paths
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf report
+
+instance Data.ToHeaders CreateDataRepositoryTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateDataRepositoryTask" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDataRepositoryTask where
+  toJSON CreateDataRepositoryTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CapacityToRelease" Data..=)
+              Prelude.<$> capacityToRelease,
+            ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Paths" Data..=) Prelude.<$> paths,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("FileSystemId" Data..= fileSystemId),
+            Prelude.Just ("Report" Data..= report)
+          ]
+      )
+
+instance Data.ToPath CreateDataRepositoryTask where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDataRepositoryTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDataRepositoryTaskResponse' smart constructor.
+data CreateDataRepositoryTaskResponse = CreateDataRepositoryTaskResponse'
+  { -- | The description of the data repository task that you just created.
+    dataRepositoryTask :: Prelude.Maybe DataRepositoryTask,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataRepositoryTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataRepositoryTask', 'createDataRepositoryTaskResponse_dataRepositoryTask' - The description of the data repository task that you just created.
+--
+-- 'httpStatus', 'createDataRepositoryTaskResponse_httpStatus' - The response's http status code.
+newCreateDataRepositoryTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDataRepositoryTaskResponse
+newCreateDataRepositoryTaskResponse pHttpStatus_ =
+  CreateDataRepositoryTaskResponse'
+    { dataRepositoryTask =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the data repository task that you just created.
+createDataRepositoryTaskResponse_dataRepositoryTask :: Lens.Lens' CreateDataRepositoryTaskResponse (Prelude.Maybe DataRepositoryTask)
+createDataRepositoryTaskResponse_dataRepositoryTask = Lens.lens (\CreateDataRepositoryTaskResponse' {dataRepositoryTask} -> dataRepositoryTask) (\s@CreateDataRepositoryTaskResponse' {} a -> s {dataRepositoryTask = a} :: CreateDataRepositoryTaskResponse)
+
+-- | The response's http status code.
+createDataRepositoryTaskResponse_httpStatus :: Lens.Lens' CreateDataRepositoryTaskResponse Prelude.Int
+createDataRepositoryTaskResponse_httpStatus = Lens.lens (\CreateDataRepositoryTaskResponse' {httpStatus} -> httpStatus) (\s@CreateDataRepositoryTaskResponse' {} a -> s {httpStatus = a} :: CreateDataRepositoryTaskResponse)
+
+instance
+  Prelude.NFData
+    CreateDataRepositoryTaskResponse
+  where
+  rnf CreateDataRepositoryTaskResponse' {..} =
+    Prelude.rnf dataRepositoryTask
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateFileCache.hs b/gen/Amazonka/FSx/CreateFileCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateFileCache.hs
@@ -0,0 +1,440 @@
+{-# 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.FSx.CreateFileCache
+-- 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 new Amazon File Cache resource.
+--
+-- You can use this operation with a client request token in the request
+-- that Amazon File Cache uses to ensure idempotent creation. If a cache
+-- with the specified client request token exists and the parameters match,
+-- @CreateFileCache@ returns the description of the existing cache. If a
+-- cache with the specified client request token exists and the parameters
+-- don\'t match, this call returns @IncompatibleParameterError@. If a file
+-- cache with the specified client request token doesn\'t exist,
+-- @CreateFileCache@ does the following:
+--
+-- -   Creates a new, empty Amazon File Cache resourcewith an assigned ID,
+--     and an initial lifecycle state of @CREATING@.
+--
+-- -   Returns the description of the cache in JSON format.
+--
+-- The @CreateFileCache@ call returns while the cache\'s lifecycle state is
+-- still @CREATING@. You can check the cache creation status by calling the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileCaches.html DescribeFileCaches>
+-- operation, which returns the cache state along with other information.
+module Amazonka.FSx.CreateFileCache
+  ( -- * Creating a Request
+    CreateFileCache (..),
+    newCreateFileCache,
+
+    -- * Request Lenses
+    createFileCache_clientRequestToken,
+    createFileCache_copyTagsToDataRepositoryAssociations,
+    createFileCache_dataRepositoryAssociations,
+    createFileCache_kmsKeyId,
+    createFileCache_lustreConfiguration,
+    createFileCache_securityGroupIds,
+    createFileCache_tags,
+    createFileCache_fileCacheType,
+    createFileCache_fileCacheTypeVersion,
+    createFileCache_storageCapacity,
+    createFileCache_subnetIds,
+
+    -- * Destructuring the Response
+    CreateFileCacheResponse (..),
+    newCreateFileCacheResponse,
+
+    -- * Response Lenses
+    createFileCacheResponse_fileCache,
+    createFileCacheResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateFileCache' smart constructor.
+data CreateFileCache = CreateFileCache'
+  { -- | An idempotency token for resource creation, in a string of up to 64
+    -- ASCII characters. This token is automatically filled on your behalf when
+    -- you use the Command Line Interface (CLI) or an Amazon Web Services SDK.
+    --
+    -- By using the idempotent operation, you can retry a @CreateFileCache@
+    -- operation without the risk of creating an extra cache. This approach can
+    -- be useful when an initial call fails in a way that makes it unclear
+    -- whether a cache was created. Examples are if a transport level timeout
+    -- occurred, or your connection was reset. If you use the same client
+    -- request token and the initial call created a cache, the client receives
+    -- success as long as the parameters are the same.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A boolean flag indicating whether tags for the cache should be copied to
+    -- data repository associations. This value defaults to false.
+    copyTagsToDataRepositoryAssociations :: Prelude.Maybe Prelude.Bool,
+    -- | A list of up to 8 configurations for data repository associations (DRAs)
+    -- to be created during the cache creation. The DRAs link the cache to
+    -- either an Amazon S3 data repository or a Network File System (NFS) data
+    -- repository that supports the NFSv3 protocol.
+    --
+    -- The DRA configurations must meet the following requirements:
+    --
+    -- -   All configurations on the list must be of the same data repository
+    --     type, either all S3 or all NFS. A cache can\'t link to different
+    --     data repository types at the same time.
+    --
+    -- -   An NFS DRA must link to an NFS file system that supports the NFSv3
+    --     protocol.
+    --
+    -- DRA automatic import and automatic export is not supported.
+    dataRepositoryAssociations :: Prelude.Maybe [FileCacheDataRepositoryAssociation],
+    -- | Specifies the ID of the Key Management Service (KMS) key to use for
+    -- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+    -- specified, the Amazon FSx-managed KMS key for your account is used. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+    -- in the /Key Management Service API Reference/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The configuration for the Amazon File Cache resource being created.
+    lustreConfiguration :: Prelude.Maybe CreateFileCacheLustreConfiguration,
+    -- | A list of IDs specifying the security groups to apply to all network
+    -- interfaces created for Amazon File Cache access. This list isn\'t
+    -- returned in later requests to describe the cache.
+    securityGroupIds :: Prelude.Maybe [Prelude.Text],
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The type of cache that you\'re creating, which must be @LUSTRE@.
+    fileCacheType :: FileCacheType,
+    -- | Sets the Lustre version for the cache that you\'re creating, which must
+    -- be @2.12@.
+    fileCacheTypeVersion :: Prelude.Text,
+    -- | The storage capacity of the cache in gibibytes (GiB). Valid values are
+    -- 1200 GiB, 2400 GiB, and increments of 2400 GiB.
+    storageCapacity :: Prelude.Natural,
+    subnetIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileCache' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createFileCache_clientRequestToken' - An idempotency token for resource creation, in a string of up to 64
+-- ASCII characters. This token is automatically filled on your behalf when
+-- you use the Command Line Interface (CLI) or an Amazon Web Services SDK.
+--
+-- By using the idempotent operation, you can retry a @CreateFileCache@
+-- operation without the risk of creating an extra cache. This approach can
+-- be useful when an initial call fails in a way that makes it unclear
+-- whether a cache was created. Examples are if a transport level timeout
+-- occurred, or your connection was reset. If you use the same client
+-- request token and the initial call created a cache, the client receives
+-- success as long as the parameters are the same.
+--
+-- 'copyTagsToDataRepositoryAssociations', 'createFileCache_copyTagsToDataRepositoryAssociations' - A boolean flag indicating whether tags for the cache should be copied to
+-- data repository associations. This value defaults to false.
+--
+-- 'dataRepositoryAssociations', 'createFileCache_dataRepositoryAssociations' - A list of up to 8 configurations for data repository associations (DRAs)
+-- to be created during the cache creation. The DRAs link the cache to
+-- either an Amazon S3 data repository or a Network File System (NFS) data
+-- repository that supports the NFSv3 protocol.
+--
+-- The DRA configurations must meet the following requirements:
+--
+-- -   All configurations on the list must be of the same data repository
+--     type, either all S3 or all NFS. A cache can\'t link to different
+--     data repository types at the same time.
+--
+-- -   An NFS DRA must link to an NFS file system that supports the NFSv3
+--     protocol.
+--
+-- DRA automatic import and automatic export is not supported.
+--
+-- 'kmsKeyId', 'createFileCache_kmsKeyId' - Specifies the ID of the Key Management Service (KMS) key to use for
+-- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+-- specified, the Amazon FSx-managed KMS key for your account is used. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+-- in the /Key Management Service API Reference/.
+--
+-- 'lustreConfiguration', 'createFileCache_lustreConfiguration' - The configuration for the Amazon File Cache resource being created.
+--
+-- 'securityGroupIds', 'createFileCache_securityGroupIds' - A list of IDs specifying the security groups to apply to all network
+-- interfaces created for Amazon File Cache access. This list isn\'t
+-- returned in later requests to describe the cache.
+--
+-- 'tags', 'createFileCache_tags' - Undocumented member.
+--
+-- 'fileCacheType', 'createFileCache_fileCacheType' - The type of cache that you\'re creating, which must be @LUSTRE@.
+--
+-- 'fileCacheTypeVersion', 'createFileCache_fileCacheTypeVersion' - Sets the Lustre version for the cache that you\'re creating, which must
+-- be @2.12@.
+--
+-- 'storageCapacity', 'createFileCache_storageCapacity' - The storage capacity of the cache in gibibytes (GiB). Valid values are
+-- 1200 GiB, 2400 GiB, and increments of 2400 GiB.
+--
+-- 'subnetIds', 'createFileCache_subnetIds' - Undocumented member.
+newCreateFileCache ::
+  -- | 'fileCacheType'
+  FileCacheType ->
+  -- | 'fileCacheTypeVersion'
+  Prelude.Text ->
+  -- | 'storageCapacity'
+  Prelude.Natural ->
+  CreateFileCache
+newCreateFileCache
+  pFileCacheType_
+  pFileCacheTypeVersion_
+  pStorageCapacity_ =
+    CreateFileCache'
+      { clientRequestToken =
+          Prelude.Nothing,
+        copyTagsToDataRepositoryAssociations =
+          Prelude.Nothing,
+        dataRepositoryAssociations = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        lustreConfiguration = Prelude.Nothing,
+        securityGroupIds = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        fileCacheType = pFileCacheType_,
+        fileCacheTypeVersion = pFileCacheTypeVersion_,
+        storageCapacity = pStorageCapacity_,
+        subnetIds = Prelude.mempty
+      }
+
+-- | An idempotency token for resource creation, in a string of up to 64
+-- ASCII characters. This token is automatically filled on your behalf when
+-- you use the Command Line Interface (CLI) or an Amazon Web Services SDK.
+--
+-- By using the idempotent operation, you can retry a @CreateFileCache@
+-- operation without the risk of creating an extra cache. This approach can
+-- be useful when an initial call fails in a way that makes it unclear
+-- whether a cache was created. Examples are if a transport level timeout
+-- occurred, or your connection was reset. If you use the same client
+-- request token and the initial call created a cache, the client receives
+-- success as long as the parameters are the same.
+createFileCache_clientRequestToken :: Lens.Lens' CreateFileCache (Prelude.Maybe Prelude.Text)
+createFileCache_clientRequestToken = Lens.lens (\CreateFileCache' {clientRequestToken} -> clientRequestToken) (\s@CreateFileCache' {} a -> s {clientRequestToken = a} :: CreateFileCache)
+
+-- | A boolean flag indicating whether tags for the cache should be copied to
+-- data repository associations. This value defaults to false.
+createFileCache_copyTagsToDataRepositoryAssociations :: Lens.Lens' CreateFileCache (Prelude.Maybe Prelude.Bool)
+createFileCache_copyTagsToDataRepositoryAssociations = Lens.lens (\CreateFileCache' {copyTagsToDataRepositoryAssociations} -> copyTagsToDataRepositoryAssociations) (\s@CreateFileCache' {} a -> s {copyTagsToDataRepositoryAssociations = a} :: CreateFileCache)
+
+-- | A list of up to 8 configurations for data repository associations (DRAs)
+-- to be created during the cache creation. The DRAs link the cache to
+-- either an Amazon S3 data repository or a Network File System (NFS) data
+-- repository that supports the NFSv3 protocol.
+--
+-- The DRA configurations must meet the following requirements:
+--
+-- -   All configurations on the list must be of the same data repository
+--     type, either all S3 or all NFS. A cache can\'t link to different
+--     data repository types at the same time.
+--
+-- -   An NFS DRA must link to an NFS file system that supports the NFSv3
+--     protocol.
+--
+-- DRA automatic import and automatic export is not supported.
+createFileCache_dataRepositoryAssociations :: Lens.Lens' CreateFileCache (Prelude.Maybe [FileCacheDataRepositoryAssociation])
+createFileCache_dataRepositoryAssociations = Lens.lens (\CreateFileCache' {dataRepositoryAssociations} -> dataRepositoryAssociations) (\s@CreateFileCache' {} a -> s {dataRepositoryAssociations = a} :: CreateFileCache) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the ID of the Key Management Service (KMS) key to use for
+-- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+-- specified, the Amazon FSx-managed KMS key for your account is used. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+-- in the /Key Management Service API Reference/.
+createFileCache_kmsKeyId :: Lens.Lens' CreateFileCache (Prelude.Maybe Prelude.Text)
+createFileCache_kmsKeyId = Lens.lens (\CreateFileCache' {kmsKeyId} -> kmsKeyId) (\s@CreateFileCache' {} a -> s {kmsKeyId = a} :: CreateFileCache)
+
+-- | The configuration for the Amazon File Cache resource being created.
+createFileCache_lustreConfiguration :: Lens.Lens' CreateFileCache (Prelude.Maybe CreateFileCacheLustreConfiguration)
+createFileCache_lustreConfiguration = Lens.lens (\CreateFileCache' {lustreConfiguration} -> lustreConfiguration) (\s@CreateFileCache' {} a -> s {lustreConfiguration = a} :: CreateFileCache)
+
+-- | A list of IDs specifying the security groups to apply to all network
+-- interfaces created for Amazon File Cache access. This list isn\'t
+-- returned in later requests to describe the cache.
+createFileCache_securityGroupIds :: Lens.Lens' CreateFileCache (Prelude.Maybe [Prelude.Text])
+createFileCache_securityGroupIds = Lens.lens (\CreateFileCache' {securityGroupIds} -> securityGroupIds) (\s@CreateFileCache' {} a -> s {securityGroupIds = a} :: CreateFileCache) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createFileCache_tags :: Lens.Lens' CreateFileCache (Prelude.Maybe (Prelude.NonEmpty Tag))
+createFileCache_tags = Lens.lens (\CreateFileCache' {tags} -> tags) (\s@CreateFileCache' {} a -> s {tags = a} :: CreateFileCache) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of cache that you\'re creating, which must be @LUSTRE@.
+createFileCache_fileCacheType :: Lens.Lens' CreateFileCache FileCacheType
+createFileCache_fileCacheType = Lens.lens (\CreateFileCache' {fileCacheType} -> fileCacheType) (\s@CreateFileCache' {} a -> s {fileCacheType = a} :: CreateFileCache)
+
+-- | Sets the Lustre version for the cache that you\'re creating, which must
+-- be @2.12@.
+createFileCache_fileCacheTypeVersion :: Lens.Lens' CreateFileCache Prelude.Text
+createFileCache_fileCacheTypeVersion = Lens.lens (\CreateFileCache' {fileCacheTypeVersion} -> fileCacheTypeVersion) (\s@CreateFileCache' {} a -> s {fileCacheTypeVersion = a} :: CreateFileCache)
+
+-- | The storage capacity of the cache in gibibytes (GiB). Valid values are
+-- 1200 GiB, 2400 GiB, and increments of 2400 GiB.
+createFileCache_storageCapacity :: Lens.Lens' CreateFileCache Prelude.Natural
+createFileCache_storageCapacity = Lens.lens (\CreateFileCache' {storageCapacity} -> storageCapacity) (\s@CreateFileCache' {} a -> s {storageCapacity = a} :: CreateFileCache)
+
+-- | Undocumented member.
+createFileCache_subnetIds :: Lens.Lens' CreateFileCache [Prelude.Text]
+createFileCache_subnetIds = Lens.lens (\CreateFileCache' {subnetIds} -> subnetIds) (\s@CreateFileCache' {} a -> s {subnetIds = a} :: CreateFileCache) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateFileCache where
+  type
+    AWSResponse CreateFileCache =
+      CreateFileCacheResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFileCacheResponse'
+            Prelude.<$> (x Data..?> "FileCache")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFileCache where
+  hashWithSalt _salt CreateFileCache' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` copyTagsToDataRepositoryAssociations
+      `Prelude.hashWithSalt` dataRepositoryAssociations
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` fileCacheType
+      `Prelude.hashWithSalt` fileCacheTypeVersion
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` subnetIds
+
+instance Prelude.NFData CreateFileCache where
+  rnf CreateFileCache' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf copyTagsToDataRepositoryAssociations
+      `Prelude.seq` Prelude.rnf dataRepositoryAssociations
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf fileCacheType
+      `Prelude.seq` Prelude.rnf fileCacheTypeVersion
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf subnetIds
+
+instance Data.ToHeaders CreateFileCache where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateFileCache" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFileCache where
+  toJSON CreateFileCache' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("CopyTagsToDataRepositoryAssociations" Data..=)
+              Prelude.<$> copyTagsToDataRepositoryAssociations,
+            ("DataRepositoryAssociations" Data..=)
+              Prelude.<$> dataRepositoryAssociations,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("LustreConfiguration" Data..=)
+              Prelude.<$> lustreConfiguration,
+            ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("FileCacheType" Data..= fileCacheType),
+            Prelude.Just
+              ( "FileCacheTypeVersion"
+                  Data..= fileCacheTypeVersion
+              ),
+            Prelude.Just
+              ("StorageCapacity" Data..= storageCapacity),
+            Prelude.Just ("SubnetIds" Data..= subnetIds)
+          ]
+      )
+
+instance Data.ToPath CreateFileCache where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateFileCache where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFileCacheResponse' smart constructor.
+data CreateFileCacheResponse = CreateFileCacheResponse'
+  { -- | A description of the cache that was created.
+    fileCache :: Prelude.Maybe FileCacheCreating,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileCacheResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileCache', 'createFileCacheResponse_fileCache' - A description of the cache that was created.
+--
+-- 'httpStatus', 'createFileCacheResponse_httpStatus' - The response's http status code.
+newCreateFileCacheResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateFileCacheResponse
+newCreateFileCacheResponse pHttpStatus_ =
+  CreateFileCacheResponse'
+    { fileCache =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the cache that was created.
+createFileCacheResponse_fileCache :: Lens.Lens' CreateFileCacheResponse (Prelude.Maybe FileCacheCreating)
+createFileCacheResponse_fileCache = Lens.lens (\CreateFileCacheResponse' {fileCache} -> fileCache) (\s@CreateFileCacheResponse' {} a -> s {fileCache = a} :: CreateFileCacheResponse)
+
+-- | The response's http status code.
+createFileCacheResponse_httpStatus :: Lens.Lens' CreateFileCacheResponse Prelude.Int
+createFileCacheResponse_httpStatus = Lens.lens (\CreateFileCacheResponse' {httpStatus} -> httpStatus) (\s@CreateFileCacheResponse' {} a -> s {httpStatus = a} :: CreateFileCacheResponse)
+
+instance Prelude.NFData CreateFileCacheResponse where
+  rnf CreateFileCacheResponse' {..} =
+    Prelude.rnf fileCache
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateFileSystem.hs b/gen/Amazonka/FSx/CreateFileSystem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateFileSystem.hs
@@ -0,0 +1,625 @@
+{-# 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.FSx.CreateFileSystem
+-- 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 new, empty Amazon FSx file system. You can create the
+-- following supported Amazon FSx file systems using the @CreateFileSystem@
+-- API operation:
+--
+-- -   Amazon FSx for Lustre
+--
+-- -   Amazon FSx for NetApp ONTAP
+--
+-- -   Amazon FSx for OpenZFS
+--
+-- -   Amazon FSx for Windows File Server
+--
+-- This operation requires a client request token in the request that
+-- Amazon FSx uses to ensure idempotent creation. This means that calling
+-- the operation multiple times with the same client request token has no
+-- effect. By using the idempotent operation, you can retry a
+-- @CreateFileSystem@ operation without the risk of creating an extra file
+-- system. This approach can be useful when an initial call fails in a way
+-- that makes it unclear whether a file system was created. Examples are if
+-- a transport level timeout occurred, or your connection was reset. If you
+-- use the same client request token and the initial call created a file
+-- system, the client receives success as long as the parameters are the
+-- same.
+--
+-- If a file system with the specified client request token exists and the
+-- parameters match, @CreateFileSystem@ returns the description of the
+-- existing file system. If a file system with the specified client request
+-- token exists and the parameters don\'t match, this call returns
+-- @IncompatibleParameterError@. If a file system with the specified client
+-- request token doesn\'t exist, @CreateFileSystem@ does the following:
+--
+-- -   Creates a new, empty Amazon FSx file system with an assigned ID, and
+--     an initial lifecycle state of @CREATING@.
+--
+-- -   Returns the description of the file system in JSON format.
+--
+-- The @CreateFileSystem@ call returns while the file system\'s lifecycle
+-- state is still @CREATING@. You can check the file-system creation status
+-- by calling the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html DescribeFileSystems>
+-- operation, which returns the file system state along with other
+-- information.
+module Amazonka.FSx.CreateFileSystem
+  ( -- * Creating a Request
+    CreateFileSystem (..),
+    newCreateFileSystem,
+
+    -- * Request Lenses
+    createFileSystem_clientRequestToken,
+    createFileSystem_fileSystemTypeVersion,
+    createFileSystem_kmsKeyId,
+    createFileSystem_lustreConfiguration,
+    createFileSystem_ontapConfiguration,
+    createFileSystem_openZFSConfiguration,
+    createFileSystem_securityGroupIds,
+    createFileSystem_storageType,
+    createFileSystem_tags,
+    createFileSystem_windowsConfiguration,
+    createFileSystem_fileSystemType,
+    createFileSystem_storageCapacity,
+    createFileSystem_subnetIds,
+
+    -- * Destructuring the Response
+    CreateFileSystemResponse (..),
+    newCreateFileSystemResponse,
+
+    -- * Response Lenses
+    createFileSystemResponse_fileSystem,
+    createFileSystemResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object used to create a new Amazon FSx file system.
+--
+-- /See:/ 'newCreateFileSystem' smart constructor.
+data CreateFileSystem = CreateFileSystem'
+  { -- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+    -- idempotent creation. This string is automatically filled on your behalf
+    -- when you use the Command Line Interface (CLI) or an Amazon Web Services
+    -- SDK.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) For FSx for Lustre file systems, sets the Lustre version for
+    -- the file system that you\'re creating. Valid values are @2.10@ and
+    -- @2.12@:
+    --
+    -- -   2.10 is supported by the Scratch and Persistent_1 Lustre deployment
+    --     types.
+    --
+    -- -   2.12 is supported by all Lustre deployment types. @2.12@ is required
+    --     when setting FSx for Lustre @DeploymentType@ to @PERSISTENT_2@.
+    --
+    -- Default value = @2.10@, except when @DeploymentType@ is set to
+    -- @PERSISTENT_2@, then the default is @2.12@.
+    --
+    -- If you set @FileSystemTypeVersion@ to @2.10@ for a @PERSISTENT_2@ Lustre
+    -- deployment type, the @CreateFileSystem@ operation fails.
+    fileSystemTypeVersion :: Prelude.Maybe Prelude.Text,
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    lustreConfiguration :: Prelude.Maybe CreateFileSystemLustreConfiguration,
+    ontapConfiguration :: Prelude.Maybe CreateFileSystemOntapConfiguration,
+    -- | The OpenZFS configuration for the file system that\'s being created.
+    openZFSConfiguration :: Prelude.Maybe CreateFileSystemOpenZFSConfiguration,
+    -- | A list of IDs specifying the security groups to apply to all network
+    -- interfaces created for file system access. This list isn\'t returned in
+    -- later requests to describe the file system.
+    securityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | Sets the storage type for the file system that you\'re creating. Valid
+    -- values are @SSD@ and @HDD@.
+    --
+    -- -   Set to @SSD@ to use solid state drive storage. SSD is supported on
+    --     all Windows, Lustre, ONTAP, and OpenZFS deployment types.
+    --
+    -- -   Set to @HDD@ to use hard disk drive storage. HDD is supported on
+    --     @SINGLE_AZ_2@ and @MULTI_AZ_1@ Windows file system deployment types,
+    --     and on @PERSISTENT_1@ Lustre file system deployment types.
+    --
+    -- Default value is @SSD@. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options Storage type options>
+    -- in the /FSx for Windows File Server User Guide/ and
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options Multiple storage options>
+    -- in the /FSx for Lustre User Guide/.
+    storageType :: Prelude.Maybe StorageType,
+    -- | The tags to apply to the file system that\'s being created. The key
+    -- value of the @Name@ tag appears in the console as the file system name.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The Microsoft Windows configuration for the file system that\'s being
+    -- created.
+    windowsConfiguration :: Prelude.Maybe CreateFileSystemWindowsConfiguration,
+    -- | The type of Amazon FSx file system to create. Valid values are
+    -- @WINDOWS@, @LUSTRE@, @ONTAP@, and @OPENZFS@.
+    fileSystemType :: FileSystemType,
+    -- | Sets the storage capacity of the file system that you\'re creating, in
+    -- gibibytes (GiB).
+    --
+    -- __FSx for Lustre file systems__ - The amount of storage capacity that
+    -- you can configure depends on the value that you set for @StorageType@
+    -- and the Lustre @DeploymentType@, as follows:
+    --
+    -- -   For @SCRATCH_2@, @PERSISTENT_2@ and @PERSISTENT_1@ deployment types
+    --     using SSD storage type, the valid values are 1200 GiB, 2400 GiB, and
+    --     increments of 2400 GiB.
+    --
+    -- -   For @PERSISTENT_1@ HDD file systems, valid values are increments of
+    --     6000 GiB for 12 MB\/s\/TiB file systems and increments of 1800 GiB
+    --     for 40 MB\/s\/TiB file systems.
+    --
+    -- -   For @SCRATCH_1@ deployment type, valid values are 1200 GiB, 2400
+    --     GiB, and increments of 3600 GiB.
+    --
+    -- __FSx for ONTAP file systems__ - The amount of storage capacity that you
+    -- can configure is from 1024 GiB up to 196,608 GiB (192 TiB).
+    --
+    -- __FSx for OpenZFS file systems__ - The amount of storage capacity that
+    -- you can configure is from 64 GiB up to 524,288 GiB (512 TiB).
+    --
+    -- __FSx for Windows File Server file systems__ - The amount of storage
+    -- capacity that you can configure depends on the value that you set for
+    -- @StorageType@ as follows:
+    --
+    -- -   For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
+    --
+    -- -   For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
+    storageCapacity :: Prelude.Natural,
+    -- | Specifies the IDs of the subnets that the file system will be accessible
+    -- from. For Windows and ONTAP @MULTI_AZ_1@ deployment types,provide
+    -- exactly two subnet IDs, one for the preferred file server and one for
+    -- the standby file server. You specify one of these subnets as the
+    -- preferred subnet using the @WindowsConfiguration > PreferredSubnetID@ or
+    -- @OntapConfiguration > PreferredSubnetID@ properties. For more
+    -- information about Multi-AZ file system configuration, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and durability: Single-AZ and Multi-AZ file systems>
+    -- in the /Amazon FSx for Windows User Guide/ and
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html Availability and durability>
+    -- in the /Amazon FSx for ONTAP User Guide/.
+    --
+    -- For Windows @SINGLE_AZ_1@ and @SINGLE_AZ_2@ and all Lustre deployment
+    -- types, provide exactly one subnet ID. The file server is launched in
+    -- that subnet\'s Availability Zone.
+    subnetIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createFileSystem_clientRequestToken' - A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent creation. This string is automatically filled on your behalf
+-- when you use the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+--
+-- 'fileSystemTypeVersion', 'createFileSystem_fileSystemTypeVersion' - (Optional) For FSx for Lustre file systems, sets the Lustre version for
+-- the file system that you\'re creating. Valid values are @2.10@ and
+-- @2.12@:
+--
+-- -   2.10 is supported by the Scratch and Persistent_1 Lustre deployment
+--     types.
+--
+-- -   2.12 is supported by all Lustre deployment types. @2.12@ is required
+--     when setting FSx for Lustre @DeploymentType@ to @PERSISTENT_2@.
+--
+-- Default value = @2.10@, except when @DeploymentType@ is set to
+-- @PERSISTENT_2@, then the default is @2.12@.
+--
+-- If you set @FileSystemTypeVersion@ to @2.10@ for a @PERSISTENT_2@ Lustre
+-- deployment type, the @CreateFileSystem@ operation fails.
+--
+-- 'kmsKeyId', 'createFileSystem_kmsKeyId' - Undocumented member.
+--
+-- 'lustreConfiguration', 'createFileSystem_lustreConfiguration' - Undocumented member.
+--
+-- 'ontapConfiguration', 'createFileSystem_ontapConfiguration' - Undocumented member.
+--
+-- 'openZFSConfiguration', 'createFileSystem_openZFSConfiguration' - The OpenZFS configuration for the file system that\'s being created.
+--
+-- 'securityGroupIds', 'createFileSystem_securityGroupIds' - A list of IDs specifying the security groups to apply to all network
+-- interfaces created for file system access. This list isn\'t returned in
+-- later requests to describe the file system.
+--
+-- 'storageType', 'createFileSystem_storageType' - Sets the storage type for the file system that you\'re creating. Valid
+-- values are @SSD@ and @HDD@.
+--
+-- -   Set to @SSD@ to use solid state drive storage. SSD is supported on
+--     all Windows, Lustre, ONTAP, and OpenZFS deployment types.
+--
+-- -   Set to @HDD@ to use hard disk drive storage. HDD is supported on
+--     @SINGLE_AZ_2@ and @MULTI_AZ_1@ Windows file system deployment types,
+--     and on @PERSISTENT_1@ Lustre file system deployment types.
+--
+-- Default value is @SSD@. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options Storage type options>
+-- in the /FSx for Windows File Server User Guide/ and
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options Multiple storage options>
+-- in the /FSx for Lustre User Guide/.
+--
+-- 'tags', 'createFileSystem_tags' - The tags to apply to the file system that\'s being created. The key
+-- value of the @Name@ tag appears in the console as the file system name.
+--
+-- 'windowsConfiguration', 'createFileSystem_windowsConfiguration' - The Microsoft Windows configuration for the file system that\'s being
+-- created.
+--
+-- 'fileSystemType', 'createFileSystem_fileSystemType' - The type of Amazon FSx file system to create. Valid values are
+-- @WINDOWS@, @LUSTRE@, @ONTAP@, and @OPENZFS@.
+--
+-- 'storageCapacity', 'createFileSystem_storageCapacity' - Sets the storage capacity of the file system that you\'re creating, in
+-- gibibytes (GiB).
+--
+-- __FSx for Lustre file systems__ - The amount of storage capacity that
+-- you can configure depends on the value that you set for @StorageType@
+-- and the Lustre @DeploymentType@, as follows:
+--
+-- -   For @SCRATCH_2@, @PERSISTENT_2@ and @PERSISTENT_1@ deployment types
+--     using SSD storage type, the valid values are 1200 GiB, 2400 GiB, and
+--     increments of 2400 GiB.
+--
+-- -   For @PERSISTENT_1@ HDD file systems, valid values are increments of
+--     6000 GiB for 12 MB\/s\/TiB file systems and increments of 1800 GiB
+--     for 40 MB\/s\/TiB file systems.
+--
+-- -   For @SCRATCH_1@ deployment type, valid values are 1200 GiB, 2400
+--     GiB, and increments of 3600 GiB.
+--
+-- __FSx for ONTAP file systems__ - The amount of storage capacity that you
+-- can configure is from 1024 GiB up to 196,608 GiB (192 TiB).
+--
+-- __FSx for OpenZFS file systems__ - The amount of storage capacity that
+-- you can configure is from 64 GiB up to 524,288 GiB (512 TiB).
+--
+-- __FSx for Windows File Server file systems__ - The amount of storage
+-- capacity that you can configure depends on the value that you set for
+-- @StorageType@ as follows:
+--
+-- -   For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
+--
+-- -   For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
+--
+-- 'subnetIds', 'createFileSystem_subnetIds' - Specifies the IDs of the subnets that the file system will be accessible
+-- from. For Windows and ONTAP @MULTI_AZ_1@ deployment types,provide
+-- exactly two subnet IDs, one for the preferred file server and one for
+-- the standby file server. You specify one of these subnets as the
+-- preferred subnet using the @WindowsConfiguration > PreferredSubnetID@ or
+-- @OntapConfiguration > PreferredSubnetID@ properties. For more
+-- information about Multi-AZ file system configuration, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and durability: Single-AZ and Multi-AZ file systems>
+-- in the /Amazon FSx for Windows User Guide/ and
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html Availability and durability>
+-- in the /Amazon FSx for ONTAP User Guide/.
+--
+-- For Windows @SINGLE_AZ_1@ and @SINGLE_AZ_2@ and all Lustre deployment
+-- types, provide exactly one subnet ID. The file server is launched in
+-- that subnet\'s Availability Zone.
+newCreateFileSystem ::
+  -- | 'fileSystemType'
+  FileSystemType ->
+  -- | 'storageCapacity'
+  Prelude.Natural ->
+  CreateFileSystem
+newCreateFileSystem
+  pFileSystemType_
+  pStorageCapacity_ =
+    CreateFileSystem'
+      { clientRequestToken =
+          Prelude.Nothing,
+        fileSystemTypeVersion = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        lustreConfiguration = Prelude.Nothing,
+        ontapConfiguration = Prelude.Nothing,
+        openZFSConfiguration = Prelude.Nothing,
+        securityGroupIds = Prelude.Nothing,
+        storageType = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        windowsConfiguration = Prelude.Nothing,
+        fileSystemType = pFileSystemType_,
+        storageCapacity = pStorageCapacity_,
+        subnetIds = Prelude.mempty
+      }
+
+-- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent creation. This string is automatically filled on your behalf
+-- when you use the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+createFileSystem_clientRequestToken :: Lens.Lens' CreateFileSystem (Prelude.Maybe Prelude.Text)
+createFileSystem_clientRequestToken = Lens.lens (\CreateFileSystem' {clientRequestToken} -> clientRequestToken) (\s@CreateFileSystem' {} a -> s {clientRequestToken = a} :: CreateFileSystem)
+
+-- | (Optional) For FSx for Lustre file systems, sets the Lustre version for
+-- the file system that you\'re creating. Valid values are @2.10@ and
+-- @2.12@:
+--
+-- -   2.10 is supported by the Scratch and Persistent_1 Lustre deployment
+--     types.
+--
+-- -   2.12 is supported by all Lustre deployment types. @2.12@ is required
+--     when setting FSx for Lustre @DeploymentType@ to @PERSISTENT_2@.
+--
+-- Default value = @2.10@, except when @DeploymentType@ is set to
+-- @PERSISTENT_2@, then the default is @2.12@.
+--
+-- If you set @FileSystemTypeVersion@ to @2.10@ for a @PERSISTENT_2@ Lustre
+-- deployment type, the @CreateFileSystem@ operation fails.
+createFileSystem_fileSystemTypeVersion :: Lens.Lens' CreateFileSystem (Prelude.Maybe Prelude.Text)
+createFileSystem_fileSystemTypeVersion = Lens.lens (\CreateFileSystem' {fileSystemTypeVersion} -> fileSystemTypeVersion) (\s@CreateFileSystem' {} a -> s {fileSystemTypeVersion = a} :: CreateFileSystem)
+
+-- | Undocumented member.
+createFileSystem_kmsKeyId :: Lens.Lens' CreateFileSystem (Prelude.Maybe Prelude.Text)
+createFileSystem_kmsKeyId = Lens.lens (\CreateFileSystem' {kmsKeyId} -> kmsKeyId) (\s@CreateFileSystem' {} a -> s {kmsKeyId = a} :: CreateFileSystem)
+
+-- | Undocumented member.
+createFileSystem_lustreConfiguration :: Lens.Lens' CreateFileSystem (Prelude.Maybe CreateFileSystemLustreConfiguration)
+createFileSystem_lustreConfiguration = Lens.lens (\CreateFileSystem' {lustreConfiguration} -> lustreConfiguration) (\s@CreateFileSystem' {} a -> s {lustreConfiguration = a} :: CreateFileSystem)
+
+-- | Undocumented member.
+createFileSystem_ontapConfiguration :: Lens.Lens' CreateFileSystem (Prelude.Maybe CreateFileSystemOntapConfiguration)
+createFileSystem_ontapConfiguration = Lens.lens (\CreateFileSystem' {ontapConfiguration} -> ontapConfiguration) (\s@CreateFileSystem' {} a -> s {ontapConfiguration = a} :: CreateFileSystem)
+
+-- | The OpenZFS configuration for the file system that\'s being created.
+createFileSystem_openZFSConfiguration :: Lens.Lens' CreateFileSystem (Prelude.Maybe CreateFileSystemOpenZFSConfiguration)
+createFileSystem_openZFSConfiguration = Lens.lens (\CreateFileSystem' {openZFSConfiguration} -> openZFSConfiguration) (\s@CreateFileSystem' {} a -> s {openZFSConfiguration = a} :: CreateFileSystem)
+
+-- | A list of IDs specifying the security groups to apply to all network
+-- interfaces created for file system access. This list isn\'t returned in
+-- later requests to describe the file system.
+createFileSystem_securityGroupIds :: Lens.Lens' CreateFileSystem (Prelude.Maybe [Prelude.Text])
+createFileSystem_securityGroupIds = Lens.lens (\CreateFileSystem' {securityGroupIds} -> securityGroupIds) (\s@CreateFileSystem' {} a -> s {securityGroupIds = a} :: CreateFileSystem) Prelude.. Lens.mapping Lens.coerced
+
+-- | Sets the storage type for the file system that you\'re creating. Valid
+-- values are @SSD@ and @HDD@.
+--
+-- -   Set to @SSD@ to use solid state drive storage. SSD is supported on
+--     all Windows, Lustre, ONTAP, and OpenZFS deployment types.
+--
+-- -   Set to @HDD@ to use hard disk drive storage. HDD is supported on
+--     @SINGLE_AZ_2@ and @MULTI_AZ_1@ Windows file system deployment types,
+--     and on @PERSISTENT_1@ Lustre file system deployment types.
+--
+-- Default value is @SSD@. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options Storage type options>
+-- in the /FSx for Windows File Server User Guide/ and
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options Multiple storage options>
+-- in the /FSx for Lustre User Guide/.
+createFileSystem_storageType :: Lens.Lens' CreateFileSystem (Prelude.Maybe StorageType)
+createFileSystem_storageType = Lens.lens (\CreateFileSystem' {storageType} -> storageType) (\s@CreateFileSystem' {} a -> s {storageType = a} :: CreateFileSystem)
+
+-- | The tags to apply to the file system that\'s being created. The key
+-- value of the @Name@ tag appears in the console as the file system name.
+createFileSystem_tags :: Lens.Lens' CreateFileSystem (Prelude.Maybe (Prelude.NonEmpty Tag))
+createFileSystem_tags = Lens.lens (\CreateFileSystem' {tags} -> tags) (\s@CreateFileSystem' {} a -> s {tags = a} :: CreateFileSystem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Microsoft Windows configuration for the file system that\'s being
+-- created.
+createFileSystem_windowsConfiguration :: Lens.Lens' CreateFileSystem (Prelude.Maybe CreateFileSystemWindowsConfiguration)
+createFileSystem_windowsConfiguration = Lens.lens (\CreateFileSystem' {windowsConfiguration} -> windowsConfiguration) (\s@CreateFileSystem' {} a -> s {windowsConfiguration = a} :: CreateFileSystem)
+
+-- | The type of Amazon FSx file system to create. Valid values are
+-- @WINDOWS@, @LUSTRE@, @ONTAP@, and @OPENZFS@.
+createFileSystem_fileSystemType :: Lens.Lens' CreateFileSystem FileSystemType
+createFileSystem_fileSystemType = Lens.lens (\CreateFileSystem' {fileSystemType} -> fileSystemType) (\s@CreateFileSystem' {} a -> s {fileSystemType = a} :: CreateFileSystem)
+
+-- | Sets the storage capacity of the file system that you\'re creating, in
+-- gibibytes (GiB).
+--
+-- __FSx for Lustre file systems__ - The amount of storage capacity that
+-- you can configure depends on the value that you set for @StorageType@
+-- and the Lustre @DeploymentType@, as follows:
+--
+-- -   For @SCRATCH_2@, @PERSISTENT_2@ and @PERSISTENT_1@ deployment types
+--     using SSD storage type, the valid values are 1200 GiB, 2400 GiB, and
+--     increments of 2400 GiB.
+--
+-- -   For @PERSISTENT_1@ HDD file systems, valid values are increments of
+--     6000 GiB for 12 MB\/s\/TiB file systems and increments of 1800 GiB
+--     for 40 MB\/s\/TiB file systems.
+--
+-- -   For @SCRATCH_1@ deployment type, valid values are 1200 GiB, 2400
+--     GiB, and increments of 3600 GiB.
+--
+-- __FSx for ONTAP file systems__ - The amount of storage capacity that you
+-- can configure is from 1024 GiB up to 196,608 GiB (192 TiB).
+--
+-- __FSx for OpenZFS file systems__ - The amount of storage capacity that
+-- you can configure is from 64 GiB up to 524,288 GiB (512 TiB).
+--
+-- __FSx for Windows File Server file systems__ - The amount of storage
+-- capacity that you can configure depends on the value that you set for
+-- @StorageType@ as follows:
+--
+-- -   For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
+--
+-- -   For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
+createFileSystem_storageCapacity :: Lens.Lens' CreateFileSystem Prelude.Natural
+createFileSystem_storageCapacity = Lens.lens (\CreateFileSystem' {storageCapacity} -> storageCapacity) (\s@CreateFileSystem' {} a -> s {storageCapacity = a} :: CreateFileSystem)
+
+-- | Specifies the IDs of the subnets that the file system will be accessible
+-- from. For Windows and ONTAP @MULTI_AZ_1@ deployment types,provide
+-- exactly two subnet IDs, one for the preferred file server and one for
+-- the standby file server. You specify one of these subnets as the
+-- preferred subnet using the @WindowsConfiguration > PreferredSubnetID@ or
+-- @OntapConfiguration > PreferredSubnetID@ properties. For more
+-- information about Multi-AZ file system configuration, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and durability: Single-AZ and Multi-AZ file systems>
+-- in the /Amazon FSx for Windows User Guide/ and
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html Availability and durability>
+-- in the /Amazon FSx for ONTAP User Guide/.
+--
+-- For Windows @SINGLE_AZ_1@ and @SINGLE_AZ_2@ and all Lustre deployment
+-- types, provide exactly one subnet ID. The file server is launched in
+-- that subnet\'s Availability Zone.
+createFileSystem_subnetIds :: Lens.Lens' CreateFileSystem [Prelude.Text]
+createFileSystem_subnetIds = Lens.lens (\CreateFileSystem' {subnetIds} -> subnetIds) (\s@CreateFileSystem' {} a -> s {subnetIds = a} :: CreateFileSystem) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateFileSystem where
+  type
+    AWSResponse CreateFileSystem =
+      CreateFileSystemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFileSystemResponse'
+            Prelude.<$> (x Data..?> "FileSystem")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFileSystem where
+  hashWithSalt _salt CreateFileSystem' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileSystemTypeVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` storageType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` windowsConfiguration
+      `Prelude.hashWithSalt` fileSystemType
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` subnetIds
+
+instance Prelude.NFData CreateFileSystem where
+  rnf CreateFileSystem' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemTypeVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf storageType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf windowsConfiguration
+      `Prelude.seq` Prelude.rnf fileSystemType
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf subnetIds
+
+instance Data.ToHeaders CreateFileSystem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateFileSystem" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFileSystem where
+  toJSON CreateFileSystem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("FileSystemTypeVersion" Data..=)
+              Prelude.<$> fileSystemTypeVersion,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("LustreConfiguration" Data..=)
+              Prelude.<$> lustreConfiguration,
+            ("OntapConfiguration" Data..=)
+              Prelude.<$> ontapConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds,
+            ("StorageType" Data..=) Prelude.<$> storageType,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("WindowsConfiguration" Data..=)
+              Prelude.<$> windowsConfiguration,
+            Prelude.Just
+              ("FileSystemType" Data..= fileSystemType),
+            Prelude.Just
+              ("StorageCapacity" Data..= storageCapacity),
+            Prelude.Just ("SubnetIds" Data..= subnetIds)
+          ]
+      )
+
+instance Data.ToPath CreateFileSystem where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateFileSystem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object returned after the file system is created.
+--
+-- /See:/ 'newCreateFileSystemResponse' smart constructor.
+data CreateFileSystemResponse = CreateFileSystemResponse'
+  { -- | The configuration of the file system that was created.
+    fileSystem :: Prelude.Maybe FileSystem,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystem', 'createFileSystemResponse_fileSystem' - The configuration of the file system that was created.
+--
+-- 'httpStatus', 'createFileSystemResponse_httpStatus' - The response's http status code.
+newCreateFileSystemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateFileSystemResponse
+newCreateFileSystemResponse pHttpStatus_ =
+  CreateFileSystemResponse'
+    { fileSystem =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The configuration of the file system that was created.
+createFileSystemResponse_fileSystem :: Lens.Lens' CreateFileSystemResponse (Prelude.Maybe FileSystem)
+createFileSystemResponse_fileSystem = Lens.lens (\CreateFileSystemResponse' {fileSystem} -> fileSystem) (\s@CreateFileSystemResponse' {} a -> s {fileSystem = a} :: CreateFileSystemResponse)
+
+-- | The response's http status code.
+createFileSystemResponse_httpStatus :: Lens.Lens' CreateFileSystemResponse Prelude.Int
+createFileSystemResponse_httpStatus = Lens.lens (\CreateFileSystemResponse' {httpStatus} -> httpStatus) (\s@CreateFileSystemResponse' {} a -> s {httpStatus = a} :: CreateFileSystemResponse)
+
+instance Prelude.NFData CreateFileSystemResponse where
+  rnf CreateFileSystemResponse' {..} =
+    Prelude.rnf fileSystem
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateFileSystemFromBackup.hs b/gen/Amazonka/FSx/CreateFileSystemFromBackup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateFileSystemFromBackup.hs
@@ -0,0 +1,507 @@
+{-# 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.FSx.CreateFileSystemFromBackup
+-- 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 new Amazon FSx for Lustre, Amazon FSx for Windows File Server,
+-- or Amazon FSx for OpenZFS file system from an existing Amazon FSx
+-- backup.
+--
+-- If a file system with the specified client request token exists and the
+-- parameters match, this operation returns the description of the file
+-- system. If a file system with the specified client request token exists
+-- but the parameters don\'t match, this call returns
+-- @IncompatibleParameterError@. If a file system with the specified client
+-- request token doesn\'t exist, this operation does the following:
+--
+-- -   Creates a new Amazon FSx file system from backup with an assigned
+--     ID, and an initial lifecycle state of @CREATING@.
+--
+-- -   Returns the description of the file system.
+--
+-- Parameters like the Active Directory, default share name, automatic
+-- backup, and backup settings default to the parameters of the file system
+-- that was backed up, unless overridden. You can explicitly supply other
+-- settings.
+--
+-- By using the idempotent operation, you can retry a
+-- @CreateFileSystemFromBackup@ call without the risk of creating an extra
+-- file system. This approach can be useful when an initial call fails in a
+-- way that makes it unclear whether a file system was created. Examples
+-- are if a transport level timeout occurred, or your connection was reset.
+-- If you use the same client request token and the initial call created a
+-- file system, the client receives a success message as long as the
+-- parameters are the same.
+--
+-- The @CreateFileSystemFromBackup@ call returns while the file system\'s
+-- lifecycle state is still @CREATING@. You can check the file-system
+-- creation status by calling the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html DescribeFileSystems>
+-- operation, which returns the file system state along with other
+-- information.
+module Amazonka.FSx.CreateFileSystemFromBackup
+  ( -- * Creating a Request
+    CreateFileSystemFromBackup (..),
+    newCreateFileSystemFromBackup,
+
+    -- * Request Lenses
+    createFileSystemFromBackup_clientRequestToken,
+    createFileSystemFromBackup_fileSystemTypeVersion,
+    createFileSystemFromBackup_kmsKeyId,
+    createFileSystemFromBackup_lustreConfiguration,
+    createFileSystemFromBackup_openZFSConfiguration,
+    createFileSystemFromBackup_securityGroupIds,
+    createFileSystemFromBackup_storageCapacity,
+    createFileSystemFromBackup_storageType,
+    createFileSystemFromBackup_tags,
+    createFileSystemFromBackup_windowsConfiguration,
+    createFileSystemFromBackup_backupId,
+    createFileSystemFromBackup_subnetIds,
+
+    -- * Destructuring the Response
+    CreateFileSystemFromBackupResponse (..),
+    newCreateFileSystemFromBackupResponse,
+
+    -- * Response Lenses
+    createFileSystemFromBackupResponse_fileSystem,
+    createFileSystemFromBackupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for the @CreateFileSystemFromBackup@ operation.
+--
+-- /See:/ 'newCreateFileSystemFromBackup' smart constructor.
+data CreateFileSystemFromBackup = CreateFileSystemFromBackup'
+  { -- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+    -- idempotent creation. This string is automatically filled on your behalf
+    -- when you use the Command Line Interface (CLI) or an Amazon Web Services
+    -- SDK.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Sets the version for the Amazon FSx for Lustre file system that you\'re
+    -- creating from a backup. Valid values are @2.10@ and @2.12@.
+    --
+    -- You don\'t need to specify @FileSystemTypeVersion@ because it will be
+    -- applied using the backup\'s @FileSystemTypeVersion@ setting. If you
+    -- choose to specify @FileSystemTypeVersion@ when creating from backup, the
+    -- value must match the backup\'s @FileSystemTypeVersion@ setting.
+    fileSystemTypeVersion :: Prelude.Maybe Prelude.Text,
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    lustreConfiguration :: Prelude.Maybe CreateFileSystemLustreConfiguration,
+    -- | The OpenZFS configuration for the file system that\'s being created.
+    openZFSConfiguration :: Prelude.Maybe CreateFileSystemOpenZFSConfiguration,
+    -- | A list of IDs for the security groups that apply to the specified
+    -- network interfaces created for file system access. These security groups
+    -- apply to all network interfaces. This value isn\'t returned in later
+    -- @DescribeFileSystem@ requests.
+    securityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | Sets the storage capacity of the OpenZFS file system that you\'re
+    -- creating from a backup, in gibibytes (GiB). Valid values are from 64 GiB
+    -- up to 524,288 GiB (512 TiB). However, the value that you specify must be
+    -- equal to or greater than the backup\'s storage capacity value. If you
+    -- don\'t use the @StorageCapacity@ parameter, the default is the backup\'s
+    -- @StorageCapacity@ value.
+    --
+    -- If used to create a file system other than OpenZFS, you must provide a
+    -- value that matches the backup\'s @StorageCapacity@ value. If you provide
+    -- any other value, Amazon FSx responds with a 400 Bad Request.
+    storageCapacity :: Prelude.Maybe Prelude.Natural,
+    -- | Sets the storage type for the Windows or OpenZFS file system that
+    -- you\'re creating from a backup. Valid values are @SSD@ and @HDD@.
+    --
+    -- -   Set to @SSD@ to use solid state drive storage. SSD is supported on
+    --     all Windows and OpenZFS deployment types.
+    --
+    -- -   Set to @HDD@ to use hard disk drive storage. HDD is supported on
+    --     @SINGLE_AZ_2@ and @MULTI_AZ_1@ FSx for Windows File Server file
+    --     system deployment types.
+    --
+    -- The default value is @SSD@.
+    --
+    -- HDD and SSD storage types have different minimum storage capacity
+    -- requirements. A restored file system\'s storage capacity is tied to the
+    -- file system that was backed up. You can create a file system that uses
+    -- HDD storage from a backup of a file system that used SSD storage if the
+    -- original SSD file system had a storage capacity of at least 2000 GiB.
+    storageType :: Prelude.Maybe StorageType,
+    -- | The tags to be applied to the file system at file system creation. The
+    -- key value of the @Name@ tag appears in the console as the file system
+    -- name.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The configuration for this Microsoft Windows file system.
+    windowsConfiguration :: Prelude.Maybe CreateFileSystemWindowsConfiguration,
+    backupId :: Prelude.Text,
+    -- | Specifies the IDs of the subnets that the file system will be accessible
+    -- from. For Windows @MULTI_AZ_1@ file system deployment types, provide
+    -- exactly two subnet IDs, one for the preferred file server and one for
+    -- the standby file server. You specify one of these subnets as the
+    -- preferred subnet using the @WindowsConfiguration > PreferredSubnetID@
+    -- property.
+    --
+    -- Windows @SINGLE_AZ_1@ and @SINGLE_AZ_2@ file system deployment types,
+    -- Lustre file systems, and OpenZFS file systems provide exactly one subnet
+    -- ID. The file server is launched in that subnet\'s Availability Zone.
+    subnetIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemFromBackup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createFileSystemFromBackup_clientRequestToken' - A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent creation. This string is automatically filled on your behalf
+-- when you use the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+--
+-- 'fileSystemTypeVersion', 'createFileSystemFromBackup_fileSystemTypeVersion' - Sets the version for the Amazon FSx for Lustre file system that you\'re
+-- creating from a backup. Valid values are @2.10@ and @2.12@.
+--
+-- You don\'t need to specify @FileSystemTypeVersion@ because it will be
+-- applied using the backup\'s @FileSystemTypeVersion@ setting. If you
+-- choose to specify @FileSystemTypeVersion@ when creating from backup, the
+-- value must match the backup\'s @FileSystemTypeVersion@ setting.
+--
+-- 'kmsKeyId', 'createFileSystemFromBackup_kmsKeyId' - Undocumented member.
+--
+-- 'lustreConfiguration', 'createFileSystemFromBackup_lustreConfiguration' - Undocumented member.
+--
+-- 'openZFSConfiguration', 'createFileSystemFromBackup_openZFSConfiguration' - The OpenZFS configuration for the file system that\'s being created.
+--
+-- 'securityGroupIds', 'createFileSystemFromBackup_securityGroupIds' - A list of IDs for the security groups that apply to the specified
+-- network interfaces created for file system access. These security groups
+-- apply to all network interfaces. This value isn\'t returned in later
+-- @DescribeFileSystem@ requests.
+--
+-- 'storageCapacity', 'createFileSystemFromBackup_storageCapacity' - Sets the storage capacity of the OpenZFS file system that you\'re
+-- creating from a backup, in gibibytes (GiB). Valid values are from 64 GiB
+-- up to 524,288 GiB (512 TiB). However, the value that you specify must be
+-- equal to or greater than the backup\'s storage capacity value. If you
+-- don\'t use the @StorageCapacity@ parameter, the default is the backup\'s
+-- @StorageCapacity@ value.
+--
+-- If used to create a file system other than OpenZFS, you must provide a
+-- value that matches the backup\'s @StorageCapacity@ value. If you provide
+-- any other value, Amazon FSx responds with a 400 Bad Request.
+--
+-- 'storageType', 'createFileSystemFromBackup_storageType' - Sets the storage type for the Windows or OpenZFS file system that
+-- you\'re creating from a backup. Valid values are @SSD@ and @HDD@.
+--
+-- -   Set to @SSD@ to use solid state drive storage. SSD is supported on
+--     all Windows and OpenZFS deployment types.
+--
+-- -   Set to @HDD@ to use hard disk drive storage. HDD is supported on
+--     @SINGLE_AZ_2@ and @MULTI_AZ_1@ FSx for Windows File Server file
+--     system deployment types.
+--
+-- The default value is @SSD@.
+--
+-- HDD and SSD storage types have different minimum storage capacity
+-- requirements. A restored file system\'s storage capacity is tied to the
+-- file system that was backed up. You can create a file system that uses
+-- HDD storage from a backup of a file system that used SSD storage if the
+-- original SSD file system had a storage capacity of at least 2000 GiB.
+--
+-- 'tags', 'createFileSystemFromBackup_tags' - The tags to be applied to the file system at file system creation. The
+-- key value of the @Name@ tag appears in the console as the file system
+-- name.
+--
+-- 'windowsConfiguration', 'createFileSystemFromBackup_windowsConfiguration' - The configuration for this Microsoft Windows file system.
+--
+-- 'backupId', 'createFileSystemFromBackup_backupId' - Undocumented member.
+--
+-- 'subnetIds', 'createFileSystemFromBackup_subnetIds' - Specifies the IDs of the subnets that the file system will be accessible
+-- from. For Windows @MULTI_AZ_1@ file system deployment types, provide
+-- exactly two subnet IDs, one for the preferred file server and one for
+-- the standby file server. You specify one of these subnets as the
+-- preferred subnet using the @WindowsConfiguration > PreferredSubnetID@
+-- property.
+--
+-- Windows @SINGLE_AZ_1@ and @SINGLE_AZ_2@ file system deployment types,
+-- Lustre file systems, and OpenZFS file systems provide exactly one subnet
+-- ID. The file server is launched in that subnet\'s Availability Zone.
+newCreateFileSystemFromBackup ::
+  -- | 'backupId'
+  Prelude.Text ->
+  CreateFileSystemFromBackup
+newCreateFileSystemFromBackup pBackupId_ =
+  CreateFileSystemFromBackup'
+    { clientRequestToken =
+        Prelude.Nothing,
+      fileSystemTypeVersion = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      securityGroupIds = Prelude.Nothing,
+      storageCapacity = Prelude.Nothing,
+      storageType = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      windowsConfiguration = Prelude.Nothing,
+      backupId = pBackupId_,
+      subnetIds = Prelude.mempty
+    }
+
+-- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent creation. This string is automatically filled on your behalf
+-- when you use the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+createFileSystemFromBackup_clientRequestToken :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe Prelude.Text)
+createFileSystemFromBackup_clientRequestToken = Lens.lens (\CreateFileSystemFromBackup' {clientRequestToken} -> clientRequestToken) (\s@CreateFileSystemFromBackup' {} a -> s {clientRequestToken = a} :: CreateFileSystemFromBackup)
+
+-- | Sets the version for the Amazon FSx for Lustre file system that you\'re
+-- creating from a backup. Valid values are @2.10@ and @2.12@.
+--
+-- You don\'t need to specify @FileSystemTypeVersion@ because it will be
+-- applied using the backup\'s @FileSystemTypeVersion@ setting. If you
+-- choose to specify @FileSystemTypeVersion@ when creating from backup, the
+-- value must match the backup\'s @FileSystemTypeVersion@ setting.
+createFileSystemFromBackup_fileSystemTypeVersion :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe Prelude.Text)
+createFileSystemFromBackup_fileSystemTypeVersion = Lens.lens (\CreateFileSystemFromBackup' {fileSystemTypeVersion} -> fileSystemTypeVersion) (\s@CreateFileSystemFromBackup' {} a -> s {fileSystemTypeVersion = a} :: CreateFileSystemFromBackup)
+
+-- | Undocumented member.
+createFileSystemFromBackup_kmsKeyId :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe Prelude.Text)
+createFileSystemFromBackup_kmsKeyId = Lens.lens (\CreateFileSystemFromBackup' {kmsKeyId} -> kmsKeyId) (\s@CreateFileSystemFromBackup' {} a -> s {kmsKeyId = a} :: CreateFileSystemFromBackup)
+
+-- | Undocumented member.
+createFileSystemFromBackup_lustreConfiguration :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe CreateFileSystemLustreConfiguration)
+createFileSystemFromBackup_lustreConfiguration = Lens.lens (\CreateFileSystemFromBackup' {lustreConfiguration} -> lustreConfiguration) (\s@CreateFileSystemFromBackup' {} a -> s {lustreConfiguration = a} :: CreateFileSystemFromBackup)
+
+-- | The OpenZFS configuration for the file system that\'s being created.
+createFileSystemFromBackup_openZFSConfiguration :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe CreateFileSystemOpenZFSConfiguration)
+createFileSystemFromBackup_openZFSConfiguration = Lens.lens (\CreateFileSystemFromBackup' {openZFSConfiguration} -> openZFSConfiguration) (\s@CreateFileSystemFromBackup' {} a -> s {openZFSConfiguration = a} :: CreateFileSystemFromBackup)
+
+-- | A list of IDs for the security groups that apply to the specified
+-- network interfaces created for file system access. These security groups
+-- apply to all network interfaces. This value isn\'t returned in later
+-- @DescribeFileSystem@ requests.
+createFileSystemFromBackup_securityGroupIds :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe [Prelude.Text])
+createFileSystemFromBackup_securityGroupIds = Lens.lens (\CreateFileSystemFromBackup' {securityGroupIds} -> securityGroupIds) (\s@CreateFileSystemFromBackup' {} a -> s {securityGroupIds = a} :: CreateFileSystemFromBackup) Prelude.. Lens.mapping Lens.coerced
+
+-- | Sets the storage capacity of the OpenZFS file system that you\'re
+-- creating from a backup, in gibibytes (GiB). Valid values are from 64 GiB
+-- up to 524,288 GiB (512 TiB). However, the value that you specify must be
+-- equal to or greater than the backup\'s storage capacity value. If you
+-- don\'t use the @StorageCapacity@ parameter, the default is the backup\'s
+-- @StorageCapacity@ value.
+--
+-- If used to create a file system other than OpenZFS, you must provide a
+-- value that matches the backup\'s @StorageCapacity@ value. If you provide
+-- any other value, Amazon FSx responds with a 400 Bad Request.
+createFileSystemFromBackup_storageCapacity :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe Prelude.Natural)
+createFileSystemFromBackup_storageCapacity = Lens.lens (\CreateFileSystemFromBackup' {storageCapacity} -> storageCapacity) (\s@CreateFileSystemFromBackup' {} a -> s {storageCapacity = a} :: CreateFileSystemFromBackup)
+
+-- | Sets the storage type for the Windows or OpenZFS file system that
+-- you\'re creating from a backup. Valid values are @SSD@ and @HDD@.
+--
+-- -   Set to @SSD@ to use solid state drive storage. SSD is supported on
+--     all Windows and OpenZFS deployment types.
+--
+-- -   Set to @HDD@ to use hard disk drive storage. HDD is supported on
+--     @SINGLE_AZ_2@ and @MULTI_AZ_1@ FSx for Windows File Server file
+--     system deployment types.
+--
+-- The default value is @SSD@.
+--
+-- HDD and SSD storage types have different minimum storage capacity
+-- requirements. A restored file system\'s storage capacity is tied to the
+-- file system that was backed up. You can create a file system that uses
+-- HDD storage from a backup of a file system that used SSD storage if the
+-- original SSD file system had a storage capacity of at least 2000 GiB.
+createFileSystemFromBackup_storageType :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe StorageType)
+createFileSystemFromBackup_storageType = Lens.lens (\CreateFileSystemFromBackup' {storageType} -> storageType) (\s@CreateFileSystemFromBackup' {} a -> s {storageType = a} :: CreateFileSystemFromBackup)
+
+-- | The tags to be applied to the file system at file system creation. The
+-- key value of the @Name@ tag appears in the console as the file system
+-- name.
+createFileSystemFromBackup_tags :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe (Prelude.NonEmpty Tag))
+createFileSystemFromBackup_tags = Lens.lens (\CreateFileSystemFromBackup' {tags} -> tags) (\s@CreateFileSystemFromBackup' {} a -> s {tags = a} :: CreateFileSystemFromBackup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration for this Microsoft Windows file system.
+createFileSystemFromBackup_windowsConfiguration :: Lens.Lens' CreateFileSystemFromBackup (Prelude.Maybe CreateFileSystemWindowsConfiguration)
+createFileSystemFromBackup_windowsConfiguration = Lens.lens (\CreateFileSystemFromBackup' {windowsConfiguration} -> windowsConfiguration) (\s@CreateFileSystemFromBackup' {} a -> s {windowsConfiguration = a} :: CreateFileSystemFromBackup)
+
+-- | Undocumented member.
+createFileSystemFromBackup_backupId :: Lens.Lens' CreateFileSystemFromBackup Prelude.Text
+createFileSystemFromBackup_backupId = Lens.lens (\CreateFileSystemFromBackup' {backupId} -> backupId) (\s@CreateFileSystemFromBackup' {} a -> s {backupId = a} :: CreateFileSystemFromBackup)
+
+-- | Specifies the IDs of the subnets that the file system will be accessible
+-- from. For Windows @MULTI_AZ_1@ file system deployment types, provide
+-- exactly two subnet IDs, one for the preferred file server and one for
+-- the standby file server. You specify one of these subnets as the
+-- preferred subnet using the @WindowsConfiguration > PreferredSubnetID@
+-- property.
+--
+-- Windows @SINGLE_AZ_1@ and @SINGLE_AZ_2@ file system deployment types,
+-- Lustre file systems, and OpenZFS file systems provide exactly one subnet
+-- ID. The file server is launched in that subnet\'s Availability Zone.
+createFileSystemFromBackup_subnetIds :: Lens.Lens' CreateFileSystemFromBackup [Prelude.Text]
+createFileSystemFromBackup_subnetIds = Lens.lens (\CreateFileSystemFromBackup' {subnetIds} -> subnetIds) (\s@CreateFileSystemFromBackup' {} a -> s {subnetIds = a} :: CreateFileSystemFromBackup) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateFileSystemFromBackup where
+  type
+    AWSResponse CreateFileSystemFromBackup =
+      CreateFileSystemFromBackupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFileSystemFromBackupResponse'
+            Prelude.<$> (x Data..?> "FileSystem")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFileSystemFromBackup where
+  hashWithSalt _salt CreateFileSystemFromBackup' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileSystemTypeVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` storageType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` windowsConfiguration
+      `Prelude.hashWithSalt` backupId
+      `Prelude.hashWithSalt` subnetIds
+
+instance Prelude.NFData CreateFileSystemFromBackup where
+  rnf CreateFileSystemFromBackup' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemTypeVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf storageType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf windowsConfiguration
+      `Prelude.seq` Prelude.rnf backupId
+      `Prelude.seq` Prelude.rnf subnetIds
+
+instance Data.ToHeaders CreateFileSystemFromBackup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateFileSystemFromBackup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFileSystemFromBackup where
+  toJSON CreateFileSystemFromBackup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("FileSystemTypeVersion" Data..=)
+              Prelude.<$> fileSystemTypeVersion,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("LustreConfiguration" Data..=)
+              Prelude.<$> lustreConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds,
+            ("StorageCapacity" Data..=)
+              Prelude.<$> storageCapacity,
+            ("StorageType" Data..=) Prelude.<$> storageType,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("WindowsConfiguration" Data..=)
+              Prelude.<$> windowsConfiguration,
+            Prelude.Just ("BackupId" Data..= backupId),
+            Prelude.Just ("SubnetIds" Data..= subnetIds)
+          ]
+      )
+
+instance Data.ToPath CreateFileSystemFromBackup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateFileSystemFromBackup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for the @CreateFileSystemFromBackup@ operation.
+--
+-- /See:/ 'newCreateFileSystemFromBackupResponse' smart constructor.
+data CreateFileSystemFromBackupResponse = CreateFileSystemFromBackupResponse'
+  { -- | A description of the file system.
+    fileSystem :: Prelude.Maybe FileSystem,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemFromBackupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystem', 'createFileSystemFromBackupResponse_fileSystem' - A description of the file system.
+--
+-- 'httpStatus', 'createFileSystemFromBackupResponse_httpStatus' - The response's http status code.
+newCreateFileSystemFromBackupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateFileSystemFromBackupResponse
+newCreateFileSystemFromBackupResponse pHttpStatus_ =
+  CreateFileSystemFromBackupResponse'
+    { fileSystem =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the file system.
+createFileSystemFromBackupResponse_fileSystem :: Lens.Lens' CreateFileSystemFromBackupResponse (Prelude.Maybe FileSystem)
+createFileSystemFromBackupResponse_fileSystem = Lens.lens (\CreateFileSystemFromBackupResponse' {fileSystem} -> fileSystem) (\s@CreateFileSystemFromBackupResponse' {} a -> s {fileSystem = a} :: CreateFileSystemFromBackupResponse)
+
+-- | The response's http status code.
+createFileSystemFromBackupResponse_httpStatus :: Lens.Lens' CreateFileSystemFromBackupResponse Prelude.Int
+createFileSystemFromBackupResponse_httpStatus = Lens.lens (\CreateFileSystemFromBackupResponse' {httpStatus} -> httpStatus) (\s@CreateFileSystemFromBackupResponse' {} a -> s {httpStatus = a} :: CreateFileSystemFromBackupResponse)
+
+instance
+  Prelude.NFData
+    CreateFileSystemFromBackupResponse
+  where
+  rnf CreateFileSystemFromBackupResponse' {..} =
+    Prelude.rnf fileSystem
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateSnapshot.hs b/gen/Amazonka/FSx/CreateSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateSnapshot.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.FSx.CreateSnapshot
+-- 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 snapshot of an existing Amazon FSx for OpenZFS volume. With
+-- snapshots, you can easily undo file changes and compare file versions by
+-- restoring the volume to a previous version.
+--
+-- If a snapshot with the specified client request token exists, and the
+-- parameters match, this operation returns the description of the existing
+-- snapshot. If a snapshot with the specified client request token exists,
+-- and the parameters don\'t match, this operation returns
+-- @IncompatibleParameterError@. If a snapshot with the specified client
+-- request token doesn\'t exist, @CreateSnapshot@ does the following:
+--
+-- -   Creates a new OpenZFS snapshot with an assigned ID, and an initial
+--     lifecycle state of @CREATING@.
+--
+-- -   Returns the description of the snapshot.
+--
+-- By using the idempotent operation, you can retry a @CreateSnapshot@
+-- operation without the risk of creating an extra snapshot. This approach
+-- can be useful when an initial call fails in a way that makes it unclear
+-- whether a snapshot was created. If you use the same client request token
+-- and the initial call created a snapshot, the operation returns a
+-- successful result because all the parameters are the same.
+--
+-- The @CreateSnapshot@ operation returns while the snapshot\'s lifecycle
+-- state is still @CREATING@. You can check the snapshot creation status by
+-- calling the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeSnapshots.html DescribeSnapshots>
+-- operation, which returns the snapshot state along with other
+-- information.
+module Amazonka.FSx.CreateSnapshot
+  ( -- * Creating a Request
+    CreateSnapshot (..),
+    newCreateSnapshot,
+
+    -- * Request Lenses
+    createSnapshot_clientRequestToken,
+    createSnapshot_tags,
+    createSnapshot_name,
+    createSnapshot_volumeId,
+
+    -- * Destructuring the Response
+    CreateSnapshotResponse (..),
+    newCreateSnapshotResponse,
+
+    -- * Response Lenses
+    createSnapshotResponse_snapshot,
+    createSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSnapshot' smart constructor.
+data CreateSnapshot = CreateSnapshot'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The name of the snapshot.
+    name :: Prelude.Text,
+    -- | The ID of the volume that you are taking a snapshot of.
+    volumeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSnapshot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createSnapshot_clientRequestToken' - Undocumented member.
+--
+-- 'tags', 'createSnapshot_tags' - Undocumented member.
+--
+-- 'name', 'createSnapshot_name' - The name of the snapshot.
+--
+-- 'volumeId', 'createSnapshot_volumeId' - The ID of the volume that you are taking a snapshot of.
+newCreateSnapshot ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'volumeId'
+  Prelude.Text ->
+  CreateSnapshot
+newCreateSnapshot pName_ pVolumeId_ =
+  CreateSnapshot'
+    { clientRequestToken =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = pName_,
+      volumeId = pVolumeId_
+    }
+
+-- | Undocumented member.
+createSnapshot_clientRequestToken :: Lens.Lens' CreateSnapshot (Prelude.Maybe Prelude.Text)
+createSnapshot_clientRequestToken = Lens.lens (\CreateSnapshot' {clientRequestToken} -> clientRequestToken) (\s@CreateSnapshot' {} a -> s {clientRequestToken = a} :: CreateSnapshot)
+
+-- | Undocumented member.
+createSnapshot_tags :: Lens.Lens' CreateSnapshot (Prelude.Maybe (Prelude.NonEmpty Tag))
+createSnapshot_tags = Lens.lens (\CreateSnapshot' {tags} -> tags) (\s@CreateSnapshot' {} a -> s {tags = a} :: CreateSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the snapshot.
+createSnapshot_name :: Lens.Lens' CreateSnapshot Prelude.Text
+createSnapshot_name = Lens.lens (\CreateSnapshot' {name} -> name) (\s@CreateSnapshot' {} a -> s {name = a} :: CreateSnapshot)
+
+-- | The ID of the volume that you are taking a snapshot of.
+createSnapshot_volumeId :: Lens.Lens' CreateSnapshot Prelude.Text
+createSnapshot_volumeId = Lens.lens (\CreateSnapshot' {volumeId} -> volumeId) (\s@CreateSnapshot' {} a -> s {volumeId = a} :: CreateSnapshot)
+
+instance Core.AWSRequest CreateSnapshot where
+  type
+    AWSResponse CreateSnapshot =
+      CreateSnapshotResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSnapshotResponse'
+            Prelude.<$> (x Data..?> "Snapshot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSnapshot where
+  hashWithSalt _salt CreateSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` volumeId
+
+instance Prelude.NFData CreateSnapshot where
+  rnf CreateSnapshot' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf volumeId
+
+instance Data.ToHeaders CreateSnapshot where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateSnapshot" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateSnapshot where
+  toJSON CreateSnapshot' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("VolumeId" Data..= volumeId)
+          ]
+      )
+
+instance Data.ToPath CreateSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateSnapshot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSnapshotResponse' smart constructor.
+data CreateSnapshotResponse = CreateSnapshotResponse'
+  { -- | A description of the snapshot.
+    snapshot :: Prelude.Maybe Snapshot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSnapshotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'snapshot', 'createSnapshotResponse_snapshot' - A description of the snapshot.
+--
+-- 'httpStatus', 'createSnapshotResponse_httpStatus' - The response's http status code.
+newCreateSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSnapshotResponse
+newCreateSnapshotResponse pHttpStatus_ =
+  CreateSnapshotResponse'
+    { snapshot = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the snapshot.
+createSnapshotResponse_snapshot :: Lens.Lens' CreateSnapshotResponse (Prelude.Maybe Snapshot)
+createSnapshotResponse_snapshot = Lens.lens (\CreateSnapshotResponse' {snapshot} -> snapshot) (\s@CreateSnapshotResponse' {} a -> s {snapshot = a} :: CreateSnapshotResponse)
+
+-- | The response's http status code.
+createSnapshotResponse_httpStatus :: Lens.Lens' CreateSnapshotResponse Prelude.Int
+createSnapshotResponse_httpStatus = Lens.lens (\CreateSnapshotResponse' {httpStatus} -> httpStatus) (\s@CreateSnapshotResponse' {} a -> s {httpStatus = a} :: CreateSnapshotResponse)
+
+instance Prelude.NFData CreateSnapshotResponse where
+  rnf CreateSnapshotResponse' {..} =
+    Prelude.rnf snapshot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateStorageVirtualMachine.hs b/gen/Amazonka/FSx/CreateStorageVirtualMachine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateStorageVirtualMachine.hs
@@ -0,0 +1,313 @@
+{-# 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.FSx.CreateStorageVirtualMachine
+-- 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 storage virtual machine (SVM) for an Amazon FSx for ONTAP file
+-- system.
+module Amazonka.FSx.CreateStorageVirtualMachine
+  ( -- * Creating a Request
+    CreateStorageVirtualMachine (..),
+    newCreateStorageVirtualMachine,
+
+    -- * Request Lenses
+    createStorageVirtualMachine_activeDirectoryConfiguration,
+    createStorageVirtualMachine_clientRequestToken,
+    createStorageVirtualMachine_rootVolumeSecurityStyle,
+    createStorageVirtualMachine_svmAdminPassword,
+    createStorageVirtualMachine_tags,
+    createStorageVirtualMachine_fileSystemId,
+    createStorageVirtualMachine_name,
+
+    -- * Destructuring the Response
+    CreateStorageVirtualMachineResponse (..),
+    newCreateStorageVirtualMachineResponse,
+
+    -- * Response Lenses
+    createStorageVirtualMachineResponse_storageVirtualMachine,
+    createStorageVirtualMachineResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateStorageVirtualMachine' smart constructor.
+data CreateStorageVirtualMachine = CreateStorageVirtualMachine'
+  { -- | Describes the self-managed Microsoft Active Directory to which you want
+    -- to join the SVM. Joining an Active Directory provides user
+    -- authentication and access control for SMB clients, including Microsoft
+    -- Windows and macOS client accessing the file system.
+    activeDirectoryConfiguration :: Prelude.Maybe CreateSvmActiveDirectoryConfiguration,
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The security style of the root volume of the SVM. Specify one of the
+    -- following values:
+    --
+    -- -   @UNIX@ if the file system is managed by a UNIX administrator, the
+    --     majority of users are NFS clients, and an application accessing the
+    --     data uses a UNIX user as the service account.
+    --
+    -- -   @NTFS@ if the file system is managed by a Windows administrator, the
+    --     majority of users are SMB clients, and an application accessing the
+    --     data uses a Windows user as the service account.
+    --
+    -- -   @MIXED@ if the file system is managed by both UNIX and Windows
+    --     administrators and users consist of both NFS and SMB clients.
+    rootVolumeSecurityStyle :: Prelude.Maybe StorageVirtualMachineRootVolumeSecurityStyle,
+    -- | The password to use when managing the SVM using the NetApp ONTAP CLI or
+    -- REST API. If you do not specify a password, you can still use the file
+    -- system\'s @fsxadmin@ user to manage the SVM.
+    svmAdminPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    fileSystemId :: Prelude.Text,
+    -- | The name of the SVM.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateStorageVirtualMachine' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryConfiguration', 'createStorageVirtualMachine_activeDirectoryConfiguration' - Describes the self-managed Microsoft Active Directory to which you want
+-- to join the SVM. Joining an Active Directory provides user
+-- authentication and access control for SMB clients, including Microsoft
+-- Windows and macOS client accessing the file system.
+--
+-- 'clientRequestToken', 'createStorageVirtualMachine_clientRequestToken' - Undocumented member.
+--
+-- 'rootVolumeSecurityStyle', 'createStorageVirtualMachine_rootVolumeSecurityStyle' - The security style of the root volume of the SVM. Specify one of the
+-- following values:
+--
+-- -   @UNIX@ if the file system is managed by a UNIX administrator, the
+--     majority of users are NFS clients, and an application accessing the
+--     data uses a UNIX user as the service account.
+--
+-- -   @NTFS@ if the file system is managed by a Windows administrator, the
+--     majority of users are SMB clients, and an application accessing the
+--     data uses a Windows user as the service account.
+--
+-- -   @MIXED@ if the file system is managed by both UNIX and Windows
+--     administrators and users consist of both NFS and SMB clients.
+--
+-- 'svmAdminPassword', 'createStorageVirtualMachine_svmAdminPassword' - The password to use when managing the SVM using the NetApp ONTAP CLI or
+-- REST API. If you do not specify a password, you can still use the file
+-- system\'s @fsxadmin@ user to manage the SVM.
+--
+-- 'tags', 'createStorageVirtualMachine_tags' - Undocumented member.
+--
+-- 'fileSystemId', 'createStorageVirtualMachine_fileSystemId' - Undocumented member.
+--
+-- 'name', 'createStorageVirtualMachine_name' - The name of the SVM.
+newCreateStorageVirtualMachine ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateStorageVirtualMachine
+newCreateStorageVirtualMachine pFileSystemId_ pName_ =
+  CreateStorageVirtualMachine'
+    { activeDirectoryConfiguration =
+        Prelude.Nothing,
+      clientRequestToken = Prelude.Nothing,
+      rootVolumeSecurityStyle = Prelude.Nothing,
+      svmAdminPassword = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      fileSystemId = pFileSystemId_,
+      name = pName_
+    }
+
+-- | Describes the self-managed Microsoft Active Directory to which you want
+-- to join the SVM. Joining an Active Directory provides user
+-- authentication and access control for SMB clients, including Microsoft
+-- Windows and macOS client accessing the file system.
+createStorageVirtualMachine_activeDirectoryConfiguration :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe CreateSvmActiveDirectoryConfiguration)
+createStorageVirtualMachine_activeDirectoryConfiguration = Lens.lens (\CreateStorageVirtualMachine' {activeDirectoryConfiguration} -> activeDirectoryConfiguration) (\s@CreateStorageVirtualMachine' {} a -> s {activeDirectoryConfiguration = a} :: CreateStorageVirtualMachine)
+
+-- | Undocumented member.
+createStorageVirtualMachine_clientRequestToken :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe Prelude.Text)
+createStorageVirtualMachine_clientRequestToken = Lens.lens (\CreateStorageVirtualMachine' {clientRequestToken} -> clientRequestToken) (\s@CreateStorageVirtualMachine' {} a -> s {clientRequestToken = a} :: CreateStorageVirtualMachine)
+
+-- | The security style of the root volume of the SVM. Specify one of the
+-- following values:
+--
+-- -   @UNIX@ if the file system is managed by a UNIX administrator, the
+--     majority of users are NFS clients, and an application accessing the
+--     data uses a UNIX user as the service account.
+--
+-- -   @NTFS@ if the file system is managed by a Windows administrator, the
+--     majority of users are SMB clients, and an application accessing the
+--     data uses a Windows user as the service account.
+--
+-- -   @MIXED@ if the file system is managed by both UNIX and Windows
+--     administrators and users consist of both NFS and SMB clients.
+createStorageVirtualMachine_rootVolumeSecurityStyle :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe StorageVirtualMachineRootVolumeSecurityStyle)
+createStorageVirtualMachine_rootVolumeSecurityStyle = Lens.lens (\CreateStorageVirtualMachine' {rootVolumeSecurityStyle} -> rootVolumeSecurityStyle) (\s@CreateStorageVirtualMachine' {} a -> s {rootVolumeSecurityStyle = a} :: CreateStorageVirtualMachine)
+
+-- | The password to use when managing the SVM using the NetApp ONTAP CLI or
+-- REST API. If you do not specify a password, you can still use the file
+-- system\'s @fsxadmin@ user to manage the SVM.
+createStorageVirtualMachine_svmAdminPassword :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe Prelude.Text)
+createStorageVirtualMachine_svmAdminPassword = Lens.lens (\CreateStorageVirtualMachine' {svmAdminPassword} -> svmAdminPassword) (\s@CreateStorageVirtualMachine' {} a -> s {svmAdminPassword = a} :: CreateStorageVirtualMachine) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Undocumented member.
+createStorageVirtualMachine_tags :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe (Prelude.NonEmpty Tag))
+createStorageVirtualMachine_tags = Lens.lens (\CreateStorageVirtualMachine' {tags} -> tags) (\s@CreateStorageVirtualMachine' {} a -> s {tags = a} :: CreateStorageVirtualMachine) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createStorageVirtualMachine_fileSystemId :: Lens.Lens' CreateStorageVirtualMachine Prelude.Text
+createStorageVirtualMachine_fileSystemId = Lens.lens (\CreateStorageVirtualMachine' {fileSystemId} -> fileSystemId) (\s@CreateStorageVirtualMachine' {} a -> s {fileSystemId = a} :: CreateStorageVirtualMachine)
+
+-- | The name of the SVM.
+createStorageVirtualMachine_name :: Lens.Lens' CreateStorageVirtualMachine Prelude.Text
+createStorageVirtualMachine_name = Lens.lens (\CreateStorageVirtualMachine' {name} -> name) (\s@CreateStorageVirtualMachine' {} a -> s {name = a} :: CreateStorageVirtualMachine)
+
+instance Core.AWSRequest CreateStorageVirtualMachine where
+  type
+    AWSResponse CreateStorageVirtualMachine =
+      CreateStorageVirtualMachineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateStorageVirtualMachineResponse'
+            Prelude.<$> (x Data..?> "StorageVirtualMachine")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateStorageVirtualMachine where
+  hashWithSalt _salt CreateStorageVirtualMachine' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeDirectoryConfiguration
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` rootVolumeSecurityStyle
+      `Prelude.hashWithSalt` svmAdminPassword
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateStorageVirtualMachine where
+  rnf CreateStorageVirtualMachine' {..} =
+    Prelude.rnf activeDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf rootVolumeSecurityStyle
+      `Prelude.seq` Prelude.rnf svmAdminPassword
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateStorageVirtualMachine where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateStorageVirtualMachine" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateStorageVirtualMachine where
+  toJSON CreateStorageVirtualMachine' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveDirectoryConfiguration" Data..=)
+              Prelude.<$> activeDirectoryConfiguration,
+            ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("RootVolumeSecurityStyle" Data..=)
+              Prelude.<$> rootVolumeSecurityStyle,
+            ("SvmAdminPassword" Data..=)
+              Prelude.<$> svmAdminPassword,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateStorageVirtualMachine where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateStorageVirtualMachine where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateStorageVirtualMachineResponse' smart constructor.
+data CreateStorageVirtualMachineResponse = CreateStorageVirtualMachineResponse'
+  { -- | Returned after a successful @CreateStorageVirtualMachine@ operation;
+    -- describes the SVM just created.
+    storageVirtualMachine :: Prelude.Maybe StorageVirtualMachine,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateStorageVirtualMachineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'storageVirtualMachine', 'createStorageVirtualMachineResponse_storageVirtualMachine' - Returned after a successful @CreateStorageVirtualMachine@ operation;
+-- describes the SVM just created.
+--
+-- 'httpStatus', 'createStorageVirtualMachineResponse_httpStatus' - The response's http status code.
+newCreateStorageVirtualMachineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateStorageVirtualMachineResponse
+newCreateStorageVirtualMachineResponse pHttpStatus_ =
+  CreateStorageVirtualMachineResponse'
+    { storageVirtualMachine =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returned after a successful @CreateStorageVirtualMachine@ operation;
+-- describes the SVM just created.
+createStorageVirtualMachineResponse_storageVirtualMachine :: Lens.Lens' CreateStorageVirtualMachineResponse (Prelude.Maybe StorageVirtualMachine)
+createStorageVirtualMachineResponse_storageVirtualMachine = Lens.lens (\CreateStorageVirtualMachineResponse' {storageVirtualMachine} -> storageVirtualMachine) (\s@CreateStorageVirtualMachineResponse' {} a -> s {storageVirtualMachine = a} :: CreateStorageVirtualMachineResponse)
+
+-- | The response's http status code.
+createStorageVirtualMachineResponse_httpStatus :: Lens.Lens' CreateStorageVirtualMachineResponse Prelude.Int
+createStorageVirtualMachineResponse_httpStatus = Lens.lens (\CreateStorageVirtualMachineResponse' {httpStatus} -> httpStatus) (\s@CreateStorageVirtualMachineResponse' {} a -> s {httpStatus = a} :: CreateStorageVirtualMachineResponse)
+
+instance
+  Prelude.NFData
+    CreateStorageVirtualMachineResponse
+  where
+  rnf CreateStorageVirtualMachineResponse' {..} =
+    Prelude.rnf storageVirtualMachine
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateVolume.hs b/gen/Amazonka/FSx/CreateVolume.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateVolume.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.FSx.CreateVolume
+-- 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 FSx for ONTAP or Amazon FSx for OpenZFS storage volume.
+module Amazonka.FSx.CreateVolume
+  ( -- * Creating a Request
+    CreateVolume (..),
+    newCreateVolume,
+
+    -- * Request Lenses
+    createVolume_clientRequestToken,
+    createVolume_ontapConfiguration,
+    createVolume_openZFSConfiguration,
+    createVolume_tags,
+    createVolume_volumeType,
+    createVolume_name,
+
+    -- * Destructuring the Response
+    CreateVolumeResponse (..),
+    newCreateVolumeResponse,
+
+    -- * Response Lenses
+    createVolumeResponse_volume,
+    createVolumeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateVolume' smart constructor.
+data CreateVolume = CreateVolume'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the configuration to use when creating the ONTAP volume.
+    ontapConfiguration :: Prelude.Maybe CreateOntapVolumeConfiguration,
+    -- | Specifies the configuration to use when creating the OpenZFS volume.
+    openZFSConfiguration :: Prelude.Maybe CreateOpenZFSVolumeConfiguration,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Specifies the type of volume to create; @ONTAP@ and @OPENZFS@ are the
+    -- only valid volume types.
+    volumeType :: VolumeType,
+    -- | Specifies the name of the volume that you\'re creating.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVolume' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createVolume_clientRequestToken' - Undocumented member.
+--
+-- 'ontapConfiguration', 'createVolume_ontapConfiguration' - Specifies the configuration to use when creating the ONTAP volume.
+--
+-- 'openZFSConfiguration', 'createVolume_openZFSConfiguration' - Specifies the configuration to use when creating the OpenZFS volume.
+--
+-- 'tags', 'createVolume_tags' - Undocumented member.
+--
+-- 'volumeType', 'createVolume_volumeType' - Specifies the type of volume to create; @ONTAP@ and @OPENZFS@ are the
+-- only valid volume types.
+--
+-- 'name', 'createVolume_name' - Specifies the name of the volume that you\'re creating.
+newCreateVolume ::
+  -- | 'volumeType'
+  VolumeType ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateVolume
+newCreateVolume pVolumeType_ pName_ =
+  CreateVolume'
+    { clientRequestToken = Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      volumeType = pVolumeType_,
+      name = pName_
+    }
+
+-- | Undocumented member.
+createVolume_clientRequestToken :: Lens.Lens' CreateVolume (Prelude.Maybe Prelude.Text)
+createVolume_clientRequestToken = Lens.lens (\CreateVolume' {clientRequestToken} -> clientRequestToken) (\s@CreateVolume' {} a -> s {clientRequestToken = a} :: CreateVolume)
+
+-- | Specifies the configuration to use when creating the ONTAP volume.
+createVolume_ontapConfiguration :: Lens.Lens' CreateVolume (Prelude.Maybe CreateOntapVolumeConfiguration)
+createVolume_ontapConfiguration = Lens.lens (\CreateVolume' {ontapConfiguration} -> ontapConfiguration) (\s@CreateVolume' {} a -> s {ontapConfiguration = a} :: CreateVolume)
+
+-- | Specifies the configuration to use when creating the OpenZFS volume.
+createVolume_openZFSConfiguration :: Lens.Lens' CreateVolume (Prelude.Maybe CreateOpenZFSVolumeConfiguration)
+createVolume_openZFSConfiguration = Lens.lens (\CreateVolume' {openZFSConfiguration} -> openZFSConfiguration) (\s@CreateVolume' {} a -> s {openZFSConfiguration = a} :: CreateVolume)
+
+-- | Undocumented member.
+createVolume_tags :: Lens.Lens' CreateVolume (Prelude.Maybe (Prelude.NonEmpty Tag))
+createVolume_tags = Lens.lens (\CreateVolume' {tags} -> tags) (\s@CreateVolume' {} a -> s {tags = a} :: CreateVolume) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the type of volume to create; @ONTAP@ and @OPENZFS@ are the
+-- only valid volume types.
+createVolume_volumeType :: Lens.Lens' CreateVolume VolumeType
+createVolume_volumeType = Lens.lens (\CreateVolume' {volumeType} -> volumeType) (\s@CreateVolume' {} a -> s {volumeType = a} :: CreateVolume)
+
+-- | Specifies the name of the volume that you\'re creating.
+createVolume_name :: Lens.Lens' CreateVolume Prelude.Text
+createVolume_name = Lens.lens (\CreateVolume' {name} -> name) (\s@CreateVolume' {} a -> s {name = a} :: CreateVolume)
+
+instance Core.AWSRequest CreateVolume where
+  type AWSResponse CreateVolume = CreateVolumeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateVolumeResponse'
+            Prelude.<$> (x Data..?> "Volume")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateVolume where
+  hashWithSalt _salt CreateVolume' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` volumeType
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateVolume where
+  rnf CreateVolume' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf volumeType
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateVolume where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateVolume" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateVolume where
+  toJSON CreateVolume' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("OntapConfiguration" Data..=)
+              Prelude.<$> ontapConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("VolumeType" Data..= volumeType),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateVolume where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateVolume where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateVolumeResponse' smart constructor.
+data CreateVolumeResponse = CreateVolumeResponse'
+  { -- | Returned after a successful @CreateVolume@ API operation, describing the
+    -- volume just created.
+    volume :: Prelude.Maybe Volume,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVolumeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'volume', 'createVolumeResponse_volume' - Returned after a successful @CreateVolume@ API operation, describing the
+-- volume just created.
+--
+-- 'httpStatus', 'createVolumeResponse_httpStatus' - The response's http status code.
+newCreateVolumeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVolumeResponse
+newCreateVolumeResponse pHttpStatus_ =
+  CreateVolumeResponse'
+    { volume = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returned after a successful @CreateVolume@ API operation, describing the
+-- volume just created.
+createVolumeResponse_volume :: Lens.Lens' CreateVolumeResponse (Prelude.Maybe Volume)
+createVolumeResponse_volume = Lens.lens (\CreateVolumeResponse' {volume} -> volume) (\s@CreateVolumeResponse' {} a -> s {volume = a} :: CreateVolumeResponse)
+
+-- | The response's http status code.
+createVolumeResponse_httpStatus :: Lens.Lens' CreateVolumeResponse Prelude.Int
+createVolumeResponse_httpStatus = Lens.lens (\CreateVolumeResponse' {httpStatus} -> httpStatus) (\s@CreateVolumeResponse' {} a -> s {httpStatus = a} :: CreateVolumeResponse)
+
+instance Prelude.NFData CreateVolumeResponse where
+  rnf CreateVolumeResponse' {..} =
+    Prelude.rnf volume
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/CreateVolumeFromBackup.hs b/gen/Amazonka/FSx/CreateVolumeFromBackup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/CreateVolumeFromBackup.hs
@@ -0,0 +1,234 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.CreateVolumeFromBackup
+-- 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 new Amazon FSx for NetApp ONTAP volume from an existing Amazon
+-- FSx volume backup.
+module Amazonka.FSx.CreateVolumeFromBackup
+  ( -- * Creating a Request
+    CreateVolumeFromBackup (..),
+    newCreateVolumeFromBackup,
+
+    -- * Request Lenses
+    createVolumeFromBackup_clientRequestToken,
+    createVolumeFromBackup_ontapConfiguration,
+    createVolumeFromBackup_tags,
+    createVolumeFromBackup_backupId,
+    createVolumeFromBackup_name,
+
+    -- * Destructuring the Response
+    CreateVolumeFromBackupResponse (..),
+    newCreateVolumeFromBackupResponse,
+
+    -- * Response Lenses
+    createVolumeFromBackupResponse_volume,
+    createVolumeFromBackupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateVolumeFromBackup' smart constructor.
+data CreateVolumeFromBackup = CreateVolumeFromBackup'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the configuration of the ONTAP volume that you are creating.
+    ontapConfiguration :: Prelude.Maybe CreateOntapVolumeConfiguration,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    backupId :: Prelude.Text,
+    -- | The name of the new volume you\'re creating.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVolumeFromBackup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createVolumeFromBackup_clientRequestToken' - Undocumented member.
+--
+-- 'ontapConfiguration', 'createVolumeFromBackup_ontapConfiguration' - Specifies the configuration of the ONTAP volume that you are creating.
+--
+-- 'tags', 'createVolumeFromBackup_tags' - Undocumented member.
+--
+-- 'backupId', 'createVolumeFromBackup_backupId' - Undocumented member.
+--
+-- 'name', 'createVolumeFromBackup_name' - The name of the new volume you\'re creating.
+newCreateVolumeFromBackup ::
+  -- | 'backupId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateVolumeFromBackup
+newCreateVolumeFromBackup pBackupId_ pName_ =
+  CreateVolumeFromBackup'
+    { clientRequestToken =
+        Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      backupId = pBackupId_,
+      name = pName_
+    }
+
+-- | Undocumented member.
+createVolumeFromBackup_clientRequestToken :: Lens.Lens' CreateVolumeFromBackup (Prelude.Maybe Prelude.Text)
+createVolumeFromBackup_clientRequestToken = Lens.lens (\CreateVolumeFromBackup' {clientRequestToken} -> clientRequestToken) (\s@CreateVolumeFromBackup' {} a -> s {clientRequestToken = a} :: CreateVolumeFromBackup)
+
+-- | Specifies the configuration of the ONTAP volume that you are creating.
+createVolumeFromBackup_ontapConfiguration :: Lens.Lens' CreateVolumeFromBackup (Prelude.Maybe CreateOntapVolumeConfiguration)
+createVolumeFromBackup_ontapConfiguration = Lens.lens (\CreateVolumeFromBackup' {ontapConfiguration} -> ontapConfiguration) (\s@CreateVolumeFromBackup' {} a -> s {ontapConfiguration = a} :: CreateVolumeFromBackup)
+
+-- | Undocumented member.
+createVolumeFromBackup_tags :: Lens.Lens' CreateVolumeFromBackup (Prelude.Maybe (Prelude.NonEmpty Tag))
+createVolumeFromBackup_tags = Lens.lens (\CreateVolumeFromBackup' {tags} -> tags) (\s@CreateVolumeFromBackup' {} a -> s {tags = a} :: CreateVolumeFromBackup) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createVolumeFromBackup_backupId :: Lens.Lens' CreateVolumeFromBackup Prelude.Text
+createVolumeFromBackup_backupId = Lens.lens (\CreateVolumeFromBackup' {backupId} -> backupId) (\s@CreateVolumeFromBackup' {} a -> s {backupId = a} :: CreateVolumeFromBackup)
+
+-- | The name of the new volume you\'re creating.
+createVolumeFromBackup_name :: Lens.Lens' CreateVolumeFromBackup Prelude.Text
+createVolumeFromBackup_name = Lens.lens (\CreateVolumeFromBackup' {name} -> name) (\s@CreateVolumeFromBackup' {} a -> s {name = a} :: CreateVolumeFromBackup)
+
+instance Core.AWSRequest CreateVolumeFromBackup where
+  type
+    AWSResponse CreateVolumeFromBackup =
+      CreateVolumeFromBackupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateVolumeFromBackupResponse'
+            Prelude.<$> (x Data..?> "Volume")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateVolumeFromBackup where
+  hashWithSalt _salt CreateVolumeFromBackup' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` backupId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateVolumeFromBackup where
+  rnf CreateVolumeFromBackup' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf backupId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateVolumeFromBackup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.CreateVolumeFromBackup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateVolumeFromBackup where
+  toJSON CreateVolumeFromBackup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("OntapConfiguration" Data..=)
+              Prelude.<$> ontapConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("BackupId" Data..= backupId),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateVolumeFromBackup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateVolumeFromBackup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateVolumeFromBackupResponse' smart constructor.
+data CreateVolumeFromBackupResponse = CreateVolumeFromBackupResponse'
+  { -- | Returned after a successful @CreateVolumeFromBackup@ API operation,
+    -- describing the volume just created.
+    volume :: Prelude.Maybe Volume,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVolumeFromBackupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'volume', 'createVolumeFromBackupResponse_volume' - Returned after a successful @CreateVolumeFromBackup@ API operation,
+-- describing the volume just created.
+--
+-- 'httpStatus', 'createVolumeFromBackupResponse_httpStatus' - The response's http status code.
+newCreateVolumeFromBackupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVolumeFromBackupResponse
+newCreateVolumeFromBackupResponse pHttpStatus_ =
+  CreateVolumeFromBackupResponse'
+    { volume =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returned after a successful @CreateVolumeFromBackup@ API operation,
+-- describing the volume just created.
+createVolumeFromBackupResponse_volume :: Lens.Lens' CreateVolumeFromBackupResponse (Prelude.Maybe Volume)
+createVolumeFromBackupResponse_volume = Lens.lens (\CreateVolumeFromBackupResponse' {volume} -> volume) (\s@CreateVolumeFromBackupResponse' {} a -> s {volume = a} :: CreateVolumeFromBackupResponse)
+
+-- | The response's http status code.
+createVolumeFromBackupResponse_httpStatus :: Lens.Lens' CreateVolumeFromBackupResponse Prelude.Int
+createVolumeFromBackupResponse_httpStatus = Lens.lens (\CreateVolumeFromBackupResponse' {httpStatus} -> httpStatus) (\s@CreateVolumeFromBackupResponse' {} a -> s {httpStatus = a} :: CreateVolumeFromBackupResponse)
+
+instance
+  Prelude.NFData
+    CreateVolumeFromBackupResponse
+  where
+  rnf CreateVolumeFromBackupResponse' {..} =
+    Prelude.rnf volume
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteBackup.hs b/gen/Amazonka/FSx/DeleteBackup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteBackup.hs
@@ -0,0 +1,216 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.DeleteBackup
+-- 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 Amazon FSx backup. After deletion, the backup no longer
+-- exists, and its data is gone.
+--
+-- The @DeleteBackup@ call returns instantly. The backup won\'t show up in
+-- later @DescribeBackups@ calls.
+--
+-- The data in a deleted backup is also deleted and can\'t be recovered by
+-- any means.
+module Amazonka.FSx.DeleteBackup
+  ( -- * Creating a Request
+    DeleteBackup (..),
+    newDeleteBackup,
+
+    -- * Request Lenses
+    deleteBackup_clientRequestToken,
+    deleteBackup_backupId,
+
+    -- * Destructuring the Response
+    DeleteBackupResponse (..),
+    newDeleteBackupResponse,
+
+    -- * Response Lenses
+    deleteBackupResponse_backupId,
+    deleteBackupResponse_lifecycle,
+    deleteBackupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for the @DeleteBackup@ operation.
+--
+-- /See:/ 'newDeleteBackup' smart constructor.
+data DeleteBackup = DeleteBackup'
+  { -- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+    -- idempotent deletion. This parameter is automatically filled on your
+    -- behalf when using the CLI or SDK.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the backup that you want to delete.
+    backupId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBackup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteBackup_clientRequestToken' - A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent deletion. This parameter is automatically filled on your
+-- behalf when using the CLI or SDK.
+--
+-- 'backupId', 'deleteBackup_backupId' - The ID of the backup that you want to delete.
+newDeleteBackup ::
+  -- | 'backupId'
+  Prelude.Text ->
+  DeleteBackup
+newDeleteBackup pBackupId_ =
+  DeleteBackup'
+    { clientRequestToken = Prelude.Nothing,
+      backupId = pBackupId_
+    }
+
+-- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent deletion. This parameter is automatically filled on your
+-- behalf when using the CLI or SDK.
+deleteBackup_clientRequestToken :: Lens.Lens' DeleteBackup (Prelude.Maybe Prelude.Text)
+deleteBackup_clientRequestToken = Lens.lens (\DeleteBackup' {clientRequestToken} -> clientRequestToken) (\s@DeleteBackup' {} a -> s {clientRequestToken = a} :: DeleteBackup)
+
+-- | The ID of the backup that you want to delete.
+deleteBackup_backupId :: Lens.Lens' DeleteBackup Prelude.Text
+deleteBackup_backupId = Lens.lens (\DeleteBackup' {backupId} -> backupId) (\s@DeleteBackup' {} a -> s {backupId = a} :: DeleteBackup)
+
+instance Core.AWSRequest DeleteBackup where
+  type AWSResponse DeleteBackup = DeleteBackupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteBackupResponse'
+            Prelude.<$> (x Data..?> "BackupId")
+            Prelude.<*> (x Data..?> "Lifecycle")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteBackup where
+  hashWithSalt _salt DeleteBackup' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` backupId
+
+instance Prelude.NFData DeleteBackup where
+  rnf DeleteBackup' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf backupId
+
+instance Data.ToHeaders DeleteBackup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteBackup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteBackup where
+  toJSON DeleteBackup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("BackupId" Data..= backupId)
+          ]
+      )
+
+instance Data.ToPath DeleteBackup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteBackup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for the @DeleteBackup@ operation.
+--
+-- /See:/ 'newDeleteBackupResponse' smart constructor.
+data DeleteBackupResponse = DeleteBackupResponse'
+  { -- | The ID of the backup that was deleted.
+    backupId :: Prelude.Maybe Prelude.Text,
+    -- | The lifecycle status of the backup. If the @DeleteBackup@ operation is
+    -- successful, the status is @DELETED@.
+    lifecycle :: Prelude.Maybe BackupLifecycle,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBackupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backupId', 'deleteBackupResponse_backupId' - The ID of the backup that was deleted.
+--
+-- 'lifecycle', 'deleteBackupResponse_lifecycle' - The lifecycle status of the backup. If the @DeleteBackup@ operation is
+-- successful, the status is @DELETED@.
+--
+-- 'httpStatus', 'deleteBackupResponse_httpStatus' - The response's http status code.
+newDeleteBackupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteBackupResponse
+newDeleteBackupResponse pHttpStatus_ =
+  DeleteBackupResponse'
+    { backupId = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the backup that was deleted.
+deleteBackupResponse_backupId :: Lens.Lens' DeleteBackupResponse (Prelude.Maybe Prelude.Text)
+deleteBackupResponse_backupId = Lens.lens (\DeleteBackupResponse' {backupId} -> backupId) (\s@DeleteBackupResponse' {} a -> s {backupId = a} :: DeleteBackupResponse)
+
+-- | The lifecycle status of the backup. If the @DeleteBackup@ operation is
+-- successful, the status is @DELETED@.
+deleteBackupResponse_lifecycle :: Lens.Lens' DeleteBackupResponse (Prelude.Maybe BackupLifecycle)
+deleteBackupResponse_lifecycle = Lens.lens (\DeleteBackupResponse' {lifecycle} -> lifecycle) (\s@DeleteBackupResponse' {} a -> s {lifecycle = a} :: DeleteBackupResponse)
+
+-- | The response's http status code.
+deleteBackupResponse_httpStatus :: Lens.Lens' DeleteBackupResponse Prelude.Int
+deleteBackupResponse_httpStatus = Lens.lens (\DeleteBackupResponse' {httpStatus} -> httpStatus) (\s@DeleteBackupResponse' {} a -> s {httpStatus = a} :: DeleteBackupResponse)
+
+instance Prelude.NFData DeleteBackupResponse where
+  rnf DeleteBackupResponse' {..} =
+    Prelude.rnf backupId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteDataRepositoryAssociation.hs b/gen/Amazonka/FSx/DeleteDataRepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteDataRepositoryAssociation.hs
@@ -0,0 +1,260 @@
+{-# 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.FSx.DeleteDataRepositoryAssociation
+-- 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 data repository association on an Amazon FSx for Lustre file
+-- system. Deleting the data repository association unlinks the file system
+-- from the Amazon S3 bucket. When deleting a data repository association,
+-- you have the option of deleting the data in the file system that
+-- corresponds to the data repository association. Data repository
+-- associations are supported only for file systems with the @Persistent_2@
+-- deployment type.
+module Amazonka.FSx.DeleteDataRepositoryAssociation
+  ( -- * Creating a Request
+    DeleteDataRepositoryAssociation (..),
+    newDeleteDataRepositoryAssociation,
+
+    -- * Request Lenses
+    deleteDataRepositoryAssociation_clientRequestToken,
+    deleteDataRepositoryAssociation_deleteDataInFileSystem,
+    deleteDataRepositoryAssociation_associationId,
+
+    -- * Destructuring the Response
+    DeleteDataRepositoryAssociationResponse (..),
+    newDeleteDataRepositoryAssociationResponse,
+
+    -- * Response Lenses
+    deleteDataRepositoryAssociationResponse_associationId,
+    deleteDataRepositoryAssociationResponse_deleteDataInFileSystem,
+    deleteDataRepositoryAssociationResponse_lifecycle,
+    deleteDataRepositoryAssociationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteDataRepositoryAssociation' smart constructor.
+data DeleteDataRepositoryAssociation = DeleteDataRepositoryAssociation'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Set to @true@ to delete the data in the file system that corresponds to
+    -- the data repository association.
+    deleteDataInFileSystem :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the data repository association that you want to delete.
+    associationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataRepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteDataRepositoryAssociation_clientRequestToken' - Undocumented member.
+--
+-- 'deleteDataInFileSystem', 'deleteDataRepositoryAssociation_deleteDataInFileSystem' - Set to @true@ to delete the data in the file system that corresponds to
+-- the data repository association.
+--
+-- 'associationId', 'deleteDataRepositoryAssociation_associationId' - The ID of the data repository association that you want to delete.
+newDeleteDataRepositoryAssociation ::
+  -- | 'associationId'
+  Prelude.Text ->
+  DeleteDataRepositoryAssociation
+newDeleteDataRepositoryAssociation pAssociationId_ =
+  DeleteDataRepositoryAssociation'
+    { clientRequestToken =
+        Prelude.Nothing,
+      deleteDataInFileSystem = Prelude.Nothing,
+      associationId = pAssociationId_
+    }
+
+-- | Undocumented member.
+deleteDataRepositoryAssociation_clientRequestToken :: Lens.Lens' DeleteDataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+deleteDataRepositoryAssociation_clientRequestToken = Lens.lens (\DeleteDataRepositoryAssociation' {clientRequestToken} -> clientRequestToken) (\s@DeleteDataRepositoryAssociation' {} a -> s {clientRequestToken = a} :: DeleteDataRepositoryAssociation)
+
+-- | Set to @true@ to delete the data in the file system that corresponds to
+-- the data repository association.
+deleteDataRepositoryAssociation_deleteDataInFileSystem :: Lens.Lens' DeleteDataRepositoryAssociation (Prelude.Maybe Prelude.Bool)
+deleteDataRepositoryAssociation_deleteDataInFileSystem = Lens.lens (\DeleteDataRepositoryAssociation' {deleteDataInFileSystem} -> deleteDataInFileSystem) (\s@DeleteDataRepositoryAssociation' {} a -> s {deleteDataInFileSystem = a} :: DeleteDataRepositoryAssociation)
+
+-- | The ID of the data repository association that you want to delete.
+deleteDataRepositoryAssociation_associationId :: Lens.Lens' DeleteDataRepositoryAssociation Prelude.Text
+deleteDataRepositoryAssociation_associationId = Lens.lens (\DeleteDataRepositoryAssociation' {associationId} -> associationId) (\s@DeleteDataRepositoryAssociation' {} a -> s {associationId = a} :: DeleteDataRepositoryAssociation)
+
+instance
+  Core.AWSRequest
+    DeleteDataRepositoryAssociation
+  where
+  type
+    AWSResponse DeleteDataRepositoryAssociation =
+      DeleteDataRepositoryAssociationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteDataRepositoryAssociationResponse'
+            Prelude.<$> (x Data..?> "AssociationId")
+            Prelude.<*> (x Data..?> "DeleteDataInFileSystem")
+            Prelude.<*> (x Data..?> "Lifecycle")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteDataRepositoryAssociation
+  where
+  hashWithSalt
+    _salt
+    DeleteDataRepositoryAssociation' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` deleteDataInFileSystem
+        `Prelude.hashWithSalt` associationId
+
+instance
+  Prelude.NFData
+    DeleteDataRepositoryAssociation
+  where
+  rnf DeleteDataRepositoryAssociation' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf deleteDataInFileSystem
+      `Prelude.seq` Prelude.rnf associationId
+
+instance
+  Data.ToHeaders
+    DeleteDataRepositoryAssociation
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteDataRepositoryAssociation" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteDataRepositoryAssociation where
+  toJSON DeleteDataRepositoryAssociation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("DeleteDataInFileSystem" Data..=)
+              Prelude.<$> deleteDataInFileSystem,
+            Prelude.Just
+              ("AssociationId" Data..= associationId)
+          ]
+      )
+
+instance Data.ToPath DeleteDataRepositoryAssociation where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDataRepositoryAssociation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDataRepositoryAssociationResponse' smart constructor.
+data DeleteDataRepositoryAssociationResponse = DeleteDataRepositoryAssociationResponse'
+  { -- | The ID of the data repository association being deleted.
+    associationId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether data in the file system that corresponds to the data
+    -- repository association is being deleted. Default is @false@.
+    deleteDataInFileSystem :: Prelude.Maybe Prelude.Bool,
+    -- | Describes the lifecycle state of the data repository association being
+    -- deleted.
+    lifecycle :: Prelude.Maybe DataRepositoryLifecycle,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataRepositoryAssociationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationId', 'deleteDataRepositoryAssociationResponse_associationId' - The ID of the data repository association being deleted.
+--
+-- 'deleteDataInFileSystem', 'deleteDataRepositoryAssociationResponse_deleteDataInFileSystem' - Indicates whether data in the file system that corresponds to the data
+-- repository association is being deleted. Default is @false@.
+--
+-- 'lifecycle', 'deleteDataRepositoryAssociationResponse_lifecycle' - Describes the lifecycle state of the data repository association being
+-- deleted.
+--
+-- 'httpStatus', 'deleteDataRepositoryAssociationResponse_httpStatus' - The response's http status code.
+newDeleteDataRepositoryAssociationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteDataRepositoryAssociationResponse
+newDeleteDataRepositoryAssociationResponse
+  pHttpStatus_ =
+    DeleteDataRepositoryAssociationResponse'
+      { associationId =
+          Prelude.Nothing,
+        deleteDataInFileSystem =
+          Prelude.Nothing,
+        lifecycle = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The ID of the data repository association being deleted.
+deleteDataRepositoryAssociationResponse_associationId :: Lens.Lens' DeleteDataRepositoryAssociationResponse (Prelude.Maybe Prelude.Text)
+deleteDataRepositoryAssociationResponse_associationId = Lens.lens (\DeleteDataRepositoryAssociationResponse' {associationId} -> associationId) (\s@DeleteDataRepositoryAssociationResponse' {} a -> s {associationId = a} :: DeleteDataRepositoryAssociationResponse)
+
+-- | Indicates whether data in the file system that corresponds to the data
+-- repository association is being deleted. Default is @false@.
+deleteDataRepositoryAssociationResponse_deleteDataInFileSystem :: Lens.Lens' DeleteDataRepositoryAssociationResponse (Prelude.Maybe Prelude.Bool)
+deleteDataRepositoryAssociationResponse_deleteDataInFileSystem = Lens.lens (\DeleteDataRepositoryAssociationResponse' {deleteDataInFileSystem} -> deleteDataInFileSystem) (\s@DeleteDataRepositoryAssociationResponse' {} a -> s {deleteDataInFileSystem = a} :: DeleteDataRepositoryAssociationResponse)
+
+-- | Describes the lifecycle state of the data repository association being
+-- deleted.
+deleteDataRepositoryAssociationResponse_lifecycle :: Lens.Lens' DeleteDataRepositoryAssociationResponse (Prelude.Maybe DataRepositoryLifecycle)
+deleteDataRepositoryAssociationResponse_lifecycle = Lens.lens (\DeleteDataRepositoryAssociationResponse' {lifecycle} -> lifecycle) (\s@DeleteDataRepositoryAssociationResponse' {} a -> s {lifecycle = a} :: DeleteDataRepositoryAssociationResponse)
+
+-- | The response's http status code.
+deleteDataRepositoryAssociationResponse_httpStatus :: Lens.Lens' DeleteDataRepositoryAssociationResponse Prelude.Int
+deleteDataRepositoryAssociationResponse_httpStatus = Lens.lens (\DeleteDataRepositoryAssociationResponse' {httpStatus} -> httpStatus) (\s@DeleteDataRepositoryAssociationResponse' {} a -> s {httpStatus = a} :: DeleteDataRepositoryAssociationResponse)
+
+instance
+  Prelude.NFData
+    DeleteDataRepositoryAssociationResponse
+  where
+  rnf DeleteDataRepositoryAssociationResponse' {..} =
+    Prelude.rnf associationId
+      `Prelude.seq` Prelude.rnf deleteDataInFileSystem
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteFileCache.hs b/gen/Amazonka/FSx/DeleteFileCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteFileCache.hs
@@ -0,0 +1,214 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.DeleteFileCache
+-- 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 Amazon File Cache resource. After deletion, the cache no
+-- longer exists, and its data is gone.
+--
+-- The @DeleteFileCache@ operation returns while the cache has the
+-- @DELETING@ status. You can check the cache deletion status by calling
+-- the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileCaches.html DescribeFileCaches>
+-- operation, which returns a list of caches in your account. If you pass
+-- the cache ID for a deleted cache, the @DescribeFileCaches@ operation
+-- returns a @FileCacheNotFound@ error.
+--
+-- The data in a deleted cache is also deleted and can\'t be recovered by
+-- any means.
+module Amazonka.FSx.DeleteFileCache
+  ( -- * Creating a Request
+    DeleteFileCache (..),
+    newDeleteFileCache,
+
+    -- * Request Lenses
+    deleteFileCache_clientRequestToken,
+    deleteFileCache_fileCacheId,
+
+    -- * Destructuring the Response
+    DeleteFileCacheResponse (..),
+    newDeleteFileCacheResponse,
+
+    -- * Response Lenses
+    deleteFileCacheResponse_fileCacheId,
+    deleteFileCacheResponse_lifecycle,
+    deleteFileCacheResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteFileCache' smart constructor.
+data DeleteFileCache = DeleteFileCache'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the cache that\'s being deleted.
+    fileCacheId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileCache' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteFileCache_clientRequestToken' - Undocumented member.
+--
+-- 'fileCacheId', 'deleteFileCache_fileCacheId' - The ID of the cache that\'s being deleted.
+newDeleteFileCache ::
+  -- | 'fileCacheId'
+  Prelude.Text ->
+  DeleteFileCache
+newDeleteFileCache pFileCacheId_ =
+  DeleteFileCache'
+    { clientRequestToken =
+        Prelude.Nothing,
+      fileCacheId = pFileCacheId_
+    }
+
+-- | Undocumented member.
+deleteFileCache_clientRequestToken :: Lens.Lens' DeleteFileCache (Prelude.Maybe Prelude.Text)
+deleteFileCache_clientRequestToken = Lens.lens (\DeleteFileCache' {clientRequestToken} -> clientRequestToken) (\s@DeleteFileCache' {} a -> s {clientRequestToken = a} :: DeleteFileCache)
+
+-- | The ID of the cache that\'s being deleted.
+deleteFileCache_fileCacheId :: Lens.Lens' DeleteFileCache Prelude.Text
+deleteFileCache_fileCacheId = Lens.lens (\DeleteFileCache' {fileCacheId} -> fileCacheId) (\s@DeleteFileCache' {} a -> s {fileCacheId = a} :: DeleteFileCache)
+
+instance Core.AWSRequest DeleteFileCache where
+  type
+    AWSResponse DeleteFileCache =
+      DeleteFileCacheResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteFileCacheResponse'
+            Prelude.<$> (x Data..?> "FileCacheId")
+            Prelude.<*> (x Data..?> "Lifecycle")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteFileCache where
+  hashWithSalt _salt DeleteFileCache' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileCacheId
+
+instance Prelude.NFData DeleteFileCache where
+  rnf DeleteFileCache' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileCacheId
+
+instance Data.ToHeaders DeleteFileCache where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteFileCache" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteFileCache where
+  toJSON DeleteFileCache' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("FileCacheId" Data..= fileCacheId)
+          ]
+      )
+
+instance Data.ToPath DeleteFileCache where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteFileCache where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFileCacheResponse' smart constructor.
+data DeleteFileCacheResponse = DeleteFileCacheResponse'
+  { -- | The ID of the cache that\'s being deleted.
+    fileCacheId :: Prelude.Maybe Prelude.Text,
+    -- | The cache lifecycle for the deletion request. If the @DeleteFileCache@
+    -- operation is successful, this status is @DELETING@.
+    lifecycle :: Prelude.Maybe FileCacheLifecycle,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileCacheResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileCacheId', 'deleteFileCacheResponse_fileCacheId' - The ID of the cache that\'s being deleted.
+--
+-- 'lifecycle', 'deleteFileCacheResponse_lifecycle' - The cache lifecycle for the deletion request. If the @DeleteFileCache@
+-- operation is successful, this status is @DELETING@.
+--
+-- 'httpStatus', 'deleteFileCacheResponse_httpStatus' - The response's http status code.
+newDeleteFileCacheResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteFileCacheResponse
+newDeleteFileCacheResponse pHttpStatus_ =
+  DeleteFileCacheResponse'
+    { fileCacheId =
+        Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the cache that\'s being deleted.
+deleteFileCacheResponse_fileCacheId :: Lens.Lens' DeleteFileCacheResponse (Prelude.Maybe Prelude.Text)
+deleteFileCacheResponse_fileCacheId = Lens.lens (\DeleteFileCacheResponse' {fileCacheId} -> fileCacheId) (\s@DeleteFileCacheResponse' {} a -> s {fileCacheId = a} :: DeleteFileCacheResponse)
+
+-- | The cache lifecycle for the deletion request. If the @DeleteFileCache@
+-- operation is successful, this status is @DELETING@.
+deleteFileCacheResponse_lifecycle :: Lens.Lens' DeleteFileCacheResponse (Prelude.Maybe FileCacheLifecycle)
+deleteFileCacheResponse_lifecycle = Lens.lens (\DeleteFileCacheResponse' {lifecycle} -> lifecycle) (\s@DeleteFileCacheResponse' {} a -> s {lifecycle = a} :: DeleteFileCacheResponse)
+
+-- | The response's http status code.
+deleteFileCacheResponse_httpStatus :: Lens.Lens' DeleteFileCacheResponse Prelude.Int
+deleteFileCacheResponse_httpStatus = Lens.lens (\DeleteFileCacheResponse' {httpStatus} -> httpStatus) (\s@DeleteFileCacheResponse' {} a -> s {httpStatus = a} :: DeleteFileCacheResponse)
+
+instance Prelude.NFData DeleteFileCacheResponse where
+  rnf DeleteFileCacheResponse' {..} =
+    Prelude.rnf fileCacheId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteFileSystem.hs b/gen/Amazonka/FSx/DeleteFileSystem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteFileSystem.hs
@@ -0,0 +1,322 @@
+{-# 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.FSx.DeleteFileSystem
+-- 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 file system. After deletion, the file system no longer exists,
+-- and its data is gone. Any existing automatic backups and snapshots are
+-- also deleted.
+--
+-- To delete an Amazon FSx for NetApp ONTAP file system, first delete all
+-- the volumes and storage virtual machines (SVMs) on the file system. Then
+-- provide a @FileSystemId@ value to the @DeleFileSystem@ operation.
+--
+-- By default, when you delete an Amazon FSx for Windows File Server file
+-- system, a final backup is created upon deletion. This final backup
+-- isn\'t subject to the file system\'s retention policy, and must be
+-- manually deleted.
+--
+-- The @DeleteFileSystem@ operation returns while the file system has the
+-- @DELETING@ status. You can check the file system deletion status by
+-- calling the
+-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html DescribeFileSystems>
+-- operation, which returns a list of file systems in your account. If you
+-- pass the file system ID for a deleted file system, the
+-- @DescribeFileSystems@ operation returns a @FileSystemNotFound@ error.
+--
+-- If a data repository task is in a @PENDING@ or @EXECUTING@ state,
+-- deleting an Amazon FSx for Lustre file system will fail with an HTTP
+-- status code 400 (Bad Request).
+--
+-- The data in a deleted file system is also deleted and can\'t be
+-- recovered by any means.
+module Amazonka.FSx.DeleteFileSystem
+  ( -- * Creating a Request
+    DeleteFileSystem (..),
+    newDeleteFileSystem,
+
+    -- * Request Lenses
+    deleteFileSystem_clientRequestToken,
+    deleteFileSystem_lustreConfiguration,
+    deleteFileSystem_openZFSConfiguration,
+    deleteFileSystem_windowsConfiguration,
+    deleteFileSystem_fileSystemId,
+
+    -- * Destructuring the Response
+    DeleteFileSystemResponse (..),
+    newDeleteFileSystemResponse,
+
+    -- * Response Lenses
+    deleteFileSystemResponse_fileSystemId,
+    deleteFileSystemResponse_lifecycle,
+    deleteFileSystemResponse_lustreResponse,
+    deleteFileSystemResponse_openZFSResponse,
+    deleteFileSystemResponse_windowsResponse,
+    deleteFileSystemResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystem' smart constructor.
+data DeleteFileSystem = DeleteFileSystem'
+  { -- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+    -- idempotent deletion. This token is automatically filled on your behalf
+    -- when using the Command Line Interface (CLI) or an Amazon Web Services
+    -- SDK.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    lustreConfiguration :: Prelude.Maybe DeleteFileSystemLustreConfiguration,
+    -- | The configuration object for the OpenZFS file system used in the
+    -- @DeleteFileSystem@ operation.
+    openZFSConfiguration :: Prelude.Maybe DeleteFileSystemOpenZFSConfiguration,
+    windowsConfiguration :: Prelude.Maybe DeleteFileSystemWindowsConfiguration,
+    -- | The ID of the file system that you want to delete.
+    fileSystemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteFileSystem_clientRequestToken' - A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent deletion. This token is automatically filled on your behalf
+-- when using the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+--
+-- 'lustreConfiguration', 'deleteFileSystem_lustreConfiguration' - Undocumented member.
+--
+-- 'openZFSConfiguration', 'deleteFileSystem_openZFSConfiguration' - The configuration object for the OpenZFS file system used in the
+-- @DeleteFileSystem@ operation.
+--
+-- 'windowsConfiguration', 'deleteFileSystem_windowsConfiguration' - Undocumented member.
+--
+-- 'fileSystemId', 'deleteFileSystem_fileSystemId' - The ID of the file system that you want to delete.
+newDeleteFileSystem ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  DeleteFileSystem
+newDeleteFileSystem pFileSystemId_ =
+  DeleteFileSystem'
+    { clientRequestToken =
+        Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      windowsConfiguration = Prelude.Nothing,
+      fileSystemId = pFileSystemId_
+    }
+
+-- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent deletion. This token is automatically filled on your behalf
+-- when using the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+deleteFileSystem_clientRequestToken :: Lens.Lens' DeleteFileSystem (Prelude.Maybe Prelude.Text)
+deleteFileSystem_clientRequestToken = Lens.lens (\DeleteFileSystem' {clientRequestToken} -> clientRequestToken) (\s@DeleteFileSystem' {} a -> s {clientRequestToken = a} :: DeleteFileSystem)
+
+-- | Undocumented member.
+deleteFileSystem_lustreConfiguration :: Lens.Lens' DeleteFileSystem (Prelude.Maybe DeleteFileSystemLustreConfiguration)
+deleteFileSystem_lustreConfiguration = Lens.lens (\DeleteFileSystem' {lustreConfiguration} -> lustreConfiguration) (\s@DeleteFileSystem' {} a -> s {lustreConfiguration = a} :: DeleteFileSystem)
+
+-- | The configuration object for the OpenZFS file system used in the
+-- @DeleteFileSystem@ operation.
+deleteFileSystem_openZFSConfiguration :: Lens.Lens' DeleteFileSystem (Prelude.Maybe DeleteFileSystemOpenZFSConfiguration)
+deleteFileSystem_openZFSConfiguration = Lens.lens (\DeleteFileSystem' {openZFSConfiguration} -> openZFSConfiguration) (\s@DeleteFileSystem' {} a -> s {openZFSConfiguration = a} :: DeleteFileSystem)
+
+-- | Undocumented member.
+deleteFileSystem_windowsConfiguration :: Lens.Lens' DeleteFileSystem (Prelude.Maybe DeleteFileSystemWindowsConfiguration)
+deleteFileSystem_windowsConfiguration = Lens.lens (\DeleteFileSystem' {windowsConfiguration} -> windowsConfiguration) (\s@DeleteFileSystem' {} a -> s {windowsConfiguration = a} :: DeleteFileSystem)
+
+-- | The ID of the file system that you want to delete.
+deleteFileSystem_fileSystemId :: Lens.Lens' DeleteFileSystem Prelude.Text
+deleteFileSystem_fileSystemId = Lens.lens (\DeleteFileSystem' {fileSystemId} -> fileSystemId) (\s@DeleteFileSystem' {} a -> s {fileSystemId = a} :: DeleteFileSystem)
+
+instance Core.AWSRequest DeleteFileSystem where
+  type
+    AWSResponse DeleteFileSystem =
+      DeleteFileSystemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteFileSystemResponse'
+            Prelude.<$> (x Data..?> "FileSystemId")
+            Prelude.<*> (x Data..?> "Lifecycle")
+            Prelude.<*> (x Data..?> "LustreResponse")
+            Prelude.<*> (x Data..?> "OpenZFSResponse")
+            Prelude.<*> (x Data..?> "WindowsResponse")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteFileSystem where
+  hashWithSalt _salt DeleteFileSystem' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` windowsConfiguration
+      `Prelude.hashWithSalt` fileSystemId
+
+instance Prelude.NFData DeleteFileSystem where
+  rnf DeleteFileSystem' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf windowsConfiguration
+      `Prelude.seq` Prelude.rnf fileSystemId
+
+instance Data.ToHeaders DeleteFileSystem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteFileSystem" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteFileSystem where
+  toJSON DeleteFileSystem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("LustreConfiguration" Data..=)
+              Prelude.<$> lustreConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            ("WindowsConfiguration" Data..=)
+              Prelude.<$> windowsConfiguration,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId)
+          ]
+      )
+
+instance Data.ToPath DeleteFileSystem where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteFileSystem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for the @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemResponse' smart constructor.
+data DeleteFileSystemResponse = DeleteFileSystemResponse'
+  { -- | The ID of the file system that\'s being deleted.
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | The file system lifecycle for the deletion request. If the
+    -- @DeleteFileSystem@ operation is successful, this status is @DELETING@.
+    lifecycle :: Prelude.Maybe FileSystemLifecycle,
+    lustreResponse :: Prelude.Maybe DeleteFileSystemLustreResponse,
+    -- | The response object for the OpenZFS file system that\'s being deleted in
+    -- the @DeleteFileSystem@ operation.
+    openZFSResponse :: Prelude.Maybe DeleteFileSystemOpenZFSResponse,
+    windowsResponse :: Prelude.Maybe DeleteFileSystemWindowsResponse,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystemId', 'deleteFileSystemResponse_fileSystemId' - The ID of the file system that\'s being deleted.
+--
+-- 'lifecycle', 'deleteFileSystemResponse_lifecycle' - The file system lifecycle for the deletion request. If the
+-- @DeleteFileSystem@ operation is successful, this status is @DELETING@.
+--
+-- 'lustreResponse', 'deleteFileSystemResponse_lustreResponse' - Undocumented member.
+--
+-- 'openZFSResponse', 'deleteFileSystemResponse_openZFSResponse' - The response object for the OpenZFS file system that\'s being deleted in
+-- the @DeleteFileSystem@ operation.
+--
+-- 'windowsResponse', 'deleteFileSystemResponse_windowsResponse' - Undocumented member.
+--
+-- 'httpStatus', 'deleteFileSystemResponse_httpStatus' - The response's http status code.
+newDeleteFileSystemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteFileSystemResponse
+newDeleteFileSystemResponse pHttpStatus_ =
+  DeleteFileSystemResponse'
+    { fileSystemId =
+        Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lustreResponse = Prelude.Nothing,
+      openZFSResponse = Prelude.Nothing,
+      windowsResponse = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the file system that\'s being deleted.
+deleteFileSystemResponse_fileSystemId :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe Prelude.Text)
+deleteFileSystemResponse_fileSystemId = Lens.lens (\DeleteFileSystemResponse' {fileSystemId} -> fileSystemId) (\s@DeleteFileSystemResponse' {} a -> s {fileSystemId = a} :: DeleteFileSystemResponse)
+
+-- | The file system lifecycle for the deletion request. If the
+-- @DeleteFileSystem@ operation is successful, this status is @DELETING@.
+deleteFileSystemResponse_lifecycle :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe FileSystemLifecycle)
+deleteFileSystemResponse_lifecycle = Lens.lens (\DeleteFileSystemResponse' {lifecycle} -> lifecycle) (\s@DeleteFileSystemResponse' {} a -> s {lifecycle = a} :: DeleteFileSystemResponse)
+
+-- | Undocumented member.
+deleteFileSystemResponse_lustreResponse :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe DeleteFileSystemLustreResponse)
+deleteFileSystemResponse_lustreResponse = Lens.lens (\DeleteFileSystemResponse' {lustreResponse} -> lustreResponse) (\s@DeleteFileSystemResponse' {} a -> s {lustreResponse = a} :: DeleteFileSystemResponse)
+
+-- | The response object for the OpenZFS file system that\'s being deleted in
+-- the @DeleteFileSystem@ operation.
+deleteFileSystemResponse_openZFSResponse :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe DeleteFileSystemOpenZFSResponse)
+deleteFileSystemResponse_openZFSResponse = Lens.lens (\DeleteFileSystemResponse' {openZFSResponse} -> openZFSResponse) (\s@DeleteFileSystemResponse' {} a -> s {openZFSResponse = a} :: DeleteFileSystemResponse)
+
+-- | Undocumented member.
+deleteFileSystemResponse_windowsResponse :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe DeleteFileSystemWindowsResponse)
+deleteFileSystemResponse_windowsResponse = Lens.lens (\DeleteFileSystemResponse' {windowsResponse} -> windowsResponse) (\s@DeleteFileSystemResponse' {} a -> s {windowsResponse = a} :: DeleteFileSystemResponse)
+
+-- | The response's http status code.
+deleteFileSystemResponse_httpStatus :: Lens.Lens' DeleteFileSystemResponse Prelude.Int
+deleteFileSystemResponse_httpStatus = Lens.lens (\DeleteFileSystemResponse' {httpStatus} -> httpStatus) (\s@DeleteFileSystemResponse' {} a -> s {httpStatus = a} :: DeleteFileSystemResponse)
+
+instance Prelude.NFData DeleteFileSystemResponse where
+  rnf DeleteFileSystemResponse' {..} =
+    Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lustreResponse
+      `Prelude.seq` Prelude.rnf openZFSResponse
+      `Prelude.seq` Prelude.rnf windowsResponse
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteSnapshot.hs b/gen/Amazonka/FSx/DeleteSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteSnapshot.hs
@@ -0,0 +1,207 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.DeleteSnapshot
+-- 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 Amazon FSx for OpenZFS snapshot. After deletion, the snapshot
+-- no longer exists, and its data is gone. Deleting a snapshot doesn\'t
+-- affect snapshots stored in a file system backup.
+--
+-- The @DeleteSnapshot@ operation returns instantly. The snapshot appears
+-- with the lifecycle status of @DELETING@ until the deletion is complete.
+module Amazonka.FSx.DeleteSnapshot
+  ( -- * Creating a Request
+    DeleteSnapshot (..),
+    newDeleteSnapshot,
+
+    -- * Request Lenses
+    deleteSnapshot_clientRequestToken,
+    deleteSnapshot_snapshotId,
+
+    -- * Destructuring the Response
+    DeleteSnapshotResponse (..),
+    newDeleteSnapshotResponse,
+
+    -- * Response Lenses
+    deleteSnapshotResponse_lifecycle,
+    deleteSnapshotResponse_snapshotId,
+    deleteSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteSnapshot' smart constructor.
+data DeleteSnapshot = DeleteSnapshot'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the snapshot that you want to delete.
+    snapshotId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSnapshot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteSnapshot_clientRequestToken' - Undocumented member.
+--
+-- 'snapshotId', 'deleteSnapshot_snapshotId' - The ID of the snapshot that you want to delete.
+newDeleteSnapshot ::
+  -- | 'snapshotId'
+  Prelude.Text ->
+  DeleteSnapshot
+newDeleteSnapshot pSnapshotId_ =
+  DeleteSnapshot'
+    { clientRequestToken =
+        Prelude.Nothing,
+      snapshotId = pSnapshotId_
+    }
+
+-- | Undocumented member.
+deleteSnapshot_clientRequestToken :: Lens.Lens' DeleteSnapshot (Prelude.Maybe Prelude.Text)
+deleteSnapshot_clientRequestToken = Lens.lens (\DeleteSnapshot' {clientRequestToken} -> clientRequestToken) (\s@DeleteSnapshot' {} a -> s {clientRequestToken = a} :: DeleteSnapshot)
+
+-- | The ID of the snapshot that you want to delete.
+deleteSnapshot_snapshotId :: Lens.Lens' DeleteSnapshot Prelude.Text
+deleteSnapshot_snapshotId = Lens.lens (\DeleteSnapshot' {snapshotId} -> snapshotId) (\s@DeleteSnapshot' {} a -> s {snapshotId = a} :: DeleteSnapshot)
+
+instance Core.AWSRequest DeleteSnapshot where
+  type
+    AWSResponse DeleteSnapshot =
+      DeleteSnapshotResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteSnapshotResponse'
+            Prelude.<$> (x Data..?> "Lifecycle")
+            Prelude.<*> (x Data..?> "SnapshotId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteSnapshot where
+  hashWithSalt _salt DeleteSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` snapshotId
+
+instance Prelude.NFData DeleteSnapshot where
+  rnf DeleteSnapshot' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf snapshotId
+
+instance Data.ToHeaders DeleteSnapshot where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteSnapshot" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteSnapshot where
+  toJSON DeleteSnapshot' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("SnapshotId" Data..= snapshotId)
+          ]
+      )
+
+instance Data.ToPath DeleteSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteSnapshot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSnapshotResponse' smart constructor.
+data DeleteSnapshotResponse = DeleteSnapshotResponse'
+  { -- | The lifecycle status of the snapshot. If the @DeleteSnapshot@ operation
+    -- is successful, this status is @DELETING@.
+    lifecycle :: Prelude.Maybe SnapshotLifecycle,
+    -- | The ID of the deleted snapshot.
+    snapshotId :: 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 'DeleteSnapshotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lifecycle', 'deleteSnapshotResponse_lifecycle' - The lifecycle status of the snapshot. If the @DeleteSnapshot@ operation
+-- is successful, this status is @DELETING@.
+--
+-- 'snapshotId', 'deleteSnapshotResponse_snapshotId' - The ID of the deleted snapshot.
+--
+-- 'httpStatus', 'deleteSnapshotResponse_httpStatus' - The response's http status code.
+newDeleteSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteSnapshotResponse
+newDeleteSnapshotResponse pHttpStatus_ =
+  DeleteSnapshotResponse'
+    { lifecycle =
+        Prelude.Nothing,
+      snapshotId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The lifecycle status of the snapshot. If the @DeleteSnapshot@ operation
+-- is successful, this status is @DELETING@.
+deleteSnapshotResponse_lifecycle :: Lens.Lens' DeleteSnapshotResponse (Prelude.Maybe SnapshotLifecycle)
+deleteSnapshotResponse_lifecycle = Lens.lens (\DeleteSnapshotResponse' {lifecycle} -> lifecycle) (\s@DeleteSnapshotResponse' {} a -> s {lifecycle = a} :: DeleteSnapshotResponse)
+
+-- | The ID of the deleted snapshot.
+deleteSnapshotResponse_snapshotId :: Lens.Lens' DeleteSnapshotResponse (Prelude.Maybe Prelude.Text)
+deleteSnapshotResponse_snapshotId = Lens.lens (\DeleteSnapshotResponse' {snapshotId} -> snapshotId) (\s@DeleteSnapshotResponse' {} a -> s {snapshotId = a} :: DeleteSnapshotResponse)
+
+-- | The response's http status code.
+deleteSnapshotResponse_httpStatus :: Lens.Lens' DeleteSnapshotResponse Prelude.Int
+deleteSnapshotResponse_httpStatus = Lens.lens (\DeleteSnapshotResponse' {httpStatus} -> httpStatus) (\s@DeleteSnapshotResponse' {} a -> s {httpStatus = a} :: DeleteSnapshotResponse)
+
+instance Prelude.NFData DeleteSnapshotResponse where
+  rnf DeleteSnapshotResponse' {..} =
+    Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf snapshotId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteStorageVirtualMachine.hs b/gen/Amazonka/FSx/DeleteStorageVirtualMachine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteStorageVirtualMachine.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.FSx.DeleteStorageVirtualMachine
+-- 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 Amazon FSx for ONTAP storage virtual machine (SVM).
+-- Prior to deleting an SVM, you must delete all non-root volumes in the
+-- SVM, otherwise the operation will fail.
+module Amazonka.FSx.DeleteStorageVirtualMachine
+  ( -- * Creating a Request
+    DeleteStorageVirtualMachine (..),
+    newDeleteStorageVirtualMachine,
+
+    -- * Request Lenses
+    deleteStorageVirtualMachine_clientRequestToken,
+    deleteStorageVirtualMachine_storageVirtualMachineId,
+
+    -- * Destructuring the Response
+    DeleteStorageVirtualMachineResponse (..),
+    newDeleteStorageVirtualMachineResponse,
+
+    -- * Response Lenses
+    deleteStorageVirtualMachineResponse_lifecycle,
+    deleteStorageVirtualMachineResponse_storageVirtualMachineId,
+    deleteStorageVirtualMachineResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteStorageVirtualMachine' smart constructor.
+data DeleteStorageVirtualMachine = DeleteStorageVirtualMachine'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the SVM that you want to delete.
+    storageVirtualMachineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteStorageVirtualMachine' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteStorageVirtualMachine_clientRequestToken' - Undocumented member.
+--
+-- 'storageVirtualMachineId', 'deleteStorageVirtualMachine_storageVirtualMachineId' - The ID of the SVM that you want to delete.
+newDeleteStorageVirtualMachine ::
+  -- | 'storageVirtualMachineId'
+  Prelude.Text ->
+  DeleteStorageVirtualMachine
+newDeleteStorageVirtualMachine
+  pStorageVirtualMachineId_ =
+    DeleteStorageVirtualMachine'
+      { clientRequestToken =
+          Prelude.Nothing,
+        storageVirtualMachineId =
+          pStorageVirtualMachineId_
+      }
+
+-- | Undocumented member.
+deleteStorageVirtualMachine_clientRequestToken :: Lens.Lens' DeleteStorageVirtualMachine (Prelude.Maybe Prelude.Text)
+deleteStorageVirtualMachine_clientRequestToken = Lens.lens (\DeleteStorageVirtualMachine' {clientRequestToken} -> clientRequestToken) (\s@DeleteStorageVirtualMachine' {} a -> s {clientRequestToken = a} :: DeleteStorageVirtualMachine)
+
+-- | The ID of the SVM that you want to delete.
+deleteStorageVirtualMachine_storageVirtualMachineId :: Lens.Lens' DeleteStorageVirtualMachine Prelude.Text
+deleteStorageVirtualMachine_storageVirtualMachineId = Lens.lens (\DeleteStorageVirtualMachine' {storageVirtualMachineId} -> storageVirtualMachineId) (\s@DeleteStorageVirtualMachine' {} a -> s {storageVirtualMachineId = a} :: DeleteStorageVirtualMachine)
+
+instance Core.AWSRequest DeleteStorageVirtualMachine where
+  type
+    AWSResponse DeleteStorageVirtualMachine =
+      DeleteStorageVirtualMachineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteStorageVirtualMachineResponse'
+            Prelude.<$> (x Data..?> "Lifecycle")
+            Prelude.<*> (x Data..?> "StorageVirtualMachineId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteStorageVirtualMachine where
+  hashWithSalt _salt DeleteStorageVirtualMachine' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` storageVirtualMachineId
+
+instance Prelude.NFData DeleteStorageVirtualMachine where
+  rnf DeleteStorageVirtualMachine' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf storageVirtualMachineId
+
+instance Data.ToHeaders DeleteStorageVirtualMachine where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteStorageVirtualMachine" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteStorageVirtualMachine where
+  toJSON DeleteStorageVirtualMachine' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just
+              ( "StorageVirtualMachineId"
+                  Data..= storageVirtualMachineId
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteStorageVirtualMachine where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteStorageVirtualMachine where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteStorageVirtualMachineResponse' smart constructor.
+data DeleteStorageVirtualMachineResponse = DeleteStorageVirtualMachineResponse'
+  { -- | Describes the lifecycle state of the SVM being deleted.
+    lifecycle :: Prelude.Maybe StorageVirtualMachineLifecycle,
+    -- | The ID of the SVM Amazon FSx is deleting.
+    storageVirtualMachineId :: 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 'DeleteStorageVirtualMachineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lifecycle', 'deleteStorageVirtualMachineResponse_lifecycle' - Describes the lifecycle state of the SVM being deleted.
+--
+-- 'storageVirtualMachineId', 'deleteStorageVirtualMachineResponse_storageVirtualMachineId' - The ID of the SVM Amazon FSx is deleting.
+--
+-- 'httpStatus', 'deleteStorageVirtualMachineResponse_httpStatus' - The response's http status code.
+newDeleteStorageVirtualMachineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteStorageVirtualMachineResponse
+newDeleteStorageVirtualMachineResponse pHttpStatus_ =
+  DeleteStorageVirtualMachineResponse'
+    { lifecycle =
+        Prelude.Nothing,
+      storageVirtualMachineId =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the lifecycle state of the SVM being deleted.
+deleteStorageVirtualMachineResponse_lifecycle :: Lens.Lens' DeleteStorageVirtualMachineResponse (Prelude.Maybe StorageVirtualMachineLifecycle)
+deleteStorageVirtualMachineResponse_lifecycle = Lens.lens (\DeleteStorageVirtualMachineResponse' {lifecycle} -> lifecycle) (\s@DeleteStorageVirtualMachineResponse' {} a -> s {lifecycle = a} :: DeleteStorageVirtualMachineResponse)
+
+-- | The ID of the SVM Amazon FSx is deleting.
+deleteStorageVirtualMachineResponse_storageVirtualMachineId :: Lens.Lens' DeleteStorageVirtualMachineResponse (Prelude.Maybe Prelude.Text)
+deleteStorageVirtualMachineResponse_storageVirtualMachineId = Lens.lens (\DeleteStorageVirtualMachineResponse' {storageVirtualMachineId} -> storageVirtualMachineId) (\s@DeleteStorageVirtualMachineResponse' {} a -> s {storageVirtualMachineId = a} :: DeleteStorageVirtualMachineResponse)
+
+-- | The response's http status code.
+deleteStorageVirtualMachineResponse_httpStatus :: Lens.Lens' DeleteStorageVirtualMachineResponse Prelude.Int
+deleteStorageVirtualMachineResponse_httpStatus = Lens.lens (\DeleteStorageVirtualMachineResponse' {httpStatus} -> httpStatus) (\s@DeleteStorageVirtualMachineResponse' {} a -> s {httpStatus = a} :: DeleteStorageVirtualMachineResponse)
+
+instance
+  Prelude.NFData
+    DeleteStorageVirtualMachineResponse
+  where
+  rnf DeleteStorageVirtualMachineResponse' {..} =
+    Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf storageVirtualMachineId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DeleteVolume.hs b/gen/Amazonka/FSx/DeleteVolume.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DeleteVolume.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.FSx.DeleteVolume
+-- 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 Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS volume.
+module Amazonka.FSx.DeleteVolume
+  ( -- * Creating a Request
+    DeleteVolume (..),
+    newDeleteVolume,
+
+    -- * Request Lenses
+    deleteVolume_clientRequestToken,
+    deleteVolume_ontapConfiguration,
+    deleteVolume_openZFSConfiguration,
+    deleteVolume_volumeId,
+
+    -- * Destructuring the Response
+    DeleteVolumeResponse (..),
+    newDeleteVolumeResponse,
+
+    -- * Response Lenses
+    deleteVolumeResponse_lifecycle,
+    deleteVolumeResponse_ontapResponse,
+    deleteVolumeResponse_volumeId,
+    deleteVolumeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVolume' smart constructor.
+data DeleteVolume = DeleteVolume'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | For Amazon FSx for ONTAP volumes, specify whether to take a final backup
+    -- of the volume and apply tags to the backup. To apply tags to the backup,
+    -- you must have the @fsx:TagResource@ permission.
+    ontapConfiguration :: Prelude.Maybe DeleteVolumeOntapConfiguration,
+    -- | For Amazon FSx for OpenZFS volumes, specify whether to delete all child
+    -- volumes and snapshots.
+    openZFSConfiguration :: Prelude.Maybe DeleteVolumeOpenZFSConfiguration,
+    -- | The ID of the volume that you are deleting.
+    volumeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVolume' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'deleteVolume_clientRequestToken' - Undocumented member.
+--
+-- 'ontapConfiguration', 'deleteVolume_ontapConfiguration' - For Amazon FSx for ONTAP volumes, specify whether to take a final backup
+-- of the volume and apply tags to the backup. To apply tags to the backup,
+-- you must have the @fsx:TagResource@ permission.
+--
+-- 'openZFSConfiguration', 'deleteVolume_openZFSConfiguration' - For Amazon FSx for OpenZFS volumes, specify whether to delete all child
+-- volumes and snapshots.
+--
+-- 'volumeId', 'deleteVolume_volumeId' - The ID of the volume that you are deleting.
+newDeleteVolume ::
+  -- | 'volumeId'
+  Prelude.Text ->
+  DeleteVolume
+newDeleteVolume pVolumeId_ =
+  DeleteVolume'
+    { clientRequestToken = Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      volumeId = pVolumeId_
+    }
+
+-- | Undocumented member.
+deleteVolume_clientRequestToken :: Lens.Lens' DeleteVolume (Prelude.Maybe Prelude.Text)
+deleteVolume_clientRequestToken = Lens.lens (\DeleteVolume' {clientRequestToken} -> clientRequestToken) (\s@DeleteVolume' {} a -> s {clientRequestToken = a} :: DeleteVolume)
+
+-- | For Amazon FSx for ONTAP volumes, specify whether to take a final backup
+-- of the volume and apply tags to the backup. To apply tags to the backup,
+-- you must have the @fsx:TagResource@ permission.
+deleteVolume_ontapConfiguration :: Lens.Lens' DeleteVolume (Prelude.Maybe DeleteVolumeOntapConfiguration)
+deleteVolume_ontapConfiguration = Lens.lens (\DeleteVolume' {ontapConfiguration} -> ontapConfiguration) (\s@DeleteVolume' {} a -> s {ontapConfiguration = a} :: DeleteVolume)
+
+-- | For Amazon FSx for OpenZFS volumes, specify whether to delete all child
+-- volumes and snapshots.
+deleteVolume_openZFSConfiguration :: Lens.Lens' DeleteVolume (Prelude.Maybe DeleteVolumeOpenZFSConfiguration)
+deleteVolume_openZFSConfiguration = Lens.lens (\DeleteVolume' {openZFSConfiguration} -> openZFSConfiguration) (\s@DeleteVolume' {} a -> s {openZFSConfiguration = a} :: DeleteVolume)
+
+-- | The ID of the volume that you are deleting.
+deleteVolume_volumeId :: Lens.Lens' DeleteVolume Prelude.Text
+deleteVolume_volumeId = Lens.lens (\DeleteVolume' {volumeId} -> volumeId) (\s@DeleteVolume' {} a -> s {volumeId = a} :: DeleteVolume)
+
+instance Core.AWSRequest DeleteVolume where
+  type AWSResponse DeleteVolume = DeleteVolumeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteVolumeResponse'
+            Prelude.<$> (x Data..?> "Lifecycle")
+            Prelude.<*> (x Data..?> "OntapResponse")
+            Prelude.<*> (x Data..?> "VolumeId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteVolume where
+  hashWithSalt _salt DeleteVolume' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` volumeId
+
+instance Prelude.NFData DeleteVolume where
+  rnf DeleteVolume' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf volumeId
+
+instance Data.ToHeaders DeleteVolume where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DeleteVolume" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteVolume where
+  toJSON DeleteVolume' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("OntapConfiguration" Data..=)
+              Prelude.<$> ontapConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            Prelude.Just ("VolumeId" Data..= volumeId)
+          ]
+      )
+
+instance Data.ToPath DeleteVolume where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteVolume where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVolumeResponse' smart constructor.
+data DeleteVolumeResponse = DeleteVolumeResponse'
+  { -- | The lifecycle state of the volume being deleted. If the @DeleteVolume@
+    -- operation is successful, this value is @DELETING@.
+    lifecycle :: Prelude.Maybe VolumeLifecycle,
+    -- | Returned after a @DeleteVolume@ request, showing the status of the
+    -- delete request.
+    ontapResponse :: Prelude.Maybe DeleteVolumeOntapResponse,
+    -- | The ID of the volume that\'s being deleted.
+    volumeId :: 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 'DeleteVolumeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lifecycle', 'deleteVolumeResponse_lifecycle' - The lifecycle state of the volume being deleted. If the @DeleteVolume@
+-- operation is successful, this value is @DELETING@.
+--
+-- 'ontapResponse', 'deleteVolumeResponse_ontapResponse' - Returned after a @DeleteVolume@ request, showing the status of the
+-- delete request.
+--
+-- 'volumeId', 'deleteVolumeResponse_volumeId' - The ID of the volume that\'s being deleted.
+--
+-- 'httpStatus', 'deleteVolumeResponse_httpStatus' - The response's http status code.
+newDeleteVolumeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteVolumeResponse
+newDeleteVolumeResponse pHttpStatus_ =
+  DeleteVolumeResponse'
+    { lifecycle = Prelude.Nothing,
+      ontapResponse = Prelude.Nothing,
+      volumeId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The lifecycle state of the volume being deleted. If the @DeleteVolume@
+-- operation is successful, this value is @DELETING@.
+deleteVolumeResponse_lifecycle :: Lens.Lens' DeleteVolumeResponse (Prelude.Maybe VolumeLifecycle)
+deleteVolumeResponse_lifecycle = Lens.lens (\DeleteVolumeResponse' {lifecycle} -> lifecycle) (\s@DeleteVolumeResponse' {} a -> s {lifecycle = a} :: DeleteVolumeResponse)
+
+-- | Returned after a @DeleteVolume@ request, showing the status of the
+-- delete request.
+deleteVolumeResponse_ontapResponse :: Lens.Lens' DeleteVolumeResponse (Prelude.Maybe DeleteVolumeOntapResponse)
+deleteVolumeResponse_ontapResponse = Lens.lens (\DeleteVolumeResponse' {ontapResponse} -> ontapResponse) (\s@DeleteVolumeResponse' {} a -> s {ontapResponse = a} :: DeleteVolumeResponse)
+
+-- | The ID of the volume that\'s being deleted.
+deleteVolumeResponse_volumeId :: Lens.Lens' DeleteVolumeResponse (Prelude.Maybe Prelude.Text)
+deleteVolumeResponse_volumeId = Lens.lens (\DeleteVolumeResponse' {volumeId} -> volumeId) (\s@DeleteVolumeResponse' {} a -> s {volumeId = a} :: DeleteVolumeResponse)
+
+-- | The response's http status code.
+deleteVolumeResponse_httpStatus :: Lens.Lens' DeleteVolumeResponse Prelude.Int
+deleteVolumeResponse_httpStatus = Lens.lens (\DeleteVolumeResponse' {httpStatus} -> httpStatus) (\s@DeleteVolumeResponse' {} a -> s {httpStatus = a} :: DeleteVolumeResponse)
+
+instance Prelude.NFData DeleteVolumeResponse where
+  rnf DeleteVolumeResponse' {..} =
+    Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf ontapResponse
+      `Prelude.seq` Prelude.rnf volumeId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeBackups.hs b/gen/Amazonka/FSx/DescribeBackups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeBackups.hs
@@ -0,0 +1,303 @@
+{-# 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.FSx.DescribeBackups
+-- 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 the description of a specific Amazon FSx backup, if a
+-- @BackupIds@ value is provided for that backup. Otherwise, it returns all
+-- backups owned by your Amazon Web Services account in the Amazon Web
+-- Services Region of the endpoint that you\'re calling.
+--
+-- When retrieving all backups, you can optionally specify the @MaxResults@
+-- parameter to limit the number of backups in a response. If more backups
+-- remain, Amazon FSx returns a @NextToken@ value in the response. In this
+-- case, send a later request with the @NextToken@ request parameter set to
+-- the value of the @NextToken@ value from the last response.
+--
+-- This operation is used in an iterative process to retrieve a list of
+-- your backups. @DescribeBackups@ is called first without a @NextToken@
+-- value. Then the operation continues to be called with the @NextToken@
+-- parameter set to the value of the last @NextToken@ value until a
+-- response has no @NextToken@ value.
+--
+-- When using this operation, keep the following in mind:
+--
+-- -   The operation might return fewer than the @MaxResults@ value of
+--     backup descriptions while still including a @NextToken@ value.
+--
+-- -   The order of the backups returned in the response of one
+--     @DescribeBackups@ call and the order of the backups returned across
+--     the responses of a multi-call iteration is unspecified.
+--
+-- This operation returns paginated results.
+module Amazonka.FSx.DescribeBackups
+  ( -- * Creating a Request
+    DescribeBackups (..),
+    newDescribeBackups,
+
+    -- * Request Lenses
+    describeBackups_backupIds,
+    describeBackups_filters,
+    describeBackups_maxResults,
+    describeBackups_nextToken,
+
+    -- * Destructuring the Response
+    DescribeBackupsResponse (..),
+    newDescribeBackupsResponse,
+
+    -- * Response Lenses
+    describeBackupsResponse_backups,
+    describeBackupsResponse_nextToken,
+    describeBackupsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for the @DescribeBackups@ operation.
+--
+-- /See:/ 'newDescribeBackups' smart constructor.
+data DescribeBackups = DescribeBackups'
+  { -- | The IDs of the backups that you want to retrieve. This parameter value
+    -- overrides any filters. If any IDs aren\'t found, a @BackupNotFound@
+    -- error occurs.
+    backupIds :: Prelude.Maybe [Prelude.Text],
+    -- | The filters structure. The supported names are @file-system-id@,
+    -- @backup-type@, @file-system-type@, and @volume-id@.
+    filters :: Prelude.Maybe [Filter],
+    -- | Maximum number of backups to return in the response. This parameter
+    -- value must be greater than 0. The number of items that Amazon FSx
+    -- returns is the minimum of the @MaxResults@ parameter specified in the
+    -- request and the service\'s internal maximum number of items per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token returned from a previous @DescribeBackups@
+    -- operation. If a token is present, the operation continues the list from
+    -- where the returning call left off.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeBackups' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backupIds', 'describeBackups_backupIds' - The IDs of the backups that you want to retrieve. This parameter value
+-- overrides any filters. If any IDs aren\'t found, a @BackupNotFound@
+-- error occurs.
+--
+-- 'filters', 'describeBackups_filters' - The filters structure. The supported names are @file-system-id@,
+-- @backup-type@, @file-system-type@, and @volume-id@.
+--
+-- 'maxResults', 'describeBackups_maxResults' - Maximum number of backups to return in the response. This parameter
+-- value must be greater than 0. The number of items that Amazon FSx
+-- returns is the minimum of the @MaxResults@ parameter specified in the
+-- request and the service\'s internal maximum number of items per page.
+--
+-- 'nextToken', 'describeBackups_nextToken' - An opaque pagination token returned from a previous @DescribeBackups@
+-- operation. If a token is present, the operation continues the list from
+-- where the returning call left off.
+newDescribeBackups ::
+  DescribeBackups
+newDescribeBackups =
+  DescribeBackups'
+    { backupIds = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The IDs of the backups that you want to retrieve. This parameter value
+-- overrides any filters. If any IDs aren\'t found, a @BackupNotFound@
+-- error occurs.
+describeBackups_backupIds :: Lens.Lens' DescribeBackups (Prelude.Maybe [Prelude.Text])
+describeBackups_backupIds = Lens.lens (\DescribeBackups' {backupIds} -> backupIds) (\s@DescribeBackups' {} a -> s {backupIds = a} :: DescribeBackups) Prelude.. Lens.mapping Lens.coerced
+
+-- | The filters structure. The supported names are @file-system-id@,
+-- @backup-type@, @file-system-type@, and @volume-id@.
+describeBackups_filters :: Lens.Lens' DescribeBackups (Prelude.Maybe [Filter])
+describeBackups_filters = Lens.lens (\DescribeBackups' {filters} -> filters) (\s@DescribeBackups' {} a -> s {filters = a} :: DescribeBackups) Prelude.. Lens.mapping Lens.coerced
+
+-- | Maximum number of backups to return in the response. This parameter
+-- value must be greater than 0. The number of items that Amazon FSx
+-- returns is the minimum of the @MaxResults@ parameter specified in the
+-- request and the service\'s internal maximum number of items per page.
+describeBackups_maxResults :: Lens.Lens' DescribeBackups (Prelude.Maybe Prelude.Natural)
+describeBackups_maxResults = Lens.lens (\DescribeBackups' {maxResults} -> maxResults) (\s@DescribeBackups' {} a -> s {maxResults = a} :: DescribeBackups)
+
+-- | An opaque pagination token returned from a previous @DescribeBackups@
+-- operation. If a token is present, the operation continues the list from
+-- where the returning call left off.
+describeBackups_nextToken :: Lens.Lens' DescribeBackups (Prelude.Maybe Prelude.Text)
+describeBackups_nextToken = Lens.lens (\DescribeBackups' {nextToken} -> nextToken) (\s@DescribeBackups' {} a -> s {nextToken = a} :: DescribeBackups)
+
+instance Core.AWSPager DescribeBackups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeBackupsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeBackupsResponse_backups
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeBackups_nextToken
+          Lens..~ rs
+          Lens.^? describeBackupsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeBackups where
+  type
+    AWSResponse DescribeBackups =
+      DescribeBackupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeBackupsResponse'
+            Prelude.<$> (x Data..?> "Backups" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeBackups where
+  hashWithSalt _salt DescribeBackups' {..} =
+    _salt
+      `Prelude.hashWithSalt` backupIds
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeBackups where
+  rnf DescribeBackups' {..} =
+    Prelude.rnf backupIds
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeBackups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeBackups" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeBackups where
+  toJSON DescribeBackups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BackupIds" Data..=) Prelude.<$> backupIds,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeBackups where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeBackups where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response object for the @DescribeBackups@ operation.
+--
+-- /See:/ 'newDescribeBackupsResponse' smart constructor.
+data DescribeBackupsResponse = DescribeBackupsResponse'
+  { -- | An array of backups.
+    backups :: Prelude.Maybe [Backup],
+    -- | A @NextToken@ value is present if there are more backups than returned
+    -- in the response. You can use the @NextToken@ value in the subsequent
+    -- request to fetch the backups.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeBackupsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backups', 'describeBackupsResponse_backups' - An array of backups.
+--
+-- 'nextToken', 'describeBackupsResponse_nextToken' - A @NextToken@ value is present if there are more backups than returned
+-- in the response. You can use the @NextToken@ value in the subsequent
+-- request to fetch the backups.
+--
+-- 'httpStatus', 'describeBackupsResponse_httpStatus' - The response's http status code.
+newDescribeBackupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeBackupsResponse
+newDescribeBackupsResponse pHttpStatus_ =
+  DescribeBackupsResponse'
+    { backups = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of backups.
+describeBackupsResponse_backups :: Lens.Lens' DescribeBackupsResponse (Prelude.Maybe [Backup])
+describeBackupsResponse_backups = Lens.lens (\DescribeBackupsResponse' {backups} -> backups) (\s@DescribeBackupsResponse' {} a -> s {backups = a} :: DescribeBackupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A @NextToken@ value is present if there are more backups than returned
+-- in the response. You can use the @NextToken@ value in the subsequent
+-- request to fetch the backups.
+describeBackupsResponse_nextToken :: Lens.Lens' DescribeBackupsResponse (Prelude.Maybe Prelude.Text)
+describeBackupsResponse_nextToken = Lens.lens (\DescribeBackupsResponse' {nextToken} -> nextToken) (\s@DescribeBackupsResponse' {} a -> s {nextToken = a} :: DescribeBackupsResponse)
+
+-- | The response's http status code.
+describeBackupsResponse_httpStatus :: Lens.Lens' DescribeBackupsResponse Prelude.Int
+describeBackupsResponse_httpStatus = Lens.lens (\DescribeBackupsResponse' {httpStatus} -> httpStatus) (\s@DescribeBackupsResponse' {} a -> s {httpStatus = a} :: DescribeBackupsResponse)
+
+instance Prelude.NFData DescribeBackupsResponse where
+  rnf DescribeBackupsResponse' {..} =
+    Prelude.rnf backups
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeDataRepositoryAssociations.hs b/gen/Amazonka/FSx/DescribeDataRepositoryAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeDataRepositoryAssociations.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.FSx.DescribeDataRepositoryAssociations
+-- 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 the description of specific Amazon FSx for Lustre or Amazon File
+-- Cache data repository associations, if one or more @AssociationIds@
+-- values are provided in the request, or if filters are used in the
+-- request. Data repository associations are supported only for Amazon FSx
+-- for Lustre file systems with the @Persistent_2@ deployment type and for
+-- Amazon File Cache resources.
+--
+-- You can use filters to narrow the response to include just data
+-- repository associations for specific file systems (use the
+-- @file-system-id@ filter with the ID of the file system) or caches (use
+-- the @file-cache-id@ filter with the ID of the cache), or data repository
+-- associations for a specific repository type (use the
+-- @data-repository-type@ filter with a value of @S3@ or @NFS@). If you
+-- don\'t use filters, the response returns all data repository
+-- associations owned by your Amazon Web Services account in the Amazon Web
+-- Services Region of the endpoint that you\'re calling.
+--
+-- When retrieving all data repository associations, you can paginate the
+-- response by using the optional @MaxResults@ parameter to limit the
+-- number of data repository associations returned in a response. If more
+-- data repository associations remain, a @NextToken@ value is returned in
+-- the response. In this case, send a later request with the @NextToken@
+-- request parameter set to the value of @NextToken@ from the last
+-- response.
+module Amazonka.FSx.DescribeDataRepositoryAssociations
+  ( -- * Creating a Request
+    DescribeDataRepositoryAssociations (..),
+    newDescribeDataRepositoryAssociations,
+
+    -- * Request Lenses
+    describeDataRepositoryAssociations_associationIds,
+    describeDataRepositoryAssociations_filters,
+    describeDataRepositoryAssociations_maxResults,
+    describeDataRepositoryAssociations_nextToken,
+
+    -- * Destructuring the Response
+    DescribeDataRepositoryAssociationsResponse (..),
+    newDescribeDataRepositoryAssociationsResponse,
+
+    -- * Response Lenses
+    describeDataRepositoryAssociationsResponse_associations,
+    describeDataRepositoryAssociationsResponse_nextToken,
+    describeDataRepositoryAssociationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataRepositoryAssociations' smart constructor.
+data DescribeDataRepositoryAssociations = DescribeDataRepositoryAssociations'
+  { -- | IDs of the data repository associations whose descriptions you want to
+    -- retrieve (String).
+    associationIds :: Prelude.Maybe [Prelude.Text],
+    filters :: Prelude.Maybe [Filter],
+    -- | The maximum number of resources to return in the response. This value
+    -- must be an integer greater than zero.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataRepositoryAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationIds', 'describeDataRepositoryAssociations_associationIds' - IDs of the data repository associations whose descriptions you want to
+-- retrieve (String).
+--
+-- 'filters', 'describeDataRepositoryAssociations_filters' - Undocumented member.
+--
+-- 'maxResults', 'describeDataRepositoryAssociations_maxResults' - The maximum number of resources to return in the response. This value
+-- must be an integer greater than zero.
+--
+-- 'nextToken', 'describeDataRepositoryAssociations_nextToken' - Undocumented member.
+newDescribeDataRepositoryAssociations ::
+  DescribeDataRepositoryAssociations
+newDescribeDataRepositoryAssociations =
+  DescribeDataRepositoryAssociations'
+    { associationIds =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | IDs of the data repository associations whose descriptions you want to
+-- retrieve (String).
+describeDataRepositoryAssociations_associationIds :: Lens.Lens' DescribeDataRepositoryAssociations (Prelude.Maybe [Prelude.Text])
+describeDataRepositoryAssociations_associationIds = Lens.lens (\DescribeDataRepositoryAssociations' {associationIds} -> associationIds) (\s@DescribeDataRepositoryAssociations' {} a -> s {associationIds = a} :: DescribeDataRepositoryAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeDataRepositoryAssociations_filters :: Lens.Lens' DescribeDataRepositoryAssociations (Prelude.Maybe [Filter])
+describeDataRepositoryAssociations_filters = Lens.lens (\DescribeDataRepositoryAssociations' {filters} -> filters) (\s@DescribeDataRepositoryAssociations' {} a -> s {filters = a} :: DescribeDataRepositoryAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of resources to return in the response. This value
+-- must be an integer greater than zero.
+describeDataRepositoryAssociations_maxResults :: Lens.Lens' DescribeDataRepositoryAssociations (Prelude.Maybe Prelude.Natural)
+describeDataRepositoryAssociations_maxResults = Lens.lens (\DescribeDataRepositoryAssociations' {maxResults} -> maxResults) (\s@DescribeDataRepositoryAssociations' {} a -> s {maxResults = a} :: DescribeDataRepositoryAssociations)
+
+-- | Undocumented member.
+describeDataRepositoryAssociations_nextToken :: Lens.Lens' DescribeDataRepositoryAssociations (Prelude.Maybe Prelude.Text)
+describeDataRepositoryAssociations_nextToken = Lens.lens (\DescribeDataRepositoryAssociations' {nextToken} -> nextToken) (\s@DescribeDataRepositoryAssociations' {} a -> s {nextToken = a} :: DescribeDataRepositoryAssociations)
+
+instance
+  Core.AWSRequest
+    DescribeDataRepositoryAssociations
+  where
+  type
+    AWSResponse DescribeDataRepositoryAssociations =
+      DescribeDataRepositoryAssociationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataRepositoryAssociationsResponse'
+            Prelude.<$> (x Data..?> "Associations" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeDataRepositoryAssociations
+  where
+  hashWithSalt
+    _salt
+    DescribeDataRepositoryAssociations' {..} =
+      _salt
+        `Prelude.hashWithSalt` associationIds
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+
+instance
+  Prelude.NFData
+    DescribeDataRepositoryAssociations
+  where
+  rnf DescribeDataRepositoryAssociations' {..} =
+    Prelude.rnf associationIds
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance
+  Data.ToHeaders
+    DescribeDataRepositoryAssociations
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeDataRepositoryAssociations" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribeDataRepositoryAssociations
+  where
+  toJSON DescribeDataRepositoryAssociations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AssociationIds" Data..=)
+              Prelude.<$> associationIds,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribeDataRepositoryAssociations
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeDataRepositoryAssociations
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataRepositoryAssociationsResponse' smart constructor.
+data DescribeDataRepositoryAssociationsResponse = DescribeDataRepositoryAssociationsResponse'
+  { -- | An array of one or more data repository association descriptions.
+    associations :: Prelude.Maybe [DataRepositoryAssociation],
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataRepositoryAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associations', 'describeDataRepositoryAssociationsResponse_associations' - An array of one or more data repository association descriptions.
+--
+-- 'nextToken', 'describeDataRepositoryAssociationsResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'describeDataRepositoryAssociationsResponse_httpStatus' - The response's http status code.
+newDescribeDataRepositoryAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDataRepositoryAssociationsResponse
+newDescribeDataRepositoryAssociationsResponse
+  pHttpStatus_ =
+    DescribeDataRepositoryAssociationsResponse'
+      { associations =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | An array of one or more data repository association descriptions.
+describeDataRepositoryAssociationsResponse_associations :: Lens.Lens' DescribeDataRepositoryAssociationsResponse (Prelude.Maybe [DataRepositoryAssociation])
+describeDataRepositoryAssociationsResponse_associations = Lens.lens (\DescribeDataRepositoryAssociationsResponse' {associations} -> associations) (\s@DescribeDataRepositoryAssociationsResponse' {} a -> s {associations = a} :: DescribeDataRepositoryAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeDataRepositoryAssociationsResponse_nextToken :: Lens.Lens' DescribeDataRepositoryAssociationsResponse (Prelude.Maybe Prelude.Text)
+describeDataRepositoryAssociationsResponse_nextToken = Lens.lens (\DescribeDataRepositoryAssociationsResponse' {nextToken} -> nextToken) (\s@DescribeDataRepositoryAssociationsResponse' {} a -> s {nextToken = a} :: DescribeDataRepositoryAssociationsResponse)
+
+-- | The response's http status code.
+describeDataRepositoryAssociationsResponse_httpStatus :: Lens.Lens' DescribeDataRepositoryAssociationsResponse Prelude.Int
+describeDataRepositoryAssociationsResponse_httpStatus = Lens.lens (\DescribeDataRepositoryAssociationsResponse' {httpStatus} -> httpStatus) (\s@DescribeDataRepositoryAssociationsResponse' {} a -> s {httpStatus = a} :: DescribeDataRepositoryAssociationsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDataRepositoryAssociationsResponse
+  where
+  rnf DescribeDataRepositoryAssociationsResponse' {..} =
+    Prelude.rnf associations
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeDataRepositoryTasks.hs b/gen/Amazonka/FSx/DescribeDataRepositoryTasks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeDataRepositoryTasks.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.FSx.DescribeDataRepositoryTasks
+-- 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 the description of specific Amazon FSx for Lustre or Amazon File
+-- Cache data repository tasks, if one or more @TaskIds@ values are
+-- provided in the request, or if filters are used in the request. You can
+-- use filters to narrow the response to include just tasks for specific
+-- file systems or caches, or tasks in a specific lifecycle state.
+-- Otherwise, it returns all data repository tasks owned by your Amazon Web
+-- Services account in the Amazon Web Services Region of the endpoint that
+-- you\'re calling.
+--
+-- When retrieving all tasks, you can paginate the response by using the
+-- optional @MaxResults@ parameter to limit the number of tasks returned in
+-- a response. If more tasks remain, a @NextToken@ value is returned in the
+-- response. In this case, send a later request with the @NextToken@
+-- request parameter set to the value of @NextToken@ from the last
+-- response.
+module Amazonka.FSx.DescribeDataRepositoryTasks
+  ( -- * Creating a Request
+    DescribeDataRepositoryTasks (..),
+    newDescribeDataRepositoryTasks,
+
+    -- * Request Lenses
+    describeDataRepositoryTasks_filters,
+    describeDataRepositoryTasks_maxResults,
+    describeDataRepositoryTasks_nextToken,
+    describeDataRepositoryTasks_taskIds,
+
+    -- * Destructuring the Response
+    DescribeDataRepositoryTasksResponse (..),
+    newDescribeDataRepositoryTasksResponse,
+
+    -- * Response Lenses
+    describeDataRepositoryTasksResponse_dataRepositoryTasks,
+    describeDataRepositoryTasksResponse_nextToken,
+    describeDataRepositoryTasksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataRepositoryTasks' smart constructor.
+data DescribeDataRepositoryTasks = DescribeDataRepositoryTasks'
+  { -- | (Optional) You can use filters to narrow the
+    -- @DescribeDataRepositoryTasks@ response to include just tasks for
+    -- specific file systems, or tasks in a specific lifecycle state.
+    filters :: Prelude.Maybe [DataRepositoryTaskFilter],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) IDs of the tasks whose descriptions you want to retrieve
+    -- (String).
+    taskIds :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataRepositoryTasks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'describeDataRepositoryTasks_filters' - (Optional) You can use filters to narrow the
+-- @DescribeDataRepositoryTasks@ response to include just tasks for
+-- specific file systems, or tasks in a specific lifecycle state.
+--
+-- 'maxResults', 'describeDataRepositoryTasks_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'describeDataRepositoryTasks_nextToken' - Undocumented member.
+--
+-- 'taskIds', 'describeDataRepositoryTasks_taskIds' - (Optional) IDs of the tasks whose descriptions you want to retrieve
+-- (String).
+newDescribeDataRepositoryTasks ::
+  DescribeDataRepositoryTasks
+newDescribeDataRepositoryTasks =
+  DescribeDataRepositoryTasks'
+    { filters =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      taskIds = Prelude.Nothing
+    }
+
+-- | (Optional) You can use filters to narrow the
+-- @DescribeDataRepositoryTasks@ response to include just tasks for
+-- specific file systems, or tasks in a specific lifecycle state.
+describeDataRepositoryTasks_filters :: Lens.Lens' DescribeDataRepositoryTasks (Prelude.Maybe [DataRepositoryTaskFilter])
+describeDataRepositoryTasks_filters = Lens.lens (\DescribeDataRepositoryTasks' {filters} -> filters) (\s@DescribeDataRepositoryTasks' {} a -> s {filters = a} :: DescribeDataRepositoryTasks) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeDataRepositoryTasks_maxResults :: Lens.Lens' DescribeDataRepositoryTasks (Prelude.Maybe Prelude.Natural)
+describeDataRepositoryTasks_maxResults = Lens.lens (\DescribeDataRepositoryTasks' {maxResults} -> maxResults) (\s@DescribeDataRepositoryTasks' {} a -> s {maxResults = a} :: DescribeDataRepositoryTasks)
+
+-- | Undocumented member.
+describeDataRepositoryTasks_nextToken :: Lens.Lens' DescribeDataRepositoryTasks (Prelude.Maybe Prelude.Text)
+describeDataRepositoryTasks_nextToken = Lens.lens (\DescribeDataRepositoryTasks' {nextToken} -> nextToken) (\s@DescribeDataRepositoryTasks' {} a -> s {nextToken = a} :: DescribeDataRepositoryTasks)
+
+-- | (Optional) IDs of the tasks whose descriptions you want to retrieve
+-- (String).
+describeDataRepositoryTasks_taskIds :: Lens.Lens' DescribeDataRepositoryTasks (Prelude.Maybe [Prelude.Text])
+describeDataRepositoryTasks_taskIds = Lens.lens (\DescribeDataRepositoryTasks' {taskIds} -> taskIds) (\s@DescribeDataRepositoryTasks' {} a -> s {taskIds = a} :: DescribeDataRepositoryTasks) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest DescribeDataRepositoryTasks where
+  type
+    AWSResponse DescribeDataRepositoryTasks =
+      DescribeDataRepositoryTasksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataRepositoryTasksResponse'
+            Prelude.<$> ( x
+                            Data..?> "DataRepositoryTasks"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataRepositoryTasks where
+  hashWithSalt _salt DescribeDataRepositoryTasks' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` taskIds
+
+instance Prelude.NFData DescribeDataRepositoryTasks where
+  rnf DescribeDataRepositoryTasks' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf taskIds
+
+instance Data.ToHeaders DescribeDataRepositoryTasks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeDataRepositoryTasks" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDataRepositoryTasks where
+  toJSON DescribeDataRepositoryTasks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("TaskIds" Data..=) Prelude.<$> taskIds
+          ]
+      )
+
+instance Data.ToPath DescribeDataRepositoryTasks where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDataRepositoryTasks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataRepositoryTasksResponse' smart constructor.
+data DescribeDataRepositoryTasksResponse = DescribeDataRepositoryTasksResponse'
+  { -- | The collection of data repository task descriptions returned.
+    dataRepositoryTasks :: Prelude.Maybe [DataRepositoryTask],
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataRepositoryTasksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataRepositoryTasks', 'describeDataRepositoryTasksResponse_dataRepositoryTasks' - The collection of data repository task descriptions returned.
+--
+-- 'nextToken', 'describeDataRepositoryTasksResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'describeDataRepositoryTasksResponse_httpStatus' - The response's http status code.
+newDescribeDataRepositoryTasksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDataRepositoryTasksResponse
+newDescribeDataRepositoryTasksResponse pHttpStatus_ =
+  DescribeDataRepositoryTasksResponse'
+    { dataRepositoryTasks =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The collection of data repository task descriptions returned.
+describeDataRepositoryTasksResponse_dataRepositoryTasks :: Lens.Lens' DescribeDataRepositoryTasksResponse (Prelude.Maybe [DataRepositoryTask])
+describeDataRepositoryTasksResponse_dataRepositoryTasks = Lens.lens (\DescribeDataRepositoryTasksResponse' {dataRepositoryTasks} -> dataRepositoryTasks) (\s@DescribeDataRepositoryTasksResponse' {} a -> s {dataRepositoryTasks = a} :: DescribeDataRepositoryTasksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeDataRepositoryTasksResponse_nextToken :: Lens.Lens' DescribeDataRepositoryTasksResponse (Prelude.Maybe Prelude.Text)
+describeDataRepositoryTasksResponse_nextToken = Lens.lens (\DescribeDataRepositoryTasksResponse' {nextToken} -> nextToken) (\s@DescribeDataRepositoryTasksResponse' {} a -> s {nextToken = a} :: DescribeDataRepositoryTasksResponse)
+
+-- | The response's http status code.
+describeDataRepositoryTasksResponse_httpStatus :: Lens.Lens' DescribeDataRepositoryTasksResponse Prelude.Int
+describeDataRepositoryTasksResponse_httpStatus = Lens.lens (\DescribeDataRepositoryTasksResponse' {httpStatus} -> httpStatus) (\s@DescribeDataRepositoryTasksResponse' {} a -> s {httpStatus = a} :: DescribeDataRepositoryTasksResponse)
+
+instance
+  Prelude.NFData
+    DescribeDataRepositoryTasksResponse
+  where
+  rnf DescribeDataRepositoryTasksResponse' {..} =
+    Prelude.rnf dataRepositoryTasks
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeFileCaches.hs b/gen/Amazonka/FSx/DescribeFileCaches.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeFileCaches.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.FSx.DescribeFileCaches
+-- 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 the description of a specific Amazon File Cache resource, if a
+-- @FileCacheIds@ value is provided for that cache. Otherwise, it returns
+-- descriptions of all caches owned by your Amazon Web Services account in
+-- the Amazon Web Services Region of the endpoint that you\'re calling.
+--
+-- When retrieving all cache descriptions, you can optionally specify the
+-- @MaxResults@ parameter to limit the number of descriptions in a
+-- response. If more cache descriptions remain, the operation returns a
+-- @NextToken@ value in the response. In this case, send a later request
+-- with the @NextToken@ request parameter set to the value of @NextToken@
+-- from the last response.
+--
+-- This operation is used in an iterative process to retrieve a list of
+-- your cache descriptions. @DescribeFileCaches@ is called first without a
+-- @NextToken@value. Then the operation continues to be called with the
+-- @NextToken@ parameter set to the value of the last @NextToken@ value
+-- until a response has no @NextToken@.
+--
+-- When using this operation, keep the following in mind:
+--
+-- -   The implementation might return fewer than @MaxResults@ cache
+--     descriptions while still including a @NextToken@ value.
+--
+-- -   The order of caches returned in the response of one
+--     @DescribeFileCaches@ call and the order of caches returned across
+--     the responses of a multicall iteration is unspecified.
+module Amazonka.FSx.DescribeFileCaches
+  ( -- * Creating a Request
+    DescribeFileCaches (..),
+    newDescribeFileCaches,
+
+    -- * Request Lenses
+    describeFileCaches_fileCacheIds,
+    describeFileCaches_maxResults,
+    describeFileCaches_nextToken,
+
+    -- * Destructuring the Response
+    DescribeFileCachesResponse (..),
+    newDescribeFileCachesResponse,
+
+    -- * Response Lenses
+    describeFileCachesResponse_fileCaches,
+    describeFileCachesResponse_nextToken,
+    describeFileCachesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeFileCaches' smart constructor.
+data DescribeFileCaches = DescribeFileCaches'
+  { -- | IDs of the caches whose descriptions you want to retrieve (String).
+    fileCacheIds :: Prelude.Maybe [Prelude.Text],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFileCaches' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileCacheIds', 'describeFileCaches_fileCacheIds' - IDs of the caches whose descriptions you want to retrieve (String).
+--
+-- 'maxResults', 'describeFileCaches_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'describeFileCaches_nextToken' - Undocumented member.
+newDescribeFileCaches ::
+  DescribeFileCaches
+newDescribeFileCaches =
+  DescribeFileCaches'
+    { fileCacheIds = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | IDs of the caches whose descriptions you want to retrieve (String).
+describeFileCaches_fileCacheIds :: Lens.Lens' DescribeFileCaches (Prelude.Maybe [Prelude.Text])
+describeFileCaches_fileCacheIds = Lens.lens (\DescribeFileCaches' {fileCacheIds} -> fileCacheIds) (\s@DescribeFileCaches' {} a -> s {fileCacheIds = a} :: DescribeFileCaches) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeFileCaches_maxResults :: Lens.Lens' DescribeFileCaches (Prelude.Maybe Prelude.Natural)
+describeFileCaches_maxResults = Lens.lens (\DescribeFileCaches' {maxResults} -> maxResults) (\s@DescribeFileCaches' {} a -> s {maxResults = a} :: DescribeFileCaches)
+
+-- | Undocumented member.
+describeFileCaches_nextToken :: Lens.Lens' DescribeFileCaches (Prelude.Maybe Prelude.Text)
+describeFileCaches_nextToken = Lens.lens (\DescribeFileCaches' {nextToken} -> nextToken) (\s@DescribeFileCaches' {} a -> s {nextToken = a} :: DescribeFileCaches)
+
+instance Core.AWSRequest DescribeFileCaches where
+  type
+    AWSResponse DescribeFileCaches =
+      DescribeFileCachesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFileCachesResponse'
+            Prelude.<$> (x Data..?> "FileCaches" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFileCaches where
+  hashWithSalt _salt DescribeFileCaches' {..} =
+    _salt
+      `Prelude.hashWithSalt` fileCacheIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeFileCaches where
+  rnf DescribeFileCaches' {..} =
+    Prelude.rnf fileCacheIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeFileCaches where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeFileCaches" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFileCaches where
+  toJSON DescribeFileCaches' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FileCacheIds" Data..=) Prelude.<$> fileCacheIds,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeFileCaches where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFileCaches where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFileCachesResponse' smart constructor.
+data DescribeFileCachesResponse = DescribeFileCachesResponse'
+  { -- | The response object for the @DescribeFileCaches@ operation.
+    fileCaches :: Prelude.Maybe [FileCache],
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFileCachesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileCaches', 'describeFileCachesResponse_fileCaches' - The response object for the @DescribeFileCaches@ operation.
+--
+-- 'nextToken', 'describeFileCachesResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'describeFileCachesResponse_httpStatus' - The response's http status code.
+newDescribeFileCachesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeFileCachesResponse
+newDescribeFileCachesResponse pHttpStatus_ =
+  DescribeFileCachesResponse'
+    { fileCaches =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The response object for the @DescribeFileCaches@ operation.
+describeFileCachesResponse_fileCaches :: Lens.Lens' DescribeFileCachesResponse (Prelude.Maybe [FileCache])
+describeFileCachesResponse_fileCaches = Lens.lens (\DescribeFileCachesResponse' {fileCaches} -> fileCaches) (\s@DescribeFileCachesResponse' {} a -> s {fileCaches = a} :: DescribeFileCachesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeFileCachesResponse_nextToken :: Lens.Lens' DescribeFileCachesResponse (Prelude.Maybe Prelude.Text)
+describeFileCachesResponse_nextToken = Lens.lens (\DescribeFileCachesResponse' {nextToken} -> nextToken) (\s@DescribeFileCachesResponse' {} a -> s {nextToken = a} :: DescribeFileCachesResponse)
+
+-- | The response's http status code.
+describeFileCachesResponse_httpStatus :: Lens.Lens' DescribeFileCachesResponse Prelude.Int
+describeFileCachesResponse_httpStatus = Lens.lens (\DescribeFileCachesResponse' {httpStatus} -> httpStatus) (\s@DescribeFileCachesResponse' {} a -> s {httpStatus = a} :: DescribeFileCachesResponse)
+
+instance Prelude.NFData DescribeFileCachesResponse where
+  rnf DescribeFileCachesResponse' {..} =
+    Prelude.rnf fileCaches
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeFileSystemAliases.hs b/gen/Amazonka/FSx/DescribeFileSystemAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeFileSystemAliases.hs
@@ -0,0 +1,269 @@
+{-# 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.FSx.DescribeFileSystemAliases
+-- 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 the DNS aliases that are associated with the specified Amazon
+-- FSx for Windows File Server file system. A history of all DNS aliases
+-- that have been associated with and disassociated from the file system is
+-- available in the list of AdministrativeAction provided in the
+-- DescribeFileSystems operation response.
+module Amazonka.FSx.DescribeFileSystemAliases
+  ( -- * Creating a Request
+    DescribeFileSystemAliases (..),
+    newDescribeFileSystemAliases,
+
+    -- * Request Lenses
+    describeFileSystemAliases_clientRequestToken,
+    describeFileSystemAliases_maxResults,
+    describeFileSystemAliases_nextToken,
+    describeFileSystemAliases_fileSystemId,
+
+    -- * Destructuring the Response
+    DescribeFileSystemAliasesResponse (..),
+    newDescribeFileSystemAliasesResponse,
+
+    -- * Response Lenses
+    describeFileSystemAliasesResponse_aliases,
+    describeFileSystemAliasesResponse_nextToken,
+    describeFileSystemAliasesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for @DescribeFileSystemAliases@ operation.
+--
+-- /See:/ 'newDescribeFileSystemAliases' smart constructor.
+data DescribeFileSystemAliases = DescribeFileSystemAliases'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Maximum number of DNS aliases to return in the response (integer). This
+    -- parameter value must be greater than 0. The number of items that Amazon
+    -- FSx returns is the minimum of the @MaxResults@ parameter specified in
+    -- the request and the service\'s internal maximum number of items per
+    -- page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Opaque pagination token returned from a previous
+    -- @DescribeFileSystemAliases@ operation (String). If a token is included
+    -- in the request, the action continues the list from where the previous
+    -- returning call left off.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the file system to return the associated DNS aliases for
+    -- (String).
+    fileSystemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFileSystemAliases' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'describeFileSystemAliases_clientRequestToken' - Undocumented member.
+--
+-- 'maxResults', 'describeFileSystemAliases_maxResults' - Maximum number of DNS aliases to return in the response (integer). This
+-- parameter value must be greater than 0. The number of items that Amazon
+-- FSx returns is the minimum of the @MaxResults@ parameter specified in
+-- the request and the service\'s internal maximum number of items per
+-- page.
+--
+-- 'nextToken', 'describeFileSystemAliases_nextToken' - Opaque pagination token returned from a previous
+-- @DescribeFileSystemAliases@ operation (String). If a token is included
+-- in the request, the action continues the list from where the previous
+-- returning call left off.
+--
+-- 'fileSystemId', 'describeFileSystemAliases_fileSystemId' - The ID of the file system to return the associated DNS aliases for
+-- (String).
+newDescribeFileSystemAliases ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  DescribeFileSystemAliases
+newDescribeFileSystemAliases pFileSystemId_ =
+  DescribeFileSystemAliases'
+    { clientRequestToken =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      fileSystemId = pFileSystemId_
+    }
+
+-- | Undocumented member.
+describeFileSystemAliases_clientRequestToken :: Lens.Lens' DescribeFileSystemAliases (Prelude.Maybe Prelude.Text)
+describeFileSystemAliases_clientRequestToken = Lens.lens (\DescribeFileSystemAliases' {clientRequestToken} -> clientRequestToken) (\s@DescribeFileSystemAliases' {} a -> s {clientRequestToken = a} :: DescribeFileSystemAliases)
+
+-- | Maximum number of DNS aliases to return in the response (integer). This
+-- parameter value must be greater than 0. The number of items that Amazon
+-- FSx returns is the minimum of the @MaxResults@ parameter specified in
+-- the request and the service\'s internal maximum number of items per
+-- page.
+describeFileSystemAliases_maxResults :: Lens.Lens' DescribeFileSystemAliases (Prelude.Maybe Prelude.Natural)
+describeFileSystemAliases_maxResults = Lens.lens (\DescribeFileSystemAliases' {maxResults} -> maxResults) (\s@DescribeFileSystemAliases' {} a -> s {maxResults = a} :: DescribeFileSystemAliases)
+
+-- | Opaque pagination token returned from a previous
+-- @DescribeFileSystemAliases@ operation (String). If a token is included
+-- in the request, the action continues the list from where the previous
+-- returning call left off.
+describeFileSystemAliases_nextToken :: Lens.Lens' DescribeFileSystemAliases (Prelude.Maybe Prelude.Text)
+describeFileSystemAliases_nextToken = Lens.lens (\DescribeFileSystemAliases' {nextToken} -> nextToken) (\s@DescribeFileSystemAliases' {} a -> s {nextToken = a} :: DescribeFileSystemAliases)
+
+-- | The ID of the file system to return the associated DNS aliases for
+-- (String).
+describeFileSystemAliases_fileSystemId :: Lens.Lens' DescribeFileSystemAliases Prelude.Text
+describeFileSystemAliases_fileSystemId = Lens.lens (\DescribeFileSystemAliases' {fileSystemId} -> fileSystemId) (\s@DescribeFileSystemAliases' {} a -> s {fileSystemId = a} :: DescribeFileSystemAliases)
+
+instance Core.AWSRequest DescribeFileSystemAliases where
+  type
+    AWSResponse DescribeFileSystemAliases =
+      DescribeFileSystemAliasesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFileSystemAliasesResponse'
+            Prelude.<$> (x Data..?> "Aliases" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFileSystemAliases where
+  hashWithSalt _salt DescribeFileSystemAliases' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` fileSystemId
+
+instance Prelude.NFData DescribeFileSystemAliases where
+  rnf DescribeFileSystemAliases' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf fileSystemId
+
+instance Data.ToHeaders DescribeFileSystemAliases where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeFileSystemAliases" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFileSystemAliases where
+  toJSON DescribeFileSystemAliases' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId)
+          ]
+      )
+
+instance Data.ToPath DescribeFileSystemAliases where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFileSystemAliases where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for @DescribeFileSystemAliases@ operation.
+--
+-- /See:/ 'newDescribeFileSystemAliasesResponse' smart constructor.
+data DescribeFileSystemAliasesResponse = DescribeFileSystemAliasesResponse'
+  { -- | An array of one or more DNS aliases currently associated with the
+    -- specified file system.
+    aliases :: Prelude.Maybe [Alias],
+    -- | Present if there are more DNS aliases than returned in the response
+    -- (String). You can use the @NextToken@ value in a later request to fetch
+    -- additional descriptions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFileSystemAliasesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliases', 'describeFileSystemAliasesResponse_aliases' - An array of one or more DNS aliases currently associated with the
+-- specified file system.
+--
+-- 'nextToken', 'describeFileSystemAliasesResponse_nextToken' - Present if there are more DNS aliases than returned in the response
+-- (String). You can use the @NextToken@ value in a later request to fetch
+-- additional descriptions.
+--
+-- 'httpStatus', 'describeFileSystemAliasesResponse_httpStatus' - The response's http status code.
+newDescribeFileSystemAliasesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeFileSystemAliasesResponse
+newDescribeFileSystemAliasesResponse pHttpStatus_ =
+  DescribeFileSystemAliasesResponse'
+    { aliases =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of one or more DNS aliases currently associated with the
+-- specified file system.
+describeFileSystemAliasesResponse_aliases :: Lens.Lens' DescribeFileSystemAliasesResponse (Prelude.Maybe [Alias])
+describeFileSystemAliasesResponse_aliases = Lens.lens (\DescribeFileSystemAliasesResponse' {aliases} -> aliases) (\s@DescribeFileSystemAliasesResponse' {} a -> s {aliases = a} :: DescribeFileSystemAliasesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Present if there are more DNS aliases than returned in the response
+-- (String). You can use the @NextToken@ value in a later request to fetch
+-- additional descriptions.
+describeFileSystemAliasesResponse_nextToken :: Lens.Lens' DescribeFileSystemAliasesResponse (Prelude.Maybe Prelude.Text)
+describeFileSystemAliasesResponse_nextToken = Lens.lens (\DescribeFileSystemAliasesResponse' {nextToken} -> nextToken) (\s@DescribeFileSystemAliasesResponse' {} a -> s {nextToken = a} :: DescribeFileSystemAliasesResponse)
+
+-- | The response's http status code.
+describeFileSystemAliasesResponse_httpStatus :: Lens.Lens' DescribeFileSystemAliasesResponse Prelude.Int
+describeFileSystemAliasesResponse_httpStatus = Lens.lens (\DescribeFileSystemAliasesResponse' {httpStatus} -> httpStatus) (\s@DescribeFileSystemAliasesResponse' {} a -> s {httpStatus = a} :: DescribeFileSystemAliasesResponse)
+
+instance
+  Prelude.NFData
+    DescribeFileSystemAliasesResponse
+  where
+  rnf DescribeFileSystemAliasesResponse' {..} =
+    Prelude.rnf aliases
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeFileSystems.hs b/gen/Amazonka/FSx/DescribeFileSystems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeFileSystems.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.FSx.DescribeFileSystems
+-- 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 the description of specific Amazon FSx file systems, if a
+-- @FileSystemIds@ value is provided for that file system. Otherwise, it
+-- returns descriptions of all file systems owned by your Amazon Web
+-- Services account in the Amazon Web Services Region of the endpoint that
+-- you\'re calling.
+--
+-- When retrieving all file system descriptions, you can optionally specify
+-- the @MaxResults@ parameter to limit the number of descriptions in a
+-- response. If more file system descriptions remain, Amazon FSx returns a
+-- @NextToken@ value in the response. In this case, send a later request
+-- with the @NextToken@ request parameter set to the value of @NextToken@
+-- from the last response.
+--
+-- This operation is used in an iterative process to retrieve a list of
+-- your file system descriptions. @DescribeFileSystems@ is called first
+-- without a @NextToken@value. Then the operation continues to be called
+-- with the @NextToken@ parameter set to the value of the last @NextToken@
+-- value until a response has no @NextToken@.
+--
+-- When using this operation, keep the following in mind:
+--
+-- -   The implementation might return fewer than @MaxResults@ file system
+--     descriptions while still including a @NextToken@ value.
+--
+-- -   The order of file systems returned in the response of one
+--     @DescribeFileSystems@ call and the order of file systems returned
+--     across the responses of a multicall iteration is unspecified.
+--
+-- This operation returns paginated results.
+module Amazonka.FSx.DescribeFileSystems
+  ( -- * Creating a Request
+    DescribeFileSystems (..),
+    newDescribeFileSystems,
+
+    -- * Request Lenses
+    describeFileSystems_fileSystemIds,
+    describeFileSystems_maxResults,
+    describeFileSystems_nextToken,
+
+    -- * Destructuring the Response
+    DescribeFileSystemsResponse (..),
+    newDescribeFileSystemsResponse,
+
+    -- * Response Lenses
+    describeFileSystemsResponse_fileSystems,
+    describeFileSystemsResponse_nextToken,
+    describeFileSystemsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for @DescribeFileSystems@ operation.
+--
+-- /See:/ 'newDescribeFileSystems' smart constructor.
+data DescribeFileSystems = DescribeFileSystems'
+  { -- | IDs of the file systems whose descriptions you want to retrieve
+    -- (String).
+    fileSystemIds :: Prelude.Maybe [Prelude.Text],
+    -- | Maximum number of file systems to return in the response (integer). This
+    -- parameter value must be greater than 0. The number of items that Amazon
+    -- FSx returns is the minimum of the @MaxResults@ parameter specified in
+    -- the request and the service\'s internal maximum number of items per
+    -- page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Opaque pagination token returned from a previous @DescribeFileSystems@
+    -- operation (String). If a token present, the operation continues the list
+    -- from where the returning call left off.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFileSystems' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystemIds', 'describeFileSystems_fileSystemIds' - IDs of the file systems whose descriptions you want to retrieve
+-- (String).
+--
+-- 'maxResults', 'describeFileSystems_maxResults' - Maximum number of file systems to return in the response (integer). This
+-- parameter value must be greater than 0. The number of items that Amazon
+-- FSx returns is the minimum of the @MaxResults@ parameter specified in
+-- the request and the service\'s internal maximum number of items per
+-- page.
+--
+-- 'nextToken', 'describeFileSystems_nextToken' - Opaque pagination token returned from a previous @DescribeFileSystems@
+-- operation (String). If a token present, the operation continues the list
+-- from where the returning call left off.
+newDescribeFileSystems ::
+  DescribeFileSystems
+newDescribeFileSystems =
+  DescribeFileSystems'
+    { fileSystemIds =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | IDs of the file systems whose descriptions you want to retrieve
+-- (String).
+describeFileSystems_fileSystemIds :: Lens.Lens' DescribeFileSystems (Prelude.Maybe [Prelude.Text])
+describeFileSystems_fileSystemIds = Lens.lens (\DescribeFileSystems' {fileSystemIds} -> fileSystemIds) (\s@DescribeFileSystems' {} a -> s {fileSystemIds = a} :: DescribeFileSystems) Prelude.. Lens.mapping Lens.coerced
+
+-- | Maximum number of file systems to return in the response (integer). This
+-- parameter value must be greater than 0. The number of items that Amazon
+-- FSx returns is the minimum of the @MaxResults@ parameter specified in
+-- the request and the service\'s internal maximum number of items per
+-- page.
+describeFileSystems_maxResults :: Lens.Lens' DescribeFileSystems (Prelude.Maybe Prelude.Natural)
+describeFileSystems_maxResults = Lens.lens (\DescribeFileSystems' {maxResults} -> maxResults) (\s@DescribeFileSystems' {} a -> s {maxResults = a} :: DescribeFileSystems)
+
+-- | Opaque pagination token returned from a previous @DescribeFileSystems@
+-- operation (String). If a token present, the operation continues the list
+-- from where the returning call left off.
+describeFileSystems_nextToken :: Lens.Lens' DescribeFileSystems (Prelude.Maybe Prelude.Text)
+describeFileSystems_nextToken = Lens.lens (\DescribeFileSystems' {nextToken} -> nextToken) (\s@DescribeFileSystems' {} a -> s {nextToken = a} :: DescribeFileSystems)
+
+instance Core.AWSPager DescribeFileSystems where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeFileSystemsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeFileSystemsResponse_fileSystems
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeFileSystems_nextToken
+          Lens..~ rs
+          Lens.^? describeFileSystemsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeFileSystems where
+  type
+    AWSResponse DescribeFileSystems =
+      DescribeFileSystemsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFileSystemsResponse'
+            Prelude.<$> (x Data..?> "FileSystems" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFileSystems where
+  hashWithSalt _salt DescribeFileSystems' {..} =
+    _salt
+      `Prelude.hashWithSalt` fileSystemIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeFileSystems where
+  rnf DescribeFileSystems' {..} =
+    Prelude.rnf fileSystemIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeFileSystems where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeFileSystems" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFileSystems where
+  toJSON DescribeFileSystems' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FileSystemIds" Data..=) Prelude.<$> fileSystemIds,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeFileSystems where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFileSystems where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for @DescribeFileSystems@ operation.
+--
+-- /See:/ 'newDescribeFileSystemsResponse' smart constructor.
+data DescribeFileSystemsResponse = DescribeFileSystemsResponse'
+  { -- | An array of file system descriptions.
+    fileSystems :: Prelude.Maybe [FileSystem],
+    -- | Present if there are more file systems than returned in the response
+    -- (String). You can use the @NextToken@ value in the later request to
+    -- fetch the descriptions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFileSystemsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystems', 'describeFileSystemsResponse_fileSystems' - An array of file system descriptions.
+--
+-- 'nextToken', 'describeFileSystemsResponse_nextToken' - Present if there are more file systems than returned in the response
+-- (String). You can use the @NextToken@ value in the later request to
+-- fetch the descriptions.
+--
+-- 'httpStatus', 'describeFileSystemsResponse_httpStatus' - The response's http status code.
+newDescribeFileSystemsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeFileSystemsResponse
+newDescribeFileSystemsResponse pHttpStatus_ =
+  DescribeFileSystemsResponse'
+    { fileSystems =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of file system descriptions.
+describeFileSystemsResponse_fileSystems :: Lens.Lens' DescribeFileSystemsResponse (Prelude.Maybe [FileSystem])
+describeFileSystemsResponse_fileSystems = Lens.lens (\DescribeFileSystemsResponse' {fileSystems} -> fileSystems) (\s@DescribeFileSystemsResponse' {} a -> s {fileSystems = a} :: DescribeFileSystemsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Present if there are more file systems than returned in the response
+-- (String). You can use the @NextToken@ value in the later request to
+-- fetch the descriptions.
+describeFileSystemsResponse_nextToken :: Lens.Lens' DescribeFileSystemsResponse (Prelude.Maybe Prelude.Text)
+describeFileSystemsResponse_nextToken = Lens.lens (\DescribeFileSystemsResponse' {nextToken} -> nextToken) (\s@DescribeFileSystemsResponse' {} a -> s {nextToken = a} :: DescribeFileSystemsResponse)
+
+-- | The response's http status code.
+describeFileSystemsResponse_httpStatus :: Lens.Lens' DescribeFileSystemsResponse Prelude.Int
+describeFileSystemsResponse_httpStatus = Lens.lens (\DescribeFileSystemsResponse' {httpStatus} -> httpStatus) (\s@DescribeFileSystemsResponse' {} a -> s {httpStatus = a} :: DescribeFileSystemsResponse)
+
+instance Prelude.NFData DescribeFileSystemsResponse where
+  rnf DescribeFileSystemsResponse' {..} =
+    Prelude.rnf fileSystems
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeSnapshots.hs b/gen/Amazonka/FSx/DescribeSnapshots.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeSnapshots.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.FSx.DescribeSnapshots
+-- 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 the description of specific Amazon FSx for OpenZFS snapshots, if
+-- a @SnapshotIds@ value is provided. Otherwise, this operation returns all
+-- snapshots owned by your Amazon Web Services account in the Amazon Web
+-- Services Region of the endpoint that you\'re calling.
+--
+-- When retrieving all snapshots, you can optionally specify the
+-- @MaxResults@ parameter to limit the number of snapshots in a response.
+-- If more backups remain, Amazon FSx returns a @NextToken@ value in the
+-- response. In this case, send a later request with the @NextToken@
+-- request parameter set to the value of @NextToken@ from the last
+-- response.
+--
+-- Use this operation in an iterative process to retrieve a list of your
+-- snapshots. @DescribeSnapshots@ is called first without a @NextToken@
+-- value. Then the operation continues to be called with the @NextToken@
+-- parameter set to the value of the last @NextToken@ value until a
+-- response has no @NextToken@ value.
+--
+-- When using this operation, keep the following in mind:
+--
+-- -   The operation might return fewer than the @MaxResults@ value of
+--     snapshot descriptions while still including a @NextToken@ value.
+--
+-- -   The order of snapshots returned in the response of one
+--     @DescribeSnapshots@ call and the order of backups returned across
+--     the responses of a multi-call iteration is unspecified.
+module Amazonka.FSx.DescribeSnapshots
+  ( -- * Creating a Request
+    DescribeSnapshots (..),
+    newDescribeSnapshots,
+
+    -- * Request Lenses
+    describeSnapshots_filters,
+    describeSnapshots_maxResults,
+    describeSnapshots_nextToken,
+    describeSnapshots_snapshotIds,
+
+    -- * Destructuring the Response
+    DescribeSnapshotsResponse (..),
+    newDescribeSnapshotsResponse,
+
+    -- * Response Lenses
+    describeSnapshotsResponse_nextToken,
+    describeSnapshotsResponse_snapshots,
+    describeSnapshotsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeSnapshots' smart constructor.
+data DescribeSnapshots = DescribeSnapshots'
+  { -- | The filters structure. The supported names are @file-system-id@ or
+    -- @volume-id@.
+    filters :: Prelude.Maybe [SnapshotFilter],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The IDs of the snapshots that you want to retrieve. This parameter value
+    -- overrides any filters. If any IDs aren\'t found, a @SnapshotNotFound@
+    -- error occurs.
+    snapshotIds :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSnapshots' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'describeSnapshots_filters' - The filters structure. The supported names are @file-system-id@ or
+-- @volume-id@.
+--
+-- 'maxResults', 'describeSnapshots_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'describeSnapshots_nextToken' - Undocumented member.
+--
+-- 'snapshotIds', 'describeSnapshots_snapshotIds' - The IDs of the snapshots that you want to retrieve. This parameter value
+-- overrides any filters. If any IDs aren\'t found, a @SnapshotNotFound@
+-- error occurs.
+newDescribeSnapshots ::
+  DescribeSnapshots
+newDescribeSnapshots =
+  DescribeSnapshots'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      snapshotIds = Prelude.Nothing
+    }
+
+-- | The filters structure. The supported names are @file-system-id@ or
+-- @volume-id@.
+describeSnapshots_filters :: Lens.Lens' DescribeSnapshots (Prelude.Maybe [SnapshotFilter])
+describeSnapshots_filters = Lens.lens (\DescribeSnapshots' {filters} -> filters) (\s@DescribeSnapshots' {} a -> s {filters = a} :: DescribeSnapshots) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeSnapshots_maxResults :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Natural)
+describeSnapshots_maxResults = Lens.lens (\DescribeSnapshots' {maxResults} -> maxResults) (\s@DescribeSnapshots' {} a -> s {maxResults = a} :: DescribeSnapshots)
+
+-- | Undocumented member.
+describeSnapshots_nextToken :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Text)
+describeSnapshots_nextToken = Lens.lens (\DescribeSnapshots' {nextToken} -> nextToken) (\s@DescribeSnapshots' {} a -> s {nextToken = a} :: DescribeSnapshots)
+
+-- | The IDs of the snapshots that you want to retrieve. This parameter value
+-- overrides any filters. If any IDs aren\'t found, a @SnapshotNotFound@
+-- error occurs.
+describeSnapshots_snapshotIds :: Lens.Lens' DescribeSnapshots (Prelude.Maybe [Prelude.Text])
+describeSnapshots_snapshotIds = Lens.lens (\DescribeSnapshots' {snapshotIds} -> snapshotIds) (\s@DescribeSnapshots' {} a -> s {snapshotIds = a} :: DescribeSnapshots) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest DescribeSnapshots where
+  type
+    AWSResponse DescribeSnapshots =
+      DescribeSnapshotsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeSnapshotsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Snapshots" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeSnapshots where
+  hashWithSalt _salt DescribeSnapshots' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` snapshotIds
+
+instance Prelude.NFData DescribeSnapshots where
+  rnf DescribeSnapshots' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf snapshotIds
+
+instance Data.ToHeaders DescribeSnapshots where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeSnapshots" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeSnapshots where
+  toJSON DescribeSnapshots' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SnapshotIds" Data..=) Prelude.<$> snapshotIds
+          ]
+      )
+
+instance Data.ToPath DescribeSnapshots where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeSnapshots where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeSnapshotsResponse' smart constructor.
+data DescribeSnapshotsResponse = DescribeSnapshotsResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of snapshots.
+    snapshots :: Prelude.Maybe [Snapshot],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSnapshotsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeSnapshotsResponse_nextToken' - Undocumented member.
+--
+-- 'snapshots', 'describeSnapshotsResponse_snapshots' - An array of snapshots.
+--
+-- 'httpStatus', 'describeSnapshotsResponse_httpStatus' - The response's http status code.
+newDescribeSnapshotsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeSnapshotsResponse
+newDescribeSnapshotsResponse pHttpStatus_ =
+  DescribeSnapshotsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      snapshots = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describeSnapshotsResponse_nextToken :: Lens.Lens' DescribeSnapshotsResponse (Prelude.Maybe Prelude.Text)
+describeSnapshotsResponse_nextToken = Lens.lens (\DescribeSnapshotsResponse' {nextToken} -> nextToken) (\s@DescribeSnapshotsResponse' {} a -> s {nextToken = a} :: DescribeSnapshotsResponse)
+
+-- | An array of snapshots.
+describeSnapshotsResponse_snapshots :: Lens.Lens' DescribeSnapshotsResponse (Prelude.Maybe [Snapshot])
+describeSnapshotsResponse_snapshots = Lens.lens (\DescribeSnapshotsResponse' {snapshots} -> snapshots) (\s@DescribeSnapshotsResponse' {} a -> s {snapshots = a} :: DescribeSnapshotsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeSnapshotsResponse_httpStatus :: Lens.Lens' DescribeSnapshotsResponse Prelude.Int
+describeSnapshotsResponse_httpStatus = Lens.lens (\DescribeSnapshotsResponse' {httpStatus} -> httpStatus) (\s@DescribeSnapshotsResponse' {} a -> s {httpStatus = a} :: DescribeSnapshotsResponse)
+
+instance Prelude.NFData DescribeSnapshotsResponse where
+  rnf DescribeSnapshotsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf snapshots
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeStorageVirtualMachines.hs b/gen/Amazonka/FSx/DescribeStorageVirtualMachines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeStorageVirtualMachines.hs
@@ -0,0 +1,271 @@
+{-# 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.FSx.DescribeStorageVirtualMachines
+-- 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 one or more Amazon FSx for NetApp ONTAP storage virtual
+-- machines (SVMs).
+--
+-- This operation returns paginated results.
+module Amazonka.FSx.DescribeStorageVirtualMachines
+  ( -- * Creating a Request
+    DescribeStorageVirtualMachines (..),
+    newDescribeStorageVirtualMachines,
+
+    -- * Request Lenses
+    describeStorageVirtualMachines_filters,
+    describeStorageVirtualMachines_maxResults,
+    describeStorageVirtualMachines_nextToken,
+    describeStorageVirtualMachines_storageVirtualMachineIds,
+
+    -- * Destructuring the Response
+    DescribeStorageVirtualMachinesResponse (..),
+    newDescribeStorageVirtualMachinesResponse,
+
+    -- * Response Lenses
+    describeStorageVirtualMachinesResponse_nextToken,
+    describeStorageVirtualMachinesResponse_storageVirtualMachines,
+    describeStorageVirtualMachinesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeStorageVirtualMachines' smart constructor.
+data DescribeStorageVirtualMachines = DescribeStorageVirtualMachines'
+  { -- | Enter a filter name:value pair to view a select set of SVMs.
+    filters :: Prelude.Maybe [StorageVirtualMachineFilter],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Enter the ID of one or more SVMs that you want to view.
+    storageVirtualMachineIds :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeStorageVirtualMachines' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'describeStorageVirtualMachines_filters' - Enter a filter name:value pair to view a select set of SVMs.
+--
+-- 'maxResults', 'describeStorageVirtualMachines_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'describeStorageVirtualMachines_nextToken' - Undocumented member.
+--
+-- 'storageVirtualMachineIds', 'describeStorageVirtualMachines_storageVirtualMachineIds' - Enter the ID of one or more SVMs that you want to view.
+newDescribeStorageVirtualMachines ::
+  DescribeStorageVirtualMachines
+newDescribeStorageVirtualMachines =
+  DescribeStorageVirtualMachines'
+    { filters =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      storageVirtualMachineIds = Prelude.Nothing
+    }
+
+-- | Enter a filter name:value pair to view a select set of SVMs.
+describeStorageVirtualMachines_filters :: Lens.Lens' DescribeStorageVirtualMachines (Prelude.Maybe [StorageVirtualMachineFilter])
+describeStorageVirtualMachines_filters = Lens.lens (\DescribeStorageVirtualMachines' {filters} -> filters) (\s@DescribeStorageVirtualMachines' {} a -> s {filters = a} :: DescribeStorageVirtualMachines) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeStorageVirtualMachines_maxResults :: Lens.Lens' DescribeStorageVirtualMachines (Prelude.Maybe Prelude.Natural)
+describeStorageVirtualMachines_maxResults = Lens.lens (\DescribeStorageVirtualMachines' {maxResults} -> maxResults) (\s@DescribeStorageVirtualMachines' {} a -> s {maxResults = a} :: DescribeStorageVirtualMachines)
+
+-- | Undocumented member.
+describeStorageVirtualMachines_nextToken :: Lens.Lens' DescribeStorageVirtualMachines (Prelude.Maybe Prelude.Text)
+describeStorageVirtualMachines_nextToken = Lens.lens (\DescribeStorageVirtualMachines' {nextToken} -> nextToken) (\s@DescribeStorageVirtualMachines' {} a -> s {nextToken = a} :: DescribeStorageVirtualMachines)
+
+-- | Enter the ID of one or more SVMs that you want to view.
+describeStorageVirtualMachines_storageVirtualMachineIds :: Lens.Lens' DescribeStorageVirtualMachines (Prelude.Maybe [Prelude.Text])
+describeStorageVirtualMachines_storageVirtualMachineIds = Lens.lens (\DescribeStorageVirtualMachines' {storageVirtualMachineIds} -> storageVirtualMachineIds) (\s@DescribeStorageVirtualMachines' {} a -> s {storageVirtualMachineIds = a} :: DescribeStorageVirtualMachines) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSPager DescribeStorageVirtualMachines where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeStorageVirtualMachinesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeStorageVirtualMachinesResponse_storageVirtualMachines
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeStorageVirtualMachines_nextToken
+          Lens..~ rs
+          Lens.^? describeStorageVirtualMachinesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    DescribeStorageVirtualMachines
+  where
+  type
+    AWSResponse DescribeStorageVirtualMachines =
+      DescribeStorageVirtualMachinesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeStorageVirtualMachinesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "StorageVirtualMachines"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeStorageVirtualMachines
+  where
+  hashWithSalt
+    _salt
+    DescribeStorageVirtualMachines' {..} =
+      _salt
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` storageVirtualMachineIds
+
+instance
+  Prelude.NFData
+    DescribeStorageVirtualMachines
+  where
+  rnf DescribeStorageVirtualMachines' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf storageVirtualMachineIds
+
+instance
+  Data.ToHeaders
+    DescribeStorageVirtualMachines
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeStorageVirtualMachines" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeStorageVirtualMachines where
+  toJSON DescribeStorageVirtualMachines' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("StorageVirtualMachineIds" Data..=)
+              Prelude.<$> storageVirtualMachineIds
+          ]
+      )
+
+instance Data.ToPath DescribeStorageVirtualMachines where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeStorageVirtualMachines where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeStorageVirtualMachinesResponse' smart constructor.
+data DescribeStorageVirtualMachinesResponse = DescribeStorageVirtualMachinesResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Returned after a successful @DescribeStorageVirtualMachines@ operation,
+    -- describing each SVM.
+    storageVirtualMachines :: Prelude.Maybe [StorageVirtualMachine],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeStorageVirtualMachinesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeStorageVirtualMachinesResponse_nextToken' - Undocumented member.
+--
+-- 'storageVirtualMachines', 'describeStorageVirtualMachinesResponse_storageVirtualMachines' - Returned after a successful @DescribeStorageVirtualMachines@ operation,
+-- describing each SVM.
+--
+-- 'httpStatus', 'describeStorageVirtualMachinesResponse_httpStatus' - The response's http status code.
+newDescribeStorageVirtualMachinesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeStorageVirtualMachinesResponse
+newDescribeStorageVirtualMachinesResponse
+  pHttpStatus_ =
+    DescribeStorageVirtualMachinesResponse'
+      { nextToken =
+          Prelude.Nothing,
+        storageVirtualMachines =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+describeStorageVirtualMachinesResponse_nextToken :: Lens.Lens' DescribeStorageVirtualMachinesResponse (Prelude.Maybe Prelude.Text)
+describeStorageVirtualMachinesResponse_nextToken = Lens.lens (\DescribeStorageVirtualMachinesResponse' {nextToken} -> nextToken) (\s@DescribeStorageVirtualMachinesResponse' {} a -> s {nextToken = a} :: DescribeStorageVirtualMachinesResponse)
+
+-- | Returned after a successful @DescribeStorageVirtualMachines@ operation,
+-- describing each SVM.
+describeStorageVirtualMachinesResponse_storageVirtualMachines :: Lens.Lens' DescribeStorageVirtualMachinesResponse (Prelude.Maybe [StorageVirtualMachine])
+describeStorageVirtualMachinesResponse_storageVirtualMachines = Lens.lens (\DescribeStorageVirtualMachinesResponse' {storageVirtualMachines} -> storageVirtualMachines) (\s@DescribeStorageVirtualMachinesResponse' {} a -> s {storageVirtualMachines = a} :: DescribeStorageVirtualMachinesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeStorageVirtualMachinesResponse_httpStatus :: Lens.Lens' DescribeStorageVirtualMachinesResponse Prelude.Int
+describeStorageVirtualMachinesResponse_httpStatus = Lens.lens (\DescribeStorageVirtualMachinesResponse' {httpStatus} -> httpStatus) (\s@DescribeStorageVirtualMachinesResponse' {} a -> s {httpStatus = a} :: DescribeStorageVirtualMachinesResponse)
+
+instance
+  Prelude.NFData
+    DescribeStorageVirtualMachinesResponse
+  where
+  rnf DescribeStorageVirtualMachinesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf storageVirtualMachines
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DescribeVolumes.hs b/gen/Amazonka/FSx/DescribeVolumes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DescribeVolumes.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.FSx.DescribeVolumes
+-- 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 one or more Amazon FSx for NetApp ONTAP or Amazon FSx for
+-- OpenZFS volumes.
+--
+-- This operation returns paginated results.
+module Amazonka.FSx.DescribeVolumes
+  ( -- * Creating a Request
+    DescribeVolumes (..),
+    newDescribeVolumes,
+
+    -- * Request Lenses
+    describeVolumes_filters,
+    describeVolumes_maxResults,
+    describeVolumes_nextToken,
+    describeVolumes_volumeIds,
+
+    -- * Destructuring the Response
+    DescribeVolumesResponse (..),
+    newDescribeVolumesResponse,
+
+    -- * Response Lenses
+    describeVolumesResponse_nextToken,
+    describeVolumesResponse_volumes,
+    describeVolumesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeVolumes' smart constructor.
+data DescribeVolumes = DescribeVolumes'
+  { -- | Enter a filter @Name@ and @Values@ pair to view a select set of volumes.
+    filters :: Prelude.Maybe [VolumeFilter],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The IDs of the volumes whose descriptions you want to retrieve.
+    volumeIds :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeVolumes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'describeVolumes_filters' - Enter a filter @Name@ and @Values@ pair to view a select set of volumes.
+--
+-- 'maxResults', 'describeVolumes_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'describeVolumes_nextToken' - Undocumented member.
+--
+-- 'volumeIds', 'describeVolumes_volumeIds' - The IDs of the volumes whose descriptions you want to retrieve.
+newDescribeVolumes ::
+  DescribeVolumes
+newDescribeVolumes =
+  DescribeVolumes'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      volumeIds = Prelude.Nothing
+    }
+
+-- | Enter a filter @Name@ and @Values@ pair to view a select set of volumes.
+describeVolumes_filters :: Lens.Lens' DescribeVolumes (Prelude.Maybe [VolumeFilter])
+describeVolumes_filters = Lens.lens (\DescribeVolumes' {filters} -> filters) (\s@DescribeVolumes' {} a -> s {filters = a} :: DescribeVolumes) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeVolumes_maxResults :: Lens.Lens' DescribeVolumes (Prelude.Maybe Prelude.Natural)
+describeVolumes_maxResults = Lens.lens (\DescribeVolumes' {maxResults} -> maxResults) (\s@DescribeVolumes' {} a -> s {maxResults = a} :: DescribeVolumes)
+
+-- | Undocumented member.
+describeVolumes_nextToken :: Lens.Lens' DescribeVolumes (Prelude.Maybe Prelude.Text)
+describeVolumes_nextToken = Lens.lens (\DescribeVolumes' {nextToken} -> nextToken) (\s@DescribeVolumes' {} a -> s {nextToken = a} :: DescribeVolumes)
+
+-- | The IDs of the volumes whose descriptions you want to retrieve.
+describeVolumes_volumeIds :: Lens.Lens' DescribeVolumes (Prelude.Maybe [Prelude.Text])
+describeVolumes_volumeIds = Lens.lens (\DescribeVolumes' {volumeIds} -> volumeIds) (\s@DescribeVolumes' {} a -> s {volumeIds = a} :: DescribeVolumes) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSPager DescribeVolumes where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeVolumesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeVolumesResponse_volumes
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeVolumes_nextToken
+          Lens..~ rs
+          Lens.^? describeVolumesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeVolumes where
+  type
+    AWSResponse DescribeVolumes =
+      DescribeVolumesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeVolumesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Volumes" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeVolumes where
+  hashWithSalt _salt DescribeVolumes' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` volumeIds
+
+instance Prelude.NFData DescribeVolumes where
+  rnf DescribeVolumes' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf volumeIds
+
+instance Data.ToHeaders DescribeVolumes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DescribeVolumes" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeVolumes where
+  toJSON DescribeVolumes' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("VolumeIds" Data..=) Prelude.<$> volumeIds
+          ]
+      )
+
+instance Data.ToPath DescribeVolumes where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeVolumes where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeVolumesResponse' smart constructor.
+data DescribeVolumesResponse = DescribeVolumesResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Returned after a successful @DescribeVolumes@ operation, describing each
+    -- volume.
+    volumes :: Prelude.Maybe [Volume],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeVolumesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeVolumesResponse_nextToken' - Undocumented member.
+--
+-- 'volumes', 'describeVolumesResponse_volumes' - Returned after a successful @DescribeVolumes@ operation, describing each
+-- volume.
+--
+-- 'httpStatus', 'describeVolumesResponse_httpStatus' - The response's http status code.
+newDescribeVolumesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeVolumesResponse
+newDescribeVolumesResponse pHttpStatus_ =
+  DescribeVolumesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      volumes = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describeVolumesResponse_nextToken :: Lens.Lens' DescribeVolumesResponse (Prelude.Maybe Prelude.Text)
+describeVolumesResponse_nextToken = Lens.lens (\DescribeVolumesResponse' {nextToken} -> nextToken) (\s@DescribeVolumesResponse' {} a -> s {nextToken = a} :: DescribeVolumesResponse)
+
+-- | Returned after a successful @DescribeVolumes@ operation, describing each
+-- volume.
+describeVolumesResponse_volumes :: Lens.Lens' DescribeVolumesResponse (Prelude.Maybe [Volume])
+describeVolumesResponse_volumes = Lens.lens (\DescribeVolumesResponse' {volumes} -> volumes) (\s@DescribeVolumesResponse' {} a -> s {volumes = a} :: DescribeVolumesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeVolumesResponse_httpStatus :: Lens.Lens' DescribeVolumesResponse Prelude.Int
+describeVolumesResponse_httpStatus = Lens.lens (\DescribeVolumesResponse' {httpStatus} -> httpStatus) (\s@DescribeVolumesResponse' {} a -> s {httpStatus = a} :: DescribeVolumesResponse)
+
+instance Prelude.NFData DescribeVolumesResponse where
+  rnf DescribeVolumesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf volumes
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/DisassociateFileSystemAliases.hs b/gen/Amazonka/FSx/DisassociateFileSystemAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/DisassociateFileSystemAliases.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.FSx.DisassociateFileSystemAliases
+-- 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 this action to disassociate, or remove, one or more Domain Name
+-- Service (DNS) aliases from an Amazon FSx for Windows File Server file
+-- system. If you attempt to disassociate a DNS alias that is not
+-- associated with the file system, Amazon FSx responds with a 400 Bad
+-- Request. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>.
+--
+-- The system generated response showing the DNS aliases that Amazon FSx is
+-- attempting to disassociate from the file system. Use the API operation
+-- to monitor the status of the aliases Amazon FSx is disassociating with
+-- the file system.
+module Amazonka.FSx.DisassociateFileSystemAliases
+  ( -- * Creating a Request
+    DisassociateFileSystemAliases (..),
+    newDisassociateFileSystemAliases,
+
+    -- * Request Lenses
+    disassociateFileSystemAliases_clientRequestToken,
+    disassociateFileSystemAliases_fileSystemId,
+    disassociateFileSystemAliases_aliases,
+
+    -- * Destructuring the Response
+    DisassociateFileSystemAliasesResponse (..),
+    newDisassociateFileSystemAliasesResponse,
+
+    -- * Response Lenses
+    disassociateFileSystemAliasesResponse_aliases,
+    disassociateFileSystemAliasesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object of DNS aliases to disassociate from an Amazon FSx for
+-- Windows File Server file system.
+--
+-- /See:/ 'newDisassociateFileSystemAliases' smart constructor.
+data DisassociateFileSystemAliases = DisassociateFileSystemAliases'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the file system from which to disassociate the DNS aliases.
+    fileSystemId :: Prelude.Text,
+    -- | An array of one or more DNS alias names to disassociate, or remove, from
+    -- the file system.
+    aliases :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateFileSystemAliases' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'disassociateFileSystemAliases_clientRequestToken' - Undocumented member.
+--
+-- 'fileSystemId', 'disassociateFileSystemAliases_fileSystemId' - Specifies the file system from which to disassociate the DNS aliases.
+--
+-- 'aliases', 'disassociateFileSystemAliases_aliases' - An array of one or more DNS alias names to disassociate, or remove, from
+-- the file system.
+newDisassociateFileSystemAliases ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  DisassociateFileSystemAliases
+newDisassociateFileSystemAliases pFileSystemId_ =
+  DisassociateFileSystemAliases'
+    { clientRequestToken =
+        Prelude.Nothing,
+      fileSystemId = pFileSystemId_,
+      aliases = Prelude.mempty
+    }
+
+-- | Undocumented member.
+disassociateFileSystemAliases_clientRequestToken :: Lens.Lens' DisassociateFileSystemAliases (Prelude.Maybe Prelude.Text)
+disassociateFileSystemAliases_clientRequestToken = Lens.lens (\DisassociateFileSystemAliases' {clientRequestToken} -> clientRequestToken) (\s@DisassociateFileSystemAliases' {} a -> s {clientRequestToken = a} :: DisassociateFileSystemAliases)
+
+-- | Specifies the file system from which to disassociate the DNS aliases.
+disassociateFileSystemAliases_fileSystemId :: Lens.Lens' DisassociateFileSystemAliases Prelude.Text
+disassociateFileSystemAliases_fileSystemId = Lens.lens (\DisassociateFileSystemAliases' {fileSystemId} -> fileSystemId) (\s@DisassociateFileSystemAliases' {} a -> s {fileSystemId = a} :: DisassociateFileSystemAliases)
+
+-- | An array of one or more DNS alias names to disassociate, or remove, from
+-- the file system.
+disassociateFileSystemAliases_aliases :: Lens.Lens' DisassociateFileSystemAliases [Prelude.Text]
+disassociateFileSystemAliases_aliases = Lens.lens (\DisassociateFileSystemAliases' {aliases} -> aliases) (\s@DisassociateFileSystemAliases' {} a -> s {aliases = a} :: DisassociateFileSystemAliases) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    DisassociateFileSystemAliases
+  where
+  type
+    AWSResponse DisassociateFileSystemAliases =
+      DisassociateFileSystemAliasesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateFileSystemAliasesResponse'
+            Prelude.<$> (x Data..?> "Aliases" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateFileSystemAliases
+  where
+  hashWithSalt _salt DisassociateFileSystemAliases' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` aliases
+
+instance Prelude.NFData DisassociateFileSystemAliases where
+  rnf DisassociateFileSystemAliases' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf aliases
+
+instance Data.ToHeaders DisassociateFileSystemAliases where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.DisassociateFileSystemAliases" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateFileSystemAliases where
+  toJSON DisassociateFileSystemAliases' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId),
+            Prelude.Just ("Aliases" Data..= aliases)
+          ]
+      )
+
+instance Data.ToPath DisassociateFileSystemAliases where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DisassociateFileSystemAliases where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The system generated response showing the DNS aliases that Amazon FSx is
+-- attempting to disassociate from the file system. Use the API operation
+-- to monitor the status of the aliases Amazon FSx is removing from the
+-- file system.
+--
+-- /See:/ 'newDisassociateFileSystemAliasesResponse' smart constructor.
+data DisassociateFileSystemAliasesResponse = DisassociateFileSystemAliasesResponse'
+  { -- | An array of one or more DNS aliases that Amazon FSx is attempting to
+    -- disassociate from the file system.
+    aliases :: Prelude.Maybe [Alias],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateFileSystemAliasesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aliases', 'disassociateFileSystemAliasesResponse_aliases' - An array of one or more DNS aliases that Amazon FSx is attempting to
+-- disassociate from the file system.
+--
+-- 'httpStatus', 'disassociateFileSystemAliasesResponse_httpStatus' - The response's http status code.
+newDisassociateFileSystemAliasesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateFileSystemAliasesResponse
+newDisassociateFileSystemAliasesResponse pHttpStatus_ =
+  DisassociateFileSystemAliasesResponse'
+    { aliases =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of one or more DNS aliases that Amazon FSx is attempting to
+-- disassociate from the file system.
+disassociateFileSystemAliasesResponse_aliases :: Lens.Lens' DisassociateFileSystemAliasesResponse (Prelude.Maybe [Alias])
+disassociateFileSystemAliasesResponse_aliases = Lens.lens (\DisassociateFileSystemAliasesResponse' {aliases} -> aliases) (\s@DisassociateFileSystemAliasesResponse' {} a -> s {aliases = a} :: DisassociateFileSystemAliasesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+disassociateFileSystemAliasesResponse_httpStatus :: Lens.Lens' DisassociateFileSystemAliasesResponse Prelude.Int
+disassociateFileSystemAliasesResponse_httpStatus = Lens.lens (\DisassociateFileSystemAliasesResponse' {httpStatus} -> httpStatus) (\s@DisassociateFileSystemAliasesResponse' {} a -> s {httpStatus = a} :: DisassociateFileSystemAliasesResponse)
+
+instance
+  Prelude.NFData
+    DisassociateFileSystemAliasesResponse
+  where
+  rnf DisassociateFileSystemAliasesResponse' {..} =
+    Prelude.rnf aliases
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/Lens.hs b/gen/Amazonka/FSx/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Lens.hs
@@ -0,0 +1,1158 @@
+{-# 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.FSx.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.FSx.Lens
+  ( -- * Operations
+
+    -- ** AssociateFileSystemAliases
+    associateFileSystemAliases_clientRequestToken,
+    associateFileSystemAliases_fileSystemId,
+    associateFileSystemAliases_aliases,
+    associateFileSystemAliasesResponse_aliases,
+    associateFileSystemAliasesResponse_httpStatus,
+
+    -- ** CancelDataRepositoryTask
+    cancelDataRepositoryTask_taskId,
+    cancelDataRepositoryTaskResponse_lifecycle,
+    cancelDataRepositoryTaskResponse_taskId,
+    cancelDataRepositoryTaskResponse_httpStatus,
+
+    -- ** CopyBackup
+    copyBackup_clientRequestToken,
+    copyBackup_copyTags,
+    copyBackup_kmsKeyId,
+    copyBackup_sourceRegion,
+    copyBackup_tags,
+    copyBackup_sourceBackupId,
+    copyBackupResponse_backup,
+    copyBackupResponse_httpStatus,
+
+    -- ** CreateBackup
+    createBackup_clientRequestToken,
+    createBackup_fileSystemId,
+    createBackup_tags,
+    createBackup_volumeId,
+    createBackupResponse_backup,
+    createBackupResponse_httpStatus,
+
+    -- ** CreateDataRepositoryAssociation
+    createDataRepositoryAssociation_batchImportMetaDataOnCreate,
+    createDataRepositoryAssociation_clientRequestToken,
+    createDataRepositoryAssociation_fileSystemPath,
+    createDataRepositoryAssociation_importedFileChunkSize,
+    createDataRepositoryAssociation_s3,
+    createDataRepositoryAssociation_tags,
+    createDataRepositoryAssociation_fileSystemId,
+    createDataRepositoryAssociation_dataRepositoryPath,
+    createDataRepositoryAssociationResponse_association,
+    createDataRepositoryAssociationResponse_httpStatus,
+
+    -- ** CreateDataRepositoryTask
+    createDataRepositoryTask_capacityToRelease,
+    createDataRepositoryTask_clientRequestToken,
+    createDataRepositoryTask_paths,
+    createDataRepositoryTask_tags,
+    createDataRepositoryTask_type,
+    createDataRepositoryTask_fileSystemId,
+    createDataRepositoryTask_report,
+    createDataRepositoryTaskResponse_dataRepositoryTask,
+    createDataRepositoryTaskResponse_httpStatus,
+
+    -- ** CreateFileCache
+    createFileCache_clientRequestToken,
+    createFileCache_copyTagsToDataRepositoryAssociations,
+    createFileCache_dataRepositoryAssociations,
+    createFileCache_kmsKeyId,
+    createFileCache_lustreConfiguration,
+    createFileCache_securityGroupIds,
+    createFileCache_tags,
+    createFileCache_fileCacheType,
+    createFileCache_fileCacheTypeVersion,
+    createFileCache_storageCapacity,
+    createFileCache_subnetIds,
+    createFileCacheResponse_fileCache,
+    createFileCacheResponse_httpStatus,
+
+    -- ** CreateFileSystem
+    createFileSystem_clientRequestToken,
+    createFileSystem_fileSystemTypeVersion,
+    createFileSystem_kmsKeyId,
+    createFileSystem_lustreConfiguration,
+    createFileSystem_ontapConfiguration,
+    createFileSystem_openZFSConfiguration,
+    createFileSystem_securityGroupIds,
+    createFileSystem_storageType,
+    createFileSystem_tags,
+    createFileSystem_windowsConfiguration,
+    createFileSystem_fileSystemType,
+    createFileSystem_storageCapacity,
+    createFileSystem_subnetIds,
+    createFileSystemResponse_fileSystem,
+    createFileSystemResponse_httpStatus,
+
+    -- ** CreateFileSystemFromBackup
+    createFileSystemFromBackup_clientRequestToken,
+    createFileSystemFromBackup_fileSystemTypeVersion,
+    createFileSystemFromBackup_kmsKeyId,
+    createFileSystemFromBackup_lustreConfiguration,
+    createFileSystemFromBackup_openZFSConfiguration,
+    createFileSystemFromBackup_securityGroupIds,
+    createFileSystemFromBackup_storageCapacity,
+    createFileSystemFromBackup_storageType,
+    createFileSystemFromBackup_tags,
+    createFileSystemFromBackup_windowsConfiguration,
+    createFileSystemFromBackup_backupId,
+    createFileSystemFromBackup_subnetIds,
+    createFileSystemFromBackupResponse_fileSystem,
+    createFileSystemFromBackupResponse_httpStatus,
+
+    -- ** CreateSnapshot
+    createSnapshot_clientRequestToken,
+    createSnapshot_tags,
+    createSnapshot_name,
+    createSnapshot_volumeId,
+    createSnapshotResponse_snapshot,
+    createSnapshotResponse_httpStatus,
+
+    -- ** CreateStorageVirtualMachine
+    createStorageVirtualMachine_activeDirectoryConfiguration,
+    createStorageVirtualMachine_clientRequestToken,
+    createStorageVirtualMachine_rootVolumeSecurityStyle,
+    createStorageVirtualMachine_svmAdminPassword,
+    createStorageVirtualMachine_tags,
+    createStorageVirtualMachine_fileSystemId,
+    createStorageVirtualMachine_name,
+    createStorageVirtualMachineResponse_storageVirtualMachine,
+    createStorageVirtualMachineResponse_httpStatus,
+
+    -- ** CreateVolume
+    createVolume_clientRequestToken,
+    createVolume_ontapConfiguration,
+    createVolume_openZFSConfiguration,
+    createVolume_tags,
+    createVolume_volumeType,
+    createVolume_name,
+    createVolumeResponse_volume,
+    createVolumeResponse_httpStatus,
+
+    -- ** CreateVolumeFromBackup
+    createVolumeFromBackup_clientRequestToken,
+    createVolumeFromBackup_ontapConfiguration,
+    createVolumeFromBackup_tags,
+    createVolumeFromBackup_backupId,
+    createVolumeFromBackup_name,
+    createVolumeFromBackupResponse_volume,
+    createVolumeFromBackupResponse_httpStatus,
+
+    -- ** DeleteBackup
+    deleteBackup_clientRequestToken,
+    deleteBackup_backupId,
+    deleteBackupResponse_backupId,
+    deleteBackupResponse_lifecycle,
+    deleteBackupResponse_httpStatus,
+
+    -- ** DeleteDataRepositoryAssociation
+    deleteDataRepositoryAssociation_clientRequestToken,
+    deleteDataRepositoryAssociation_deleteDataInFileSystem,
+    deleteDataRepositoryAssociation_associationId,
+    deleteDataRepositoryAssociationResponse_associationId,
+    deleteDataRepositoryAssociationResponse_deleteDataInFileSystem,
+    deleteDataRepositoryAssociationResponse_lifecycle,
+    deleteDataRepositoryAssociationResponse_httpStatus,
+
+    -- ** DeleteFileCache
+    deleteFileCache_clientRequestToken,
+    deleteFileCache_fileCacheId,
+    deleteFileCacheResponse_fileCacheId,
+    deleteFileCacheResponse_lifecycle,
+    deleteFileCacheResponse_httpStatus,
+
+    -- ** DeleteFileSystem
+    deleteFileSystem_clientRequestToken,
+    deleteFileSystem_lustreConfiguration,
+    deleteFileSystem_openZFSConfiguration,
+    deleteFileSystem_windowsConfiguration,
+    deleteFileSystem_fileSystemId,
+    deleteFileSystemResponse_fileSystemId,
+    deleteFileSystemResponse_lifecycle,
+    deleteFileSystemResponse_lustreResponse,
+    deleteFileSystemResponse_openZFSResponse,
+    deleteFileSystemResponse_windowsResponse,
+    deleteFileSystemResponse_httpStatus,
+
+    -- ** DeleteSnapshot
+    deleteSnapshot_clientRequestToken,
+    deleteSnapshot_snapshotId,
+    deleteSnapshotResponse_lifecycle,
+    deleteSnapshotResponse_snapshotId,
+    deleteSnapshotResponse_httpStatus,
+
+    -- ** DeleteStorageVirtualMachine
+    deleteStorageVirtualMachine_clientRequestToken,
+    deleteStorageVirtualMachine_storageVirtualMachineId,
+    deleteStorageVirtualMachineResponse_lifecycle,
+    deleteStorageVirtualMachineResponse_storageVirtualMachineId,
+    deleteStorageVirtualMachineResponse_httpStatus,
+
+    -- ** DeleteVolume
+    deleteVolume_clientRequestToken,
+    deleteVolume_ontapConfiguration,
+    deleteVolume_openZFSConfiguration,
+    deleteVolume_volumeId,
+    deleteVolumeResponse_lifecycle,
+    deleteVolumeResponse_ontapResponse,
+    deleteVolumeResponse_volumeId,
+    deleteVolumeResponse_httpStatus,
+
+    -- ** DescribeBackups
+    describeBackups_backupIds,
+    describeBackups_filters,
+    describeBackups_maxResults,
+    describeBackups_nextToken,
+    describeBackupsResponse_backups,
+    describeBackupsResponse_nextToken,
+    describeBackupsResponse_httpStatus,
+
+    -- ** DescribeDataRepositoryAssociations
+    describeDataRepositoryAssociations_associationIds,
+    describeDataRepositoryAssociations_filters,
+    describeDataRepositoryAssociations_maxResults,
+    describeDataRepositoryAssociations_nextToken,
+    describeDataRepositoryAssociationsResponse_associations,
+    describeDataRepositoryAssociationsResponse_nextToken,
+    describeDataRepositoryAssociationsResponse_httpStatus,
+
+    -- ** DescribeDataRepositoryTasks
+    describeDataRepositoryTasks_filters,
+    describeDataRepositoryTasks_maxResults,
+    describeDataRepositoryTasks_nextToken,
+    describeDataRepositoryTasks_taskIds,
+    describeDataRepositoryTasksResponse_dataRepositoryTasks,
+    describeDataRepositoryTasksResponse_nextToken,
+    describeDataRepositoryTasksResponse_httpStatus,
+
+    -- ** DescribeFileCaches
+    describeFileCaches_fileCacheIds,
+    describeFileCaches_maxResults,
+    describeFileCaches_nextToken,
+    describeFileCachesResponse_fileCaches,
+    describeFileCachesResponse_nextToken,
+    describeFileCachesResponse_httpStatus,
+
+    -- ** DescribeFileSystemAliases
+    describeFileSystemAliases_clientRequestToken,
+    describeFileSystemAliases_maxResults,
+    describeFileSystemAliases_nextToken,
+    describeFileSystemAliases_fileSystemId,
+    describeFileSystemAliasesResponse_aliases,
+    describeFileSystemAliasesResponse_nextToken,
+    describeFileSystemAliasesResponse_httpStatus,
+
+    -- ** DescribeFileSystems
+    describeFileSystems_fileSystemIds,
+    describeFileSystems_maxResults,
+    describeFileSystems_nextToken,
+    describeFileSystemsResponse_fileSystems,
+    describeFileSystemsResponse_nextToken,
+    describeFileSystemsResponse_httpStatus,
+
+    -- ** DescribeSnapshots
+    describeSnapshots_filters,
+    describeSnapshots_maxResults,
+    describeSnapshots_nextToken,
+    describeSnapshots_snapshotIds,
+    describeSnapshotsResponse_nextToken,
+    describeSnapshotsResponse_snapshots,
+    describeSnapshotsResponse_httpStatus,
+
+    -- ** DescribeStorageVirtualMachines
+    describeStorageVirtualMachines_filters,
+    describeStorageVirtualMachines_maxResults,
+    describeStorageVirtualMachines_nextToken,
+    describeStorageVirtualMachines_storageVirtualMachineIds,
+    describeStorageVirtualMachinesResponse_nextToken,
+    describeStorageVirtualMachinesResponse_storageVirtualMachines,
+    describeStorageVirtualMachinesResponse_httpStatus,
+
+    -- ** DescribeVolumes
+    describeVolumes_filters,
+    describeVolumes_maxResults,
+    describeVolumes_nextToken,
+    describeVolumes_volumeIds,
+    describeVolumesResponse_nextToken,
+    describeVolumesResponse_volumes,
+    describeVolumesResponse_httpStatus,
+
+    -- ** DisassociateFileSystemAliases
+    disassociateFileSystemAliases_clientRequestToken,
+    disassociateFileSystemAliases_fileSystemId,
+    disassociateFileSystemAliases_aliases,
+    disassociateFileSystemAliasesResponse_aliases,
+    disassociateFileSystemAliasesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_maxResults,
+    listTagsForResource_nextToken,
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_nextToken,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** ReleaseFileSystemNfsV3Locks
+    releaseFileSystemNfsV3Locks_clientRequestToken,
+    releaseFileSystemNfsV3Locks_fileSystemId,
+    releaseFileSystemNfsV3LocksResponse_fileSystem,
+    releaseFileSystemNfsV3LocksResponse_httpStatus,
+
+    -- ** RestoreVolumeFromSnapshot
+    restoreVolumeFromSnapshot_clientRequestToken,
+    restoreVolumeFromSnapshot_options,
+    restoreVolumeFromSnapshot_volumeId,
+    restoreVolumeFromSnapshot_snapshotId,
+    restoreVolumeFromSnapshotResponse_administrativeActions,
+    restoreVolumeFromSnapshotResponse_lifecycle,
+    restoreVolumeFromSnapshotResponse_volumeId,
+    restoreVolumeFromSnapshotResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateDataRepositoryAssociation
+    updateDataRepositoryAssociation_clientRequestToken,
+    updateDataRepositoryAssociation_importedFileChunkSize,
+    updateDataRepositoryAssociation_s3,
+    updateDataRepositoryAssociation_associationId,
+    updateDataRepositoryAssociationResponse_association,
+    updateDataRepositoryAssociationResponse_httpStatus,
+
+    -- ** UpdateFileCache
+    updateFileCache_clientRequestToken,
+    updateFileCache_lustreConfiguration,
+    updateFileCache_fileCacheId,
+    updateFileCacheResponse_fileCache,
+    updateFileCacheResponse_httpStatus,
+
+    -- ** UpdateFileSystem
+    updateFileSystem_clientRequestToken,
+    updateFileSystem_lustreConfiguration,
+    updateFileSystem_ontapConfiguration,
+    updateFileSystem_openZFSConfiguration,
+    updateFileSystem_storageCapacity,
+    updateFileSystem_windowsConfiguration,
+    updateFileSystem_fileSystemId,
+    updateFileSystemResponse_fileSystem,
+    updateFileSystemResponse_httpStatus,
+
+    -- ** UpdateSnapshot
+    updateSnapshot_clientRequestToken,
+    updateSnapshot_name,
+    updateSnapshot_snapshotId,
+    updateSnapshotResponse_snapshot,
+    updateSnapshotResponse_httpStatus,
+
+    -- ** UpdateStorageVirtualMachine
+    updateStorageVirtualMachine_activeDirectoryConfiguration,
+    updateStorageVirtualMachine_clientRequestToken,
+    updateStorageVirtualMachine_svmAdminPassword,
+    updateStorageVirtualMachine_storageVirtualMachineId,
+    updateStorageVirtualMachineResponse_storageVirtualMachine,
+    updateStorageVirtualMachineResponse_httpStatus,
+
+    -- ** UpdateVolume
+    updateVolume_clientRequestToken,
+    updateVolume_name,
+    updateVolume_ontapConfiguration,
+    updateVolume_openZFSConfiguration,
+    updateVolume_volumeId,
+    updateVolumeResponse_volume,
+    updateVolumeResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ActiveDirectoryBackupAttributes
+    activeDirectoryBackupAttributes_activeDirectoryId,
+    activeDirectoryBackupAttributes_domainName,
+    activeDirectoryBackupAttributes_resourceARN,
+
+    -- ** AdministrativeAction
+    administrativeAction_administrativeActionType,
+    administrativeAction_failureDetails,
+    administrativeAction_progressPercent,
+    administrativeAction_requestTime,
+    administrativeAction_status,
+    administrativeAction_targetFileSystemValues,
+    administrativeAction_targetSnapshotValues,
+    administrativeAction_targetVolumeValues,
+
+    -- ** AdministrativeActionFailureDetails
+    administrativeActionFailureDetails_message,
+
+    -- ** Alias
+    alias_lifecycle,
+    alias_name,
+
+    -- ** AutoExportPolicy
+    autoExportPolicy_events,
+
+    -- ** AutoImportPolicy
+    autoImportPolicy_events,
+
+    -- ** Backup
+    backup_directoryInformation,
+    backup_failureDetails,
+    backup_kmsKeyId,
+    backup_ownerId,
+    backup_progressPercent,
+    backup_resourceARN,
+    backup_resourceType,
+    backup_sourceBackupId,
+    backup_sourceBackupRegion,
+    backup_tags,
+    backup_volume,
+    backup_backupId,
+    backup_lifecycle,
+    backup_type,
+    backup_creationTime,
+    backup_fileSystem,
+
+    -- ** BackupFailureDetails
+    backupFailureDetails_message,
+
+    -- ** CompletionReport
+    completionReport_format,
+    completionReport_path,
+    completionReport_scope,
+    completionReport_enabled,
+
+    -- ** CreateFileCacheLustreConfiguration
+    createFileCacheLustreConfiguration_weeklyMaintenanceStartTime,
+    createFileCacheLustreConfiguration_perUnitStorageThroughput,
+    createFileCacheLustreConfiguration_deploymentType,
+    createFileCacheLustreConfiguration_metadataConfiguration,
+
+    -- ** CreateFileSystemLustreConfiguration
+    createFileSystemLustreConfiguration_autoImportPolicy,
+    createFileSystemLustreConfiguration_automaticBackupRetentionDays,
+    createFileSystemLustreConfiguration_copyTagsToBackups,
+    createFileSystemLustreConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemLustreConfiguration_dataCompressionType,
+    createFileSystemLustreConfiguration_deploymentType,
+    createFileSystemLustreConfiguration_driveCacheType,
+    createFileSystemLustreConfiguration_exportPath,
+    createFileSystemLustreConfiguration_importPath,
+    createFileSystemLustreConfiguration_importedFileChunkSize,
+    createFileSystemLustreConfiguration_logConfiguration,
+    createFileSystemLustreConfiguration_perUnitStorageThroughput,
+    createFileSystemLustreConfiguration_rootSquashConfiguration,
+    createFileSystemLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** CreateFileSystemOntapConfiguration
+    createFileSystemOntapConfiguration_automaticBackupRetentionDays,
+    createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemOntapConfiguration_diskIopsConfiguration,
+    createFileSystemOntapConfiguration_endpointIpAddressRange,
+    createFileSystemOntapConfiguration_fsxAdminPassword,
+    createFileSystemOntapConfiguration_preferredSubnetId,
+    createFileSystemOntapConfiguration_routeTableIds,
+    createFileSystemOntapConfiguration_weeklyMaintenanceStartTime,
+    createFileSystemOntapConfiguration_deploymentType,
+    createFileSystemOntapConfiguration_throughputCapacity,
+
+    -- ** CreateFileSystemOpenZFSConfiguration
+    createFileSystemOpenZFSConfiguration_automaticBackupRetentionDays,
+    createFileSystemOpenZFSConfiguration_copyTagsToBackups,
+    createFileSystemOpenZFSConfiguration_copyTagsToVolumes,
+    createFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemOpenZFSConfiguration_diskIopsConfiguration,
+    createFileSystemOpenZFSConfiguration_rootVolumeConfiguration,
+    createFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime,
+    createFileSystemOpenZFSConfiguration_deploymentType,
+    createFileSystemOpenZFSConfiguration_throughputCapacity,
+
+    -- ** CreateFileSystemWindowsConfiguration
+    createFileSystemWindowsConfiguration_activeDirectoryId,
+    createFileSystemWindowsConfiguration_aliases,
+    createFileSystemWindowsConfiguration_auditLogConfiguration,
+    createFileSystemWindowsConfiguration_automaticBackupRetentionDays,
+    createFileSystemWindowsConfiguration_copyTagsToBackups,
+    createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemWindowsConfiguration_deploymentType,
+    createFileSystemWindowsConfiguration_preferredSubnetId,
+    createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration,
+    createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime,
+    createFileSystemWindowsConfiguration_throughputCapacity,
+
+    -- ** CreateOntapVolumeConfiguration
+    createOntapVolumeConfiguration_copyTagsToBackups,
+    createOntapVolumeConfiguration_junctionPath,
+    createOntapVolumeConfiguration_ontapVolumeType,
+    createOntapVolumeConfiguration_securityStyle,
+    createOntapVolumeConfiguration_snapshotPolicy,
+    createOntapVolumeConfiguration_storageEfficiencyEnabled,
+    createOntapVolumeConfiguration_tieringPolicy,
+    createOntapVolumeConfiguration_sizeInMegabytes,
+    createOntapVolumeConfiguration_storageVirtualMachineId,
+
+    -- ** CreateOpenZFSOriginSnapshotConfiguration
+    createOpenZFSOriginSnapshotConfiguration_snapshotARN,
+    createOpenZFSOriginSnapshotConfiguration_copyStrategy,
+
+    -- ** CreateOpenZFSVolumeConfiguration
+    createOpenZFSVolumeConfiguration_copyTagsToSnapshots,
+    createOpenZFSVolumeConfiguration_dataCompressionType,
+    createOpenZFSVolumeConfiguration_nfsExports,
+    createOpenZFSVolumeConfiguration_originSnapshot,
+    createOpenZFSVolumeConfiguration_readOnly,
+    createOpenZFSVolumeConfiguration_recordSizeKiB,
+    createOpenZFSVolumeConfiguration_storageCapacityQuotaGiB,
+    createOpenZFSVolumeConfiguration_storageCapacityReservationGiB,
+    createOpenZFSVolumeConfiguration_userAndGroupQuotas,
+    createOpenZFSVolumeConfiguration_parentVolumeId,
+
+    -- ** CreateSvmActiveDirectoryConfiguration
+    createSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration,
+    createSvmActiveDirectoryConfiguration_netBiosName,
+
+    -- ** DataRepositoryAssociation
+    dataRepositoryAssociation_associationId,
+    dataRepositoryAssociation_batchImportMetaDataOnCreate,
+    dataRepositoryAssociation_creationTime,
+    dataRepositoryAssociation_dataRepositoryPath,
+    dataRepositoryAssociation_dataRepositorySubdirectories,
+    dataRepositoryAssociation_failureDetails,
+    dataRepositoryAssociation_fileCacheId,
+    dataRepositoryAssociation_fileCachePath,
+    dataRepositoryAssociation_fileSystemId,
+    dataRepositoryAssociation_fileSystemPath,
+    dataRepositoryAssociation_importedFileChunkSize,
+    dataRepositoryAssociation_lifecycle,
+    dataRepositoryAssociation_nfs,
+    dataRepositoryAssociation_resourceARN,
+    dataRepositoryAssociation_s3,
+    dataRepositoryAssociation_tags,
+
+    -- ** DataRepositoryConfiguration
+    dataRepositoryConfiguration_autoImportPolicy,
+    dataRepositoryConfiguration_exportPath,
+    dataRepositoryConfiguration_failureDetails,
+    dataRepositoryConfiguration_importPath,
+    dataRepositoryConfiguration_importedFileChunkSize,
+    dataRepositoryConfiguration_lifecycle,
+
+    -- ** DataRepositoryFailureDetails
+    dataRepositoryFailureDetails_message,
+
+    -- ** DataRepositoryTask
+    dataRepositoryTask_capacityToRelease,
+    dataRepositoryTask_endTime,
+    dataRepositoryTask_failureDetails,
+    dataRepositoryTask_fileCacheId,
+    dataRepositoryTask_fileSystemId,
+    dataRepositoryTask_paths,
+    dataRepositoryTask_report,
+    dataRepositoryTask_resourceARN,
+    dataRepositoryTask_startTime,
+    dataRepositoryTask_status,
+    dataRepositoryTask_tags,
+    dataRepositoryTask_taskId,
+    dataRepositoryTask_lifecycle,
+    dataRepositoryTask_type,
+    dataRepositoryTask_creationTime,
+
+    -- ** DataRepositoryTaskFailureDetails
+    dataRepositoryTaskFailureDetails_message,
+
+    -- ** DataRepositoryTaskFilter
+    dataRepositoryTaskFilter_name,
+    dataRepositoryTaskFilter_values,
+
+    -- ** DataRepositoryTaskStatus
+    dataRepositoryTaskStatus_failedCount,
+    dataRepositoryTaskStatus_lastUpdatedTime,
+    dataRepositoryTaskStatus_releasedCapacity,
+    dataRepositoryTaskStatus_succeededCount,
+    dataRepositoryTaskStatus_totalCount,
+
+    -- ** DeleteFileSystemLustreConfiguration
+    deleteFileSystemLustreConfiguration_finalBackupTags,
+    deleteFileSystemLustreConfiguration_skipFinalBackup,
+
+    -- ** DeleteFileSystemLustreResponse
+    deleteFileSystemLustreResponse_finalBackupId,
+    deleteFileSystemLustreResponse_finalBackupTags,
+
+    -- ** DeleteFileSystemOpenZFSConfiguration
+    deleteFileSystemOpenZFSConfiguration_finalBackupTags,
+    deleteFileSystemOpenZFSConfiguration_options,
+    deleteFileSystemOpenZFSConfiguration_skipFinalBackup,
+
+    -- ** DeleteFileSystemOpenZFSResponse
+    deleteFileSystemOpenZFSResponse_finalBackupId,
+    deleteFileSystemOpenZFSResponse_finalBackupTags,
+
+    -- ** DeleteFileSystemWindowsConfiguration
+    deleteFileSystemWindowsConfiguration_finalBackupTags,
+    deleteFileSystemWindowsConfiguration_skipFinalBackup,
+
+    -- ** DeleteFileSystemWindowsResponse
+    deleteFileSystemWindowsResponse_finalBackupId,
+    deleteFileSystemWindowsResponse_finalBackupTags,
+
+    -- ** DeleteVolumeOntapConfiguration
+    deleteVolumeOntapConfiguration_finalBackupTags,
+    deleteVolumeOntapConfiguration_skipFinalBackup,
+
+    -- ** DeleteVolumeOntapResponse
+    deleteVolumeOntapResponse_finalBackupId,
+    deleteVolumeOntapResponse_finalBackupTags,
+
+    -- ** DeleteVolumeOpenZFSConfiguration
+    deleteVolumeOpenZFSConfiguration_options,
+
+    -- ** DiskIopsConfiguration
+    diskIopsConfiguration_iops,
+    diskIopsConfiguration_mode,
+
+    -- ** FileCache
+    fileCache_creationTime,
+    fileCache_dNSName,
+    fileCache_dataRepositoryAssociationIds,
+    fileCache_failureDetails,
+    fileCache_fileCacheId,
+    fileCache_fileCacheType,
+    fileCache_fileCacheTypeVersion,
+    fileCache_kmsKeyId,
+    fileCache_lifecycle,
+    fileCache_lustreConfiguration,
+    fileCache_networkInterfaceIds,
+    fileCache_ownerId,
+    fileCache_resourceARN,
+    fileCache_storageCapacity,
+    fileCache_subnetIds,
+    fileCache_vpcId,
+
+    -- ** FileCacheCreating
+    fileCacheCreating_copyTagsToDataRepositoryAssociations,
+    fileCacheCreating_creationTime,
+    fileCacheCreating_dNSName,
+    fileCacheCreating_dataRepositoryAssociationIds,
+    fileCacheCreating_failureDetails,
+    fileCacheCreating_fileCacheId,
+    fileCacheCreating_fileCacheType,
+    fileCacheCreating_fileCacheTypeVersion,
+    fileCacheCreating_kmsKeyId,
+    fileCacheCreating_lifecycle,
+    fileCacheCreating_lustreConfiguration,
+    fileCacheCreating_networkInterfaceIds,
+    fileCacheCreating_ownerId,
+    fileCacheCreating_resourceARN,
+    fileCacheCreating_storageCapacity,
+    fileCacheCreating_subnetIds,
+    fileCacheCreating_tags,
+    fileCacheCreating_vpcId,
+
+    -- ** FileCacheDataRepositoryAssociation
+    fileCacheDataRepositoryAssociation_dataRepositorySubdirectories,
+    fileCacheDataRepositoryAssociation_nfs,
+    fileCacheDataRepositoryAssociation_fileCachePath,
+    fileCacheDataRepositoryAssociation_dataRepositoryPath,
+
+    -- ** FileCacheFailureDetails
+    fileCacheFailureDetails_message,
+
+    -- ** FileCacheLustreConfiguration
+    fileCacheLustreConfiguration_deploymentType,
+    fileCacheLustreConfiguration_logConfiguration,
+    fileCacheLustreConfiguration_metadataConfiguration,
+    fileCacheLustreConfiguration_mountName,
+    fileCacheLustreConfiguration_perUnitStorageThroughput,
+    fileCacheLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** FileCacheLustreMetadataConfiguration
+    fileCacheLustreMetadataConfiguration_storageCapacity,
+
+    -- ** FileCacheNFSConfiguration
+    fileCacheNFSConfiguration_dnsIps,
+    fileCacheNFSConfiguration_version,
+
+    -- ** FileSystem
+    fileSystem_administrativeActions,
+    fileSystem_creationTime,
+    fileSystem_dNSName,
+    fileSystem_failureDetails,
+    fileSystem_fileSystemId,
+    fileSystem_fileSystemType,
+    fileSystem_fileSystemTypeVersion,
+    fileSystem_kmsKeyId,
+    fileSystem_lifecycle,
+    fileSystem_lustreConfiguration,
+    fileSystem_networkInterfaceIds,
+    fileSystem_ontapConfiguration,
+    fileSystem_openZFSConfiguration,
+    fileSystem_ownerId,
+    fileSystem_resourceARN,
+    fileSystem_storageCapacity,
+    fileSystem_storageType,
+    fileSystem_subnetIds,
+    fileSystem_tags,
+    fileSystem_vpcId,
+    fileSystem_windowsConfiguration,
+
+    -- ** FileSystemEndpoint
+    fileSystemEndpoint_dNSName,
+    fileSystemEndpoint_ipAddresses,
+
+    -- ** FileSystemEndpoints
+    fileSystemEndpoints_intercluster,
+    fileSystemEndpoints_management,
+
+    -- ** FileSystemFailureDetails
+    fileSystemFailureDetails_message,
+
+    -- ** Filter
+    filter_name,
+    filter_values,
+
+    -- ** LifecycleTransitionReason
+    lifecycleTransitionReason_message,
+
+    -- ** LustreFileSystemConfiguration
+    lustreFileSystemConfiguration_automaticBackupRetentionDays,
+    lustreFileSystemConfiguration_copyTagsToBackups,
+    lustreFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    lustreFileSystemConfiguration_dataCompressionType,
+    lustreFileSystemConfiguration_dataRepositoryConfiguration,
+    lustreFileSystemConfiguration_deploymentType,
+    lustreFileSystemConfiguration_driveCacheType,
+    lustreFileSystemConfiguration_logConfiguration,
+    lustreFileSystemConfiguration_mountName,
+    lustreFileSystemConfiguration_perUnitStorageThroughput,
+    lustreFileSystemConfiguration_rootSquashConfiguration,
+    lustreFileSystemConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** LustreLogConfiguration
+    lustreLogConfiguration_destination,
+    lustreLogConfiguration_level,
+
+    -- ** LustreLogCreateConfiguration
+    lustreLogCreateConfiguration_destination,
+    lustreLogCreateConfiguration_level,
+
+    -- ** LustreRootSquashConfiguration
+    lustreRootSquashConfiguration_noSquashNids,
+    lustreRootSquashConfiguration_rootSquash,
+
+    -- ** NFSDataRepositoryConfiguration
+    nFSDataRepositoryConfiguration_autoExportPolicy,
+    nFSDataRepositoryConfiguration_dnsIps,
+    nFSDataRepositoryConfiguration_version,
+
+    -- ** OntapFileSystemConfiguration
+    ontapFileSystemConfiguration_automaticBackupRetentionDays,
+    ontapFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    ontapFileSystemConfiguration_deploymentType,
+    ontapFileSystemConfiguration_diskIopsConfiguration,
+    ontapFileSystemConfiguration_endpointIpAddressRange,
+    ontapFileSystemConfiguration_endpoints,
+    ontapFileSystemConfiguration_preferredSubnetId,
+    ontapFileSystemConfiguration_routeTableIds,
+    ontapFileSystemConfiguration_throughputCapacity,
+    ontapFileSystemConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** OntapVolumeConfiguration
+    ontapVolumeConfiguration_copyTagsToBackups,
+    ontapVolumeConfiguration_flexCacheEndpointType,
+    ontapVolumeConfiguration_junctionPath,
+    ontapVolumeConfiguration_ontapVolumeType,
+    ontapVolumeConfiguration_securityStyle,
+    ontapVolumeConfiguration_sizeInMegabytes,
+    ontapVolumeConfiguration_snapshotPolicy,
+    ontapVolumeConfiguration_storageEfficiencyEnabled,
+    ontapVolumeConfiguration_storageVirtualMachineId,
+    ontapVolumeConfiguration_storageVirtualMachineRoot,
+    ontapVolumeConfiguration_tieringPolicy,
+    ontapVolumeConfiguration_uuid,
+
+    -- ** OpenZFSClientConfiguration
+    openZFSClientConfiguration_clients,
+    openZFSClientConfiguration_options,
+
+    -- ** OpenZFSCreateRootVolumeConfiguration
+    openZFSCreateRootVolumeConfiguration_copyTagsToSnapshots,
+    openZFSCreateRootVolumeConfiguration_dataCompressionType,
+    openZFSCreateRootVolumeConfiguration_nfsExports,
+    openZFSCreateRootVolumeConfiguration_readOnly,
+    openZFSCreateRootVolumeConfiguration_recordSizeKiB,
+    openZFSCreateRootVolumeConfiguration_userAndGroupQuotas,
+
+    -- ** OpenZFSFileSystemConfiguration
+    openZFSFileSystemConfiguration_automaticBackupRetentionDays,
+    openZFSFileSystemConfiguration_copyTagsToBackups,
+    openZFSFileSystemConfiguration_copyTagsToVolumes,
+    openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    openZFSFileSystemConfiguration_deploymentType,
+    openZFSFileSystemConfiguration_diskIopsConfiguration,
+    openZFSFileSystemConfiguration_rootVolumeId,
+    openZFSFileSystemConfiguration_throughputCapacity,
+    openZFSFileSystemConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** OpenZFSNfsExport
+    openZFSNfsExport_clientConfigurations,
+
+    -- ** OpenZFSOriginSnapshotConfiguration
+    openZFSOriginSnapshotConfiguration_copyStrategy,
+    openZFSOriginSnapshotConfiguration_snapshotARN,
+
+    -- ** OpenZFSUserOrGroupQuota
+    openZFSUserOrGroupQuota_type,
+    openZFSUserOrGroupQuota_id,
+    openZFSUserOrGroupQuota_storageCapacityQuotaGiB,
+
+    -- ** OpenZFSVolumeConfiguration
+    openZFSVolumeConfiguration_copyTagsToSnapshots,
+    openZFSVolumeConfiguration_dataCompressionType,
+    openZFSVolumeConfiguration_deleteClonedVolumes,
+    openZFSVolumeConfiguration_deleteIntermediateSnaphots,
+    openZFSVolumeConfiguration_nfsExports,
+    openZFSVolumeConfiguration_originSnapshot,
+    openZFSVolumeConfiguration_parentVolumeId,
+    openZFSVolumeConfiguration_readOnly,
+    openZFSVolumeConfiguration_recordSizeKiB,
+    openZFSVolumeConfiguration_restoreToSnapshot,
+    openZFSVolumeConfiguration_storageCapacityQuotaGiB,
+    openZFSVolumeConfiguration_storageCapacityReservationGiB,
+    openZFSVolumeConfiguration_userAndGroupQuotas,
+    openZFSVolumeConfiguration_volumePath,
+
+    -- ** S3DataRepositoryConfiguration
+    s3DataRepositoryConfiguration_autoExportPolicy,
+    s3DataRepositoryConfiguration_autoImportPolicy,
+
+    -- ** SelfManagedActiveDirectoryAttributes
+    selfManagedActiveDirectoryAttributes_dnsIps,
+    selfManagedActiveDirectoryAttributes_domainName,
+    selfManagedActiveDirectoryAttributes_fileSystemAdministratorsGroup,
+    selfManagedActiveDirectoryAttributes_organizationalUnitDistinguishedName,
+    selfManagedActiveDirectoryAttributes_userName,
+
+    -- ** SelfManagedActiveDirectoryConfiguration
+    selfManagedActiveDirectoryConfiguration_fileSystemAdministratorsGroup,
+    selfManagedActiveDirectoryConfiguration_organizationalUnitDistinguishedName,
+    selfManagedActiveDirectoryConfiguration_domainName,
+    selfManagedActiveDirectoryConfiguration_userName,
+    selfManagedActiveDirectoryConfiguration_password,
+    selfManagedActiveDirectoryConfiguration_dnsIps,
+
+    -- ** SelfManagedActiveDirectoryConfigurationUpdates
+    selfManagedActiveDirectoryConfigurationUpdates_dnsIps,
+    selfManagedActiveDirectoryConfigurationUpdates_password,
+    selfManagedActiveDirectoryConfigurationUpdates_userName,
+
+    -- ** Snapshot
+    snapshot_administrativeActions,
+    snapshot_creationTime,
+    snapshot_lifecycle,
+    snapshot_lifecycleTransitionReason,
+    snapshot_name,
+    snapshot_resourceARN,
+    snapshot_snapshotId,
+    snapshot_tags,
+    snapshot_volumeId,
+
+    -- ** SnapshotFilter
+    snapshotFilter_name,
+    snapshotFilter_values,
+
+    -- ** StorageVirtualMachine
+    storageVirtualMachine_activeDirectoryConfiguration,
+    storageVirtualMachine_creationTime,
+    storageVirtualMachine_endpoints,
+    storageVirtualMachine_fileSystemId,
+    storageVirtualMachine_lifecycle,
+    storageVirtualMachine_lifecycleTransitionReason,
+    storageVirtualMachine_name,
+    storageVirtualMachine_resourceARN,
+    storageVirtualMachine_rootVolumeSecurityStyle,
+    storageVirtualMachine_storageVirtualMachineId,
+    storageVirtualMachine_subtype,
+    storageVirtualMachine_tags,
+    storageVirtualMachine_uuid,
+
+    -- ** StorageVirtualMachineFilter
+    storageVirtualMachineFilter_name,
+    storageVirtualMachineFilter_values,
+
+    -- ** SvmActiveDirectoryConfiguration
+    svmActiveDirectoryConfiguration_netBiosName,
+    svmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration,
+
+    -- ** SvmEndpoint
+    svmEndpoint_dNSName,
+    svmEndpoint_ipAddresses,
+
+    -- ** SvmEndpoints
+    svmEndpoints_iscsi,
+    svmEndpoints_management,
+    svmEndpoints_nfs,
+    svmEndpoints_smb,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TieringPolicy
+    tieringPolicy_coolingPeriod,
+    tieringPolicy_name,
+
+    -- ** UpdateFileCacheLustreConfiguration
+    updateFileCacheLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** UpdateFileSystemLustreConfiguration
+    updateFileSystemLustreConfiguration_autoImportPolicy,
+    updateFileSystemLustreConfiguration_automaticBackupRetentionDays,
+    updateFileSystemLustreConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemLustreConfiguration_dataCompressionType,
+    updateFileSystemLustreConfiguration_logConfiguration,
+    updateFileSystemLustreConfiguration_rootSquashConfiguration,
+    updateFileSystemLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** UpdateFileSystemOntapConfiguration
+    updateFileSystemOntapConfiguration_addRouteTableIds,
+    updateFileSystemOntapConfiguration_automaticBackupRetentionDays,
+    updateFileSystemOntapConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemOntapConfiguration_diskIopsConfiguration,
+    updateFileSystemOntapConfiguration_fsxAdminPassword,
+    updateFileSystemOntapConfiguration_removeRouteTableIds,
+    updateFileSystemOntapConfiguration_throughputCapacity,
+    updateFileSystemOntapConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** UpdateFileSystemOpenZFSConfiguration
+    updateFileSystemOpenZFSConfiguration_automaticBackupRetentionDays,
+    updateFileSystemOpenZFSConfiguration_copyTagsToBackups,
+    updateFileSystemOpenZFSConfiguration_copyTagsToVolumes,
+    updateFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemOpenZFSConfiguration_diskIopsConfiguration,
+    updateFileSystemOpenZFSConfiguration_throughputCapacity,
+    updateFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** UpdateFileSystemWindowsConfiguration
+    updateFileSystemWindowsConfiguration_auditLogConfiguration,
+    updateFileSystemWindowsConfiguration_automaticBackupRetentionDays,
+    updateFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration,
+    updateFileSystemWindowsConfiguration_throughputCapacity,
+    updateFileSystemWindowsConfiguration_weeklyMaintenanceStartTime,
+
+    -- ** UpdateOntapVolumeConfiguration
+    updateOntapVolumeConfiguration_copyTagsToBackups,
+    updateOntapVolumeConfiguration_junctionPath,
+    updateOntapVolumeConfiguration_securityStyle,
+    updateOntapVolumeConfiguration_sizeInMegabytes,
+    updateOntapVolumeConfiguration_snapshotPolicy,
+    updateOntapVolumeConfiguration_storageEfficiencyEnabled,
+    updateOntapVolumeConfiguration_tieringPolicy,
+
+    -- ** UpdateOpenZFSVolumeConfiguration
+    updateOpenZFSVolumeConfiguration_dataCompressionType,
+    updateOpenZFSVolumeConfiguration_nfsExports,
+    updateOpenZFSVolumeConfiguration_readOnly,
+    updateOpenZFSVolumeConfiguration_recordSizeKiB,
+    updateOpenZFSVolumeConfiguration_storageCapacityQuotaGiB,
+    updateOpenZFSVolumeConfiguration_storageCapacityReservationGiB,
+    updateOpenZFSVolumeConfiguration_userAndGroupQuotas,
+
+    -- ** UpdateSvmActiveDirectoryConfiguration
+    updateSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration,
+
+    -- ** Volume
+    volume_administrativeActions,
+    volume_creationTime,
+    volume_fileSystemId,
+    volume_lifecycle,
+    volume_lifecycleTransitionReason,
+    volume_name,
+    volume_ontapConfiguration,
+    volume_openZFSConfiguration,
+    volume_resourceARN,
+    volume_tags,
+    volume_volumeId,
+    volume_volumeType,
+
+    -- ** VolumeFilter
+    volumeFilter_name,
+    volumeFilter_values,
+
+    -- ** WindowsAuditLogConfiguration
+    windowsAuditLogConfiguration_auditLogDestination,
+    windowsAuditLogConfiguration_fileAccessAuditLogLevel,
+    windowsAuditLogConfiguration_fileShareAccessAuditLogLevel,
+
+    -- ** WindowsAuditLogCreateConfiguration
+    windowsAuditLogCreateConfiguration_auditLogDestination,
+    windowsAuditLogCreateConfiguration_fileAccessAuditLogLevel,
+    windowsAuditLogCreateConfiguration_fileShareAccessAuditLogLevel,
+
+    -- ** WindowsFileSystemConfiguration
+    windowsFileSystemConfiguration_activeDirectoryId,
+    windowsFileSystemConfiguration_aliases,
+    windowsFileSystemConfiguration_auditLogConfiguration,
+    windowsFileSystemConfiguration_automaticBackupRetentionDays,
+    windowsFileSystemConfiguration_copyTagsToBackups,
+    windowsFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    windowsFileSystemConfiguration_deploymentType,
+    windowsFileSystemConfiguration_maintenanceOperationsInProgress,
+    windowsFileSystemConfiguration_preferredFileServerIp,
+    windowsFileSystemConfiguration_preferredSubnetId,
+    windowsFileSystemConfiguration_remoteAdministrationEndpoint,
+    windowsFileSystemConfiguration_selfManagedActiveDirectoryConfiguration,
+    windowsFileSystemConfiguration_throughputCapacity,
+    windowsFileSystemConfiguration_weeklyMaintenanceStartTime,
+  )
+where
+
+import Amazonka.FSx.AssociateFileSystemAliases
+import Amazonka.FSx.CancelDataRepositoryTask
+import Amazonka.FSx.CopyBackup
+import Amazonka.FSx.CreateBackup
+import Amazonka.FSx.CreateDataRepositoryAssociation
+import Amazonka.FSx.CreateDataRepositoryTask
+import Amazonka.FSx.CreateFileCache
+import Amazonka.FSx.CreateFileSystem
+import Amazonka.FSx.CreateFileSystemFromBackup
+import Amazonka.FSx.CreateSnapshot
+import Amazonka.FSx.CreateStorageVirtualMachine
+import Amazonka.FSx.CreateVolume
+import Amazonka.FSx.CreateVolumeFromBackup
+import Amazonka.FSx.DeleteBackup
+import Amazonka.FSx.DeleteDataRepositoryAssociation
+import Amazonka.FSx.DeleteFileCache
+import Amazonka.FSx.DeleteFileSystem
+import Amazonka.FSx.DeleteSnapshot
+import Amazonka.FSx.DeleteStorageVirtualMachine
+import Amazonka.FSx.DeleteVolume
+import Amazonka.FSx.DescribeBackups
+import Amazonka.FSx.DescribeDataRepositoryAssociations
+import Amazonka.FSx.DescribeDataRepositoryTasks
+import Amazonka.FSx.DescribeFileCaches
+import Amazonka.FSx.DescribeFileSystemAliases
+import Amazonka.FSx.DescribeFileSystems
+import Amazonka.FSx.DescribeSnapshots
+import Amazonka.FSx.DescribeStorageVirtualMachines
+import Amazonka.FSx.DescribeVolumes
+import Amazonka.FSx.DisassociateFileSystemAliases
+import Amazonka.FSx.ListTagsForResource
+import Amazonka.FSx.ReleaseFileSystemNfsV3Locks
+import Amazonka.FSx.RestoreVolumeFromSnapshot
+import Amazonka.FSx.TagResource
+import Amazonka.FSx.Types.ActiveDirectoryBackupAttributes
+import Amazonka.FSx.Types.AdministrativeAction
+import Amazonka.FSx.Types.AdministrativeActionFailureDetails
+import Amazonka.FSx.Types.Alias
+import Amazonka.FSx.Types.AutoExportPolicy
+import Amazonka.FSx.Types.AutoImportPolicy
+import Amazonka.FSx.Types.Backup
+import Amazonka.FSx.Types.BackupFailureDetails
+import Amazonka.FSx.Types.CompletionReport
+import Amazonka.FSx.Types.CreateFileCacheLustreConfiguration
+import Amazonka.FSx.Types.CreateFileSystemLustreConfiguration
+import Amazonka.FSx.Types.CreateFileSystemOntapConfiguration
+import Amazonka.FSx.Types.CreateFileSystemOpenZFSConfiguration
+import Amazonka.FSx.Types.CreateFileSystemWindowsConfiguration
+import Amazonka.FSx.Types.CreateOntapVolumeConfiguration
+import Amazonka.FSx.Types.CreateOpenZFSOriginSnapshotConfiguration
+import Amazonka.FSx.Types.CreateOpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.CreateSvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.DataRepositoryAssociation
+import Amazonka.FSx.Types.DataRepositoryConfiguration
+import Amazonka.FSx.Types.DataRepositoryFailureDetails
+import Amazonka.FSx.Types.DataRepositoryTask
+import Amazonka.FSx.Types.DataRepositoryTaskFailureDetails
+import Amazonka.FSx.Types.DataRepositoryTaskFilter
+import Amazonka.FSx.Types.DataRepositoryTaskStatus
+import Amazonka.FSx.Types.DeleteFileSystemLustreConfiguration
+import Amazonka.FSx.Types.DeleteFileSystemLustreResponse
+import Amazonka.FSx.Types.DeleteFileSystemOpenZFSConfiguration
+import Amazonka.FSx.Types.DeleteFileSystemOpenZFSResponse
+import Amazonka.FSx.Types.DeleteFileSystemWindowsConfiguration
+import Amazonka.FSx.Types.DeleteFileSystemWindowsResponse
+import Amazonka.FSx.Types.DeleteVolumeOntapConfiguration
+import Amazonka.FSx.Types.DeleteVolumeOntapResponse
+import Amazonka.FSx.Types.DeleteVolumeOpenZFSConfiguration
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import Amazonka.FSx.Types.FileCache
+import Amazonka.FSx.Types.FileCacheCreating
+import Amazonka.FSx.Types.FileCacheDataRepositoryAssociation
+import Amazonka.FSx.Types.FileCacheFailureDetails
+import Amazonka.FSx.Types.FileCacheLustreConfiguration
+import Amazonka.FSx.Types.FileCacheLustreMetadataConfiguration
+import Amazonka.FSx.Types.FileCacheNFSConfiguration
+import Amazonka.FSx.Types.FileSystem
+import Amazonka.FSx.Types.FileSystemEndpoint
+import Amazonka.FSx.Types.FileSystemEndpoints
+import Amazonka.FSx.Types.FileSystemFailureDetails
+import Amazonka.FSx.Types.Filter
+import Amazonka.FSx.Types.LifecycleTransitionReason
+import Amazonka.FSx.Types.LustreFileSystemConfiguration
+import Amazonka.FSx.Types.LustreLogConfiguration
+import Amazonka.FSx.Types.LustreLogCreateConfiguration
+import Amazonka.FSx.Types.LustreRootSquashConfiguration
+import Amazonka.FSx.Types.NFSDataRepositoryConfiguration
+import Amazonka.FSx.Types.OntapFileSystemConfiguration
+import Amazonka.FSx.Types.OntapVolumeConfiguration
+import Amazonka.FSx.Types.OpenZFSClientConfiguration
+import Amazonka.FSx.Types.OpenZFSCreateRootVolumeConfiguration
+import Amazonka.FSx.Types.OpenZFSFileSystemConfiguration
+import Amazonka.FSx.Types.OpenZFSNfsExport
+import Amazonka.FSx.Types.OpenZFSOriginSnapshotConfiguration
+import Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+import Amazonka.FSx.Types.OpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.S3DataRepositoryConfiguration
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfiguration
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates
+import Amazonka.FSx.Types.Snapshot
+import Amazonka.FSx.Types.SnapshotFilter
+import Amazonka.FSx.Types.StorageVirtualMachine
+import Amazonka.FSx.Types.StorageVirtualMachineFilter
+import Amazonka.FSx.Types.SvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.SvmEndpoint
+import Amazonka.FSx.Types.SvmEndpoints
+import Amazonka.FSx.Types.Tag
+import Amazonka.FSx.Types.TieringPolicy
+import Amazonka.FSx.Types.UpdateFileCacheLustreConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemLustreConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemOntapConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemOpenZFSConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemWindowsConfiguration
+import Amazonka.FSx.Types.UpdateOntapVolumeConfiguration
+import Amazonka.FSx.Types.UpdateOpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.UpdateSvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.Volume
+import Amazonka.FSx.Types.VolumeFilter
+import Amazonka.FSx.Types.WindowsAuditLogConfiguration
+import Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
+import Amazonka.FSx.Types.WindowsFileSystemConfiguration
+import Amazonka.FSx.UntagResource
+import Amazonka.FSx.UpdateDataRepositoryAssociation
+import Amazonka.FSx.UpdateFileCache
+import Amazonka.FSx.UpdateFileSystem
+import Amazonka.FSx.UpdateSnapshot
+import Amazonka.FSx.UpdateStorageVirtualMachine
+import Amazonka.FSx.UpdateVolume
diff --git a/gen/Amazonka/FSx/ListTagsForResource.hs b/gen/Amazonka/FSx/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/ListTagsForResource.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.FSx.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 tags for Amazon FSx resources.
+--
+-- When retrieving all tags, you can optionally specify the @MaxResults@
+-- parameter to limit the number of tags in a response. If more tags
+-- remain, Amazon FSx returns a @NextToken@ value in the response. In this
+-- case, send a later request with the @NextToken@ request parameter set to
+-- the value of @NextToken@ from the last response.
+--
+-- This action is used in an iterative process to retrieve a list of your
+-- tags. @ListTagsForResource@ is called first without a @NextToken@value.
+-- Then the action continues to be called with the @NextToken@ parameter
+-- set to the value of the last @NextToken@ value until a response has no
+-- @NextToken@.
+--
+-- When using this action, keep the following in mind:
+--
+-- -   The implementation might return fewer than @MaxResults@ file system
+--     descriptions while still including a @NextToken@ value.
+--
+-- -   The order of tags returned in the response of one
+--     @ListTagsForResource@ call and the order of tags returned across the
+--     responses of a multi-call iteration is unspecified.
+--
+-- This operation returns paginated results.
+module Amazonka.FSx.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_maxResults,
+    listTagsForResource_nextToken,
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_nextToken,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for @ListTagsForResource@ operation.
+--
+-- /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | Maximum number of tags to return in the response (integer). This
+    -- parameter value must be greater than 0. The number of items that Amazon
+    -- FSx returns is the minimum of the @MaxResults@ parameter specified in
+    -- the request and the service\'s internal maximum number of items per
+    -- page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Opaque pagination token returned from a previous @ListTagsForResource@
+    -- operation (String). If a token present, the action continues the list
+    -- from where the returning call left off.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the Amazon FSx resource that will have its tags listed.
+    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:
+--
+-- 'maxResults', 'listTagsForResource_maxResults' - Maximum number of tags to return in the response (integer). This
+-- parameter value must be greater than 0. The number of items that Amazon
+-- FSx returns is the minimum of the @MaxResults@ parameter specified in
+-- the request and the service\'s internal maximum number of items per
+-- page.
+--
+-- 'nextToken', 'listTagsForResource_nextToken' - Opaque pagination token returned from a previous @ListTagsForResource@
+-- operation (String). If a token present, the action continues the list
+-- from where the returning call left off.
+--
+-- 'resourceARN', 'listTagsForResource_resourceARN' - The ARN of the Amazon FSx resource that will have its tags listed.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceARN = pResourceARN_
+    }
+
+-- | Maximum number of tags to return in the response (integer). This
+-- parameter value must be greater than 0. The number of items that Amazon
+-- FSx returns is the minimum of the @MaxResults@ parameter specified in
+-- the request and the service\'s internal maximum number of items per
+-- page.
+listTagsForResource_maxResults :: Lens.Lens' ListTagsForResource (Prelude.Maybe Prelude.Natural)
+listTagsForResource_maxResults = Lens.lens (\ListTagsForResource' {maxResults} -> maxResults) (\s@ListTagsForResource' {} a -> s {maxResults = a} :: ListTagsForResource)
+
+-- | Opaque pagination token returned from a previous @ListTagsForResource@
+-- operation (String). If a token present, the action continues the list
+-- from where the returning call left off.
+listTagsForResource_nextToken :: Lens.Lens' ListTagsForResource (Prelude.Maybe Prelude.Text)
+listTagsForResource_nextToken = Lens.lens (\ListTagsForResource' {nextToken} -> nextToken) (\s@ListTagsForResource' {} a -> s {nextToken = a} :: ListTagsForResource)
+
+-- | The ARN of the Amazon FSx resource that will have its tags listed.
+listTagsForResource_resourceARN :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceARN = Lens.lens (\ListTagsForResource' {resourceARN} -> resourceARN) (\s@ListTagsForResource' {} a -> s {resourceARN = a} :: ListTagsForResource)
+
+instance Core.AWSPager ListTagsForResource where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTagsForResourceResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTagsForResourceResponse_tags
+            Prelude.. Lens._Just
+            Prelude.. Lens.to Prelude.toList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTagsForResource_nextToken
+          Lens..~ rs
+          Lens.^? listTagsForResourceResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Tags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceARN
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceARN
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.ListTagsForResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTagsForResource where
+  toJSON ListTagsForResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("ResourceARN" Data..= resourceARN)
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for @ListTagsForResource@ operation.
+--
+-- /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | This is present if there are more tags than returned in the response
+    -- (String). You can use the @NextToken@ value in the later request to
+    -- fetch the tags.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags on the resource.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listTagsForResourceResponse_nextToken' - This is present if there are more tags than returned in the response
+-- (String). You can use the @NextToken@ value in the later request to
+-- fetch the tags.
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - A list of tags on the resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { nextToken =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | This is present if there are more tags than returned in the response
+-- (String). You can use the @NextToken@ value in the later request to
+-- fetch the tags.
+listTagsForResourceResponse_nextToken :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe Prelude.Text)
+listTagsForResourceResponse_nextToken = Lens.lens (\ListTagsForResourceResponse' {nextToken} -> nextToken) (\s@ListTagsForResourceResponse' {} a -> s {nextToken = a} :: ListTagsForResourceResponse)
+
+-- | A list of tags on 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 response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/ReleaseFileSystemNfsV3Locks.hs b/gen/Amazonka/FSx/ReleaseFileSystemNfsV3Locks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/ReleaseFileSystemNfsV3Locks.hs
@@ -0,0 +1,189 @@
+{-# 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.FSx.ReleaseFileSystemNfsV3Locks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Releases the file system lock from an Amazon FSx for OpenZFS file
+-- system.
+module Amazonka.FSx.ReleaseFileSystemNfsV3Locks
+  ( -- * Creating a Request
+    ReleaseFileSystemNfsV3Locks (..),
+    newReleaseFileSystemNfsV3Locks,
+
+    -- * Request Lenses
+    releaseFileSystemNfsV3Locks_clientRequestToken,
+    releaseFileSystemNfsV3Locks_fileSystemId,
+
+    -- * Destructuring the Response
+    ReleaseFileSystemNfsV3LocksResponse (..),
+    newReleaseFileSystemNfsV3LocksResponse,
+
+    -- * Response Lenses
+    releaseFileSystemNfsV3LocksResponse_fileSystem,
+    releaseFileSystemNfsV3LocksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newReleaseFileSystemNfsV3Locks' smart constructor.
+data ReleaseFileSystemNfsV3Locks = ReleaseFileSystemNfsV3Locks'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    fileSystemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReleaseFileSystemNfsV3Locks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'releaseFileSystemNfsV3Locks_clientRequestToken' - Undocumented member.
+--
+-- 'fileSystemId', 'releaseFileSystemNfsV3Locks_fileSystemId' - Undocumented member.
+newReleaseFileSystemNfsV3Locks ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  ReleaseFileSystemNfsV3Locks
+newReleaseFileSystemNfsV3Locks pFileSystemId_ =
+  ReleaseFileSystemNfsV3Locks'
+    { clientRequestToken =
+        Prelude.Nothing,
+      fileSystemId = pFileSystemId_
+    }
+
+-- | Undocumented member.
+releaseFileSystemNfsV3Locks_clientRequestToken :: Lens.Lens' ReleaseFileSystemNfsV3Locks (Prelude.Maybe Prelude.Text)
+releaseFileSystemNfsV3Locks_clientRequestToken = Lens.lens (\ReleaseFileSystemNfsV3Locks' {clientRequestToken} -> clientRequestToken) (\s@ReleaseFileSystemNfsV3Locks' {} a -> s {clientRequestToken = a} :: ReleaseFileSystemNfsV3Locks)
+
+-- | Undocumented member.
+releaseFileSystemNfsV3Locks_fileSystemId :: Lens.Lens' ReleaseFileSystemNfsV3Locks Prelude.Text
+releaseFileSystemNfsV3Locks_fileSystemId = Lens.lens (\ReleaseFileSystemNfsV3Locks' {fileSystemId} -> fileSystemId) (\s@ReleaseFileSystemNfsV3Locks' {} a -> s {fileSystemId = a} :: ReleaseFileSystemNfsV3Locks)
+
+instance Core.AWSRequest ReleaseFileSystemNfsV3Locks where
+  type
+    AWSResponse ReleaseFileSystemNfsV3Locks =
+      ReleaseFileSystemNfsV3LocksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ReleaseFileSystemNfsV3LocksResponse'
+            Prelude.<$> (x Data..?> "FileSystem")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ReleaseFileSystemNfsV3Locks where
+  hashWithSalt _salt ReleaseFileSystemNfsV3Locks' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` fileSystemId
+
+instance Prelude.NFData ReleaseFileSystemNfsV3Locks where
+  rnf ReleaseFileSystemNfsV3Locks' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf fileSystemId
+
+instance Data.ToHeaders ReleaseFileSystemNfsV3Locks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.ReleaseFileSystemNfsV3Locks" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ReleaseFileSystemNfsV3Locks where
+  toJSON ReleaseFileSystemNfsV3Locks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId)
+          ]
+      )
+
+instance Data.ToPath ReleaseFileSystemNfsV3Locks where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ReleaseFileSystemNfsV3Locks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newReleaseFileSystemNfsV3LocksResponse' smart constructor.
+data ReleaseFileSystemNfsV3LocksResponse = ReleaseFileSystemNfsV3LocksResponse'
+  { fileSystem :: Prelude.Maybe FileSystem,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReleaseFileSystemNfsV3LocksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystem', 'releaseFileSystemNfsV3LocksResponse_fileSystem' - Undocumented member.
+--
+-- 'httpStatus', 'releaseFileSystemNfsV3LocksResponse_httpStatus' - The response's http status code.
+newReleaseFileSystemNfsV3LocksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ReleaseFileSystemNfsV3LocksResponse
+newReleaseFileSystemNfsV3LocksResponse pHttpStatus_ =
+  ReleaseFileSystemNfsV3LocksResponse'
+    { fileSystem =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+releaseFileSystemNfsV3LocksResponse_fileSystem :: Lens.Lens' ReleaseFileSystemNfsV3LocksResponse (Prelude.Maybe FileSystem)
+releaseFileSystemNfsV3LocksResponse_fileSystem = Lens.lens (\ReleaseFileSystemNfsV3LocksResponse' {fileSystem} -> fileSystem) (\s@ReleaseFileSystemNfsV3LocksResponse' {} a -> s {fileSystem = a} :: ReleaseFileSystemNfsV3LocksResponse)
+
+-- | The response's http status code.
+releaseFileSystemNfsV3LocksResponse_httpStatus :: Lens.Lens' ReleaseFileSystemNfsV3LocksResponse Prelude.Int
+releaseFileSystemNfsV3LocksResponse_httpStatus = Lens.lens (\ReleaseFileSystemNfsV3LocksResponse' {httpStatus} -> httpStatus) (\s@ReleaseFileSystemNfsV3LocksResponse' {} a -> s {httpStatus = a} :: ReleaseFileSystemNfsV3LocksResponse)
+
+instance
+  Prelude.NFData
+    ReleaseFileSystemNfsV3LocksResponse
+  where
+  rnf ReleaseFileSystemNfsV3LocksResponse' {..} =
+    Prelude.rnf fileSystem
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/RestoreVolumeFromSnapshot.hs b/gen/Amazonka/FSx/RestoreVolumeFromSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/RestoreVolumeFromSnapshot.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.FSx.RestoreVolumeFromSnapshot
+-- 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 FSx for OpenZFS volume to the state saved by the
+-- specified snapshot.
+module Amazonka.FSx.RestoreVolumeFromSnapshot
+  ( -- * Creating a Request
+    RestoreVolumeFromSnapshot (..),
+    newRestoreVolumeFromSnapshot,
+
+    -- * Request Lenses
+    restoreVolumeFromSnapshot_clientRequestToken,
+    restoreVolumeFromSnapshot_options,
+    restoreVolumeFromSnapshot_volumeId,
+    restoreVolumeFromSnapshot_snapshotId,
+
+    -- * Destructuring the Response
+    RestoreVolumeFromSnapshotResponse (..),
+    newRestoreVolumeFromSnapshotResponse,
+
+    -- * Response Lenses
+    restoreVolumeFromSnapshotResponse_administrativeActions,
+    restoreVolumeFromSnapshotResponse_lifecycle,
+    restoreVolumeFromSnapshotResponse_volumeId,
+    restoreVolumeFromSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRestoreVolumeFromSnapshot' smart constructor.
+data RestoreVolumeFromSnapshot = RestoreVolumeFromSnapshot'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The settings used when restoring the specified volume from snapshot.
+    --
+    -- -   @DELETE_INTERMEDIATE_SNAPSHOTS@ - Deletes snapshots between the
+    --     current state and the specified snapshot. If there are intermediate
+    --     snapshots and this option isn\'t used, @RestoreVolumeFromSnapshot@
+    --     fails.
+    --
+    -- -   @DELETE_CLONED_VOLUMES@ - Deletes any dependent clone volumes
+    --     created from intermediate snapshots. If there are any dependent
+    --     clone volumes and this option isn\'t used,
+    --     @RestoreVolumeFromSnapshot@ fails.
+    options :: Prelude.Maybe [RestoreOpenZFSVolumeOption],
+    -- | The ID of the volume that you are restoring.
+    volumeId :: Prelude.Text,
+    -- | The ID of the source snapshot. Specifies the snapshot that you are
+    -- restoring from.
+    snapshotId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreVolumeFromSnapshot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'restoreVolumeFromSnapshot_clientRequestToken' - Undocumented member.
+--
+-- 'options', 'restoreVolumeFromSnapshot_options' - The settings used when restoring the specified volume from snapshot.
+--
+-- -   @DELETE_INTERMEDIATE_SNAPSHOTS@ - Deletes snapshots between the
+--     current state and the specified snapshot. If there are intermediate
+--     snapshots and this option isn\'t used, @RestoreVolumeFromSnapshot@
+--     fails.
+--
+-- -   @DELETE_CLONED_VOLUMES@ - Deletes any dependent clone volumes
+--     created from intermediate snapshots. If there are any dependent
+--     clone volumes and this option isn\'t used,
+--     @RestoreVolumeFromSnapshot@ fails.
+--
+-- 'volumeId', 'restoreVolumeFromSnapshot_volumeId' - The ID of the volume that you are restoring.
+--
+-- 'snapshotId', 'restoreVolumeFromSnapshot_snapshotId' - The ID of the source snapshot. Specifies the snapshot that you are
+-- restoring from.
+newRestoreVolumeFromSnapshot ::
+  -- | 'volumeId'
+  Prelude.Text ->
+  -- | 'snapshotId'
+  Prelude.Text ->
+  RestoreVolumeFromSnapshot
+newRestoreVolumeFromSnapshot pVolumeId_ pSnapshotId_ =
+  RestoreVolumeFromSnapshot'
+    { clientRequestToken =
+        Prelude.Nothing,
+      options = Prelude.Nothing,
+      volumeId = pVolumeId_,
+      snapshotId = pSnapshotId_
+    }
+
+-- | Undocumented member.
+restoreVolumeFromSnapshot_clientRequestToken :: Lens.Lens' RestoreVolumeFromSnapshot (Prelude.Maybe Prelude.Text)
+restoreVolumeFromSnapshot_clientRequestToken = Lens.lens (\RestoreVolumeFromSnapshot' {clientRequestToken} -> clientRequestToken) (\s@RestoreVolumeFromSnapshot' {} a -> s {clientRequestToken = a} :: RestoreVolumeFromSnapshot)
+
+-- | The settings used when restoring the specified volume from snapshot.
+--
+-- -   @DELETE_INTERMEDIATE_SNAPSHOTS@ - Deletes snapshots between the
+--     current state and the specified snapshot. If there are intermediate
+--     snapshots and this option isn\'t used, @RestoreVolumeFromSnapshot@
+--     fails.
+--
+-- -   @DELETE_CLONED_VOLUMES@ - Deletes any dependent clone volumes
+--     created from intermediate snapshots. If there are any dependent
+--     clone volumes and this option isn\'t used,
+--     @RestoreVolumeFromSnapshot@ fails.
+restoreVolumeFromSnapshot_options :: Lens.Lens' RestoreVolumeFromSnapshot (Prelude.Maybe [RestoreOpenZFSVolumeOption])
+restoreVolumeFromSnapshot_options = Lens.lens (\RestoreVolumeFromSnapshot' {options} -> options) (\s@RestoreVolumeFromSnapshot' {} a -> s {options = a} :: RestoreVolumeFromSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the volume that you are restoring.
+restoreVolumeFromSnapshot_volumeId :: Lens.Lens' RestoreVolumeFromSnapshot Prelude.Text
+restoreVolumeFromSnapshot_volumeId = Lens.lens (\RestoreVolumeFromSnapshot' {volumeId} -> volumeId) (\s@RestoreVolumeFromSnapshot' {} a -> s {volumeId = a} :: RestoreVolumeFromSnapshot)
+
+-- | The ID of the source snapshot. Specifies the snapshot that you are
+-- restoring from.
+restoreVolumeFromSnapshot_snapshotId :: Lens.Lens' RestoreVolumeFromSnapshot Prelude.Text
+restoreVolumeFromSnapshot_snapshotId = Lens.lens (\RestoreVolumeFromSnapshot' {snapshotId} -> snapshotId) (\s@RestoreVolumeFromSnapshot' {} a -> s {snapshotId = a} :: RestoreVolumeFromSnapshot)
+
+instance Core.AWSRequest RestoreVolumeFromSnapshot where
+  type
+    AWSResponse RestoreVolumeFromSnapshot =
+      RestoreVolumeFromSnapshotResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RestoreVolumeFromSnapshotResponse'
+            Prelude.<$> ( x
+                            Data..?> "AdministrativeActions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "Lifecycle")
+            Prelude.<*> (x Data..?> "VolumeId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RestoreVolumeFromSnapshot where
+  hashWithSalt _salt RestoreVolumeFromSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` volumeId
+      `Prelude.hashWithSalt` snapshotId
+
+instance Prelude.NFData RestoreVolumeFromSnapshot where
+  rnf RestoreVolumeFromSnapshot' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf options
+      `Prelude.seq` Prelude.rnf volumeId
+      `Prelude.seq` Prelude.rnf snapshotId
+
+instance Data.ToHeaders RestoreVolumeFromSnapshot where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.RestoreVolumeFromSnapshot" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RestoreVolumeFromSnapshot where
+  toJSON RestoreVolumeFromSnapshot' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Options" Data..=) Prelude.<$> options,
+            Prelude.Just ("VolumeId" Data..= volumeId),
+            Prelude.Just ("SnapshotId" Data..= snapshotId)
+          ]
+      )
+
+instance Data.ToPath RestoreVolumeFromSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RestoreVolumeFromSnapshot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRestoreVolumeFromSnapshotResponse' smart constructor.
+data RestoreVolumeFromSnapshotResponse = RestoreVolumeFromSnapshotResponse'
+  { -- | A list of administrative actions for the file system that are in process
+    -- or waiting to be processed. Administrative actions describe changes to
+    -- the Amazon FSx system.
+    administrativeActions :: Prelude.Maybe [AdministrativeAction],
+    -- | The lifecycle state of the volume being restored.
+    lifecycle :: Prelude.Maybe VolumeLifecycle,
+    -- | The ID of the volume that you restored.
+    volumeId :: 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 'RestoreVolumeFromSnapshotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'administrativeActions', 'restoreVolumeFromSnapshotResponse_administrativeActions' - A list of administrative actions for the file system that are in process
+-- or waiting to be processed. Administrative actions describe changes to
+-- the Amazon FSx system.
+--
+-- 'lifecycle', 'restoreVolumeFromSnapshotResponse_lifecycle' - The lifecycle state of the volume being restored.
+--
+-- 'volumeId', 'restoreVolumeFromSnapshotResponse_volumeId' - The ID of the volume that you restored.
+--
+-- 'httpStatus', 'restoreVolumeFromSnapshotResponse_httpStatus' - The response's http status code.
+newRestoreVolumeFromSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RestoreVolumeFromSnapshotResponse
+newRestoreVolumeFromSnapshotResponse pHttpStatus_ =
+  RestoreVolumeFromSnapshotResponse'
+    { administrativeActions =
+        Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      volumeId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of administrative actions for the file system that are in process
+-- or waiting to be processed. Administrative actions describe changes to
+-- the Amazon FSx system.
+restoreVolumeFromSnapshotResponse_administrativeActions :: Lens.Lens' RestoreVolumeFromSnapshotResponse (Prelude.Maybe [AdministrativeAction])
+restoreVolumeFromSnapshotResponse_administrativeActions = Lens.lens (\RestoreVolumeFromSnapshotResponse' {administrativeActions} -> administrativeActions) (\s@RestoreVolumeFromSnapshotResponse' {} a -> s {administrativeActions = a} :: RestoreVolumeFromSnapshotResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The lifecycle state of the volume being restored.
+restoreVolumeFromSnapshotResponse_lifecycle :: Lens.Lens' RestoreVolumeFromSnapshotResponse (Prelude.Maybe VolumeLifecycle)
+restoreVolumeFromSnapshotResponse_lifecycle = Lens.lens (\RestoreVolumeFromSnapshotResponse' {lifecycle} -> lifecycle) (\s@RestoreVolumeFromSnapshotResponse' {} a -> s {lifecycle = a} :: RestoreVolumeFromSnapshotResponse)
+
+-- | The ID of the volume that you restored.
+restoreVolumeFromSnapshotResponse_volumeId :: Lens.Lens' RestoreVolumeFromSnapshotResponse (Prelude.Maybe Prelude.Text)
+restoreVolumeFromSnapshotResponse_volumeId = Lens.lens (\RestoreVolumeFromSnapshotResponse' {volumeId} -> volumeId) (\s@RestoreVolumeFromSnapshotResponse' {} a -> s {volumeId = a} :: RestoreVolumeFromSnapshotResponse)
+
+-- | The response's http status code.
+restoreVolumeFromSnapshotResponse_httpStatus :: Lens.Lens' RestoreVolumeFromSnapshotResponse Prelude.Int
+restoreVolumeFromSnapshotResponse_httpStatus = Lens.lens (\RestoreVolumeFromSnapshotResponse' {httpStatus} -> httpStatus) (\s@RestoreVolumeFromSnapshotResponse' {} a -> s {httpStatus = a} :: RestoreVolumeFromSnapshotResponse)
+
+instance
+  Prelude.NFData
+    RestoreVolumeFromSnapshotResponse
+  where
+  rnf RestoreVolumeFromSnapshotResponse' {..} =
+    Prelude.rnf administrativeActions
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf volumeId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/TagResource.hs b/gen/Amazonka/FSx/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/TagResource.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.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)
+--
+-- Tags an Amazon FSx resource.
+module Amazonka.FSx.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for the @TagResource@ operation.
+--
+-- /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the Amazon FSx resource that you want
+    -- to tag.
+    resourceARN :: Prelude.Text,
+    -- | A list of tags for the resource. If a tag with a given key already
+    -- exists, the value is replaced by the one specified in this parameter.
+    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 Amazon FSx resource that you want
+-- to tag.
+--
+-- 'tags', 'tagResource_tags' - A list of tags for the resource. If a tag with a given key already
+-- exists, the value is replaced by the one specified in this parameter.
+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 Amazon FSx 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)
+
+-- | A list of tags for the resource. If a tag with a given key already
+-- exists, the value is replaced by the one specified in this parameter.
+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.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.TagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for the @TagResource@ operation.
+--
+-- /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/Types.hs b/gen/Amazonka/FSx/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types.hs
@@ -0,0 +1,1505 @@
+{-# 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.FSx.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.FSx.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _ActiveDirectoryError,
+    _BackupBeingCopied,
+    _BackupInProgress,
+    _BackupNotFound,
+    _BackupRestoring,
+    _BadRequest,
+    _DataRepositoryAssociationNotFound,
+    _DataRepositoryTaskEnded,
+    _DataRepositoryTaskExecuting,
+    _DataRepositoryTaskNotFound,
+    _FileCacheNotFound,
+    _FileSystemNotFound,
+    _IncompatibleParameterError,
+    _IncompatibleRegionForMultiAZ,
+    _InternalServerError,
+    _InvalidDataRepositoryType,
+    _InvalidDestinationKmsKey,
+    _InvalidExportPath,
+    _InvalidImportPath,
+    _InvalidNetworkSettings,
+    _InvalidPerUnitStorageThroughput,
+    _InvalidRegion,
+    _InvalidSourceKmsKey,
+    _MissingFileCacheConfiguration,
+    _MissingFileSystemConfiguration,
+    _MissingVolumeConfiguration,
+    _NotServiceResourceError,
+    _ResourceDoesNotSupportTagging,
+    _ResourceNotFound,
+    _ServiceLimitExceeded,
+    _SnapshotNotFound,
+    _SourceBackupUnavailable,
+    _StorageVirtualMachineNotFound,
+    _UnsupportedOperation,
+    _VolumeNotFound,
+
+    -- * AdministrativeActionType
+    AdministrativeActionType (..),
+
+    -- * AliasLifecycle
+    AliasLifecycle (..),
+
+    -- * AutoImportPolicyType
+    AutoImportPolicyType (..),
+
+    -- * BackupLifecycle
+    BackupLifecycle (..),
+
+    -- * BackupType
+    BackupType (..),
+
+    -- * DataCompressionType
+    DataCompressionType (..),
+
+    -- * DataRepositoryLifecycle
+    DataRepositoryLifecycle (..),
+
+    -- * DataRepositoryTaskFilterName
+    DataRepositoryTaskFilterName (..),
+
+    -- * DataRepositoryTaskLifecycle
+    DataRepositoryTaskLifecycle (..),
+
+    -- * DataRepositoryTaskType
+    DataRepositoryTaskType (..),
+
+    -- * DeleteFileSystemOpenZFSOption
+    DeleteFileSystemOpenZFSOption (..),
+
+    -- * DeleteOpenZFSVolumeOption
+    DeleteOpenZFSVolumeOption (..),
+
+    -- * DiskIopsConfigurationMode
+    DiskIopsConfigurationMode (..),
+
+    -- * DriveCacheType
+    DriveCacheType (..),
+
+    -- * EventType
+    EventType (..),
+
+    -- * FileCacheLifecycle
+    FileCacheLifecycle (..),
+
+    -- * FileCacheLustreDeploymentType
+    FileCacheLustreDeploymentType (..),
+
+    -- * FileCacheType
+    FileCacheType (..),
+
+    -- * FileSystemLifecycle
+    FileSystemLifecycle (..),
+
+    -- * FileSystemMaintenanceOperation
+    FileSystemMaintenanceOperation (..),
+
+    -- * FileSystemType
+    FileSystemType (..),
+
+    -- * FilterName
+    FilterName (..),
+
+    -- * FlexCacheEndpointType
+    FlexCacheEndpointType (..),
+
+    -- * InputOntapVolumeType
+    InputOntapVolumeType (..),
+
+    -- * LustreAccessAuditLogLevel
+    LustreAccessAuditLogLevel (..),
+
+    -- * LustreDeploymentType
+    LustreDeploymentType (..),
+
+    -- * NfsVersion
+    NfsVersion (..),
+
+    -- * OntapDeploymentType
+    OntapDeploymentType (..),
+
+    -- * OntapVolumeType
+    OntapVolumeType (..),
+
+    -- * OpenZFSCopyStrategy
+    OpenZFSCopyStrategy (..),
+
+    -- * OpenZFSDataCompressionType
+    OpenZFSDataCompressionType (..),
+
+    -- * OpenZFSDeploymentType
+    OpenZFSDeploymentType (..),
+
+    -- * OpenZFSQuotaType
+    OpenZFSQuotaType (..),
+
+    -- * ReportFormat
+    ReportFormat (..),
+
+    -- * ReportScope
+    ReportScope (..),
+
+    -- * ResourceType
+    ResourceType (..),
+
+    -- * RestoreOpenZFSVolumeOption
+    RestoreOpenZFSVolumeOption (..),
+
+    -- * SecurityStyle
+    SecurityStyle (..),
+
+    -- * SnapshotFilterName
+    SnapshotFilterName (..),
+
+    -- * SnapshotLifecycle
+    SnapshotLifecycle (..),
+
+    -- * Status
+    Status (..),
+
+    -- * StorageType
+    StorageType (..),
+
+    -- * StorageVirtualMachineFilterName
+    StorageVirtualMachineFilterName (..),
+
+    -- * StorageVirtualMachineLifecycle
+    StorageVirtualMachineLifecycle (..),
+
+    -- * StorageVirtualMachineRootVolumeSecurityStyle
+    StorageVirtualMachineRootVolumeSecurityStyle (..),
+
+    -- * StorageVirtualMachineSubtype
+    StorageVirtualMachineSubtype (..),
+
+    -- * TieringPolicyName
+    TieringPolicyName (..),
+
+    -- * VolumeFilterName
+    VolumeFilterName (..),
+
+    -- * VolumeLifecycle
+    VolumeLifecycle (..),
+
+    -- * VolumeType
+    VolumeType (..),
+
+    -- * WindowsAccessAuditLogLevel
+    WindowsAccessAuditLogLevel (..),
+
+    -- * WindowsDeploymentType
+    WindowsDeploymentType (..),
+
+    -- * ActiveDirectoryBackupAttributes
+    ActiveDirectoryBackupAttributes (..),
+    newActiveDirectoryBackupAttributes,
+    activeDirectoryBackupAttributes_activeDirectoryId,
+    activeDirectoryBackupAttributes_domainName,
+    activeDirectoryBackupAttributes_resourceARN,
+
+    -- * AdministrativeAction
+    AdministrativeAction (..),
+    newAdministrativeAction,
+    administrativeAction_administrativeActionType,
+    administrativeAction_failureDetails,
+    administrativeAction_progressPercent,
+    administrativeAction_requestTime,
+    administrativeAction_status,
+    administrativeAction_targetFileSystemValues,
+    administrativeAction_targetSnapshotValues,
+    administrativeAction_targetVolumeValues,
+
+    -- * AdministrativeActionFailureDetails
+    AdministrativeActionFailureDetails (..),
+    newAdministrativeActionFailureDetails,
+    administrativeActionFailureDetails_message,
+
+    -- * Alias
+    Alias (..),
+    newAlias,
+    alias_lifecycle,
+    alias_name,
+
+    -- * AutoExportPolicy
+    AutoExportPolicy (..),
+    newAutoExportPolicy,
+    autoExportPolicy_events,
+
+    -- * AutoImportPolicy
+    AutoImportPolicy (..),
+    newAutoImportPolicy,
+    autoImportPolicy_events,
+
+    -- * Backup
+    Backup (..),
+    newBackup,
+    backup_directoryInformation,
+    backup_failureDetails,
+    backup_kmsKeyId,
+    backup_ownerId,
+    backup_progressPercent,
+    backup_resourceARN,
+    backup_resourceType,
+    backup_sourceBackupId,
+    backup_sourceBackupRegion,
+    backup_tags,
+    backup_volume,
+    backup_backupId,
+    backup_lifecycle,
+    backup_type,
+    backup_creationTime,
+    backup_fileSystem,
+
+    -- * BackupFailureDetails
+    BackupFailureDetails (..),
+    newBackupFailureDetails,
+    backupFailureDetails_message,
+
+    -- * CompletionReport
+    CompletionReport (..),
+    newCompletionReport,
+    completionReport_format,
+    completionReport_path,
+    completionReport_scope,
+    completionReport_enabled,
+
+    -- * CreateFileCacheLustreConfiguration
+    CreateFileCacheLustreConfiguration (..),
+    newCreateFileCacheLustreConfiguration,
+    createFileCacheLustreConfiguration_weeklyMaintenanceStartTime,
+    createFileCacheLustreConfiguration_perUnitStorageThroughput,
+    createFileCacheLustreConfiguration_deploymentType,
+    createFileCacheLustreConfiguration_metadataConfiguration,
+
+    -- * CreateFileSystemLustreConfiguration
+    CreateFileSystemLustreConfiguration (..),
+    newCreateFileSystemLustreConfiguration,
+    createFileSystemLustreConfiguration_autoImportPolicy,
+    createFileSystemLustreConfiguration_automaticBackupRetentionDays,
+    createFileSystemLustreConfiguration_copyTagsToBackups,
+    createFileSystemLustreConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemLustreConfiguration_dataCompressionType,
+    createFileSystemLustreConfiguration_deploymentType,
+    createFileSystemLustreConfiguration_driveCacheType,
+    createFileSystemLustreConfiguration_exportPath,
+    createFileSystemLustreConfiguration_importPath,
+    createFileSystemLustreConfiguration_importedFileChunkSize,
+    createFileSystemLustreConfiguration_logConfiguration,
+    createFileSystemLustreConfiguration_perUnitStorageThroughput,
+    createFileSystemLustreConfiguration_rootSquashConfiguration,
+    createFileSystemLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- * CreateFileSystemOntapConfiguration
+    CreateFileSystemOntapConfiguration (..),
+    newCreateFileSystemOntapConfiguration,
+    createFileSystemOntapConfiguration_automaticBackupRetentionDays,
+    createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemOntapConfiguration_diskIopsConfiguration,
+    createFileSystemOntapConfiguration_endpointIpAddressRange,
+    createFileSystemOntapConfiguration_fsxAdminPassword,
+    createFileSystemOntapConfiguration_preferredSubnetId,
+    createFileSystemOntapConfiguration_routeTableIds,
+    createFileSystemOntapConfiguration_weeklyMaintenanceStartTime,
+    createFileSystemOntapConfiguration_deploymentType,
+    createFileSystemOntapConfiguration_throughputCapacity,
+
+    -- * CreateFileSystemOpenZFSConfiguration
+    CreateFileSystemOpenZFSConfiguration (..),
+    newCreateFileSystemOpenZFSConfiguration,
+    createFileSystemOpenZFSConfiguration_automaticBackupRetentionDays,
+    createFileSystemOpenZFSConfiguration_copyTagsToBackups,
+    createFileSystemOpenZFSConfiguration_copyTagsToVolumes,
+    createFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemOpenZFSConfiguration_diskIopsConfiguration,
+    createFileSystemOpenZFSConfiguration_rootVolumeConfiguration,
+    createFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime,
+    createFileSystemOpenZFSConfiguration_deploymentType,
+    createFileSystemOpenZFSConfiguration_throughputCapacity,
+
+    -- * CreateFileSystemWindowsConfiguration
+    CreateFileSystemWindowsConfiguration (..),
+    newCreateFileSystemWindowsConfiguration,
+    createFileSystemWindowsConfiguration_activeDirectoryId,
+    createFileSystemWindowsConfiguration_aliases,
+    createFileSystemWindowsConfiguration_auditLogConfiguration,
+    createFileSystemWindowsConfiguration_automaticBackupRetentionDays,
+    createFileSystemWindowsConfiguration_copyTagsToBackups,
+    createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime,
+    createFileSystemWindowsConfiguration_deploymentType,
+    createFileSystemWindowsConfiguration_preferredSubnetId,
+    createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration,
+    createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime,
+    createFileSystemWindowsConfiguration_throughputCapacity,
+
+    -- * CreateOntapVolumeConfiguration
+    CreateOntapVolumeConfiguration (..),
+    newCreateOntapVolumeConfiguration,
+    createOntapVolumeConfiguration_copyTagsToBackups,
+    createOntapVolumeConfiguration_junctionPath,
+    createOntapVolumeConfiguration_ontapVolumeType,
+    createOntapVolumeConfiguration_securityStyle,
+    createOntapVolumeConfiguration_snapshotPolicy,
+    createOntapVolumeConfiguration_storageEfficiencyEnabled,
+    createOntapVolumeConfiguration_tieringPolicy,
+    createOntapVolumeConfiguration_sizeInMegabytes,
+    createOntapVolumeConfiguration_storageVirtualMachineId,
+
+    -- * CreateOpenZFSOriginSnapshotConfiguration
+    CreateOpenZFSOriginSnapshotConfiguration (..),
+    newCreateOpenZFSOriginSnapshotConfiguration,
+    createOpenZFSOriginSnapshotConfiguration_snapshotARN,
+    createOpenZFSOriginSnapshotConfiguration_copyStrategy,
+
+    -- * CreateOpenZFSVolumeConfiguration
+    CreateOpenZFSVolumeConfiguration (..),
+    newCreateOpenZFSVolumeConfiguration,
+    createOpenZFSVolumeConfiguration_copyTagsToSnapshots,
+    createOpenZFSVolumeConfiguration_dataCompressionType,
+    createOpenZFSVolumeConfiguration_nfsExports,
+    createOpenZFSVolumeConfiguration_originSnapshot,
+    createOpenZFSVolumeConfiguration_readOnly,
+    createOpenZFSVolumeConfiguration_recordSizeKiB,
+    createOpenZFSVolumeConfiguration_storageCapacityQuotaGiB,
+    createOpenZFSVolumeConfiguration_storageCapacityReservationGiB,
+    createOpenZFSVolumeConfiguration_userAndGroupQuotas,
+    createOpenZFSVolumeConfiguration_parentVolumeId,
+
+    -- * CreateSvmActiveDirectoryConfiguration
+    CreateSvmActiveDirectoryConfiguration (..),
+    newCreateSvmActiveDirectoryConfiguration,
+    createSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration,
+    createSvmActiveDirectoryConfiguration_netBiosName,
+
+    -- * DataRepositoryAssociation
+    DataRepositoryAssociation (..),
+    newDataRepositoryAssociation,
+    dataRepositoryAssociation_associationId,
+    dataRepositoryAssociation_batchImportMetaDataOnCreate,
+    dataRepositoryAssociation_creationTime,
+    dataRepositoryAssociation_dataRepositoryPath,
+    dataRepositoryAssociation_dataRepositorySubdirectories,
+    dataRepositoryAssociation_failureDetails,
+    dataRepositoryAssociation_fileCacheId,
+    dataRepositoryAssociation_fileCachePath,
+    dataRepositoryAssociation_fileSystemId,
+    dataRepositoryAssociation_fileSystemPath,
+    dataRepositoryAssociation_importedFileChunkSize,
+    dataRepositoryAssociation_lifecycle,
+    dataRepositoryAssociation_nfs,
+    dataRepositoryAssociation_resourceARN,
+    dataRepositoryAssociation_s3,
+    dataRepositoryAssociation_tags,
+
+    -- * DataRepositoryConfiguration
+    DataRepositoryConfiguration (..),
+    newDataRepositoryConfiguration,
+    dataRepositoryConfiguration_autoImportPolicy,
+    dataRepositoryConfiguration_exportPath,
+    dataRepositoryConfiguration_failureDetails,
+    dataRepositoryConfiguration_importPath,
+    dataRepositoryConfiguration_importedFileChunkSize,
+    dataRepositoryConfiguration_lifecycle,
+
+    -- * DataRepositoryFailureDetails
+    DataRepositoryFailureDetails (..),
+    newDataRepositoryFailureDetails,
+    dataRepositoryFailureDetails_message,
+
+    -- * DataRepositoryTask
+    DataRepositoryTask (..),
+    newDataRepositoryTask,
+    dataRepositoryTask_capacityToRelease,
+    dataRepositoryTask_endTime,
+    dataRepositoryTask_failureDetails,
+    dataRepositoryTask_fileCacheId,
+    dataRepositoryTask_fileSystemId,
+    dataRepositoryTask_paths,
+    dataRepositoryTask_report,
+    dataRepositoryTask_resourceARN,
+    dataRepositoryTask_startTime,
+    dataRepositoryTask_status,
+    dataRepositoryTask_tags,
+    dataRepositoryTask_taskId,
+    dataRepositoryTask_lifecycle,
+    dataRepositoryTask_type,
+    dataRepositoryTask_creationTime,
+
+    -- * DataRepositoryTaskFailureDetails
+    DataRepositoryTaskFailureDetails (..),
+    newDataRepositoryTaskFailureDetails,
+    dataRepositoryTaskFailureDetails_message,
+
+    -- * DataRepositoryTaskFilter
+    DataRepositoryTaskFilter (..),
+    newDataRepositoryTaskFilter,
+    dataRepositoryTaskFilter_name,
+    dataRepositoryTaskFilter_values,
+
+    -- * DataRepositoryTaskStatus
+    DataRepositoryTaskStatus (..),
+    newDataRepositoryTaskStatus,
+    dataRepositoryTaskStatus_failedCount,
+    dataRepositoryTaskStatus_lastUpdatedTime,
+    dataRepositoryTaskStatus_releasedCapacity,
+    dataRepositoryTaskStatus_succeededCount,
+    dataRepositoryTaskStatus_totalCount,
+
+    -- * DeleteFileSystemLustreConfiguration
+    DeleteFileSystemLustreConfiguration (..),
+    newDeleteFileSystemLustreConfiguration,
+    deleteFileSystemLustreConfiguration_finalBackupTags,
+    deleteFileSystemLustreConfiguration_skipFinalBackup,
+
+    -- * DeleteFileSystemLustreResponse
+    DeleteFileSystemLustreResponse (..),
+    newDeleteFileSystemLustreResponse,
+    deleteFileSystemLustreResponse_finalBackupId,
+    deleteFileSystemLustreResponse_finalBackupTags,
+
+    -- * DeleteFileSystemOpenZFSConfiguration
+    DeleteFileSystemOpenZFSConfiguration (..),
+    newDeleteFileSystemOpenZFSConfiguration,
+    deleteFileSystemOpenZFSConfiguration_finalBackupTags,
+    deleteFileSystemOpenZFSConfiguration_options,
+    deleteFileSystemOpenZFSConfiguration_skipFinalBackup,
+
+    -- * DeleteFileSystemOpenZFSResponse
+    DeleteFileSystemOpenZFSResponse (..),
+    newDeleteFileSystemOpenZFSResponse,
+    deleteFileSystemOpenZFSResponse_finalBackupId,
+    deleteFileSystemOpenZFSResponse_finalBackupTags,
+
+    -- * DeleteFileSystemWindowsConfiguration
+    DeleteFileSystemWindowsConfiguration (..),
+    newDeleteFileSystemWindowsConfiguration,
+    deleteFileSystemWindowsConfiguration_finalBackupTags,
+    deleteFileSystemWindowsConfiguration_skipFinalBackup,
+
+    -- * DeleteFileSystemWindowsResponse
+    DeleteFileSystemWindowsResponse (..),
+    newDeleteFileSystemWindowsResponse,
+    deleteFileSystemWindowsResponse_finalBackupId,
+    deleteFileSystemWindowsResponse_finalBackupTags,
+
+    -- * DeleteVolumeOntapConfiguration
+    DeleteVolumeOntapConfiguration (..),
+    newDeleteVolumeOntapConfiguration,
+    deleteVolumeOntapConfiguration_finalBackupTags,
+    deleteVolumeOntapConfiguration_skipFinalBackup,
+
+    -- * DeleteVolumeOntapResponse
+    DeleteVolumeOntapResponse (..),
+    newDeleteVolumeOntapResponse,
+    deleteVolumeOntapResponse_finalBackupId,
+    deleteVolumeOntapResponse_finalBackupTags,
+
+    -- * DeleteVolumeOpenZFSConfiguration
+    DeleteVolumeOpenZFSConfiguration (..),
+    newDeleteVolumeOpenZFSConfiguration,
+    deleteVolumeOpenZFSConfiguration_options,
+
+    -- * DiskIopsConfiguration
+    DiskIopsConfiguration (..),
+    newDiskIopsConfiguration,
+    diskIopsConfiguration_iops,
+    diskIopsConfiguration_mode,
+
+    -- * FileCache
+    FileCache (..),
+    newFileCache,
+    fileCache_creationTime,
+    fileCache_dNSName,
+    fileCache_dataRepositoryAssociationIds,
+    fileCache_failureDetails,
+    fileCache_fileCacheId,
+    fileCache_fileCacheType,
+    fileCache_fileCacheTypeVersion,
+    fileCache_kmsKeyId,
+    fileCache_lifecycle,
+    fileCache_lustreConfiguration,
+    fileCache_networkInterfaceIds,
+    fileCache_ownerId,
+    fileCache_resourceARN,
+    fileCache_storageCapacity,
+    fileCache_subnetIds,
+    fileCache_vpcId,
+
+    -- * FileCacheCreating
+    FileCacheCreating (..),
+    newFileCacheCreating,
+    fileCacheCreating_copyTagsToDataRepositoryAssociations,
+    fileCacheCreating_creationTime,
+    fileCacheCreating_dNSName,
+    fileCacheCreating_dataRepositoryAssociationIds,
+    fileCacheCreating_failureDetails,
+    fileCacheCreating_fileCacheId,
+    fileCacheCreating_fileCacheType,
+    fileCacheCreating_fileCacheTypeVersion,
+    fileCacheCreating_kmsKeyId,
+    fileCacheCreating_lifecycle,
+    fileCacheCreating_lustreConfiguration,
+    fileCacheCreating_networkInterfaceIds,
+    fileCacheCreating_ownerId,
+    fileCacheCreating_resourceARN,
+    fileCacheCreating_storageCapacity,
+    fileCacheCreating_subnetIds,
+    fileCacheCreating_tags,
+    fileCacheCreating_vpcId,
+
+    -- * FileCacheDataRepositoryAssociation
+    FileCacheDataRepositoryAssociation (..),
+    newFileCacheDataRepositoryAssociation,
+    fileCacheDataRepositoryAssociation_dataRepositorySubdirectories,
+    fileCacheDataRepositoryAssociation_nfs,
+    fileCacheDataRepositoryAssociation_fileCachePath,
+    fileCacheDataRepositoryAssociation_dataRepositoryPath,
+
+    -- * FileCacheFailureDetails
+    FileCacheFailureDetails (..),
+    newFileCacheFailureDetails,
+    fileCacheFailureDetails_message,
+
+    -- * FileCacheLustreConfiguration
+    FileCacheLustreConfiguration (..),
+    newFileCacheLustreConfiguration,
+    fileCacheLustreConfiguration_deploymentType,
+    fileCacheLustreConfiguration_logConfiguration,
+    fileCacheLustreConfiguration_metadataConfiguration,
+    fileCacheLustreConfiguration_mountName,
+    fileCacheLustreConfiguration_perUnitStorageThroughput,
+    fileCacheLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- * FileCacheLustreMetadataConfiguration
+    FileCacheLustreMetadataConfiguration (..),
+    newFileCacheLustreMetadataConfiguration,
+    fileCacheLustreMetadataConfiguration_storageCapacity,
+
+    -- * FileCacheNFSConfiguration
+    FileCacheNFSConfiguration (..),
+    newFileCacheNFSConfiguration,
+    fileCacheNFSConfiguration_dnsIps,
+    fileCacheNFSConfiguration_version,
+
+    -- * FileSystem
+    FileSystem (..),
+    newFileSystem,
+    fileSystem_administrativeActions,
+    fileSystem_creationTime,
+    fileSystem_dNSName,
+    fileSystem_failureDetails,
+    fileSystem_fileSystemId,
+    fileSystem_fileSystemType,
+    fileSystem_fileSystemTypeVersion,
+    fileSystem_kmsKeyId,
+    fileSystem_lifecycle,
+    fileSystem_lustreConfiguration,
+    fileSystem_networkInterfaceIds,
+    fileSystem_ontapConfiguration,
+    fileSystem_openZFSConfiguration,
+    fileSystem_ownerId,
+    fileSystem_resourceARN,
+    fileSystem_storageCapacity,
+    fileSystem_storageType,
+    fileSystem_subnetIds,
+    fileSystem_tags,
+    fileSystem_vpcId,
+    fileSystem_windowsConfiguration,
+
+    -- * FileSystemEndpoint
+    FileSystemEndpoint (..),
+    newFileSystemEndpoint,
+    fileSystemEndpoint_dNSName,
+    fileSystemEndpoint_ipAddresses,
+
+    -- * FileSystemEndpoints
+    FileSystemEndpoints (..),
+    newFileSystemEndpoints,
+    fileSystemEndpoints_intercluster,
+    fileSystemEndpoints_management,
+
+    -- * FileSystemFailureDetails
+    FileSystemFailureDetails (..),
+    newFileSystemFailureDetails,
+    fileSystemFailureDetails_message,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_name,
+    filter_values,
+
+    -- * LifecycleTransitionReason
+    LifecycleTransitionReason (..),
+    newLifecycleTransitionReason,
+    lifecycleTransitionReason_message,
+
+    -- * LustreFileSystemConfiguration
+    LustreFileSystemConfiguration (..),
+    newLustreFileSystemConfiguration,
+    lustreFileSystemConfiguration_automaticBackupRetentionDays,
+    lustreFileSystemConfiguration_copyTagsToBackups,
+    lustreFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    lustreFileSystemConfiguration_dataCompressionType,
+    lustreFileSystemConfiguration_dataRepositoryConfiguration,
+    lustreFileSystemConfiguration_deploymentType,
+    lustreFileSystemConfiguration_driveCacheType,
+    lustreFileSystemConfiguration_logConfiguration,
+    lustreFileSystemConfiguration_mountName,
+    lustreFileSystemConfiguration_perUnitStorageThroughput,
+    lustreFileSystemConfiguration_rootSquashConfiguration,
+    lustreFileSystemConfiguration_weeklyMaintenanceStartTime,
+
+    -- * LustreLogConfiguration
+    LustreLogConfiguration (..),
+    newLustreLogConfiguration,
+    lustreLogConfiguration_destination,
+    lustreLogConfiguration_level,
+
+    -- * LustreLogCreateConfiguration
+    LustreLogCreateConfiguration (..),
+    newLustreLogCreateConfiguration,
+    lustreLogCreateConfiguration_destination,
+    lustreLogCreateConfiguration_level,
+
+    -- * LustreRootSquashConfiguration
+    LustreRootSquashConfiguration (..),
+    newLustreRootSquashConfiguration,
+    lustreRootSquashConfiguration_noSquashNids,
+    lustreRootSquashConfiguration_rootSquash,
+
+    -- * NFSDataRepositoryConfiguration
+    NFSDataRepositoryConfiguration (..),
+    newNFSDataRepositoryConfiguration,
+    nFSDataRepositoryConfiguration_autoExportPolicy,
+    nFSDataRepositoryConfiguration_dnsIps,
+    nFSDataRepositoryConfiguration_version,
+
+    -- * OntapFileSystemConfiguration
+    OntapFileSystemConfiguration (..),
+    newOntapFileSystemConfiguration,
+    ontapFileSystemConfiguration_automaticBackupRetentionDays,
+    ontapFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    ontapFileSystemConfiguration_deploymentType,
+    ontapFileSystemConfiguration_diskIopsConfiguration,
+    ontapFileSystemConfiguration_endpointIpAddressRange,
+    ontapFileSystemConfiguration_endpoints,
+    ontapFileSystemConfiguration_preferredSubnetId,
+    ontapFileSystemConfiguration_routeTableIds,
+    ontapFileSystemConfiguration_throughputCapacity,
+    ontapFileSystemConfiguration_weeklyMaintenanceStartTime,
+
+    -- * OntapVolumeConfiguration
+    OntapVolumeConfiguration (..),
+    newOntapVolumeConfiguration,
+    ontapVolumeConfiguration_copyTagsToBackups,
+    ontapVolumeConfiguration_flexCacheEndpointType,
+    ontapVolumeConfiguration_junctionPath,
+    ontapVolumeConfiguration_ontapVolumeType,
+    ontapVolumeConfiguration_securityStyle,
+    ontapVolumeConfiguration_sizeInMegabytes,
+    ontapVolumeConfiguration_snapshotPolicy,
+    ontapVolumeConfiguration_storageEfficiencyEnabled,
+    ontapVolumeConfiguration_storageVirtualMachineId,
+    ontapVolumeConfiguration_storageVirtualMachineRoot,
+    ontapVolumeConfiguration_tieringPolicy,
+    ontapVolumeConfiguration_uuid,
+
+    -- * OpenZFSClientConfiguration
+    OpenZFSClientConfiguration (..),
+    newOpenZFSClientConfiguration,
+    openZFSClientConfiguration_clients,
+    openZFSClientConfiguration_options,
+
+    -- * OpenZFSCreateRootVolumeConfiguration
+    OpenZFSCreateRootVolumeConfiguration (..),
+    newOpenZFSCreateRootVolumeConfiguration,
+    openZFSCreateRootVolumeConfiguration_copyTagsToSnapshots,
+    openZFSCreateRootVolumeConfiguration_dataCompressionType,
+    openZFSCreateRootVolumeConfiguration_nfsExports,
+    openZFSCreateRootVolumeConfiguration_readOnly,
+    openZFSCreateRootVolumeConfiguration_recordSizeKiB,
+    openZFSCreateRootVolumeConfiguration_userAndGroupQuotas,
+
+    -- * OpenZFSFileSystemConfiguration
+    OpenZFSFileSystemConfiguration (..),
+    newOpenZFSFileSystemConfiguration,
+    openZFSFileSystemConfiguration_automaticBackupRetentionDays,
+    openZFSFileSystemConfiguration_copyTagsToBackups,
+    openZFSFileSystemConfiguration_copyTagsToVolumes,
+    openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    openZFSFileSystemConfiguration_deploymentType,
+    openZFSFileSystemConfiguration_diskIopsConfiguration,
+    openZFSFileSystemConfiguration_rootVolumeId,
+    openZFSFileSystemConfiguration_throughputCapacity,
+    openZFSFileSystemConfiguration_weeklyMaintenanceStartTime,
+
+    -- * OpenZFSNfsExport
+    OpenZFSNfsExport (..),
+    newOpenZFSNfsExport,
+    openZFSNfsExport_clientConfigurations,
+
+    -- * OpenZFSOriginSnapshotConfiguration
+    OpenZFSOriginSnapshotConfiguration (..),
+    newOpenZFSOriginSnapshotConfiguration,
+    openZFSOriginSnapshotConfiguration_copyStrategy,
+    openZFSOriginSnapshotConfiguration_snapshotARN,
+
+    -- * OpenZFSUserOrGroupQuota
+    OpenZFSUserOrGroupQuota (..),
+    newOpenZFSUserOrGroupQuota,
+    openZFSUserOrGroupQuota_type,
+    openZFSUserOrGroupQuota_id,
+    openZFSUserOrGroupQuota_storageCapacityQuotaGiB,
+
+    -- * OpenZFSVolumeConfiguration
+    OpenZFSVolumeConfiguration (..),
+    newOpenZFSVolumeConfiguration,
+    openZFSVolumeConfiguration_copyTagsToSnapshots,
+    openZFSVolumeConfiguration_dataCompressionType,
+    openZFSVolumeConfiguration_deleteClonedVolumes,
+    openZFSVolumeConfiguration_deleteIntermediateSnaphots,
+    openZFSVolumeConfiguration_nfsExports,
+    openZFSVolumeConfiguration_originSnapshot,
+    openZFSVolumeConfiguration_parentVolumeId,
+    openZFSVolumeConfiguration_readOnly,
+    openZFSVolumeConfiguration_recordSizeKiB,
+    openZFSVolumeConfiguration_restoreToSnapshot,
+    openZFSVolumeConfiguration_storageCapacityQuotaGiB,
+    openZFSVolumeConfiguration_storageCapacityReservationGiB,
+    openZFSVolumeConfiguration_userAndGroupQuotas,
+    openZFSVolumeConfiguration_volumePath,
+
+    -- * S3DataRepositoryConfiguration
+    S3DataRepositoryConfiguration (..),
+    newS3DataRepositoryConfiguration,
+    s3DataRepositoryConfiguration_autoExportPolicy,
+    s3DataRepositoryConfiguration_autoImportPolicy,
+
+    -- * SelfManagedActiveDirectoryAttributes
+    SelfManagedActiveDirectoryAttributes (..),
+    newSelfManagedActiveDirectoryAttributes,
+    selfManagedActiveDirectoryAttributes_dnsIps,
+    selfManagedActiveDirectoryAttributes_domainName,
+    selfManagedActiveDirectoryAttributes_fileSystemAdministratorsGroup,
+    selfManagedActiveDirectoryAttributes_organizationalUnitDistinguishedName,
+    selfManagedActiveDirectoryAttributes_userName,
+
+    -- * SelfManagedActiveDirectoryConfiguration
+    SelfManagedActiveDirectoryConfiguration (..),
+    newSelfManagedActiveDirectoryConfiguration,
+    selfManagedActiveDirectoryConfiguration_fileSystemAdministratorsGroup,
+    selfManagedActiveDirectoryConfiguration_organizationalUnitDistinguishedName,
+    selfManagedActiveDirectoryConfiguration_domainName,
+    selfManagedActiveDirectoryConfiguration_userName,
+    selfManagedActiveDirectoryConfiguration_password,
+    selfManagedActiveDirectoryConfiguration_dnsIps,
+
+    -- * SelfManagedActiveDirectoryConfigurationUpdates
+    SelfManagedActiveDirectoryConfigurationUpdates (..),
+    newSelfManagedActiveDirectoryConfigurationUpdates,
+    selfManagedActiveDirectoryConfigurationUpdates_dnsIps,
+    selfManagedActiveDirectoryConfigurationUpdates_password,
+    selfManagedActiveDirectoryConfigurationUpdates_userName,
+
+    -- * Snapshot
+    Snapshot (..),
+    newSnapshot,
+    snapshot_administrativeActions,
+    snapshot_creationTime,
+    snapshot_lifecycle,
+    snapshot_lifecycleTransitionReason,
+    snapshot_name,
+    snapshot_resourceARN,
+    snapshot_snapshotId,
+    snapshot_tags,
+    snapshot_volumeId,
+
+    -- * SnapshotFilter
+    SnapshotFilter (..),
+    newSnapshotFilter,
+    snapshotFilter_name,
+    snapshotFilter_values,
+
+    -- * StorageVirtualMachine
+    StorageVirtualMachine (..),
+    newStorageVirtualMachine,
+    storageVirtualMachine_activeDirectoryConfiguration,
+    storageVirtualMachine_creationTime,
+    storageVirtualMachine_endpoints,
+    storageVirtualMachine_fileSystemId,
+    storageVirtualMachine_lifecycle,
+    storageVirtualMachine_lifecycleTransitionReason,
+    storageVirtualMachine_name,
+    storageVirtualMachine_resourceARN,
+    storageVirtualMachine_rootVolumeSecurityStyle,
+    storageVirtualMachine_storageVirtualMachineId,
+    storageVirtualMachine_subtype,
+    storageVirtualMachine_tags,
+    storageVirtualMachine_uuid,
+
+    -- * StorageVirtualMachineFilter
+    StorageVirtualMachineFilter (..),
+    newStorageVirtualMachineFilter,
+    storageVirtualMachineFilter_name,
+    storageVirtualMachineFilter_values,
+
+    -- * SvmActiveDirectoryConfiguration
+    SvmActiveDirectoryConfiguration (..),
+    newSvmActiveDirectoryConfiguration,
+    svmActiveDirectoryConfiguration_netBiosName,
+    svmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration,
+
+    -- * SvmEndpoint
+    SvmEndpoint (..),
+    newSvmEndpoint,
+    svmEndpoint_dNSName,
+    svmEndpoint_ipAddresses,
+
+    -- * SvmEndpoints
+    SvmEndpoints (..),
+    newSvmEndpoints,
+    svmEndpoints_iscsi,
+    svmEndpoints_management,
+    svmEndpoints_nfs,
+    svmEndpoints_smb,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TieringPolicy
+    TieringPolicy (..),
+    newTieringPolicy,
+    tieringPolicy_coolingPeriod,
+    tieringPolicy_name,
+
+    -- * UpdateFileCacheLustreConfiguration
+    UpdateFileCacheLustreConfiguration (..),
+    newUpdateFileCacheLustreConfiguration,
+    updateFileCacheLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- * UpdateFileSystemLustreConfiguration
+    UpdateFileSystemLustreConfiguration (..),
+    newUpdateFileSystemLustreConfiguration,
+    updateFileSystemLustreConfiguration_autoImportPolicy,
+    updateFileSystemLustreConfiguration_automaticBackupRetentionDays,
+    updateFileSystemLustreConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemLustreConfiguration_dataCompressionType,
+    updateFileSystemLustreConfiguration_logConfiguration,
+    updateFileSystemLustreConfiguration_rootSquashConfiguration,
+    updateFileSystemLustreConfiguration_weeklyMaintenanceStartTime,
+
+    -- * UpdateFileSystemOntapConfiguration
+    UpdateFileSystemOntapConfiguration (..),
+    newUpdateFileSystemOntapConfiguration,
+    updateFileSystemOntapConfiguration_addRouteTableIds,
+    updateFileSystemOntapConfiguration_automaticBackupRetentionDays,
+    updateFileSystemOntapConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemOntapConfiguration_diskIopsConfiguration,
+    updateFileSystemOntapConfiguration_fsxAdminPassword,
+    updateFileSystemOntapConfiguration_removeRouteTableIds,
+    updateFileSystemOntapConfiguration_throughputCapacity,
+    updateFileSystemOntapConfiguration_weeklyMaintenanceStartTime,
+
+    -- * UpdateFileSystemOpenZFSConfiguration
+    UpdateFileSystemOpenZFSConfiguration (..),
+    newUpdateFileSystemOpenZFSConfiguration,
+    updateFileSystemOpenZFSConfiguration_automaticBackupRetentionDays,
+    updateFileSystemOpenZFSConfiguration_copyTagsToBackups,
+    updateFileSystemOpenZFSConfiguration_copyTagsToVolumes,
+    updateFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemOpenZFSConfiguration_diskIopsConfiguration,
+    updateFileSystemOpenZFSConfiguration_throughputCapacity,
+    updateFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime,
+
+    -- * UpdateFileSystemWindowsConfiguration
+    UpdateFileSystemWindowsConfiguration (..),
+    newUpdateFileSystemWindowsConfiguration,
+    updateFileSystemWindowsConfiguration_auditLogConfiguration,
+    updateFileSystemWindowsConfiguration_automaticBackupRetentionDays,
+    updateFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime,
+    updateFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration,
+    updateFileSystemWindowsConfiguration_throughputCapacity,
+    updateFileSystemWindowsConfiguration_weeklyMaintenanceStartTime,
+
+    -- * UpdateOntapVolumeConfiguration
+    UpdateOntapVolumeConfiguration (..),
+    newUpdateOntapVolumeConfiguration,
+    updateOntapVolumeConfiguration_copyTagsToBackups,
+    updateOntapVolumeConfiguration_junctionPath,
+    updateOntapVolumeConfiguration_securityStyle,
+    updateOntapVolumeConfiguration_sizeInMegabytes,
+    updateOntapVolumeConfiguration_snapshotPolicy,
+    updateOntapVolumeConfiguration_storageEfficiencyEnabled,
+    updateOntapVolumeConfiguration_tieringPolicy,
+
+    -- * UpdateOpenZFSVolumeConfiguration
+    UpdateOpenZFSVolumeConfiguration (..),
+    newUpdateOpenZFSVolumeConfiguration,
+    updateOpenZFSVolumeConfiguration_dataCompressionType,
+    updateOpenZFSVolumeConfiguration_nfsExports,
+    updateOpenZFSVolumeConfiguration_readOnly,
+    updateOpenZFSVolumeConfiguration_recordSizeKiB,
+    updateOpenZFSVolumeConfiguration_storageCapacityQuotaGiB,
+    updateOpenZFSVolumeConfiguration_storageCapacityReservationGiB,
+    updateOpenZFSVolumeConfiguration_userAndGroupQuotas,
+
+    -- * UpdateSvmActiveDirectoryConfiguration
+    UpdateSvmActiveDirectoryConfiguration (..),
+    newUpdateSvmActiveDirectoryConfiguration,
+    updateSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration,
+
+    -- * Volume
+    Volume (..),
+    newVolume,
+    volume_administrativeActions,
+    volume_creationTime,
+    volume_fileSystemId,
+    volume_lifecycle,
+    volume_lifecycleTransitionReason,
+    volume_name,
+    volume_ontapConfiguration,
+    volume_openZFSConfiguration,
+    volume_resourceARN,
+    volume_tags,
+    volume_volumeId,
+    volume_volumeType,
+
+    -- * VolumeFilter
+    VolumeFilter (..),
+    newVolumeFilter,
+    volumeFilter_name,
+    volumeFilter_values,
+
+    -- * WindowsAuditLogConfiguration
+    WindowsAuditLogConfiguration (..),
+    newWindowsAuditLogConfiguration,
+    windowsAuditLogConfiguration_auditLogDestination,
+    windowsAuditLogConfiguration_fileAccessAuditLogLevel,
+    windowsAuditLogConfiguration_fileShareAccessAuditLogLevel,
+
+    -- * WindowsAuditLogCreateConfiguration
+    WindowsAuditLogCreateConfiguration (..),
+    newWindowsAuditLogCreateConfiguration,
+    windowsAuditLogCreateConfiguration_auditLogDestination,
+    windowsAuditLogCreateConfiguration_fileAccessAuditLogLevel,
+    windowsAuditLogCreateConfiguration_fileShareAccessAuditLogLevel,
+
+    -- * WindowsFileSystemConfiguration
+    WindowsFileSystemConfiguration (..),
+    newWindowsFileSystemConfiguration,
+    windowsFileSystemConfiguration_activeDirectoryId,
+    windowsFileSystemConfiguration_aliases,
+    windowsFileSystemConfiguration_auditLogConfiguration,
+    windowsFileSystemConfiguration_automaticBackupRetentionDays,
+    windowsFileSystemConfiguration_copyTagsToBackups,
+    windowsFileSystemConfiguration_dailyAutomaticBackupStartTime,
+    windowsFileSystemConfiguration_deploymentType,
+    windowsFileSystemConfiguration_maintenanceOperationsInProgress,
+    windowsFileSystemConfiguration_preferredFileServerIp,
+    windowsFileSystemConfiguration_preferredSubnetId,
+    windowsFileSystemConfiguration_remoteAdministrationEndpoint,
+    windowsFileSystemConfiguration_selfManagedActiveDirectoryConfiguration,
+    windowsFileSystemConfiguration_throughputCapacity,
+    windowsFileSystemConfiguration_weeklyMaintenanceStartTime,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.FSx.Types.ActiveDirectoryBackupAttributes
+import Amazonka.FSx.Types.AdministrativeAction
+import Amazonka.FSx.Types.AdministrativeActionFailureDetails
+import Amazonka.FSx.Types.AdministrativeActionType
+import Amazonka.FSx.Types.Alias
+import Amazonka.FSx.Types.AliasLifecycle
+import Amazonka.FSx.Types.AutoExportPolicy
+import Amazonka.FSx.Types.AutoImportPolicy
+import Amazonka.FSx.Types.AutoImportPolicyType
+import Amazonka.FSx.Types.Backup
+import Amazonka.FSx.Types.BackupFailureDetails
+import Amazonka.FSx.Types.BackupLifecycle
+import Amazonka.FSx.Types.BackupType
+import Amazonka.FSx.Types.CompletionReport
+import Amazonka.FSx.Types.CreateFileCacheLustreConfiguration
+import Amazonka.FSx.Types.CreateFileSystemLustreConfiguration
+import Amazonka.FSx.Types.CreateFileSystemOntapConfiguration
+import Amazonka.FSx.Types.CreateFileSystemOpenZFSConfiguration
+import Amazonka.FSx.Types.CreateFileSystemWindowsConfiguration
+import Amazonka.FSx.Types.CreateOntapVolumeConfiguration
+import Amazonka.FSx.Types.CreateOpenZFSOriginSnapshotConfiguration
+import Amazonka.FSx.Types.CreateOpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.CreateSvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.DataCompressionType
+import Amazonka.FSx.Types.DataRepositoryAssociation
+import Amazonka.FSx.Types.DataRepositoryConfiguration
+import Amazonka.FSx.Types.DataRepositoryFailureDetails
+import Amazonka.FSx.Types.DataRepositoryLifecycle
+import Amazonka.FSx.Types.DataRepositoryTask
+import Amazonka.FSx.Types.DataRepositoryTaskFailureDetails
+import Amazonka.FSx.Types.DataRepositoryTaskFilter
+import Amazonka.FSx.Types.DataRepositoryTaskFilterName
+import Amazonka.FSx.Types.DataRepositoryTaskLifecycle
+import Amazonka.FSx.Types.DataRepositoryTaskStatus
+import Amazonka.FSx.Types.DataRepositoryTaskType
+import Amazonka.FSx.Types.DeleteFileSystemLustreConfiguration
+import Amazonka.FSx.Types.DeleteFileSystemLustreResponse
+import Amazonka.FSx.Types.DeleteFileSystemOpenZFSConfiguration
+import Amazonka.FSx.Types.DeleteFileSystemOpenZFSOption
+import Amazonka.FSx.Types.DeleteFileSystemOpenZFSResponse
+import Amazonka.FSx.Types.DeleteFileSystemWindowsConfiguration
+import Amazonka.FSx.Types.DeleteFileSystemWindowsResponse
+import Amazonka.FSx.Types.DeleteOpenZFSVolumeOption
+import Amazonka.FSx.Types.DeleteVolumeOntapConfiguration
+import Amazonka.FSx.Types.DeleteVolumeOntapResponse
+import Amazonka.FSx.Types.DeleteVolumeOpenZFSConfiguration
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import Amazonka.FSx.Types.DiskIopsConfigurationMode
+import Amazonka.FSx.Types.DriveCacheType
+import Amazonka.FSx.Types.EventType
+import Amazonka.FSx.Types.FileCache
+import Amazonka.FSx.Types.FileCacheCreating
+import Amazonka.FSx.Types.FileCacheDataRepositoryAssociation
+import Amazonka.FSx.Types.FileCacheFailureDetails
+import Amazonka.FSx.Types.FileCacheLifecycle
+import Amazonka.FSx.Types.FileCacheLustreConfiguration
+import Amazonka.FSx.Types.FileCacheLustreDeploymentType
+import Amazonka.FSx.Types.FileCacheLustreMetadataConfiguration
+import Amazonka.FSx.Types.FileCacheNFSConfiguration
+import Amazonka.FSx.Types.FileCacheType
+import Amazonka.FSx.Types.FileSystem
+import Amazonka.FSx.Types.FileSystemEndpoint
+import Amazonka.FSx.Types.FileSystemEndpoints
+import Amazonka.FSx.Types.FileSystemFailureDetails
+import Amazonka.FSx.Types.FileSystemLifecycle
+import Amazonka.FSx.Types.FileSystemMaintenanceOperation
+import Amazonka.FSx.Types.FileSystemType
+import Amazonka.FSx.Types.Filter
+import Amazonka.FSx.Types.FilterName
+import Amazonka.FSx.Types.FlexCacheEndpointType
+import Amazonka.FSx.Types.InputOntapVolumeType
+import Amazonka.FSx.Types.LifecycleTransitionReason
+import Amazonka.FSx.Types.LustreAccessAuditLogLevel
+import Amazonka.FSx.Types.LustreDeploymentType
+import Amazonka.FSx.Types.LustreFileSystemConfiguration
+import Amazonka.FSx.Types.LustreLogConfiguration
+import Amazonka.FSx.Types.LustreLogCreateConfiguration
+import Amazonka.FSx.Types.LustreRootSquashConfiguration
+import Amazonka.FSx.Types.NFSDataRepositoryConfiguration
+import Amazonka.FSx.Types.NfsVersion
+import Amazonka.FSx.Types.OntapDeploymentType
+import Amazonka.FSx.Types.OntapFileSystemConfiguration
+import Amazonka.FSx.Types.OntapVolumeConfiguration
+import Amazonka.FSx.Types.OntapVolumeType
+import Amazonka.FSx.Types.OpenZFSClientConfiguration
+import Amazonka.FSx.Types.OpenZFSCopyStrategy
+import Amazonka.FSx.Types.OpenZFSCreateRootVolumeConfiguration
+import Amazonka.FSx.Types.OpenZFSDataCompressionType
+import Amazonka.FSx.Types.OpenZFSDeploymentType
+import Amazonka.FSx.Types.OpenZFSFileSystemConfiguration
+import Amazonka.FSx.Types.OpenZFSNfsExport
+import Amazonka.FSx.Types.OpenZFSOriginSnapshotConfiguration
+import Amazonka.FSx.Types.OpenZFSQuotaType
+import Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+import Amazonka.FSx.Types.OpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.ReportFormat
+import Amazonka.FSx.Types.ReportScope
+import Amazonka.FSx.Types.ResourceType
+import Amazonka.FSx.Types.RestoreOpenZFSVolumeOption
+import Amazonka.FSx.Types.S3DataRepositoryConfiguration
+import Amazonka.FSx.Types.SecurityStyle
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfiguration
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates
+import Amazonka.FSx.Types.Snapshot
+import Amazonka.FSx.Types.SnapshotFilter
+import Amazonka.FSx.Types.SnapshotFilterName
+import Amazonka.FSx.Types.SnapshotLifecycle
+import Amazonka.FSx.Types.Status
+import Amazonka.FSx.Types.StorageType
+import Amazonka.FSx.Types.StorageVirtualMachine
+import Amazonka.FSx.Types.StorageVirtualMachineFilter
+import Amazonka.FSx.Types.StorageVirtualMachineFilterName
+import Amazonka.FSx.Types.StorageVirtualMachineLifecycle
+import Amazonka.FSx.Types.StorageVirtualMachineRootVolumeSecurityStyle
+import Amazonka.FSx.Types.StorageVirtualMachineSubtype
+import Amazonka.FSx.Types.SvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.SvmEndpoint
+import Amazonka.FSx.Types.SvmEndpoints
+import Amazonka.FSx.Types.Tag
+import Amazonka.FSx.Types.TieringPolicy
+import Amazonka.FSx.Types.TieringPolicyName
+import Amazonka.FSx.Types.UpdateFileCacheLustreConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemLustreConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemOntapConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemOpenZFSConfiguration
+import Amazonka.FSx.Types.UpdateFileSystemWindowsConfiguration
+import Amazonka.FSx.Types.UpdateOntapVolumeConfiguration
+import Amazonka.FSx.Types.UpdateOpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.UpdateSvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.Volume
+import Amazonka.FSx.Types.VolumeFilter
+import Amazonka.FSx.Types.VolumeFilterName
+import Amazonka.FSx.Types.VolumeLifecycle
+import Amazonka.FSx.Types.VolumeType
+import Amazonka.FSx.Types.WindowsAccessAuditLogLevel
+import Amazonka.FSx.Types.WindowsAuditLogConfiguration
+import Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
+import Amazonka.FSx.Types.WindowsDeploymentType
+import Amazonka.FSx.Types.WindowsFileSystemConfiguration
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2018-03-01@ of the Amazon FSx SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "FSx",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "fsx",
+      Core.signingName = "fsx",
+      Core.version = "2018-03-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "FSx",
+      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
+
+-- | An Active Directory error.
+_ActiveDirectoryError :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ActiveDirectoryError =
+  Core._MatchServiceError
+    defaultService
+    "ActiveDirectoryError"
+
+-- | You can\'t delete a backup while it\'s being copied.
+_BackupBeingCopied :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BackupBeingCopied =
+  Core._MatchServiceError
+    defaultService
+    "BackupBeingCopied"
+
+-- | Another backup is already under way. Wait for completion before
+-- initiating additional backups of this file system.
+_BackupInProgress :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BackupInProgress =
+  Core._MatchServiceError
+    defaultService
+    "BackupInProgress"
+
+-- | No Amazon FSx backups were found based upon the supplied parameters.
+_BackupNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BackupNotFound =
+  Core._MatchServiceError
+    defaultService
+    "BackupNotFound"
+
+-- | You can\'t delete a backup while it\'s being used to restore a file
+-- system.
+_BackupRestoring :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BackupRestoring =
+  Core._MatchServiceError
+    defaultService
+    "BackupRestoring"
+
+-- | A generic error indicating a failure with a client request.
+_BadRequest :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequest =
+  Core._MatchServiceError defaultService "BadRequest"
+
+-- | No data repository associations were found based upon the supplied
+-- parameters.
+_DataRepositoryAssociationNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DataRepositoryAssociationNotFound =
+  Core._MatchServiceError
+    defaultService
+    "DataRepositoryAssociationNotFound"
+
+-- | The data repository task could not be canceled because the task has
+-- already ended.
+_DataRepositoryTaskEnded :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DataRepositoryTaskEnded =
+  Core._MatchServiceError
+    defaultService
+    "DataRepositoryTaskEnded"
+
+-- | An existing data repository task is currently executing on the file
+-- system. Wait until the existing task has completed, then create the new
+-- task.
+_DataRepositoryTaskExecuting :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DataRepositoryTaskExecuting =
+  Core._MatchServiceError
+    defaultService
+    "DataRepositoryTaskExecuting"
+
+-- | The data repository task or tasks you specified could not be found.
+_DataRepositoryTaskNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DataRepositoryTaskNotFound =
+  Core._MatchServiceError
+    defaultService
+    "DataRepositoryTaskNotFound"
+
+-- | No caches were found based upon supplied parameters.
+_FileCacheNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_FileCacheNotFound =
+  Core._MatchServiceError
+    defaultService
+    "FileCacheNotFound"
+
+-- | No Amazon FSx file systems were found based upon supplied parameters.
+_FileSystemNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_FileSystemNotFound =
+  Core._MatchServiceError
+    defaultService
+    "FileSystemNotFound"
+
+-- | The error returned when a second request is received with the same
+-- client request token but different parameters settings. A client request
+-- token should always uniquely identify a single request.
+_IncompatibleParameterError :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_IncompatibleParameterError =
+  Core._MatchServiceError
+    defaultService
+    "IncompatibleParameterError"
+
+-- | Amazon FSx doesn\'t support Multi-AZ Windows File Server copy backup in
+-- the destination Region, so the copied backup can\'t be restored.
+_IncompatibleRegionForMultiAZ :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_IncompatibleRegionForMultiAZ =
+  Core._MatchServiceError
+    defaultService
+    "IncompatibleRegionForMultiAZ"
+
+-- | A generic error indicating a server-side failure.
+_InternalServerError :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerError =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerError"
+
+-- | You have filtered the response to a data repository type that is not
+-- supported.
+_InvalidDataRepositoryType :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDataRepositoryType =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDataRepositoryType"
+
+-- | The Key Management Service (KMS) key of the destination backup is not
+-- valid.
+_InvalidDestinationKmsKey :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDestinationKmsKey =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDestinationKmsKey"
+
+-- | The path provided for data repository export isn\'t valid.
+_InvalidExportPath :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidExportPath =
+  Core._MatchServiceError
+    defaultService
+    "InvalidExportPath"
+
+-- | The path provided for data repository import isn\'t valid.
+_InvalidImportPath :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidImportPath =
+  Core._MatchServiceError
+    defaultService
+    "InvalidImportPath"
+
+-- | One or more network settings specified in the request are invalid.
+_InvalidNetworkSettings :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidNetworkSettings =
+  Core._MatchServiceError
+    defaultService
+    "InvalidNetworkSettings"
+
+-- | An invalid value for @PerUnitStorageThroughput@ was provided. Please
+-- create your file system again, using a valid value.
+_InvalidPerUnitStorageThroughput :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidPerUnitStorageThroughput =
+  Core._MatchServiceError
+    defaultService
+    "InvalidPerUnitStorageThroughput"
+
+-- | The Region provided for @SourceRegion@ is not valid or is in a different
+-- Amazon Web Services partition.
+_InvalidRegion :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidRegion =
+  Core._MatchServiceError
+    defaultService
+    "InvalidRegion"
+
+-- | The Key Management Service (KMS) key of the source backup is not valid.
+_InvalidSourceKmsKey :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidSourceKmsKey =
+  Core._MatchServiceError
+    defaultService
+    "InvalidSourceKmsKey"
+
+-- | A cache configuration is required for this operation.
+_MissingFileCacheConfiguration :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_MissingFileCacheConfiguration =
+  Core._MatchServiceError
+    defaultService
+    "MissingFileCacheConfiguration"
+
+-- | A file system configuration is required for this operation.
+_MissingFileSystemConfiguration :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_MissingFileSystemConfiguration =
+  Core._MatchServiceError
+    defaultService
+    "MissingFileSystemConfiguration"
+
+-- | A volume configuration is required for this operation.
+_MissingVolumeConfiguration :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_MissingVolumeConfiguration =
+  Core._MatchServiceError
+    defaultService
+    "MissingVolumeConfiguration"
+
+-- | The resource specified for the tagging operation is not a resource type
+-- owned by Amazon FSx. Use the API of the relevant service to perform the
+-- operation.
+_NotServiceResourceError :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotServiceResourceError =
+  Core._MatchServiceError
+    defaultService
+    "NotServiceResourceError"
+
+-- | The resource specified does not support tagging.
+_ResourceDoesNotSupportTagging :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceDoesNotSupportTagging =
+  Core._MatchServiceError
+    defaultService
+    "ResourceDoesNotSupportTagging"
+
+-- | The resource specified by the Amazon Resource Name (ARN) can\'t be
+-- found.
+_ResourceNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFound =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFound"
+
+-- | An error indicating that a particular service limit was exceeded. You
+-- can increase some service limits by contacting Amazon Web Services
+-- Support.
+_ServiceLimitExceeded :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceLimitExceeded =
+  Core._MatchServiceError
+    defaultService
+    "ServiceLimitExceeded"
+
+-- | No Amazon FSx snapshots were found based on the supplied parameters.
+_SnapshotNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SnapshotNotFound =
+  Core._MatchServiceError
+    defaultService
+    "SnapshotNotFound"
+
+-- | The request was rejected because the lifecycle status of the source
+-- backup isn\'t @AVAILABLE@.
+_SourceBackupUnavailable :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SourceBackupUnavailable =
+  Core._MatchServiceError
+    defaultService
+    "SourceBackupUnavailable"
+
+-- | No FSx for ONTAP SVMs were found based upon the supplied parameters.
+_StorageVirtualMachineNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_StorageVirtualMachineNotFound =
+  Core._MatchServiceError
+    defaultService
+    "StorageVirtualMachineNotFound"
+
+-- | The requested operation is not supported for this resource or API.
+_UnsupportedOperation :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnsupportedOperation =
+  Core._MatchServiceError
+    defaultService
+    "UnsupportedOperation"
+
+-- | No Amazon FSx volumes were found based upon the supplied parameters.
+_VolumeNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_VolumeNotFound =
+  Core._MatchServiceError
+    defaultService
+    "VolumeNotFound"
diff --git a/gen/Amazonka/FSx/Types/ActiveDirectoryBackupAttributes.hs b/gen/Amazonka/FSx/Types/ActiveDirectoryBackupAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/ActiveDirectoryBackupAttributes.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.FSx.Types.ActiveDirectoryBackupAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.ActiveDirectoryBackupAttributes where
+
+import qualified 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 Microsoft Active Directory attributes of the Amazon FSx for Windows
+-- File Server file system.
+--
+-- /See:/ 'newActiveDirectoryBackupAttributes' smart constructor.
+data ActiveDirectoryBackupAttributes = ActiveDirectoryBackupAttributes'
+  { -- | The ID of the Amazon Web Services Managed Microsoft Active Directory
+    -- instance to which the file system is joined.
+    activeDirectoryId :: Prelude.Maybe Prelude.Text,
+    -- | The fully qualified domain name of the self-managed Active Directory
+    -- directory.
+    domainName :: Prelude.Maybe Prelude.Text,
+    resourceARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActiveDirectoryBackupAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryId', 'activeDirectoryBackupAttributes_activeDirectoryId' - The ID of the Amazon Web Services Managed Microsoft Active Directory
+-- instance to which the file system is joined.
+--
+-- 'domainName', 'activeDirectoryBackupAttributes_domainName' - The fully qualified domain name of the self-managed Active Directory
+-- directory.
+--
+-- 'resourceARN', 'activeDirectoryBackupAttributes_resourceARN' - Undocumented member.
+newActiveDirectoryBackupAttributes ::
+  ActiveDirectoryBackupAttributes
+newActiveDirectoryBackupAttributes =
+  ActiveDirectoryBackupAttributes'
+    { activeDirectoryId =
+        Prelude.Nothing,
+      domainName = Prelude.Nothing,
+      resourceARN = Prelude.Nothing
+    }
+
+-- | The ID of the Amazon Web Services Managed Microsoft Active Directory
+-- instance to which the file system is joined.
+activeDirectoryBackupAttributes_activeDirectoryId :: Lens.Lens' ActiveDirectoryBackupAttributes (Prelude.Maybe Prelude.Text)
+activeDirectoryBackupAttributes_activeDirectoryId = Lens.lens (\ActiveDirectoryBackupAttributes' {activeDirectoryId} -> activeDirectoryId) (\s@ActiveDirectoryBackupAttributes' {} a -> s {activeDirectoryId = a} :: ActiveDirectoryBackupAttributes)
+
+-- | The fully qualified domain name of the self-managed Active Directory
+-- directory.
+activeDirectoryBackupAttributes_domainName :: Lens.Lens' ActiveDirectoryBackupAttributes (Prelude.Maybe Prelude.Text)
+activeDirectoryBackupAttributes_domainName = Lens.lens (\ActiveDirectoryBackupAttributes' {domainName} -> domainName) (\s@ActiveDirectoryBackupAttributes' {} a -> s {domainName = a} :: ActiveDirectoryBackupAttributes)
+
+-- | Undocumented member.
+activeDirectoryBackupAttributes_resourceARN :: Lens.Lens' ActiveDirectoryBackupAttributes (Prelude.Maybe Prelude.Text)
+activeDirectoryBackupAttributes_resourceARN = Lens.lens (\ActiveDirectoryBackupAttributes' {resourceARN} -> resourceARN) (\s@ActiveDirectoryBackupAttributes' {} a -> s {resourceARN = a} :: ActiveDirectoryBackupAttributes)
+
+instance
+  Data.FromJSON
+    ActiveDirectoryBackupAttributes
+  where
+  parseJSON =
+    Data.withObject
+      "ActiveDirectoryBackupAttributes"
+      ( \x ->
+          ActiveDirectoryBackupAttributes'
+            Prelude.<$> (x Data..:? "ActiveDirectoryId")
+            Prelude.<*> (x Data..:? "DomainName")
+            Prelude.<*> (x Data..:? "ResourceARN")
+      )
+
+instance
+  Prelude.Hashable
+    ActiveDirectoryBackupAttributes
+  where
+  hashWithSalt
+    _salt
+    ActiveDirectoryBackupAttributes' {..} =
+      _salt
+        `Prelude.hashWithSalt` activeDirectoryId
+        `Prelude.hashWithSalt` domainName
+        `Prelude.hashWithSalt` resourceARN
+
+instance
+  Prelude.NFData
+    ActiveDirectoryBackupAttributes
+  where
+  rnf ActiveDirectoryBackupAttributes' {..} =
+    Prelude.rnf activeDirectoryId
+      `Prelude.seq` Prelude.rnf domainName
+      `Prelude.seq` Prelude.rnf resourceARN
diff --git a/gen/Amazonka/FSx/Types/AdministrativeAction.hs b/gen/Amazonka/FSx/Types/AdministrativeAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AdministrativeAction.hs
@@ -0,0 +1,217 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.AdministrativeAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AdministrativeAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AdministrativeActionFailureDetails
+import Amazonka.FSx.Types.AdministrativeActionType
+import {-# SOURCE #-} Amazonka.FSx.Types.FileSystem
+import {-# SOURCE #-} Amazonka.FSx.Types.Snapshot
+import Amazonka.FSx.Types.Status
+import {-# SOURCE #-} Amazonka.FSx.Types.Volume
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a specific Amazon FSx administrative action for the current
+-- Windows, Lustre, or OpenZFS file system.
+--
+-- /See:/ 'newAdministrativeAction' smart constructor.
+data AdministrativeAction = AdministrativeAction'
+  { administrativeActionType :: Prelude.Maybe AdministrativeActionType,
+    failureDetails :: Prelude.Maybe AdministrativeActionFailureDetails,
+    -- | The percentage-complete status of a @STORAGE_OPTIMIZATION@
+    -- administrative action. Does not apply to any other administrative action
+    -- type.
+    progressPercent :: Prelude.Maybe Prelude.Natural,
+    -- | The time that the administrative action request was received.
+    requestTime :: Prelude.Maybe Data.POSIX,
+    -- | Describes the status of the administrative action, as follows:
+    --
+    -- -   @FAILED@ - Amazon FSx failed to process the administrative action
+    --     successfully.
+    --
+    -- -   @IN_PROGRESS@ - Amazon FSx is processing the administrative action.
+    --
+    -- -   @PENDING@ - Amazon FSx is waiting to process the administrative
+    --     action.
+    --
+    -- -   @COMPLETED@ - Amazon FSx has finished processing the administrative
+    --     task.
+    --
+    -- -   @UPDATED_OPTIMIZING@ - For a storage-capacity increase update,
+    --     Amazon FSx has updated the file system with the new storage
+    --     capacity, and is now performing the storage-optimization process.
+    status :: Prelude.Maybe Status,
+    -- | Describes the target value for the administration action, provided in
+    -- the @UpdateFileSystem@ operation. Returned for @FILE_SYSTEM_UPDATE@
+    -- administrative actions.
+    targetFileSystemValues :: Prelude.Maybe FileSystem,
+    targetSnapshotValues :: Prelude.Maybe Snapshot,
+    targetVolumeValues :: Prelude.Maybe Volume
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AdministrativeAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'administrativeActionType', 'administrativeAction_administrativeActionType' - Undocumented member.
+--
+-- 'failureDetails', 'administrativeAction_failureDetails' - Undocumented member.
+--
+-- 'progressPercent', 'administrativeAction_progressPercent' - The percentage-complete status of a @STORAGE_OPTIMIZATION@
+-- administrative action. Does not apply to any other administrative action
+-- type.
+--
+-- 'requestTime', 'administrativeAction_requestTime' - The time that the administrative action request was received.
+--
+-- 'status', 'administrativeAction_status' - Describes the status of the administrative action, as follows:
+--
+-- -   @FAILED@ - Amazon FSx failed to process the administrative action
+--     successfully.
+--
+-- -   @IN_PROGRESS@ - Amazon FSx is processing the administrative action.
+--
+-- -   @PENDING@ - Amazon FSx is waiting to process the administrative
+--     action.
+--
+-- -   @COMPLETED@ - Amazon FSx has finished processing the administrative
+--     task.
+--
+-- -   @UPDATED_OPTIMIZING@ - For a storage-capacity increase update,
+--     Amazon FSx has updated the file system with the new storage
+--     capacity, and is now performing the storage-optimization process.
+--
+-- 'targetFileSystemValues', 'administrativeAction_targetFileSystemValues' - Describes the target value for the administration action, provided in
+-- the @UpdateFileSystem@ operation. Returned for @FILE_SYSTEM_UPDATE@
+-- administrative actions.
+--
+-- 'targetSnapshotValues', 'administrativeAction_targetSnapshotValues' - Undocumented member.
+--
+-- 'targetVolumeValues', 'administrativeAction_targetVolumeValues' - Undocumented member.
+newAdministrativeAction ::
+  AdministrativeAction
+newAdministrativeAction =
+  AdministrativeAction'
+    { administrativeActionType =
+        Prelude.Nothing,
+      failureDetails = Prelude.Nothing,
+      progressPercent = Prelude.Nothing,
+      requestTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      targetFileSystemValues = Prelude.Nothing,
+      targetSnapshotValues = Prelude.Nothing,
+      targetVolumeValues = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+administrativeAction_administrativeActionType :: Lens.Lens' AdministrativeAction (Prelude.Maybe AdministrativeActionType)
+administrativeAction_administrativeActionType = Lens.lens (\AdministrativeAction' {administrativeActionType} -> administrativeActionType) (\s@AdministrativeAction' {} a -> s {administrativeActionType = a} :: AdministrativeAction)
+
+-- | Undocumented member.
+administrativeAction_failureDetails :: Lens.Lens' AdministrativeAction (Prelude.Maybe AdministrativeActionFailureDetails)
+administrativeAction_failureDetails = Lens.lens (\AdministrativeAction' {failureDetails} -> failureDetails) (\s@AdministrativeAction' {} a -> s {failureDetails = a} :: AdministrativeAction)
+
+-- | The percentage-complete status of a @STORAGE_OPTIMIZATION@
+-- administrative action. Does not apply to any other administrative action
+-- type.
+administrativeAction_progressPercent :: Lens.Lens' AdministrativeAction (Prelude.Maybe Prelude.Natural)
+administrativeAction_progressPercent = Lens.lens (\AdministrativeAction' {progressPercent} -> progressPercent) (\s@AdministrativeAction' {} a -> s {progressPercent = a} :: AdministrativeAction)
+
+-- | The time that the administrative action request was received.
+administrativeAction_requestTime :: Lens.Lens' AdministrativeAction (Prelude.Maybe Prelude.UTCTime)
+administrativeAction_requestTime = Lens.lens (\AdministrativeAction' {requestTime} -> requestTime) (\s@AdministrativeAction' {} a -> s {requestTime = a} :: AdministrativeAction) Prelude.. Lens.mapping Data._Time
+
+-- | Describes the status of the administrative action, as follows:
+--
+-- -   @FAILED@ - Amazon FSx failed to process the administrative action
+--     successfully.
+--
+-- -   @IN_PROGRESS@ - Amazon FSx is processing the administrative action.
+--
+-- -   @PENDING@ - Amazon FSx is waiting to process the administrative
+--     action.
+--
+-- -   @COMPLETED@ - Amazon FSx has finished processing the administrative
+--     task.
+--
+-- -   @UPDATED_OPTIMIZING@ - For a storage-capacity increase update,
+--     Amazon FSx has updated the file system with the new storage
+--     capacity, and is now performing the storage-optimization process.
+administrativeAction_status :: Lens.Lens' AdministrativeAction (Prelude.Maybe Status)
+administrativeAction_status = Lens.lens (\AdministrativeAction' {status} -> status) (\s@AdministrativeAction' {} a -> s {status = a} :: AdministrativeAction)
+
+-- | Describes the target value for the administration action, provided in
+-- the @UpdateFileSystem@ operation. Returned for @FILE_SYSTEM_UPDATE@
+-- administrative actions.
+administrativeAction_targetFileSystemValues :: Lens.Lens' AdministrativeAction (Prelude.Maybe FileSystem)
+administrativeAction_targetFileSystemValues = Lens.lens (\AdministrativeAction' {targetFileSystemValues} -> targetFileSystemValues) (\s@AdministrativeAction' {} a -> s {targetFileSystemValues = a} :: AdministrativeAction)
+
+-- | Undocumented member.
+administrativeAction_targetSnapshotValues :: Lens.Lens' AdministrativeAction (Prelude.Maybe Snapshot)
+administrativeAction_targetSnapshotValues = Lens.lens (\AdministrativeAction' {targetSnapshotValues} -> targetSnapshotValues) (\s@AdministrativeAction' {} a -> s {targetSnapshotValues = a} :: AdministrativeAction)
+
+-- | Undocumented member.
+administrativeAction_targetVolumeValues :: Lens.Lens' AdministrativeAction (Prelude.Maybe Volume)
+administrativeAction_targetVolumeValues = Lens.lens (\AdministrativeAction' {targetVolumeValues} -> targetVolumeValues) (\s@AdministrativeAction' {} a -> s {targetVolumeValues = a} :: AdministrativeAction)
+
+instance Data.FromJSON AdministrativeAction where
+  parseJSON =
+    Data.withObject
+      "AdministrativeAction"
+      ( \x ->
+          AdministrativeAction'
+            Prelude.<$> (x Data..:? "AdministrativeActionType")
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "ProgressPercent")
+            Prelude.<*> (x Data..:? "RequestTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "TargetFileSystemValues")
+            Prelude.<*> (x Data..:? "TargetSnapshotValues")
+            Prelude.<*> (x Data..:? "TargetVolumeValues")
+      )
+
+instance Prelude.Hashable AdministrativeAction where
+  hashWithSalt _salt AdministrativeAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` administrativeActionType
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` progressPercent
+      `Prelude.hashWithSalt` requestTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` targetFileSystemValues
+      `Prelude.hashWithSalt` targetSnapshotValues
+      `Prelude.hashWithSalt` targetVolumeValues
+
+instance Prelude.NFData AdministrativeAction where
+  rnf AdministrativeAction' {..} =
+    Prelude.rnf administrativeActionType
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf progressPercent
+      `Prelude.seq` Prelude.rnf requestTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf targetFileSystemValues
+      `Prelude.seq` Prelude.rnf targetSnapshotValues
+      `Prelude.seq` Prelude.rnf targetVolumeValues
diff --git a/gen/Amazonka/FSx/Types/AdministrativeAction.hs-boot b/gen/Amazonka/FSx/Types/AdministrativeAction.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AdministrativeAction.hs-boot
@@ -0,0 +1,31 @@
+{-# OPTIONS_GHC -Wno-missing-methods #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.AdministrativeAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AdministrativeAction where
+
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+data AdministrativeAction
+
+instance Prelude.Eq AdministrativeAction
+
+instance Prelude.Read AdministrativeAction
+
+instance Prelude.Show AdministrativeAction
+
+instance Prelude.Generic AdministrativeAction
+
+instance Data.FromJSON AdministrativeAction
+
+instance Prelude.NFData AdministrativeAction
+
+instance Prelude.Hashable AdministrativeAction
diff --git a/gen/Amazonka/FSx/Types/AdministrativeActionFailureDetails.hs b/gen/Amazonka/FSx/Types/AdministrativeActionFailureDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AdministrativeActionFailureDetails.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.FSx.Types.AdministrativeActionFailureDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AdministrativeActionFailureDetails where
+
+import qualified 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 information about a failed administrative action.
+--
+-- /See:/ 'newAdministrativeActionFailureDetails' smart constructor.
+data AdministrativeActionFailureDetails = AdministrativeActionFailureDetails'
+  { -- | Error message providing details about the failed administrative action.
+    message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AdministrativeActionFailureDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'administrativeActionFailureDetails_message' - Error message providing details about the failed administrative action.
+newAdministrativeActionFailureDetails ::
+  AdministrativeActionFailureDetails
+newAdministrativeActionFailureDetails =
+  AdministrativeActionFailureDetails'
+    { message =
+        Prelude.Nothing
+    }
+
+-- | Error message providing details about the failed administrative action.
+administrativeActionFailureDetails_message :: Lens.Lens' AdministrativeActionFailureDetails (Prelude.Maybe Prelude.Text)
+administrativeActionFailureDetails_message = Lens.lens (\AdministrativeActionFailureDetails' {message} -> message) (\s@AdministrativeActionFailureDetails' {} a -> s {message = a} :: AdministrativeActionFailureDetails)
+
+instance
+  Data.FromJSON
+    AdministrativeActionFailureDetails
+  where
+  parseJSON =
+    Data.withObject
+      "AdministrativeActionFailureDetails"
+      ( \x ->
+          AdministrativeActionFailureDetails'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance
+  Prelude.Hashable
+    AdministrativeActionFailureDetails
+  where
+  hashWithSalt
+    _salt
+    AdministrativeActionFailureDetails' {..} =
+      _salt `Prelude.hashWithSalt` message
+
+instance
+  Prelude.NFData
+    AdministrativeActionFailureDetails
+  where
+  rnf AdministrativeActionFailureDetails' {..} =
+    Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/AdministrativeActionType.hs b/gen/Amazonka/FSx/Types/AdministrativeActionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AdministrativeActionType.hs
@@ -0,0 +1,153 @@
+{-# 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.FSx.Types.AdministrativeActionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AdministrativeActionType
+  ( AdministrativeActionType
+      ( ..,
+        AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION,
+        AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION,
+        AdministrativeActionType_FILE_SYSTEM_UPDATE,
+        AdministrativeActionType_RELEASE_NFS_V3_LOCKS,
+        AdministrativeActionType_SNAPSHOT_UPDATE,
+        AdministrativeActionType_STORAGE_OPTIMIZATION,
+        AdministrativeActionType_VOLUME_RESTORE,
+        AdministrativeActionType_VOLUME_UPDATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the type of administrative action, as follows:
+--
+-- -   @FILE_SYSTEM_UPDATE@ - A file system update administrative action
+--     initiated from the Amazon FSx console, API (@UpdateFileSystem@), or
+--     CLI (@update-file-system@).
+--
+-- -   @STORAGE_OPTIMIZATION@ - After the @FILE_SYSTEM_UPDATE@ task to
+--     increase a file system\'s storage capacity has been completed
+--     successfully, a @STORAGE_OPTIMIZATION@ task starts.
+--
+--     -   For Windows and ONTAP, storage optimization is the process of
+--         migrating the file system data to newer larger disks.
+--
+--     -   For Lustre, storage optimization consists of rebalancing the
+--         data across the existing and newly added file servers.
+--
+--     You can track the storage-optimization progress using the
+--     @ProgressPercent@ property. When @STORAGE_OPTIMIZATION@ has been
+--     completed successfully, the parent @FILE_SYSTEM_UPDATE@ action
+--     status changes to @COMPLETED@. For more information, see
+--     <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html Managing storage capacity>
+--     in the /Amazon FSx for Windows File Server User Guide/,
+--     <https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html Managing storage and throughput capacity>
+--     in the /Amazon FSx for Lustre User Guide/, and
+--     <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-storage-capacity.html Managing storage capacity and provisioned IOPS>
+--     in the /Amazon FSx for NetApp ONTAP User Guide/.
+--
+-- -   @FILE_SYSTEM_ALIAS_ASSOCIATION@ - A file system update to associate
+--     a new Domain Name System (DNS) alias with the file system. For more
+--     information, see
+--     <https://docs.aws.amazon.com/fsx/latest/APIReference/API_AssociateFileSystemAliases.html AssociateFileSystemAliases>.
+--
+-- -   @FILE_SYSTEM_ALIAS_DISASSOCIATION@ - A file system update to
+--     disassociate a DNS alias from the file system. For more information,
+--     see
+--     <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DisassociateFileSystemAliases.html DisassociateFileSystemAliases>.
+--
+-- -   @VOLUME_UPDATE@ - A volume update to an Amazon FSx for NetApp ONTAP
+--     or Amazon FSx for OpenZFS volume initiated from the Amazon FSx
+--     console, API (@UpdateVolume@), or CLI (@update-volume@).
+--
+-- -   @VOLUME_RESTORE@ - An Amazon FSx for OpenZFS volume is returned to
+--     the state saved by the specified snapshot, initiated from an API
+--     (@RestoreVolumeFromSnapshot@) or CLI
+--     (@restore-volume-from-snapshot@).
+--
+-- -   @SNAPSHOT_UPDATE@ - A snapshot update to an Amazon FSx for OpenZFS
+--     volume initiated from the Amazon FSx console, API
+--     (@UpdateSnapshot@), or CLI (@update-snapshot@).
+--
+-- -   @RELEASE_NFS_V3_LOCKS@ - Tracks the release of Network File System
+--     (NFS) V3 locks on an Amazon FSx for OpenZFS file system.
+newtype AdministrativeActionType = AdministrativeActionType'
+  { fromAdministrativeActionType ::
+      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 AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION :: AdministrativeActionType
+pattern AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION = AdministrativeActionType' "FILE_SYSTEM_ALIAS_ASSOCIATION"
+
+pattern AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION :: AdministrativeActionType
+pattern AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION = AdministrativeActionType' "FILE_SYSTEM_ALIAS_DISASSOCIATION"
+
+pattern AdministrativeActionType_FILE_SYSTEM_UPDATE :: AdministrativeActionType
+pattern AdministrativeActionType_FILE_SYSTEM_UPDATE = AdministrativeActionType' "FILE_SYSTEM_UPDATE"
+
+pattern AdministrativeActionType_RELEASE_NFS_V3_LOCKS :: AdministrativeActionType
+pattern AdministrativeActionType_RELEASE_NFS_V3_LOCKS = AdministrativeActionType' "RELEASE_NFS_V3_LOCKS"
+
+pattern AdministrativeActionType_SNAPSHOT_UPDATE :: AdministrativeActionType
+pattern AdministrativeActionType_SNAPSHOT_UPDATE = AdministrativeActionType' "SNAPSHOT_UPDATE"
+
+pattern AdministrativeActionType_STORAGE_OPTIMIZATION :: AdministrativeActionType
+pattern AdministrativeActionType_STORAGE_OPTIMIZATION = AdministrativeActionType' "STORAGE_OPTIMIZATION"
+
+pattern AdministrativeActionType_VOLUME_RESTORE :: AdministrativeActionType
+pattern AdministrativeActionType_VOLUME_RESTORE = AdministrativeActionType' "VOLUME_RESTORE"
+
+pattern AdministrativeActionType_VOLUME_UPDATE :: AdministrativeActionType
+pattern AdministrativeActionType_VOLUME_UPDATE = AdministrativeActionType' "VOLUME_UPDATE"
+
+{-# COMPLETE
+  AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION,
+  AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION,
+  AdministrativeActionType_FILE_SYSTEM_UPDATE,
+  AdministrativeActionType_RELEASE_NFS_V3_LOCKS,
+  AdministrativeActionType_SNAPSHOT_UPDATE,
+  AdministrativeActionType_STORAGE_OPTIMIZATION,
+  AdministrativeActionType_VOLUME_RESTORE,
+  AdministrativeActionType_VOLUME_UPDATE,
+  AdministrativeActionType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/Alias.hs b/gen/Amazonka/FSx/Types/Alias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Alias.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.FSx.Types.Alias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.Alias where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AliasLifecycle
+import qualified Amazonka.Prelude as Prelude
+
+-- | A DNS alias that is associated with the file system. You can use a DNS
+-- alias to access a file system using user-defined DNS names, in addition
+-- to the default DNS name that Amazon FSx assigns to the file system. For
+-- more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html DNS aliases>
+-- in the /FSx for Windows File Server User Guide/.
+--
+-- /See:/ 'newAlias' smart constructor.
+data Alias = Alias'
+  { -- | Describes the state of the DNS alias.
+    --
+    -- -   AVAILABLE - The DNS alias is associated with an Amazon FSx file
+    --     system.
+    --
+    -- -   CREATING - Amazon FSx is creating the DNS alias and associating it
+    --     with the file system.
+    --
+    -- -   CREATE_FAILED - Amazon FSx was unable to associate the DNS alias
+    --     with the file system.
+    --
+    -- -   DELETING - Amazon FSx is disassociating the DNS alias from the file
+    --     system and deleting it.
+    --
+    -- -   DELETE_FAILED - Amazon FSx was unable to disassociate the DNS alias
+    --     from the file system.
+    lifecycle :: Prelude.Maybe AliasLifecycle,
+    -- | The name of the DNS alias. The alias name has to meet the following
+    -- requirements:
+    --
+    -- -   Formatted as a fully-qualified domain name (FQDN),
+    --     @hostname.domain@, for example, @accounting.example.com@.
+    --
+    -- -   Can contain alphanumeric characters, the underscore (_), and the
+    --     hyphen (-).
+    --
+    -- -   Cannot start or end with a hyphen.
+    --
+    -- -   Can start with a numeric.
+    --
+    -- For DNS names, Amazon FSx stores alphabetic characters as lowercase
+    -- letters (a-z), regardless of how you specify them: as uppercase letters,
+    -- lowercase letters, or the corresponding letters in escape codes.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Alias' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lifecycle', 'alias_lifecycle' - Describes the state of the DNS alias.
+--
+-- -   AVAILABLE - The DNS alias is associated with an Amazon FSx file
+--     system.
+--
+-- -   CREATING - Amazon FSx is creating the DNS alias and associating it
+--     with the file system.
+--
+-- -   CREATE_FAILED - Amazon FSx was unable to associate the DNS alias
+--     with the file system.
+--
+-- -   DELETING - Amazon FSx is disassociating the DNS alias from the file
+--     system and deleting it.
+--
+-- -   DELETE_FAILED - Amazon FSx was unable to disassociate the DNS alias
+--     from the file system.
+--
+-- 'name', 'alias_name' - The name of the DNS alias. The alias name has to meet the following
+-- requirements:
+--
+-- -   Formatted as a fully-qualified domain name (FQDN),
+--     @hostname.domain@, for example, @accounting.example.com@.
+--
+-- -   Can contain alphanumeric characters, the underscore (_), and the
+--     hyphen (-).
+--
+-- -   Cannot start or end with a hyphen.
+--
+-- -   Can start with a numeric.
+--
+-- For DNS names, Amazon FSx stores alphabetic characters as lowercase
+-- letters (a-z), regardless of how you specify them: as uppercase letters,
+-- lowercase letters, or the corresponding letters in escape codes.
+newAlias ::
+  Alias
+newAlias =
+  Alias'
+    { lifecycle = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | Describes the state of the DNS alias.
+--
+-- -   AVAILABLE - The DNS alias is associated with an Amazon FSx file
+--     system.
+--
+-- -   CREATING - Amazon FSx is creating the DNS alias and associating it
+--     with the file system.
+--
+-- -   CREATE_FAILED - Amazon FSx was unable to associate the DNS alias
+--     with the file system.
+--
+-- -   DELETING - Amazon FSx is disassociating the DNS alias from the file
+--     system and deleting it.
+--
+-- -   DELETE_FAILED - Amazon FSx was unable to disassociate the DNS alias
+--     from the file system.
+alias_lifecycle :: Lens.Lens' Alias (Prelude.Maybe AliasLifecycle)
+alias_lifecycle = Lens.lens (\Alias' {lifecycle} -> lifecycle) (\s@Alias' {} a -> s {lifecycle = a} :: Alias)
+
+-- | The name of the DNS alias. The alias name has to meet the following
+-- requirements:
+--
+-- -   Formatted as a fully-qualified domain name (FQDN),
+--     @hostname.domain@, for example, @accounting.example.com@.
+--
+-- -   Can contain alphanumeric characters, the underscore (_), and the
+--     hyphen (-).
+--
+-- -   Cannot start or end with a hyphen.
+--
+-- -   Can start with a numeric.
+--
+-- For DNS names, Amazon FSx stores alphabetic characters as lowercase
+-- letters (a-z), regardless of how you specify them: as uppercase letters,
+-- lowercase letters, or the corresponding letters in escape codes.
+alias_name :: Lens.Lens' Alias (Prelude.Maybe Prelude.Text)
+alias_name = Lens.lens (\Alias' {name} -> name) (\s@Alias' {} a -> s {name = a} :: Alias)
+
+instance Data.FromJSON Alias where
+  parseJSON =
+    Data.withObject
+      "Alias"
+      ( \x ->
+          Alias'
+            Prelude.<$> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable Alias where
+  hashWithSalt _salt Alias' {..} =
+    _salt
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Alias where
+  rnf Alias' {..} =
+    Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/FSx/Types/AliasLifecycle.hs b/gen/Amazonka/FSx/Types/AliasLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AliasLifecycle.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.FSx.Types.AliasLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AliasLifecycle
+  ( AliasLifecycle
+      ( ..,
+        AliasLifecycle_AVAILABLE,
+        AliasLifecycle_CREATE_FAILED,
+        AliasLifecycle_CREATING,
+        AliasLifecycle_DELETE_FAILED,
+        AliasLifecycle_DELETING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AliasLifecycle = AliasLifecycle'
+  { fromAliasLifecycle ::
+      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 AliasLifecycle_AVAILABLE :: AliasLifecycle
+pattern AliasLifecycle_AVAILABLE = AliasLifecycle' "AVAILABLE"
+
+pattern AliasLifecycle_CREATE_FAILED :: AliasLifecycle
+pattern AliasLifecycle_CREATE_FAILED = AliasLifecycle' "CREATE_FAILED"
+
+pattern AliasLifecycle_CREATING :: AliasLifecycle
+pattern AliasLifecycle_CREATING = AliasLifecycle' "CREATING"
+
+pattern AliasLifecycle_DELETE_FAILED :: AliasLifecycle
+pattern AliasLifecycle_DELETE_FAILED = AliasLifecycle' "DELETE_FAILED"
+
+pattern AliasLifecycle_DELETING :: AliasLifecycle
+pattern AliasLifecycle_DELETING = AliasLifecycle' "DELETING"
+
+{-# COMPLETE
+  AliasLifecycle_AVAILABLE,
+  AliasLifecycle_CREATE_FAILED,
+  AliasLifecycle_CREATING,
+  AliasLifecycle_DELETE_FAILED,
+  AliasLifecycle_DELETING,
+  AliasLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/AutoExportPolicy.hs b/gen/Amazonka/FSx/Types/AutoExportPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AutoExportPolicy.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.FSx.Types.AutoExportPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AutoExportPolicy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.EventType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a data repository association\'s automatic export policy. The
+-- @AutoExportPolicy@ defines the types of updated objects on the file
+-- system that will be automatically exported to the data repository. As
+-- you create, modify, or delete files, Amazon FSx for Lustre automatically
+-- exports the defined changes asynchronously once your application
+-- finishes modifying the file.
+--
+-- This @AutoExportPolicy@ is supported only for Amazon FSx for Lustre file
+-- systems with the @Persistent_2@ deployment type.
+--
+-- /See:/ 'newAutoExportPolicy' smart constructor.
+data AutoExportPolicy = AutoExportPolicy'
+  { -- | The @AutoExportPolicy@ can have the following event values:
+    --
+    -- -   @NEW@ - New files and directories are automatically exported to the
+    --     data repository as they are added to the file system.
+    --
+    -- -   @CHANGED@ - Changes to files and directories on the file system are
+    --     automatically exported to the data repository.
+    --
+    -- -   @DELETED@ - Files and directories are automatically deleted on the
+    --     data repository when they are deleted on the file system.
+    --
+    -- You can define any combination of event types for your
+    -- @AutoExportPolicy@.
+    events :: Prelude.Maybe [EventType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoExportPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'events', 'autoExportPolicy_events' - The @AutoExportPolicy@ can have the following event values:
+--
+-- -   @NEW@ - New files and directories are automatically exported to the
+--     data repository as they are added to the file system.
+--
+-- -   @CHANGED@ - Changes to files and directories on the file system are
+--     automatically exported to the data repository.
+--
+-- -   @DELETED@ - Files and directories are automatically deleted on the
+--     data repository when they are deleted on the file system.
+--
+-- You can define any combination of event types for your
+-- @AutoExportPolicy@.
+newAutoExportPolicy ::
+  AutoExportPolicy
+newAutoExportPolicy =
+  AutoExportPolicy' {events = Prelude.Nothing}
+
+-- | The @AutoExportPolicy@ can have the following event values:
+--
+-- -   @NEW@ - New files and directories are automatically exported to the
+--     data repository as they are added to the file system.
+--
+-- -   @CHANGED@ - Changes to files and directories on the file system are
+--     automatically exported to the data repository.
+--
+-- -   @DELETED@ - Files and directories are automatically deleted on the
+--     data repository when they are deleted on the file system.
+--
+-- You can define any combination of event types for your
+-- @AutoExportPolicy@.
+autoExportPolicy_events :: Lens.Lens' AutoExportPolicy (Prelude.Maybe [EventType])
+autoExportPolicy_events = Lens.lens (\AutoExportPolicy' {events} -> events) (\s@AutoExportPolicy' {} a -> s {events = a} :: AutoExportPolicy) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AutoExportPolicy where
+  parseJSON =
+    Data.withObject
+      "AutoExportPolicy"
+      ( \x ->
+          AutoExportPolicy'
+            Prelude.<$> (x Data..:? "Events" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable AutoExportPolicy where
+  hashWithSalt _salt AutoExportPolicy' {..} =
+    _salt `Prelude.hashWithSalt` events
+
+instance Prelude.NFData AutoExportPolicy where
+  rnf AutoExportPolicy' {..} = Prelude.rnf events
+
+instance Data.ToJSON AutoExportPolicy where
+  toJSON AutoExportPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Events" Data..=) Prelude.<$> events]
+      )
diff --git a/gen/Amazonka/FSx/Types/AutoImportPolicy.hs b/gen/Amazonka/FSx/Types/AutoImportPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AutoImportPolicy.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.FSx.Types.AutoImportPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AutoImportPolicy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.EventType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the data repository association\'s automatic import policy.
+-- The AutoImportPolicy defines how Amazon FSx keeps your file metadata and
+-- directory listings up to date by importing changes to your Amazon FSx
+-- for Lustre file system as you modify objects in a linked S3 bucket.
+--
+-- The @AutoImportPolicy@ is supported only for Amazon FSx for Lustre file
+-- systems with the @Persistent_2@ deployment type.
+--
+-- /See:/ 'newAutoImportPolicy' smart constructor.
+data AutoImportPolicy = AutoImportPolicy'
+  { -- | The @AutoImportPolicy@ can have the following event values:
+    --
+    -- -   @NEW@ - Amazon FSx automatically imports metadata of files added to
+    --     the linked S3 bucket that do not currently exist in the FSx file
+    --     system.
+    --
+    -- -   @CHANGED@ - Amazon FSx automatically updates file metadata and
+    --     invalidates existing file content on the file system as files change
+    --     in the data repository.
+    --
+    -- -   @DELETED@ - Amazon FSx automatically deletes files on the file
+    --     system as corresponding files are deleted in the data repository.
+    --
+    -- You can define any combination of event types for your
+    -- @AutoImportPolicy@.
+    events :: Prelude.Maybe [EventType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoImportPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'events', 'autoImportPolicy_events' - The @AutoImportPolicy@ can have the following event values:
+--
+-- -   @NEW@ - Amazon FSx automatically imports metadata of files added to
+--     the linked S3 bucket that do not currently exist in the FSx file
+--     system.
+--
+-- -   @CHANGED@ - Amazon FSx automatically updates file metadata and
+--     invalidates existing file content on the file system as files change
+--     in the data repository.
+--
+-- -   @DELETED@ - Amazon FSx automatically deletes files on the file
+--     system as corresponding files are deleted in the data repository.
+--
+-- You can define any combination of event types for your
+-- @AutoImportPolicy@.
+newAutoImportPolicy ::
+  AutoImportPolicy
+newAutoImportPolicy =
+  AutoImportPolicy' {events = Prelude.Nothing}
+
+-- | The @AutoImportPolicy@ can have the following event values:
+--
+-- -   @NEW@ - Amazon FSx automatically imports metadata of files added to
+--     the linked S3 bucket that do not currently exist in the FSx file
+--     system.
+--
+-- -   @CHANGED@ - Amazon FSx automatically updates file metadata and
+--     invalidates existing file content on the file system as files change
+--     in the data repository.
+--
+-- -   @DELETED@ - Amazon FSx automatically deletes files on the file
+--     system as corresponding files are deleted in the data repository.
+--
+-- You can define any combination of event types for your
+-- @AutoImportPolicy@.
+autoImportPolicy_events :: Lens.Lens' AutoImportPolicy (Prelude.Maybe [EventType])
+autoImportPolicy_events = Lens.lens (\AutoImportPolicy' {events} -> events) (\s@AutoImportPolicy' {} a -> s {events = a} :: AutoImportPolicy) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AutoImportPolicy where
+  parseJSON =
+    Data.withObject
+      "AutoImportPolicy"
+      ( \x ->
+          AutoImportPolicy'
+            Prelude.<$> (x Data..:? "Events" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable AutoImportPolicy where
+  hashWithSalt _salt AutoImportPolicy' {..} =
+    _salt `Prelude.hashWithSalt` events
+
+instance Prelude.NFData AutoImportPolicy where
+  rnf AutoImportPolicy' {..} = Prelude.rnf events
+
+instance Data.ToJSON AutoImportPolicy where
+  toJSON AutoImportPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Events" Data..=) Prelude.<$> events]
+      )
diff --git a/gen/Amazonka/FSx/Types/AutoImportPolicyType.hs b/gen/Amazonka/FSx/Types/AutoImportPolicyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/AutoImportPolicyType.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.FSx.Types.AutoImportPolicyType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.AutoImportPolicyType
+  ( AutoImportPolicyType
+      ( ..,
+        AutoImportPolicyType_NEW,
+        AutoImportPolicyType_NEW_CHANGED,
+        AutoImportPolicyType_NEW_CHANGED_DELETED,
+        AutoImportPolicyType_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoImportPolicyType = AutoImportPolicyType'
+  { fromAutoImportPolicyType ::
+      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 AutoImportPolicyType_NEW :: AutoImportPolicyType
+pattern AutoImportPolicyType_NEW = AutoImportPolicyType' "NEW"
+
+pattern AutoImportPolicyType_NEW_CHANGED :: AutoImportPolicyType
+pattern AutoImportPolicyType_NEW_CHANGED = AutoImportPolicyType' "NEW_CHANGED"
+
+pattern AutoImportPolicyType_NEW_CHANGED_DELETED :: AutoImportPolicyType
+pattern AutoImportPolicyType_NEW_CHANGED_DELETED = AutoImportPolicyType' "NEW_CHANGED_DELETED"
+
+pattern AutoImportPolicyType_NONE :: AutoImportPolicyType
+pattern AutoImportPolicyType_NONE = AutoImportPolicyType' "NONE"
+
+{-# COMPLETE
+  AutoImportPolicyType_NEW,
+  AutoImportPolicyType_NEW_CHANGED,
+  AutoImportPolicyType_NEW_CHANGED_DELETED,
+  AutoImportPolicyType_NONE,
+  AutoImportPolicyType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/Backup.hs b/gen/Amazonka/FSx/Types/Backup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Backup.hs
@@ -0,0 +1,336 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.Backup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.Backup where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.ActiveDirectoryBackupAttributes
+import Amazonka.FSx.Types.BackupFailureDetails
+import Amazonka.FSx.Types.BackupLifecycle
+import Amazonka.FSx.Types.BackupType
+import Amazonka.FSx.Types.FileSystem
+import Amazonka.FSx.Types.ResourceType
+import Amazonka.FSx.Types.Tag
+import Amazonka.FSx.Types.Volume
+import qualified Amazonka.Prelude as Prelude
+
+-- | A backup of an Amazon FSx for Windows File Server, Amazon FSx for Lustre
+-- file system, Amazon FSx for NetApp ONTAP volume, or Amazon FSx for
+-- OpenZFS file system.
+--
+-- /See:/ 'newBackup' smart constructor.
+data Backup = Backup'
+  { -- | The configuration of the self-managed Microsoft Active Directory
+    -- directory to which the Windows File Server instance is joined.
+    directoryInformation :: Prelude.Maybe ActiveDirectoryBackupAttributes,
+    -- | Details explaining any failures that occurred when creating a backup.
+    failureDetails :: Prelude.Maybe BackupFailureDetails,
+    -- | The ID of the Key Management Service (KMS) key used to encrypt the
+    -- backup of the Amazon FSx file system\'s data at rest.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    ownerId :: Prelude.Maybe Prelude.Text,
+    progressPercent :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Resource Name (ARN) for the backup resource.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the resource type that\'s backed up.
+    resourceType :: Prelude.Maybe ResourceType,
+    sourceBackupId :: Prelude.Maybe Prelude.Text,
+    -- | The source Region of the backup. Specifies the Region from where this
+    -- backup is copied.
+    sourceBackupRegion :: Prelude.Maybe Prelude.Text,
+    -- | The tags associated with a particular file system.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    volume :: Prelude.Maybe Volume,
+    -- | The ID of the backup.
+    backupId :: Prelude.Text,
+    -- | The lifecycle status of the backup.
+    --
+    -- -   @AVAILABLE@ - The backup is fully available.
+    --
+    -- -   @PENDING@ - For user-initiated backups on Lustre file systems only;
+    --     Amazon FSx hasn\'t started creating the backup.
+    --
+    -- -   @CREATING@ - Amazon FSx is creating the backup.
+    --
+    -- -   @TRANSFERRING@ - For user-initiated backups on Lustre file systems
+    --     only; Amazon FSx is transferring the backup to Amazon S3.
+    --
+    -- -   @COPYING@ - Amazon FSx is copying the backup.
+    --
+    -- -   @DELETED@ - Amazon FSx deleted the backup and it\'s no longer
+    --     available.
+    --
+    -- -   @FAILED@ - Amazon FSx couldn\'t finish the backup.
+    lifecycle :: BackupLifecycle,
+    -- | The type of the file-system backup.
+    type' :: BackupType,
+    -- | The time when a particular backup was created.
+    creationTime :: Data.POSIX,
+    -- | The metadata of the file system associated with the backup. This
+    -- metadata is persisted even if the file system is deleted.
+    fileSystem :: FileSystem
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Backup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'directoryInformation', 'backup_directoryInformation' - The configuration of the self-managed Microsoft Active Directory
+-- directory to which the Windows File Server instance is joined.
+--
+-- 'failureDetails', 'backup_failureDetails' - Details explaining any failures that occurred when creating a backup.
+--
+-- 'kmsKeyId', 'backup_kmsKeyId' - The ID of the Key Management Service (KMS) key used to encrypt the
+-- backup of the Amazon FSx file system\'s data at rest.
+--
+-- 'ownerId', 'backup_ownerId' - Undocumented member.
+--
+-- 'progressPercent', 'backup_progressPercent' - Undocumented member.
+--
+-- 'resourceARN', 'backup_resourceARN' - The Amazon Resource Name (ARN) for the backup resource.
+--
+-- 'resourceType', 'backup_resourceType' - Specifies the resource type that\'s backed up.
+--
+-- 'sourceBackupId', 'backup_sourceBackupId' - Undocumented member.
+--
+-- 'sourceBackupRegion', 'backup_sourceBackupRegion' - The source Region of the backup. Specifies the Region from where this
+-- backup is copied.
+--
+-- 'tags', 'backup_tags' - The tags associated with a particular file system.
+--
+-- 'volume', 'backup_volume' - Undocumented member.
+--
+-- 'backupId', 'backup_backupId' - The ID of the backup.
+--
+-- 'lifecycle', 'backup_lifecycle' - The lifecycle status of the backup.
+--
+-- -   @AVAILABLE@ - The backup is fully available.
+--
+-- -   @PENDING@ - For user-initiated backups on Lustre file systems only;
+--     Amazon FSx hasn\'t started creating the backup.
+--
+-- -   @CREATING@ - Amazon FSx is creating the backup.
+--
+-- -   @TRANSFERRING@ - For user-initiated backups on Lustre file systems
+--     only; Amazon FSx is transferring the backup to Amazon S3.
+--
+-- -   @COPYING@ - Amazon FSx is copying the backup.
+--
+-- -   @DELETED@ - Amazon FSx deleted the backup and it\'s no longer
+--     available.
+--
+-- -   @FAILED@ - Amazon FSx couldn\'t finish the backup.
+--
+-- 'type'', 'backup_type' - The type of the file-system backup.
+--
+-- 'creationTime', 'backup_creationTime' - The time when a particular backup was created.
+--
+-- 'fileSystem', 'backup_fileSystem' - The metadata of the file system associated with the backup. This
+-- metadata is persisted even if the file system is deleted.
+newBackup ::
+  -- | 'backupId'
+  Prelude.Text ->
+  -- | 'lifecycle'
+  BackupLifecycle ->
+  -- | 'type''
+  BackupType ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'fileSystem'
+  FileSystem ->
+  Backup
+newBackup
+  pBackupId_
+  pLifecycle_
+  pType_
+  pCreationTime_
+  pFileSystem_ =
+    Backup'
+      { directoryInformation = Prelude.Nothing,
+        failureDetails = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        ownerId = Prelude.Nothing,
+        progressPercent = Prelude.Nothing,
+        resourceARN = Prelude.Nothing,
+        resourceType = Prelude.Nothing,
+        sourceBackupId = Prelude.Nothing,
+        sourceBackupRegion = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        volume = Prelude.Nothing,
+        backupId = pBackupId_,
+        lifecycle = pLifecycle_,
+        type' = pType_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        fileSystem = pFileSystem_
+      }
+
+-- | The configuration of the self-managed Microsoft Active Directory
+-- directory to which the Windows File Server instance is joined.
+backup_directoryInformation :: Lens.Lens' Backup (Prelude.Maybe ActiveDirectoryBackupAttributes)
+backup_directoryInformation = Lens.lens (\Backup' {directoryInformation} -> directoryInformation) (\s@Backup' {} a -> s {directoryInformation = a} :: Backup)
+
+-- | Details explaining any failures that occurred when creating a backup.
+backup_failureDetails :: Lens.Lens' Backup (Prelude.Maybe BackupFailureDetails)
+backup_failureDetails = Lens.lens (\Backup' {failureDetails} -> failureDetails) (\s@Backup' {} a -> s {failureDetails = a} :: Backup)
+
+-- | The ID of the Key Management Service (KMS) key used to encrypt the
+-- backup of the Amazon FSx file system\'s data at rest.
+backup_kmsKeyId :: Lens.Lens' Backup (Prelude.Maybe Prelude.Text)
+backup_kmsKeyId = Lens.lens (\Backup' {kmsKeyId} -> kmsKeyId) (\s@Backup' {} a -> s {kmsKeyId = a} :: Backup)
+
+-- | Undocumented member.
+backup_ownerId :: Lens.Lens' Backup (Prelude.Maybe Prelude.Text)
+backup_ownerId = Lens.lens (\Backup' {ownerId} -> ownerId) (\s@Backup' {} a -> s {ownerId = a} :: Backup)
+
+-- | Undocumented member.
+backup_progressPercent :: Lens.Lens' Backup (Prelude.Maybe Prelude.Natural)
+backup_progressPercent = Lens.lens (\Backup' {progressPercent} -> progressPercent) (\s@Backup' {} a -> s {progressPercent = a} :: Backup)
+
+-- | The Amazon Resource Name (ARN) for the backup resource.
+backup_resourceARN :: Lens.Lens' Backup (Prelude.Maybe Prelude.Text)
+backup_resourceARN = Lens.lens (\Backup' {resourceARN} -> resourceARN) (\s@Backup' {} a -> s {resourceARN = a} :: Backup)
+
+-- | Specifies the resource type that\'s backed up.
+backup_resourceType :: Lens.Lens' Backup (Prelude.Maybe ResourceType)
+backup_resourceType = Lens.lens (\Backup' {resourceType} -> resourceType) (\s@Backup' {} a -> s {resourceType = a} :: Backup)
+
+-- | Undocumented member.
+backup_sourceBackupId :: Lens.Lens' Backup (Prelude.Maybe Prelude.Text)
+backup_sourceBackupId = Lens.lens (\Backup' {sourceBackupId} -> sourceBackupId) (\s@Backup' {} a -> s {sourceBackupId = a} :: Backup)
+
+-- | The source Region of the backup. Specifies the Region from where this
+-- backup is copied.
+backup_sourceBackupRegion :: Lens.Lens' Backup (Prelude.Maybe Prelude.Text)
+backup_sourceBackupRegion = Lens.lens (\Backup' {sourceBackupRegion} -> sourceBackupRegion) (\s@Backup' {} a -> s {sourceBackupRegion = a} :: Backup)
+
+-- | The tags associated with a particular file system.
+backup_tags :: Lens.Lens' Backup (Prelude.Maybe (Prelude.NonEmpty Tag))
+backup_tags = Lens.lens (\Backup' {tags} -> tags) (\s@Backup' {} a -> s {tags = a} :: Backup) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+backup_volume :: Lens.Lens' Backup (Prelude.Maybe Volume)
+backup_volume = Lens.lens (\Backup' {volume} -> volume) (\s@Backup' {} a -> s {volume = a} :: Backup)
+
+-- | The ID of the backup.
+backup_backupId :: Lens.Lens' Backup Prelude.Text
+backup_backupId = Lens.lens (\Backup' {backupId} -> backupId) (\s@Backup' {} a -> s {backupId = a} :: Backup)
+
+-- | The lifecycle status of the backup.
+--
+-- -   @AVAILABLE@ - The backup is fully available.
+--
+-- -   @PENDING@ - For user-initiated backups on Lustre file systems only;
+--     Amazon FSx hasn\'t started creating the backup.
+--
+-- -   @CREATING@ - Amazon FSx is creating the backup.
+--
+-- -   @TRANSFERRING@ - For user-initiated backups on Lustre file systems
+--     only; Amazon FSx is transferring the backup to Amazon S3.
+--
+-- -   @COPYING@ - Amazon FSx is copying the backup.
+--
+-- -   @DELETED@ - Amazon FSx deleted the backup and it\'s no longer
+--     available.
+--
+-- -   @FAILED@ - Amazon FSx couldn\'t finish the backup.
+backup_lifecycle :: Lens.Lens' Backup BackupLifecycle
+backup_lifecycle = Lens.lens (\Backup' {lifecycle} -> lifecycle) (\s@Backup' {} a -> s {lifecycle = a} :: Backup)
+
+-- | The type of the file-system backup.
+backup_type :: Lens.Lens' Backup BackupType
+backup_type = Lens.lens (\Backup' {type'} -> type') (\s@Backup' {} a -> s {type' = a} :: Backup)
+
+-- | The time when a particular backup was created.
+backup_creationTime :: Lens.Lens' Backup Prelude.UTCTime
+backup_creationTime = Lens.lens (\Backup' {creationTime} -> creationTime) (\s@Backup' {} a -> s {creationTime = a} :: Backup) Prelude.. Data._Time
+
+-- | The metadata of the file system associated with the backup. This
+-- metadata is persisted even if the file system is deleted.
+backup_fileSystem :: Lens.Lens' Backup FileSystem
+backup_fileSystem = Lens.lens (\Backup' {fileSystem} -> fileSystem) (\s@Backup' {} a -> s {fileSystem = a} :: Backup)
+
+instance Data.FromJSON Backup where
+  parseJSON =
+    Data.withObject
+      "Backup"
+      ( \x ->
+          Backup'
+            Prelude.<$> (x Data..:? "DirectoryInformation")
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "OwnerId")
+            Prelude.<*> (x Data..:? "ProgressPercent")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "ResourceType")
+            Prelude.<*> (x Data..:? "SourceBackupId")
+            Prelude.<*> (x Data..:? "SourceBackupRegion")
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..:? "Volume")
+            Prelude.<*> (x Data..: "BackupId")
+            Prelude.<*> (x Data..: "Lifecycle")
+            Prelude.<*> (x Data..: "Type")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "FileSystem")
+      )
+
+instance Prelude.Hashable Backup where
+  hashWithSalt _salt Backup' {..} =
+    _salt
+      `Prelude.hashWithSalt` directoryInformation
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` ownerId
+      `Prelude.hashWithSalt` progressPercent
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` sourceBackupId
+      `Prelude.hashWithSalt` sourceBackupRegion
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` volume
+      `Prelude.hashWithSalt` backupId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` fileSystem
+
+instance Prelude.NFData Backup where
+  rnf Backup' {..} =
+    Prelude.rnf directoryInformation
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf ownerId
+      `Prelude.seq` Prelude.rnf progressPercent
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf sourceBackupId
+      `Prelude.seq` Prelude.rnf sourceBackupRegion
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf volume
+      `Prelude.seq` Prelude.rnf backupId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf fileSystem
diff --git a/gen/Amazonka/FSx/Types/BackupFailureDetails.hs b/gen/Amazonka/FSx/Types/BackupFailureDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/BackupFailureDetails.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.BackupFailureDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.BackupFailureDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If backup creation fails, this structure contains the details of that
+-- failure.
+--
+-- /See:/ 'newBackupFailureDetails' smart constructor.
+data BackupFailureDetails = BackupFailureDetails'
+  { -- | A message describing the backup-creation failure.
+    message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackupFailureDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'backupFailureDetails_message' - A message describing the backup-creation failure.
+newBackupFailureDetails ::
+  BackupFailureDetails
+newBackupFailureDetails =
+  BackupFailureDetails' {message = Prelude.Nothing}
+
+-- | A message describing the backup-creation failure.
+backupFailureDetails_message :: Lens.Lens' BackupFailureDetails (Prelude.Maybe Prelude.Text)
+backupFailureDetails_message = Lens.lens (\BackupFailureDetails' {message} -> message) (\s@BackupFailureDetails' {} a -> s {message = a} :: BackupFailureDetails)
+
+instance Data.FromJSON BackupFailureDetails where
+  parseJSON =
+    Data.withObject
+      "BackupFailureDetails"
+      ( \x ->
+          BackupFailureDetails'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance Prelude.Hashable BackupFailureDetails where
+  hashWithSalt _salt BackupFailureDetails' {..} =
+    _salt `Prelude.hashWithSalt` message
+
+instance Prelude.NFData BackupFailureDetails where
+  rnf BackupFailureDetails' {..} = Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/BackupLifecycle.hs b/gen/Amazonka/FSx/Types/BackupLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/BackupLifecycle.hs
@@ -0,0 +1,114 @@
+{-# 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.FSx.Types.BackupLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.BackupLifecycle
+  ( BackupLifecycle
+      ( ..,
+        BackupLifecycle_AVAILABLE,
+        BackupLifecycle_COPYING,
+        BackupLifecycle_CREATING,
+        BackupLifecycle_DELETED,
+        BackupLifecycle_FAILED,
+        BackupLifecycle_PENDING,
+        BackupLifecycle_TRANSFERRING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The lifecycle status of the backup.
+--
+-- -   @AVAILABLE@ - The backup is fully available.
+--
+-- -   @PENDING@ - For user-initiated backups on Lustre file systems only;
+--     Amazon FSx hasn\'t started creating the backup.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new user-initiated backup.
+--
+-- -   @TRANSFERRING@ - For user-initiated backups on Lustre file systems
+--     only; Amazon FSx is backing up the file system.
+--
+-- -   @COPYING@ - Amazon FSx is copying the backup.
+--
+-- -   @DELETED@ - Amazon FSx deleted the backup and it\'s no longer
+--     available.
+--
+-- -   @FAILED@ - Amazon FSx couldn\'t finish the backup.
+newtype BackupLifecycle = BackupLifecycle'
+  { fromBackupLifecycle ::
+      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 BackupLifecycle_AVAILABLE :: BackupLifecycle
+pattern BackupLifecycle_AVAILABLE = BackupLifecycle' "AVAILABLE"
+
+pattern BackupLifecycle_COPYING :: BackupLifecycle
+pattern BackupLifecycle_COPYING = BackupLifecycle' "COPYING"
+
+pattern BackupLifecycle_CREATING :: BackupLifecycle
+pattern BackupLifecycle_CREATING = BackupLifecycle' "CREATING"
+
+pattern BackupLifecycle_DELETED :: BackupLifecycle
+pattern BackupLifecycle_DELETED = BackupLifecycle' "DELETED"
+
+pattern BackupLifecycle_FAILED :: BackupLifecycle
+pattern BackupLifecycle_FAILED = BackupLifecycle' "FAILED"
+
+pattern BackupLifecycle_PENDING :: BackupLifecycle
+pattern BackupLifecycle_PENDING = BackupLifecycle' "PENDING"
+
+pattern BackupLifecycle_TRANSFERRING :: BackupLifecycle
+pattern BackupLifecycle_TRANSFERRING = BackupLifecycle' "TRANSFERRING"
+
+{-# COMPLETE
+  BackupLifecycle_AVAILABLE,
+  BackupLifecycle_COPYING,
+  BackupLifecycle_CREATING,
+  BackupLifecycle_DELETED,
+  BackupLifecycle_FAILED,
+  BackupLifecycle_PENDING,
+  BackupLifecycle_TRANSFERRING,
+  BackupLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/BackupType.hs b/gen/Amazonka/FSx/Types/BackupType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/BackupType.hs
@@ -0,0 +1,77 @@
+{-# 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.FSx.Types.BackupType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.BackupType
+  ( BackupType
+      ( ..,
+        BackupType_AUTOMATIC,
+        BackupType_AWS_BACKUP,
+        BackupType_USER_INITIATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type of the backup.
+newtype BackupType = BackupType'
+  { fromBackupType ::
+      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 BackupType_AUTOMATIC :: BackupType
+pattern BackupType_AUTOMATIC = BackupType' "AUTOMATIC"
+
+pattern BackupType_AWS_BACKUP :: BackupType
+pattern BackupType_AWS_BACKUP = BackupType' "AWS_BACKUP"
+
+pattern BackupType_USER_INITIATED :: BackupType
+pattern BackupType_USER_INITIATED = BackupType' "USER_INITIATED"
+
+{-# COMPLETE
+  BackupType_AUTOMATIC,
+  BackupType_AWS_BACKUP,
+  BackupType_USER_INITIATED,
+  BackupType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/CompletionReport.hs b/gen/Amazonka/FSx/Types/CompletionReport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CompletionReport.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CompletionReport
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CompletionReport where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.ReportFormat
+import Amazonka.FSx.Types.ReportScope
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides a report detailing the data repository task results of the
+-- files processed that match the criteria specified in the report @Scope@
+-- parameter. FSx delivers the report to the file system\'s linked data
+-- repository in Amazon S3, using the path specified in the report @Path@
+-- parameter. You can specify whether or not a report gets generated for a
+-- task using the @Enabled@ parameter.
+--
+-- /See:/ 'newCompletionReport' smart constructor.
+data CompletionReport = CompletionReport'
+  { -- | Required if @Enabled@ is set to @true@. Specifies the format of the
+    -- @CompletionReport@. @REPORT_CSV_20191124@ is the only format currently
+    -- supported. When @Format@ is set to @REPORT_CSV_20191124@, the
+    -- @CompletionReport@ is provided in CSV format, and is delivered to
+    -- @{path}\/task-{id}\/failures.csv@.
+    format :: Prelude.Maybe ReportFormat,
+    -- | Required if @Enabled@ is set to @true@. Specifies the location of the
+    -- report on the file system\'s linked S3 data repository. An absolute path
+    -- that defines where the completion report will be stored in the
+    -- destination location. The @Path@ you provide must be located within the
+    -- file system’s ExportPath. An example @Path@ value is
+    -- \"s3:\/\/myBucket\/myExportPath\/optionalPrefix\". The report provides
+    -- the following information for each file in the report: FilePath,
+    -- FileStatus, and ErrorCode. To learn more about a file system\'s
+    -- @ExportPath@, see .
+    path :: Prelude.Maybe Prelude.Text,
+    -- | Required if @Enabled@ is set to @true@. Specifies the scope of the
+    -- @CompletionReport@; @FAILED_FILES_ONLY@ is the only scope currently
+    -- supported. When @Scope@ is set to @FAILED_FILES_ONLY@, the
+    -- @CompletionReport@ only contains information about files that the data
+    -- repository task failed to process.
+    scope :: Prelude.Maybe ReportScope,
+    -- | Set @Enabled@ to @True@ to generate a @CompletionReport@ when the task
+    -- completes. If set to @true@, then you need to provide a report @Scope@,
+    -- @Path@, and @Format@. Set @Enabled@ to @False@ if you do not want a
+    -- @CompletionReport@ generated when the task completes.
+    enabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CompletionReport' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'completionReport_format' - Required if @Enabled@ is set to @true@. Specifies the format of the
+-- @CompletionReport@. @REPORT_CSV_20191124@ is the only format currently
+-- supported. When @Format@ is set to @REPORT_CSV_20191124@, the
+-- @CompletionReport@ is provided in CSV format, and is delivered to
+-- @{path}\/task-{id}\/failures.csv@.
+--
+-- 'path', 'completionReport_path' - Required if @Enabled@ is set to @true@. Specifies the location of the
+-- report on the file system\'s linked S3 data repository. An absolute path
+-- that defines where the completion report will be stored in the
+-- destination location. The @Path@ you provide must be located within the
+-- file system’s ExportPath. An example @Path@ value is
+-- \"s3:\/\/myBucket\/myExportPath\/optionalPrefix\". The report provides
+-- the following information for each file in the report: FilePath,
+-- FileStatus, and ErrorCode. To learn more about a file system\'s
+-- @ExportPath@, see .
+--
+-- 'scope', 'completionReport_scope' - Required if @Enabled@ is set to @true@. Specifies the scope of the
+-- @CompletionReport@; @FAILED_FILES_ONLY@ is the only scope currently
+-- supported. When @Scope@ is set to @FAILED_FILES_ONLY@, the
+-- @CompletionReport@ only contains information about files that the data
+-- repository task failed to process.
+--
+-- 'enabled', 'completionReport_enabled' - Set @Enabled@ to @True@ to generate a @CompletionReport@ when the task
+-- completes. If set to @true@, then you need to provide a report @Scope@,
+-- @Path@, and @Format@. Set @Enabled@ to @False@ if you do not want a
+-- @CompletionReport@ generated when the task completes.
+newCompletionReport ::
+  -- | 'enabled'
+  Prelude.Bool ->
+  CompletionReport
+newCompletionReport pEnabled_ =
+  CompletionReport'
+    { format = Prelude.Nothing,
+      path = Prelude.Nothing,
+      scope = Prelude.Nothing,
+      enabled = pEnabled_
+    }
+
+-- | Required if @Enabled@ is set to @true@. Specifies the format of the
+-- @CompletionReport@. @REPORT_CSV_20191124@ is the only format currently
+-- supported. When @Format@ is set to @REPORT_CSV_20191124@, the
+-- @CompletionReport@ is provided in CSV format, and is delivered to
+-- @{path}\/task-{id}\/failures.csv@.
+completionReport_format :: Lens.Lens' CompletionReport (Prelude.Maybe ReportFormat)
+completionReport_format = Lens.lens (\CompletionReport' {format} -> format) (\s@CompletionReport' {} a -> s {format = a} :: CompletionReport)
+
+-- | Required if @Enabled@ is set to @true@. Specifies the location of the
+-- report on the file system\'s linked S3 data repository. An absolute path
+-- that defines where the completion report will be stored in the
+-- destination location. The @Path@ you provide must be located within the
+-- file system’s ExportPath. An example @Path@ value is
+-- \"s3:\/\/myBucket\/myExportPath\/optionalPrefix\". The report provides
+-- the following information for each file in the report: FilePath,
+-- FileStatus, and ErrorCode. To learn more about a file system\'s
+-- @ExportPath@, see .
+completionReport_path :: Lens.Lens' CompletionReport (Prelude.Maybe Prelude.Text)
+completionReport_path = Lens.lens (\CompletionReport' {path} -> path) (\s@CompletionReport' {} a -> s {path = a} :: CompletionReport)
+
+-- | Required if @Enabled@ is set to @true@. Specifies the scope of the
+-- @CompletionReport@; @FAILED_FILES_ONLY@ is the only scope currently
+-- supported. When @Scope@ is set to @FAILED_FILES_ONLY@, the
+-- @CompletionReport@ only contains information about files that the data
+-- repository task failed to process.
+completionReport_scope :: Lens.Lens' CompletionReport (Prelude.Maybe ReportScope)
+completionReport_scope = Lens.lens (\CompletionReport' {scope} -> scope) (\s@CompletionReport' {} a -> s {scope = a} :: CompletionReport)
+
+-- | Set @Enabled@ to @True@ to generate a @CompletionReport@ when the task
+-- completes. If set to @true@, then you need to provide a report @Scope@,
+-- @Path@, and @Format@. Set @Enabled@ to @False@ if you do not want a
+-- @CompletionReport@ generated when the task completes.
+completionReport_enabled :: Lens.Lens' CompletionReport Prelude.Bool
+completionReport_enabled = Lens.lens (\CompletionReport' {enabled} -> enabled) (\s@CompletionReport' {} a -> s {enabled = a} :: CompletionReport)
+
+instance Data.FromJSON CompletionReport where
+  parseJSON =
+    Data.withObject
+      "CompletionReport"
+      ( \x ->
+          CompletionReport'
+            Prelude.<$> (x Data..:? "Format")
+            Prelude.<*> (x Data..:? "Path")
+            Prelude.<*> (x Data..:? "Scope")
+            Prelude.<*> (x Data..: "Enabled")
+      )
+
+instance Prelude.Hashable CompletionReport where
+  hashWithSalt _salt CompletionReport' {..} =
+    _salt
+      `Prelude.hashWithSalt` format
+      `Prelude.hashWithSalt` path
+      `Prelude.hashWithSalt` scope
+      `Prelude.hashWithSalt` enabled
+
+instance Prelude.NFData CompletionReport where
+  rnf CompletionReport' {..} =
+    Prelude.rnf format
+      `Prelude.seq` Prelude.rnf path
+      `Prelude.seq` Prelude.rnf scope
+      `Prelude.seq` Prelude.rnf enabled
+
+instance Data.ToJSON CompletionReport where
+  toJSON CompletionReport' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Format" Data..=) Prelude.<$> format,
+            ("Path" Data..=) Prelude.<$> path,
+            ("Scope" Data..=) Prelude.<$> scope,
+            Prelude.Just ("Enabled" Data..= enabled)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateFileCacheLustreConfiguration.hs b/gen/Amazonka/FSx/Types/CreateFileCacheLustreConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateFileCacheLustreConfiguration.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.FSx.Types.CreateFileCacheLustreConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateFileCacheLustreConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FileCacheLustreDeploymentType
+import Amazonka.FSx.Types.FileCacheLustreMetadataConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon File Cache configuration for the cache that you are creating.
+--
+-- /See:/ 'newCreateFileCacheLustreConfiguration' smart constructor.
+data CreateFileCacheLustreConfiguration = CreateFileCacheLustreConfiguration'
+  { weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Provisions the amount of read and write throughput for each 1 tebibyte
+    -- (TiB) of cache storage capacity, in MB\/s\/TiB. The only supported value
+    -- is @1000@.
+    perUnitStorageThroughput :: Prelude.Natural,
+    -- | Specifies the cache deployment type, which must be @CACHE_1@.
+    deploymentType :: FileCacheLustreDeploymentType,
+    -- | The configuration for a Lustre MDT (Metadata Target) storage volume.
+    metadataConfiguration :: FileCacheLustreMetadataConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileCacheLustreConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'weeklyMaintenanceStartTime', 'createFileCacheLustreConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+--
+-- 'perUnitStorageThroughput', 'createFileCacheLustreConfiguration_perUnitStorageThroughput' - Provisions the amount of read and write throughput for each 1 tebibyte
+-- (TiB) of cache storage capacity, in MB\/s\/TiB. The only supported value
+-- is @1000@.
+--
+-- 'deploymentType', 'createFileCacheLustreConfiguration_deploymentType' - Specifies the cache deployment type, which must be @CACHE_1@.
+--
+-- 'metadataConfiguration', 'createFileCacheLustreConfiguration_metadataConfiguration' - The configuration for a Lustre MDT (Metadata Target) storage volume.
+newCreateFileCacheLustreConfiguration ::
+  -- | 'perUnitStorageThroughput'
+  Prelude.Natural ->
+  -- | 'deploymentType'
+  FileCacheLustreDeploymentType ->
+  -- | 'metadataConfiguration'
+  FileCacheLustreMetadataConfiguration ->
+  CreateFileCacheLustreConfiguration
+newCreateFileCacheLustreConfiguration
+  pPerUnitStorageThroughput_
+  pDeploymentType_
+  pMetadataConfiguration_ =
+    CreateFileCacheLustreConfiguration'
+      { weeklyMaintenanceStartTime =
+          Prelude.Nothing,
+        perUnitStorageThroughput =
+          pPerUnitStorageThroughput_,
+        deploymentType = pDeploymentType_,
+        metadataConfiguration =
+          pMetadataConfiguration_
+      }
+
+-- | Undocumented member.
+createFileCacheLustreConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileCacheLustreConfiguration (Prelude.Maybe Prelude.Text)
+createFileCacheLustreConfiguration_weeklyMaintenanceStartTime = Lens.lens (\CreateFileCacheLustreConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileCacheLustreConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: CreateFileCacheLustreConfiguration)
+
+-- | Provisions the amount of read and write throughput for each 1 tebibyte
+-- (TiB) of cache storage capacity, in MB\/s\/TiB. The only supported value
+-- is @1000@.
+createFileCacheLustreConfiguration_perUnitStorageThroughput :: Lens.Lens' CreateFileCacheLustreConfiguration Prelude.Natural
+createFileCacheLustreConfiguration_perUnitStorageThroughput = Lens.lens (\CreateFileCacheLustreConfiguration' {perUnitStorageThroughput} -> perUnitStorageThroughput) (\s@CreateFileCacheLustreConfiguration' {} a -> s {perUnitStorageThroughput = a} :: CreateFileCacheLustreConfiguration)
+
+-- | Specifies the cache deployment type, which must be @CACHE_1@.
+createFileCacheLustreConfiguration_deploymentType :: Lens.Lens' CreateFileCacheLustreConfiguration FileCacheLustreDeploymentType
+createFileCacheLustreConfiguration_deploymentType = Lens.lens (\CreateFileCacheLustreConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileCacheLustreConfiguration' {} a -> s {deploymentType = a} :: CreateFileCacheLustreConfiguration)
+
+-- | The configuration for a Lustre MDT (Metadata Target) storage volume.
+createFileCacheLustreConfiguration_metadataConfiguration :: Lens.Lens' CreateFileCacheLustreConfiguration FileCacheLustreMetadataConfiguration
+createFileCacheLustreConfiguration_metadataConfiguration = Lens.lens (\CreateFileCacheLustreConfiguration' {metadataConfiguration} -> metadataConfiguration) (\s@CreateFileCacheLustreConfiguration' {} a -> s {metadataConfiguration = a} :: CreateFileCacheLustreConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateFileCacheLustreConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateFileCacheLustreConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+        `Prelude.hashWithSalt` perUnitStorageThroughput
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` metadataConfiguration
+
+instance
+  Prelude.NFData
+    CreateFileCacheLustreConfiguration
+  where
+  rnf CreateFileCacheLustreConfiguration' {..} =
+    Prelude.rnf weeklyMaintenanceStartTime
+      `Prelude.seq` Prelude.rnf perUnitStorageThroughput
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf metadataConfiguration
+
+instance
+  Data.ToJSON
+    CreateFileCacheLustreConfiguration
+  where
+  toJSON CreateFileCacheLustreConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime,
+            Prelude.Just
+              ( "PerUnitStorageThroughput"
+                  Data..= perUnitStorageThroughput
+              ),
+            Prelude.Just
+              ("DeploymentType" Data..= deploymentType),
+            Prelude.Just
+              ( "MetadataConfiguration"
+                  Data..= metadataConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateFileSystemLustreConfiguration.hs b/gen/Amazonka/FSx/Types/CreateFileSystemLustreConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateFileSystemLustreConfiguration.hs
@@ -0,0 +1,766 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CreateFileSystemLustreConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateFileSystemLustreConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AutoImportPolicyType
+import Amazonka.FSx.Types.DataCompressionType
+import Amazonka.FSx.Types.DriveCacheType
+import Amazonka.FSx.Types.LustreDeploymentType
+import Amazonka.FSx.Types.LustreLogCreateConfiguration
+import Amazonka.FSx.Types.LustreRootSquashConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Lustre configuration for the file system being created.
+--
+-- The following parameters are not supported for file systems with the
+-- @Persistent_2@ deployment type. Instead, use
+-- @CreateDataRepositoryAssociation@ to create a data repository
+-- association to link your Lustre file system to a data repository.
+--
+-- -   @AutoImportPolicy@
+--
+-- -   @ExportPath@
+--
+-- -   @ImportedChunkSize@
+--
+-- -   @ImportPath@
+--
+-- /See:/ 'newCreateFileSystemLustreConfiguration' smart constructor.
+data CreateFileSystemLustreConfiguration = CreateFileSystemLustreConfiguration'
+  { -- | (Optional) Available with @Scratch@ and @Persistent_1@ deployment types.
+    -- When you create your file system, your existing S3 objects appear as
+    -- file and directory listings. Use this property to choose how Amazon FSx
+    -- keeps your file and directory listings up to date as you add or modify
+    -- objects in your linked S3 bucket. @AutoImportPolicy@ can have the
+    -- following values:
+    --
+    -- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+    --     and directory listings from the linked S3 bucket when the file
+    --     system is created. FSx does not update file and directory listings
+    --     for any new or changed objects after choosing this option.
+    --
+    -- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+    --     listings of any new objects added to the linked S3 bucket that do
+    --     not currently exist in the FSx file system.
+    --
+    -- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+    --     file and directory listings of any new objects added to the S3
+    --     bucket and any existing objects that are changed in the S3 bucket
+    --     after you choose this option.
+    --
+    -- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+    --     imports file and directory listings of any new objects added to the
+    --     S3 bucket, any existing objects that are changed in the S3 bucket,
+    --     and any objects that were deleted in the S3 bucket.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/older-deployment-types.html#legacy-auto-import-from-s3 Automatically import updates from your S3 bucket>.
+    --
+    -- This parameter is not supported for file systems with the @Persistent_2@
+    -- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+    -- create a data repository association to link your Lustre file system to
+    -- a data repository.
+    autoImportPolicy :: Prelude.Maybe AutoImportPolicyType,
+    automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | (Optional) Not available for use with file systems that are linked to a
+    -- data repository. A boolean flag indicating whether tags for the file
+    -- system should be copied to backups. The default value is false. If
+    -- @CopyTagsToBackups@ is set to true, all file system tags are copied to
+    -- all automatic and user-initiated backups when the user doesn\'t specify
+    -- any backup-specific tags. If @CopyTagsToBackups@ is set to true and you
+    -- specify one or more backup tags, only the specified tags are copied to
+    -- backups. If you specify one or more tags when creating a user-initiated
+    -- backup, no tags are copied from the file system, regardless of this
+    -- value.
+    --
+    -- (Default = @false@)
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html Working with backups>
+    -- in the /Amazon FSx for Lustre User Guide/.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Sets the data compression configuration for the file system.
+    -- @DataCompressionType@ can have the following values:
+    --
+    -- -   @NONE@ - (Default) Data compression is turned off when the file
+    --     system is created.
+    --
+    -- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>
+    -- in the /Amazon FSx for Lustre User Guide/.
+    dataCompressionType :: Prelude.Maybe DataCompressionType,
+    -- | (Optional) Choose @SCRATCH_1@ and @SCRATCH_2@ deployment types when you
+    -- need temporary storage and shorter-term processing of data. The
+    -- @SCRATCH_2@ deployment type provides in-transit encryption of data and
+    -- higher burst throughput capacity than @SCRATCH_1@.
+    --
+    -- Choose @PERSISTENT_1@ for longer-term storage and for throughput-focused
+    -- workloads that aren’t latency-sensitive. @PERSISTENT_1@ supports
+    -- encryption of data in transit, and is available in all Amazon Web
+    -- Services Regions in which FSx for Lustre is available.
+    --
+    -- Choose @PERSISTENT_2@ for longer-term storage and for latency-sensitive
+    -- workloads that require the highest levels of IOPS\/throughput.
+    -- @PERSISTENT_2@ supports SSD storage, and offers higher
+    -- @PerUnitStorageThroughput@ (up to 1000 MB\/s\/TiB). @PERSISTENT_2@ is
+    -- available in a limited number of Amazon Web Services Regions. For more
+    -- information, and an up-to-date list of Amazon Web Services Regions in
+    -- which @PERSISTENT_2@ is available, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-fsx-lustre.html#lustre-deployment-types File system deployment options for FSx for Lustre>
+    -- in the /Amazon FSx for Lustre User Guide/.
+    --
+    -- If you choose @PERSISTENT_2@, and you set @FileSystemTypeVersion@ to
+    -- @2.10@, the @CreateFileSystem@ operation fails.
+    --
+    -- Encryption of data in transit is automatically turned on when you access
+    -- @SCRATCH_2@, @PERSISTENT_1@ and @PERSISTENT_2@ file systems from Amazon
+    -- EC2 instances that
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-%20protection.html support automatic encryption>
+    -- in the Amazon Web Services Regions where they are available. For more
+    -- information about encryption in transit for FSx for Lustre file systems,
+    -- see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-in-transit-fsxl.html Encrypting data in transit>
+    -- in the /Amazon FSx for Lustre User Guide/.
+    --
+    -- (Default = @SCRATCH_1@)
+    deploymentType :: Prelude.Maybe LustreDeploymentType,
+    -- | The type of drive cache used by @PERSISTENT_1@ file systems that are
+    -- provisioned with HDD storage devices. This parameter is required when
+    -- storage type is HDD. Set this property to @READ@ to improve the
+    -- performance for frequently accessed files by caching up to 20% of the
+    -- total storage capacity of the file system.
+    --
+    -- This parameter is required when @StorageType@ is set to @HDD@.
+    driveCacheType :: Prelude.Maybe DriveCacheType,
+    -- | (Optional) Available with @Scratch@ and @Persistent_1@ deployment types.
+    -- Specifies the path in the Amazon S3 bucket where the root of your Amazon
+    -- FSx file system is exported. The path must use the same Amazon S3 bucket
+    -- as specified in ImportPath. You can provide an optional prefix to which
+    -- new and changed data is to be exported from your Amazon FSx for Lustre
+    -- file system. If an @ExportPath@ value is not provided, Amazon FSx sets a
+    -- default export path,
+    -- @s3:\/\/import-bucket\/FSxLustre[creation-timestamp]@. The timestamp is
+    -- in UTC format, for example
+    -- @s3:\/\/import-bucket\/FSxLustre20181105T222312Z@.
+    --
+    -- The Amazon S3 export bucket must be the same as the import bucket
+    -- specified by @ImportPath@. If you specify only a bucket name, such as
+    -- @s3:\/\/import-bucket@, you get a 1:1 mapping of file system objects to
+    -- S3 bucket objects. This mapping means that the input data in S3 is
+    -- overwritten on export. If you provide a custom prefix in the export
+    -- path, such as @s3:\/\/import-bucket\/[custom-optional-prefix]@, Amazon
+    -- FSx exports the contents of your file system to that export prefix in
+    -- the Amazon S3 bucket.
+    --
+    -- This parameter is not supported for file systems with the @Persistent_2@
+    -- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+    -- create a data repository association to link your Lustre file system to
+    -- a data repository.
+    exportPath :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) The path to the Amazon S3 bucket (including the optional
+    -- prefix) that you\'re using as the data repository for your Amazon FSx
+    -- for Lustre file system. The root of your FSx for Lustre file system will
+    -- be mapped to the root of the Amazon S3 bucket you select. An example is
+    -- @s3:\/\/import-bucket\/optional-prefix@. If you specify a prefix after
+    -- the Amazon S3 bucket name, only object keys with that prefix are loaded
+    -- into the file system.
+    --
+    -- This parameter is not supported for file systems with the @Persistent_2@
+    -- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+    -- create a data repository association to link your Lustre file system to
+    -- a data repository.
+    importPath :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) For files imported from a data repository, this value
+    -- determines the stripe count and maximum amount of data per file (in MiB)
+    -- stored on a single physical disk. The maximum number of disks that a
+    -- single file can be striped across is limited by the total number of
+    -- disks that make up the file system.
+    --
+    -- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+    -- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+    --
+    -- This parameter is not supported for file systems with the @Persistent_2@
+    -- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+    -- create a data repository association to link your Lustre file system to
+    -- a data repository.
+    importedFileChunkSize :: Prelude.Maybe Prelude.Natural,
+    -- | The Lustre logging configuration used when creating an Amazon FSx for
+    -- Lustre file system. When logging is enabled, Lustre logs error and
+    -- warning events for data repositories associated with your file system to
+    -- Amazon CloudWatch Logs.
+    logConfiguration :: Prelude.Maybe LustreLogCreateConfiguration,
+    -- | Required with @PERSISTENT_1@ and @PERSISTENT_2@ deployment types,
+    -- provisions the amount of read and write throughput for each 1 tebibyte
+    -- (TiB) of file system storage capacity, in MB\/s\/TiB. File system
+    -- throughput capacity is calculated by multiplying ﬁle system storage
+    -- capacity (TiB) by the @PerUnitStorageThroughput@ (MB\/s\/TiB). For a
+    -- 2.4-TiB ﬁle system, provisioning 50 MB\/s\/TiB of
+    -- @PerUnitStorageThroughput@ yields 120 MB\/s of ﬁle system throughput.
+    -- You pay for the amount of throughput that you provision.
+    --
+    -- Valid values:
+    --
+    -- -   For @PERSISTENT_1@ SSD storage: 50, 100, 200 MB\/s\/TiB.
+    --
+    -- -   For @PERSISTENT_1@ HDD storage: 12, 40 MB\/s\/TiB.
+    --
+    -- -   For @PERSISTENT_2@ SSD storage: 125, 250, 500, 1000 MB\/s\/TiB.
+    perUnitStorageThroughput :: Prelude.Maybe Prelude.Natural,
+    -- | The Lustre root squash configuration used when creating an Amazon FSx
+    -- for Lustre file system. When enabled, root squash restricts root-level
+    -- access from clients that try to access your file system as a root user.
+    rootSquashConfiguration :: Prelude.Maybe LustreRootSquashConfiguration,
+    -- | (Optional) The preferred start time to perform weekly maintenance,
+    -- formatted d:HH:MM in the UTC time zone, where d is the weekday number,
+    -- from 1 through 7, beginning with Monday and ending with Sunday.
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemLustreConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoImportPolicy', 'createFileSystemLustreConfiguration_autoImportPolicy' - (Optional) Available with @Scratch@ and @Persistent_1@ deployment types.
+-- When you create your file system, your existing S3 objects appear as
+-- file and directory listings. Use this property to choose how Amazon FSx
+-- keeps your file and directory listings up to date as you add or modify
+-- objects in your linked S3 bucket. @AutoImportPolicy@ can have the
+-- following values:
+--
+-- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+--     and directory listings from the linked S3 bucket when the file
+--     system is created. FSx does not update file and directory listings
+--     for any new or changed objects after choosing this option.
+--
+-- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+--     listings of any new objects added to the linked S3 bucket that do
+--     not currently exist in the FSx file system.
+--
+-- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+--     file and directory listings of any new objects added to the S3
+--     bucket and any existing objects that are changed in the S3 bucket
+--     after you choose this option.
+--
+-- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+--     imports file and directory listings of any new objects added to the
+--     S3 bucket, any existing objects that are changed in the S3 bucket,
+--     and any objects that were deleted in the S3 bucket.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/older-deployment-types.html#legacy-auto-import-from-s3 Automatically import updates from your S3 bucket>.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+--
+-- 'automaticBackupRetentionDays', 'createFileSystemLustreConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'copyTagsToBackups', 'createFileSystemLustreConfiguration_copyTagsToBackups' - (Optional) Not available for use with file systems that are linked to a
+-- data repository. A boolean flag indicating whether tags for the file
+-- system should be copied to backups. The default value is false. If
+-- @CopyTagsToBackups@ is set to true, all file system tags are copied to
+-- all automatic and user-initiated backups when the user doesn\'t specify
+-- any backup-specific tags. If @CopyTagsToBackups@ is set to true and you
+-- specify one or more backup tags, only the specified tags are copied to
+-- backups. If you specify one or more tags when creating a user-initiated
+-- backup, no tags are copied from the file system, regardless of this
+-- value.
+--
+-- (Default = @false@)
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html Working with backups>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- 'dailyAutomaticBackupStartTime', 'createFileSystemLustreConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'dataCompressionType', 'createFileSystemLustreConfiguration_dataCompressionType' - Sets the data compression configuration for the file system.
+-- @DataCompressionType@ can have the following values:
+--
+-- -   @NONE@ - (Default) Data compression is turned off when the file
+--     system is created.
+--
+-- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- 'deploymentType', 'createFileSystemLustreConfiguration_deploymentType' - (Optional) Choose @SCRATCH_1@ and @SCRATCH_2@ deployment types when you
+-- need temporary storage and shorter-term processing of data. The
+-- @SCRATCH_2@ deployment type provides in-transit encryption of data and
+-- higher burst throughput capacity than @SCRATCH_1@.
+--
+-- Choose @PERSISTENT_1@ for longer-term storage and for throughput-focused
+-- workloads that aren’t latency-sensitive. @PERSISTENT_1@ supports
+-- encryption of data in transit, and is available in all Amazon Web
+-- Services Regions in which FSx for Lustre is available.
+--
+-- Choose @PERSISTENT_2@ for longer-term storage and for latency-sensitive
+-- workloads that require the highest levels of IOPS\/throughput.
+-- @PERSISTENT_2@ supports SSD storage, and offers higher
+-- @PerUnitStorageThroughput@ (up to 1000 MB\/s\/TiB). @PERSISTENT_2@ is
+-- available in a limited number of Amazon Web Services Regions. For more
+-- information, and an up-to-date list of Amazon Web Services Regions in
+-- which @PERSISTENT_2@ is available, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-fsx-lustre.html#lustre-deployment-types File system deployment options for FSx for Lustre>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- If you choose @PERSISTENT_2@, and you set @FileSystemTypeVersion@ to
+-- @2.10@, the @CreateFileSystem@ operation fails.
+--
+-- Encryption of data in transit is automatically turned on when you access
+-- @SCRATCH_2@, @PERSISTENT_1@ and @PERSISTENT_2@ file systems from Amazon
+-- EC2 instances that
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-%20protection.html support automatic encryption>
+-- in the Amazon Web Services Regions where they are available. For more
+-- information about encryption in transit for FSx for Lustre file systems,
+-- see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-in-transit-fsxl.html Encrypting data in transit>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- (Default = @SCRATCH_1@)
+--
+-- 'driveCacheType', 'createFileSystemLustreConfiguration_driveCacheType' - The type of drive cache used by @PERSISTENT_1@ file systems that are
+-- provisioned with HDD storage devices. This parameter is required when
+-- storage type is HDD. Set this property to @READ@ to improve the
+-- performance for frequently accessed files by caching up to 20% of the
+-- total storage capacity of the file system.
+--
+-- This parameter is required when @StorageType@ is set to @HDD@.
+--
+-- 'exportPath', 'createFileSystemLustreConfiguration_exportPath' - (Optional) Available with @Scratch@ and @Persistent_1@ deployment types.
+-- Specifies the path in the Amazon S3 bucket where the root of your Amazon
+-- FSx file system is exported. The path must use the same Amazon S3 bucket
+-- as specified in ImportPath. You can provide an optional prefix to which
+-- new and changed data is to be exported from your Amazon FSx for Lustre
+-- file system. If an @ExportPath@ value is not provided, Amazon FSx sets a
+-- default export path,
+-- @s3:\/\/import-bucket\/FSxLustre[creation-timestamp]@. The timestamp is
+-- in UTC format, for example
+-- @s3:\/\/import-bucket\/FSxLustre20181105T222312Z@.
+--
+-- The Amazon S3 export bucket must be the same as the import bucket
+-- specified by @ImportPath@. If you specify only a bucket name, such as
+-- @s3:\/\/import-bucket@, you get a 1:1 mapping of file system objects to
+-- S3 bucket objects. This mapping means that the input data in S3 is
+-- overwritten on export. If you provide a custom prefix in the export
+-- path, such as @s3:\/\/import-bucket\/[custom-optional-prefix]@, Amazon
+-- FSx exports the contents of your file system to that export prefix in
+-- the Amazon S3 bucket.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+--
+-- 'importPath', 'createFileSystemLustreConfiguration_importPath' - (Optional) The path to the Amazon S3 bucket (including the optional
+-- prefix) that you\'re using as the data repository for your Amazon FSx
+-- for Lustre file system. The root of your FSx for Lustre file system will
+-- be mapped to the root of the Amazon S3 bucket you select. An example is
+-- @s3:\/\/import-bucket\/optional-prefix@. If you specify a prefix after
+-- the Amazon S3 bucket name, only object keys with that prefix are loaded
+-- into the file system.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+--
+-- 'importedFileChunkSize', 'createFileSystemLustreConfiguration_importedFileChunkSize' - (Optional) For files imported from a data repository, this value
+-- determines the stripe count and maximum amount of data per file (in MiB)
+-- stored on a single physical disk. The maximum number of disks that a
+-- single file can be striped across is limited by the total number of
+-- disks that make up the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+--
+-- 'logConfiguration', 'createFileSystemLustreConfiguration_logConfiguration' - The Lustre logging configuration used when creating an Amazon FSx for
+-- Lustre file system. When logging is enabled, Lustre logs error and
+-- warning events for data repositories associated with your file system to
+-- Amazon CloudWatch Logs.
+--
+-- 'perUnitStorageThroughput', 'createFileSystemLustreConfiguration_perUnitStorageThroughput' - Required with @PERSISTENT_1@ and @PERSISTENT_2@ deployment types,
+-- provisions the amount of read and write throughput for each 1 tebibyte
+-- (TiB) of file system storage capacity, in MB\/s\/TiB. File system
+-- throughput capacity is calculated by multiplying ﬁle system storage
+-- capacity (TiB) by the @PerUnitStorageThroughput@ (MB\/s\/TiB). For a
+-- 2.4-TiB ﬁle system, provisioning 50 MB\/s\/TiB of
+-- @PerUnitStorageThroughput@ yields 120 MB\/s of ﬁle system throughput.
+-- You pay for the amount of throughput that you provision.
+--
+-- Valid values:
+--
+-- -   For @PERSISTENT_1@ SSD storage: 50, 100, 200 MB\/s\/TiB.
+--
+-- -   For @PERSISTENT_1@ HDD storage: 12, 40 MB\/s\/TiB.
+--
+-- -   For @PERSISTENT_2@ SSD storage: 125, 250, 500, 1000 MB\/s\/TiB.
+--
+-- 'rootSquashConfiguration', 'createFileSystemLustreConfiguration_rootSquashConfiguration' - The Lustre root squash configuration used when creating an Amazon FSx
+-- for Lustre file system. When enabled, root squash restricts root-level
+-- access from clients that try to access your file system as a root user.
+--
+-- 'weeklyMaintenanceStartTime', 'createFileSystemLustreConfiguration_weeklyMaintenanceStartTime' - (Optional) The preferred start time to perform weekly maintenance,
+-- formatted d:HH:MM in the UTC time zone, where d is the weekday number,
+-- from 1 through 7, beginning with Monday and ending with Sunday.
+newCreateFileSystemLustreConfiguration ::
+  CreateFileSystemLustreConfiguration
+newCreateFileSystemLustreConfiguration =
+  CreateFileSystemLustreConfiguration'
+    { autoImportPolicy =
+        Prelude.Nothing,
+      automaticBackupRetentionDays =
+        Prelude.Nothing,
+      copyTagsToBackups = Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      dataCompressionType = Prelude.Nothing,
+      deploymentType = Prelude.Nothing,
+      driveCacheType = Prelude.Nothing,
+      exportPath = Prelude.Nothing,
+      importPath = Prelude.Nothing,
+      importedFileChunkSize =
+        Prelude.Nothing,
+      logConfiguration = Prelude.Nothing,
+      perUnitStorageThroughput =
+        Prelude.Nothing,
+      rootSquashConfiguration =
+        Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | (Optional) Available with @Scratch@ and @Persistent_1@ deployment types.
+-- When you create your file system, your existing S3 objects appear as
+-- file and directory listings. Use this property to choose how Amazon FSx
+-- keeps your file and directory listings up to date as you add or modify
+-- objects in your linked S3 bucket. @AutoImportPolicy@ can have the
+-- following values:
+--
+-- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+--     and directory listings from the linked S3 bucket when the file
+--     system is created. FSx does not update file and directory listings
+--     for any new or changed objects after choosing this option.
+--
+-- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+--     listings of any new objects added to the linked S3 bucket that do
+--     not currently exist in the FSx file system.
+--
+-- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+--     file and directory listings of any new objects added to the S3
+--     bucket and any existing objects that are changed in the S3 bucket
+--     after you choose this option.
+--
+-- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+--     imports file and directory listings of any new objects added to the
+--     S3 bucket, any existing objects that are changed in the S3 bucket,
+--     and any objects that were deleted in the S3 bucket.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/older-deployment-types.html#legacy-auto-import-from-s3 Automatically import updates from your S3 bucket>.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+createFileSystemLustreConfiguration_autoImportPolicy :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe AutoImportPolicyType)
+createFileSystemLustreConfiguration_autoImportPolicy = Lens.lens (\CreateFileSystemLustreConfiguration' {autoImportPolicy} -> autoImportPolicy) (\s@CreateFileSystemLustreConfiguration' {} a -> s {autoImportPolicy = a} :: CreateFileSystemLustreConfiguration)
+
+-- | Undocumented member.
+createFileSystemLustreConfiguration_automaticBackupRetentionDays :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Natural)
+createFileSystemLustreConfiguration_automaticBackupRetentionDays = Lens.lens (\CreateFileSystemLustreConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@CreateFileSystemLustreConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: CreateFileSystemLustreConfiguration)
+
+-- | (Optional) Not available for use with file systems that are linked to a
+-- data repository. A boolean flag indicating whether tags for the file
+-- system should be copied to backups. The default value is false. If
+-- @CopyTagsToBackups@ is set to true, all file system tags are copied to
+-- all automatic and user-initiated backups when the user doesn\'t specify
+-- any backup-specific tags. If @CopyTagsToBackups@ is set to true and you
+-- specify one or more backup tags, only the specified tags are copied to
+-- backups. If you specify one or more tags when creating a user-initiated
+-- backup, no tags are copied from the file system, regardless of this
+-- value.
+--
+-- (Default = @false@)
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html Working with backups>
+-- in the /Amazon FSx for Lustre User Guide/.
+createFileSystemLustreConfiguration_copyTagsToBackups :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Bool)
+createFileSystemLustreConfiguration_copyTagsToBackups = Lens.lens (\CreateFileSystemLustreConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@CreateFileSystemLustreConfiguration' {} a -> s {copyTagsToBackups = a} :: CreateFileSystemLustreConfiguration)
+
+-- | Undocumented member.
+createFileSystemLustreConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemLustreConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\CreateFileSystemLustreConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@CreateFileSystemLustreConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: CreateFileSystemLustreConfiguration)
+
+-- | Sets the data compression configuration for the file system.
+-- @DataCompressionType@ can have the following values:
+--
+-- -   @NONE@ - (Default) Data compression is turned off when the file
+--     system is created.
+--
+-- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>
+-- in the /Amazon FSx for Lustre User Guide/.
+createFileSystemLustreConfiguration_dataCompressionType :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe DataCompressionType)
+createFileSystemLustreConfiguration_dataCompressionType = Lens.lens (\CreateFileSystemLustreConfiguration' {dataCompressionType} -> dataCompressionType) (\s@CreateFileSystemLustreConfiguration' {} a -> s {dataCompressionType = a} :: CreateFileSystemLustreConfiguration)
+
+-- | (Optional) Choose @SCRATCH_1@ and @SCRATCH_2@ deployment types when you
+-- need temporary storage and shorter-term processing of data. The
+-- @SCRATCH_2@ deployment type provides in-transit encryption of data and
+-- higher burst throughput capacity than @SCRATCH_1@.
+--
+-- Choose @PERSISTENT_1@ for longer-term storage and for throughput-focused
+-- workloads that aren’t latency-sensitive. @PERSISTENT_1@ supports
+-- encryption of data in transit, and is available in all Amazon Web
+-- Services Regions in which FSx for Lustre is available.
+--
+-- Choose @PERSISTENT_2@ for longer-term storage and for latency-sensitive
+-- workloads that require the highest levels of IOPS\/throughput.
+-- @PERSISTENT_2@ supports SSD storage, and offers higher
+-- @PerUnitStorageThroughput@ (up to 1000 MB\/s\/TiB). @PERSISTENT_2@ is
+-- available in a limited number of Amazon Web Services Regions. For more
+-- information, and an up-to-date list of Amazon Web Services Regions in
+-- which @PERSISTENT_2@ is available, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-fsx-lustre.html#lustre-deployment-types File system deployment options for FSx for Lustre>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- If you choose @PERSISTENT_2@, and you set @FileSystemTypeVersion@ to
+-- @2.10@, the @CreateFileSystem@ operation fails.
+--
+-- Encryption of data in transit is automatically turned on when you access
+-- @SCRATCH_2@, @PERSISTENT_1@ and @PERSISTENT_2@ file systems from Amazon
+-- EC2 instances that
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-%20protection.html support automatic encryption>
+-- in the Amazon Web Services Regions where they are available. For more
+-- information about encryption in transit for FSx for Lustre file systems,
+-- see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-in-transit-fsxl.html Encrypting data in transit>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- (Default = @SCRATCH_1@)
+createFileSystemLustreConfiguration_deploymentType :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe LustreDeploymentType)
+createFileSystemLustreConfiguration_deploymentType = Lens.lens (\CreateFileSystemLustreConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileSystemLustreConfiguration' {} a -> s {deploymentType = a} :: CreateFileSystemLustreConfiguration)
+
+-- | The type of drive cache used by @PERSISTENT_1@ file systems that are
+-- provisioned with HDD storage devices. This parameter is required when
+-- storage type is HDD. Set this property to @READ@ to improve the
+-- performance for frequently accessed files by caching up to 20% of the
+-- total storage capacity of the file system.
+--
+-- This parameter is required when @StorageType@ is set to @HDD@.
+createFileSystemLustreConfiguration_driveCacheType :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe DriveCacheType)
+createFileSystemLustreConfiguration_driveCacheType = Lens.lens (\CreateFileSystemLustreConfiguration' {driveCacheType} -> driveCacheType) (\s@CreateFileSystemLustreConfiguration' {} a -> s {driveCacheType = a} :: CreateFileSystemLustreConfiguration)
+
+-- | (Optional) Available with @Scratch@ and @Persistent_1@ deployment types.
+-- Specifies the path in the Amazon S3 bucket where the root of your Amazon
+-- FSx file system is exported. The path must use the same Amazon S3 bucket
+-- as specified in ImportPath. You can provide an optional prefix to which
+-- new and changed data is to be exported from your Amazon FSx for Lustre
+-- file system. If an @ExportPath@ value is not provided, Amazon FSx sets a
+-- default export path,
+-- @s3:\/\/import-bucket\/FSxLustre[creation-timestamp]@. The timestamp is
+-- in UTC format, for example
+-- @s3:\/\/import-bucket\/FSxLustre20181105T222312Z@.
+--
+-- The Amazon S3 export bucket must be the same as the import bucket
+-- specified by @ImportPath@. If you specify only a bucket name, such as
+-- @s3:\/\/import-bucket@, you get a 1:1 mapping of file system objects to
+-- S3 bucket objects. This mapping means that the input data in S3 is
+-- overwritten on export. If you provide a custom prefix in the export
+-- path, such as @s3:\/\/import-bucket\/[custom-optional-prefix]@, Amazon
+-- FSx exports the contents of your file system to that export prefix in
+-- the Amazon S3 bucket.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+createFileSystemLustreConfiguration_exportPath :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemLustreConfiguration_exportPath = Lens.lens (\CreateFileSystemLustreConfiguration' {exportPath} -> exportPath) (\s@CreateFileSystemLustreConfiguration' {} a -> s {exportPath = a} :: CreateFileSystemLustreConfiguration)
+
+-- | (Optional) The path to the Amazon S3 bucket (including the optional
+-- prefix) that you\'re using as the data repository for your Amazon FSx
+-- for Lustre file system. The root of your FSx for Lustre file system will
+-- be mapped to the root of the Amazon S3 bucket you select. An example is
+-- @s3:\/\/import-bucket\/optional-prefix@. If you specify a prefix after
+-- the Amazon S3 bucket name, only object keys with that prefix are loaded
+-- into the file system.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+createFileSystemLustreConfiguration_importPath :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemLustreConfiguration_importPath = Lens.lens (\CreateFileSystemLustreConfiguration' {importPath} -> importPath) (\s@CreateFileSystemLustreConfiguration' {} a -> s {importPath = a} :: CreateFileSystemLustreConfiguration)
+
+-- | (Optional) For files imported from a data repository, this value
+-- determines the stripe count and maximum amount of data per file (in MiB)
+-- stored on a single physical disk. The maximum number of disks that a
+-- single file can be striped across is limited by the total number of
+-- disks that make up the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+--
+-- This parameter is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use @CreateDataRepositoryAssociation@ to
+-- create a data repository association to link your Lustre file system to
+-- a data repository.
+createFileSystemLustreConfiguration_importedFileChunkSize :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Natural)
+createFileSystemLustreConfiguration_importedFileChunkSize = Lens.lens (\CreateFileSystemLustreConfiguration' {importedFileChunkSize} -> importedFileChunkSize) (\s@CreateFileSystemLustreConfiguration' {} a -> s {importedFileChunkSize = a} :: CreateFileSystemLustreConfiguration)
+
+-- | The Lustre logging configuration used when creating an Amazon FSx for
+-- Lustre file system. When logging is enabled, Lustre logs error and
+-- warning events for data repositories associated with your file system to
+-- Amazon CloudWatch Logs.
+createFileSystemLustreConfiguration_logConfiguration :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe LustreLogCreateConfiguration)
+createFileSystemLustreConfiguration_logConfiguration = Lens.lens (\CreateFileSystemLustreConfiguration' {logConfiguration} -> logConfiguration) (\s@CreateFileSystemLustreConfiguration' {} a -> s {logConfiguration = a} :: CreateFileSystemLustreConfiguration)
+
+-- | Required with @PERSISTENT_1@ and @PERSISTENT_2@ deployment types,
+-- provisions the amount of read and write throughput for each 1 tebibyte
+-- (TiB) of file system storage capacity, in MB\/s\/TiB. File system
+-- throughput capacity is calculated by multiplying ﬁle system storage
+-- capacity (TiB) by the @PerUnitStorageThroughput@ (MB\/s\/TiB). For a
+-- 2.4-TiB ﬁle system, provisioning 50 MB\/s\/TiB of
+-- @PerUnitStorageThroughput@ yields 120 MB\/s of ﬁle system throughput.
+-- You pay for the amount of throughput that you provision.
+--
+-- Valid values:
+--
+-- -   For @PERSISTENT_1@ SSD storage: 50, 100, 200 MB\/s\/TiB.
+--
+-- -   For @PERSISTENT_1@ HDD storage: 12, 40 MB\/s\/TiB.
+--
+-- -   For @PERSISTENT_2@ SSD storage: 125, 250, 500, 1000 MB\/s\/TiB.
+createFileSystemLustreConfiguration_perUnitStorageThroughput :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Natural)
+createFileSystemLustreConfiguration_perUnitStorageThroughput = Lens.lens (\CreateFileSystemLustreConfiguration' {perUnitStorageThroughput} -> perUnitStorageThroughput) (\s@CreateFileSystemLustreConfiguration' {} a -> s {perUnitStorageThroughput = a} :: CreateFileSystemLustreConfiguration)
+
+-- | The Lustre root squash configuration used when creating an Amazon FSx
+-- for Lustre file system. When enabled, root squash restricts root-level
+-- access from clients that try to access your file system as a root user.
+createFileSystemLustreConfiguration_rootSquashConfiguration :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe LustreRootSquashConfiguration)
+createFileSystemLustreConfiguration_rootSquashConfiguration = Lens.lens (\CreateFileSystemLustreConfiguration' {rootSquashConfiguration} -> rootSquashConfiguration) (\s@CreateFileSystemLustreConfiguration' {} a -> s {rootSquashConfiguration = a} :: CreateFileSystemLustreConfiguration)
+
+-- | (Optional) The preferred start time to perform weekly maintenance,
+-- formatted d:HH:MM in the UTC time zone, where d is the weekday number,
+-- from 1 through 7, beginning with Monday and ending with Sunday.
+createFileSystemLustreConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemLustreConfiguration_weeklyMaintenanceStartTime = Lens.lens (\CreateFileSystemLustreConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileSystemLustreConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: CreateFileSystemLustreConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateFileSystemLustreConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateFileSystemLustreConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` autoImportPolicy
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` dataCompressionType
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` driveCacheType
+        `Prelude.hashWithSalt` exportPath
+        `Prelude.hashWithSalt` importPath
+        `Prelude.hashWithSalt` importedFileChunkSize
+        `Prelude.hashWithSalt` logConfiguration
+        `Prelude.hashWithSalt` perUnitStorageThroughput
+        `Prelude.hashWithSalt` rootSquashConfiguration
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    CreateFileSystemLustreConfiguration
+  where
+  rnf CreateFileSystemLustreConfiguration' {..} =
+    Prelude.rnf autoImportPolicy
+      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf driveCacheType
+      `Prelude.seq` Prelude.rnf exportPath
+      `Prelude.seq` Prelude.rnf importPath
+      `Prelude.seq` Prelude.rnf importedFileChunkSize
+      `Prelude.seq` Prelude.rnf logConfiguration
+      `Prelude.seq` Prelude.rnf perUnitStorageThroughput
+      `Prelude.seq` Prelude.rnf rootSquashConfiguration
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+
+instance
+  Data.ToJSON
+    CreateFileSystemLustreConfiguration
+  where
+  toJSON CreateFileSystemLustreConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoImportPolicy" Data..=)
+              Prelude.<$> autoImportPolicy,
+            ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("CopyTagsToBackups" Data..=)
+              Prelude.<$> copyTagsToBackups,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DataCompressionType" Data..=)
+              Prelude.<$> dataCompressionType,
+            ("DeploymentType" Data..=)
+              Prelude.<$> deploymentType,
+            ("DriveCacheType" Data..=)
+              Prelude.<$> driveCacheType,
+            ("ExportPath" Data..=) Prelude.<$> exportPath,
+            ("ImportPath" Data..=) Prelude.<$> importPath,
+            ("ImportedFileChunkSize" Data..=)
+              Prelude.<$> importedFileChunkSize,
+            ("LogConfiguration" Data..=)
+              Prelude.<$> logConfiguration,
+            ("PerUnitStorageThroughput" Data..=)
+              Prelude.<$> perUnitStorageThroughput,
+            ("RootSquashConfiguration" Data..=)
+              Prelude.<$> rootSquashConfiguration,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateFileSystemOntapConfiguration.hs b/gen/Amazonka/FSx/Types/CreateFileSystemOntapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateFileSystemOntapConfiguration.hs
@@ -0,0 +1,285 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CreateFileSystemOntapConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateFileSystemOntapConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import Amazonka.FSx.Types.OntapDeploymentType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The ONTAP configuration properties of the FSx for ONTAP file system that
+-- you are creating.
+--
+-- /See:/ 'newCreateFileSystemOntapConfiguration' smart constructor.
+data CreateFileSystemOntapConfiguration = CreateFileSystemOntapConfiguration'
+  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | The SSD IOPS configuration for the FSx for ONTAP file system.
+    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
+    -- | (Multi-AZ only) Specifies the IP address range in which the endpoints to
+    -- access your file system will be created. By default in the Amazon FSx
+    -- API, Amazon FSx selects an unused IP address range for you from the
+    -- 198.19.* range. By default in the Amazon FSx console, Amazon FSx chooses
+    -- the last 64 IP addresses from the VPC’s primary CIDR range to use as the
+    -- endpoint IP address range for the file system. You can have overlapping
+    -- endpoint IP addresses for file systems deployed in the same VPC\/route
+    -- tables.
+    endpointIpAddressRange :: Prelude.Maybe Prelude.Text,
+    -- | The ONTAP administrative password for the @fsxadmin@ user with which you
+    -- administer your file system using the NetApp ONTAP CLI and REST API.
+    fsxAdminPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
+    -- the subnet in which you want the preferred file server to be located.
+    preferredSubnetId :: Prelude.Maybe Prelude.Text,
+    -- | (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables
+    -- in which your file system\'s endpoints will be created. You should
+    -- specify all VPC route tables associated with the subnets in which your
+    -- clients are located. By default, Amazon FSx selects your VPC\'s default
+    -- route table.
+    routeTableIds :: Prelude.Maybe [Prelude.Text],
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the FSx for ONTAP file system deployment type to use in
+    -- creating the file system.
+    --
+    -- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
+    --     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
+    --     unavailability.
+    --
+    -- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
+    --
+    -- For information about the use cases for Multi-AZ and Single-AZ
+    -- deployments, refer to
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html Choosing a file system deployment type>.
+    deploymentType :: OntapDeploymentType,
+    -- | Sets the throughput capacity for the file system that you\'re creating.
+    -- Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.
+    throughputCapacity :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemOntapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automaticBackupRetentionDays', 'createFileSystemOntapConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'dailyAutomaticBackupStartTime', 'createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'diskIopsConfiguration', 'createFileSystemOntapConfiguration_diskIopsConfiguration' - The SSD IOPS configuration for the FSx for ONTAP file system.
+--
+-- 'endpointIpAddressRange', 'createFileSystemOntapConfiguration_endpointIpAddressRange' - (Multi-AZ only) Specifies the IP address range in which the endpoints to
+-- access your file system will be created. By default in the Amazon FSx
+-- API, Amazon FSx selects an unused IP address range for you from the
+-- 198.19.* range. By default in the Amazon FSx console, Amazon FSx chooses
+-- the last 64 IP addresses from the VPC’s primary CIDR range to use as the
+-- endpoint IP address range for the file system. You can have overlapping
+-- endpoint IP addresses for file systems deployed in the same VPC\/route
+-- tables.
+--
+-- 'fsxAdminPassword', 'createFileSystemOntapConfiguration_fsxAdminPassword' - The ONTAP administrative password for the @fsxadmin@ user with which you
+-- administer your file system using the NetApp ONTAP CLI and REST API.
+--
+-- 'preferredSubnetId', 'createFileSystemOntapConfiguration_preferredSubnetId' - Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
+-- the subnet in which you want the preferred file server to be located.
+--
+-- 'routeTableIds', 'createFileSystemOntapConfiguration_routeTableIds' - (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables
+-- in which your file system\'s endpoints will be created. You should
+-- specify all VPC route tables associated with the subnets in which your
+-- clients are located. By default, Amazon FSx selects your VPC\'s default
+-- route table.
+--
+-- 'weeklyMaintenanceStartTime', 'createFileSystemOntapConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+--
+-- 'deploymentType', 'createFileSystemOntapConfiguration_deploymentType' - Specifies the FSx for ONTAP file system deployment type to use in
+-- creating the file system.
+--
+-- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
+--     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
+--     unavailability.
+--
+-- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
+--
+-- For information about the use cases for Multi-AZ and Single-AZ
+-- deployments, refer to
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html Choosing a file system deployment type>.
+--
+-- 'throughputCapacity', 'createFileSystemOntapConfiguration_throughputCapacity' - Sets the throughput capacity for the file system that you\'re creating.
+-- Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.
+newCreateFileSystemOntapConfiguration ::
+  -- | 'deploymentType'
+  OntapDeploymentType ->
+  -- | 'throughputCapacity'
+  Prelude.Natural ->
+  CreateFileSystemOntapConfiguration
+newCreateFileSystemOntapConfiguration
+  pDeploymentType_
+  pThroughputCapacity_ =
+    CreateFileSystemOntapConfiguration'
+      { automaticBackupRetentionDays =
+          Prelude.Nothing,
+        dailyAutomaticBackupStartTime =
+          Prelude.Nothing,
+        diskIopsConfiguration = Prelude.Nothing,
+        endpointIpAddressRange =
+          Prelude.Nothing,
+        fsxAdminPassword = Prelude.Nothing,
+        preferredSubnetId = Prelude.Nothing,
+        routeTableIds = Prelude.Nothing,
+        weeklyMaintenanceStartTime =
+          Prelude.Nothing,
+        deploymentType = pDeploymentType_,
+        throughputCapacity =
+          pThroughputCapacity_
+      }
+
+-- | Undocumented member.
+createFileSystemOntapConfiguration_automaticBackupRetentionDays :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Natural)
+createFileSystemOntapConfiguration_automaticBackupRetentionDays = Lens.lens (\CreateFileSystemOntapConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@CreateFileSystemOntapConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: CreateFileSystemOntapConfiguration)
+
+-- | Undocumented member.
+createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\CreateFileSystemOntapConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@CreateFileSystemOntapConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: CreateFileSystemOntapConfiguration)
+
+-- | The SSD IOPS configuration for the FSx for ONTAP file system.
+createFileSystemOntapConfiguration_diskIopsConfiguration :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe DiskIopsConfiguration)
+createFileSystemOntapConfiguration_diskIopsConfiguration = Lens.lens (\CreateFileSystemOntapConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@CreateFileSystemOntapConfiguration' {} a -> s {diskIopsConfiguration = a} :: CreateFileSystemOntapConfiguration)
+
+-- | (Multi-AZ only) Specifies the IP address range in which the endpoints to
+-- access your file system will be created. By default in the Amazon FSx
+-- API, Amazon FSx selects an unused IP address range for you from the
+-- 198.19.* range. By default in the Amazon FSx console, Amazon FSx chooses
+-- the last 64 IP addresses from the VPC’s primary CIDR range to use as the
+-- endpoint IP address range for the file system. You can have overlapping
+-- endpoint IP addresses for file systems deployed in the same VPC\/route
+-- tables.
+createFileSystemOntapConfiguration_endpointIpAddressRange :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOntapConfiguration_endpointIpAddressRange = Lens.lens (\CreateFileSystemOntapConfiguration' {endpointIpAddressRange} -> endpointIpAddressRange) (\s@CreateFileSystemOntapConfiguration' {} a -> s {endpointIpAddressRange = a} :: CreateFileSystemOntapConfiguration)
+
+-- | The ONTAP administrative password for the @fsxadmin@ user with which you
+-- administer your file system using the NetApp ONTAP CLI and REST API.
+createFileSystemOntapConfiguration_fsxAdminPassword :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOntapConfiguration_fsxAdminPassword = Lens.lens (\CreateFileSystemOntapConfiguration' {fsxAdminPassword} -> fsxAdminPassword) (\s@CreateFileSystemOntapConfiguration' {} a -> s {fsxAdminPassword = a} :: CreateFileSystemOntapConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
+-- the subnet in which you want the preferred file server to be located.
+createFileSystemOntapConfiguration_preferredSubnetId :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOntapConfiguration_preferredSubnetId = Lens.lens (\CreateFileSystemOntapConfiguration' {preferredSubnetId} -> preferredSubnetId) (\s@CreateFileSystemOntapConfiguration' {} a -> s {preferredSubnetId = a} :: CreateFileSystemOntapConfiguration)
+
+-- | (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables
+-- in which your file system\'s endpoints will be created. You should
+-- specify all VPC route tables associated with the subnets in which your
+-- clients are located. By default, Amazon FSx selects your VPC\'s default
+-- route table.
+createFileSystemOntapConfiguration_routeTableIds :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe [Prelude.Text])
+createFileSystemOntapConfiguration_routeTableIds = Lens.lens (\CreateFileSystemOntapConfiguration' {routeTableIds} -> routeTableIds) (\s@CreateFileSystemOntapConfiguration' {} a -> s {routeTableIds = a} :: CreateFileSystemOntapConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createFileSystemOntapConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOntapConfiguration_weeklyMaintenanceStartTime = Lens.lens (\CreateFileSystemOntapConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileSystemOntapConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: CreateFileSystemOntapConfiguration)
+
+-- | Specifies the FSx for ONTAP file system deployment type to use in
+-- creating the file system.
+--
+-- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
+--     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
+--     unavailability.
+--
+-- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
+--
+-- For information about the use cases for Multi-AZ and Single-AZ
+-- deployments, refer to
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html Choosing a file system deployment type>.
+createFileSystemOntapConfiguration_deploymentType :: Lens.Lens' CreateFileSystemOntapConfiguration OntapDeploymentType
+createFileSystemOntapConfiguration_deploymentType = Lens.lens (\CreateFileSystemOntapConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileSystemOntapConfiguration' {} a -> s {deploymentType = a} :: CreateFileSystemOntapConfiguration)
+
+-- | Sets the throughput capacity for the file system that you\'re creating.
+-- Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.
+createFileSystemOntapConfiguration_throughputCapacity :: Lens.Lens' CreateFileSystemOntapConfiguration Prelude.Natural
+createFileSystemOntapConfiguration_throughputCapacity = Lens.lens (\CreateFileSystemOntapConfiguration' {throughputCapacity} -> throughputCapacity) (\s@CreateFileSystemOntapConfiguration' {} a -> s {throughputCapacity = a} :: CreateFileSystemOntapConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateFileSystemOntapConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateFileSystemOntapConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` diskIopsConfiguration
+        `Prelude.hashWithSalt` endpointIpAddressRange
+        `Prelude.hashWithSalt` fsxAdminPassword
+        `Prelude.hashWithSalt` preferredSubnetId
+        `Prelude.hashWithSalt` routeTableIds
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` throughputCapacity
+
+instance
+  Prelude.NFData
+    CreateFileSystemOntapConfiguration
+  where
+  rnf CreateFileSystemOntapConfiguration' {..} =
+    Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf diskIopsConfiguration
+      `Prelude.seq` Prelude.rnf endpointIpAddressRange
+      `Prelude.seq` Prelude.rnf fsxAdminPassword
+      `Prelude.seq` Prelude.rnf preferredSubnetId
+      `Prelude.seq` Prelude.rnf routeTableIds
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf throughputCapacity
+
+instance
+  Data.ToJSON
+    CreateFileSystemOntapConfiguration
+  where
+  toJSON CreateFileSystemOntapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DiskIopsConfiguration" Data..=)
+              Prelude.<$> diskIopsConfiguration,
+            ("EndpointIpAddressRange" Data..=)
+              Prelude.<$> endpointIpAddressRange,
+            ("FsxAdminPassword" Data..=)
+              Prelude.<$> fsxAdminPassword,
+            ("PreferredSubnetId" Data..=)
+              Prelude.<$> preferredSubnetId,
+            ("RouteTableIds" Data..=) Prelude.<$> routeTableIds,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime,
+            Prelude.Just
+              ("DeploymentType" Data..= deploymentType),
+            Prelude.Just
+              ("ThroughputCapacity" Data..= throughputCapacity)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateFileSystemOpenZFSConfiguration.hs b/gen/Amazonka/FSx/Types/CreateFileSystemOpenZFSConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateFileSystemOpenZFSConfiguration.hs
@@ -0,0 +1,328 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CreateFileSystemOpenZFSConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateFileSystemOpenZFSConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import Amazonka.FSx.Types.OpenZFSCreateRootVolumeConfiguration
+import Amazonka.FSx.Types.OpenZFSDeploymentType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon FSx for OpenZFS configuration properties for the file system
+-- that you are creating.
+--
+-- /See:/ 'newCreateFileSystemOpenZFSConfiguration' smart constructor.
+data CreateFileSystemOpenZFSConfiguration = CreateFileSystemOpenZFSConfiguration'
+  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | A Boolean value indicating whether tags for the file system should be
+    -- copied to backups. This value defaults to @false@. If it\'s set to
+    -- @true@, all tags for the file system are copied to all automatic and
+    -- user-initiated backups where the user doesn\'t specify tags. If this
+    -- value is @true@, and you specify one or more tags, only the specified
+    -- tags are copied to backups. If you specify one or more tags when
+    -- creating a user-initiated backup, no tags are copied from the file
+    -- system, regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | A Boolean value indicating whether tags for the file system should be
+    -- copied to volumes. This value defaults to @false@. If it\'s set to
+    -- @true@, all tags for the file system are copied to volumes where the
+    -- user doesn\'t specify tags. If this value is @true@, and you specify one
+    -- or more tags, only the specified tags are copied to volumes. If you
+    -- specify one or more tags when creating the volume, no tags are copied
+    -- from the file system, regardless of this value.
+    copyTagsToVolumes :: Prelude.Maybe Prelude.Bool,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
+    -- | The configuration Amazon FSx uses when creating the root value of the
+    -- Amazon FSx for OpenZFS file system. All volumes are children of the root
+    -- volume.
+    rootVolumeConfiguration :: Prelude.Maybe OpenZFSCreateRootVolumeConfiguration,
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the file system deployment type. Single AZ deployment types
+    -- are configured for redundancy within a single Availability Zone in an
+    -- Amazon Web Services Region . Valid values are the following:
+    --
+    -- -   @SINGLE_AZ_1@- (Default) Creates file systems with throughput
+    --     capacities of 64 - 4,096 MB\/s. @Single_AZ_1@ is available in all
+    --     Amazon Web Services Regions where Amazon FSx for OpenZFS is
+    --     available, except US West (Oregon).
+    --
+    -- -   @SINGLE_AZ_2@- Creates file systems with throughput capacities of
+    --     160 - 10,240 MB\/s using an NVMe L2ARC cache. @Single_AZ_2@ is
+    --     available only in the US East (N. Virginia), US East (Ohio), US West
+    --     (Oregon), and Europe (Ireland) Amazon Web Services Regions.
+    --
+    -- For more information, see:
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/availability-durability.html#available-aws-regions Deployment type availability>
+    -- and
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#zfs-fs-performance File system performance>
+    -- in the /Amazon FSx for OpenZFS User Guide/.
+    deploymentType :: OpenZFSDeploymentType,
+    -- | Specifies the throughput of an Amazon FSx for OpenZFS file system,
+    -- measured in megabytes per second (MB\/s). Valid values depend on the
+    -- DeploymentType you choose, as follows:
+    --
+    -- -   For @SINGLE_AZ_1@, valid values are 64, 128, 256, 512, 1024, 2048,
+    --     3072, or 4096 MB\/s.
+    --
+    -- -   For @SINGLE_AZ_2@, valid values are 160, 320, 640, 1280, 2560, 3840,
+    --     5120, 7680, or 10240 MB\/s.
+    --
+    -- You pay for additional throughput capacity that you provision.
+    throughputCapacity :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemOpenZFSConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automaticBackupRetentionDays', 'createFileSystemOpenZFSConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'copyTagsToBackups', 'createFileSystemOpenZFSConfiguration_copyTagsToBackups' - A Boolean value indicating whether tags for the file system should be
+-- copied to backups. This value defaults to @false@. If it\'s set to
+-- @true@, all tags for the file system are copied to all automatic and
+-- user-initiated backups where the user doesn\'t specify tags. If this
+-- value is @true@, and you specify one or more tags, only the specified
+-- tags are copied to backups. If you specify one or more tags when
+-- creating a user-initiated backup, no tags are copied from the file
+-- system, regardless of this value.
+--
+-- 'copyTagsToVolumes', 'createFileSystemOpenZFSConfiguration_copyTagsToVolumes' - A Boolean value indicating whether tags for the file system should be
+-- copied to volumes. This value defaults to @false@. If it\'s set to
+-- @true@, all tags for the file system are copied to volumes where the
+-- user doesn\'t specify tags. If this value is @true@, and you specify one
+-- or more tags, only the specified tags are copied to volumes. If you
+-- specify one or more tags when creating the volume, no tags are copied
+-- from the file system, regardless of this value.
+--
+-- 'dailyAutomaticBackupStartTime', 'createFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'diskIopsConfiguration', 'createFileSystemOpenZFSConfiguration_diskIopsConfiguration' - Undocumented member.
+--
+-- 'rootVolumeConfiguration', 'createFileSystemOpenZFSConfiguration_rootVolumeConfiguration' - The configuration Amazon FSx uses when creating the root value of the
+-- Amazon FSx for OpenZFS file system. All volumes are children of the root
+-- volume.
+--
+-- 'weeklyMaintenanceStartTime', 'createFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+--
+-- 'deploymentType', 'createFileSystemOpenZFSConfiguration_deploymentType' - Specifies the file system deployment type. Single AZ deployment types
+-- are configured for redundancy within a single Availability Zone in an
+-- Amazon Web Services Region . Valid values are the following:
+--
+-- -   @SINGLE_AZ_1@- (Default) Creates file systems with throughput
+--     capacities of 64 - 4,096 MB\/s. @Single_AZ_1@ is available in all
+--     Amazon Web Services Regions where Amazon FSx for OpenZFS is
+--     available, except US West (Oregon).
+--
+-- -   @SINGLE_AZ_2@- Creates file systems with throughput capacities of
+--     160 - 10,240 MB\/s using an NVMe L2ARC cache. @Single_AZ_2@ is
+--     available only in the US East (N. Virginia), US East (Ohio), US West
+--     (Oregon), and Europe (Ireland) Amazon Web Services Regions.
+--
+-- For more information, see:
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/availability-durability.html#available-aws-regions Deployment type availability>
+-- and
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#zfs-fs-performance File system performance>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+--
+-- 'throughputCapacity', 'createFileSystemOpenZFSConfiguration_throughputCapacity' - Specifies the throughput of an Amazon FSx for OpenZFS file system,
+-- measured in megabytes per second (MB\/s). Valid values depend on the
+-- DeploymentType you choose, as follows:
+--
+-- -   For @SINGLE_AZ_1@, valid values are 64, 128, 256, 512, 1024, 2048,
+--     3072, or 4096 MB\/s.
+--
+-- -   For @SINGLE_AZ_2@, valid values are 160, 320, 640, 1280, 2560, 3840,
+--     5120, 7680, or 10240 MB\/s.
+--
+-- You pay for additional throughput capacity that you provision.
+newCreateFileSystemOpenZFSConfiguration ::
+  -- | 'deploymentType'
+  OpenZFSDeploymentType ->
+  -- | 'throughputCapacity'
+  Prelude.Natural ->
+  CreateFileSystemOpenZFSConfiguration
+newCreateFileSystemOpenZFSConfiguration
+  pDeploymentType_
+  pThroughputCapacity_ =
+    CreateFileSystemOpenZFSConfiguration'
+      { automaticBackupRetentionDays =
+          Prelude.Nothing,
+        copyTagsToBackups = Prelude.Nothing,
+        copyTagsToVolumes = Prelude.Nothing,
+        dailyAutomaticBackupStartTime =
+          Prelude.Nothing,
+        diskIopsConfiguration =
+          Prelude.Nothing,
+        rootVolumeConfiguration =
+          Prelude.Nothing,
+        weeklyMaintenanceStartTime =
+          Prelude.Nothing,
+        deploymentType = pDeploymentType_,
+        throughputCapacity =
+          pThroughputCapacity_
+      }
+
+-- | Undocumented member.
+createFileSystemOpenZFSConfiguration_automaticBackupRetentionDays :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Natural)
+createFileSystemOpenZFSConfiguration_automaticBackupRetentionDays = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | A Boolean value indicating whether tags for the file system should be
+-- copied to backups. This value defaults to @false@. If it\'s set to
+-- @true@, all tags for the file system are copied to all automatic and
+-- user-initiated backups where the user doesn\'t specify tags. If this
+-- value is @true@, and you specify one or more tags, only the specified
+-- tags are copied to backups. If you specify one or more tags when
+-- creating a user-initiated backup, no tags are copied from the file
+-- system, regardless of this value.
+createFileSystemOpenZFSConfiguration_copyTagsToBackups :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Bool)
+createFileSystemOpenZFSConfiguration_copyTagsToBackups = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {copyTagsToBackups = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | A Boolean value indicating whether tags for the file system should be
+-- copied to volumes. This value defaults to @false@. If it\'s set to
+-- @true@, all tags for the file system are copied to volumes where the
+-- user doesn\'t specify tags. If this value is @true@, and you specify one
+-- or more tags, only the specified tags are copied to volumes. If you
+-- specify one or more tags when creating the volume, no tags are copied
+-- from the file system, regardless of this value.
+createFileSystemOpenZFSConfiguration_copyTagsToVolumes :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Bool)
+createFileSystemOpenZFSConfiguration_copyTagsToVolumes = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {copyTagsToVolumes} -> copyTagsToVolumes) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {copyTagsToVolumes = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | Undocumented member.
+createFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | Undocumented member.
+createFileSystemOpenZFSConfiguration_diskIopsConfiguration :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe DiskIopsConfiguration)
+createFileSystemOpenZFSConfiguration_diskIopsConfiguration = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {diskIopsConfiguration = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | The configuration Amazon FSx uses when creating the root value of the
+-- Amazon FSx for OpenZFS file system. All volumes are children of the root
+-- volume.
+createFileSystemOpenZFSConfiguration_rootVolumeConfiguration :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe OpenZFSCreateRootVolumeConfiguration)
+createFileSystemOpenZFSConfiguration_rootVolumeConfiguration = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {rootVolumeConfiguration} -> rootVolumeConfiguration) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {rootVolumeConfiguration = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | Undocumented member.
+createFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | Specifies the file system deployment type. Single AZ deployment types
+-- are configured for redundancy within a single Availability Zone in an
+-- Amazon Web Services Region . Valid values are the following:
+--
+-- -   @SINGLE_AZ_1@- (Default) Creates file systems with throughput
+--     capacities of 64 - 4,096 MB\/s. @Single_AZ_1@ is available in all
+--     Amazon Web Services Regions where Amazon FSx for OpenZFS is
+--     available, except US West (Oregon).
+--
+-- -   @SINGLE_AZ_2@- Creates file systems with throughput capacities of
+--     160 - 10,240 MB\/s using an NVMe L2ARC cache. @Single_AZ_2@ is
+--     available only in the US East (N. Virginia), US East (Ohio), US West
+--     (Oregon), and Europe (Ireland) Amazon Web Services Regions.
+--
+-- For more information, see:
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/availability-durability.html#available-aws-regions Deployment type availability>
+-- and
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#zfs-fs-performance File system performance>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+createFileSystemOpenZFSConfiguration_deploymentType :: Lens.Lens' CreateFileSystemOpenZFSConfiguration OpenZFSDeploymentType
+createFileSystemOpenZFSConfiguration_deploymentType = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {deploymentType = a} :: CreateFileSystemOpenZFSConfiguration)
+
+-- | Specifies the throughput of an Amazon FSx for OpenZFS file system,
+-- measured in megabytes per second (MB\/s). Valid values depend on the
+-- DeploymentType you choose, as follows:
+--
+-- -   For @SINGLE_AZ_1@, valid values are 64, 128, 256, 512, 1024, 2048,
+--     3072, or 4096 MB\/s.
+--
+-- -   For @SINGLE_AZ_2@, valid values are 160, 320, 640, 1280, 2560, 3840,
+--     5120, 7680, or 10240 MB\/s.
+--
+-- You pay for additional throughput capacity that you provision.
+createFileSystemOpenZFSConfiguration_throughputCapacity :: Lens.Lens' CreateFileSystemOpenZFSConfiguration Prelude.Natural
+createFileSystemOpenZFSConfiguration_throughputCapacity = Lens.lens (\CreateFileSystemOpenZFSConfiguration' {throughputCapacity} -> throughputCapacity) (\s@CreateFileSystemOpenZFSConfiguration' {} a -> s {throughputCapacity = a} :: CreateFileSystemOpenZFSConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateFileSystemOpenZFSConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateFileSystemOpenZFSConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` copyTagsToVolumes
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` diskIopsConfiguration
+        `Prelude.hashWithSalt` rootVolumeConfiguration
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` throughputCapacity
+
+instance
+  Prelude.NFData
+    CreateFileSystemOpenZFSConfiguration
+  where
+  rnf CreateFileSystemOpenZFSConfiguration' {..} =
+    Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf copyTagsToVolumes
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf diskIopsConfiguration
+      `Prelude.seq` Prelude.rnf rootVolumeConfiguration
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf throughputCapacity
+
+instance
+  Data.ToJSON
+    CreateFileSystemOpenZFSConfiguration
+  where
+  toJSON CreateFileSystemOpenZFSConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("CopyTagsToBackups" Data..=)
+              Prelude.<$> copyTagsToBackups,
+            ("CopyTagsToVolumes" Data..=)
+              Prelude.<$> copyTagsToVolumes,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DiskIopsConfiguration" Data..=)
+              Prelude.<$> diskIopsConfiguration,
+            ("RootVolumeConfiguration" Data..=)
+              Prelude.<$> rootVolumeConfiguration,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime,
+            Prelude.Just
+              ("DeploymentType" Data..= deploymentType),
+            Prelude.Just
+              ("ThroughputCapacity" Data..= throughputCapacity)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateFileSystemWindowsConfiguration.hs b/gen/Amazonka/FSx/Types/CreateFileSystemWindowsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateFileSystemWindowsConfiguration.hs
@@ -0,0 +1,438 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CreateFileSystemWindowsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateFileSystemWindowsConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfiguration
+import Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
+import Amazonka.FSx.Types.WindowsDeploymentType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for the Microsoft Windows file system used in
+-- @CreateFileSystem@ and @CreateFileSystemFromBackup@ operations.
+--
+-- /See:/ 'newCreateFileSystemWindowsConfiguration' smart constructor.
+data CreateFileSystemWindowsConfiguration = CreateFileSystemWindowsConfiguration'
+  { -- | The ID for an existing Amazon Web Services Managed Microsoft Active
+    -- Directory (AD) instance that the file system should join when it\'s
+    -- created.
+    activeDirectoryId :: Prelude.Maybe Prelude.Text,
+    -- | An array of one or more DNS alias names that you want to associate with
+    -- the Amazon FSx file system. Aliases allow you to use existing DNS names
+    -- to access the data in your Amazon FSx file system. You can associate up
+    -- to 50 aliases with a file system at any time. You can associate
+    -- additional DNS aliases after you create the file system using the
+    -- AssociateFileSystemAliases operation. You can remove DNS aliases from
+    -- the file system after it is created using the
+    -- DisassociateFileSystemAliases operation. You only need to specify the
+    -- alias name in the request payload.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
+    -- and
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
+    -- including additional steps you must take to be able to access your file
+    -- system using a DNS alias.
+    --
+    -- An alias name has to meet the following requirements:
+    --
+    -- -   Formatted as a fully-qualified domain name (FQDN),
+    --     @hostname.domain@, for example, @accounting.example.com@.
+    --
+    -- -   Can contain alphanumeric characters, the underscore (_), and the
+    --     hyphen (-).
+    --
+    -- -   Cannot start or end with a hyphen.
+    --
+    -- -   Can start with a numeric.
+    --
+    -- For DNS alias names, Amazon FSx stores alphabetic characters as
+    -- lowercase letters (a-z), regardless of how you specify them: as
+    -- uppercase letters, lowercase letters, or the corresponding letters in
+    -- escape codes.
+    aliases :: Prelude.Maybe [Prelude.Text],
+    -- | The configuration that Amazon FSx for Windows File Server uses to audit
+    -- and log user accesses of files, folders, and file shares on the Amazon
+    -- FSx for Windows File Server file system.
+    auditLogConfiguration :: Prelude.Maybe WindowsAuditLogCreateConfiguration,
+    -- | The number of days to retain automatic backups. The default is to retain
+    -- backups for 7 days. Setting this value to 0 disables the creation of
+    -- automatic backups. The maximum retention period for backups is 90 days.
+    automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | A boolean flag indicating whether tags for the file system should be
+    -- copied to backups. This value defaults to false. If it\'s set to true,
+    -- all tags for the file system are copied to all automatic and
+    -- user-initiated backups where the user doesn\'t specify tags. If this
+    -- value is true, and you specify one or more tags, only the specified tags
+    -- are copied to backups. If you specify one or more tags when creating a
+    -- user-initiated backup, no tags are copied from the file system,
+    -- regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | The preferred time to take daily automatic backups, formatted HH:MM in
+    -- the UTC time zone.
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the file system deployment type, valid values are the
+    -- following:
+    --
+    -- -   @MULTI_AZ_1@ - Deploys a high availability file system that is
+    --     configured for Multi-AZ redundancy to tolerate temporary
+    --     Availability Zone (AZ) unavailability. You can only deploy a
+    --     Multi-AZ file system in Amazon Web Services Regions that have a
+    --     minimum of three Availability Zones. Also supports HDD storage type
+    --
+    -- -   @SINGLE_AZ_1@ - (Default) Choose to deploy a file system that is
+    --     configured for single AZ redundancy.
+    --
+    -- -   @SINGLE_AZ_2@ - The latest generation Single AZ file system.
+    --     Specifies a file system that is configured for single AZ redundancy
+    --     and supports HDD storage type.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and Durability: Single-AZ and Multi-AZ File Systems>.
+    deploymentType :: Prelude.Maybe WindowsDeploymentType,
+    -- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
+    -- the subnet in which you want the preferred file server to be located.
+    -- For in-Amazon Web Services applications, we recommend that you launch
+    -- your clients in the same Availability Zone (AZ) as your preferred file
+    -- server to reduce cross-AZ data transfer costs and minimize latency.
+    preferredSubnetId :: Prelude.Maybe Prelude.Text,
+    selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryConfiguration,
+    -- | The preferred start time to perform weekly maintenance, formatted
+    -- d:HH:MM in the UTC time zone, where d is the weekday number, from 1
+    -- through 7, beginning with Monday and ending with Sunday.
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Sets the throughput capacity of an Amazon FSx file system, measured in
+    -- megabytes per second (MB\/s), in 2 to the /n/th increments, between 2^3
+    -- (8) and 2^11 (2048).
+    throughputCapacity :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFileSystemWindowsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryId', 'createFileSystemWindowsConfiguration_activeDirectoryId' - The ID for an existing Amazon Web Services Managed Microsoft Active
+-- Directory (AD) instance that the file system should join when it\'s
+-- created.
+--
+-- 'aliases', 'createFileSystemWindowsConfiguration_aliases' - An array of one or more DNS alias names that you want to associate with
+-- the Amazon FSx file system. Aliases allow you to use existing DNS names
+-- to access the data in your Amazon FSx file system. You can associate up
+-- to 50 aliases with a file system at any time. You can associate
+-- additional DNS aliases after you create the file system using the
+-- AssociateFileSystemAliases operation. You can remove DNS aliases from
+-- the file system after it is created using the
+-- DisassociateFileSystemAliases operation. You only need to specify the
+-- alias name in the request payload.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
+-- and
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
+-- including additional steps you must take to be able to access your file
+-- system using a DNS alias.
+--
+-- An alias name has to meet the following requirements:
+--
+-- -   Formatted as a fully-qualified domain name (FQDN),
+--     @hostname.domain@, for example, @accounting.example.com@.
+--
+-- -   Can contain alphanumeric characters, the underscore (_), and the
+--     hyphen (-).
+--
+-- -   Cannot start or end with a hyphen.
+--
+-- -   Can start with a numeric.
+--
+-- For DNS alias names, Amazon FSx stores alphabetic characters as
+-- lowercase letters (a-z), regardless of how you specify them: as
+-- uppercase letters, lowercase letters, or the corresponding letters in
+-- escape codes.
+--
+-- 'auditLogConfiguration', 'createFileSystemWindowsConfiguration_auditLogConfiguration' - The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system.
+--
+-- 'automaticBackupRetentionDays', 'createFileSystemWindowsConfiguration_automaticBackupRetentionDays' - The number of days to retain automatic backups. The default is to retain
+-- backups for 7 days. Setting this value to 0 disables the creation of
+-- automatic backups. The maximum retention period for backups is 90 days.
+--
+-- 'copyTagsToBackups', 'createFileSystemWindowsConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags for the file system should be
+-- copied to backups. This value defaults to false. If it\'s set to true,
+-- all tags for the file system are copied to all automatic and
+-- user-initiated backups where the user doesn\'t specify tags. If this
+-- value is true, and you specify one or more tags, only the specified tags
+-- are copied to backups. If you specify one or more tags when creating a
+-- user-initiated backup, no tags are copied from the file system,
+-- regardless of this value.
+--
+-- 'dailyAutomaticBackupStartTime', 'createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime' - The preferred time to take daily automatic backups, formatted HH:MM in
+-- the UTC time zone.
+--
+-- 'deploymentType', 'createFileSystemWindowsConfiguration_deploymentType' - Specifies the file system deployment type, valid values are the
+-- following:
+--
+-- -   @MULTI_AZ_1@ - Deploys a high availability file system that is
+--     configured for Multi-AZ redundancy to tolerate temporary
+--     Availability Zone (AZ) unavailability. You can only deploy a
+--     Multi-AZ file system in Amazon Web Services Regions that have a
+--     minimum of three Availability Zones. Also supports HDD storage type
+--
+-- -   @SINGLE_AZ_1@ - (Default) Choose to deploy a file system that is
+--     configured for single AZ redundancy.
+--
+-- -   @SINGLE_AZ_2@ - The latest generation Single AZ file system.
+--     Specifies a file system that is configured for single AZ redundancy
+--     and supports HDD storage type.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and Durability: Single-AZ and Multi-AZ File Systems>.
+--
+-- 'preferredSubnetId', 'createFileSystemWindowsConfiguration_preferredSubnetId' - Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
+-- the subnet in which you want the preferred file server to be located.
+-- For in-Amazon Web Services applications, we recommend that you launch
+-- your clients in the same Availability Zone (AZ) as your preferred file
+-- server to reduce cross-AZ data transfer costs and minimize latency.
+--
+-- 'selfManagedActiveDirectoryConfiguration', 'createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration' - Undocumented member.
+--
+-- 'weeklyMaintenanceStartTime', 'createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime' - The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone, where d is the weekday number, from 1
+-- through 7, beginning with Monday and ending with Sunday.
+--
+-- 'throughputCapacity', 'createFileSystemWindowsConfiguration_throughputCapacity' - Sets the throughput capacity of an Amazon FSx file system, measured in
+-- megabytes per second (MB\/s), in 2 to the /n/th increments, between 2^3
+-- (8) and 2^11 (2048).
+newCreateFileSystemWindowsConfiguration ::
+  -- | 'throughputCapacity'
+  Prelude.Natural ->
+  CreateFileSystemWindowsConfiguration
+newCreateFileSystemWindowsConfiguration
+  pThroughputCapacity_ =
+    CreateFileSystemWindowsConfiguration'
+      { activeDirectoryId =
+          Prelude.Nothing,
+        aliases = Prelude.Nothing,
+        auditLogConfiguration =
+          Prelude.Nothing,
+        automaticBackupRetentionDays =
+          Prelude.Nothing,
+        copyTagsToBackups = Prelude.Nothing,
+        dailyAutomaticBackupStartTime =
+          Prelude.Nothing,
+        deploymentType = Prelude.Nothing,
+        preferredSubnetId = Prelude.Nothing,
+        selfManagedActiveDirectoryConfiguration =
+          Prelude.Nothing,
+        weeklyMaintenanceStartTime =
+          Prelude.Nothing,
+        throughputCapacity =
+          pThroughputCapacity_
+      }
+
+-- | The ID for an existing Amazon Web Services Managed Microsoft Active
+-- Directory (AD) instance that the file system should join when it\'s
+-- created.
+createFileSystemWindowsConfiguration_activeDirectoryId :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemWindowsConfiguration_activeDirectoryId = Lens.lens (\CreateFileSystemWindowsConfiguration' {activeDirectoryId} -> activeDirectoryId) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {activeDirectoryId = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | An array of one or more DNS alias names that you want to associate with
+-- the Amazon FSx file system. Aliases allow you to use existing DNS names
+-- to access the data in your Amazon FSx file system. You can associate up
+-- to 50 aliases with a file system at any time. You can associate
+-- additional DNS aliases after you create the file system using the
+-- AssociateFileSystemAliases operation. You can remove DNS aliases from
+-- the file system after it is created using the
+-- DisassociateFileSystemAliases operation. You only need to specify the
+-- alias name in the request payload.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
+-- and
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
+-- including additional steps you must take to be able to access your file
+-- system using a DNS alias.
+--
+-- An alias name has to meet the following requirements:
+--
+-- -   Formatted as a fully-qualified domain name (FQDN),
+--     @hostname.domain@, for example, @accounting.example.com@.
+--
+-- -   Can contain alphanumeric characters, the underscore (_), and the
+--     hyphen (-).
+--
+-- -   Cannot start or end with a hyphen.
+--
+-- -   Can start with a numeric.
+--
+-- For DNS alias names, Amazon FSx stores alphabetic characters as
+-- lowercase letters (a-z), regardless of how you specify them: as
+-- uppercase letters, lowercase letters, or the corresponding letters in
+-- escape codes.
+createFileSystemWindowsConfiguration_aliases :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe [Prelude.Text])
+createFileSystemWindowsConfiguration_aliases = Lens.lens (\CreateFileSystemWindowsConfiguration' {aliases} -> aliases) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {aliases = a} :: CreateFileSystemWindowsConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system.
+createFileSystemWindowsConfiguration_auditLogConfiguration :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe WindowsAuditLogCreateConfiguration)
+createFileSystemWindowsConfiguration_auditLogConfiguration = Lens.lens (\CreateFileSystemWindowsConfiguration' {auditLogConfiguration} -> auditLogConfiguration) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {auditLogConfiguration = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | The number of days to retain automatic backups. The default is to retain
+-- backups for 7 days. Setting this value to 0 disables the creation of
+-- automatic backups. The maximum retention period for backups is 90 days.
+createFileSystemWindowsConfiguration_automaticBackupRetentionDays :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Natural)
+createFileSystemWindowsConfiguration_automaticBackupRetentionDays = Lens.lens (\CreateFileSystemWindowsConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | A boolean flag indicating whether tags for the file system should be
+-- copied to backups. This value defaults to false. If it\'s set to true,
+-- all tags for the file system are copied to all automatic and
+-- user-initiated backups where the user doesn\'t specify tags. If this
+-- value is true, and you specify one or more tags, only the specified tags
+-- are copied to backups. If you specify one or more tags when creating a
+-- user-initiated backup, no tags are copied from the file system,
+-- regardless of this value.
+createFileSystemWindowsConfiguration_copyTagsToBackups :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Bool)
+createFileSystemWindowsConfiguration_copyTagsToBackups = Lens.lens (\CreateFileSystemWindowsConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {copyTagsToBackups = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | The preferred time to take daily automatic backups, formatted HH:MM in
+-- the UTC time zone.
+createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\CreateFileSystemWindowsConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | Specifies the file system deployment type, valid values are the
+-- following:
+--
+-- -   @MULTI_AZ_1@ - Deploys a high availability file system that is
+--     configured for Multi-AZ redundancy to tolerate temporary
+--     Availability Zone (AZ) unavailability. You can only deploy a
+--     Multi-AZ file system in Amazon Web Services Regions that have a
+--     minimum of three Availability Zones. Also supports HDD storage type
+--
+-- -   @SINGLE_AZ_1@ - (Default) Choose to deploy a file system that is
+--     configured for single AZ redundancy.
+--
+-- -   @SINGLE_AZ_2@ - The latest generation Single AZ file system.
+--     Specifies a file system that is configured for single AZ redundancy
+--     and supports HDD storage type.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and Durability: Single-AZ and Multi-AZ File Systems>.
+createFileSystemWindowsConfiguration_deploymentType :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe WindowsDeploymentType)
+createFileSystemWindowsConfiguration_deploymentType = Lens.lens (\CreateFileSystemWindowsConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {deploymentType = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
+-- the subnet in which you want the preferred file server to be located.
+-- For in-Amazon Web Services applications, we recommend that you launch
+-- your clients in the same Availability Zone (AZ) as your preferred file
+-- server to reduce cross-AZ data transfer costs and minimize latency.
+createFileSystemWindowsConfiguration_preferredSubnetId :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemWindowsConfiguration_preferredSubnetId = Lens.lens (\CreateFileSystemWindowsConfiguration' {preferredSubnetId} -> preferredSubnetId) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {preferredSubnetId = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | Undocumented member.
+createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe SelfManagedActiveDirectoryConfiguration)
+createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\CreateFileSystemWindowsConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {selfManagedActiveDirectoryConfiguration = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone, where d is the weekday number, from 1
+-- through 7, beginning with Monday and ending with Sunday.
+createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
+createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime = Lens.lens (\CreateFileSystemWindowsConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: CreateFileSystemWindowsConfiguration)
+
+-- | Sets the throughput capacity of an Amazon FSx file system, measured in
+-- megabytes per second (MB\/s), in 2 to the /n/th increments, between 2^3
+-- (8) and 2^11 (2048).
+createFileSystemWindowsConfiguration_throughputCapacity :: Lens.Lens' CreateFileSystemWindowsConfiguration Prelude.Natural
+createFileSystemWindowsConfiguration_throughputCapacity = Lens.lens (\CreateFileSystemWindowsConfiguration' {throughputCapacity} -> throughputCapacity) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {throughputCapacity = a} :: CreateFileSystemWindowsConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateFileSystemWindowsConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateFileSystemWindowsConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` activeDirectoryId
+        `Prelude.hashWithSalt` aliases
+        `Prelude.hashWithSalt` auditLogConfiguration
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` preferredSubnetId
+        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+        `Prelude.hashWithSalt` throughputCapacity
+
+instance
+  Prelude.NFData
+    CreateFileSystemWindowsConfiguration
+  where
+  rnf CreateFileSystemWindowsConfiguration' {..} =
+    Prelude.rnf activeDirectoryId
+      `Prelude.seq` Prelude.rnf aliases
+      `Prelude.seq` Prelude.rnf auditLogConfiguration
+      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf preferredSubnetId
+      `Prelude.seq` Prelude.rnf selfManagedActiveDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+      `Prelude.seq` Prelude.rnf throughputCapacity
+
+instance
+  Data.ToJSON
+    CreateFileSystemWindowsConfiguration
+  where
+  toJSON CreateFileSystemWindowsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveDirectoryId" Data..=)
+              Prelude.<$> activeDirectoryId,
+            ("Aliases" Data..=) Prelude.<$> aliases,
+            ("AuditLogConfiguration" Data..=)
+              Prelude.<$> auditLogConfiguration,
+            ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("CopyTagsToBackups" Data..=)
+              Prelude.<$> copyTagsToBackups,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DeploymentType" Data..=)
+              Prelude.<$> deploymentType,
+            ("PreferredSubnetId" Data..=)
+              Prelude.<$> preferredSubnetId,
+            ("SelfManagedActiveDirectoryConfiguration" Data..=)
+              Prelude.<$> selfManagedActiveDirectoryConfiguration,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime,
+            Prelude.Just
+              ("ThroughputCapacity" Data..= throughputCapacity)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateOntapVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/CreateOntapVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateOntapVolumeConfiguration.hs
@@ -0,0 +1,370 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CreateOntapVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateOntapVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.InputOntapVolumeType
+import Amazonka.FSx.Types.SecurityStyle
+import Amazonka.FSx.Types.TieringPolicy
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies the configuration of the ONTAP volume that you are creating.
+--
+-- /See:/ 'newCreateOntapVolumeConfiguration' smart constructor.
+data CreateOntapVolumeConfiguration = CreateOntapVolumeConfiguration'
+  { -- | A boolean flag indicating whether tags for the volume should be copied
+    -- to backups. This value defaults to false. If it\'s set to true, all tags
+    -- for the volume are copied to all automatic and user-initiated backups
+    -- where the user doesn\'t specify tags. If this value is true, and you
+    -- specify one or more tags, only the specified tags are copied to backups.
+    -- If you specify one or more tags when creating a user-initiated backup,
+    -- no tags are copied from the volume, regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the location in the SVM\'s namespace where the volume is
+    -- mounted. The @JunctionPath@ must have a leading forward slash, such as
+    -- @\/vol3@.
+    junctionPath :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the type of volume you are creating. Valid values are the
+    -- following:
+    --
+    -- -   @RW@ specifies a read\/write volume. @RW@ is the default.
+    --
+    -- -   @DP@ specifies a data-protection volume. A @DP@ volume is read-only
+    --     and can be used as the destination of a NetApp SnapMirror
+    --     relationship.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/volume-types Volume types>
+    -- in the /Amazon FSx for NetApp ONTAP User Guide/.
+    ontapVolumeType :: Prelude.Maybe InputOntapVolumeType,
+    -- | Specifies the security style for the volume. If a volume\'s security
+    -- style is not specified, it is automatically set to the root volume\'s
+    -- security style. The security style determines the type of permissions
+    -- that FSx for ONTAP uses to control data access. For more information,
+    -- see
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-volumes.html#volume-security-style Volume security style>
+    -- in the /Amazon FSx for NetApp ONTAP User Guide/. Specify one of the
+    -- following values:
+    --
+    -- -   @UNIX@ if the file system is managed by a UNIX administrator, the
+    --     majority of users are NFS clients, and an application accessing the
+    --     data uses a UNIX user as the service account.
+    --
+    -- -   @NTFS@ if the file system is managed by a Windows administrator, the
+    --     majority of users are SMB clients, and an application accessing the
+    --     data uses a Windows user as the service account.
+    --
+    -- -   @MIXED@ if the file system is managed by both UNIX and Windows
+    --     administrators and users consist of both NFS and SMB clients.
+    securityStyle :: Prelude.Maybe SecurityStyle,
+    -- | Specifies the snapshot policy for the volume. There are three built-in
+    -- snapshot policies:
+    --
+    -- -   @default@: This is the default policy. A maximum of six hourly
+    --     snapshots taken five minutes past the hour. A maximum of two daily
+    --     snapshots taken Monday through Saturday at 10 minutes after
+    --     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+    --     minutes after midnight.
+    --
+    -- -   @default-1weekly@: This policy is the same as the @default@ policy
+    --     except that it only retains one snapshot from the weekly schedule.
+    --
+    -- -   @none@: This policy does not take any snapshots. This policy can be
+    --     assigned to volumes to prevent automatic snapshots from being taken.
+    --
+    -- You can also provide the name of a custom policy that you created with
+    -- the ONTAP CLI or REST API.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+    -- in the /Amazon FSx for NetApp ONTAP User Guide/.
+    snapshotPolicy :: Prelude.Maybe Prelude.Text,
+    -- | Set to true to enable deduplication, compression, and compaction storage
+    -- efficiency features on the volume.
+    storageEfficiencyEnabled :: Prelude.Maybe Prelude.Bool,
+    tieringPolicy :: Prelude.Maybe TieringPolicy,
+    -- | Specifies the size of the volume, in megabytes (MB), that you are
+    -- creating.
+    sizeInMegabytes :: Prelude.Natural,
+    -- | Specifies the ONTAP SVM in which to create the volume.
+    storageVirtualMachineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOntapVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToBackups', 'createOntapVolumeConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags for the volume should be copied
+-- to backups. This value defaults to false. If it\'s set to true, all tags
+-- for the volume are copied to all automatic and user-initiated backups
+-- where the user doesn\'t specify tags. If this value is true, and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the volume, regardless of this value.
+--
+-- 'junctionPath', 'createOntapVolumeConfiguration_junctionPath' - Specifies the location in the SVM\'s namespace where the volume is
+-- mounted. The @JunctionPath@ must have a leading forward slash, such as
+-- @\/vol3@.
+--
+-- 'ontapVolumeType', 'createOntapVolumeConfiguration_ontapVolumeType' - Specifies the type of volume you are creating. Valid values are the
+-- following:
+--
+-- -   @RW@ specifies a read\/write volume. @RW@ is the default.
+--
+-- -   @DP@ specifies a data-protection volume. A @DP@ volume is read-only
+--     and can be used as the destination of a NetApp SnapMirror
+--     relationship.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/volume-types Volume types>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+--
+-- 'securityStyle', 'createOntapVolumeConfiguration_securityStyle' - Specifies the security style for the volume. If a volume\'s security
+-- style is not specified, it is automatically set to the root volume\'s
+-- security style. The security style determines the type of permissions
+-- that FSx for ONTAP uses to control data access. For more information,
+-- see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-volumes.html#volume-security-style Volume security style>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/. Specify one of the
+-- following values:
+--
+-- -   @UNIX@ if the file system is managed by a UNIX administrator, the
+--     majority of users are NFS clients, and an application accessing the
+--     data uses a UNIX user as the service account.
+--
+-- -   @NTFS@ if the file system is managed by a Windows administrator, the
+--     majority of users are SMB clients, and an application accessing the
+--     data uses a Windows user as the service account.
+--
+-- -   @MIXED@ if the file system is managed by both UNIX and Windows
+--     administrators and users consist of both NFS and SMB clients.
+--
+-- 'snapshotPolicy', 'createOntapVolumeConfiguration_snapshotPolicy' - Specifies the snapshot policy for the volume. There are three built-in
+-- snapshot policies:
+--
+-- -   @default@: This is the default policy. A maximum of six hourly
+--     snapshots taken five minutes past the hour. A maximum of two daily
+--     snapshots taken Monday through Saturday at 10 minutes after
+--     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+--     minutes after midnight.
+--
+-- -   @default-1weekly@: This policy is the same as the @default@ policy
+--     except that it only retains one snapshot from the weekly schedule.
+--
+-- -   @none@: This policy does not take any snapshots. This policy can be
+--     assigned to volumes to prevent automatic snapshots from being taken.
+--
+-- You can also provide the name of a custom policy that you created with
+-- the ONTAP CLI or REST API.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+--
+-- 'storageEfficiencyEnabled', 'createOntapVolumeConfiguration_storageEfficiencyEnabled' - Set to true to enable deduplication, compression, and compaction storage
+-- efficiency features on the volume.
+--
+-- 'tieringPolicy', 'createOntapVolumeConfiguration_tieringPolicy' - Undocumented member.
+--
+-- 'sizeInMegabytes', 'createOntapVolumeConfiguration_sizeInMegabytes' - Specifies the size of the volume, in megabytes (MB), that you are
+-- creating.
+--
+-- 'storageVirtualMachineId', 'createOntapVolumeConfiguration_storageVirtualMachineId' - Specifies the ONTAP SVM in which to create the volume.
+newCreateOntapVolumeConfiguration ::
+  -- | 'sizeInMegabytes'
+  Prelude.Natural ->
+  -- | 'storageVirtualMachineId'
+  Prelude.Text ->
+  CreateOntapVolumeConfiguration
+newCreateOntapVolumeConfiguration
+  pSizeInMegabytes_
+  pStorageVirtualMachineId_ =
+    CreateOntapVolumeConfiguration'
+      { copyTagsToBackups =
+          Prelude.Nothing,
+        junctionPath = Prelude.Nothing,
+        ontapVolumeType = Prelude.Nothing,
+        securityStyle = Prelude.Nothing,
+        snapshotPolicy = Prelude.Nothing,
+        storageEfficiencyEnabled = Prelude.Nothing,
+        tieringPolicy = Prelude.Nothing,
+        sizeInMegabytes = pSizeInMegabytes_,
+        storageVirtualMachineId =
+          pStorageVirtualMachineId_
+      }
+
+-- | A boolean flag indicating whether tags for the volume should be copied
+-- to backups. This value defaults to false. If it\'s set to true, all tags
+-- for the volume are copied to all automatic and user-initiated backups
+-- where the user doesn\'t specify tags. If this value is true, and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the volume, regardless of this value.
+createOntapVolumeConfiguration_copyTagsToBackups :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+createOntapVolumeConfiguration_copyTagsToBackups = Lens.lens (\CreateOntapVolumeConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@CreateOntapVolumeConfiguration' {} a -> s {copyTagsToBackups = a} :: CreateOntapVolumeConfiguration)
+
+-- | Specifies the location in the SVM\'s namespace where the volume is
+-- mounted. The @JunctionPath@ must have a leading forward slash, such as
+-- @\/vol3@.
+createOntapVolumeConfiguration_junctionPath :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+createOntapVolumeConfiguration_junctionPath = Lens.lens (\CreateOntapVolumeConfiguration' {junctionPath} -> junctionPath) (\s@CreateOntapVolumeConfiguration' {} a -> s {junctionPath = a} :: CreateOntapVolumeConfiguration)
+
+-- | Specifies the type of volume you are creating. Valid values are the
+-- following:
+--
+-- -   @RW@ specifies a read\/write volume. @RW@ is the default.
+--
+-- -   @DP@ specifies a data-protection volume. A @DP@ volume is read-only
+--     and can be used as the destination of a NetApp SnapMirror
+--     relationship.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/volume-types Volume types>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+createOntapVolumeConfiguration_ontapVolumeType :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe InputOntapVolumeType)
+createOntapVolumeConfiguration_ontapVolumeType = Lens.lens (\CreateOntapVolumeConfiguration' {ontapVolumeType} -> ontapVolumeType) (\s@CreateOntapVolumeConfiguration' {} a -> s {ontapVolumeType = a} :: CreateOntapVolumeConfiguration)
+
+-- | Specifies the security style for the volume. If a volume\'s security
+-- style is not specified, it is automatically set to the root volume\'s
+-- security style. The security style determines the type of permissions
+-- that FSx for ONTAP uses to control data access. For more information,
+-- see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-volumes.html#volume-security-style Volume security style>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/. Specify one of the
+-- following values:
+--
+-- -   @UNIX@ if the file system is managed by a UNIX administrator, the
+--     majority of users are NFS clients, and an application accessing the
+--     data uses a UNIX user as the service account.
+--
+-- -   @NTFS@ if the file system is managed by a Windows administrator, the
+--     majority of users are SMB clients, and an application accessing the
+--     data uses a Windows user as the service account.
+--
+-- -   @MIXED@ if the file system is managed by both UNIX and Windows
+--     administrators and users consist of both NFS and SMB clients.
+createOntapVolumeConfiguration_securityStyle :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe SecurityStyle)
+createOntapVolumeConfiguration_securityStyle = Lens.lens (\CreateOntapVolumeConfiguration' {securityStyle} -> securityStyle) (\s@CreateOntapVolumeConfiguration' {} a -> s {securityStyle = a} :: CreateOntapVolumeConfiguration)
+
+-- | Specifies the snapshot policy for the volume. There are three built-in
+-- snapshot policies:
+--
+-- -   @default@: This is the default policy. A maximum of six hourly
+--     snapshots taken five minutes past the hour. A maximum of two daily
+--     snapshots taken Monday through Saturday at 10 minutes after
+--     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+--     minutes after midnight.
+--
+-- -   @default-1weekly@: This policy is the same as the @default@ policy
+--     except that it only retains one snapshot from the weekly schedule.
+--
+-- -   @none@: This policy does not take any snapshots. This policy can be
+--     assigned to volumes to prevent automatic snapshots from being taken.
+--
+-- You can also provide the name of a custom policy that you created with
+-- the ONTAP CLI or REST API.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+createOntapVolumeConfiguration_snapshotPolicy :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+createOntapVolumeConfiguration_snapshotPolicy = Lens.lens (\CreateOntapVolumeConfiguration' {snapshotPolicy} -> snapshotPolicy) (\s@CreateOntapVolumeConfiguration' {} a -> s {snapshotPolicy = a} :: CreateOntapVolumeConfiguration)
+
+-- | Set to true to enable deduplication, compression, and compaction storage
+-- efficiency features on the volume.
+createOntapVolumeConfiguration_storageEfficiencyEnabled :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+createOntapVolumeConfiguration_storageEfficiencyEnabled = Lens.lens (\CreateOntapVolumeConfiguration' {storageEfficiencyEnabled} -> storageEfficiencyEnabled) (\s@CreateOntapVolumeConfiguration' {} a -> s {storageEfficiencyEnabled = a} :: CreateOntapVolumeConfiguration)
+
+-- | Undocumented member.
+createOntapVolumeConfiguration_tieringPolicy :: Lens.Lens' CreateOntapVolumeConfiguration (Prelude.Maybe TieringPolicy)
+createOntapVolumeConfiguration_tieringPolicy = Lens.lens (\CreateOntapVolumeConfiguration' {tieringPolicy} -> tieringPolicy) (\s@CreateOntapVolumeConfiguration' {} a -> s {tieringPolicy = a} :: CreateOntapVolumeConfiguration)
+
+-- | Specifies the size of the volume, in megabytes (MB), that you are
+-- creating.
+createOntapVolumeConfiguration_sizeInMegabytes :: Lens.Lens' CreateOntapVolumeConfiguration Prelude.Natural
+createOntapVolumeConfiguration_sizeInMegabytes = Lens.lens (\CreateOntapVolumeConfiguration' {sizeInMegabytes} -> sizeInMegabytes) (\s@CreateOntapVolumeConfiguration' {} a -> s {sizeInMegabytes = a} :: CreateOntapVolumeConfiguration)
+
+-- | Specifies the ONTAP SVM in which to create the volume.
+createOntapVolumeConfiguration_storageVirtualMachineId :: Lens.Lens' CreateOntapVolumeConfiguration Prelude.Text
+createOntapVolumeConfiguration_storageVirtualMachineId = Lens.lens (\CreateOntapVolumeConfiguration' {storageVirtualMachineId} -> storageVirtualMachineId) (\s@CreateOntapVolumeConfiguration' {} a -> s {storageVirtualMachineId = a} :: CreateOntapVolumeConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateOntapVolumeConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateOntapVolumeConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` junctionPath
+        `Prelude.hashWithSalt` ontapVolumeType
+        `Prelude.hashWithSalt` securityStyle
+        `Prelude.hashWithSalt` snapshotPolicy
+        `Prelude.hashWithSalt` storageEfficiencyEnabled
+        `Prelude.hashWithSalt` tieringPolicy
+        `Prelude.hashWithSalt` sizeInMegabytes
+        `Prelude.hashWithSalt` storageVirtualMachineId
+
+instance
+  Prelude.NFData
+    CreateOntapVolumeConfiguration
+  where
+  rnf CreateOntapVolumeConfiguration' {..} =
+    Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf junctionPath
+      `Prelude.seq` Prelude.rnf ontapVolumeType
+      `Prelude.seq` Prelude.rnf securityStyle
+      `Prelude.seq` Prelude.rnf snapshotPolicy
+      `Prelude.seq` Prelude.rnf storageEfficiencyEnabled
+      `Prelude.seq` Prelude.rnf tieringPolicy
+      `Prelude.seq` Prelude.rnf sizeInMegabytes
+      `Prelude.seq` Prelude.rnf storageVirtualMachineId
+
+instance Data.ToJSON CreateOntapVolumeConfiguration where
+  toJSON CreateOntapVolumeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CopyTagsToBackups" Data..=)
+              Prelude.<$> copyTagsToBackups,
+            ("JunctionPath" Data..=) Prelude.<$> junctionPath,
+            ("OntapVolumeType" Data..=)
+              Prelude.<$> ontapVolumeType,
+            ("SecurityStyle" Data..=) Prelude.<$> securityStyle,
+            ("SnapshotPolicy" Data..=)
+              Prelude.<$> snapshotPolicy,
+            ("StorageEfficiencyEnabled" Data..=)
+              Prelude.<$> storageEfficiencyEnabled,
+            ("TieringPolicy" Data..=) Prelude.<$> tieringPolicy,
+            Prelude.Just
+              ("SizeInMegabytes" Data..= sizeInMegabytes),
+            Prelude.Just
+              ( "StorageVirtualMachineId"
+                  Data..= storageVirtualMachineId
+              )
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateOpenZFSOriginSnapshotConfiguration.hs b/gen/Amazonka/FSx/Types/CreateOpenZFSOriginSnapshotConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateOpenZFSOriginSnapshotConfiguration.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.FSx.Types.CreateOpenZFSOriginSnapshotConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateOpenZFSOriginSnapshotConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSCopyStrategy
+import qualified Amazonka.Prelude as Prelude
+
+-- | The snapshot configuration to use when creating an OpenZFS volume from a
+-- snapshot.
+--
+-- /See:/ 'newCreateOpenZFSOriginSnapshotConfiguration' smart constructor.
+data CreateOpenZFSOriginSnapshotConfiguration = CreateOpenZFSOriginSnapshotConfiguration'
+  { snapshotARN :: Prelude.Text,
+    -- | The strategy used when copying data from the snapshot to the new volume.
+    --
+    -- -   @CLONE@ - The new volume references the data in the origin snapshot.
+    --     Cloning a snapshot is faster than copying data from the snapshot to
+    --     a new volume and doesn\'t consume disk throughput. However, the
+    --     origin snapshot can\'t be deleted if there is a volume using its
+    --     copied data.
+    --
+    -- -   @FULL_COPY@ - Copies all data from the snapshot to the new volume.
+    copyStrategy :: OpenZFSCopyStrategy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOpenZFSOriginSnapshotConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'snapshotARN', 'createOpenZFSOriginSnapshotConfiguration_snapshotARN' - Undocumented member.
+--
+-- 'copyStrategy', 'createOpenZFSOriginSnapshotConfiguration_copyStrategy' - The strategy used when copying data from the snapshot to the new volume.
+--
+-- -   @CLONE@ - The new volume references the data in the origin snapshot.
+--     Cloning a snapshot is faster than copying data from the snapshot to
+--     a new volume and doesn\'t consume disk throughput. However, the
+--     origin snapshot can\'t be deleted if there is a volume using its
+--     copied data.
+--
+-- -   @FULL_COPY@ - Copies all data from the snapshot to the new volume.
+newCreateOpenZFSOriginSnapshotConfiguration ::
+  -- | 'snapshotARN'
+  Prelude.Text ->
+  -- | 'copyStrategy'
+  OpenZFSCopyStrategy ->
+  CreateOpenZFSOriginSnapshotConfiguration
+newCreateOpenZFSOriginSnapshotConfiguration
+  pSnapshotARN_
+  pCopyStrategy_ =
+    CreateOpenZFSOriginSnapshotConfiguration'
+      { snapshotARN =
+          pSnapshotARN_,
+        copyStrategy = pCopyStrategy_
+      }
+
+-- | Undocumented member.
+createOpenZFSOriginSnapshotConfiguration_snapshotARN :: Lens.Lens' CreateOpenZFSOriginSnapshotConfiguration Prelude.Text
+createOpenZFSOriginSnapshotConfiguration_snapshotARN = Lens.lens (\CreateOpenZFSOriginSnapshotConfiguration' {snapshotARN} -> snapshotARN) (\s@CreateOpenZFSOriginSnapshotConfiguration' {} a -> s {snapshotARN = a} :: CreateOpenZFSOriginSnapshotConfiguration)
+
+-- | The strategy used when copying data from the snapshot to the new volume.
+--
+-- -   @CLONE@ - The new volume references the data in the origin snapshot.
+--     Cloning a snapshot is faster than copying data from the snapshot to
+--     a new volume and doesn\'t consume disk throughput. However, the
+--     origin snapshot can\'t be deleted if there is a volume using its
+--     copied data.
+--
+-- -   @FULL_COPY@ - Copies all data from the snapshot to the new volume.
+createOpenZFSOriginSnapshotConfiguration_copyStrategy :: Lens.Lens' CreateOpenZFSOriginSnapshotConfiguration OpenZFSCopyStrategy
+createOpenZFSOriginSnapshotConfiguration_copyStrategy = Lens.lens (\CreateOpenZFSOriginSnapshotConfiguration' {copyStrategy} -> copyStrategy) (\s@CreateOpenZFSOriginSnapshotConfiguration' {} a -> s {copyStrategy = a} :: CreateOpenZFSOriginSnapshotConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateOpenZFSOriginSnapshotConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateOpenZFSOriginSnapshotConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` snapshotARN
+        `Prelude.hashWithSalt` copyStrategy
+
+instance
+  Prelude.NFData
+    CreateOpenZFSOriginSnapshotConfiguration
+  where
+  rnf CreateOpenZFSOriginSnapshotConfiguration' {..} =
+    Prelude.rnf snapshotARN
+      `Prelude.seq` Prelude.rnf copyStrategy
+
+instance
+  Data.ToJSON
+    CreateOpenZFSOriginSnapshotConfiguration
+  where
+  toJSON CreateOpenZFSOriginSnapshotConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SnapshotARN" Data..= snapshotARN),
+            Prelude.Just ("CopyStrategy" Data..= copyStrategy)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateOpenZFSVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/CreateOpenZFSVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateOpenZFSVolumeConfiguration.hs
@@ -0,0 +1,368 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.CreateOpenZFSVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateOpenZFSVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.CreateOpenZFSOriginSnapshotConfiguration
+import Amazonka.FSx.Types.OpenZFSDataCompressionType
+import Amazonka.FSx.Types.OpenZFSNfsExport
+import Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies the configuration of the Amazon FSx for OpenZFS volume that
+-- you are creating.
+--
+-- /See:/ 'newCreateOpenZFSVolumeConfiguration' smart constructor.
+data CreateOpenZFSVolumeConfiguration = CreateOpenZFSVolumeConfiguration'
+  { -- | A Boolean value indicating whether tags for the volume should be copied
+    -- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+    -- all tags for the volume are copied to snapshots where the user doesn\'t
+    -- specify tags. If this value is @true@, and you specify one or more tags,
+    -- only the specified tags are copied to snapshots. If you specify one or
+    -- more tags when creating the snapshot, no tags are copied from the
+    -- volume, regardless of this value.
+    copyTagsToSnapshots :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the method used to compress the data on the volume. The
+    -- compression type is @NONE@ by default.
+    --
+    -- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+    --     default.
+    --
+    -- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+    --     (ZSTD) compression algorithm. ZSTD compression provides a higher
+    --     level of data compression and higher read throughput performance
+    --     than LZ4 compression.
+    --
+    -- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+    --     algorithm. LZ4 compression provides a lower level of compression and
+    --     higher write throughput performance than ZSTD compression.
+    --
+    -- For more information about volume compression types and the performance
+    -- of your Amazon FSx for OpenZFS file system, see
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+    -- File system and volume settings in the /Amazon FSx for OpenZFS User
+    -- Guide/.
+    dataCompressionType :: Prelude.Maybe OpenZFSDataCompressionType,
+    -- | The configuration object for mounting a Network File System (NFS) file
+    -- system.
+    nfsExports :: Prelude.Maybe [OpenZFSNfsExport],
+    -- | The configuration object that specifies the snapshot to use as the
+    -- origin of the data for the volume.
+    originSnapshot :: Prelude.Maybe CreateOpenZFSOriginSnapshotConfiguration,
+    -- | A Boolean value indicating whether the volume is read-only.
+    readOnly :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the suggested block size for a volume in a ZFS dataset, in
+    -- kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or
+    -- 1024 KiB. The default is 128 KiB. We recommend using the default setting
+    -- for the majority of use cases. Generally, workloads that write in fixed
+    -- small or large record sizes may benefit from setting a custom record
+    -- size, like database workloads (small record size) or media streaming
+    -- workloads (large record size). For additional guidance on when to set a
+    -- custom record size, see
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#record-size-performance ZFS Record size>
+    -- in the /Amazon FSx for OpenZFS User Guide/.
+    recordSizeKiB :: Prelude.Maybe Prelude.Natural,
+    -- | Sets the maximum storage size in gibibytes (GiB) for the volume. You can
+    -- specify a quota that is larger than the storage on the parent volume. A
+    -- volume quota limits the amount of storage that the volume can consume to
+    -- the configured amount, but does not guarantee the space will be
+    -- available on the parent volume. To guarantee quota space, you must also
+    -- set @StorageCapacityReservationGiB@. To /not/ specify a storage capacity
+    -- quota, set this to @-1@.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties Volume properties>
+    -- in the /Amazon FSx for OpenZFS User Guide/.
+    storageCapacityQuotaGiB :: Prelude.Maybe Prelude.Int,
+    -- | Specifies the amount of storage in gibibytes (GiB) to reserve from the
+    -- parent volume. Setting @StorageCapacityReservationGiB@ guarantees that
+    -- the specified amount of storage space on the parent volume will always
+    -- be available for the volume. You can\'t reserve more storage than the
+    -- parent volume has. To /not/ specify a storage capacity reservation, set
+    -- this to @0@ or @-1@. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties Volume properties>
+    -- in the /Amazon FSx for OpenZFS User Guide/.
+    storageCapacityReservationGiB :: Prelude.Maybe Prelude.Int,
+    -- | An object specifying how much storage users or groups can use on the
+    -- volume.
+    userAndGroupQuotas :: Prelude.Maybe [OpenZFSUserOrGroupQuota],
+    -- | The ID of the volume to use as the parent volume of the volume that you
+    -- are creating.
+    parentVolumeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOpenZFSVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToSnapshots', 'createOpenZFSVolumeConfiguration_copyTagsToSnapshots' - A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@, and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+--
+-- 'dataCompressionType', 'createOpenZFSVolumeConfiguration_dataCompressionType' - Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. ZSTD compression provides a higher
+--     level of data compression and higher read throughput performance
+--     than LZ4 compression.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. LZ4 compression provides a lower level of compression and
+--     higher write throughput performance than ZSTD compression.
+--
+-- For more information about volume compression types and the performance
+-- of your Amazon FSx for OpenZFS file system, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+-- File system and volume settings in the /Amazon FSx for OpenZFS User
+-- Guide/.
+--
+-- 'nfsExports', 'createOpenZFSVolumeConfiguration_nfsExports' - The configuration object for mounting a Network File System (NFS) file
+-- system.
+--
+-- 'originSnapshot', 'createOpenZFSVolumeConfiguration_originSnapshot' - The configuration object that specifies the snapshot to use as the
+-- origin of the data for the volume.
+--
+-- 'readOnly', 'createOpenZFSVolumeConfiguration_readOnly' - A Boolean value indicating whether the volume is read-only.
+--
+-- 'recordSizeKiB', 'createOpenZFSVolumeConfiguration_recordSizeKiB' - Specifies the suggested block size for a volume in a ZFS dataset, in
+-- kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or
+-- 1024 KiB. The default is 128 KiB. We recommend using the default setting
+-- for the majority of use cases. Generally, workloads that write in fixed
+-- small or large record sizes may benefit from setting a custom record
+-- size, like database workloads (small record size) or media streaming
+-- workloads (large record size). For additional guidance on when to set a
+-- custom record size, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#record-size-performance ZFS Record size>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+--
+-- 'storageCapacityQuotaGiB', 'createOpenZFSVolumeConfiguration_storageCapacityQuotaGiB' - Sets the maximum storage size in gibibytes (GiB) for the volume. You can
+-- specify a quota that is larger than the storage on the parent volume. A
+-- volume quota limits the amount of storage that the volume can consume to
+-- the configured amount, but does not guarantee the space will be
+-- available on the parent volume. To guarantee quota space, you must also
+-- set @StorageCapacityReservationGiB@. To /not/ specify a storage capacity
+-- quota, set this to @-1@.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties Volume properties>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+--
+-- 'storageCapacityReservationGiB', 'createOpenZFSVolumeConfiguration_storageCapacityReservationGiB' - Specifies the amount of storage in gibibytes (GiB) to reserve from the
+-- parent volume. Setting @StorageCapacityReservationGiB@ guarantees that
+-- the specified amount of storage space on the parent volume will always
+-- be available for the volume. You can\'t reserve more storage than the
+-- parent volume has. To /not/ specify a storage capacity reservation, set
+-- this to @0@ or @-1@. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties Volume properties>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+--
+-- 'userAndGroupQuotas', 'createOpenZFSVolumeConfiguration_userAndGroupQuotas' - An object specifying how much storage users or groups can use on the
+-- volume.
+--
+-- 'parentVolumeId', 'createOpenZFSVolumeConfiguration_parentVolumeId' - The ID of the volume to use as the parent volume of the volume that you
+-- are creating.
+newCreateOpenZFSVolumeConfiguration ::
+  -- | 'parentVolumeId'
+  Prelude.Text ->
+  CreateOpenZFSVolumeConfiguration
+newCreateOpenZFSVolumeConfiguration pParentVolumeId_ =
+  CreateOpenZFSVolumeConfiguration'
+    { copyTagsToSnapshots =
+        Prelude.Nothing,
+      dataCompressionType = Prelude.Nothing,
+      nfsExports = Prelude.Nothing,
+      originSnapshot = Prelude.Nothing,
+      readOnly = Prelude.Nothing,
+      recordSizeKiB = Prelude.Nothing,
+      storageCapacityQuotaGiB = Prelude.Nothing,
+      storageCapacityReservationGiB =
+        Prelude.Nothing,
+      userAndGroupQuotas = Prelude.Nothing,
+      parentVolumeId = pParentVolumeId_
+    }
+
+-- | A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@, and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+createOpenZFSVolumeConfiguration_copyTagsToSnapshots :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+createOpenZFSVolumeConfiguration_copyTagsToSnapshots = Lens.lens (\CreateOpenZFSVolumeConfiguration' {copyTagsToSnapshots} -> copyTagsToSnapshots) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {copyTagsToSnapshots = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. ZSTD compression provides a higher
+--     level of data compression and higher read throughput performance
+--     than LZ4 compression.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. LZ4 compression provides a lower level of compression and
+--     higher write throughput performance than ZSTD compression.
+--
+-- For more information about volume compression types and the performance
+-- of your Amazon FSx for OpenZFS file system, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+-- File system and volume settings in the /Amazon FSx for OpenZFS User
+-- Guide/.
+createOpenZFSVolumeConfiguration_dataCompressionType :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe OpenZFSDataCompressionType)
+createOpenZFSVolumeConfiguration_dataCompressionType = Lens.lens (\CreateOpenZFSVolumeConfiguration' {dataCompressionType} -> dataCompressionType) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {dataCompressionType = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | The configuration object for mounting a Network File System (NFS) file
+-- system.
+createOpenZFSVolumeConfiguration_nfsExports :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe [OpenZFSNfsExport])
+createOpenZFSVolumeConfiguration_nfsExports = Lens.lens (\CreateOpenZFSVolumeConfiguration' {nfsExports} -> nfsExports) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {nfsExports = a} :: CreateOpenZFSVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration object that specifies the snapshot to use as the
+-- origin of the data for the volume.
+createOpenZFSVolumeConfiguration_originSnapshot :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe CreateOpenZFSOriginSnapshotConfiguration)
+createOpenZFSVolumeConfiguration_originSnapshot = Lens.lens (\CreateOpenZFSVolumeConfiguration' {originSnapshot} -> originSnapshot) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {originSnapshot = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | A Boolean value indicating whether the volume is read-only.
+createOpenZFSVolumeConfiguration_readOnly :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+createOpenZFSVolumeConfiguration_readOnly = Lens.lens (\CreateOpenZFSVolumeConfiguration' {readOnly} -> readOnly) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {readOnly = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | Specifies the suggested block size for a volume in a ZFS dataset, in
+-- kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or
+-- 1024 KiB. The default is 128 KiB. We recommend using the default setting
+-- for the majority of use cases. Generally, workloads that write in fixed
+-- small or large record sizes may benefit from setting a custom record
+-- size, like database workloads (small record size) or media streaming
+-- workloads (large record size). For additional guidance on when to set a
+-- custom record size, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#record-size-performance ZFS Record size>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+createOpenZFSVolumeConfiguration_recordSizeKiB :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+createOpenZFSVolumeConfiguration_recordSizeKiB = Lens.lens (\CreateOpenZFSVolumeConfiguration' {recordSizeKiB} -> recordSizeKiB) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {recordSizeKiB = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | Sets the maximum storage size in gibibytes (GiB) for the volume. You can
+-- specify a quota that is larger than the storage on the parent volume. A
+-- volume quota limits the amount of storage that the volume can consume to
+-- the configured amount, but does not guarantee the space will be
+-- available on the parent volume. To guarantee quota space, you must also
+-- set @StorageCapacityReservationGiB@. To /not/ specify a storage capacity
+-- quota, set this to @-1@.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties Volume properties>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+createOpenZFSVolumeConfiguration_storageCapacityQuotaGiB :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Int)
+createOpenZFSVolumeConfiguration_storageCapacityQuotaGiB = Lens.lens (\CreateOpenZFSVolumeConfiguration' {storageCapacityQuotaGiB} -> storageCapacityQuotaGiB) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {storageCapacityQuotaGiB = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | Specifies the amount of storage in gibibytes (GiB) to reserve from the
+-- parent volume. Setting @StorageCapacityReservationGiB@ guarantees that
+-- the specified amount of storage space on the parent volume will always
+-- be available for the volume. You can\'t reserve more storage than the
+-- parent volume has. To /not/ specify a storage capacity reservation, set
+-- this to @0@ or @-1@. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties Volume properties>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+createOpenZFSVolumeConfiguration_storageCapacityReservationGiB :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Int)
+createOpenZFSVolumeConfiguration_storageCapacityReservationGiB = Lens.lens (\CreateOpenZFSVolumeConfiguration' {storageCapacityReservationGiB} -> storageCapacityReservationGiB) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {storageCapacityReservationGiB = a} :: CreateOpenZFSVolumeConfiguration)
+
+-- | An object specifying how much storage users or groups can use on the
+-- volume.
+createOpenZFSVolumeConfiguration_userAndGroupQuotas :: Lens.Lens' CreateOpenZFSVolumeConfiguration (Prelude.Maybe [OpenZFSUserOrGroupQuota])
+createOpenZFSVolumeConfiguration_userAndGroupQuotas = Lens.lens (\CreateOpenZFSVolumeConfiguration' {userAndGroupQuotas} -> userAndGroupQuotas) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {userAndGroupQuotas = a} :: CreateOpenZFSVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the volume to use as the parent volume of the volume that you
+-- are creating.
+createOpenZFSVolumeConfiguration_parentVolumeId :: Lens.Lens' CreateOpenZFSVolumeConfiguration Prelude.Text
+createOpenZFSVolumeConfiguration_parentVolumeId = Lens.lens (\CreateOpenZFSVolumeConfiguration' {parentVolumeId} -> parentVolumeId) (\s@CreateOpenZFSVolumeConfiguration' {} a -> s {parentVolumeId = a} :: CreateOpenZFSVolumeConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateOpenZFSVolumeConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateOpenZFSVolumeConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` copyTagsToSnapshots
+        `Prelude.hashWithSalt` dataCompressionType
+        `Prelude.hashWithSalt` nfsExports
+        `Prelude.hashWithSalt` originSnapshot
+        `Prelude.hashWithSalt` readOnly
+        `Prelude.hashWithSalt` recordSizeKiB
+        `Prelude.hashWithSalt` storageCapacityQuotaGiB
+        `Prelude.hashWithSalt` storageCapacityReservationGiB
+        `Prelude.hashWithSalt` userAndGroupQuotas
+        `Prelude.hashWithSalt` parentVolumeId
+
+instance
+  Prelude.NFData
+    CreateOpenZFSVolumeConfiguration
+  where
+  rnf CreateOpenZFSVolumeConfiguration' {..} =
+    Prelude.rnf copyTagsToSnapshots
+      `Prelude.seq` Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf nfsExports
+      `Prelude.seq` Prelude.rnf originSnapshot
+      `Prelude.seq` Prelude.rnf readOnly
+      `Prelude.seq` Prelude.rnf recordSizeKiB
+      `Prelude.seq` Prelude.rnf storageCapacityQuotaGiB
+      `Prelude.seq` Prelude.rnf storageCapacityReservationGiB
+      `Prelude.seq` Prelude.rnf userAndGroupQuotas
+      `Prelude.seq` Prelude.rnf parentVolumeId
+
+instance Data.ToJSON CreateOpenZFSVolumeConfiguration where
+  toJSON CreateOpenZFSVolumeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CopyTagsToSnapshots" Data..=)
+              Prelude.<$> copyTagsToSnapshots,
+            ("DataCompressionType" Data..=)
+              Prelude.<$> dataCompressionType,
+            ("NfsExports" Data..=) Prelude.<$> nfsExports,
+            ("OriginSnapshot" Data..=)
+              Prelude.<$> originSnapshot,
+            ("ReadOnly" Data..=) Prelude.<$> readOnly,
+            ("RecordSizeKiB" Data..=) Prelude.<$> recordSizeKiB,
+            ("StorageCapacityQuotaGiB" Data..=)
+              Prelude.<$> storageCapacityQuotaGiB,
+            ("StorageCapacityReservationGiB" Data..=)
+              Prelude.<$> storageCapacityReservationGiB,
+            ("UserAndGroupQuotas" Data..=)
+              Prelude.<$> userAndGroupQuotas,
+            Prelude.Just
+              ("ParentVolumeId" Data..= parentVolumeId)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/CreateSvmActiveDirectoryConfiguration.hs b/gen/Amazonka/FSx/Types/CreateSvmActiveDirectoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/CreateSvmActiveDirectoryConfiguration.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.FSx.Types.CreateSvmActiveDirectoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.CreateSvmActiveDirectoryConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration that Amazon FSx uses to join the ONTAP storage virtual
+-- machine (SVM) to your self-managed (including on-premises) Microsoft
+-- Active Directory (AD) directory.
+--
+-- /See:/ 'newCreateSvmActiveDirectoryConfiguration' smart constructor.
+data CreateSvmActiveDirectoryConfiguration = CreateSvmActiveDirectoryConfiguration'
+  { selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryConfiguration,
+    -- | The NetBIOS name of the Active Directory computer object that will be
+    -- created for your SVM.
+    netBiosName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSvmActiveDirectoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selfManagedActiveDirectoryConfiguration', 'createSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration' - Undocumented member.
+--
+-- 'netBiosName', 'createSvmActiveDirectoryConfiguration_netBiosName' - The NetBIOS name of the Active Directory computer object that will be
+-- created for your SVM.
+newCreateSvmActiveDirectoryConfiguration ::
+  -- | 'netBiosName'
+  Prelude.Text ->
+  CreateSvmActiveDirectoryConfiguration
+newCreateSvmActiveDirectoryConfiguration
+  pNetBiosName_ =
+    CreateSvmActiveDirectoryConfiguration'
+      { selfManagedActiveDirectoryConfiguration =
+          Prelude.Nothing,
+        netBiosName = pNetBiosName_
+      }
+
+-- | Undocumented member.
+createSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' CreateSvmActiveDirectoryConfiguration (Prelude.Maybe SelfManagedActiveDirectoryConfiguration)
+createSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\CreateSvmActiveDirectoryConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@CreateSvmActiveDirectoryConfiguration' {} a -> s {selfManagedActiveDirectoryConfiguration = a} :: CreateSvmActiveDirectoryConfiguration)
+
+-- | The NetBIOS name of the Active Directory computer object that will be
+-- created for your SVM.
+createSvmActiveDirectoryConfiguration_netBiosName :: Lens.Lens' CreateSvmActiveDirectoryConfiguration Prelude.Text
+createSvmActiveDirectoryConfiguration_netBiosName = Lens.lens (\CreateSvmActiveDirectoryConfiguration' {netBiosName} -> netBiosName) (\s@CreateSvmActiveDirectoryConfiguration' {} a -> s {netBiosName = a} :: CreateSvmActiveDirectoryConfiguration)
+
+instance
+  Prelude.Hashable
+    CreateSvmActiveDirectoryConfiguration
+  where
+  hashWithSalt
+    _salt
+    CreateSvmActiveDirectoryConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
+        `Prelude.hashWithSalt` netBiosName
+
+instance
+  Prelude.NFData
+    CreateSvmActiveDirectoryConfiguration
+  where
+  rnf CreateSvmActiveDirectoryConfiguration' {..} =
+    Prelude.rnf selfManagedActiveDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf netBiosName
+
+instance
+  Data.ToJSON
+    CreateSvmActiveDirectoryConfiguration
+  where
+  toJSON CreateSvmActiveDirectoryConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SelfManagedActiveDirectoryConfiguration" Data..=)
+              Prelude.<$> selfManagedActiveDirectoryConfiguration,
+            Prelude.Just ("NetBiosName" Data..= netBiosName)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DataCompressionType.hs b/gen/Amazonka/FSx/Types/DataCompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataCompressionType.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.FSx.Types.DataCompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataCompressionType
+  ( DataCompressionType
+      ( ..,
+        DataCompressionType_LZ4,
+        DataCompressionType_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataCompressionType = DataCompressionType'
+  { fromDataCompressionType ::
+      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 DataCompressionType_LZ4 :: DataCompressionType
+pattern DataCompressionType_LZ4 = DataCompressionType' "LZ4"
+
+pattern DataCompressionType_NONE :: DataCompressionType
+pattern DataCompressionType_NONE = DataCompressionType' "NONE"
+
+{-# COMPLETE
+  DataCompressionType_LZ4,
+  DataCompressionType_NONE,
+  DataCompressionType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryAssociation.hs b/gen/Amazonka/FSx/Types/DataRepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryAssociation.hs
@@ -0,0 +1,561 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.DataRepositoryAssociation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryAssociation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DataRepositoryFailureDetails
+import Amazonka.FSx.Types.DataRepositoryLifecycle
+import Amazonka.FSx.Types.NFSDataRepositoryConfiguration
+import Amazonka.FSx.Types.S3DataRepositoryConfiguration
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration of a data repository association that links an Amazon
+-- FSx for Lustre file system to an Amazon S3 bucket or an Amazon File
+-- Cache resource to an Amazon S3 bucket or an NFS file system. The data
+-- repository association configuration object is returned in the response
+-- of the following operations:
+--
+-- -   @CreateDataRepositoryAssociation@
+--
+-- -   @UpdateDataRepositoryAssociation@
+--
+-- -   @DescribeDataRepositoryAssociations@
+--
+-- Data repository associations are supported only for an Amazon FSx for
+-- Lustre file system with the @Persistent_2@ deployment type and for an
+-- Amazon File Cache resource.
+--
+-- /See:/ 'newDataRepositoryAssociation' smart constructor.
+data DataRepositoryAssociation = DataRepositoryAssociation'
+  { -- | The system-generated, unique ID of the data repository association.
+    associationId :: Prelude.Maybe Prelude.Text,
+    -- | A boolean flag indicating whether an import data repository task to
+    -- import metadata should run after the data repository association is
+    -- created. The task runs if this flag is set to @true@.
+    --
+    -- @BatchImportMetaDataOnCreate@ is not supported for data repositories
+    -- linked to an Amazon File Cache resource.
+    batchImportMetaDataOnCreate :: Prelude.Maybe Prelude.Bool,
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The path to the data repository that will be linked to the cache or file
+    -- system.
+    --
+    -- -   For Amazon File Cache, the path can be an NFS data repository that
+    --     will be linked to the cache. The path can be in one of two formats:
+    --
+    --     -   If you are not using the @DataRepositorySubdirectories@
+    --         parameter, the path is to an NFS Export directory (or one of its
+    --         subdirectories) in the format
+    --         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
+    --         single NFS Export to a single data repository association.
+    --
+    --     -   If you are using the @DataRepositorySubdirectories@ parameter,
+    --         the path is the domain name of the NFS file system in the format
+    --         @nfs:\/\/filer-domain-name@, which indicates the root of the
+    --         subdirectories specified with the @DataRepositorySubdirectories@
+    --         parameter.
+    --
+    -- -   For Amazon File Cache, the path can be an S3 bucket or prefix in the
+    --     format @s3:\/\/myBucket\/myPrefix\/@.
+    --
+    -- -   For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in
+    --     the format @s3:\/\/myBucket\/myPrefix\/@.
+    dataRepositoryPath :: Prelude.Maybe Prelude.Text,
+    -- | For Amazon File Cache, a list of NFS Exports that will be linked with an
+    -- NFS data repository association. All the subdirectories must be on a
+    -- single NFS file system. The Export paths are in the format
+    -- @\/exportpath1@. To use this parameter, you must configure
+    -- @DataRepositoryPath@ as the domain name of the NFS file system. The NFS
+    -- file system domain name in effect is the root of the subdirectories.
+    -- Note that @DataRepositorySubdirectories@ is not supported for S3 data
+    -- repositories.
+    dataRepositorySubdirectories :: Prelude.Maybe [Prelude.Text],
+    failureDetails :: Prelude.Maybe DataRepositoryFailureDetails,
+    -- | The globally unique ID of the Amazon File Cache resource.
+    fileCacheId :: Prelude.Maybe Prelude.Text,
+    -- | A path on the Amazon File Cache that points to a high-level directory
+    -- (such as @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that
+    -- will be mapped 1-1 with @DataRepositoryPath@. The leading forward slash
+    -- in the path is required. Two data repository associations cannot have
+    -- overlapping cache paths. For example, if a data repository is associated
+    -- with cache path @\/ns1\/@, then you cannot link another data repository
+    -- with cache path @\/ns1\/ns2@.
+    --
+    -- This path specifies the directory in your cache where files will be
+    -- exported from. This cache directory can be linked to only one data
+    -- repository (S3 or NFS) and no other data repository can be linked to the
+    -- directory.
+    --
+    -- The cache path can only be set to root (\/) on an NFS DRA when
+    -- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
+    -- the cache path, you can create only one DRA on the cache.
+    --
+    -- The cache path cannot be set to root (\/) for an S3 DRA.
+    fileCachePath :: Prelude.Maybe Prelude.Text,
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | A path on the Amazon FSx for Lustre file system that points to a
+    -- high-level directory (such as @\/ns1\/@) or subdirectory (such as
+    -- @\/ns1\/subdir\/@) that will be mapped 1-1 with @DataRepositoryPath@.
+    -- The leading forward slash in the name is required. Two data repository
+    -- associations cannot have overlapping file system paths. For example, if
+    -- a data repository is associated with file system path @\/ns1\/@, then
+    -- you cannot link another data repository with file system path
+    -- @\/ns1\/ns2@.
+    --
+    -- This path specifies where in your file system files will be exported
+    -- from or imported to. This file system directory can be linked to only
+    -- one Amazon S3 bucket, and no other S3 bucket can be linked to the
+    -- directory.
+    --
+    -- If you specify only a forward slash (@\/@) as the file system path, you
+    -- can link only one data repository to the file system. You can only
+    -- specify \"\/\" as the file system path for the first data repository
+    -- associated with a file system.
+    fileSystemPath :: Prelude.Maybe Prelude.Text,
+    -- | For files imported from a data repository, this value determines the
+    -- stripe count and maximum amount of data per file (in MiB) stored on a
+    -- single physical disk. The maximum number of disks that a single file can
+    -- be striped across is limited by the total number of disks that make up
+    -- the file system or cache.
+    --
+    -- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+    -- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+    importedFileChunkSize :: Prelude.Maybe Prelude.Natural,
+    -- | Describes the state of a data repository association. The lifecycle can
+    -- have the following values:
+    --
+    -- -   @CREATING@ - The data repository association between the file system
+    --     or cache and the data repository is being created. The data
+    --     repository is unavailable.
+    --
+    -- -   @AVAILABLE@ - The data repository association is available for use.
+    --
+    -- -   @MISCONFIGURED@ - The data repository association is misconfigured.
+    --     Until the configuration is corrected, automatic import and automatic
+    --     export will not work (only for Amazon FSx for Lustre).
+    --
+    -- -   @UPDATING@ - The data repository association is undergoing a
+    --     customer initiated update that might affect its availability.
+    --
+    -- -   @DELETING@ - The data repository association is undergoing a
+    --     customer initiated deletion.
+    --
+    -- -   @FAILED@ - The data repository association is in a terminal state
+    --     that cannot be recovered.
+    lifecycle :: Prelude.Maybe DataRepositoryLifecycle,
+    -- | The configuration for an NFS data repository linked to an Amazon File
+    -- Cache resource with a data repository association.
+    nfs :: Prelude.Maybe NFSDataRepositoryConfiguration,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The configuration for an Amazon S3 data repository linked to an Amazon
+    -- FSx for Lustre file system with a data repository association.
+    s3 :: Prelude.Maybe S3DataRepositoryConfiguration,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationId', 'dataRepositoryAssociation_associationId' - The system-generated, unique ID of the data repository association.
+--
+-- 'batchImportMetaDataOnCreate', 'dataRepositoryAssociation_batchImportMetaDataOnCreate' - A boolean flag indicating whether an import data repository task to
+-- import metadata should run after the data repository association is
+-- created. The task runs if this flag is set to @true@.
+--
+-- @BatchImportMetaDataOnCreate@ is not supported for data repositories
+-- linked to an Amazon File Cache resource.
+--
+-- 'creationTime', 'dataRepositoryAssociation_creationTime' - Undocumented member.
+--
+-- 'dataRepositoryPath', 'dataRepositoryAssociation_dataRepositoryPath' - The path to the data repository that will be linked to the cache or file
+-- system.
+--
+-- -   For Amazon File Cache, the path can be an NFS data repository that
+--     will be linked to the cache. The path can be in one of two formats:
+--
+--     -   If you are not using the @DataRepositorySubdirectories@
+--         parameter, the path is to an NFS Export directory (or one of its
+--         subdirectories) in the format
+--         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
+--         single NFS Export to a single data repository association.
+--
+--     -   If you are using the @DataRepositorySubdirectories@ parameter,
+--         the path is the domain name of the NFS file system in the format
+--         @nfs:\/\/filer-domain-name@, which indicates the root of the
+--         subdirectories specified with the @DataRepositorySubdirectories@
+--         parameter.
+--
+-- -   For Amazon File Cache, the path can be an S3 bucket or prefix in the
+--     format @s3:\/\/myBucket\/myPrefix\/@.
+--
+-- -   For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in
+--     the format @s3:\/\/myBucket\/myPrefix\/@.
+--
+-- 'dataRepositorySubdirectories', 'dataRepositoryAssociation_dataRepositorySubdirectories' - For Amazon File Cache, a list of NFS Exports that will be linked with an
+-- NFS data repository association. All the subdirectories must be on a
+-- single NFS file system. The Export paths are in the format
+-- @\/exportpath1@. To use this parameter, you must configure
+-- @DataRepositoryPath@ as the domain name of the NFS file system. The NFS
+-- file system domain name in effect is the root of the subdirectories.
+-- Note that @DataRepositorySubdirectories@ is not supported for S3 data
+-- repositories.
+--
+-- 'failureDetails', 'dataRepositoryAssociation_failureDetails' - Undocumented member.
+--
+-- 'fileCacheId', 'dataRepositoryAssociation_fileCacheId' - The globally unique ID of the Amazon File Cache resource.
+--
+-- 'fileCachePath', 'dataRepositoryAssociation_fileCachePath' - A path on the Amazon File Cache that points to a high-level directory
+-- (such as @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that
+-- will be mapped 1-1 with @DataRepositoryPath@. The leading forward slash
+-- in the path is required. Two data repository associations cannot have
+-- overlapping cache paths. For example, if a data repository is associated
+-- with cache path @\/ns1\/@, then you cannot link another data repository
+-- with cache path @\/ns1\/ns2@.
+--
+-- This path specifies the directory in your cache where files will be
+-- exported from. This cache directory can be linked to only one data
+-- repository (S3 or NFS) and no other data repository can be linked to the
+-- directory.
+--
+-- The cache path can only be set to root (\/) on an NFS DRA when
+-- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
+-- the cache path, you can create only one DRA on the cache.
+--
+-- The cache path cannot be set to root (\/) for an S3 DRA.
+--
+-- 'fileSystemId', 'dataRepositoryAssociation_fileSystemId' - Undocumented member.
+--
+-- 'fileSystemPath', 'dataRepositoryAssociation_fileSystemPath' - A path on the Amazon FSx for Lustre file system that points to a
+-- high-level directory (such as @\/ns1\/@) or subdirectory (such as
+-- @\/ns1\/subdir\/@) that will be mapped 1-1 with @DataRepositoryPath@.
+-- The leading forward slash in the name is required. Two data repository
+-- associations cannot have overlapping file system paths. For example, if
+-- a data repository is associated with file system path @\/ns1\/@, then
+-- you cannot link another data repository with file system path
+-- @\/ns1\/ns2@.
+--
+-- This path specifies where in your file system files will be exported
+-- from or imported to. This file system directory can be linked to only
+-- one Amazon S3 bucket, and no other S3 bucket can be linked to the
+-- directory.
+--
+-- If you specify only a forward slash (@\/@) as the file system path, you
+-- can link only one data repository to the file system. You can only
+-- specify \"\/\" as the file system path for the first data repository
+-- associated with a file system.
+--
+-- 'importedFileChunkSize', 'dataRepositoryAssociation_importedFileChunkSize' - For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system or cache.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+--
+-- 'lifecycle', 'dataRepositoryAssociation_lifecycle' - Describes the state of a data repository association. The lifecycle can
+-- have the following values:
+--
+-- -   @CREATING@ - The data repository association between the file system
+--     or cache and the data repository is being created. The data
+--     repository is unavailable.
+--
+-- -   @AVAILABLE@ - The data repository association is available for use.
+--
+-- -   @MISCONFIGURED@ - The data repository association is misconfigured.
+--     Until the configuration is corrected, automatic import and automatic
+--     export will not work (only for Amazon FSx for Lustre).
+--
+-- -   @UPDATING@ - The data repository association is undergoing a
+--     customer initiated update that might affect its availability.
+--
+-- -   @DELETING@ - The data repository association is undergoing a
+--     customer initiated deletion.
+--
+-- -   @FAILED@ - The data repository association is in a terminal state
+--     that cannot be recovered.
+--
+-- 'nfs', 'dataRepositoryAssociation_nfs' - The configuration for an NFS data repository linked to an Amazon File
+-- Cache resource with a data repository association.
+--
+-- 'resourceARN', 'dataRepositoryAssociation_resourceARN' - Undocumented member.
+--
+-- 's3', 'dataRepositoryAssociation_s3' - The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx for Lustre file system with a data repository association.
+--
+-- 'tags', 'dataRepositoryAssociation_tags' - Undocumented member.
+newDataRepositoryAssociation ::
+  DataRepositoryAssociation
+newDataRepositoryAssociation =
+  DataRepositoryAssociation'
+    { associationId =
+        Prelude.Nothing,
+      batchImportMetaDataOnCreate = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      dataRepositoryPath = Prelude.Nothing,
+      dataRepositorySubdirectories = Prelude.Nothing,
+      failureDetails = Prelude.Nothing,
+      fileCacheId = Prelude.Nothing,
+      fileCachePath = Prelude.Nothing,
+      fileSystemId = Prelude.Nothing,
+      fileSystemPath = Prelude.Nothing,
+      importedFileChunkSize = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      nfs = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      s3 = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The system-generated, unique ID of the data repository association.
+dataRepositoryAssociation_associationId :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_associationId = Lens.lens (\DataRepositoryAssociation' {associationId} -> associationId) (\s@DataRepositoryAssociation' {} a -> s {associationId = a} :: DataRepositoryAssociation)
+
+-- | A boolean flag indicating whether an import data repository task to
+-- import metadata should run after the data repository association is
+-- created. The task runs if this flag is set to @true@.
+--
+-- @BatchImportMetaDataOnCreate@ is not supported for data repositories
+-- linked to an Amazon File Cache resource.
+dataRepositoryAssociation_batchImportMetaDataOnCreate :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Bool)
+dataRepositoryAssociation_batchImportMetaDataOnCreate = Lens.lens (\DataRepositoryAssociation' {batchImportMetaDataOnCreate} -> batchImportMetaDataOnCreate) (\s@DataRepositoryAssociation' {} a -> s {batchImportMetaDataOnCreate = a} :: DataRepositoryAssociation)
+
+-- | Undocumented member.
+dataRepositoryAssociation_creationTime :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.UTCTime)
+dataRepositoryAssociation_creationTime = Lens.lens (\DataRepositoryAssociation' {creationTime} -> creationTime) (\s@DataRepositoryAssociation' {} a -> s {creationTime = a} :: DataRepositoryAssociation) Prelude.. Lens.mapping Data._Time
+
+-- | The path to the data repository that will be linked to the cache or file
+-- system.
+--
+-- -   For Amazon File Cache, the path can be an NFS data repository that
+--     will be linked to the cache. The path can be in one of two formats:
+--
+--     -   If you are not using the @DataRepositorySubdirectories@
+--         parameter, the path is to an NFS Export directory (or one of its
+--         subdirectories) in the format
+--         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
+--         single NFS Export to a single data repository association.
+--
+--     -   If you are using the @DataRepositorySubdirectories@ parameter,
+--         the path is the domain name of the NFS file system in the format
+--         @nfs:\/\/filer-domain-name@, which indicates the root of the
+--         subdirectories specified with the @DataRepositorySubdirectories@
+--         parameter.
+--
+-- -   For Amazon File Cache, the path can be an S3 bucket or prefix in the
+--     format @s3:\/\/myBucket\/myPrefix\/@.
+--
+-- -   For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in
+--     the format @s3:\/\/myBucket\/myPrefix\/@.
+dataRepositoryAssociation_dataRepositoryPath :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_dataRepositoryPath = Lens.lens (\DataRepositoryAssociation' {dataRepositoryPath} -> dataRepositoryPath) (\s@DataRepositoryAssociation' {} a -> s {dataRepositoryPath = a} :: DataRepositoryAssociation)
+
+-- | For Amazon File Cache, a list of NFS Exports that will be linked with an
+-- NFS data repository association. All the subdirectories must be on a
+-- single NFS file system. The Export paths are in the format
+-- @\/exportpath1@. To use this parameter, you must configure
+-- @DataRepositoryPath@ as the domain name of the NFS file system. The NFS
+-- file system domain name in effect is the root of the subdirectories.
+-- Note that @DataRepositorySubdirectories@ is not supported for S3 data
+-- repositories.
+dataRepositoryAssociation_dataRepositorySubdirectories :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe [Prelude.Text])
+dataRepositoryAssociation_dataRepositorySubdirectories = Lens.lens (\DataRepositoryAssociation' {dataRepositorySubdirectories} -> dataRepositorySubdirectories) (\s@DataRepositoryAssociation' {} a -> s {dataRepositorySubdirectories = a} :: DataRepositoryAssociation) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+dataRepositoryAssociation_failureDetails :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe DataRepositoryFailureDetails)
+dataRepositoryAssociation_failureDetails = Lens.lens (\DataRepositoryAssociation' {failureDetails} -> failureDetails) (\s@DataRepositoryAssociation' {} a -> s {failureDetails = a} :: DataRepositoryAssociation)
+
+-- | The globally unique ID of the Amazon File Cache resource.
+dataRepositoryAssociation_fileCacheId :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_fileCacheId = Lens.lens (\DataRepositoryAssociation' {fileCacheId} -> fileCacheId) (\s@DataRepositoryAssociation' {} a -> s {fileCacheId = a} :: DataRepositoryAssociation)
+
+-- | A path on the Amazon File Cache that points to a high-level directory
+-- (such as @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that
+-- will be mapped 1-1 with @DataRepositoryPath@. The leading forward slash
+-- in the path is required. Two data repository associations cannot have
+-- overlapping cache paths. For example, if a data repository is associated
+-- with cache path @\/ns1\/@, then you cannot link another data repository
+-- with cache path @\/ns1\/ns2@.
+--
+-- This path specifies the directory in your cache where files will be
+-- exported from. This cache directory can be linked to only one data
+-- repository (S3 or NFS) and no other data repository can be linked to the
+-- directory.
+--
+-- The cache path can only be set to root (\/) on an NFS DRA when
+-- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
+-- the cache path, you can create only one DRA on the cache.
+--
+-- The cache path cannot be set to root (\/) for an S3 DRA.
+dataRepositoryAssociation_fileCachePath :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_fileCachePath = Lens.lens (\DataRepositoryAssociation' {fileCachePath} -> fileCachePath) (\s@DataRepositoryAssociation' {} a -> s {fileCachePath = a} :: DataRepositoryAssociation)
+
+-- | Undocumented member.
+dataRepositoryAssociation_fileSystemId :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_fileSystemId = Lens.lens (\DataRepositoryAssociation' {fileSystemId} -> fileSystemId) (\s@DataRepositoryAssociation' {} a -> s {fileSystemId = a} :: DataRepositoryAssociation)
+
+-- | A path on the Amazon FSx for Lustre file system that points to a
+-- high-level directory (such as @\/ns1\/@) or subdirectory (such as
+-- @\/ns1\/subdir\/@) that will be mapped 1-1 with @DataRepositoryPath@.
+-- The leading forward slash in the name is required. Two data repository
+-- associations cannot have overlapping file system paths. For example, if
+-- a data repository is associated with file system path @\/ns1\/@, then
+-- you cannot link another data repository with file system path
+-- @\/ns1\/ns2@.
+--
+-- This path specifies where in your file system files will be exported
+-- from or imported to. This file system directory can be linked to only
+-- one Amazon S3 bucket, and no other S3 bucket can be linked to the
+-- directory.
+--
+-- If you specify only a forward slash (@\/@) as the file system path, you
+-- can link only one data repository to the file system. You can only
+-- specify \"\/\" as the file system path for the first data repository
+-- associated with a file system.
+dataRepositoryAssociation_fileSystemPath :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_fileSystemPath = Lens.lens (\DataRepositoryAssociation' {fileSystemPath} -> fileSystemPath) (\s@DataRepositoryAssociation' {} a -> s {fileSystemPath = a} :: DataRepositoryAssociation)
+
+-- | For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system or cache.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+dataRepositoryAssociation_importedFileChunkSize :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Natural)
+dataRepositoryAssociation_importedFileChunkSize = Lens.lens (\DataRepositoryAssociation' {importedFileChunkSize} -> importedFileChunkSize) (\s@DataRepositoryAssociation' {} a -> s {importedFileChunkSize = a} :: DataRepositoryAssociation)
+
+-- | Describes the state of a data repository association. The lifecycle can
+-- have the following values:
+--
+-- -   @CREATING@ - The data repository association between the file system
+--     or cache and the data repository is being created. The data
+--     repository is unavailable.
+--
+-- -   @AVAILABLE@ - The data repository association is available for use.
+--
+-- -   @MISCONFIGURED@ - The data repository association is misconfigured.
+--     Until the configuration is corrected, automatic import and automatic
+--     export will not work (only for Amazon FSx for Lustre).
+--
+-- -   @UPDATING@ - The data repository association is undergoing a
+--     customer initiated update that might affect its availability.
+--
+-- -   @DELETING@ - The data repository association is undergoing a
+--     customer initiated deletion.
+--
+-- -   @FAILED@ - The data repository association is in a terminal state
+--     that cannot be recovered.
+dataRepositoryAssociation_lifecycle :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe DataRepositoryLifecycle)
+dataRepositoryAssociation_lifecycle = Lens.lens (\DataRepositoryAssociation' {lifecycle} -> lifecycle) (\s@DataRepositoryAssociation' {} a -> s {lifecycle = a} :: DataRepositoryAssociation)
+
+-- | The configuration for an NFS data repository linked to an Amazon File
+-- Cache resource with a data repository association.
+dataRepositoryAssociation_nfs :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe NFSDataRepositoryConfiguration)
+dataRepositoryAssociation_nfs = Lens.lens (\DataRepositoryAssociation' {nfs} -> nfs) (\s@DataRepositoryAssociation' {} a -> s {nfs = a} :: DataRepositoryAssociation)
+
+-- | Undocumented member.
+dataRepositoryAssociation_resourceARN :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+dataRepositoryAssociation_resourceARN = Lens.lens (\DataRepositoryAssociation' {resourceARN} -> resourceARN) (\s@DataRepositoryAssociation' {} a -> s {resourceARN = a} :: DataRepositoryAssociation)
+
+-- | The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx for Lustre file system with a data repository association.
+dataRepositoryAssociation_s3 :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe S3DataRepositoryConfiguration)
+dataRepositoryAssociation_s3 = Lens.lens (\DataRepositoryAssociation' {s3} -> s3) (\s@DataRepositoryAssociation' {} a -> s {s3 = a} :: DataRepositoryAssociation)
+
+-- | Undocumented member.
+dataRepositoryAssociation_tags :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe (Prelude.NonEmpty Tag))
+dataRepositoryAssociation_tags = Lens.lens (\DataRepositoryAssociation' {tags} -> tags) (\s@DataRepositoryAssociation' {} a -> s {tags = a} :: DataRepositoryAssociation) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DataRepositoryAssociation where
+  parseJSON =
+    Data.withObject
+      "DataRepositoryAssociation"
+      ( \x ->
+          DataRepositoryAssociation'
+            Prelude.<$> (x Data..:? "AssociationId")
+            Prelude.<*> (x Data..:? "BatchImportMetaDataOnCreate")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DataRepositoryPath")
+            Prelude.<*> ( x
+                            Data..:? "DataRepositorySubdirectories"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "FileCacheId")
+            Prelude.<*> (x Data..:? "FileCachePath")
+            Prelude.<*> (x Data..:? "FileSystemId")
+            Prelude.<*> (x Data..:? "FileSystemPath")
+            Prelude.<*> (x Data..:? "ImportedFileChunkSize")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "NFS")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "S3")
+            Prelude.<*> (x Data..:? "Tags")
+      )
+
+instance Prelude.Hashable DataRepositoryAssociation where
+  hashWithSalt _salt DataRepositoryAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationId
+      `Prelude.hashWithSalt` batchImportMetaDataOnCreate
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` dataRepositoryPath
+      `Prelude.hashWithSalt` dataRepositorySubdirectories
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` fileCacheId
+      `Prelude.hashWithSalt` fileCachePath
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` fileSystemPath
+      `Prelude.hashWithSalt` importedFileChunkSize
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` nfs
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` s3
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData DataRepositoryAssociation where
+  rnf DataRepositoryAssociation' {..} =
+    Prelude.rnf associationId
+      `Prelude.seq` Prelude.rnf batchImportMetaDataOnCreate
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dataRepositoryPath
+      `Prelude.seq` Prelude.rnf dataRepositorySubdirectories
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf fileCacheId
+      `Prelude.seq` Prelude.rnf fileCachePath
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf fileSystemPath
+      `Prelude.seq` Prelude.rnf importedFileChunkSize
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf nfs
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryConfiguration.hs b/gen/Amazonka/FSx/Types/DataRepositoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryConfiguration.hs
@@ -0,0 +1,301 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.DataRepositoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AutoImportPolicyType
+import Amazonka.FSx.Types.DataRepositoryFailureDetails
+import Amazonka.FSx.Types.DataRepositoryLifecycle
+import qualified Amazonka.Prelude as Prelude
+
+-- | The data repository configuration object for Lustre file systems
+-- returned in the response of the @CreateFileSystem@ operation.
+--
+-- This data type is not supported for file systems with the @Persistent_2@
+-- deployment type. Instead, use .
+--
+-- /See:/ 'newDataRepositoryConfiguration' smart constructor.
+data DataRepositoryConfiguration = DataRepositoryConfiguration'
+  { -- | Describes the file system\'s linked S3 data repository\'s
+    -- @AutoImportPolicy@. The AutoImportPolicy configures how Amazon FSx keeps
+    -- your file and directory listings up to date as you add or modify objects
+    -- in your linked S3 bucket. @AutoImportPolicy@ can have the following
+    -- values:
+    --
+    -- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+    --     and directory listings from the linked S3 bucket when the file
+    --     system is created. FSx does not update file and directory listings
+    --     for any new or changed objects after choosing this option.
+    --
+    -- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+    --     listings of any new objects added to the linked S3 bucket that do
+    --     not currently exist in the FSx file system.
+    --
+    -- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+    --     file and directory listings of any new objects added to the S3
+    --     bucket and any existing objects that are changed in the S3 bucket
+    --     after you choose this option.
+    --
+    -- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+    --     imports file and directory listings of any new objects added to the
+    --     S3 bucket, any existing objects that are changed in the S3 bucket,
+    --     and any objects that were deleted in the S3 bucket.
+    autoImportPolicy :: Prelude.Maybe AutoImportPolicyType,
+    -- | The export path to the Amazon S3 bucket (and prefix) that you are using
+    -- to store new and changed Lustre file system files in S3.
+    exportPath :: Prelude.Maybe Prelude.Text,
+    failureDetails :: Prelude.Maybe DataRepositoryFailureDetails,
+    -- | The import path to the Amazon S3 bucket (and optional prefix) that
+    -- you\'re using as the data repository for your FSx for Lustre file
+    -- system, for example @s3:\/\/import-bucket\/optional-prefix@. If a prefix
+    -- is specified after the Amazon S3 bucket name, only object keys with that
+    -- prefix are loaded into the file system.
+    importPath :: Prelude.Maybe Prelude.Text,
+    -- | For files imported from a data repository, this value determines the
+    -- stripe count and maximum amount of data per file (in MiB) stored on a
+    -- single physical disk. The maximum number of disks that a single file can
+    -- be striped across is limited by the total number of disks that make up
+    -- the file system.
+    --
+    -- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+    -- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+    importedFileChunkSize :: Prelude.Maybe Prelude.Natural,
+    -- | Describes the state of the file system\'s S3 durable data repository, if
+    -- it is configured with an S3 repository. The lifecycle can have the
+    -- following values:
+    --
+    -- -   @CREATING@ - The data repository configuration between the FSx file
+    --     system and the linked S3 data repository is being created. The data
+    --     repository is unavailable.
+    --
+    -- -   @AVAILABLE@ - The data repository is available for use.
+    --
+    -- -   @MISCONFIGURED@ - Amazon FSx cannot automatically import updates
+    --     from the S3 bucket until the data repository configuration is
+    --     corrected. For more information, see
+    --     <https://docs.aws.amazon.com/fsx/latest/LustreGuide/troubleshooting.html#troubleshooting-misconfigured-data-repository Troubleshooting a Misconfigured linked S3 bucket>.
+    --
+    -- -   @UPDATING@ - The data repository is undergoing a customer initiated
+    --     update and availability may be impacted.
+    --
+    -- -   @FAILED@ - The data repository is in a terminal state that cannot be
+    --     recovered.
+    lifecycle :: Prelude.Maybe DataRepositoryLifecycle
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoImportPolicy', 'dataRepositoryConfiguration_autoImportPolicy' - Describes the file system\'s linked S3 data repository\'s
+-- @AutoImportPolicy@. The AutoImportPolicy configures how Amazon FSx keeps
+-- your file and directory listings up to date as you add or modify objects
+-- in your linked S3 bucket. @AutoImportPolicy@ can have the following
+-- values:
+--
+-- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+--     and directory listings from the linked S3 bucket when the file
+--     system is created. FSx does not update file and directory listings
+--     for any new or changed objects after choosing this option.
+--
+-- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+--     listings of any new objects added to the linked S3 bucket that do
+--     not currently exist in the FSx file system.
+--
+-- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+--     file and directory listings of any new objects added to the S3
+--     bucket and any existing objects that are changed in the S3 bucket
+--     after you choose this option.
+--
+-- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+--     imports file and directory listings of any new objects added to the
+--     S3 bucket, any existing objects that are changed in the S3 bucket,
+--     and any objects that were deleted in the S3 bucket.
+--
+-- 'exportPath', 'dataRepositoryConfiguration_exportPath' - The export path to the Amazon S3 bucket (and prefix) that you are using
+-- to store new and changed Lustre file system files in S3.
+--
+-- 'failureDetails', 'dataRepositoryConfiguration_failureDetails' - Undocumented member.
+--
+-- 'importPath', 'dataRepositoryConfiguration_importPath' - The import path to the Amazon S3 bucket (and optional prefix) that
+-- you\'re using as the data repository for your FSx for Lustre file
+-- system, for example @s3:\/\/import-bucket\/optional-prefix@. If a prefix
+-- is specified after the Amazon S3 bucket name, only object keys with that
+-- prefix are loaded into the file system.
+--
+-- 'importedFileChunkSize', 'dataRepositoryConfiguration_importedFileChunkSize' - For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+--
+-- 'lifecycle', 'dataRepositoryConfiguration_lifecycle' - Describes the state of the file system\'s S3 durable data repository, if
+-- it is configured with an S3 repository. The lifecycle can have the
+-- following values:
+--
+-- -   @CREATING@ - The data repository configuration between the FSx file
+--     system and the linked S3 data repository is being created. The data
+--     repository is unavailable.
+--
+-- -   @AVAILABLE@ - The data repository is available for use.
+--
+-- -   @MISCONFIGURED@ - Amazon FSx cannot automatically import updates
+--     from the S3 bucket until the data repository configuration is
+--     corrected. For more information, see
+--     <https://docs.aws.amazon.com/fsx/latest/LustreGuide/troubleshooting.html#troubleshooting-misconfigured-data-repository Troubleshooting a Misconfigured linked S3 bucket>.
+--
+-- -   @UPDATING@ - The data repository is undergoing a customer initiated
+--     update and availability may be impacted.
+--
+-- -   @FAILED@ - The data repository is in a terminal state that cannot be
+--     recovered.
+newDataRepositoryConfiguration ::
+  DataRepositoryConfiguration
+newDataRepositoryConfiguration =
+  DataRepositoryConfiguration'
+    { autoImportPolicy =
+        Prelude.Nothing,
+      exportPath = Prelude.Nothing,
+      failureDetails = Prelude.Nothing,
+      importPath = Prelude.Nothing,
+      importedFileChunkSize = Prelude.Nothing,
+      lifecycle = Prelude.Nothing
+    }
+
+-- | Describes the file system\'s linked S3 data repository\'s
+-- @AutoImportPolicy@. The AutoImportPolicy configures how Amazon FSx keeps
+-- your file and directory listings up to date as you add or modify objects
+-- in your linked S3 bucket. @AutoImportPolicy@ can have the following
+-- values:
+--
+-- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+--     and directory listings from the linked S3 bucket when the file
+--     system is created. FSx does not update file and directory listings
+--     for any new or changed objects after choosing this option.
+--
+-- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+--     listings of any new objects added to the linked S3 bucket that do
+--     not currently exist in the FSx file system.
+--
+-- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+--     file and directory listings of any new objects added to the S3
+--     bucket and any existing objects that are changed in the S3 bucket
+--     after you choose this option.
+--
+-- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+--     imports file and directory listings of any new objects added to the
+--     S3 bucket, any existing objects that are changed in the S3 bucket,
+--     and any objects that were deleted in the S3 bucket.
+dataRepositoryConfiguration_autoImportPolicy :: Lens.Lens' DataRepositoryConfiguration (Prelude.Maybe AutoImportPolicyType)
+dataRepositoryConfiguration_autoImportPolicy = Lens.lens (\DataRepositoryConfiguration' {autoImportPolicy} -> autoImportPolicy) (\s@DataRepositoryConfiguration' {} a -> s {autoImportPolicy = a} :: DataRepositoryConfiguration)
+
+-- | The export path to the Amazon S3 bucket (and prefix) that you are using
+-- to store new and changed Lustre file system files in S3.
+dataRepositoryConfiguration_exportPath :: Lens.Lens' DataRepositoryConfiguration (Prelude.Maybe Prelude.Text)
+dataRepositoryConfiguration_exportPath = Lens.lens (\DataRepositoryConfiguration' {exportPath} -> exportPath) (\s@DataRepositoryConfiguration' {} a -> s {exportPath = a} :: DataRepositoryConfiguration)
+
+-- | Undocumented member.
+dataRepositoryConfiguration_failureDetails :: Lens.Lens' DataRepositoryConfiguration (Prelude.Maybe DataRepositoryFailureDetails)
+dataRepositoryConfiguration_failureDetails = Lens.lens (\DataRepositoryConfiguration' {failureDetails} -> failureDetails) (\s@DataRepositoryConfiguration' {} a -> s {failureDetails = a} :: DataRepositoryConfiguration)
+
+-- | The import path to the Amazon S3 bucket (and optional prefix) that
+-- you\'re using as the data repository for your FSx for Lustre file
+-- system, for example @s3:\/\/import-bucket\/optional-prefix@. If a prefix
+-- is specified after the Amazon S3 bucket name, only object keys with that
+-- prefix are loaded into the file system.
+dataRepositoryConfiguration_importPath :: Lens.Lens' DataRepositoryConfiguration (Prelude.Maybe Prelude.Text)
+dataRepositoryConfiguration_importPath = Lens.lens (\DataRepositoryConfiguration' {importPath} -> importPath) (\s@DataRepositoryConfiguration' {} a -> s {importPath = a} :: DataRepositoryConfiguration)
+
+-- | For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+dataRepositoryConfiguration_importedFileChunkSize :: Lens.Lens' DataRepositoryConfiguration (Prelude.Maybe Prelude.Natural)
+dataRepositoryConfiguration_importedFileChunkSize = Lens.lens (\DataRepositoryConfiguration' {importedFileChunkSize} -> importedFileChunkSize) (\s@DataRepositoryConfiguration' {} a -> s {importedFileChunkSize = a} :: DataRepositoryConfiguration)
+
+-- | Describes the state of the file system\'s S3 durable data repository, if
+-- it is configured with an S3 repository. The lifecycle can have the
+-- following values:
+--
+-- -   @CREATING@ - The data repository configuration between the FSx file
+--     system and the linked S3 data repository is being created. The data
+--     repository is unavailable.
+--
+-- -   @AVAILABLE@ - The data repository is available for use.
+--
+-- -   @MISCONFIGURED@ - Amazon FSx cannot automatically import updates
+--     from the S3 bucket until the data repository configuration is
+--     corrected. For more information, see
+--     <https://docs.aws.amazon.com/fsx/latest/LustreGuide/troubleshooting.html#troubleshooting-misconfigured-data-repository Troubleshooting a Misconfigured linked S3 bucket>.
+--
+-- -   @UPDATING@ - The data repository is undergoing a customer initiated
+--     update and availability may be impacted.
+--
+-- -   @FAILED@ - The data repository is in a terminal state that cannot be
+--     recovered.
+dataRepositoryConfiguration_lifecycle :: Lens.Lens' DataRepositoryConfiguration (Prelude.Maybe DataRepositoryLifecycle)
+dataRepositoryConfiguration_lifecycle = Lens.lens (\DataRepositoryConfiguration' {lifecycle} -> lifecycle) (\s@DataRepositoryConfiguration' {} a -> s {lifecycle = a} :: DataRepositoryConfiguration)
+
+instance Data.FromJSON DataRepositoryConfiguration where
+  parseJSON =
+    Data.withObject
+      "DataRepositoryConfiguration"
+      ( \x ->
+          DataRepositoryConfiguration'
+            Prelude.<$> (x Data..:? "AutoImportPolicy")
+            Prelude.<*> (x Data..:? "ExportPath")
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "ImportPath")
+            Prelude.<*> (x Data..:? "ImportedFileChunkSize")
+            Prelude.<*> (x Data..:? "Lifecycle")
+      )
+
+instance Prelude.Hashable DataRepositoryConfiguration where
+  hashWithSalt _salt DataRepositoryConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoImportPolicy
+      `Prelude.hashWithSalt` exportPath
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` importPath
+      `Prelude.hashWithSalt` importedFileChunkSize
+      `Prelude.hashWithSalt` lifecycle
+
+instance Prelude.NFData DataRepositoryConfiguration where
+  rnf DataRepositoryConfiguration' {..} =
+    Prelude.rnf autoImportPolicy
+      `Prelude.seq` Prelude.rnf exportPath
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf importPath
+      `Prelude.seq` Prelude.rnf importedFileChunkSize
+      `Prelude.seq` Prelude.rnf lifecycle
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryFailureDetails.hs b/gen/Amazonka/FSx/Types/DataRepositoryFailureDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryFailureDetails.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.FSx.Types.DataRepositoryFailureDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryFailureDetails where
+
+import qualified 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 detailed information about the data repository if its
+-- @Lifecycle@ is set to @MISCONFIGURED@ or @FAILED@.
+--
+-- /See:/ 'newDataRepositoryFailureDetails' smart constructor.
+data DataRepositoryFailureDetails = DataRepositoryFailureDetails'
+  { message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryFailureDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'dataRepositoryFailureDetails_message' - Undocumented member.
+newDataRepositoryFailureDetails ::
+  DataRepositoryFailureDetails
+newDataRepositoryFailureDetails =
+  DataRepositoryFailureDetails'
+    { message =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+dataRepositoryFailureDetails_message :: Lens.Lens' DataRepositoryFailureDetails (Prelude.Maybe Prelude.Text)
+dataRepositoryFailureDetails_message = Lens.lens (\DataRepositoryFailureDetails' {message} -> message) (\s@DataRepositoryFailureDetails' {} a -> s {message = a} :: DataRepositoryFailureDetails)
+
+instance Data.FromJSON DataRepositoryFailureDetails where
+  parseJSON =
+    Data.withObject
+      "DataRepositoryFailureDetails"
+      ( \x ->
+          DataRepositoryFailureDetails'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance
+  Prelude.Hashable
+    DataRepositoryFailureDetails
+  where
+  hashWithSalt _salt DataRepositoryFailureDetails' {..} =
+    _salt `Prelude.hashWithSalt` message
+
+instance Prelude.NFData DataRepositoryFailureDetails where
+  rnf DataRepositoryFailureDetails' {..} =
+    Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryLifecycle.hs b/gen/Amazonka/FSx/Types/DataRepositoryLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryLifecycle.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.FSx.Types.DataRepositoryLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryLifecycle
+  ( DataRepositoryLifecycle
+      ( ..,
+        DataRepositoryLifecycle_AVAILABLE,
+        DataRepositoryLifecycle_CREATING,
+        DataRepositoryLifecycle_DELETING,
+        DataRepositoryLifecycle_FAILED,
+        DataRepositoryLifecycle_MISCONFIGURED,
+        DataRepositoryLifecycle_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataRepositoryLifecycle = DataRepositoryLifecycle'
+  { fromDataRepositoryLifecycle ::
+      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 DataRepositoryLifecycle_AVAILABLE :: DataRepositoryLifecycle
+pattern DataRepositoryLifecycle_AVAILABLE = DataRepositoryLifecycle' "AVAILABLE"
+
+pattern DataRepositoryLifecycle_CREATING :: DataRepositoryLifecycle
+pattern DataRepositoryLifecycle_CREATING = DataRepositoryLifecycle' "CREATING"
+
+pattern DataRepositoryLifecycle_DELETING :: DataRepositoryLifecycle
+pattern DataRepositoryLifecycle_DELETING = DataRepositoryLifecycle' "DELETING"
+
+pattern DataRepositoryLifecycle_FAILED :: DataRepositoryLifecycle
+pattern DataRepositoryLifecycle_FAILED = DataRepositoryLifecycle' "FAILED"
+
+pattern DataRepositoryLifecycle_MISCONFIGURED :: DataRepositoryLifecycle
+pattern DataRepositoryLifecycle_MISCONFIGURED = DataRepositoryLifecycle' "MISCONFIGURED"
+
+pattern DataRepositoryLifecycle_UPDATING :: DataRepositoryLifecycle
+pattern DataRepositoryLifecycle_UPDATING = DataRepositoryLifecycle' "UPDATING"
+
+{-# COMPLETE
+  DataRepositoryLifecycle_AVAILABLE,
+  DataRepositoryLifecycle_CREATING,
+  DataRepositoryLifecycle_DELETING,
+  DataRepositoryLifecycle_FAILED,
+  DataRepositoryLifecycle_MISCONFIGURED,
+  DataRepositoryLifecycle_UPDATING,
+  DataRepositoryLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTask.hs b/gen/Amazonka/FSx/Types/DataRepositoryTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTask.hs
@@ -0,0 +1,378 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.DataRepositoryTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTask where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.CompletionReport
+import Amazonka.FSx.Types.DataRepositoryTaskFailureDetails
+import Amazonka.FSx.Types.DataRepositoryTaskLifecycle
+import Amazonka.FSx.Types.DataRepositoryTaskStatus
+import Amazonka.FSx.Types.DataRepositoryTaskType
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | A description of the data repository task. You use data repository tasks
+-- to perform bulk transfer operations between an Amazon FSx for Lustre
+-- file system and a linked data repository. An Amazon File Cache resource
+-- uses a task to automatically release files from the cache.
+--
+-- /See:/ 'newDataRepositoryTask' smart constructor.
+data DataRepositoryTask = DataRepositoryTask'
+  { -- | Specifies the amount of data to release, in GiB, by an Amazon File Cache
+    -- AUTO_RELEASE_DATA task that automatically releases files from the cache.
+    capacityToRelease :: Prelude.Maybe Prelude.Natural,
+    -- | The time the system completed processing the task, populated after the
+    -- task is complete.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Failure message describing why the task failed, it is populated only
+    -- when @Lifecycle@ is set to @FAILED@.
+    failureDetails :: Prelude.Maybe DataRepositoryTaskFailureDetails,
+    -- | The system-generated, unique ID of the cache.
+    fileCacheId :: Prelude.Maybe Prelude.Text,
+    -- | The globally unique ID of the file system.
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | An array of paths that specify the data for the data repository task to
+    -- process. For example, in an EXPORT_TO_REPOSITORY task, the paths specify
+    -- which data to export to the linked data repository.
+    --
+    -- (Default) If @Paths@ is not specified, Amazon FSx uses the file system
+    -- root directory.
+    paths :: Prelude.Maybe [Prelude.Text],
+    report :: Prelude.Maybe CompletionReport,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The time the system began processing the task.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | Provides the status of the number of files that the task has processed
+    -- successfully and failed to process.
+    status :: Prelude.Maybe DataRepositoryTaskStatus,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The system-generated, unique 17-digit ID of the data repository task.
+    taskId :: Prelude.Text,
+    -- | The lifecycle status of the data repository task, as follows:
+    --
+    -- -   @PENDING@ - The task has not started.
+    --
+    -- -   @EXECUTING@ - The task is in process.
+    --
+    -- -   @FAILED@ - The task was not able to be completed. For example, there
+    --     may be files the task failed to process. The
+    --     DataRepositoryTaskFailureDetails property provides more information
+    --     about task failures.
+    --
+    -- -   @SUCCEEDED@ - The task has completed successfully.
+    --
+    -- -   @CANCELED@ - The task was canceled and it did not complete.
+    --
+    -- -   @CANCELING@ - The task is in process of being canceled.
+    --
+    -- You cannot delete an FSx for Lustre file system if there are data
+    -- repository tasks for the file system in the @PENDING@ or @EXECUTING@
+    -- states. Please retry when the data repository task is finished (with a
+    -- status of @CANCELED@, @SUCCEEDED@, or @FAILED@). You can use the
+    -- DescribeDataRepositoryTask action to monitor the task status. Contact
+    -- the FSx team if you need to delete your file system immediately.
+    lifecycle :: DataRepositoryTaskLifecycle,
+    -- | The type of data repository task.
+    --
+    -- -   @EXPORT_TO_REPOSITORY@ tasks export from your Amazon FSx for Lustre
+    --     file system to a linked data repository.
+    --
+    -- -   @IMPORT_METADATA_FROM_REPOSITORY@ tasks import metadata changes from
+    --     a linked S3 bucket to your Amazon FSx for Lustre file system.
+    --
+    -- -   @AUTO_RELEASE_DATA@ tasks automatically release files from an Amazon
+    --     File Cache resource.
+    type' :: DataRepositoryTaskType,
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'capacityToRelease', 'dataRepositoryTask_capacityToRelease' - Specifies the amount of data to release, in GiB, by an Amazon File Cache
+-- AUTO_RELEASE_DATA task that automatically releases files from the cache.
+--
+-- 'endTime', 'dataRepositoryTask_endTime' - The time the system completed processing the task, populated after the
+-- task is complete.
+--
+-- 'failureDetails', 'dataRepositoryTask_failureDetails' - Failure message describing why the task failed, it is populated only
+-- when @Lifecycle@ is set to @FAILED@.
+--
+-- 'fileCacheId', 'dataRepositoryTask_fileCacheId' - The system-generated, unique ID of the cache.
+--
+-- 'fileSystemId', 'dataRepositoryTask_fileSystemId' - The globally unique ID of the file system.
+--
+-- 'paths', 'dataRepositoryTask_paths' - An array of paths that specify the data for the data repository task to
+-- process. For example, in an EXPORT_TO_REPOSITORY task, the paths specify
+-- which data to export to the linked data repository.
+--
+-- (Default) If @Paths@ is not specified, Amazon FSx uses the file system
+-- root directory.
+--
+-- 'report', 'dataRepositoryTask_report' - Undocumented member.
+--
+-- 'resourceARN', 'dataRepositoryTask_resourceARN' - Undocumented member.
+--
+-- 'startTime', 'dataRepositoryTask_startTime' - The time the system began processing the task.
+--
+-- 'status', 'dataRepositoryTask_status' - Provides the status of the number of files that the task has processed
+-- successfully and failed to process.
+--
+-- 'tags', 'dataRepositoryTask_tags' - Undocumented member.
+--
+-- 'taskId', 'dataRepositoryTask_taskId' - The system-generated, unique 17-digit ID of the data repository task.
+--
+-- 'lifecycle', 'dataRepositoryTask_lifecycle' - The lifecycle status of the data repository task, as follows:
+--
+-- -   @PENDING@ - The task has not started.
+--
+-- -   @EXECUTING@ - The task is in process.
+--
+-- -   @FAILED@ - The task was not able to be completed. For example, there
+--     may be files the task failed to process. The
+--     DataRepositoryTaskFailureDetails property provides more information
+--     about task failures.
+--
+-- -   @SUCCEEDED@ - The task has completed successfully.
+--
+-- -   @CANCELED@ - The task was canceled and it did not complete.
+--
+-- -   @CANCELING@ - The task is in process of being canceled.
+--
+-- You cannot delete an FSx for Lustre file system if there are data
+-- repository tasks for the file system in the @PENDING@ or @EXECUTING@
+-- states. Please retry when the data repository task is finished (with a
+-- status of @CANCELED@, @SUCCEEDED@, or @FAILED@). You can use the
+-- DescribeDataRepositoryTask action to monitor the task status. Contact
+-- the FSx team if you need to delete your file system immediately.
+--
+-- 'type'', 'dataRepositoryTask_type' - The type of data repository task.
+--
+-- -   @EXPORT_TO_REPOSITORY@ tasks export from your Amazon FSx for Lustre
+--     file system to a linked data repository.
+--
+-- -   @IMPORT_METADATA_FROM_REPOSITORY@ tasks import metadata changes from
+--     a linked S3 bucket to your Amazon FSx for Lustre file system.
+--
+-- -   @AUTO_RELEASE_DATA@ tasks automatically release files from an Amazon
+--     File Cache resource.
+--
+-- 'creationTime', 'dataRepositoryTask_creationTime' - Undocumented member.
+newDataRepositoryTask ::
+  -- | 'taskId'
+  Prelude.Text ->
+  -- | 'lifecycle'
+  DataRepositoryTaskLifecycle ->
+  -- | 'type''
+  DataRepositoryTaskType ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DataRepositoryTask
+newDataRepositoryTask
+  pTaskId_
+  pLifecycle_
+  pType_
+  pCreationTime_ =
+    DataRepositoryTask'
+      { capacityToRelease =
+          Prelude.Nothing,
+        endTime = Prelude.Nothing,
+        failureDetails = Prelude.Nothing,
+        fileCacheId = Prelude.Nothing,
+        fileSystemId = Prelude.Nothing,
+        paths = Prelude.Nothing,
+        report = Prelude.Nothing,
+        resourceARN = Prelude.Nothing,
+        startTime = Prelude.Nothing,
+        status = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        taskId = pTaskId_,
+        lifecycle = pLifecycle_,
+        type' = pType_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | Specifies the amount of data to release, in GiB, by an Amazon File Cache
+-- AUTO_RELEASE_DATA task that automatically releases files from the cache.
+dataRepositoryTask_capacityToRelease :: Lens.Lens' DataRepositoryTask (Prelude.Maybe Prelude.Natural)
+dataRepositoryTask_capacityToRelease = Lens.lens (\DataRepositoryTask' {capacityToRelease} -> capacityToRelease) (\s@DataRepositoryTask' {} a -> s {capacityToRelease = a} :: DataRepositoryTask)
+
+-- | The time the system completed processing the task, populated after the
+-- task is complete.
+dataRepositoryTask_endTime :: Lens.Lens' DataRepositoryTask (Prelude.Maybe Prelude.UTCTime)
+dataRepositoryTask_endTime = Lens.lens (\DataRepositoryTask' {endTime} -> endTime) (\s@DataRepositoryTask' {} a -> s {endTime = a} :: DataRepositoryTask) Prelude.. Lens.mapping Data._Time
+
+-- | Failure message describing why the task failed, it is populated only
+-- when @Lifecycle@ is set to @FAILED@.
+dataRepositoryTask_failureDetails :: Lens.Lens' DataRepositoryTask (Prelude.Maybe DataRepositoryTaskFailureDetails)
+dataRepositoryTask_failureDetails = Lens.lens (\DataRepositoryTask' {failureDetails} -> failureDetails) (\s@DataRepositoryTask' {} a -> s {failureDetails = a} :: DataRepositoryTask)
+
+-- | The system-generated, unique ID of the cache.
+dataRepositoryTask_fileCacheId :: Lens.Lens' DataRepositoryTask (Prelude.Maybe Prelude.Text)
+dataRepositoryTask_fileCacheId = Lens.lens (\DataRepositoryTask' {fileCacheId} -> fileCacheId) (\s@DataRepositoryTask' {} a -> s {fileCacheId = a} :: DataRepositoryTask)
+
+-- | The globally unique ID of the file system.
+dataRepositoryTask_fileSystemId :: Lens.Lens' DataRepositoryTask (Prelude.Maybe Prelude.Text)
+dataRepositoryTask_fileSystemId = Lens.lens (\DataRepositoryTask' {fileSystemId} -> fileSystemId) (\s@DataRepositoryTask' {} a -> s {fileSystemId = a} :: DataRepositoryTask)
+
+-- | An array of paths that specify the data for the data repository task to
+-- process. For example, in an EXPORT_TO_REPOSITORY task, the paths specify
+-- which data to export to the linked data repository.
+--
+-- (Default) If @Paths@ is not specified, Amazon FSx uses the file system
+-- root directory.
+dataRepositoryTask_paths :: Lens.Lens' DataRepositoryTask (Prelude.Maybe [Prelude.Text])
+dataRepositoryTask_paths = Lens.lens (\DataRepositoryTask' {paths} -> paths) (\s@DataRepositoryTask' {} a -> s {paths = a} :: DataRepositoryTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+dataRepositoryTask_report :: Lens.Lens' DataRepositoryTask (Prelude.Maybe CompletionReport)
+dataRepositoryTask_report = Lens.lens (\DataRepositoryTask' {report} -> report) (\s@DataRepositoryTask' {} a -> s {report = a} :: DataRepositoryTask)
+
+-- | Undocumented member.
+dataRepositoryTask_resourceARN :: Lens.Lens' DataRepositoryTask (Prelude.Maybe Prelude.Text)
+dataRepositoryTask_resourceARN = Lens.lens (\DataRepositoryTask' {resourceARN} -> resourceARN) (\s@DataRepositoryTask' {} a -> s {resourceARN = a} :: DataRepositoryTask)
+
+-- | The time the system began processing the task.
+dataRepositoryTask_startTime :: Lens.Lens' DataRepositoryTask (Prelude.Maybe Prelude.UTCTime)
+dataRepositoryTask_startTime = Lens.lens (\DataRepositoryTask' {startTime} -> startTime) (\s@DataRepositoryTask' {} a -> s {startTime = a} :: DataRepositoryTask) Prelude.. Lens.mapping Data._Time
+
+-- | Provides the status of the number of files that the task has processed
+-- successfully and failed to process.
+dataRepositoryTask_status :: Lens.Lens' DataRepositoryTask (Prelude.Maybe DataRepositoryTaskStatus)
+dataRepositoryTask_status = Lens.lens (\DataRepositoryTask' {status} -> status) (\s@DataRepositoryTask' {} a -> s {status = a} :: DataRepositoryTask)
+
+-- | Undocumented member.
+dataRepositoryTask_tags :: Lens.Lens' DataRepositoryTask (Prelude.Maybe (Prelude.NonEmpty Tag))
+dataRepositoryTask_tags = Lens.lens (\DataRepositoryTask' {tags} -> tags) (\s@DataRepositoryTask' {} a -> s {tags = a} :: DataRepositoryTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | The system-generated, unique 17-digit ID of the data repository task.
+dataRepositoryTask_taskId :: Lens.Lens' DataRepositoryTask Prelude.Text
+dataRepositoryTask_taskId = Lens.lens (\DataRepositoryTask' {taskId} -> taskId) (\s@DataRepositoryTask' {} a -> s {taskId = a} :: DataRepositoryTask)
+
+-- | The lifecycle status of the data repository task, as follows:
+--
+-- -   @PENDING@ - The task has not started.
+--
+-- -   @EXECUTING@ - The task is in process.
+--
+-- -   @FAILED@ - The task was not able to be completed. For example, there
+--     may be files the task failed to process. The
+--     DataRepositoryTaskFailureDetails property provides more information
+--     about task failures.
+--
+-- -   @SUCCEEDED@ - The task has completed successfully.
+--
+-- -   @CANCELED@ - The task was canceled and it did not complete.
+--
+-- -   @CANCELING@ - The task is in process of being canceled.
+--
+-- You cannot delete an FSx for Lustre file system if there are data
+-- repository tasks for the file system in the @PENDING@ or @EXECUTING@
+-- states. Please retry when the data repository task is finished (with a
+-- status of @CANCELED@, @SUCCEEDED@, or @FAILED@). You can use the
+-- DescribeDataRepositoryTask action to monitor the task status. Contact
+-- the FSx team if you need to delete your file system immediately.
+dataRepositoryTask_lifecycle :: Lens.Lens' DataRepositoryTask DataRepositoryTaskLifecycle
+dataRepositoryTask_lifecycle = Lens.lens (\DataRepositoryTask' {lifecycle} -> lifecycle) (\s@DataRepositoryTask' {} a -> s {lifecycle = a} :: DataRepositoryTask)
+
+-- | The type of data repository task.
+--
+-- -   @EXPORT_TO_REPOSITORY@ tasks export from your Amazon FSx for Lustre
+--     file system to a linked data repository.
+--
+-- -   @IMPORT_METADATA_FROM_REPOSITORY@ tasks import metadata changes from
+--     a linked S3 bucket to your Amazon FSx for Lustre file system.
+--
+-- -   @AUTO_RELEASE_DATA@ tasks automatically release files from an Amazon
+--     File Cache resource.
+dataRepositoryTask_type :: Lens.Lens' DataRepositoryTask DataRepositoryTaskType
+dataRepositoryTask_type = Lens.lens (\DataRepositoryTask' {type'} -> type') (\s@DataRepositoryTask' {} a -> s {type' = a} :: DataRepositoryTask)
+
+-- | Undocumented member.
+dataRepositoryTask_creationTime :: Lens.Lens' DataRepositoryTask Prelude.UTCTime
+dataRepositoryTask_creationTime = Lens.lens (\DataRepositoryTask' {creationTime} -> creationTime) (\s@DataRepositoryTask' {} a -> s {creationTime = a} :: DataRepositoryTask) Prelude.. Data._Time
+
+instance Data.FromJSON DataRepositoryTask where
+  parseJSON =
+    Data.withObject
+      "DataRepositoryTask"
+      ( \x ->
+          DataRepositoryTask'
+            Prelude.<$> (x Data..:? "CapacityToRelease")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "FileCacheId")
+            Prelude.<*> (x Data..:? "FileSystemId")
+            Prelude.<*> (x Data..:? "Paths" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Report")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..: "TaskId")
+            Prelude.<*> (x Data..: "Lifecycle")
+            Prelude.<*> (x Data..: "Type")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable DataRepositoryTask where
+  hashWithSalt _salt DataRepositoryTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` capacityToRelease
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` fileCacheId
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` paths
+      `Prelude.hashWithSalt` report
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` taskId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData DataRepositoryTask where
+  rnf DataRepositoryTask' {..} =
+    Prelude.rnf capacityToRelease
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf fileCacheId
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf paths
+      `Prelude.seq` Prelude.rnf report
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf taskId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTaskFailureDetails.hs b/gen/Amazonka/FSx/Types/DataRepositoryTaskFailureDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTaskFailureDetails.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.FSx.Types.DataRepositoryTaskFailureDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTaskFailureDetails where
+
+import qualified 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 information about why a data repository task failed. Only
+-- populated when the task @Lifecycle@ is set to @FAILED@.
+--
+-- /See:/ 'newDataRepositoryTaskFailureDetails' smart constructor.
+data DataRepositoryTaskFailureDetails = DataRepositoryTaskFailureDetails'
+  { message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryTaskFailureDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'dataRepositoryTaskFailureDetails_message' - Undocumented member.
+newDataRepositoryTaskFailureDetails ::
+  DataRepositoryTaskFailureDetails
+newDataRepositoryTaskFailureDetails =
+  DataRepositoryTaskFailureDetails'
+    { message =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+dataRepositoryTaskFailureDetails_message :: Lens.Lens' DataRepositoryTaskFailureDetails (Prelude.Maybe Prelude.Text)
+dataRepositoryTaskFailureDetails_message = Lens.lens (\DataRepositoryTaskFailureDetails' {message} -> message) (\s@DataRepositoryTaskFailureDetails' {} a -> s {message = a} :: DataRepositoryTaskFailureDetails)
+
+instance
+  Data.FromJSON
+    DataRepositoryTaskFailureDetails
+  where
+  parseJSON =
+    Data.withObject
+      "DataRepositoryTaskFailureDetails"
+      ( \x ->
+          DataRepositoryTaskFailureDetails'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance
+  Prelude.Hashable
+    DataRepositoryTaskFailureDetails
+  where
+  hashWithSalt
+    _salt
+    DataRepositoryTaskFailureDetails' {..} =
+      _salt `Prelude.hashWithSalt` message
+
+instance
+  Prelude.NFData
+    DataRepositoryTaskFailureDetails
+  where
+  rnf DataRepositoryTaskFailureDetails' {..} =
+    Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTaskFilter.hs b/gen/Amazonka/FSx/Types/DataRepositoryTaskFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTaskFilter.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.FSx.Types.DataRepositoryTaskFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTaskFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DataRepositoryTaskFilterName
+import qualified Amazonka.Prelude as Prelude
+
+-- | (Optional) An array of filter objects you can use to filter the response
+-- of data repository tasks you will see in the the response. You can
+-- filter the tasks returned in the response by one or more file system
+-- IDs, task lifecycles, and by task type. A filter object consists of a
+-- filter @Name@, and one or more @Values@ for the filter.
+--
+-- /See:/ 'newDataRepositoryTaskFilter' smart constructor.
+data DataRepositoryTaskFilter = DataRepositoryTaskFilter'
+  { -- | Name of the task property to use in filtering the tasks returned in the
+    -- response.
+    --
+    -- -   Use @file-system-id@ to retrieve data repository tasks for specific
+    --     file systems.
+    --
+    -- -   Use @task-lifecycle@ to retrieve data repository tasks with one or
+    --     more specific lifecycle states, as follows: CANCELED, EXECUTING,
+    --     FAILED, PENDING, and SUCCEEDED.
+    name :: Prelude.Maybe DataRepositoryTaskFilterName,
+    -- | Use Values to include the specific file system IDs and task lifecycle
+    -- states for the filters you are using.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryTaskFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'dataRepositoryTaskFilter_name' - Name of the task property to use in filtering the tasks returned in the
+-- response.
+--
+-- -   Use @file-system-id@ to retrieve data repository tasks for specific
+--     file systems.
+--
+-- -   Use @task-lifecycle@ to retrieve data repository tasks with one or
+--     more specific lifecycle states, as follows: CANCELED, EXECUTING,
+--     FAILED, PENDING, and SUCCEEDED.
+--
+-- 'values', 'dataRepositoryTaskFilter_values' - Use Values to include the specific file system IDs and task lifecycle
+-- states for the filters you are using.
+newDataRepositoryTaskFilter ::
+  DataRepositoryTaskFilter
+newDataRepositoryTaskFilter =
+  DataRepositoryTaskFilter'
+    { name = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | Name of the task property to use in filtering the tasks returned in the
+-- response.
+--
+-- -   Use @file-system-id@ to retrieve data repository tasks for specific
+--     file systems.
+--
+-- -   Use @task-lifecycle@ to retrieve data repository tasks with one or
+--     more specific lifecycle states, as follows: CANCELED, EXECUTING,
+--     FAILED, PENDING, and SUCCEEDED.
+dataRepositoryTaskFilter_name :: Lens.Lens' DataRepositoryTaskFilter (Prelude.Maybe DataRepositoryTaskFilterName)
+dataRepositoryTaskFilter_name = Lens.lens (\DataRepositoryTaskFilter' {name} -> name) (\s@DataRepositoryTaskFilter' {} a -> s {name = a} :: DataRepositoryTaskFilter)
+
+-- | Use Values to include the specific file system IDs and task lifecycle
+-- states for the filters you are using.
+dataRepositoryTaskFilter_values :: Lens.Lens' DataRepositoryTaskFilter (Prelude.Maybe [Prelude.Text])
+dataRepositoryTaskFilter_values = Lens.lens (\DataRepositoryTaskFilter' {values} -> values) (\s@DataRepositoryTaskFilter' {} a -> s {values = a} :: DataRepositoryTaskFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable DataRepositoryTaskFilter where
+  hashWithSalt _salt DataRepositoryTaskFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData DataRepositoryTaskFilter where
+  rnf DataRepositoryTaskFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON DataRepositoryTaskFilter where
+  toJSON DataRepositoryTaskFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTaskFilterName.hs b/gen/Amazonka/FSx/Types/DataRepositoryTaskFilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTaskFilterName.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.FSx.Types.DataRepositoryTaskFilterName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTaskFilterName
+  ( DataRepositoryTaskFilterName
+      ( ..,
+        DataRepositoryTaskFilterName_Data_repository_association_id,
+        DataRepositoryTaskFilterName_File_cache_id,
+        DataRepositoryTaskFilterName_File_system_id,
+        DataRepositoryTaskFilterName_Task_lifecycle
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataRepositoryTaskFilterName = DataRepositoryTaskFilterName'
+  { fromDataRepositoryTaskFilterName ::
+      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 DataRepositoryTaskFilterName_Data_repository_association_id :: DataRepositoryTaskFilterName
+pattern DataRepositoryTaskFilterName_Data_repository_association_id = DataRepositoryTaskFilterName' "data-repository-association-id"
+
+pattern DataRepositoryTaskFilterName_File_cache_id :: DataRepositoryTaskFilterName
+pattern DataRepositoryTaskFilterName_File_cache_id = DataRepositoryTaskFilterName' "file-cache-id"
+
+pattern DataRepositoryTaskFilterName_File_system_id :: DataRepositoryTaskFilterName
+pattern DataRepositoryTaskFilterName_File_system_id = DataRepositoryTaskFilterName' "file-system-id"
+
+pattern DataRepositoryTaskFilterName_Task_lifecycle :: DataRepositoryTaskFilterName
+pattern DataRepositoryTaskFilterName_Task_lifecycle = DataRepositoryTaskFilterName' "task-lifecycle"
+
+{-# COMPLETE
+  DataRepositoryTaskFilterName_Data_repository_association_id,
+  DataRepositoryTaskFilterName_File_cache_id,
+  DataRepositoryTaskFilterName_File_system_id,
+  DataRepositoryTaskFilterName_Task_lifecycle,
+  DataRepositoryTaskFilterName'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTaskLifecycle.hs b/gen/Amazonka/FSx/Types/DataRepositoryTaskLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTaskLifecycle.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.FSx.Types.DataRepositoryTaskLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTaskLifecycle
+  ( DataRepositoryTaskLifecycle
+      ( ..,
+        DataRepositoryTaskLifecycle_CANCELED,
+        DataRepositoryTaskLifecycle_CANCELING,
+        DataRepositoryTaskLifecycle_EXECUTING,
+        DataRepositoryTaskLifecycle_FAILED,
+        DataRepositoryTaskLifecycle_PENDING,
+        DataRepositoryTaskLifecycle_SUCCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataRepositoryTaskLifecycle = DataRepositoryTaskLifecycle'
+  { fromDataRepositoryTaskLifecycle ::
+      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 DataRepositoryTaskLifecycle_CANCELED :: DataRepositoryTaskLifecycle
+pattern DataRepositoryTaskLifecycle_CANCELED = DataRepositoryTaskLifecycle' "CANCELED"
+
+pattern DataRepositoryTaskLifecycle_CANCELING :: DataRepositoryTaskLifecycle
+pattern DataRepositoryTaskLifecycle_CANCELING = DataRepositoryTaskLifecycle' "CANCELING"
+
+pattern DataRepositoryTaskLifecycle_EXECUTING :: DataRepositoryTaskLifecycle
+pattern DataRepositoryTaskLifecycle_EXECUTING = DataRepositoryTaskLifecycle' "EXECUTING"
+
+pattern DataRepositoryTaskLifecycle_FAILED :: DataRepositoryTaskLifecycle
+pattern DataRepositoryTaskLifecycle_FAILED = DataRepositoryTaskLifecycle' "FAILED"
+
+pattern DataRepositoryTaskLifecycle_PENDING :: DataRepositoryTaskLifecycle
+pattern DataRepositoryTaskLifecycle_PENDING = DataRepositoryTaskLifecycle' "PENDING"
+
+pattern DataRepositoryTaskLifecycle_SUCCEEDED :: DataRepositoryTaskLifecycle
+pattern DataRepositoryTaskLifecycle_SUCCEEDED = DataRepositoryTaskLifecycle' "SUCCEEDED"
+
+{-# COMPLETE
+  DataRepositoryTaskLifecycle_CANCELED,
+  DataRepositoryTaskLifecycle_CANCELING,
+  DataRepositoryTaskLifecycle_EXECUTING,
+  DataRepositoryTaskLifecycle_FAILED,
+  DataRepositoryTaskLifecycle_PENDING,
+  DataRepositoryTaskLifecycle_SUCCEEDED,
+  DataRepositoryTaskLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTaskStatus.hs b/gen/Amazonka/FSx/Types/DataRepositoryTaskStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTaskStatus.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.FSx.Types.DataRepositoryTaskStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTaskStatus where
+
+import qualified 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 task status showing a running total of the total number of
+-- files to be processed, the number successfully processed, and the number
+-- of files the task failed to process.
+--
+-- /See:/ 'newDataRepositoryTaskStatus' smart constructor.
+data DataRepositoryTaskStatus = DataRepositoryTaskStatus'
+  { -- | A running total of the number of files that the task failed to process.
+    failedCount :: Prelude.Maybe Prelude.Integer,
+    -- | The time at which the task status was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The total amount of data, in GiB, released by an Amazon File Cache
+    -- AUTO_RELEASE_DATA task that automatically releases files from the cache.
+    releasedCapacity :: Prelude.Maybe Prelude.Integer,
+    -- | A running total of the number of files that the task has successfully
+    -- processed.
+    succeededCount :: Prelude.Maybe Prelude.Integer,
+    -- | The total number of files that the task will process. While a task is
+    -- executing, the sum of @SucceededCount@ plus @FailedCount@ may not equal
+    -- @TotalCount@. When the task is complete, @TotalCount@ equals the sum of
+    -- @SucceededCount@ plus @FailedCount@.
+    totalCount :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataRepositoryTaskStatus' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'failedCount', 'dataRepositoryTaskStatus_failedCount' - A running total of the number of files that the task failed to process.
+--
+-- 'lastUpdatedTime', 'dataRepositoryTaskStatus_lastUpdatedTime' - The time at which the task status was last updated.
+--
+-- 'releasedCapacity', 'dataRepositoryTaskStatus_releasedCapacity' - The total amount of data, in GiB, released by an Amazon File Cache
+-- AUTO_RELEASE_DATA task that automatically releases files from the cache.
+--
+-- 'succeededCount', 'dataRepositoryTaskStatus_succeededCount' - A running total of the number of files that the task has successfully
+-- processed.
+--
+-- 'totalCount', 'dataRepositoryTaskStatus_totalCount' - The total number of files that the task will process. While a task is
+-- executing, the sum of @SucceededCount@ plus @FailedCount@ may not equal
+-- @TotalCount@. When the task is complete, @TotalCount@ equals the sum of
+-- @SucceededCount@ plus @FailedCount@.
+newDataRepositoryTaskStatus ::
+  DataRepositoryTaskStatus
+newDataRepositoryTaskStatus =
+  DataRepositoryTaskStatus'
+    { failedCount =
+        Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      releasedCapacity = Prelude.Nothing,
+      succeededCount = Prelude.Nothing,
+      totalCount = Prelude.Nothing
+    }
+
+-- | A running total of the number of files that the task failed to process.
+dataRepositoryTaskStatus_failedCount :: Lens.Lens' DataRepositoryTaskStatus (Prelude.Maybe Prelude.Integer)
+dataRepositoryTaskStatus_failedCount = Lens.lens (\DataRepositoryTaskStatus' {failedCount} -> failedCount) (\s@DataRepositoryTaskStatus' {} a -> s {failedCount = a} :: DataRepositoryTaskStatus)
+
+-- | The time at which the task status was last updated.
+dataRepositoryTaskStatus_lastUpdatedTime :: Lens.Lens' DataRepositoryTaskStatus (Prelude.Maybe Prelude.UTCTime)
+dataRepositoryTaskStatus_lastUpdatedTime = Lens.lens (\DataRepositoryTaskStatus' {lastUpdatedTime} -> lastUpdatedTime) (\s@DataRepositoryTaskStatus' {} a -> s {lastUpdatedTime = a} :: DataRepositoryTaskStatus) Prelude.. Lens.mapping Data._Time
+
+-- | The total amount of data, in GiB, released by an Amazon File Cache
+-- AUTO_RELEASE_DATA task that automatically releases files from the cache.
+dataRepositoryTaskStatus_releasedCapacity :: Lens.Lens' DataRepositoryTaskStatus (Prelude.Maybe Prelude.Integer)
+dataRepositoryTaskStatus_releasedCapacity = Lens.lens (\DataRepositoryTaskStatus' {releasedCapacity} -> releasedCapacity) (\s@DataRepositoryTaskStatus' {} a -> s {releasedCapacity = a} :: DataRepositoryTaskStatus)
+
+-- | A running total of the number of files that the task has successfully
+-- processed.
+dataRepositoryTaskStatus_succeededCount :: Lens.Lens' DataRepositoryTaskStatus (Prelude.Maybe Prelude.Integer)
+dataRepositoryTaskStatus_succeededCount = Lens.lens (\DataRepositoryTaskStatus' {succeededCount} -> succeededCount) (\s@DataRepositoryTaskStatus' {} a -> s {succeededCount = a} :: DataRepositoryTaskStatus)
+
+-- | The total number of files that the task will process. While a task is
+-- executing, the sum of @SucceededCount@ plus @FailedCount@ may not equal
+-- @TotalCount@. When the task is complete, @TotalCount@ equals the sum of
+-- @SucceededCount@ plus @FailedCount@.
+dataRepositoryTaskStatus_totalCount :: Lens.Lens' DataRepositoryTaskStatus (Prelude.Maybe Prelude.Integer)
+dataRepositoryTaskStatus_totalCount = Lens.lens (\DataRepositoryTaskStatus' {totalCount} -> totalCount) (\s@DataRepositoryTaskStatus' {} a -> s {totalCount = a} :: DataRepositoryTaskStatus)
+
+instance Data.FromJSON DataRepositoryTaskStatus where
+  parseJSON =
+    Data.withObject
+      "DataRepositoryTaskStatus"
+      ( \x ->
+          DataRepositoryTaskStatus'
+            Prelude.<$> (x Data..:? "FailedCount")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "ReleasedCapacity")
+            Prelude.<*> (x Data..:? "SucceededCount")
+            Prelude.<*> (x Data..:? "TotalCount")
+      )
+
+instance Prelude.Hashable DataRepositoryTaskStatus where
+  hashWithSalt _salt DataRepositoryTaskStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` failedCount
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` releasedCapacity
+      `Prelude.hashWithSalt` succeededCount
+      `Prelude.hashWithSalt` totalCount
+
+instance Prelude.NFData DataRepositoryTaskStatus where
+  rnf DataRepositoryTaskStatus' {..} =
+    Prelude.rnf failedCount
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf releasedCapacity
+      `Prelude.seq` Prelude.rnf succeededCount
+      `Prelude.seq` Prelude.rnf totalCount
diff --git a/gen/Amazonka/FSx/Types/DataRepositoryTaskType.hs b/gen/Amazonka/FSx/Types/DataRepositoryTaskType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DataRepositoryTaskType.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.FSx.Types.DataRepositoryTaskType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DataRepositoryTaskType
+  ( DataRepositoryTaskType
+      ( ..,
+        DataRepositoryTaskType_AUTO_RELEASE_DATA,
+        DataRepositoryTaskType_EXPORT_TO_REPOSITORY,
+        DataRepositoryTaskType_IMPORT_METADATA_FROM_REPOSITORY,
+        DataRepositoryTaskType_RELEASE_DATA_FROM_FILESYSTEM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataRepositoryTaskType = DataRepositoryTaskType'
+  { fromDataRepositoryTaskType ::
+      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 DataRepositoryTaskType_AUTO_RELEASE_DATA :: DataRepositoryTaskType
+pattern DataRepositoryTaskType_AUTO_RELEASE_DATA = DataRepositoryTaskType' "AUTO_RELEASE_DATA"
+
+pattern DataRepositoryTaskType_EXPORT_TO_REPOSITORY :: DataRepositoryTaskType
+pattern DataRepositoryTaskType_EXPORT_TO_REPOSITORY = DataRepositoryTaskType' "EXPORT_TO_REPOSITORY"
+
+pattern DataRepositoryTaskType_IMPORT_METADATA_FROM_REPOSITORY :: DataRepositoryTaskType
+pattern DataRepositoryTaskType_IMPORT_METADATA_FROM_REPOSITORY = DataRepositoryTaskType' "IMPORT_METADATA_FROM_REPOSITORY"
+
+pattern DataRepositoryTaskType_RELEASE_DATA_FROM_FILESYSTEM :: DataRepositoryTaskType
+pattern DataRepositoryTaskType_RELEASE_DATA_FROM_FILESYSTEM = DataRepositoryTaskType' "RELEASE_DATA_FROM_FILESYSTEM"
+
+{-# COMPLETE
+  DataRepositoryTaskType_AUTO_RELEASE_DATA,
+  DataRepositoryTaskType_EXPORT_TO_REPOSITORY,
+  DataRepositoryTaskType_IMPORT_METADATA_FROM_REPOSITORY,
+  DataRepositoryTaskType_RELEASE_DATA_FROM_FILESYSTEM,
+  DataRepositoryTaskType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemLustreConfiguration.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemLustreConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemLustreConfiguration.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.FSx.Types.DeleteFileSystemLustreConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemLustreConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for the Amazon FSx for Lustre file system being
+-- deleted in the @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemLustreConfiguration' smart constructor.
+data DeleteFileSystemLustreConfiguration = DeleteFileSystemLustreConfiguration'
+  { -- | Use if @SkipFinalBackup@ is set to @false@, and you want to apply an
+    -- array of tags to the final backup. If you have set the file system
+    -- property @CopyTagsToBackups@ to true, and you specify one or more
+    -- @FinalBackupTags@ when deleting a file system, Amazon FSx will not copy
+    -- any existing file system tags to the backup.
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Set @SkipFinalBackup@ to false if you want to take a final backup of the
+    -- file system you are deleting. By default, Amazon FSx will not take a
+    -- final backup on your behalf when the @DeleteFileSystem@ operation is
+    -- invoked. (Default = true)
+    --
+    -- The @fsx:CreateBackup@ permission is required if you set
+    -- @SkipFinalBackup@ to @false@ in order to delete the file system and take
+    -- a final backup.
+    skipFinalBackup :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemLustreConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupTags', 'deleteFileSystemLustreConfiguration_finalBackupTags' - Use if @SkipFinalBackup@ is set to @false@, and you want to apply an
+-- array of tags to the final backup. If you have set the file system
+-- property @CopyTagsToBackups@ to true, and you specify one or more
+-- @FinalBackupTags@ when deleting a file system, Amazon FSx will not copy
+-- any existing file system tags to the backup.
+--
+-- 'skipFinalBackup', 'deleteFileSystemLustreConfiguration_skipFinalBackup' - Set @SkipFinalBackup@ to false if you want to take a final backup of the
+-- file system you are deleting. By default, Amazon FSx will not take a
+-- final backup on your behalf when the @DeleteFileSystem@ operation is
+-- invoked. (Default = true)
+--
+-- The @fsx:CreateBackup@ permission is required if you set
+-- @SkipFinalBackup@ to @false@ in order to delete the file system and take
+-- a final backup.
+newDeleteFileSystemLustreConfiguration ::
+  DeleteFileSystemLustreConfiguration
+newDeleteFileSystemLustreConfiguration =
+  DeleteFileSystemLustreConfiguration'
+    { finalBackupTags =
+        Prelude.Nothing,
+      skipFinalBackup = Prelude.Nothing
+    }
+
+-- | Use if @SkipFinalBackup@ is set to @false@, and you want to apply an
+-- array of tags to the final backup. If you have set the file system
+-- property @CopyTagsToBackups@ to true, and you specify one or more
+-- @FinalBackupTags@ when deleting a file system, Amazon FSx will not copy
+-- any existing file system tags to the backup.
+deleteFileSystemLustreConfiguration_finalBackupTags :: Lens.Lens' DeleteFileSystemLustreConfiguration (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteFileSystemLustreConfiguration_finalBackupTags = Lens.lens (\DeleteFileSystemLustreConfiguration' {finalBackupTags} -> finalBackupTags) (\s@DeleteFileSystemLustreConfiguration' {} a -> s {finalBackupTags = a} :: DeleteFileSystemLustreConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Set @SkipFinalBackup@ to false if you want to take a final backup of the
+-- file system you are deleting. By default, Amazon FSx will not take a
+-- final backup on your behalf when the @DeleteFileSystem@ operation is
+-- invoked. (Default = true)
+--
+-- The @fsx:CreateBackup@ permission is required if you set
+-- @SkipFinalBackup@ to @false@ in order to delete the file system and take
+-- a final backup.
+deleteFileSystemLustreConfiguration_skipFinalBackup :: Lens.Lens' DeleteFileSystemLustreConfiguration (Prelude.Maybe Prelude.Bool)
+deleteFileSystemLustreConfiguration_skipFinalBackup = Lens.lens (\DeleteFileSystemLustreConfiguration' {skipFinalBackup} -> skipFinalBackup) (\s@DeleteFileSystemLustreConfiguration' {} a -> s {skipFinalBackup = a} :: DeleteFileSystemLustreConfiguration)
+
+instance
+  Prelude.Hashable
+    DeleteFileSystemLustreConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteFileSystemLustreConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupTags
+        `Prelude.hashWithSalt` skipFinalBackup
+
+instance
+  Prelude.NFData
+    DeleteFileSystemLustreConfiguration
+  where
+  rnf DeleteFileSystemLustreConfiguration' {..} =
+    Prelude.rnf finalBackupTags
+      `Prelude.seq` Prelude.rnf skipFinalBackup
+
+instance
+  Data.ToJSON
+    DeleteFileSystemLustreConfiguration
+  where
+  toJSON DeleteFileSystemLustreConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FinalBackupTags" Data..=)
+              Prelude.<$> finalBackupTags,
+            ("SkipFinalBackup" Data..=)
+              Prelude.<$> skipFinalBackup
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemLustreResponse.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemLustreResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemLustreResponse.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.FSx.Types.DeleteFileSystemLustreResponse
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemLustreResponse where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The response object for the Amazon FSx for Lustre file system being
+-- deleted in the @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemLustreResponse' smart constructor.
+data DeleteFileSystemLustreResponse = DeleteFileSystemLustreResponse'
+  { -- | The ID of the final backup for this file system.
+    finalBackupId :: Prelude.Maybe Prelude.Text,
+    -- | The set of tags applied to the final backup.
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemLustreResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupId', 'deleteFileSystemLustreResponse_finalBackupId' - The ID of the final backup for this file system.
+--
+-- 'finalBackupTags', 'deleteFileSystemLustreResponse_finalBackupTags' - The set of tags applied to the final backup.
+newDeleteFileSystemLustreResponse ::
+  DeleteFileSystemLustreResponse
+newDeleteFileSystemLustreResponse =
+  DeleteFileSystemLustreResponse'
+    { finalBackupId =
+        Prelude.Nothing,
+      finalBackupTags = Prelude.Nothing
+    }
+
+-- | The ID of the final backup for this file system.
+deleteFileSystemLustreResponse_finalBackupId :: Lens.Lens' DeleteFileSystemLustreResponse (Prelude.Maybe Prelude.Text)
+deleteFileSystemLustreResponse_finalBackupId = Lens.lens (\DeleteFileSystemLustreResponse' {finalBackupId} -> finalBackupId) (\s@DeleteFileSystemLustreResponse' {} a -> s {finalBackupId = a} :: DeleteFileSystemLustreResponse)
+
+-- | The set of tags applied to the final backup.
+deleteFileSystemLustreResponse_finalBackupTags :: Lens.Lens' DeleteFileSystemLustreResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteFileSystemLustreResponse_finalBackupTags = Lens.lens (\DeleteFileSystemLustreResponse' {finalBackupTags} -> finalBackupTags) (\s@DeleteFileSystemLustreResponse' {} a -> s {finalBackupTags = a} :: DeleteFileSystemLustreResponse) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DeleteFileSystemLustreResponse where
+  parseJSON =
+    Data.withObject
+      "DeleteFileSystemLustreResponse"
+      ( \x ->
+          DeleteFileSystemLustreResponse'
+            Prelude.<$> (x Data..:? "FinalBackupId")
+            Prelude.<*> (x Data..:? "FinalBackupTags")
+      )
+
+instance
+  Prelude.Hashable
+    DeleteFileSystemLustreResponse
+  where
+  hashWithSalt
+    _salt
+    DeleteFileSystemLustreResponse' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupId
+        `Prelude.hashWithSalt` finalBackupTags
+
+instance
+  Prelude.NFData
+    DeleteFileSystemLustreResponse
+  where
+  rnf DeleteFileSystemLustreResponse' {..} =
+    Prelude.rnf finalBackupId
+      `Prelude.seq` Prelude.rnf finalBackupTags
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSConfiguration.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSConfiguration.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.FSx.Types.DeleteFileSystemOpenZFSConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemOpenZFSConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DeleteFileSystemOpenZFSOption
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for the Amazon FSx for OpenZFS file system used
+-- in the @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemOpenZFSConfiguration' smart constructor.
+data DeleteFileSystemOpenZFSConfiguration = DeleteFileSystemOpenZFSConfiguration'
+  { -- | A list of tags to apply to the file system\'s final backup.
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | To delete a file system if there are child volumes present below the
+    -- root volume, use the string @DELETE_CHILD_VOLUMES_AND_SNAPSHOTS@. If
+    -- your file system has child volumes and you don\'t use this option, the
+    -- delete request will fail.
+    options :: Prelude.Maybe [DeleteFileSystemOpenZFSOption],
+    -- | By default, Amazon FSx for OpenZFS takes a final backup on your behalf
+    -- when the @DeleteFileSystem@ operation is invoked. Doing this helps
+    -- protect you from data loss, and we highly recommend taking the final
+    -- backup. If you want to skip taking a final backup, set this value to
+    -- @true@.
+    skipFinalBackup :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemOpenZFSConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupTags', 'deleteFileSystemOpenZFSConfiguration_finalBackupTags' - A list of tags to apply to the file system\'s final backup.
+--
+-- 'options', 'deleteFileSystemOpenZFSConfiguration_options' - To delete a file system if there are child volumes present below the
+-- root volume, use the string @DELETE_CHILD_VOLUMES_AND_SNAPSHOTS@. If
+-- your file system has child volumes and you don\'t use this option, the
+-- delete request will fail.
+--
+-- 'skipFinalBackup', 'deleteFileSystemOpenZFSConfiguration_skipFinalBackup' - By default, Amazon FSx for OpenZFS takes a final backup on your behalf
+-- when the @DeleteFileSystem@ operation is invoked. Doing this helps
+-- protect you from data loss, and we highly recommend taking the final
+-- backup. If you want to skip taking a final backup, set this value to
+-- @true@.
+newDeleteFileSystemOpenZFSConfiguration ::
+  DeleteFileSystemOpenZFSConfiguration
+newDeleteFileSystemOpenZFSConfiguration =
+  DeleteFileSystemOpenZFSConfiguration'
+    { finalBackupTags =
+        Prelude.Nothing,
+      options = Prelude.Nothing,
+      skipFinalBackup = Prelude.Nothing
+    }
+
+-- | A list of tags to apply to the file system\'s final backup.
+deleteFileSystemOpenZFSConfiguration_finalBackupTags :: Lens.Lens' DeleteFileSystemOpenZFSConfiguration (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteFileSystemOpenZFSConfiguration_finalBackupTags = Lens.lens (\DeleteFileSystemOpenZFSConfiguration' {finalBackupTags} -> finalBackupTags) (\s@DeleteFileSystemOpenZFSConfiguration' {} a -> s {finalBackupTags = a} :: DeleteFileSystemOpenZFSConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | To delete a file system if there are child volumes present below the
+-- root volume, use the string @DELETE_CHILD_VOLUMES_AND_SNAPSHOTS@. If
+-- your file system has child volumes and you don\'t use this option, the
+-- delete request will fail.
+deleteFileSystemOpenZFSConfiguration_options :: Lens.Lens' DeleteFileSystemOpenZFSConfiguration (Prelude.Maybe [DeleteFileSystemOpenZFSOption])
+deleteFileSystemOpenZFSConfiguration_options = Lens.lens (\DeleteFileSystemOpenZFSConfiguration' {options} -> options) (\s@DeleteFileSystemOpenZFSConfiguration' {} a -> s {options = a} :: DeleteFileSystemOpenZFSConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | By default, Amazon FSx for OpenZFS takes a final backup on your behalf
+-- when the @DeleteFileSystem@ operation is invoked. Doing this helps
+-- protect you from data loss, and we highly recommend taking the final
+-- backup. If you want to skip taking a final backup, set this value to
+-- @true@.
+deleteFileSystemOpenZFSConfiguration_skipFinalBackup :: Lens.Lens' DeleteFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Bool)
+deleteFileSystemOpenZFSConfiguration_skipFinalBackup = Lens.lens (\DeleteFileSystemOpenZFSConfiguration' {skipFinalBackup} -> skipFinalBackup) (\s@DeleteFileSystemOpenZFSConfiguration' {} a -> s {skipFinalBackup = a} :: DeleteFileSystemOpenZFSConfiguration)
+
+instance
+  Prelude.Hashable
+    DeleteFileSystemOpenZFSConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteFileSystemOpenZFSConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupTags
+        `Prelude.hashWithSalt` options
+        `Prelude.hashWithSalt` skipFinalBackup
+
+instance
+  Prelude.NFData
+    DeleteFileSystemOpenZFSConfiguration
+  where
+  rnf DeleteFileSystemOpenZFSConfiguration' {..} =
+    Prelude.rnf finalBackupTags
+      `Prelude.seq` Prelude.rnf options
+      `Prelude.seq` Prelude.rnf skipFinalBackup
+
+instance
+  Data.ToJSON
+    DeleteFileSystemOpenZFSConfiguration
+  where
+  toJSON DeleteFileSystemOpenZFSConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FinalBackupTags" Data..=)
+              Prelude.<$> finalBackupTags,
+            ("Options" Data..=) Prelude.<$> options,
+            ("SkipFinalBackup" Data..=)
+              Prelude.<$> skipFinalBackup
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSOption.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSOption.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.FSx.Types.DeleteFileSystemOpenZFSOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemOpenZFSOption
+  ( DeleteFileSystemOpenZFSOption
+      ( ..,
+        DeleteFileSystemOpenZFSOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeleteFileSystemOpenZFSOption = DeleteFileSystemOpenZFSOption'
+  { fromDeleteFileSystemOpenZFSOption ::
+      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 DeleteFileSystemOpenZFSOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS :: DeleteFileSystemOpenZFSOption
+pattern DeleteFileSystemOpenZFSOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS = DeleteFileSystemOpenZFSOption' "DELETE_CHILD_VOLUMES_AND_SNAPSHOTS"
+
+{-# COMPLETE
+  DeleteFileSystemOpenZFSOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS,
+  DeleteFileSystemOpenZFSOption'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSResponse.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemOpenZFSResponse.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.FSx.Types.DeleteFileSystemOpenZFSResponse
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemOpenZFSResponse where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The response object for the Amazon FSx for OpenZFS file system that\'s
+-- being deleted in the @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemOpenZFSResponse' smart constructor.
+data DeleteFileSystemOpenZFSResponse = DeleteFileSystemOpenZFSResponse'
+  { finalBackupId :: Prelude.Maybe Prelude.Text,
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemOpenZFSResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupId', 'deleteFileSystemOpenZFSResponse_finalBackupId' - Undocumented member.
+--
+-- 'finalBackupTags', 'deleteFileSystemOpenZFSResponse_finalBackupTags' - Undocumented member.
+newDeleteFileSystemOpenZFSResponse ::
+  DeleteFileSystemOpenZFSResponse
+newDeleteFileSystemOpenZFSResponse =
+  DeleteFileSystemOpenZFSResponse'
+    { finalBackupId =
+        Prelude.Nothing,
+      finalBackupTags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+deleteFileSystemOpenZFSResponse_finalBackupId :: Lens.Lens' DeleteFileSystemOpenZFSResponse (Prelude.Maybe Prelude.Text)
+deleteFileSystemOpenZFSResponse_finalBackupId = Lens.lens (\DeleteFileSystemOpenZFSResponse' {finalBackupId} -> finalBackupId) (\s@DeleteFileSystemOpenZFSResponse' {} a -> s {finalBackupId = a} :: DeleteFileSystemOpenZFSResponse)
+
+-- | Undocumented member.
+deleteFileSystemOpenZFSResponse_finalBackupTags :: Lens.Lens' DeleteFileSystemOpenZFSResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteFileSystemOpenZFSResponse_finalBackupTags = Lens.lens (\DeleteFileSystemOpenZFSResponse' {finalBackupTags} -> finalBackupTags) (\s@DeleteFileSystemOpenZFSResponse' {} a -> s {finalBackupTags = a} :: DeleteFileSystemOpenZFSResponse) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    DeleteFileSystemOpenZFSResponse
+  where
+  parseJSON =
+    Data.withObject
+      "DeleteFileSystemOpenZFSResponse"
+      ( \x ->
+          DeleteFileSystemOpenZFSResponse'
+            Prelude.<$> (x Data..:? "FinalBackupId")
+            Prelude.<*> (x Data..:? "FinalBackupTags")
+      )
+
+instance
+  Prelude.Hashable
+    DeleteFileSystemOpenZFSResponse
+  where
+  hashWithSalt
+    _salt
+    DeleteFileSystemOpenZFSResponse' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupId
+        `Prelude.hashWithSalt` finalBackupTags
+
+instance
+  Prelude.NFData
+    DeleteFileSystemOpenZFSResponse
+  where
+  rnf DeleteFileSystemOpenZFSResponse' {..} =
+    Prelude.rnf finalBackupId
+      `Prelude.seq` Prelude.rnf finalBackupTags
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemWindowsConfiguration.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemWindowsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemWindowsConfiguration.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.FSx.Types.DeleteFileSystemWindowsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemWindowsConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for the Microsoft Windows file system used in
+-- the @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemWindowsConfiguration' smart constructor.
+data DeleteFileSystemWindowsConfiguration = DeleteFileSystemWindowsConfiguration'
+  { -- | A set of tags for your final backup.
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | By default, Amazon FSx for Windows takes a final backup on your behalf
+    -- when the @DeleteFileSystem@ operation is invoked. Doing this helps
+    -- protect you from data loss, and we highly recommend taking the final
+    -- backup. If you want to skip this backup, use this flag to do so.
+    skipFinalBackup :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemWindowsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupTags', 'deleteFileSystemWindowsConfiguration_finalBackupTags' - A set of tags for your final backup.
+--
+-- 'skipFinalBackup', 'deleteFileSystemWindowsConfiguration_skipFinalBackup' - By default, Amazon FSx for Windows takes a final backup on your behalf
+-- when the @DeleteFileSystem@ operation is invoked. Doing this helps
+-- protect you from data loss, and we highly recommend taking the final
+-- backup. If you want to skip this backup, use this flag to do so.
+newDeleteFileSystemWindowsConfiguration ::
+  DeleteFileSystemWindowsConfiguration
+newDeleteFileSystemWindowsConfiguration =
+  DeleteFileSystemWindowsConfiguration'
+    { finalBackupTags =
+        Prelude.Nothing,
+      skipFinalBackup = Prelude.Nothing
+    }
+
+-- | A set of tags for your final backup.
+deleteFileSystemWindowsConfiguration_finalBackupTags :: Lens.Lens' DeleteFileSystemWindowsConfiguration (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteFileSystemWindowsConfiguration_finalBackupTags = Lens.lens (\DeleteFileSystemWindowsConfiguration' {finalBackupTags} -> finalBackupTags) (\s@DeleteFileSystemWindowsConfiguration' {} a -> s {finalBackupTags = a} :: DeleteFileSystemWindowsConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | By default, Amazon FSx for Windows takes a final backup on your behalf
+-- when the @DeleteFileSystem@ operation is invoked. Doing this helps
+-- protect you from data loss, and we highly recommend taking the final
+-- backup. If you want to skip this backup, use this flag to do so.
+deleteFileSystemWindowsConfiguration_skipFinalBackup :: Lens.Lens' DeleteFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Bool)
+deleteFileSystemWindowsConfiguration_skipFinalBackup = Lens.lens (\DeleteFileSystemWindowsConfiguration' {skipFinalBackup} -> skipFinalBackup) (\s@DeleteFileSystemWindowsConfiguration' {} a -> s {skipFinalBackup = a} :: DeleteFileSystemWindowsConfiguration)
+
+instance
+  Prelude.Hashable
+    DeleteFileSystemWindowsConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteFileSystemWindowsConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupTags
+        `Prelude.hashWithSalt` skipFinalBackup
+
+instance
+  Prelude.NFData
+    DeleteFileSystemWindowsConfiguration
+  where
+  rnf DeleteFileSystemWindowsConfiguration' {..} =
+    Prelude.rnf finalBackupTags
+      `Prelude.seq` Prelude.rnf skipFinalBackup
+
+instance
+  Data.ToJSON
+    DeleteFileSystemWindowsConfiguration
+  where
+  toJSON DeleteFileSystemWindowsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FinalBackupTags" Data..=)
+              Prelude.<$> finalBackupTags,
+            ("SkipFinalBackup" Data..=)
+              Prelude.<$> skipFinalBackup
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DeleteFileSystemWindowsResponse.hs b/gen/Amazonka/FSx/Types/DeleteFileSystemWindowsResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteFileSystemWindowsResponse.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.FSx.Types.DeleteFileSystemWindowsResponse
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteFileSystemWindowsResponse where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The response object for the Microsoft Windows file system used in the
+-- @DeleteFileSystem@ operation.
+--
+-- /See:/ 'newDeleteFileSystemWindowsResponse' smart constructor.
+data DeleteFileSystemWindowsResponse = DeleteFileSystemWindowsResponse'
+  { -- | The ID of the final backup for this file system.
+    finalBackupId :: Prelude.Maybe Prelude.Text,
+    -- | The set of tags applied to the final backup.
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFileSystemWindowsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupId', 'deleteFileSystemWindowsResponse_finalBackupId' - The ID of the final backup for this file system.
+--
+-- 'finalBackupTags', 'deleteFileSystemWindowsResponse_finalBackupTags' - The set of tags applied to the final backup.
+newDeleteFileSystemWindowsResponse ::
+  DeleteFileSystemWindowsResponse
+newDeleteFileSystemWindowsResponse =
+  DeleteFileSystemWindowsResponse'
+    { finalBackupId =
+        Prelude.Nothing,
+      finalBackupTags = Prelude.Nothing
+    }
+
+-- | The ID of the final backup for this file system.
+deleteFileSystemWindowsResponse_finalBackupId :: Lens.Lens' DeleteFileSystemWindowsResponse (Prelude.Maybe Prelude.Text)
+deleteFileSystemWindowsResponse_finalBackupId = Lens.lens (\DeleteFileSystemWindowsResponse' {finalBackupId} -> finalBackupId) (\s@DeleteFileSystemWindowsResponse' {} a -> s {finalBackupId = a} :: DeleteFileSystemWindowsResponse)
+
+-- | The set of tags applied to the final backup.
+deleteFileSystemWindowsResponse_finalBackupTags :: Lens.Lens' DeleteFileSystemWindowsResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteFileSystemWindowsResponse_finalBackupTags = Lens.lens (\DeleteFileSystemWindowsResponse' {finalBackupTags} -> finalBackupTags) (\s@DeleteFileSystemWindowsResponse' {} a -> s {finalBackupTags = a} :: DeleteFileSystemWindowsResponse) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    DeleteFileSystemWindowsResponse
+  where
+  parseJSON =
+    Data.withObject
+      "DeleteFileSystemWindowsResponse"
+      ( \x ->
+          DeleteFileSystemWindowsResponse'
+            Prelude.<$> (x Data..:? "FinalBackupId")
+            Prelude.<*> (x Data..:? "FinalBackupTags")
+      )
+
+instance
+  Prelude.Hashable
+    DeleteFileSystemWindowsResponse
+  where
+  hashWithSalt
+    _salt
+    DeleteFileSystemWindowsResponse' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupId
+        `Prelude.hashWithSalt` finalBackupTags
+
+instance
+  Prelude.NFData
+    DeleteFileSystemWindowsResponse
+  where
+  rnf DeleteFileSystemWindowsResponse' {..} =
+    Prelude.rnf finalBackupId
+      `Prelude.seq` Prelude.rnf finalBackupTags
diff --git a/gen/Amazonka/FSx/Types/DeleteOpenZFSVolumeOption.hs b/gen/Amazonka/FSx/Types/DeleteOpenZFSVolumeOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteOpenZFSVolumeOption.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.FSx.Types.DeleteOpenZFSVolumeOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteOpenZFSVolumeOption
+  ( DeleteOpenZFSVolumeOption
+      ( ..,
+        DeleteOpenZFSVolumeOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeleteOpenZFSVolumeOption = DeleteOpenZFSVolumeOption'
+  { fromDeleteOpenZFSVolumeOption ::
+      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 DeleteOpenZFSVolumeOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS :: DeleteOpenZFSVolumeOption
+pattern DeleteOpenZFSVolumeOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS = DeleteOpenZFSVolumeOption' "DELETE_CHILD_VOLUMES_AND_SNAPSHOTS"
+
+{-# COMPLETE
+  DeleteOpenZFSVolumeOption_DELETE_CHILD_VOLUMES_AND_SNAPSHOTS,
+  DeleteOpenZFSVolumeOption'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DeleteVolumeOntapConfiguration.hs b/gen/Amazonka/FSx/Types/DeleteVolumeOntapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteVolumeOntapConfiguration.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.FSx.Types.DeleteVolumeOntapConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteVolumeOntapConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use to specify skipping a final backup, or to add tags to a final
+-- backup.
+--
+-- /See:/ 'newDeleteVolumeOntapConfiguration' smart constructor.
+data DeleteVolumeOntapConfiguration = DeleteVolumeOntapConfiguration'
+  { finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Set to true if you want to skip taking a final backup of the volume you
+    -- are deleting.
+    skipFinalBackup :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVolumeOntapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupTags', 'deleteVolumeOntapConfiguration_finalBackupTags' - Undocumented member.
+--
+-- 'skipFinalBackup', 'deleteVolumeOntapConfiguration_skipFinalBackup' - Set to true if you want to skip taking a final backup of the volume you
+-- are deleting.
+newDeleteVolumeOntapConfiguration ::
+  DeleteVolumeOntapConfiguration
+newDeleteVolumeOntapConfiguration =
+  DeleteVolumeOntapConfiguration'
+    { finalBackupTags =
+        Prelude.Nothing,
+      skipFinalBackup = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+deleteVolumeOntapConfiguration_finalBackupTags :: Lens.Lens' DeleteVolumeOntapConfiguration (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteVolumeOntapConfiguration_finalBackupTags = Lens.lens (\DeleteVolumeOntapConfiguration' {finalBackupTags} -> finalBackupTags) (\s@DeleteVolumeOntapConfiguration' {} a -> s {finalBackupTags = a} :: DeleteVolumeOntapConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Set to true if you want to skip taking a final backup of the volume you
+-- are deleting.
+deleteVolumeOntapConfiguration_skipFinalBackup :: Lens.Lens' DeleteVolumeOntapConfiguration (Prelude.Maybe Prelude.Bool)
+deleteVolumeOntapConfiguration_skipFinalBackup = Lens.lens (\DeleteVolumeOntapConfiguration' {skipFinalBackup} -> skipFinalBackup) (\s@DeleteVolumeOntapConfiguration' {} a -> s {skipFinalBackup = a} :: DeleteVolumeOntapConfiguration)
+
+instance
+  Prelude.Hashable
+    DeleteVolumeOntapConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteVolumeOntapConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` finalBackupTags
+        `Prelude.hashWithSalt` skipFinalBackup
+
+instance
+  Prelude.NFData
+    DeleteVolumeOntapConfiguration
+  where
+  rnf DeleteVolumeOntapConfiguration' {..} =
+    Prelude.rnf finalBackupTags
+      `Prelude.seq` Prelude.rnf skipFinalBackup
+
+instance Data.ToJSON DeleteVolumeOntapConfiguration where
+  toJSON DeleteVolumeOntapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FinalBackupTags" Data..=)
+              Prelude.<$> finalBackupTags,
+            ("SkipFinalBackup" Data..=)
+              Prelude.<$> skipFinalBackup
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DeleteVolumeOntapResponse.hs b/gen/Amazonka/FSx/Types/DeleteVolumeOntapResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteVolumeOntapResponse.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.FSx.Types.DeleteVolumeOntapResponse
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteVolumeOntapResponse where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The response object for the Amazon FSx for NetApp ONTAP volume being
+-- deleted in the @DeleteVolume@ operation.
+--
+-- /See:/ 'newDeleteVolumeOntapResponse' smart constructor.
+data DeleteVolumeOntapResponse = DeleteVolumeOntapResponse'
+  { finalBackupId :: Prelude.Maybe Prelude.Text,
+    finalBackupTags :: Prelude.Maybe (Prelude.NonEmpty Tag)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVolumeOntapResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'finalBackupId', 'deleteVolumeOntapResponse_finalBackupId' - Undocumented member.
+--
+-- 'finalBackupTags', 'deleteVolumeOntapResponse_finalBackupTags' - Undocumented member.
+newDeleteVolumeOntapResponse ::
+  DeleteVolumeOntapResponse
+newDeleteVolumeOntapResponse =
+  DeleteVolumeOntapResponse'
+    { finalBackupId =
+        Prelude.Nothing,
+      finalBackupTags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+deleteVolumeOntapResponse_finalBackupId :: Lens.Lens' DeleteVolumeOntapResponse (Prelude.Maybe Prelude.Text)
+deleteVolumeOntapResponse_finalBackupId = Lens.lens (\DeleteVolumeOntapResponse' {finalBackupId} -> finalBackupId) (\s@DeleteVolumeOntapResponse' {} a -> s {finalBackupId = a} :: DeleteVolumeOntapResponse)
+
+-- | Undocumented member.
+deleteVolumeOntapResponse_finalBackupTags :: Lens.Lens' DeleteVolumeOntapResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+deleteVolumeOntapResponse_finalBackupTags = Lens.lens (\DeleteVolumeOntapResponse' {finalBackupTags} -> finalBackupTags) (\s@DeleteVolumeOntapResponse' {} a -> s {finalBackupTags = a} :: DeleteVolumeOntapResponse) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DeleteVolumeOntapResponse where
+  parseJSON =
+    Data.withObject
+      "DeleteVolumeOntapResponse"
+      ( \x ->
+          DeleteVolumeOntapResponse'
+            Prelude.<$> (x Data..:? "FinalBackupId")
+            Prelude.<*> (x Data..:? "FinalBackupTags")
+      )
+
+instance Prelude.Hashable DeleteVolumeOntapResponse where
+  hashWithSalt _salt DeleteVolumeOntapResponse' {..} =
+    _salt
+      `Prelude.hashWithSalt` finalBackupId
+      `Prelude.hashWithSalt` finalBackupTags
+
+instance Prelude.NFData DeleteVolumeOntapResponse where
+  rnf DeleteVolumeOntapResponse' {..} =
+    Prelude.rnf finalBackupId
+      `Prelude.seq` Prelude.rnf finalBackupTags
diff --git a/gen/Amazonka/FSx/Types/DeleteVolumeOpenZFSConfiguration.hs b/gen/Amazonka/FSx/Types/DeleteVolumeOpenZFSConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DeleteVolumeOpenZFSConfiguration.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.FSx.Types.DeleteVolumeOpenZFSConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DeleteVolumeOpenZFSConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DeleteOpenZFSVolumeOption
+import qualified Amazonka.Prelude as Prelude
+
+-- | A value that specifies whether to delete all child volumes and
+-- snapshots.
+--
+-- /See:/ 'newDeleteVolumeOpenZFSConfiguration' smart constructor.
+data DeleteVolumeOpenZFSConfiguration = DeleteVolumeOpenZFSConfiguration'
+  { -- | To delete the volume\'s child volumes, snapshots, and clones, use the
+    -- string @DELETE_CHILD_VOLUMES_AND_SNAPSHOTS@.
+    options :: Prelude.Maybe [DeleteOpenZFSVolumeOption]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVolumeOpenZFSConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'options', 'deleteVolumeOpenZFSConfiguration_options' - To delete the volume\'s child volumes, snapshots, and clones, use the
+-- string @DELETE_CHILD_VOLUMES_AND_SNAPSHOTS@.
+newDeleteVolumeOpenZFSConfiguration ::
+  DeleteVolumeOpenZFSConfiguration
+newDeleteVolumeOpenZFSConfiguration =
+  DeleteVolumeOpenZFSConfiguration'
+    { options =
+        Prelude.Nothing
+    }
+
+-- | To delete the volume\'s child volumes, snapshots, and clones, use the
+-- string @DELETE_CHILD_VOLUMES_AND_SNAPSHOTS@.
+deleteVolumeOpenZFSConfiguration_options :: Lens.Lens' DeleteVolumeOpenZFSConfiguration (Prelude.Maybe [DeleteOpenZFSVolumeOption])
+deleteVolumeOpenZFSConfiguration_options = Lens.lens (\DeleteVolumeOpenZFSConfiguration' {options} -> options) (\s@DeleteVolumeOpenZFSConfiguration' {} a -> s {options = a} :: DeleteVolumeOpenZFSConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    DeleteVolumeOpenZFSConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteVolumeOpenZFSConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` options
+
+instance
+  Prelude.NFData
+    DeleteVolumeOpenZFSConfiguration
+  where
+  rnf DeleteVolumeOpenZFSConfiguration' {..} =
+    Prelude.rnf options
+
+instance Data.ToJSON DeleteVolumeOpenZFSConfiguration where
+  toJSON DeleteVolumeOpenZFSConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Options" Data..=) Prelude.<$> options]
+      )
diff --git a/gen/Amazonka/FSx/Types/DiskIopsConfiguration.hs b/gen/Amazonka/FSx/Types/DiskIopsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DiskIopsConfiguration.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.FSx.Types.DiskIopsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DiskIopsConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfigurationMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | The SSD IOPS (input\/output operations per second) configuration for an
+-- Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS file system. The
+-- default is 3 IOPS per GB of storage capacity, but you can provision
+-- additional IOPS per GB of storage. The configuration consists of the
+-- total number of provisioned SSD IOPS and how the amount was provisioned
+-- (by the customer or by the system).
+--
+-- /See:/ 'newDiskIopsConfiguration' smart constructor.
+data DiskIopsConfiguration = DiskIopsConfiguration'
+  { -- | The total number of SSD IOPS provisioned for the file system.
+    iops :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies whether the number of IOPS for the file system is using the
+    -- system default (@AUTOMATIC@) or was provisioned by the customer
+    -- (@USER_PROVISIONED@).
+    mode :: Prelude.Maybe DiskIopsConfigurationMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DiskIopsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iops', 'diskIopsConfiguration_iops' - The total number of SSD IOPS provisioned for the file system.
+--
+-- 'mode', 'diskIopsConfiguration_mode' - Specifies whether the number of IOPS for the file system is using the
+-- system default (@AUTOMATIC@) or was provisioned by the customer
+-- (@USER_PROVISIONED@).
+newDiskIopsConfiguration ::
+  DiskIopsConfiguration
+newDiskIopsConfiguration =
+  DiskIopsConfiguration'
+    { iops = Prelude.Nothing,
+      mode = Prelude.Nothing
+    }
+
+-- | The total number of SSD IOPS provisioned for the file system.
+diskIopsConfiguration_iops :: Lens.Lens' DiskIopsConfiguration (Prelude.Maybe Prelude.Natural)
+diskIopsConfiguration_iops = Lens.lens (\DiskIopsConfiguration' {iops} -> iops) (\s@DiskIopsConfiguration' {} a -> s {iops = a} :: DiskIopsConfiguration)
+
+-- | Specifies whether the number of IOPS for the file system is using the
+-- system default (@AUTOMATIC@) or was provisioned by the customer
+-- (@USER_PROVISIONED@).
+diskIopsConfiguration_mode :: Lens.Lens' DiskIopsConfiguration (Prelude.Maybe DiskIopsConfigurationMode)
+diskIopsConfiguration_mode = Lens.lens (\DiskIopsConfiguration' {mode} -> mode) (\s@DiskIopsConfiguration' {} a -> s {mode = a} :: DiskIopsConfiguration)
+
+instance Data.FromJSON DiskIopsConfiguration where
+  parseJSON =
+    Data.withObject
+      "DiskIopsConfiguration"
+      ( \x ->
+          DiskIopsConfiguration'
+            Prelude.<$> (x Data..:? "Iops")
+            Prelude.<*> (x Data..:? "Mode")
+      )
+
+instance Prelude.Hashable DiskIopsConfiguration where
+  hashWithSalt _salt DiskIopsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` iops
+      `Prelude.hashWithSalt` mode
+
+instance Prelude.NFData DiskIopsConfiguration where
+  rnf DiskIopsConfiguration' {..} =
+    Prelude.rnf iops `Prelude.seq` Prelude.rnf mode
+
+instance Data.ToJSON DiskIopsConfiguration where
+  toJSON DiskIopsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Iops" Data..=) Prelude.<$> iops,
+            ("Mode" Data..=) Prelude.<$> mode
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/DiskIopsConfigurationMode.hs b/gen/Amazonka/FSx/Types/DiskIopsConfigurationMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DiskIopsConfigurationMode.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.FSx.Types.DiskIopsConfigurationMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DiskIopsConfigurationMode
+  ( DiskIopsConfigurationMode
+      ( ..,
+        DiskIopsConfigurationMode_AUTOMATIC,
+        DiskIopsConfigurationMode_USER_PROVISIONED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DiskIopsConfigurationMode = DiskIopsConfigurationMode'
+  { fromDiskIopsConfigurationMode ::
+      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 DiskIopsConfigurationMode_AUTOMATIC :: DiskIopsConfigurationMode
+pattern DiskIopsConfigurationMode_AUTOMATIC = DiskIopsConfigurationMode' "AUTOMATIC"
+
+pattern DiskIopsConfigurationMode_USER_PROVISIONED :: DiskIopsConfigurationMode
+pattern DiskIopsConfigurationMode_USER_PROVISIONED = DiskIopsConfigurationMode' "USER_PROVISIONED"
+
+{-# COMPLETE
+  DiskIopsConfigurationMode_AUTOMATIC,
+  DiskIopsConfigurationMode_USER_PROVISIONED,
+  DiskIopsConfigurationMode'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/DriveCacheType.hs b/gen/Amazonka/FSx/Types/DriveCacheType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/DriveCacheType.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.FSx.Types.DriveCacheType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.DriveCacheType
+  ( DriveCacheType
+      ( ..,
+        DriveCacheType_NONE,
+        DriveCacheType_READ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DriveCacheType = DriveCacheType'
+  { fromDriveCacheType ::
+      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 DriveCacheType_NONE :: DriveCacheType
+pattern DriveCacheType_NONE = DriveCacheType' "NONE"
+
+pattern DriveCacheType_READ :: DriveCacheType
+pattern DriveCacheType_READ = DriveCacheType' "READ"
+
+{-# COMPLETE
+  DriveCacheType_NONE,
+  DriveCacheType_READ,
+  DriveCacheType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/EventType.hs b/gen/Amazonka/FSx/Types/EventType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/EventType.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.FSx.Types.EventType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.EventType
+  ( EventType
+      ( ..,
+        EventType_CHANGED,
+        EventType_DELETED,
+        EventType_NEW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EventType = EventType'
+  { fromEventType ::
+      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 EventType_CHANGED :: EventType
+pattern EventType_CHANGED = EventType' "CHANGED"
+
+pattern EventType_DELETED :: EventType
+pattern EventType_DELETED = EventType' "DELETED"
+
+pattern EventType_NEW :: EventType
+pattern EventType_NEW = EventType' "NEW"
+
+{-# COMPLETE
+  EventType_CHANGED,
+  EventType_DELETED,
+  EventType_NEW,
+  EventType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FileCache.hs b/gen/Amazonka/FSx/Types/FileCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCache.hs
@@ -0,0 +1,317 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileCache
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCache where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FileCacheFailureDetails
+import Amazonka.FSx.Types.FileCacheLifecycle
+import Amazonka.FSx.Types.FileCacheLustreConfiguration
+import Amazonka.FSx.Types.FileCacheType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A description of a specific Amazon File Cache resource, which is a
+-- response object from the @DescribeFileCaches@ operation.
+--
+-- /See:/ 'newFileCache' smart constructor.
+data FileCache = FileCache'
+  { creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Domain Name System (DNS) name for the cache.
+    dNSName :: Prelude.Maybe Prelude.Text,
+    -- | A list of IDs of data repository associations that are associated with
+    -- this cache.
+    dataRepositoryAssociationIds :: Prelude.Maybe [Prelude.Text],
+    -- | A structure providing details of any failures that occurred.
+    failureDetails :: Prelude.Maybe FileCacheFailureDetails,
+    -- | The system-generated, unique ID of the cache.
+    fileCacheId :: Prelude.Maybe Prelude.Text,
+    -- | The type of cache, which must be @LUSTRE@.
+    fileCacheType :: Prelude.Maybe FileCacheType,
+    -- | The Lustre version of the cache, which must be @2.12@.
+    fileCacheTypeVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the ID of the Key Management Service (KMS) key to use for
+    -- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+    -- specified, the Amazon FSx-managed KMS key for your account is used. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+    -- in the /Key Management Service API Reference/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The lifecycle status of the cache. The following are the possible values
+    -- and what they mean:
+    --
+    -- -   @AVAILABLE@ - The cache is in a healthy state, and is reachable and
+    --     available for use.
+    --
+    -- -   @CREATING@ - The new cache is being created.
+    --
+    -- -   @DELETING@ - An existing cache is being deleted.
+    --
+    -- -   @UPDATING@ - The cache is undergoing a customer-initiated update.
+    --
+    -- -   @FAILED@ - An existing cache has experienced an unrecoverable
+    --     failure. When creating a new cache, the cache was unable to be
+    --     created.
+    lifecycle :: Prelude.Maybe FileCacheLifecycle,
+    -- | The configuration for the Amazon File Cache resource.
+    lustreConfiguration :: Prelude.Maybe FileCacheLustreConfiguration,
+    networkInterfaceIds :: Prelude.Maybe [Prelude.Text],
+    ownerId :: Prelude.Maybe Prelude.Text,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The storage capacity of the cache in gibibytes (GiB).
+    storageCapacity :: Prelude.Maybe Prelude.Natural,
+    subnetIds :: Prelude.Maybe [Prelude.Text],
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCache' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'creationTime', 'fileCache_creationTime' - Undocumented member.
+--
+-- 'dNSName', 'fileCache_dNSName' - The Domain Name System (DNS) name for the cache.
+--
+-- 'dataRepositoryAssociationIds', 'fileCache_dataRepositoryAssociationIds' - A list of IDs of data repository associations that are associated with
+-- this cache.
+--
+-- 'failureDetails', 'fileCache_failureDetails' - A structure providing details of any failures that occurred.
+--
+-- 'fileCacheId', 'fileCache_fileCacheId' - The system-generated, unique ID of the cache.
+--
+-- 'fileCacheType', 'fileCache_fileCacheType' - The type of cache, which must be @LUSTRE@.
+--
+-- 'fileCacheTypeVersion', 'fileCache_fileCacheTypeVersion' - The Lustre version of the cache, which must be @2.12@.
+--
+-- 'kmsKeyId', 'fileCache_kmsKeyId' - Specifies the ID of the Key Management Service (KMS) key to use for
+-- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+-- specified, the Amazon FSx-managed KMS key for your account is used. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+-- in the /Key Management Service API Reference/.
+--
+-- 'lifecycle', 'fileCache_lifecycle' - The lifecycle status of the cache. The following are the possible values
+-- and what they mean:
+--
+-- -   @AVAILABLE@ - The cache is in a healthy state, and is reachable and
+--     available for use.
+--
+-- -   @CREATING@ - The new cache is being created.
+--
+-- -   @DELETING@ - An existing cache is being deleted.
+--
+-- -   @UPDATING@ - The cache is undergoing a customer-initiated update.
+--
+-- -   @FAILED@ - An existing cache has experienced an unrecoverable
+--     failure. When creating a new cache, the cache was unable to be
+--     created.
+--
+-- 'lustreConfiguration', 'fileCache_lustreConfiguration' - The configuration for the Amazon File Cache resource.
+--
+-- 'networkInterfaceIds', 'fileCache_networkInterfaceIds' - Undocumented member.
+--
+-- 'ownerId', 'fileCache_ownerId' - Undocumented member.
+--
+-- 'resourceARN', 'fileCache_resourceARN' - Undocumented member.
+--
+-- 'storageCapacity', 'fileCache_storageCapacity' - The storage capacity of the cache in gibibytes (GiB).
+--
+-- 'subnetIds', 'fileCache_subnetIds' - Undocumented member.
+--
+-- 'vpcId', 'fileCache_vpcId' - Undocumented member.
+newFileCache ::
+  FileCache
+newFileCache =
+  FileCache'
+    { creationTime = Prelude.Nothing,
+      dNSName = Prelude.Nothing,
+      dataRepositoryAssociationIds = Prelude.Nothing,
+      failureDetails = Prelude.Nothing,
+      fileCacheId = Prelude.Nothing,
+      fileCacheType = Prelude.Nothing,
+      fileCacheTypeVersion = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      networkInterfaceIds = Prelude.Nothing,
+      ownerId = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      storageCapacity = Prelude.Nothing,
+      subnetIds = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+fileCache_creationTime :: Lens.Lens' FileCache (Prelude.Maybe Prelude.UTCTime)
+fileCache_creationTime = Lens.lens (\FileCache' {creationTime} -> creationTime) (\s@FileCache' {} a -> s {creationTime = a} :: FileCache) Prelude.. Lens.mapping Data._Time
+
+-- | The Domain Name System (DNS) name for the cache.
+fileCache_dNSName :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_dNSName = Lens.lens (\FileCache' {dNSName} -> dNSName) (\s@FileCache' {} a -> s {dNSName = a} :: FileCache)
+
+-- | A list of IDs of data repository associations that are associated with
+-- this cache.
+fileCache_dataRepositoryAssociationIds :: Lens.Lens' FileCache (Prelude.Maybe [Prelude.Text])
+fileCache_dataRepositoryAssociationIds = Lens.lens (\FileCache' {dataRepositoryAssociationIds} -> dataRepositoryAssociationIds) (\s@FileCache' {} a -> s {dataRepositoryAssociationIds = a} :: FileCache) Prelude.. Lens.mapping Lens.coerced
+
+-- | A structure providing details of any failures that occurred.
+fileCache_failureDetails :: Lens.Lens' FileCache (Prelude.Maybe FileCacheFailureDetails)
+fileCache_failureDetails = Lens.lens (\FileCache' {failureDetails} -> failureDetails) (\s@FileCache' {} a -> s {failureDetails = a} :: FileCache)
+
+-- | The system-generated, unique ID of the cache.
+fileCache_fileCacheId :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_fileCacheId = Lens.lens (\FileCache' {fileCacheId} -> fileCacheId) (\s@FileCache' {} a -> s {fileCacheId = a} :: FileCache)
+
+-- | The type of cache, which must be @LUSTRE@.
+fileCache_fileCacheType :: Lens.Lens' FileCache (Prelude.Maybe FileCacheType)
+fileCache_fileCacheType = Lens.lens (\FileCache' {fileCacheType} -> fileCacheType) (\s@FileCache' {} a -> s {fileCacheType = a} :: FileCache)
+
+-- | The Lustre version of the cache, which must be @2.12@.
+fileCache_fileCacheTypeVersion :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_fileCacheTypeVersion = Lens.lens (\FileCache' {fileCacheTypeVersion} -> fileCacheTypeVersion) (\s@FileCache' {} a -> s {fileCacheTypeVersion = a} :: FileCache)
+
+-- | Specifies the ID of the Key Management Service (KMS) key to use for
+-- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+-- specified, the Amazon FSx-managed KMS key for your account is used. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+-- in the /Key Management Service API Reference/.
+fileCache_kmsKeyId :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_kmsKeyId = Lens.lens (\FileCache' {kmsKeyId} -> kmsKeyId) (\s@FileCache' {} a -> s {kmsKeyId = a} :: FileCache)
+
+-- | The lifecycle status of the cache. The following are the possible values
+-- and what they mean:
+--
+-- -   @AVAILABLE@ - The cache is in a healthy state, and is reachable and
+--     available for use.
+--
+-- -   @CREATING@ - The new cache is being created.
+--
+-- -   @DELETING@ - An existing cache is being deleted.
+--
+-- -   @UPDATING@ - The cache is undergoing a customer-initiated update.
+--
+-- -   @FAILED@ - An existing cache has experienced an unrecoverable
+--     failure. When creating a new cache, the cache was unable to be
+--     created.
+fileCache_lifecycle :: Lens.Lens' FileCache (Prelude.Maybe FileCacheLifecycle)
+fileCache_lifecycle = Lens.lens (\FileCache' {lifecycle} -> lifecycle) (\s@FileCache' {} a -> s {lifecycle = a} :: FileCache)
+
+-- | The configuration for the Amazon File Cache resource.
+fileCache_lustreConfiguration :: Lens.Lens' FileCache (Prelude.Maybe FileCacheLustreConfiguration)
+fileCache_lustreConfiguration = Lens.lens (\FileCache' {lustreConfiguration} -> lustreConfiguration) (\s@FileCache' {} a -> s {lustreConfiguration = a} :: FileCache)
+
+-- | Undocumented member.
+fileCache_networkInterfaceIds :: Lens.Lens' FileCache (Prelude.Maybe [Prelude.Text])
+fileCache_networkInterfaceIds = Lens.lens (\FileCache' {networkInterfaceIds} -> networkInterfaceIds) (\s@FileCache' {} a -> s {networkInterfaceIds = a} :: FileCache) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+fileCache_ownerId :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_ownerId = Lens.lens (\FileCache' {ownerId} -> ownerId) (\s@FileCache' {} a -> s {ownerId = a} :: FileCache)
+
+-- | Undocumented member.
+fileCache_resourceARN :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_resourceARN = Lens.lens (\FileCache' {resourceARN} -> resourceARN) (\s@FileCache' {} a -> s {resourceARN = a} :: FileCache)
+
+-- | The storage capacity of the cache in gibibytes (GiB).
+fileCache_storageCapacity :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Natural)
+fileCache_storageCapacity = Lens.lens (\FileCache' {storageCapacity} -> storageCapacity) (\s@FileCache' {} a -> s {storageCapacity = a} :: FileCache)
+
+-- | Undocumented member.
+fileCache_subnetIds :: Lens.Lens' FileCache (Prelude.Maybe [Prelude.Text])
+fileCache_subnetIds = Lens.lens (\FileCache' {subnetIds} -> subnetIds) (\s@FileCache' {} a -> s {subnetIds = a} :: FileCache) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+fileCache_vpcId :: Lens.Lens' FileCache (Prelude.Maybe Prelude.Text)
+fileCache_vpcId = Lens.lens (\FileCache' {vpcId} -> vpcId) (\s@FileCache' {} a -> s {vpcId = a} :: FileCache)
+
+instance Data.FromJSON FileCache where
+  parseJSON =
+    Data.withObject
+      "FileCache"
+      ( \x ->
+          FileCache'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DNSName")
+            Prelude.<*> ( x
+                            Data..:? "DataRepositoryAssociationIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "FileCacheId")
+            Prelude.<*> (x Data..:? "FileCacheType")
+            Prelude.<*> (x Data..:? "FileCacheTypeVersion")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "LustreConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "NetworkInterfaceIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "OwnerId")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "StorageCapacity")
+            Prelude.<*> (x Data..:? "SubnetIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "VpcId")
+      )
+
+instance Prelude.Hashable FileCache where
+  hashWithSalt _salt FileCache' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` dNSName
+      `Prelude.hashWithSalt` dataRepositoryAssociationIds
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` fileCacheId
+      `Prelude.hashWithSalt` fileCacheType
+      `Prelude.hashWithSalt` fileCacheTypeVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` networkInterfaceIds
+      `Prelude.hashWithSalt` ownerId
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` subnetIds
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData FileCache where
+  rnf FileCache' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dNSName
+      `Prelude.seq` Prelude.rnf dataRepositoryAssociationIds
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf fileCacheId
+      `Prelude.seq` Prelude.rnf fileCacheType
+      `Prelude.seq` Prelude.rnf fileCacheTypeVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf networkInterfaceIds
+      `Prelude.seq` Prelude.rnf ownerId
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf subnetIds
+      `Prelude.seq` Prelude.rnf vpcId
diff --git a/gen/Amazonka/FSx/Types/FileCacheCreating.hs b/gen/Amazonka/FSx/Types/FileCacheCreating.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheCreating.hs
@@ -0,0 +1,345 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileCacheCreating
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheCreating where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FileCacheFailureDetails
+import Amazonka.FSx.Types.FileCacheLifecycle
+import Amazonka.FSx.Types.FileCacheLustreConfiguration
+import Amazonka.FSx.Types.FileCacheType
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The response object for the Amazon File Cache resource being created in
+-- the @CreateFileCache@ operation.
+--
+-- /See:/ 'newFileCacheCreating' smart constructor.
+data FileCacheCreating = FileCacheCreating'
+  { -- | A boolean flag indicating whether tags for the cache should be copied to
+    -- data repository associations.
+    copyTagsToDataRepositoryAssociations :: Prelude.Maybe Prelude.Bool,
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Domain Name System (DNS) name for the cache.
+    dNSName :: Prelude.Maybe Prelude.Text,
+    -- | A list of IDs of data repository associations that are associated with
+    -- this cache.
+    dataRepositoryAssociationIds :: Prelude.Maybe [Prelude.Text],
+    -- | A structure providing details of any failures that occurred.
+    failureDetails :: Prelude.Maybe FileCacheFailureDetails,
+    -- | The system-generated, unique ID of the cache.
+    fileCacheId :: Prelude.Maybe Prelude.Text,
+    -- | The type of cache, which must be @LUSTRE@.
+    fileCacheType :: Prelude.Maybe FileCacheType,
+    -- | The Lustre version of the cache, which must be @2.12@.
+    fileCacheTypeVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the ID of the Key Management Service (KMS) key to use for
+    -- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+    -- specified, the Amazon FSx-managed KMS key for your account is used. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+    -- in the /Key Management Service API Reference/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The lifecycle status of the cache. The following are the possible values
+    -- and what they mean:
+    --
+    -- -   @AVAILABLE@ - The cache is in a healthy state, and is reachable and
+    --     available for use.
+    --
+    -- -   @CREATING@ - The new cache is being created.
+    --
+    -- -   @DELETING@ - An existing cache is being deleted.
+    --
+    -- -   @UPDATING@ - The cache is undergoing a customer-initiated update.
+    --
+    -- -   @FAILED@ - An existing cache has experienced an unrecoverable
+    --     failure. When creating a new cache, the cache was unable to be
+    --     created.
+    lifecycle :: Prelude.Maybe FileCacheLifecycle,
+    -- | The configuration for the Amazon File Cache resource.
+    lustreConfiguration :: Prelude.Maybe FileCacheLustreConfiguration,
+    networkInterfaceIds :: Prelude.Maybe [Prelude.Text],
+    ownerId :: Prelude.Maybe Prelude.Text,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The storage capacity of the cache in gibibytes (GiB).
+    storageCapacity :: Prelude.Maybe Prelude.Natural,
+    subnetIds :: Prelude.Maybe [Prelude.Text],
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCacheCreating' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToDataRepositoryAssociations', 'fileCacheCreating_copyTagsToDataRepositoryAssociations' - A boolean flag indicating whether tags for the cache should be copied to
+-- data repository associations.
+--
+-- 'creationTime', 'fileCacheCreating_creationTime' - Undocumented member.
+--
+-- 'dNSName', 'fileCacheCreating_dNSName' - The Domain Name System (DNS) name for the cache.
+--
+-- 'dataRepositoryAssociationIds', 'fileCacheCreating_dataRepositoryAssociationIds' - A list of IDs of data repository associations that are associated with
+-- this cache.
+--
+-- 'failureDetails', 'fileCacheCreating_failureDetails' - A structure providing details of any failures that occurred.
+--
+-- 'fileCacheId', 'fileCacheCreating_fileCacheId' - The system-generated, unique ID of the cache.
+--
+-- 'fileCacheType', 'fileCacheCreating_fileCacheType' - The type of cache, which must be @LUSTRE@.
+--
+-- 'fileCacheTypeVersion', 'fileCacheCreating_fileCacheTypeVersion' - The Lustre version of the cache, which must be @2.12@.
+--
+-- 'kmsKeyId', 'fileCacheCreating_kmsKeyId' - Specifies the ID of the Key Management Service (KMS) key to use for
+-- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+-- specified, the Amazon FSx-managed KMS key for your account is used. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+-- in the /Key Management Service API Reference/.
+--
+-- 'lifecycle', 'fileCacheCreating_lifecycle' - The lifecycle status of the cache. The following are the possible values
+-- and what they mean:
+--
+-- -   @AVAILABLE@ - The cache is in a healthy state, and is reachable and
+--     available for use.
+--
+-- -   @CREATING@ - The new cache is being created.
+--
+-- -   @DELETING@ - An existing cache is being deleted.
+--
+-- -   @UPDATING@ - The cache is undergoing a customer-initiated update.
+--
+-- -   @FAILED@ - An existing cache has experienced an unrecoverable
+--     failure. When creating a new cache, the cache was unable to be
+--     created.
+--
+-- 'lustreConfiguration', 'fileCacheCreating_lustreConfiguration' - The configuration for the Amazon File Cache resource.
+--
+-- 'networkInterfaceIds', 'fileCacheCreating_networkInterfaceIds' - Undocumented member.
+--
+-- 'ownerId', 'fileCacheCreating_ownerId' - Undocumented member.
+--
+-- 'resourceARN', 'fileCacheCreating_resourceARN' - Undocumented member.
+--
+-- 'storageCapacity', 'fileCacheCreating_storageCapacity' - The storage capacity of the cache in gibibytes (GiB).
+--
+-- 'subnetIds', 'fileCacheCreating_subnetIds' - Undocumented member.
+--
+-- 'tags', 'fileCacheCreating_tags' - Undocumented member.
+--
+-- 'vpcId', 'fileCacheCreating_vpcId' - Undocumented member.
+newFileCacheCreating ::
+  FileCacheCreating
+newFileCacheCreating =
+  FileCacheCreating'
+    { copyTagsToDataRepositoryAssociations =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      dNSName = Prelude.Nothing,
+      dataRepositoryAssociationIds = Prelude.Nothing,
+      failureDetails = Prelude.Nothing,
+      fileCacheId = Prelude.Nothing,
+      fileCacheType = Prelude.Nothing,
+      fileCacheTypeVersion = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      networkInterfaceIds = Prelude.Nothing,
+      ownerId = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      storageCapacity = Prelude.Nothing,
+      subnetIds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | A boolean flag indicating whether tags for the cache should be copied to
+-- data repository associations.
+fileCacheCreating_copyTagsToDataRepositoryAssociations :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Bool)
+fileCacheCreating_copyTagsToDataRepositoryAssociations = Lens.lens (\FileCacheCreating' {copyTagsToDataRepositoryAssociations} -> copyTagsToDataRepositoryAssociations) (\s@FileCacheCreating' {} a -> s {copyTagsToDataRepositoryAssociations = a} :: FileCacheCreating)
+
+-- | Undocumented member.
+fileCacheCreating_creationTime :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.UTCTime)
+fileCacheCreating_creationTime = Lens.lens (\FileCacheCreating' {creationTime} -> creationTime) (\s@FileCacheCreating' {} a -> s {creationTime = a} :: FileCacheCreating) Prelude.. Lens.mapping Data._Time
+
+-- | The Domain Name System (DNS) name for the cache.
+fileCacheCreating_dNSName :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_dNSName = Lens.lens (\FileCacheCreating' {dNSName} -> dNSName) (\s@FileCacheCreating' {} a -> s {dNSName = a} :: FileCacheCreating)
+
+-- | A list of IDs of data repository associations that are associated with
+-- this cache.
+fileCacheCreating_dataRepositoryAssociationIds :: Lens.Lens' FileCacheCreating (Prelude.Maybe [Prelude.Text])
+fileCacheCreating_dataRepositoryAssociationIds = Lens.lens (\FileCacheCreating' {dataRepositoryAssociationIds} -> dataRepositoryAssociationIds) (\s@FileCacheCreating' {} a -> s {dataRepositoryAssociationIds = a} :: FileCacheCreating) Prelude.. Lens.mapping Lens.coerced
+
+-- | A structure providing details of any failures that occurred.
+fileCacheCreating_failureDetails :: Lens.Lens' FileCacheCreating (Prelude.Maybe FileCacheFailureDetails)
+fileCacheCreating_failureDetails = Lens.lens (\FileCacheCreating' {failureDetails} -> failureDetails) (\s@FileCacheCreating' {} a -> s {failureDetails = a} :: FileCacheCreating)
+
+-- | The system-generated, unique ID of the cache.
+fileCacheCreating_fileCacheId :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_fileCacheId = Lens.lens (\FileCacheCreating' {fileCacheId} -> fileCacheId) (\s@FileCacheCreating' {} a -> s {fileCacheId = a} :: FileCacheCreating)
+
+-- | The type of cache, which must be @LUSTRE@.
+fileCacheCreating_fileCacheType :: Lens.Lens' FileCacheCreating (Prelude.Maybe FileCacheType)
+fileCacheCreating_fileCacheType = Lens.lens (\FileCacheCreating' {fileCacheType} -> fileCacheType) (\s@FileCacheCreating' {} a -> s {fileCacheType = a} :: FileCacheCreating)
+
+-- | The Lustre version of the cache, which must be @2.12@.
+fileCacheCreating_fileCacheTypeVersion :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_fileCacheTypeVersion = Lens.lens (\FileCacheCreating' {fileCacheTypeVersion} -> fileCacheTypeVersion) (\s@FileCacheCreating' {} a -> s {fileCacheTypeVersion = a} :: FileCacheCreating)
+
+-- | Specifies the ID of the Key Management Service (KMS) key to use for
+-- encrypting data on an Amazon File Cache. If a @KmsKeyId@ isn\'t
+-- specified, the Amazon FSx-managed KMS key for your account is used. For
+-- more information, see
+-- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html Encrypt>
+-- in the /Key Management Service API Reference/.
+fileCacheCreating_kmsKeyId :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_kmsKeyId = Lens.lens (\FileCacheCreating' {kmsKeyId} -> kmsKeyId) (\s@FileCacheCreating' {} a -> s {kmsKeyId = a} :: FileCacheCreating)
+
+-- | The lifecycle status of the cache. The following are the possible values
+-- and what they mean:
+--
+-- -   @AVAILABLE@ - The cache is in a healthy state, and is reachable and
+--     available for use.
+--
+-- -   @CREATING@ - The new cache is being created.
+--
+-- -   @DELETING@ - An existing cache is being deleted.
+--
+-- -   @UPDATING@ - The cache is undergoing a customer-initiated update.
+--
+-- -   @FAILED@ - An existing cache has experienced an unrecoverable
+--     failure. When creating a new cache, the cache was unable to be
+--     created.
+fileCacheCreating_lifecycle :: Lens.Lens' FileCacheCreating (Prelude.Maybe FileCacheLifecycle)
+fileCacheCreating_lifecycle = Lens.lens (\FileCacheCreating' {lifecycle} -> lifecycle) (\s@FileCacheCreating' {} a -> s {lifecycle = a} :: FileCacheCreating)
+
+-- | The configuration for the Amazon File Cache resource.
+fileCacheCreating_lustreConfiguration :: Lens.Lens' FileCacheCreating (Prelude.Maybe FileCacheLustreConfiguration)
+fileCacheCreating_lustreConfiguration = Lens.lens (\FileCacheCreating' {lustreConfiguration} -> lustreConfiguration) (\s@FileCacheCreating' {} a -> s {lustreConfiguration = a} :: FileCacheCreating)
+
+-- | Undocumented member.
+fileCacheCreating_networkInterfaceIds :: Lens.Lens' FileCacheCreating (Prelude.Maybe [Prelude.Text])
+fileCacheCreating_networkInterfaceIds = Lens.lens (\FileCacheCreating' {networkInterfaceIds} -> networkInterfaceIds) (\s@FileCacheCreating' {} a -> s {networkInterfaceIds = a} :: FileCacheCreating) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+fileCacheCreating_ownerId :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_ownerId = Lens.lens (\FileCacheCreating' {ownerId} -> ownerId) (\s@FileCacheCreating' {} a -> s {ownerId = a} :: FileCacheCreating)
+
+-- | Undocumented member.
+fileCacheCreating_resourceARN :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_resourceARN = Lens.lens (\FileCacheCreating' {resourceARN} -> resourceARN) (\s@FileCacheCreating' {} a -> s {resourceARN = a} :: FileCacheCreating)
+
+-- | The storage capacity of the cache in gibibytes (GiB).
+fileCacheCreating_storageCapacity :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Natural)
+fileCacheCreating_storageCapacity = Lens.lens (\FileCacheCreating' {storageCapacity} -> storageCapacity) (\s@FileCacheCreating' {} a -> s {storageCapacity = a} :: FileCacheCreating)
+
+-- | Undocumented member.
+fileCacheCreating_subnetIds :: Lens.Lens' FileCacheCreating (Prelude.Maybe [Prelude.Text])
+fileCacheCreating_subnetIds = Lens.lens (\FileCacheCreating' {subnetIds} -> subnetIds) (\s@FileCacheCreating' {} a -> s {subnetIds = a} :: FileCacheCreating) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+fileCacheCreating_tags :: Lens.Lens' FileCacheCreating (Prelude.Maybe (Prelude.NonEmpty Tag))
+fileCacheCreating_tags = Lens.lens (\FileCacheCreating' {tags} -> tags) (\s@FileCacheCreating' {} a -> s {tags = a} :: FileCacheCreating) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+fileCacheCreating_vpcId :: Lens.Lens' FileCacheCreating (Prelude.Maybe Prelude.Text)
+fileCacheCreating_vpcId = Lens.lens (\FileCacheCreating' {vpcId} -> vpcId) (\s@FileCacheCreating' {} a -> s {vpcId = a} :: FileCacheCreating)
+
+instance Data.FromJSON FileCacheCreating where
+  parseJSON =
+    Data.withObject
+      "FileCacheCreating"
+      ( \x ->
+          FileCacheCreating'
+            Prelude.<$> (x Data..:? "CopyTagsToDataRepositoryAssociations")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DNSName")
+            Prelude.<*> ( x
+                            Data..:? "DataRepositoryAssociationIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "FileCacheId")
+            Prelude.<*> (x Data..:? "FileCacheType")
+            Prelude.<*> (x Data..:? "FileCacheTypeVersion")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "LustreConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "NetworkInterfaceIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "OwnerId")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "StorageCapacity")
+            Prelude.<*> (x Data..:? "SubnetIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..:? "VpcId")
+      )
+
+instance Prelude.Hashable FileCacheCreating where
+  hashWithSalt _salt FileCacheCreating' {..} =
+    _salt
+      `Prelude.hashWithSalt` copyTagsToDataRepositoryAssociations
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` dNSName
+      `Prelude.hashWithSalt` dataRepositoryAssociationIds
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` fileCacheId
+      `Prelude.hashWithSalt` fileCacheType
+      `Prelude.hashWithSalt` fileCacheTypeVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` networkInterfaceIds
+      `Prelude.hashWithSalt` ownerId
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` subnetIds
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData FileCacheCreating where
+  rnf FileCacheCreating' {..} =
+    Prelude.rnf copyTagsToDataRepositoryAssociations
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dNSName
+      `Prelude.seq` Prelude.rnf dataRepositoryAssociationIds
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf fileCacheId
+      `Prelude.seq` Prelude.rnf fileCacheType
+      `Prelude.seq` Prelude.rnf fileCacheTypeVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf networkInterfaceIds
+      `Prelude.seq` Prelude.rnf ownerId
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf subnetIds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcId
diff --git a/gen/Amazonka/FSx/Types/FileCacheDataRepositoryAssociation.hs b/gen/Amazonka/FSx/Types/FileCacheDataRepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheDataRepositoryAssociation.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileCacheDataRepositoryAssociation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheDataRepositoryAssociation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FileCacheNFSConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for a data repository association (DRA) to be created
+-- during the Amazon File Cache resource creation. The DRA links the cache
+-- to either an Amazon S3 bucket or prefix, or a Network File System (NFS)
+-- data repository that supports the NFSv3 protocol.
+--
+-- The DRA does not support automatic import or automatic export.
+--
+-- /See:/ 'newFileCacheDataRepositoryAssociation' smart constructor.
+data FileCacheDataRepositoryAssociation = FileCacheDataRepositoryAssociation'
+  { -- | A list of NFS Exports that will be linked with this data repository
+    -- association. The Export paths are in the format @\/exportpath1@. To use
+    -- this parameter, you must configure @DataRepositoryPath@ as the domain
+    -- name of the NFS file system. The NFS file system domain name in effect
+    -- is the root of the subdirectories. Note that
+    -- @DataRepositorySubdirectories@ is not supported for S3 data
+    -- repositories.
+    dataRepositorySubdirectories :: Prelude.Maybe [Prelude.Text],
+    -- | The configuration for a data repository association that links an Amazon
+    -- File Cache resource to an NFS data repository.
+    nfs :: Prelude.Maybe FileCacheNFSConfiguration,
+    -- | A path on the cache that points to a high-level directory (such as
+    -- @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that will be
+    -- mapped 1-1 with @DataRepositoryPath@. The leading forward slash in the
+    -- name is required. Two data repository associations cannot have
+    -- overlapping cache paths. For example, if a data repository is associated
+    -- with cache path @\/ns1\/@, then you cannot link another data repository
+    -- with cache path @\/ns1\/ns2@.
+    --
+    -- This path specifies where in your cache files will be exported from.
+    -- This cache directory can be linked to only one data repository, and no
+    -- data repository other can be linked to the directory.
+    --
+    -- The cache path can only be set to root (\/) on an NFS DRA when
+    -- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
+    -- the cache path, you can create only one DRA on the cache.
+    --
+    -- The cache path cannot be set to root (\/) for an S3 DRA.
+    fileCachePath :: Prelude.Text,
+    -- | The path to the S3 or NFS data repository that links to the cache. You
+    -- must provide one of the following paths:
+    --
+    -- -   The path can be an NFS data repository that links to the cache. The
+    --     path can be in one of two formats:
+    --
+    --     -   If you are not using the @DataRepositorySubdirectories@
+    --         parameter, the path is to an NFS Export directory (or one of its
+    --         subdirectories) in the format
+    --         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
+    --         single NFS Export to a single data repository association.
+    --
+    --     -   If you are using the @DataRepositorySubdirectories@ parameter,
+    --         the path is the domain name of the NFS file system in the format
+    --         @nfs:\/\/filer-domain-name@, which indicates the root of the
+    --         subdirectories specified with the @DataRepositorySubdirectories@
+    --         parameter.
+    --
+    -- -   The path can be an S3 bucket or prefix in the format
+    --     @s3:\/\/myBucket\/myPrefix\/@.
+    dataRepositoryPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCacheDataRepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataRepositorySubdirectories', 'fileCacheDataRepositoryAssociation_dataRepositorySubdirectories' - A list of NFS Exports that will be linked with this data repository
+-- association. The Export paths are in the format @\/exportpath1@. To use
+-- this parameter, you must configure @DataRepositoryPath@ as the domain
+-- name of the NFS file system. The NFS file system domain name in effect
+-- is the root of the subdirectories. Note that
+-- @DataRepositorySubdirectories@ is not supported for S3 data
+-- repositories.
+--
+-- 'nfs', 'fileCacheDataRepositoryAssociation_nfs' - The configuration for a data repository association that links an Amazon
+-- File Cache resource to an NFS data repository.
+--
+-- 'fileCachePath', 'fileCacheDataRepositoryAssociation_fileCachePath' - A path on the cache that points to a high-level directory (such as
+-- @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that will be
+-- mapped 1-1 with @DataRepositoryPath@. The leading forward slash in the
+-- name is required. Two data repository associations cannot have
+-- overlapping cache paths. For example, if a data repository is associated
+-- with cache path @\/ns1\/@, then you cannot link another data repository
+-- with cache path @\/ns1\/ns2@.
+--
+-- This path specifies where in your cache files will be exported from.
+-- This cache directory can be linked to only one data repository, and no
+-- data repository other can be linked to the directory.
+--
+-- The cache path can only be set to root (\/) on an NFS DRA when
+-- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
+-- the cache path, you can create only one DRA on the cache.
+--
+-- The cache path cannot be set to root (\/) for an S3 DRA.
+--
+-- 'dataRepositoryPath', 'fileCacheDataRepositoryAssociation_dataRepositoryPath' - The path to the S3 or NFS data repository that links to the cache. You
+-- must provide one of the following paths:
+--
+-- -   The path can be an NFS data repository that links to the cache. The
+--     path can be in one of two formats:
+--
+--     -   If you are not using the @DataRepositorySubdirectories@
+--         parameter, the path is to an NFS Export directory (or one of its
+--         subdirectories) in the format
+--         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
+--         single NFS Export to a single data repository association.
+--
+--     -   If you are using the @DataRepositorySubdirectories@ parameter,
+--         the path is the domain name of the NFS file system in the format
+--         @nfs:\/\/filer-domain-name@, which indicates the root of the
+--         subdirectories specified with the @DataRepositorySubdirectories@
+--         parameter.
+--
+-- -   The path can be an S3 bucket or prefix in the format
+--     @s3:\/\/myBucket\/myPrefix\/@.
+newFileCacheDataRepositoryAssociation ::
+  -- | 'fileCachePath'
+  Prelude.Text ->
+  -- | 'dataRepositoryPath'
+  Prelude.Text ->
+  FileCacheDataRepositoryAssociation
+newFileCacheDataRepositoryAssociation
+  pFileCachePath_
+  pDataRepositoryPath_ =
+    FileCacheDataRepositoryAssociation'
+      { dataRepositorySubdirectories =
+          Prelude.Nothing,
+        nfs = Prelude.Nothing,
+        fileCachePath = pFileCachePath_,
+        dataRepositoryPath =
+          pDataRepositoryPath_
+      }
+
+-- | A list of NFS Exports that will be linked with this data repository
+-- association. The Export paths are in the format @\/exportpath1@. To use
+-- this parameter, you must configure @DataRepositoryPath@ as the domain
+-- name of the NFS file system. The NFS file system domain name in effect
+-- is the root of the subdirectories. Note that
+-- @DataRepositorySubdirectories@ is not supported for S3 data
+-- repositories.
+fileCacheDataRepositoryAssociation_dataRepositorySubdirectories :: Lens.Lens' FileCacheDataRepositoryAssociation (Prelude.Maybe [Prelude.Text])
+fileCacheDataRepositoryAssociation_dataRepositorySubdirectories = Lens.lens (\FileCacheDataRepositoryAssociation' {dataRepositorySubdirectories} -> dataRepositorySubdirectories) (\s@FileCacheDataRepositoryAssociation' {} a -> s {dataRepositorySubdirectories = a} :: FileCacheDataRepositoryAssociation) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration for a data repository association that links an Amazon
+-- File Cache resource to an NFS data repository.
+fileCacheDataRepositoryAssociation_nfs :: Lens.Lens' FileCacheDataRepositoryAssociation (Prelude.Maybe FileCacheNFSConfiguration)
+fileCacheDataRepositoryAssociation_nfs = Lens.lens (\FileCacheDataRepositoryAssociation' {nfs} -> nfs) (\s@FileCacheDataRepositoryAssociation' {} a -> s {nfs = a} :: FileCacheDataRepositoryAssociation)
+
+-- | A path on the cache that points to a high-level directory (such as
+-- @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that will be
+-- mapped 1-1 with @DataRepositoryPath@. The leading forward slash in the
+-- name is required. Two data repository associations cannot have
+-- overlapping cache paths. For example, if a data repository is associated
+-- with cache path @\/ns1\/@, then you cannot link another data repository
+-- with cache path @\/ns1\/ns2@.
+--
+-- This path specifies where in your cache files will be exported from.
+-- This cache directory can be linked to only one data repository, and no
+-- data repository other can be linked to the directory.
+--
+-- The cache path can only be set to root (\/) on an NFS DRA when
+-- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
+-- the cache path, you can create only one DRA on the cache.
+--
+-- The cache path cannot be set to root (\/) for an S3 DRA.
+fileCacheDataRepositoryAssociation_fileCachePath :: Lens.Lens' FileCacheDataRepositoryAssociation Prelude.Text
+fileCacheDataRepositoryAssociation_fileCachePath = Lens.lens (\FileCacheDataRepositoryAssociation' {fileCachePath} -> fileCachePath) (\s@FileCacheDataRepositoryAssociation' {} a -> s {fileCachePath = a} :: FileCacheDataRepositoryAssociation)
+
+-- | The path to the S3 or NFS data repository that links to the cache. You
+-- must provide one of the following paths:
+--
+-- -   The path can be an NFS data repository that links to the cache. The
+--     path can be in one of two formats:
+--
+--     -   If you are not using the @DataRepositorySubdirectories@
+--         parameter, the path is to an NFS Export directory (or one of its
+--         subdirectories) in the format
+--         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
+--         single NFS Export to a single data repository association.
+--
+--     -   If you are using the @DataRepositorySubdirectories@ parameter,
+--         the path is the domain name of the NFS file system in the format
+--         @nfs:\/\/filer-domain-name@, which indicates the root of the
+--         subdirectories specified with the @DataRepositorySubdirectories@
+--         parameter.
+--
+-- -   The path can be an S3 bucket or prefix in the format
+--     @s3:\/\/myBucket\/myPrefix\/@.
+fileCacheDataRepositoryAssociation_dataRepositoryPath :: Lens.Lens' FileCacheDataRepositoryAssociation Prelude.Text
+fileCacheDataRepositoryAssociation_dataRepositoryPath = Lens.lens (\FileCacheDataRepositoryAssociation' {dataRepositoryPath} -> dataRepositoryPath) (\s@FileCacheDataRepositoryAssociation' {} a -> s {dataRepositoryPath = a} :: FileCacheDataRepositoryAssociation)
+
+instance
+  Prelude.Hashable
+    FileCacheDataRepositoryAssociation
+  where
+  hashWithSalt
+    _salt
+    FileCacheDataRepositoryAssociation' {..} =
+      _salt
+        `Prelude.hashWithSalt` dataRepositorySubdirectories
+        `Prelude.hashWithSalt` nfs
+        `Prelude.hashWithSalt` fileCachePath
+        `Prelude.hashWithSalt` dataRepositoryPath
+
+instance
+  Prelude.NFData
+    FileCacheDataRepositoryAssociation
+  where
+  rnf FileCacheDataRepositoryAssociation' {..} =
+    Prelude.rnf dataRepositorySubdirectories
+      `Prelude.seq` Prelude.rnf nfs
+      `Prelude.seq` Prelude.rnf fileCachePath
+      `Prelude.seq` Prelude.rnf dataRepositoryPath
+
+instance
+  Data.ToJSON
+    FileCacheDataRepositoryAssociation
+  where
+  toJSON FileCacheDataRepositoryAssociation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataRepositorySubdirectories" Data..=)
+              Prelude.<$> dataRepositorySubdirectories,
+            ("NFS" Data..=) Prelude.<$> nfs,
+            Prelude.Just ("FileCachePath" Data..= fileCachePath),
+            Prelude.Just
+              ("DataRepositoryPath" Data..= dataRepositoryPath)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/FileCacheFailureDetails.hs b/gen/Amazonka/FSx/Types/FileCacheFailureDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheFailureDetails.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileCacheFailureDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheFailureDetails where
+
+import qualified 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 providing details of any failures that occurred.
+--
+-- /See:/ 'newFileCacheFailureDetails' smart constructor.
+data FileCacheFailureDetails = FileCacheFailureDetails'
+  { -- | A message describing any failures that occurred.
+    message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCacheFailureDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'fileCacheFailureDetails_message' - A message describing any failures that occurred.
+newFileCacheFailureDetails ::
+  FileCacheFailureDetails
+newFileCacheFailureDetails =
+  FileCacheFailureDetails' {message = Prelude.Nothing}
+
+-- | A message describing any failures that occurred.
+fileCacheFailureDetails_message :: Lens.Lens' FileCacheFailureDetails (Prelude.Maybe Prelude.Text)
+fileCacheFailureDetails_message = Lens.lens (\FileCacheFailureDetails' {message} -> message) (\s@FileCacheFailureDetails' {} a -> s {message = a} :: FileCacheFailureDetails)
+
+instance Data.FromJSON FileCacheFailureDetails where
+  parseJSON =
+    Data.withObject
+      "FileCacheFailureDetails"
+      ( \x ->
+          FileCacheFailureDetails'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance Prelude.Hashable FileCacheFailureDetails where
+  hashWithSalt _salt FileCacheFailureDetails' {..} =
+    _salt `Prelude.hashWithSalt` message
+
+instance Prelude.NFData FileCacheFailureDetails where
+  rnf FileCacheFailureDetails' {..} =
+    Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/FileCacheLifecycle.hs b/gen/Amazonka/FSx/Types/FileCacheLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheLifecycle.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.FSx.Types.FileCacheLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheLifecycle
+  ( FileCacheLifecycle
+      ( ..,
+        FileCacheLifecycle_AVAILABLE,
+        FileCacheLifecycle_CREATING,
+        FileCacheLifecycle_DELETING,
+        FileCacheLifecycle_FAILED,
+        FileCacheLifecycle_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileCacheLifecycle = FileCacheLifecycle'
+  { fromFileCacheLifecycle ::
+      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 FileCacheLifecycle_AVAILABLE :: FileCacheLifecycle
+pattern FileCacheLifecycle_AVAILABLE = FileCacheLifecycle' "AVAILABLE"
+
+pattern FileCacheLifecycle_CREATING :: FileCacheLifecycle
+pattern FileCacheLifecycle_CREATING = FileCacheLifecycle' "CREATING"
+
+pattern FileCacheLifecycle_DELETING :: FileCacheLifecycle
+pattern FileCacheLifecycle_DELETING = FileCacheLifecycle' "DELETING"
+
+pattern FileCacheLifecycle_FAILED :: FileCacheLifecycle
+pattern FileCacheLifecycle_FAILED = FileCacheLifecycle' "FAILED"
+
+pattern FileCacheLifecycle_UPDATING :: FileCacheLifecycle
+pattern FileCacheLifecycle_UPDATING = FileCacheLifecycle' "UPDATING"
+
+{-# COMPLETE
+  FileCacheLifecycle_AVAILABLE,
+  FileCacheLifecycle_CREATING,
+  FileCacheLifecycle_DELETING,
+  FileCacheLifecycle_FAILED,
+  FileCacheLifecycle_UPDATING,
+  FileCacheLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FileCacheLustreConfiguration.hs b/gen/Amazonka/FSx/Types/FileCacheLustreConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheLustreConfiguration.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.FSx.Types.FileCacheLustreConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheLustreConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FileCacheLustreDeploymentType
+import Amazonka.FSx.Types.FileCacheLustreMetadataConfiguration
+import Amazonka.FSx.Types.LustreLogConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the Amazon File Cache resource.
+--
+-- /See:/ 'newFileCacheLustreConfiguration' smart constructor.
+data FileCacheLustreConfiguration = FileCacheLustreConfiguration'
+  { -- | The deployment type of the Amazon File Cache resource, which must be
+    -- @CACHE_1@.
+    deploymentType :: Prelude.Maybe FileCacheLustreDeploymentType,
+    -- | The configuration for Lustre logging used to write the enabled logging
+    -- events for your Amazon File Cache resource to Amazon CloudWatch Logs.
+    logConfiguration :: Prelude.Maybe LustreLogConfiguration,
+    -- | The configuration for a Lustre MDT (Metadata Target) storage volume.
+    metadataConfiguration :: Prelude.Maybe FileCacheLustreMetadataConfiguration,
+    -- | You use the @MountName@ value when mounting the cache. If you pass a
+    -- cache ID to the @DescribeFileCaches@ operation, it returns the the
+    -- @MountName@ value as part of the cache\'s description.
+    mountName :: Prelude.Maybe Prelude.Text,
+    -- | Per unit storage throughput represents the megabytes per second of read
+    -- or write throughput per 1 tebibyte of storage provisioned. Cache
+    -- throughput capacity is equal to Storage capacity (TiB) *
+    -- PerUnitStorageThroughput (MB\/s\/TiB). The only supported value is
+    -- @1000@.
+    perUnitStorageThroughput :: Prelude.Maybe Prelude.Natural,
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCacheLustreConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deploymentType', 'fileCacheLustreConfiguration_deploymentType' - The deployment type of the Amazon File Cache resource, which must be
+-- @CACHE_1@.
+--
+-- 'logConfiguration', 'fileCacheLustreConfiguration_logConfiguration' - The configuration for Lustre logging used to write the enabled logging
+-- events for your Amazon File Cache resource to Amazon CloudWatch Logs.
+--
+-- 'metadataConfiguration', 'fileCacheLustreConfiguration_metadataConfiguration' - The configuration for a Lustre MDT (Metadata Target) storage volume.
+--
+-- 'mountName', 'fileCacheLustreConfiguration_mountName' - You use the @MountName@ value when mounting the cache. If you pass a
+-- cache ID to the @DescribeFileCaches@ operation, it returns the the
+-- @MountName@ value as part of the cache\'s description.
+--
+-- 'perUnitStorageThroughput', 'fileCacheLustreConfiguration_perUnitStorageThroughput' - Per unit storage throughput represents the megabytes per second of read
+-- or write throughput per 1 tebibyte of storage provisioned. Cache
+-- throughput capacity is equal to Storage capacity (TiB) *
+-- PerUnitStorageThroughput (MB\/s\/TiB). The only supported value is
+-- @1000@.
+--
+-- 'weeklyMaintenanceStartTime', 'fileCacheLustreConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+newFileCacheLustreConfiguration ::
+  FileCacheLustreConfiguration
+newFileCacheLustreConfiguration =
+  FileCacheLustreConfiguration'
+    { deploymentType =
+        Prelude.Nothing,
+      logConfiguration = Prelude.Nothing,
+      metadataConfiguration = Prelude.Nothing,
+      mountName = Prelude.Nothing,
+      perUnitStorageThroughput = Prelude.Nothing,
+      weeklyMaintenanceStartTime = Prelude.Nothing
+    }
+
+-- | The deployment type of the Amazon File Cache resource, which must be
+-- @CACHE_1@.
+fileCacheLustreConfiguration_deploymentType :: Lens.Lens' FileCacheLustreConfiguration (Prelude.Maybe FileCacheLustreDeploymentType)
+fileCacheLustreConfiguration_deploymentType = Lens.lens (\FileCacheLustreConfiguration' {deploymentType} -> deploymentType) (\s@FileCacheLustreConfiguration' {} a -> s {deploymentType = a} :: FileCacheLustreConfiguration)
+
+-- | The configuration for Lustre logging used to write the enabled logging
+-- events for your Amazon File Cache resource to Amazon CloudWatch Logs.
+fileCacheLustreConfiguration_logConfiguration :: Lens.Lens' FileCacheLustreConfiguration (Prelude.Maybe LustreLogConfiguration)
+fileCacheLustreConfiguration_logConfiguration = Lens.lens (\FileCacheLustreConfiguration' {logConfiguration} -> logConfiguration) (\s@FileCacheLustreConfiguration' {} a -> s {logConfiguration = a} :: FileCacheLustreConfiguration)
+
+-- | The configuration for a Lustre MDT (Metadata Target) storage volume.
+fileCacheLustreConfiguration_metadataConfiguration :: Lens.Lens' FileCacheLustreConfiguration (Prelude.Maybe FileCacheLustreMetadataConfiguration)
+fileCacheLustreConfiguration_metadataConfiguration = Lens.lens (\FileCacheLustreConfiguration' {metadataConfiguration} -> metadataConfiguration) (\s@FileCacheLustreConfiguration' {} a -> s {metadataConfiguration = a} :: FileCacheLustreConfiguration)
+
+-- | You use the @MountName@ value when mounting the cache. If you pass a
+-- cache ID to the @DescribeFileCaches@ operation, it returns the the
+-- @MountName@ value as part of the cache\'s description.
+fileCacheLustreConfiguration_mountName :: Lens.Lens' FileCacheLustreConfiguration (Prelude.Maybe Prelude.Text)
+fileCacheLustreConfiguration_mountName = Lens.lens (\FileCacheLustreConfiguration' {mountName} -> mountName) (\s@FileCacheLustreConfiguration' {} a -> s {mountName = a} :: FileCacheLustreConfiguration)
+
+-- | Per unit storage throughput represents the megabytes per second of read
+-- or write throughput per 1 tebibyte of storage provisioned. Cache
+-- throughput capacity is equal to Storage capacity (TiB) *
+-- PerUnitStorageThroughput (MB\/s\/TiB). The only supported value is
+-- @1000@.
+fileCacheLustreConfiguration_perUnitStorageThroughput :: Lens.Lens' FileCacheLustreConfiguration (Prelude.Maybe Prelude.Natural)
+fileCacheLustreConfiguration_perUnitStorageThroughput = Lens.lens (\FileCacheLustreConfiguration' {perUnitStorageThroughput} -> perUnitStorageThroughput) (\s@FileCacheLustreConfiguration' {} a -> s {perUnitStorageThroughput = a} :: FileCacheLustreConfiguration)
+
+-- | Undocumented member.
+fileCacheLustreConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' FileCacheLustreConfiguration (Prelude.Maybe Prelude.Text)
+fileCacheLustreConfiguration_weeklyMaintenanceStartTime = Lens.lens (\FileCacheLustreConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@FileCacheLustreConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: FileCacheLustreConfiguration)
+
+instance Data.FromJSON FileCacheLustreConfiguration where
+  parseJSON =
+    Data.withObject
+      "FileCacheLustreConfiguration"
+      ( \x ->
+          FileCacheLustreConfiguration'
+            Prelude.<$> (x Data..:? "DeploymentType")
+            Prelude.<*> (x Data..:? "LogConfiguration")
+            Prelude.<*> (x Data..:? "MetadataConfiguration")
+            Prelude.<*> (x Data..:? "MountName")
+            Prelude.<*> (x Data..:? "PerUnitStorageThroughput")
+            Prelude.<*> (x Data..:? "WeeklyMaintenanceStartTime")
+      )
+
+instance
+  Prelude.Hashable
+    FileCacheLustreConfiguration
+  where
+  hashWithSalt _salt FileCacheLustreConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` deploymentType
+      `Prelude.hashWithSalt` logConfiguration
+      `Prelude.hashWithSalt` metadataConfiguration
+      `Prelude.hashWithSalt` mountName
+      `Prelude.hashWithSalt` perUnitStorageThroughput
+      `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance Prelude.NFData FileCacheLustreConfiguration where
+  rnf FileCacheLustreConfiguration' {..} =
+    Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf logConfiguration
+      `Prelude.seq` Prelude.rnf metadataConfiguration
+      `Prelude.seq` Prelude.rnf mountName
+      `Prelude.seq` Prelude.rnf perUnitStorageThroughput
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
diff --git a/gen/Amazonka/FSx/Types/FileCacheLustreDeploymentType.hs b/gen/Amazonka/FSx/Types/FileCacheLustreDeploymentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheLustreDeploymentType.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.FSx.Types.FileCacheLustreDeploymentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheLustreDeploymentType
+  ( FileCacheLustreDeploymentType
+      ( ..,
+        FileCacheLustreDeploymentType_CACHE_1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileCacheLustreDeploymentType = FileCacheLustreDeploymentType'
+  { fromFileCacheLustreDeploymentType ::
+      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 FileCacheLustreDeploymentType_CACHE_1 :: FileCacheLustreDeploymentType
+pattern FileCacheLustreDeploymentType_CACHE_1 = FileCacheLustreDeploymentType' "CACHE_1"
+
+{-# COMPLETE
+  FileCacheLustreDeploymentType_CACHE_1,
+  FileCacheLustreDeploymentType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FileCacheLustreMetadataConfiguration.hs b/gen/Amazonka/FSx/Types/FileCacheLustreMetadataConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheLustreMetadataConfiguration.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.FSx.Types.FileCacheLustreMetadataConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheLustreMetadataConfiguration where
+
+import qualified 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 Lustre MDT (Metadata Target) storage volume. The
+-- metadata on Amazon File Cache is managed by a Lustre Metadata Server
+-- (MDS) while the actual metadata is persisted on an MDT.
+--
+-- /See:/ 'newFileCacheLustreMetadataConfiguration' smart constructor.
+data FileCacheLustreMetadataConfiguration = FileCacheLustreMetadataConfiguration'
+  { -- | The storage capacity of the Lustre MDT (Metadata Target) storage volume
+    -- in gibibytes (GiB). The only supported value is @2400@ GiB.
+    storageCapacity :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCacheLustreMetadataConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'storageCapacity', 'fileCacheLustreMetadataConfiguration_storageCapacity' - The storage capacity of the Lustre MDT (Metadata Target) storage volume
+-- in gibibytes (GiB). The only supported value is @2400@ GiB.
+newFileCacheLustreMetadataConfiguration ::
+  -- | 'storageCapacity'
+  Prelude.Natural ->
+  FileCacheLustreMetadataConfiguration
+newFileCacheLustreMetadataConfiguration
+  pStorageCapacity_ =
+    FileCacheLustreMetadataConfiguration'
+      { storageCapacity =
+          pStorageCapacity_
+      }
+
+-- | The storage capacity of the Lustre MDT (Metadata Target) storage volume
+-- in gibibytes (GiB). The only supported value is @2400@ GiB.
+fileCacheLustreMetadataConfiguration_storageCapacity :: Lens.Lens' FileCacheLustreMetadataConfiguration Prelude.Natural
+fileCacheLustreMetadataConfiguration_storageCapacity = Lens.lens (\FileCacheLustreMetadataConfiguration' {storageCapacity} -> storageCapacity) (\s@FileCacheLustreMetadataConfiguration' {} a -> s {storageCapacity = a} :: FileCacheLustreMetadataConfiguration)
+
+instance
+  Data.FromJSON
+    FileCacheLustreMetadataConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "FileCacheLustreMetadataConfiguration"
+      ( \x ->
+          FileCacheLustreMetadataConfiguration'
+            Prelude.<$> (x Data..: "StorageCapacity")
+      )
+
+instance
+  Prelude.Hashable
+    FileCacheLustreMetadataConfiguration
+  where
+  hashWithSalt
+    _salt
+    FileCacheLustreMetadataConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` storageCapacity
+
+instance
+  Prelude.NFData
+    FileCacheLustreMetadataConfiguration
+  where
+  rnf FileCacheLustreMetadataConfiguration' {..} =
+    Prelude.rnf storageCapacity
+
+instance
+  Data.ToJSON
+    FileCacheLustreMetadataConfiguration
+  where
+  toJSON FileCacheLustreMetadataConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("StorageCapacity" Data..= storageCapacity)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/FileCacheNFSConfiguration.hs b/gen/Amazonka/FSx/Types/FileCacheNFSConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheNFSConfiguration.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.FSx.Types.FileCacheNFSConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheNFSConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.NfsVersion
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for an NFS data repository association (DRA) created
+-- during the creation of the Amazon File Cache resource.
+--
+-- /See:/ 'newFileCacheNFSConfiguration' smart constructor.
+data FileCacheNFSConfiguration = FileCacheNFSConfiguration'
+  { -- | A list of up to 2 IP addresses of DNS servers used to resolve the NFS
+    -- file system domain name. The provided IP addresses can either be the IP
+    -- addresses of a DNS forwarder or resolver that the customer manages and
+    -- runs inside the customer VPC, or the IP addresses of the on-premises DNS
+    -- servers.
+    dnsIps :: Prelude.Maybe [Prelude.Text],
+    -- | The version of the NFS (Network File System) protocol of the NFS data
+    -- repository. The only supported value is @NFS3@, which indicates that the
+    -- data repository must support the NFSv3 protocol.
+    version :: NfsVersion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileCacheNFSConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dnsIps', 'fileCacheNFSConfiguration_dnsIps' - A list of up to 2 IP addresses of DNS servers used to resolve the NFS
+-- file system domain name. The provided IP addresses can either be the IP
+-- addresses of a DNS forwarder or resolver that the customer manages and
+-- runs inside the customer VPC, or the IP addresses of the on-premises DNS
+-- servers.
+--
+-- 'version', 'fileCacheNFSConfiguration_version' - The version of the NFS (Network File System) protocol of the NFS data
+-- repository. The only supported value is @NFS3@, which indicates that the
+-- data repository must support the NFSv3 protocol.
+newFileCacheNFSConfiguration ::
+  -- | 'version'
+  NfsVersion ->
+  FileCacheNFSConfiguration
+newFileCacheNFSConfiguration pVersion_ =
+  FileCacheNFSConfiguration'
+    { dnsIps =
+        Prelude.Nothing,
+      version = pVersion_
+    }
+
+-- | A list of up to 2 IP addresses of DNS servers used to resolve the NFS
+-- file system domain name. The provided IP addresses can either be the IP
+-- addresses of a DNS forwarder or resolver that the customer manages and
+-- runs inside the customer VPC, or the IP addresses of the on-premises DNS
+-- servers.
+fileCacheNFSConfiguration_dnsIps :: Lens.Lens' FileCacheNFSConfiguration (Prelude.Maybe [Prelude.Text])
+fileCacheNFSConfiguration_dnsIps = Lens.lens (\FileCacheNFSConfiguration' {dnsIps} -> dnsIps) (\s@FileCacheNFSConfiguration' {} a -> s {dnsIps = a} :: FileCacheNFSConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The version of the NFS (Network File System) protocol of the NFS data
+-- repository. The only supported value is @NFS3@, which indicates that the
+-- data repository must support the NFSv3 protocol.
+fileCacheNFSConfiguration_version :: Lens.Lens' FileCacheNFSConfiguration NfsVersion
+fileCacheNFSConfiguration_version = Lens.lens (\FileCacheNFSConfiguration' {version} -> version) (\s@FileCacheNFSConfiguration' {} a -> s {version = a} :: FileCacheNFSConfiguration)
+
+instance Prelude.Hashable FileCacheNFSConfiguration where
+  hashWithSalt _salt FileCacheNFSConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` dnsIps
+      `Prelude.hashWithSalt` version
+
+instance Prelude.NFData FileCacheNFSConfiguration where
+  rnf FileCacheNFSConfiguration' {..} =
+    Prelude.rnf dnsIps
+      `Prelude.seq` Prelude.rnf version
+
+instance Data.ToJSON FileCacheNFSConfiguration where
+  toJSON FileCacheNFSConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DnsIps" Data..=) Prelude.<$> dnsIps,
+            Prelude.Just ("Version" Data..= version)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/FileCacheType.hs b/gen/Amazonka/FSx/Types/FileCacheType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileCacheType.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.FSx.Types.FileCacheType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileCacheType
+  ( FileCacheType
+      ( ..,
+        FileCacheType_LUSTRE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileCacheType = FileCacheType'
+  { fromFileCacheType ::
+      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 FileCacheType_LUSTRE :: FileCacheType
+pattern FileCacheType_LUSTRE = FileCacheType' "LUSTRE"
+
+{-# COMPLETE
+  FileCacheType_LUSTRE,
+  FileCacheType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FileSystem.hs b/gen/Amazonka/FSx/Types/FileSystem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystem.hs
@@ -0,0 +1,532 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileSystem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystem where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import {-# SOURCE #-} Amazonka.FSx.Types.AdministrativeAction
+import Amazonka.FSx.Types.FileSystemFailureDetails
+import Amazonka.FSx.Types.FileSystemLifecycle
+import Amazonka.FSx.Types.FileSystemType
+import Amazonka.FSx.Types.LustreFileSystemConfiguration
+import Amazonka.FSx.Types.OntapFileSystemConfiguration
+import Amazonka.FSx.Types.OpenZFSFileSystemConfiguration
+import Amazonka.FSx.Types.StorageType
+import Amazonka.FSx.Types.Tag
+import Amazonka.FSx.Types.WindowsFileSystemConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | A description of a specific Amazon FSx file system.
+--
+-- /See:/ 'newFileSystem' smart constructor.
+data FileSystem = FileSystem'
+  { -- | A list of administrative actions for the file system that are in process
+    -- or waiting to be processed. Administrative actions describe changes to
+    -- the Amazon FSx system that you have initiated using the
+    -- @UpdateFileSystem@ operation.
+    administrativeActions :: Prelude.Maybe [AdministrativeAction],
+    -- | The time that the file system was created, in seconds (since
+    -- 1970-01-01T00:00:00Z), also known as Unix time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Domain Name System (DNS) name for the file system.
+    dNSName :: Prelude.Maybe Prelude.Text,
+    failureDetails :: Prelude.Maybe FileSystemFailureDetails,
+    -- | The system-generated, unique 17-digit ID of the file system.
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | The type of Amazon FSx file system, which can be @LUSTRE@, @WINDOWS@,
+    -- @ONTAP@, or @OPENZFS@.
+    fileSystemType :: Prelude.Maybe FileSystemType,
+    -- | The Lustre version of the Amazon FSx for Lustre file system, either
+    -- @2.10@ or @2.12@.
+    fileSystemTypeVersion :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Key Management Service (KMS) key used to encrypt Amazon
+    -- FSx file system data. Used as follows with Amazon FSx file system types:
+    --
+    -- -   Amazon FSx for Lustre @PERSISTENT_1@ and @PERSISTENT_2@ deployment
+    --     types only.
+    --
+    --     @SCRATCH_1@ and @SCRATCH_2@ types are encrypted using the Amazon FSx
+    --     service KMS key for your account.
+    --
+    -- -   Amazon FSx for NetApp ONTAP
+    --
+    -- -   Amazon FSx for OpenZFS
+    --
+    -- -   Amazon FSx for Windows File Server
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The lifecycle status of the file system. The following are the possible
+    -- values and what they mean:
+    --
+    -- -   @AVAILABLE@ - The file system is in a healthy state, and is
+    --     reachable and available for use.
+    --
+    -- -   @CREATING@ - Amazon FSx is creating the new file system.
+    --
+    -- -   @DELETING@ - Amazon FSx is deleting an existing file system.
+    --
+    -- -   @FAILED@ - An existing file system has experienced an unrecoverable
+    --     failure. When creating a new file system, Amazon FSx was unable to
+    --     create the file system.
+    --
+    -- -   @MISCONFIGURED@ - The file system is in a failed but recoverable
+    --     state.
+    --
+    -- -   @MISCONFIGURED_UNAVAILABLE@ - (Amazon FSx for Windows File Server
+    --     only) The file system is currently unavailable due to a change in
+    --     your Active Directory configuration.
+    --
+    -- -   @UPDATING@ - The file system is undergoing a customer-initiated
+    --     update.
+    lifecycle :: Prelude.Maybe FileSystemLifecycle,
+    lustreConfiguration :: Prelude.Maybe LustreFileSystemConfiguration,
+    -- | The IDs of the elastic network interfaces from which a specific file
+    -- system is accessible. The elastic network interface is automatically
+    -- created in the same virtual private cloud (VPC) that the Amazon FSx file
+    -- system was created in. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html Elastic Network Interfaces>
+    -- in the /Amazon EC2 User Guide./
+    --
+    -- For an Amazon FSx for Windows File Server file system, you can have one
+    -- network interface ID. For an Amazon FSx for Lustre file system, you can
+    -- have more than one.
+    networkInterfaceIds :: Prelude.Maybe [Prelude.Text],
+    -- | The configuration for this Amazon FSx for NetApp ONTAP file system.
+    ontapConfiguration :: Prelude.Maybe OntapFileSystemConfiguration,
+    -- | The configuration for this Amazon FSx for OpenZFS file system.
+    openZFSConfiguration :: Prelude.Maybe OpenZFSFileSystemConfiguration,
+    -- | The Amazon Web Services account that created the file system. If the
+    -- file system was created by an Identity and Access Management (IAM) user,
+    -- the Amazon Web Services account to which the IAM user belongs is the
+    -- owner.
+    ownerId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the file system resource.
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The storage capacity of the file system in gibibytes (GiB).
+    storageCapacity :: Prelude.Maybe Prelude.Natural,
+    -- | The type of storage the file system is using. If set to @SSD@, the file
+    -- system uses solid state drive storage. If set to @HDD@, the file system
+    -- uses hard disk drive storage.
+    storageType :: Prelude.Maybe StorageType,
+    -- | Specifies the IDs of the subnets that the file system is accessible
+    -- from. For the Amazon FSx Windows and ONTAP @MULTI_AZ_1@ file system
+    -- deployment type, there are two subnet IDs, one for the preferred file
+    -- server and one for the standby file server. The preferred file server
+    -- subnet identified in the @PreferredSubnetID@ property. All other file
+    -- systems have only one subnet ID.
+    --
+    -- For FSx for Lustre file systems, and Single-AZ Windows file systems,
+    -- this is the ID of the subnet that contains the file system\'s endpoint.
+    -- For @MULTI_AZ_1@ Windows and ONTAP file systems, the file system
+    -- endpoint is available in the @PreferredSubnetID@.
+    subnetIds :: Prelude.Maybe [Prelude.Text],
+    -- | The tags to associate with the file system. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging your Amazon EC2 resources>
+    -- in the /Amazon EC2 User Guide/.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ID of the primary virtual private cloud (VPC) for the file system.
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The configuration for this Amazon FSx for Windows File Server file
+    -- system.
+    windowsConfiguration :: Prelude.Maybe WindowsFileSystemConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSystem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'administrativeActions', 'fileSystem_administrativeActions' - A list of administrative actions for the file system that are in process
+-- or waiting to be processed. Administrative actions describe changes to
+-- the Amazon FSx system that you have initiated using the
+-- @UpdateFileSystem@ operation.
+--
+-- 'creationTime', 'fileSystem_creationTime' - The time that the file system was created, in seconds (since
+-- 1970-01-01T00:00:00Z), also known as Unix time.
+--
+-- 'dNSName', 'fileSystem_dNSName' - The Domain Name System (DNS) name for the file system.
+--
+-- 'failureDetails', 'fileSystem_failureDetails' - Undocumented member.
+--
+-- 'fileSystemId', 'fileSystem_fileSystemId' - The system-generated, unique 17-digit ID of the file system.
+--
+-- 'fileSystemType', 'fileSystem_fileSystemType' - The type of Amazon FSx file system, which can be @LUSTRE@, @WINDOWS@,
+-- @ONTAP@, or @OPENZFS@.
+--
+-- 'fileSystemTypeVersion', 'fileSystem_fileSystemTypeVersion' - The Lustre version of the Amazon FSx for Lustre file system, either
+-- @2.10@ or @2.12@.
+--
+-- 'kmsKeyId', 'fileSystem_kmsKeyId' - The ID of the Key Management Service (KMS) key used to encrypt Amazon
+-- FSx file system data. Used as follows with Amazon FSx file system types:
+--
+-- -   Amazon FSx for Lustre @PERSISTENT_1@ and @PERSISTENT_2@ deployment
+--     types only.
+--
+--     @SCRATCH_1@ and @SCRATCH_2@ types are encrypted using the Amazon FSx
+--     service KMS key for your account.
+--
+-- -   Amazon FSx for NetApp ONTAP
+--
+-- -   Amazon FSx for OpenZFS
+--
+-- -   Amazon FSx for Windows File Server
+--
+-- 'lifecycle', 'fileSystem_lifecycle' - The lifecycle status of the file system. The following are the possible
+-- values and what they mean:
+--
+-- -   @AVAILABLE@ - The file system is in a healthy state, and is
+--     reachable and available for use.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new file system.
+--
+-- -   @DELETING@ - Amazon FSx is deleting an existing file system.
+--
+-- -   @FAILED@ - An existing file system has experienced an unrecoverable
+--     failure. When creating a new file system, Amazon FSx was unable to
+--     create the file system.
+--
+-- -   @MISCONFIGURED@ - The file system is in a failed but recoverable
+--     state.
+--
+-- -   @MISCONFIGURED_UNAVAILABLE@ - (Amazon FSx for Windows File Server
+--     only) The file system is currently unavailable due to a change in
+--     your Active Directory configuration.
+--
+-- -   @UPDATING@ - The file system is undergoing a customer-initiated
+--     update.
+--
+-- 'lustreConfiguration', 'fileSystem_lustreConfiguration' - Undocumented member.
+--
+-- 'networkInterfaceIds', 'fileSystem_networkInterfaceIds' - The IDs of the elastic network interfaces from which a specific file
+-- system is accessible. The elastic network interface is automatically
+-- created in the same virtual private cloud (VPC) that the Amazon FSx file
+-- system was created in. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html Elastic Network Interfaces>
+-- in the /Amazon EC2 User Guide./
+--
+-- For an Amazon FSx for Windows File Server file system, you can have one
+-- network interface ID. For an Amazon FSx for Lustre file system, you can
+-- have more than one.
+--
+-- 'ontapConfiguration', 'fileSystem_ontapConfiguration' - The configuration for this Amazon FSx for NetApp ONTAP file system.
+--
+-- 'openZFSConfiguration', 'fileSystem_openZFSConfiguration' - The configuration for this Amazon FSx for OpenZFS file system.
+--
+-- 'ownerId', 'fileSystem_ownerId' - The Amazon Web Services account that created the file system. If the
+-- file system was created by an Identity and Access Management (IAM) user,
+-- the Amazon Web Services account to which the IAM user belongs is the
+-- owner.
+--
+-- 'resourceARN', 'fileSystem_resourceARN' - The Amazon Resource Name (ARN) of the file system resource.
+--
+-- 'storageCapacity', 'fileSystem_storageCapacity' - The storage capacity of the file system in gibibytes (GiB).
+--
+-- 'storageType', 'fileSystem_storageType' - The type of storage the file system is using. If set to @SSD@, the file
+-- system uses solid state drive storage. If set to @HDD@, the file system
+-- uses hard disk drive storage.
+--
+-- 'subnetIds', 'fileSystem_subnetIds' - Specifies the IDs of the subnets that the file system is accessible
+-- from. For the Amazon FSx Windows and ONTAP @MULTI_AZ_1@ file system
+-- deployment type, there are two subnet IDs, one for the preferred file
+-- server and one for the standby file server. The preferred file server
+-- subnet identified in the @PreferredSubnetID@ property. All other file
+-- systems have only one subnet ID.
+--
+-- For FSx for Lustre file systems, and Single-AZ Windows file systems,
+-- this is the ID of the subnet that contains the file system\'s endpoint.
+-- For @MULTI_AZ_1@ Windows and ONTAP file systems, the file system
+-- endpoint is available in the @PreferredSubnetID@.
+--
+-- 'tags', 'fileSystem_tags' - The tags to associate with the file system. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging your Amazon EC2 resources>
+-- in the /Amazon EC2 User Guide/.
+--
+-- 'vpcId', 'fileSystem_vpcId' - The ID of the primary virtual private cloud (VPC) for the file system.
+--
+-- 'windowsConfiguration', 'fileSystem_windowsConfiguration' - The configuration for this Amazon FSx for Windows File Server file
+-- system.
+newFileSystem ::
+  FileSystem
+newFileSystem =
+  FileSystem'
+    { administrativeActions =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      dNSName = Prelude.Nothing,
+      failureDetails = Prelude.Nothing,
+      fileSystemId = Prelude.Nothing,
+      fileSystemType = Prelude.Nothing,
+      fileSystemTypeVersion = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      networkInterfaceIds = Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      ownerId = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      storageCapacity = Prelude.Nothing,
+      storageType = Prelude.Nothing,
+      subnetIds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      windowsConfiguration = Prelude.Nothing
+    }
+
+-- | A list of administrative actions for the file system that are in process
+-- or waiting to be processed. Administrative actions describe changes to
+-- the Amazon FSx system that you have initiated using the
+-- @UpdateFileSystem@ operation.
+fileSystem_administrativeActions :: Lens.Lens' FileSystem (Prelude.Maybe [AdministrativeAction])
+fileSystem_administrativeActions = Lens.lens (\FileSystem' {administrativeActions} -> administrativeActions) (\s@FileSystem' {} a -> s {administrativeActions = a} :: FileSystem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The time that the file system was created, in seconds (since
+-- 1970-01-01T00:00:00Z), also known as Unix time.
+fileSystem_creationTime :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.UTCTime)
+fileSystem_creationTime = Lens.lens (\FileSystem' {creationTime} -> creationTime) (\s@FileSystem' {} a -> s {creationTime = a} :: FileSystem) Prelude.. Lens.mapping Data._Time
+
+-- | The Domain Name System (DNS) name for the file system.
+fileSystem_dNSName :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_dNSName = Lens.lens (\FileSystem' {dNSName} -> dNSName) (\s@FileSystem' {} a -> s {dNSName = a} :: FileSystem)
+
+-- | Undocumented member.
+fileSystem_failureDetails :: Lens.Lens' FileSystem (Prelude.Maybe FileSystemFailureDetails)
+fileSystem_failureDetails = Lens.lens (\FileSystem' {failureDetails} -> failureDetails) (\s@FileSystem' {} a -> s {failureDetails = a} :: FileSystem)
+
+-- | The system-generated, unique 17-digit ID of the file system.
+fileSystem_fileSystemId :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_fileSystemId = Lens.lens (\FileSystem' {fileSystemId} -> fileSystemId) (\s@FileSystem' {} a -> s {fileSystemId = a} :: FileSystem)
+
+-- | The type of Amazon FSx file system, which can be @LUSTRE@, @WINDOWS@,
+-- @ONTAP@, or @OPENZFS@.
+fileSystem_fileSystemType :: Lens.Lens' FileSystem (Prelude.Maybe FileSystemType)
+fileSystem_fileSystemType = Lens.lens (\FileSystem' {fileSystemType} -> fileSystemType) (\s@FileSystem' {} a -> s {fileSystemType = a} :: FileSystem)
+
+-- | The Lustre version of the Amazon FSx for Lustre file system, either
+-- @2.10@ or @2.12@.
+fileSystem_fileSystemTypeVersion :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_fileSystemTypeVersion = Lens.lens (\FileSystem' {fileSystemTypeVersion} -> fileSystemTypeVersion) (\s@FileSystem' {} a -> s {fileSystemTypeVersion = a} :: FileSystem)
+
+-- | The ID of the Key Management Service (KMS) key used to encrypt Amazon
+-- FSx file system data. Used as follows with Amazon FSx file system types:
+--
+-- -   Amazon FSx for Lustre @PERSISTENT_1@ and @PERSISTENT_2@ deployment
+--     types only.
+--
+--     @SCRATCH_1@ and @SCRATCH_2@ types are encrypted using the Amazon FSx
+--     service KMS key for your account.
+--
+-- -   Amazon FSx for NetApp ONTAP
+--
+-- -   Amazon FSx for OpenZFS
+--
+-- -   Amazon FSx for Windows File Server
+fileSystem_kmsKeyId :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_kmsKeyId = Lens.lens (\FileSystem' {kmsKeyId} -> kmsKeyId) (\s@FileSystem' {} a -> s {kmsKeyId = a} :: FileSystem)
+
+-- | The lifecycle status of the file system. The following are the possible
+-- values and what they mean:
+--
+-- -   @AVAILABLE@ - The file system is in a healthy state, and is
+--     reachable and available for use.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new file system.
+--
+-- -   @DELETING@ - Amazon FSx is deleting an existing file system.
+--
+-- -   @FAILED@ - An existing file system has experienced an unrecoverable
+--     failure. When creating a new file system, Amazon FSx was unable to
+--     create the file system.
+--
+-- -   @MISCONFIGURED@ - The file system is in a failed but recoverable
+--     state.
+--
+-- -   @MISCONFIGURED_UNAVAILABLE@ - (Amazon FSx for Windows File Server
+--     only) The file system is currently unavailable due to a change in
+--     your Active Directory configuration.
+--
+-- -   @UPDATING@ - The file system is undergoing a customer-initiated
+--     update.
+fileSystem_lifecycle :: Lens.Lens' FileSystem (Prelude.Maybe FileSystemLifecycle)
+fileSystem_lifecycle = Lens.lens (\FileSystem' {lifecycle} -> lifecycle) (\s@FileSystem' {} a -> s {lifecycle = a} :: FileSystem)
+
+-- | Undocumented member.
+fileSystem_lustreConfiguration :: Lens.Lens' FileSystem (Prelude.Maybe LustreFileSystemConfiguration)
+fileSystem_lustreConfiguration = Lens.lens (\FileSystem' {lustreConfiguration} -> lustreConfiguration) (\s@FileSystem' {} a -> s {lustreConfiguration = a} :: FileSystem)
+
+-- | The IDs of the elastic network interfaces from which a specific file
+-- system is accessible. The elastic network interface is automatically
+-- created in the same virtual private cloud (VPC) that the Amazon FSx file
+-- system was created in. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html Elastic Network Interfaces>
+-- in the /Amazon EC2 User Guide./
+--
+-- For an Amazon FSx for Windows File Server file system, you can have one
+-- network interface ID. For an Amazon FSx for Lustre file system, you can
+-- have more than one.
+fileSystem_networkInterfaceIds :: Lens.Lens' FileSystem (Prelude.Maybe [Prelude.Text])
+fileSystem_networkInterfaceIds = Lens.lens (\FileSystem' {networkInterfaceIds} -> networkInterfaceIds) (\s@FileSystem' {} a -> s {networkInterfaceIds = a} :: FileSystem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration for this Amazon FSx for NetApp ONTAP file system.
+fileSystem_ontapConfiguration :: Lens.Lens' FileSystem (Prelude.Maybe OntapFileSystemConfiguration)
+fileSystem_ontapConfiguration = Lens.lens (\FileSystem' {ontapConfiguration} -> ontapConfiguration) (\s@FileSystem' {} a -> s {ontapConfiguration = a} :: FileSystem)
+
+-- | The configuration for this Amazon FSx for OpenZFS file system.
+fileSystem_openZFSConfiguration :: Lens.Lens' FileSystem (Prelude.Maybe OpenZFSFileSystemConfiguration)
+fileSystem_openZFSConfiguration = Lens.lens (\FileSystem' {openZFSConfiguration} -> openZFSConfiguration) (\s@FileSystem' {} a -> s {openZFSConfiguration = a} :: FileSystem)
+
+-- | The Amazon Web Services account that created the file system. If the
+-- file system was created by an Identity and Access Management (IAM) user,
+-- the Amazon Web Services account to which the IAM user belongs is the
+-- owner.
+fileSystem_ownerId :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_ownerId = Lens.lens (\FileSystem' {ownerId} -> ownerId) (\s@FileSystem' {} a -> s {ownerId = a} :: FileSystem)
+
+-- | The Amazon Resource Name (ARN) of the file system resource.
+fileSystem_resourceARN :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_resourceARN = Lens.lens (\FileSystem' {resourceARN} -> resourceARN) (\s@FileSystem' {} a -> s {resourceARN = a} :: FileSystem)
+
+-- | The storage capacity of the file system in gibibytes (GiB).
+fileSystem_storageCapacity :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Natural)
+fileSystem_storageCapacity = Lens.lens (\FileSystem' {storageCapacity} -> storageCapacity) (\s@FileSystem' {} a -> s {storageCapacity = a} :: FileSystem)
+
+-- | The type of storage the file system is using. If set to @SSD@, the file
+-- system uses solid state drive storage. If set to @HDD@, the file system
+-- uses hard disk drive storage.
+fileSystem_storageType :: Lens.Lens' FileSystem (Prelude.Maybe StorageType)
+fileSystem_storageType = Lens.lens (\FileSystem' {storageType} -> storageType) (\s@FileSystem' {} a -> s {storageType = a} :: FileSystem)
+
+-- | Specifies the IDs of the subnets that the file system is accessible
+-- from. For the Amazon FSx Windows and ONTAP @MULTI_AZ_1@ file system
+-- deployment type, there are two subnet IDs, one for the preferred file
+-- server and one for the standby file server. The preferred file server
+-- subnet identified in the @PreferredSubnetID@ property. All other file
+-- systems have only one subnet ID.
+--
+-- For FSx for Lustre file systems, and Single-AZ Windows file systems,
+-- this is the ID of the subnet that contains the file system\'s endpoint.
+-- For @MULTI_AZ_1@ Windows and ONTAP file systems, the file system
+-- endpoint is available in the @PreferredSubnetID@.
+fileSystem_subnetIds :: Lens.Lens' FileSystem (Prelude.Maybe [Prelude.Text])
+fileSystem_subnetIds = Lens.lens (\FileSystem' {subnetIds} -> subnetIds) (\s@FileSystem' {} a -> s {subnetIds = a} :: FileSystem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The tags to associate with the file system. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging your Amazon EC2 resources>
+-- in the /Amazon EC2 User Guide/.
+fileSystem_tags :: Lens.Lens' FileSystem (Prelude.Maybe (Prelude.NonEmpty Tag))
+fileSystem_tags = Lens.lens (\FileSystem' {tags} -> tags) (\s@FileSystem' {} a -> s {tags = a} :: FileSystem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the primary virtual private cloud (VPC) for the file system.
+fileSystem_vpcId :: Lens.Lens' FileSystem (Prelude.Maybe Prelude.Text)
+fileSystem_vpcId = Lens.lens (\FileSystem' {vpcId} -> vpcId) (\s@FileSystem' {} a -> s {vpcId = a} :: FileSystem)
+
+-- | The configuration for this Amazon FSx for Windows File Server file
+-- system.
+fileSystem_windowsConfiguration :: Lens.Lens' FileSystem (Prelude.Maybe WindowsFileSystemConfiguration)
+fileSystem_windowsConfiguration = Lens.lens (\FileSystem' {windowsConfiguration} -> windowsConfiguration) (\s@FileSystem' {} a -> s {windowsConfiguration = a} :: FileSystem)
+
+instance Data.FromJSON FileSystem where
+  parseJSON =
+    Data.withObject
+      "FileSystem"
+      ( \x ->
+          FileSystem'
+            Prelude.<$> ( x
+                            Data..:? "AdministrativeActions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DNSName")
+            Prelude.<*> (x Data..:? "FailureDetails")
+            Prelude.<*> (x Data..:? "FileSystemId")
+            Prelude.<*> (x Data..:? "FileSystemType")
+            Prelude.<*> (x Data..:? "FileSystemTypeVersion")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "LustreConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "NetworkInterfaceIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "OntapConfiguration")
+            Prelude.<*> (x Data..:? "OpenZFSConfiguration")
+            Prelude.<*> (x Data..:? "OwnerId")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "StorageCapacity")
+            Prelude.<*> (x Data..:? "StorageType")
+            Prelude.<*> (x Data..:? "SubnetIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..:? "VpcId")
+            Prelude.<*> (x Data..:? "WindowsConfiguration")
+      )
+
+instance Prelude.Hashable FileSystem where
+  hashWithSalt _salt FileSystem' {..} =
+    _salt
+      `Prelude.hashWithSalt` administrativeActions
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` dNSName
+      `Prelude.hashWithSalt` failureDetails
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` fileSystemType
+      `Prelude.hashWithSalt` fileSystemTypeVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` networkInterfaceIds
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` ownerId
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` storageType
+      `Prelude.hashWithSalt` subnetIds
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcId
+      `Prelude.hashWithSalt` windowsConfiguration
+
+instance Prelude.NFData FileSystem where
+  rnf FileSystem' {..} =
+    Prelude.rnf administrativeActions
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dNSName
+      `Prelude.seq` Prelude.rnf failureDetails
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf fileSystemType
+      `Prelude.seq` Prelude.rnf fileSystemTypeVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf networkInterfaceIds
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf ownerId
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf storageType
+      `Prelude.seq` Prelude.rnf subnetIds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf
+        windowsConfiguration
diff --git a/gen/Amazonka/FSx/Types/FileSystem.hs-boot b/gen/Amazonka/FSx/Types/FileSystem.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystem.hs-boot
@@ -0,0 +1,31 @@
+{-# OPTIONS_GHC -Wno-missing-methods #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileSystem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystem where
+
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+data FileSystem
+
+instance Prelude.Eq FileSystem
+
+instance Prelude.Read FileSystem
+
+instance Prelude.Show FileSystem
+
+instance Prelude.Generic FileSystem
+
+instance Data.FromJSON FileSystem
+
+instance Prelude.NFData FileSystem
+
+instance Prelude.Hashable FileSystem
diff --git a/gen/Amazonka/FSx/Types/FileSystemEndpoint.hs b/gen/Amazonka/FSx/Types/FileSystemEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystemEndpoint.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.FSx.Types.FileSystemEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystemEndpoint where
+
+import qualified 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 Amazon FSx for NetApp ONTAP file system has two endpoints that are
+-- used to access data or to manage the file system using the NetApp ONTAP
+-- CLI, REST API, or NetApp SnapMirror. They are the @Management@ and
+-- @Intercluster@ endpoints.
+--
+-- /See:/ 'newFileSystemEndpoint' smart constructor.
+data FileSystemEndpoint = FileSystemEndpoint'
+  { dNSName :: Prelude.Maybe Prelude.Text,
+    -- | IP addresses of the file system endpoint.
+    ipAddresses :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSystemEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dNSName', 'fileSystemEndpoint_dNSName' - Undocumented member.
+--
+-- 'ipAddresses', 'fileSystemEndpoint_ipAddresses' - IP addresses of the file system endpoint.
+newFileSystemEndpoint ::
+  FileSystemEndpoint
+newFileSystemEndpoint =
+  FileSystemEndpoint'
+    { dNSName = Prelude.Nothing,
+      ipAddresses = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+fileSystemEndpoint_dNSName :: Lens.Lens' FileSystemEndpoint (Prelude.Maybe Prelude.Text)
+fileSystemEndpoint_dNSName = Lens.lens (\FileSystemEndpoint' {dNSName} -> dNSName) (\s@FileSystemEndpoint' {} a -> s {dNSName = a} :: FileSystemEndpoint)
+
+-- | IP addresses of the file system endpoint.
+fileSystemEndpoint_ipAddresses :: Lens.Lens' FileSystemEndpoint (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+fileSystemEndpoint_ipAddresses = Lens.lens (\FileSystemEndpoint' {ipAddresses} -> ipAddresses) (\s@FileSystemEndpoint' {} a -> s {ipAddresses = a} :: FileSystemEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FileSystemEndpoint where
+  parseJSON =
+    Data.withObject
+      "FileSystemEndpoint"
+      ( \x ->
+          FileSystemEndpoint'
+            Prelude.<$> (x Data..:? "DNSName")
+            Prelude.<*> (x Data..:? "IpAddresses")
+      )
+
+instance Prelude.Hashable FileSystemEndpoint where
+  hashWithSalt _salt FileSystemEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` dNSName
+      `Prelude.hashWithSalt` ipAddresses
+
+instance Prelude.NFData FileSystemEndpoint where
+  rnf FileSystemEndpoint' {..} =
+    Prelude.rnf dNSName
+      `Prelude.seq` Prelude.rnf ipAddresses
diff --git a/gen/Amazonka/FSx/Types/FileSystemEndpoints.hs b/gen/Amazonka/FSx/Types/FileSystemEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystemEndpoints.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.FSx.Types.FileSystemEndpoints
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystemEndpoints where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FileSystemEndpoint
+import qualified Amazonka.Prelude as Prelude
+
+-- | An Amazon FSx for NetApp ONTAP file system has the following endpoints
+-- that are used to access data or to manage the file system using the
+-- NetApp ONTAP CLI, REST API, or NetApp SnapMirror.
+--
+-- /See:/ 'newFileSystemEndpoints' smart constructor.
+data FileSystemEndpoints = FileSystemEndpoints'
+  { -- | An endpoint for managing your file system by setting up NetApp
+    -- SnapMirror with other ONTAP systems.
+    intercluster :: Prelude.Maybe FileSystemEndpoint,
+    -- | An endpoint for managing your file system using the NetApp ONTAP CLI and
+    -- NetApp ONTAP API.
+    management :: Prelude.Maybe FileSystemEndpoint
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSystemEndpoints' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'intercluster', 'fileSystemEndpoints_intercluster' - An endpoint for managing your file system by setting up NetApp
+-- SnapMirror with other ONTAP systems.
+--
+-- 'management', 'fileSystemEndpoints_management' - An endpoint for managing your file system using the NetApp ONTAP CLI and
+-- NetApp ONTAP API.
+newFileSystemEndpoints ::
+  FileSystemEndpoints
+newFileSystemEndpoints =
+  FileSystemEndpoints'
+    { intercluster =
+        Prelude.Nothing,
+      management = Prelude.Nothing
+    }
+
+-- | An endpoint for managing your file system by setting up NetApp
+-- SnapMirror with other ONTAP systems.
+fileSystemEndpoints_intercluster :: Lens.Lens' FileSystemEndpoints (Prelude.Maybe FileSystemEndpoint)
+fileSystemEndpoints_intercluster = Lens.lens (\FileSystemEndpoints' {intercluster} -> intercluster) (\s@FileSystemEndpoints' {} a -> s {intercluster = a} :: FileSystemEndpoints)
+
+-- | An endpoint for managing your file system using the NetApp ONTAP CLI and
+-- NetApp ONTAP API.
+fileSystemEndpoints_management :: Lens.Lens' FileSystemEndpoints (Prelude.Maybe FileSystemEndpoint)
+fileSystemEndpoints_management = Lens.lens (\FileSystemEndpoints' {management} -> management) (\s@FileSystemEndpoints' {} a -> s {management = a} :: FileSystemEndpoints)
+
+instance Data.FromJSON FileSystemEndpoints where
+  parseJSON =
+    Data.withObject
+      "FileSystemEndpoints"
+      ( \x ->
+          FileSystemEndpoints'
+            Prelude.<$> (x Data..:? "Intercluster")
+            Prelude.<*> (x Data..:? "Management")
+      )
+
+instance Prelude.Hashable FileSystemEndpoints where
+  hashWithSalt _salt FileSystemEndpoints' {..} =
+    _salt
+      `Prelude.hashWithSalt` intercluster
+      `Prelude.hashWithSalt` management
+
+instance Prelude.NFData FileSystemEndpoints where
+  rnf FileSystemEndpoints' {..} =
+    Prelude.rnf intercluster
+      `Prelude.seq` Prelude.rnf management
diff --git a/gen/Amazonka/FSx/Types/FileSystemFailureDetails.hs b/gen/Amazonka/FSx/Types/FileSystemFailureDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystemFailureDetails.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.FSx.Types.FileSystemFailureDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystemFailureDetails where
+
+import qualified 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 providing details of any failures that occurred.
+--
+-- /See:/ 'newFileSystemFailureDetails' smart constructor.
+data FileSystemFailureDetails = FileSystemFailureDetails'
+  { -- | A message describing any failures that occurred.
+    message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSystemFailureDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'fileSystemFailureDetails_message' - A message describing any failures that occurred.
+newFileSystemFailureDetails ::
+  FileSystemFailureDetails
+newFileSystemFailureDetails =
+  FileSystemFailureDetails'
+    { message =
+        Prelude.Nothing
+    }
+
+-- | A message describing any failures that occurred.
+fileSystemFailureDetails_message :: Lens.Lens' FileSystemFailureDetails (Prelude.Maybe Prelude.Text)
+fileSystemFailureDetails_message = Lens.lens (\FileSystemFailureDetails' {message} -> message) (\s@FileSystemFailureDetails' {} a -> s {message = a} :: FileSystemFailureDetails)
+
+instance Data.FromJSON FileSystemFailureDetails where
+  parseJSON =
+    Data.withObject
+      "FileSystemFailureDetails"
+      ( \x ->
+          FileSystemFailureDetails'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance Prelude.Hashable FileSystemFailureDetails where
+  hashWithSalt _salt FileSystemFailureDetails' {..} =
+    _salt `Prelude.hashWithSalt` message
+
+instance Prelude.NFData FileSystemFailureDetails where
+  rnf FileSystemFailureDetails' {..} =
+    Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/FileSystemLifecycle.hs b/gen/Amazonka/FSx/Types/FileSystemLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystemLifecycle.hs
@@ -0,0 +1,97 @@
+{-# 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.FSx.Types.FileSystemLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystemLifecycle
+  ( FileSystemLifecycle
+      ( ..,
+        FileSystemLifecycle_AVAILABLE,
+        FileSystemLifecycle_CREATING,
+        FileSystemLifecycle_DELETING,
+        FileSystemLifecycle_FAILED,
+        FileSystemLifecycle_MISCONFIGURED,
+        FileSystemLifecycle_MISCONFIGURED_UNAVAILABLE,
+        FileSystemLifecycle_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The lifecycle status of the file system.
+newtype FileSystemLifecycle = FileSystemLifecycle'
+  { fromFileSystemLifecycle ::
+      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 FileSystemLifecycle_AVAILABLE :: FileSystemLifecycle
+pattern FileSystemLifecycle_AVAILABLE = FileSystemLifecycle' "AVAILABLE"
+
+pattern FileSystemLifecycle_CREATING :: FileSystemLifecycle
+pattern FileSystemLifecycle_CREATING = FileSystemLifecycle' "CREATING"
+
+pattern FileSystemLifecycle_DELETING :: FileSystemLifecycle
+pattern FileSystemLifecycle_DELETING = FileSystemLifecycle' "DELETING"
+
+pattern FileSystemLifecycle_FAILED :: FileSystemLifecycle
+pattern FileSystemLifecycle_FAILED = FileSystemLifecycle' "FAILED"
+
+pattern FileSystemLifecycle_MISCONFIGURED :: FileSystemLifecycle
+pattern FileSystemLifecycle_MISCONFIGURED = FileSystemLifecycle' "MISCONFIGURED"
+
+pattern FileSystemLifecycle_MISCONFIGURED_UNAVAILABLE :: FileSystemLifecycle
+pattern FileSystemLifecycle_MISCONFIGURED_UNAVAILABLE = FileSystemLifecycle' "MISCONFIGURED_UNAVAILABLE"
+
+pattern FileSystemLifecycle_UPDATING :: FileSystemLifecycle
+pattern FileSystemLifecycle_UPDATING = FileSystemLifecycle' "UPDATING"
+
+{-# COMPLETE
+  FileSystemLifecycle_AVAILABLE,
+  FileSystemLifecycle_CREATING,
+  FileSystemLifecycle_DELETING,
+  FileSystemLifecycle_FAILED,
+  FileSystemLifecycle_MISCONFIGURED,
+  FileSystemLifecycle_MISCONFIGURED_UNAVAILABLE,
+  FileSystemLifecycle_UPDATING,
+  FileSystemLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FileSystemMaintenanceOperation.hs b/gen/Amazonka/FSx/Types/FileSystemMaintenanceOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystemMaintenanceOperation.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.FileSystemMaintenanceOperation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystemMaintenanceOperation
+  ( FileSystemMaintenanceOperation
+      ( ..,
+        FileSystemMaintenanceOperation_BACKING_UP,
+        FileSystemMaintenanceOperation_PATCHING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An enumeration specifying the currently ongoing maintenance operation.
+newtype FileSystemMaintenanceOperation = FileSystemMaintenanceOperation'
+  { fromFileSystemMaintenanceOperation ::
+      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 FileSystemMaintenanceOperation_BACKING_UP :: FileSystemMaintenanceOperation
+pattern FileSystemMaintenanceOperation_BACKING_UP = FileSystemMaintenanceOperation' "BACKING_UP"
+
+pattern FileSystemMaintenanceOperation_PATCHING :: FileSystemMaintenanceOperation
+pattern FileSystemMaintenanceOperation_PATCHING = FileSystemMaintenanceOperation' "PATCHING"
+
+{-# COMPLETE
+  FileSystemMaintenanceOperation_BACKING_UP,
+  FileSystemMaintenanceOperation_PATCHING,
+  FileSystemMaintenanceOperation'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FileSystemType.hs b/gen/Amazonka/FSx/Types/FileSystemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FileSystemType.hs
@@ -0,0 +1,82 @@
+{-# 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.FSx.Types.FileSystemType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FileSystemType
+  ( FileSystemType
+      ( ..,
+        FileSystemType_LUSTRE,
+        FileSystemType_ONTAP,
+        FileSystemType_OPENZFS,
+        FileSystemType_WINDOWS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type of file system.
+newtype FileSystemType = FileSystemType'
+  { fromFileSystemType ::
+      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 FileSystemType_LUSTRE :: FileSystemType
+pattern FileSystemType_LUSTRE = FileSystemType' "LUSTRE"
+
+pattern FileSystemType_ONTAP :: FileSystemType
+pattern FileSystemType_ONTAP = FileSystemType' "ONTAP"
+
+pattern FileSystemType_OPENZFS :: FileSystemType
+pattern FileSystemType_OPENZFS = FileSystemType' "OPENZFS"
+
+pattern FileSystemType_WINDOWS :: FileSystemType
+pattern FileSystemType_WINDOWS = FileSystemType' "WINDOWS"
+
+{-# COMPLETE
+  FileSystemType_LUSTRE,
+  FileSystemType_ONTAP,
+  FileSystemType_OPENZFS,
+  FileSystemType_WINDOWS,
+  FileSystemType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/Filter.hs b/gen/Amazonka/FSx/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Filter.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.FSx.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.FSx.Types.Filter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FilterName
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter used to restrict the results of describe calls. You can use
+-- multiple filters to return results that meet all applied filter
+-- requirements.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The name for this filter.
+    name :: Prelude.Maybe FilterName,
+    -- | The values of the filter. These are all the values for any of the
+    -- applied filters.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'filter_name' - The name for this filter.
+--
+-- 'values', 'filter_values' - The values of the filter. These are all the values for any of the
+-- applied filters.
+newFilter ::
+  Filter
+newFilter =
+  Filter'
+    { name = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The name for this filter.
+filter_name :: Lens.Lens' Filter (Prelude.Maybe FilterName)
+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)
+
+-- | The values of the filter. These are all the values for any of the
+-- applied filters.
+filter_values :: Lens.Lens' Filter (Prelude.Maybe [Prelude.Text])
+filter_values = Lens.lens (\Filter' {values} -> values) (\s@Filter' {} a -> s {values = a} :: Filter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/FilterName.hs b/gen/Amazonka/FSx/Types/FilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FilterName.hs
@@ -0,0 +1,97 @@
+{-# 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.FSx.Types.FilterName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FilterName
+  ( FilterName
+      ( ..,
+        FilterName_Backup_type,
+        FilterName_Data_repository_type,
+        FilterName_File_cache_id,
+        FilterName_File_cache_type,
+        FilterName_File_system_id,
+        FilterName_File_system_type,
+        FilterName_Volume_id
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The name for a filter.
+newtype FilterName = FilterName'
+  { fromFilterName ::
+      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 FilterName_Backup_type :: FilterName
+pattern FilterName_Backup_type = FilterName' "backup-type"
+
+pattern FilterName_Data_repository_type :: FilterName
+pattern FilterName_Data_repository_type = FilterName' "data-repository-type"
+
+pattern FilterName_File_cache_id :: FilterName
+pattern FilterName_File_cache_id = FilterName' "file-cache-id"
+
+pattern FilterName_File_cache_type :: FilterName
+pattern FilterName_File_cache_type = FilterName' "file-cache-type"
+
+pattern FilterName_File_system_id :: FilterName
+pattern FilterName_File_system_id = FilterName' "file-system-id"
+
+pattern FilterName_File_system_type :: FilterName
+pattern FilterName_File_system_type = FilterName' "file-system-type"
+
+pattern FilterName_Volume_id :: FilterName
+pattern FilterName_Volume_id = FilterName' "volume-id"
+
+{-# COMPLETE
+  FilterName_Backup_type,
+  FilterName_Data_repository_type,
+  FilterName_File_cache_id,
+  FilterName_File_cache_type,
+  FilterName_File_system_id,
+  FilterName_File_system_type,
+  FilterName_Volume_id,
+  FilterName'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/FlexCacheEndpointType.hs b/gen/Amazonka/FSx/Types/FlexCacheEndpointType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/FlexCacheEndpointType.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.FSx.Types.FlexCacheEndpointType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.FlexCacheEndpointType
+  ( FlexCacheEndpointType
+      ( ..,
+        FlexCacheEndpointType_CACHE,
+        FlexCacheEndpointType_NONE,
+        FlexCacheEndpointType_ORIGIN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FlexCacheEndpointType = FlexCacheEndpointType'
+  { fromFlexCacheEndpointType ::
+      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 FlexCacheEndpointType_CACHE :: FlexCacheEndpointType
+pattern FlexCacheEndpointType_CACHE = FlexCacheEndpointType' "CACHE"
+
+pattern FlexCacheEndpointType_NONE :: FlexCacheEndpointType
+pattern FlexCacheEndpointType_NONE = FlexCacheEndpointType' "NONE"
+
+pattern FlexCacheEndpointType_ORIGIN :: FlexCacheEndpointType
+pattern FlexCacheEndpointType_ORIGIN = FlexCacheEndpointType' "ORIGIN"
+
+{-# COMPLETE
+  FlexCacheEndpointType_CACHE,
+  FlexCacheEndpointType_NONE,
+  FlexCacheEndpointType_ORIGIN,
+  FlexCacheEndpointType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/InputOntapVolumeType.hs b/gen/Amazonka/FSx/Types/InputOntapVolumeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/InputOntapVolumeType.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.FSx.Types.InputOntapVolumeType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.InputOntapVolumeType
+  ( InputOntapVolumeType
+      ( ..,
+        InputOntapVolumeType_DP,
+        InputOntapVolumeType_RW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InputOntapVolumeType = InputOntapVolumeType'
+  { fromInputOntapVolumeType ::
+      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 InputOntapVolumeType_DP :: InputOntapVolumeType
+pattern InputOntapVolumeType_DP = InputOntapVolumeType' "DP"
+
+pattern InputOntapVolumeType_RW :: InputOntapVolumeType
+pattern InputOntapVolumeType_RW = InputOntapVolumeType' "RW"
+
+{-# COMPLETE
+  InputOntapVolumeType_DP,
+  InputOntapVolumeType_RW,
+  InputOntapVolumeType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/LifecycleTransitionReason.hs b/gen/Amazonka/FSx/Types/LifecycleTransitionReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LifecycleTransitionReason.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.FSx.Types.LifecycleTransitionReason
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LifecycleTransitionReason where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes why a resource lifecycle state changed.
+--
+-- /See:/ 'newLifecycleTransitionReason' smart constructor.
+data LifecycleTransitionReason = LifecycleTransitionReason'
+  { message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LifecycleTransitionReason' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lifecycleTransitionReason_message' - Undocumented member.
+newLifecycleTransitionReason ::
+  LifecycleTransitionReason
+newLifecycleTransitionReason =
+  LifecycleTransitionReason'
+    { message =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lifecycleTransitionReason_message :: Lens.Lens' LifecycleTransitionReason (Prelude.Maybe Prelude.Text)
+lifecycleTransitionReason_message = Lens.lens (\LifecycleTransitionReason' {message} -> message) (\s@LifecycleTransitionReason' {} a -> s {message = a} :: LifecycleTransitionReason)
+
+instance Data.FromJSON LifecycleTransitionReason where
+  parseJSON =
+    Data.withObject
+      "LifecycleTransitionReason"
+      ( \x ->
+          LifecycleTransitionReason'
+            Prelude.<$> (x Data..:? "Message")
+      )
+
+instance Prelude.Hashable LifecycleTransitionReason where
+  hashWithSalt _salt LifecycleTransitionReason' {..} =
+    _salt `Prelude.hashWithSalt` message
+
+instance Prelude.NFData LifecycleTransitionReason where
+  rnf LifecycleTransitionReason' {..} =
+    Prelude.rnf message
diff --git a/gen/Amazonka/FSx/Types/LustreAccessAuditLogLevel.hs b/gen/Amazonka/FSx/Types/LustreAccessAuditLogLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LustreAccessAuditLogLevel.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.FSx.Types.LustreAccessAuditLogLevel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LustreAccessAuditLogLevel
+  ( LustreAccessAuditLogLevel
+      ( ..,
+        LustreAccessAuditLogLevel_DISABLED,
+        LustreAccessAuditLogLevel_ERROR_ONLY,
+        LustreAccessAuditLogLevel_WARN_ERROR,
+        LustreAccessAuditLogLevel_WARN_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LustreAccessAuditLogLevel = LustreAccessAuditLogLevel'
+  { fromLustreAccessAuditLogLevel ::
+      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 LustreAccessAuditLogLevel_DISABLED :: LustreAccessAuditLogLevel
+pattern LustreAccessAuditLogLevel_DISABLED = LustreAccessAuditLogLevel' "DISABLED"
+
+pattern LustreAccessAuditLogLevel_ERROR_ONLY :: LustreAccessAuditLogLevel
+pattern LustreAccessAuditLogLevel_ERROR_ONLY = LustreAccessAuditLogLevel' "ERROR_ONLY"
+
+pattern LustreAccessAuditLogLevel_WARN_ERROR :: LustreAccessAuditLogLevel
+pattern LustreAccessAuditLogLevel_WARN_ERROR = LustreAccessAuditLogLevel' "WARN_ERROR"
+
+pattern LustreAccessAuditLogLevel_WARN_ONLY :: LustreAccessAuditLogLevel
+pattern LustreAccessAuditLogLevel_WARN_ONLY = LustreAccessAuditLogLevel' "WARN_ONLY"
+
+{-# COMPLETE
+  LustreAccessAuditLogLevel_DISABLED,
+  LustreAccessAuditLogLevel_ERROR_ONLY,
+  LustreAccessAuditLogLevel_WARN_ERROR,
+  LustreAccessAuditLogLevel_WARN_ONLY,
+  LustreAccessAuditLogLevel'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/LustreDeploymentType.hs b/gen/Amazonka/FSx/Types/LustreDeploymentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LustreDeploymentType.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.FSx.Types.LustreDeploymentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LustreDeploymentType
+  ( LustreDeploymentType
+      ( ..,
+        LustreDeploymentType_PERSISTENT_1,
+        LustreDeploymentType_PERSISTENT_2,
+        LustreDeploymentType_SCRATCH_1,
+        LustreDeploymentType_SCRATCH_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LustreDeploymentType = LustreDeploymentType'
+  { fromLustreDeploymentType ::
+      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 LustreDeploymentType_PERSISTENT_1 :: LustreDeploymentType
+pattern LustreDeploymentType_PERSISTENT_1 = LustreDeploymentType' "PERSISTENT_1"
+
+pattern LustreDeploymentType_PERSISTENT_2 :: LustreDeploymentType
+pattern LustreDeploymentType_PERSISTENT_2 = LustreDeploymentType' "PERSISTENT_2"
+
+pattern LustreDeploymentType_SCRATCH_1 :: LustreDeploymentType
+pattern LustreDeploymentType_SCRATCH_1 = LustreDeploymentType' "SCRATCH_1"
+
+pattern LustreDeploymentType_SCRATCH_2 :: LustreDeploymentType
+pattern LustreDeploymentType_SCRATCH_2 = LustreDeploymentType' "SCRATCH_2"
+
+{-# COMPLETE
+  LustreDeploymentType_PERSISTENT_1,
+  LustreDeploymentType_PERSISTENT_2,
+  LustreDeploymentType_SCRATCH_1,
+  LustreDeploymentType_SCRATCH_2,
+  LustreDeploymentType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/LustreFileSystemConfiguration.hs b/gen/Amazonka/FSx/Types/LustreFileSystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LustreFileSystemConfiguration.hs
@@ -0,0 +1,390 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.LustreFileSystemConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LustreFileSystemConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DataCompressionType
+import Amazonka.FSx.Types.DataRepositoryConfiguration
+import Amazonka.FSx.Types.DriveCacheType
+import Amazonka.FSx.Types.LustreDeploymentType
+import Amazonka.FSx.Types.LustreLogConfiguration
+import Amazonka.FSx.Types.LustreRootSquashConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the Amazon FSx for Lustre file system.
+--
+-- /See:/ 'newLustreFileSystemConfiguration' smart constructor.
+data LustreFileSystemConfiguration = LustreFileSystemConfiguration'
+  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | A boolean flag indicating whether tags on the file system are copied to
+    -- backups. If it\'s set to true, all tags on the file system are copied to
+    -- all automatic backups and any user-initiated backups where the user
+    -- doesn\'t specify any tags. If this value is true, and you specify one or
+    -- more tags, only the specified tags are copied to backups. If you specify
+    -- one or more tags when creating a user-initiated backup, no tags are
+    -- copied from the file system, regardless of this value. (Default = false)
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | The data compression configuration for the file system.
+    -- @DataCompressionType@ can have the following values:
+    --
+    -- -   @NONE@ - Data compression is turned off for the file system.
+    --
+    -- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>.
+    dataCompressionType :: Prelude.Maybe DataCompressionType,
+    dataRepositoryConfiguration :: Prelude.Maybe DataRepositoryConfiguration,
+    -- | The deployment type of the FSx for Lustre file system. /Scratch
+    -- deployment type/ is designed for temporary storage and shorter-term
+    -- processing of data.
+    --
+    -- @SCRATCH_1@ and @SCRATCH_2@ deployment types are best suited for when
+    -- you need temporary storage and shorter-term processing of data. The
+    -- @SCRATCH_2@ deployment type provides in-transit encryption of data and
+    -- higher burst throughput capacity than @SCRATCH_1@.
+    --
+    -- The @PERSISTENT_1@ and @PERSISTENT_2@ deployment type is used for
+    -- longer-term storage and workloads and encryption of data in transit.
+    -- @PERSISTENT_2@ is built on Lustre v2.12 and offers higher
+    -- @PerUnitStorageThroughput@ (up to 1000 MB\/s\/TiB) along with a lower
+    -- minimum storage capacity requirement (600 GiB). To learn more about FSx
+    -- for Lustre deployment types, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/lustre-deployment-types.html FSx for Lustre deployment options>.
+    --
+    -- The default is @SCRATCH_1@.
+    deploymentType :: Prelude.Maybe LustreDeploymentType,
+    -- | The type of drive cache used by @PERSISTENT_1@ file systems that are
+    -- provisioned with HDD storage devices. This parameter is required when
+    -- @StorageType@ is HDD. When set to @READ@ the file system has an SSD
+    -- storage cache that is sized to 20% of the file system\'s storage
+    -- capacity. This improves the performance for frequently accessed files by
+    -- caching up to 20% of the total storage capacity.
+    --
+    -- This parameter is required when @StorageType@ is set to HDD.
+    driveCacheType :: Prelude.Maybe DriveCacheType,
+    -- | The Lustre logging configuration. Lustre logging writes the enabled log
+    -- events for your file system to Amazon CloudWatch Logs.
+    logConfiguration :: Prelude.Maybe LustreLogConfiguration,
+    -- | You use the @MountName@ value when mounting the file system.
+    --
+    -- For the @SCRATCH_1@ deployment type, this value is always \"@fsx@\". For
+    -- @SCRATCH_2@, @PERSISTENT_1@, and @PERSISTENT_2@ deployment types, this
+    -- value is a string that is unique within an Amazon Web Services Region.
+    mountName :: Prelude.Maybe Prelude.Text,
+    -- | Per unit storage throughput represents the megabytes per second of read
+    -- or write throughput per 1 tebibyte of storage provisioned. File system
+    -- throughput capacity is equal to Storage capacity (TiB) *
+    -- PerUnitStorageThroughput (MB\/s\/TiB). This option is only valid for
+    -- @PERSISTENT_1@ and @PERSISTENT_2@ deployment types.
+    --
+    -- Valid values:
+    --
+    -- -   For @PERSISTENT_1@ SSD storage: 50, 100, 200.
+    --
+    -- -   For @PERSISTENT_1@ HDD storage: 12, 40.
+    --
+    -- -   For @PERSISTENT_2@ SSD storage: 125, 250, 500, 1000.
+    perUnitStorageThroughput :: Prelude.Maybe Prelude.Natural,
+    -- | The Lustre root squash configuration for an Amazon FSx for Lustre file
+    -- system. When enabled, root squash restricts root-level access from
+    -- clients that try to access your file system as a root user.
+    rootSquashConfiguration :: Prelude.Maybe LustreRootSquashConfiguration,
+    -- | The preferred start time to perform weekly maintenance, formatted
+    -- d:HH:MM in the UTC time zone. Here, @d@ is the weekday number, from 1
+    -- through 7, beginning with Monday and ending with Sunday.
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LustreFileSystemConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automaticBackupRetentionDays', 'lustreFileSystemConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'copyTagsToBackups', 'lustreFileSystemConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags on the file system are copied to
+-- backups. If it\'s set to true, all tags on the file system are copied to
+-- all automatic backups and any user-initiated backups where the user
+-- doesn\'t specify any tags. If this value is true, and you specify one or
+-- more tags, only the specified tags are copied to backups. If you specify
+-- one or more tags when creating a user-initiated backup, no tags are
+-- copied from the file system, regardless of this value. (Default = false)
+--
+-- 'dailyAutomaticBackupStartTime', 'lustreFileSystemConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'dataCompressionType', 'lustreFileSystemConfiguration_dataCompressionType' - The data compression configuration for the file system.
+-- @DataCompressionType@ can have the following values:
+--
+-- -   @NONE@ - Data compression is turned off for the file system.
+--
+-- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>.
+--
+-- 'dataRepositoryConfiguration', 'lustreFileSystemConfiguration_dataRepositoryConfiguration' - Undocumented member.
+--
+-- 'deploymentType', 'lustreFileSystemConfiguration_deploymentType' - The deployment type of the FSx for Lustre file system. /Scratch
+-- deployment type/ is designed for temporary storage and shorter-term
+-- processing of data.
+--
+-- @SCRATCH_1@ and @SCRATCH_2@ deployment types are best suited for when
+-- you need temporary storage and shorter-term processing of data. The
+-- @SCRATCH_2@ deployment type provides in-transit encryption of data and
+-- higher burst throughput capacity than @SCRATCH_1@.
+--
+-- The @PERSISTENT_1@ and @PERSISTENT_2@ deployment type is used for
+-- longer-term storage and workloads and encryption of data in transit.
+-- @PERSISTENT_2@ is built on Lustre v2.12 and offers higher
+-- @PerUnitStorageThroughput@ (up to 1000 MB\/s\/TiB) along with a lower
+-- minimum storage capacity requirement (600 GiB). To learn more about FSx
+-- for Lustre deployment types, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/lustre-deployment-types.html FSx for Lustre deployment options>.
+--
+-- The default is @SCRATCH_1@.
+--
+-- 'driveCacheType', 'lustreFileSystemConfiguration_driveCacheType' - The type of drive cache used by @PERSISTENT_1@ file systems that are
+-- provisioned with HDD storage devices. This parameter is required when
+-- @StorageType@ is HDD. When set to @READ@ the file system has an SSD
+-- storage cache that is sized to 20% of the file system\'s storage
+-- capacity. This improves the performance for frequently accessed files by
+-- caching up to 20% of the total storage capacity.
+--
+-- This parameter is required when @StorageType@ is set to HDD.
+--
+-- 'logConfiguration', 'lustreFileSystemConfiguration_logConfiguration' - The Lustre logging configuration. Lustre logging writes the enabled log
+-- events for your file system to Amazon CloudWatch Logs.
+--
+-- 'mountName', 'lustreFileSystemConfiguration_mountName' - You use the @MountName@ value when mounting the file system.
+--
+-- For the @SCRATCH_1@ deployment type, this value is always \"@fsx@\". For
+-- @SCRATCH_2@, @PERSISTENT_1@, and @PERSISTENT_2@ deployment types, this
+-- value is a string that is unique within an Amazon Web Services Region.
+--
+-- 'perUnitStorageThroughput', 'lustreFileSystemConfiguration_perUnitStorageThroughput' - Per unit storage throughput represents the megabytes per second of read
+-- or write throughput per 1 tebibyte of storage provisioned. File system
+-- throughput capacity is equal to Storage capacity (TiB) *
+-- PerUnitStorageThroughput (MB\/s\/TiB). This option is only valid for
+-- @PERSISTENT_1@ and @PERSISTENT_2@ deployment types.
+--
+-- Valid values:
+--
+-- -   For @PERSISTENT_1@ SSD storage: 50, 100, 200.
+--
+-- -   For @PERSISTENT_1@ HDD storage: 12, 40.
+--
+-- -   For @PERSISTENT_2@ SSD storage: 125, 250, 500, 1000.
+--
+-- 'rootSquashConfiguration', 'lustreFileSystemConfiguration_rootSquashConfiguration' - The Lustre root squash configuration for an Amazon FSx for Lustre file
+-- system. When enabled, root squash restricts root-level access from
+-- clients that try to access your file system as a root user.
+--
+-- 'weeklyMaintenanceStartTime', 'lustreFileSystemConfiguration_weeklyMaintenanceStartTime' - The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone. Here, @d@ is the weekday number, from 1
+-- through 7, beginning with Monday and ending with Sunday.
+newLustreFileSystemConfiguration ::
+  LustreFileSystemConfiguration
+newLustreFileSystemConfiguration =
+  LustreFileSystemConfiguration'
+    { automaticBackupRetentionDays =
+        Prelude.Nothing,
+      copyTagsToBackups = Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      dataCompressionType = Prelude.Nothing,
+      dataRepositoryConfiguration =
+        Prelude.Nothing,
+      deploymentType = Prelude.Nothing,
+      driveCacheType = Prelude.Nothing,
+      logConfiguration = Prelude.Nothing,
+      mountName = Prelude.Nothing,
+      perUnitStorageThroughput = Prelude.Nothing,
+      rootSquashConfiguration = Prelude.Nothing,
+      weeklyMaintenanceStartTime = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+lustreFileSystemConfiguration_automaticBackupRetentionDays :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+lustreFileSystemConfiguration_automaticBackupRetentionDays = Lens.lens (\LustreFileSystemConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@LustreFileSystemConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: LustreFileSystemConfiguration)
+
+-- | A boolean flag indicating whether tags on the file system are copied to
+-- backups. If it\'s set to true, all tags on the file system are copied to
+-- all automatic backups and any user-initiated backups where the user
+-- doesn\'t specify any tags. If this value is true, and you specify one or
+-- more tags, only the specified tags are copied to backups. If you specify
+-- one or more tags when creating a user-initiated backup, no tags are
+-- copied from the file system, regardless of this value. (Default = false)
+lustreFileSystemConfiguration_copyTagsToBackups :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe Prelude.Bool)
+lustreFileSystemConfiguration_copyTagsToBackups = Lens.lens (\LustreFileSystemConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@LustreFileSystemConfiguration' {} a -> s {copyTagsToBackups = a} :: LustreFileSystemConfiguration)
+
+-- | Undocumented member.
+lustreFileSystemConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+lustreFileSystemConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\LustreFileSystemConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@LustreFileSystemConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: LustreFileSystemConfiguration)
+
+-- | The data compression configuration for the file system.
+-- @DataCompressionType@ can have the following values:
+--
+-- -   @NONE@ - Data compression is turned off for the file system.
+--
+-- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>.
+lustreFileSystemConfiguration_dataCompressionType :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe DataCompressionType)
+lustreFileSystemConfiguration_dataCompressionType = Lens.lens (\LustreFileSystemConfiguration' {dataCompressionType} -> dataCompressionType) (\s@LustreFileSystemConfiguration' {} a -> s {dataCompressionType = a} :: LustreFileSystemConfiguration)
+
+-- | Undocumented member.
+lustreFileSystemConfiguration_dataRepositoryConfiguration :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe DataRepositoryConfiguration)
+lustreFileSystemConfiguration_dataRepositoryConfiguration = Lens.lens (\LustreFileSystemConfiguration' {dataRepositoryConfiguration} -> dataRepositoryConfiguration) (\s@LustreFileSystemConfiguration' {} a -> s {dataRepositoryConfiguration = a} :: LustreFileSystemConfiguration)
+
+-- | The deployment type of the FSx for Lustre file system. /Scratch
+-- deployment type/ is designed for temporary storage and shorter-term
+-- processing of data.
+--
+-- @SCRATCH_1@ and @SCRATCH_2@ deployment types are best suited for when
+-- you need temporary storage and shorter-term processing of data. The
+-- @SCRATCH_2@ deployment type provides in-transit encryption of data and
+-- higher burst throughput capacity than @SCRATCH_1@.
+--
+-- The @PERSISTENT_1@ and @PERSISTENT_2@ deployment type is used for
+-- longer-term storage and workloads and encryption of data in transit.
+-- @PERSISTENT_2@ is built on Lustre v2.12 and offers higher
+-- @PerUnitStorageThroughput@ (up to 1000 MB\/s\/TiB) along with a lower
+-- minimum storage capacity requirement (600 GiB). To learn more about FSx
+-- for Lustre deployment types, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/lustre-deployment-types.html FSx for Lustre deployment options>.
+--
+-- The default is @SCRATCH_1@.
+lustreFileSystemConfiguration_deploymentType :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe LustreDeploymentType)
+lustreFileSystemConfiguration_deploymentType = Lens.lens (\LustreFileSystemConfiguration' {deploymentType} -> deploymentType) (\s@LustreFileSystemConfiguration' {} a -> s {deploymentType = a} :: LustreFileSystemConfiguration)
+
+-- | The type of drive cache used by @PERSISTENT_1@ file systems that are
+-- provisioned with HDD storage devices. This parameter is required when
+-- @StorageType@ is HDD. When set to @READ@ the file system has an SSD
+-- storage cache that is sized to 20% of the file system\'s storage
+-- capacity. This improves the performance for frequently accessed files by
+-- caching up to 20% of the total storage capacity.
+--
+-- This parameter is required when @StorageType@ is set to HDD.
+lustreFileSystemConfiguration_driveCacheType :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe DriveCacheType)
+lustreFileSystemConfiguration_driveCacheType = Lens.lens (\LustreFileSystemConfiguration' {driveCacheType} -> driveCacheType) (\s@LustreFileSystemConfiguration' {} a -> s {driveCacheType = a} :: LustreFileSystemConfiguration)
+
+-- | The Lustre logging configuration. Lustre logging writes the enabled log
+-- events for your file system to Amazon CloudWatch Logs.
+lustreFileSystemConfiguration_logConfiguration :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe LustreLogConfiguration)
+lustreFileSystemConfiguration_logConfiguration = Lens.lens (\LustreFileSystemConfiguration' {logConfiguration} -> logConfiguration) (\s@LustreFileSystemConfiguration' {} a -> s {logConfiguration = a} :: LustreFileSystemConfiguration)
+
+-- | You use the @MountName@ value when mounting the file system.
+--
+-- For the @SCRATCH_1@ deployment type, this value is always \"@fsx@\". For
+-- @SCRATCH_2@, @PERSISTENT_1@, and @PERSISTENT_2@ deployment types, this
+-- value is a string that is unique within an Amazon Web Services Region.
+lustreFileSystemConfiguration_mountName :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+lustreFileSystemConfiguration_mountName = Lens.lens (\LustreFileSystemConfiguration' {mountName} -> mountName) (\s@LustreFileSystemConfiguration' {} a -> s {mountName = a} :: LustreFileSystemConfiguration)
+
+-- | Per unit storage throughput represents the megabytes per second of read
+-- or write throughput per 1 tebibyte of storage provisioned. File system
+-- throughput capacity is equal to Storage capacity (TiB) *
+-- PerUnitStorageThroughput (MB\/s\/TiB). This option is only valid for
+-- @PERSISTENT_1@ and @PERSISTENT_2@ deployment types.
+--
+-- Valid values:
+--
+-- -   For @PERSISTENT_1@ SSD storage: 50, 100, 200.
+--
+-- -   For @PERSISTENT_1@ HDD storage: 12, 40.
+--
+-- -   For @PERSISTENT_2@ SSD storage: 125, 250, 500, 1000.
+lustreFileSystemConfiguration_perUnitStorageThroughput :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+lustreFileSystemConfiguration_perUnitStorageThroughput = Lens.lens (\LustreFileSystemConfiguration' {perUnitStorageThroughput} -> perUnitStorageThroughput) (\s@LustreFileSystemConfiguration' {} a -> s {perUnitStorageThroughput = a} :: LustreFileSystemConfiguration)
+
+-- | The Lustre root squash configuration for an Amazon FSx for Lustre file
+-- system. When enabled, root squash restricts root-level access from
+-- clients that try to access your file system as a root user.
+lustreFileSystemConfiguration_rootSquashConfiguration :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe LustreRootSquashConfiguration)
+lustreFileSystemConfiguration_rootSquashConfiguration = Lens.lens (\LustreFileSystemConfiguration' {rootSquashConfiguration} -> rootSquashConfiguration) (\s@LustreFileSystemConfiguration' {} a -> s {rootSquashConfiguration = a} :: LustreFileSystemConfiguration)
+
+-- | The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone. Here, @d@ is the weekday number, from 1
+-- through 7, beginning with Monday and ending with Sunday.
+lustreFileSystemConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' LustreFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+lustreFileSystemConfiguration_weeklyMaintenanceStartTime = Lens.lens (\LustreFileSystemConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@LustreFileSystemConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: LustreFileSystemConfiguration)
+
+instance Data.FromJSON LustreFileSystemConfiguration where
+  parseJSON =
+    Data.withObject
+      "LustreFileSystemConfiguration"
+      ( \x ->
+          LustreFileSystemConfiguration'
+            Prelude.<$> (x Data..:? "AutomaticBackupRetentionDays")
+            Prelude.<*> (x Data..:? "CopyTagsToBackups")
+            Prelude.<*> (x Data..:? "DailyAutomaticBackupStartTime")
+            Prelude.<*> (x Data..:? "DataCompressionType")
+            Prelude.<*> (x Data..:? "DataRepositoryConfiguration")
+            Prelude.<*> (x Data..:? "DeploymentType")
+            Prelude.<*> (x Data..:? "DriveCacheType")
+            Prelude.<*> (x Data..:? "LogConfiguration")
+            Prelude.<*> (x Data..:? "MountName")
+            Prelude.<*> (x Data..:? "PerUnitStorageThroughput")
+            Prelude.<*> (x Data..:? "RootSquashConfiguration")
+            Prelude.<*> (x Data..:? "WeeklyMaintenanceStartTime")
+      )
+
+instance
+  Prelude.Hashable
+    LustreFileSystemConfiguration
+  where
+  hashWithSalt _salt LustreFileSystemConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` automaticBackupRetentionDays
+      `Prelude.hashWithSalt` copyTagsToBackups
+      `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+      `Prelude.hashWithSalt` dataCompressionType
+      `Prelude.hashWithSalt` dataRepositoryConfiguration
+      `Prelude.hashWithSalt` deploymentType
+      `Prelude.hashWithSalt` driveCacheType
+      `Prelude.hashWithSalt` logConfiguration
+      `Prelude.hashWithSalt` mountName
+      `Prelude.hashWithSalt` perUnitStorageThroughput
+      `Prelude.hashWithSalt` rootSquashConfiguration
+      `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance Prelude.NFData LustreFileSystemConfiguration where
+  rnf LustreFileSystemConfiguration' {..} =
+    Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf dataRepositoryConfiguration
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf driveCacheType
+      `Prelude.seq` Prelude.rnf logConfiguration
+      `Prelude.seq` Prelude.rnf mountName
+      `Prelude.seq` Prelude.rnf perUnitStorageThroughput
+      `Prelude.seq` Prelude.rnf rootSquashConfiguration
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
diff --git a/gen/Amazonka/FSx/Types/LustreLogConfiguration.hs b/gen/Amazonka/FSx/Types/LustreLogConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LustreLogConfiguration.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.FSx.Types.LustreLogConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LustreLogConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.LustreAccessAuditLogLevel
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for Lustre logging used to write the enabled logging
+-- events for your Amazon FSx for Lustre file system or Amazon File Cache
+-- resource to Amazon CloudWatch Logs.
+--
+-- /See:/ 'newLustreLogConfiguration' smart constructor.
+data LustreLogConfiguration = LustreLogConfiguration'
+  { -- | The Amazon Resource Name (ARN) that specifies the destination of the
+    -- logs. The destination can be any Amazon CloudWatch Logs log group ARN.
+    -- The destination ARN must be in the same Amazon Web Services partition,
+    -- Amazon Web Services Region, and Amazon Web Services account as your
+    -- Amazon FSx file system.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | The data repository events that are logged by Amazon FSx.
+    --
+    -- -   @WARN_ONLY@ - only warning events are logged.
+    --
+    -- -   @ERROR_ONLY@ - only error events are logged.
+    --
+    -- -   @WARN_ERROR@ - both warning events and error events are logged.
+    --
+    -- -   @DISABLED@ - logging of data repository events is turned off.
+    --
+    -- Note that Amazon File Cache uses a default setting of @WARN_ERROR@,
+    -- which can\'t be changed.
+    level :: LustreAccessAuditLogLevel
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LustreLogConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lustreLogConfiguration_destination' - The Amazon Resource Name (ARN) that specifies the destination of the
+-- logs. The destination can be any Amazon CloudWatch Logs log group ARN.
+-- The destination ARN must be in the same Amazon Web Services partition,
+-- Amazon Web Services Region, and Amazon Web Services account as your
+-- Amazon FSx file system.
+--
+-- 'level', 'lustreLogConfiguration_level' - The data repository events that are logged by Amazon FSx.
+--
+-- -   @WARN_ONLY@ - only warning events are logged.
+--
+-- -   @ERROR_ONLY@ - only error events are logged.
+--
+-- -   @WARN_ERROR@ - both warning events and error events are logged.
+--
+-- -   @DISABLED@ - logging of data repository events is turned off.
+--
+-- Note that Amazon File Cache uses a default setting of @WARN_ERROR@,
+-- which can\'t be changed.
+newLustreLogConfiguration ::
+  -- | 'level'
+  LustreAccessAuditLogLevel ->
+  LustreLogConfiguration
+newLustreLogConfiguration pLevel_ =
+  LustreLogConfiguration'
+    { destination =
+        Prelude.Nothing,
+      level = pLevel_
+    }
+
+-- | The Amazon Resource Name (ARN) that specifies the destination of the
+-- logs. The destination can be any Amazon CloudWatch Logs log group ARN.
+-- The destination ARN must be in the same Amazon Web Services partition,
+-- Amazon Web Services Region, and Amazon Web Services account as your
+-- Amazon FSx file system.
+lustreLogConfiguration_destination :: Lens.Lens' LustreLogConfiguration (Prelude.Maybe Prelude.Text)
+lustreLogConfiguration_destination = Lens.lens (\LustreLogConfiguration' {destination} -> destination) (\s@LustreLogConfiguration' {} a -> s {destination = a} :: LustreLogConfiguration)
+
+-- | The data repository events that are logged by Amazon FSx.
+--
+-- -   @WARN_ONLY@ - only warning events are logged.
+--
+-- -   @ERROR_ONLY@ - only error events are logged.
+--
+-- -   @WARN_ERROR@ - both warning events and error events are logged.
+--
+-- -   @DISABLED@ - logging of data repository events is turned off.
+--
+-- Note that Amazon File Cache uses a default setting of @WARN_ERROR@,
+-- which can\'t be changed.
+lustreLogConfiguration_level :: Lens.Lens' LustreLogConfiguration LustreAccessAuditLogLevel
+lustreLogConfiguration_level = Lens.lens (\LustreLogConfiguration' {level} -> level) (\s@LustreLogConfiguration' {} a -> s {level = a} :: LustreLogConfiguration)
+
+instance Data.FromJSON LustreLogConfiguration where
+  parseJSON =
+    Data.withObject
+      "LustreLogConfiguration"
+      ( \x ->
+          LustreLogConfiguration'
+            Prelude.<$> (x Data..:? "Destination")
+            Prelude.<*> (x Data..: "Level")
+      )
+
+instance Prelude.Hashable LustreLogConfiguration where
+  hashWithSalt _salt LustreLogConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` level
+
+instance Prelude.NFData LustreLogConfiguration where
+  rnf LustreLogConfiguration' {..} =
+    Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf level
diff --git a/gen/Amazonka/FSx/Types/LustreLogCreateConfiguration.hs b/gen/Amazonka/FSx/Types/LustreLogCreateConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LustreLogCreateConfiguration.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.FSx.Types.LustreLogCreateConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LustreLogCreateConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.LustreAccessAuditLogLevel
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Lustre logging configuration used when creating or updating an
+-- Amazon FSx for Lustre file system. An Amazon File Cache is created with
+-- Lustre logging enabled by default, with a setting of @WARN_ERROR@ for
+-- the logging events. which can\'t be changed.
+--
+-- Lustre logging writes the enabled logging events for your file system or
+-- cache to Amazon CloudWatch Logs.
+--
+-- /See:/ 'newLustreLogCreateConfiguration' smart constructor.
+data LustreLogCreateConfiguration = LustreLogCreateConfiguration'
+  { -- | The Amazon Resource Name (ARN) that specifies the destination of the
+    -- logs.
+    --
+    -- The destination can be any Amazon CloudWatch Logs log group ARN, with
+    -- the following requirements:
+    --
+    -- -   The destination ARN that you provide must be in the same Amazon Web
+    --     Services partition, Amazon Web Services Region, and Amazon Web
+    --     Services account as your Amazon FSx file system.
+    --
+    -- -   The name of the Amazon CloudWatch Logs log group must begin with the
+    --     @\/aws\/fsx@ prefix.
+    --
+    -- -   If you do not provide a destination, Amazon FSx will create and use
+    --     a log stream in the CloudWatch Logs @\/aws\/fsx\/lustre@ log group
+    --     (for Amazon FSx for Lustre) or @\/aws\/fsx\/filecache@ (for Amazon
+    --     File Cache).
+    --
+    -- -   If @Destination@ is provided and the resource does not exist, the
+    --     request will fail with a @BadRequest@ error.
+    --
+    -- -   If @Level@ is set to @DISABLED@, you cannot specify a destination in
+    --     @Destination@.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | Sets which data repository events are logged by Amazon FSx.
+    --
+    -- -   @WARN_ONLY@ - only warning events are logged.
+    --
+    -- -   @ERROR_ONLY@ - only error events are logged.
+    --
+    -- -   @WARN_ERROR@ - both warning events and error events are logged.
+    --
+    -- -   @DISABLED@ - logging of data repository events is turned off.
+    level :: LustreAccessAuditLogLevel
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LustreLogCreateConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lustreLogCreateConfiguration_destination' - The Amazon Resource Name (ARN) that specifies the destination of the
+-- logs.
+--
+-- The destination can be any Amazon CloudWatch Logs log group ARN, with
+-- the following requirements:
+--
+-- -   The destination ARN that you provide must be in the same Amazon Web
+--     Services partition, Amazon Web Services Region, and Amazon Web
+--     Services account as your Amazon FSx file system.
+--
+-- -   The name of the Amazon CloudWatch Logs log group must begin with the
+--     @\/aws\/fsx@ prefix.
+--
+-- -   If you do not provide a destination, Amazon FSx will create and use
+--     a log stream in the CloudWatch Logs @\/aws\/fsx\/lustre@ log group
+--     (for Amazon FSx for Lustre) or @\/aws\/fsx\/filecache@ (for Amazon
+--     File Cache).
+--
+-- -   If @Destination@ is provided and the resource does not exist, the
+--     request will fail with a @BadRequest@ error.
+--
+-- -   If @Level@ is set to @DISABLED@, you cannot specify a destination in
+--     @Destination@.
+--
+-- 'level', 'lustreLogCreateConfiguration_level' - Sets which data repository events are logged by Amazon FSx.
+--
+-- -   @WARN_ONLY@ - only warning events are logged.
+--
+-- -   @ERROR_ONLY@ - only error events are logged.
+--
+-- -   @WARN_ERROR@ - both warning events and error events are logged.
+--
+-- -   @DISABLED@ - logging of data repository events is turned off.
+newLustreLogCreateConfiguration ::
+  -- | 'level'
+  LustreAccessAuditLogLevel ->
+  LustreLogCreateConfiguration
+newLustreLogCreateConfiguration pLevel_ =
+  LustreLogCreateConfiguration'
+    { destination =
+        Prelude.Nothing,
+      level = pLevel_
+    }
+
+-- | The Amazon Resource Name (ARN) that specifies the destination of the
+-- logs.
+--
+-- The destination can be any Amazon CloudWatch Logs log group ARN, with
+-- the following requirements:
+--
+-- -   The destination ARN that you provide must be in the same Amazon Web
+--     Services partition, Amazon Web Services Region, and Amazon Web
+--     Services account as your Amazon FSx file system.
+--
+-- -   The name of the Amazon CloudWatch Logs log group must begin with the
+--     @\/aws\/fsx@ prefix.
+--
+-- -   If you do not provide a destination, Amazon FSx will create and use
+--     a log stream in the CloudWatch Logs @\/aws\/fsx\/lustre@ log group
+--     (for Amazon FSx for Lustre) or @\/aws\/fsx\/filecache@ (for Amazon
+--     File Cache).
+--
+-- -   If @Destination@ is provided and the resource does not exist, the
+--     request will fail with a @BadRequest@ error.
+--
+-- -   If @Level@ is set to @DISABLED@, you cannot specify a destination in
+--     @Destination@.
+lustreLogCreateConfiguration_destination :: Lens.Lens' LustreLogCreateConfiguration (Prelude.Maybe Prelude.Text)
+lustreLogCreateConfiguration_destination = Lens.lens (\LustreLogCreateConfiguration' {destination} -> destination) (\s@LustreLogCreateConfiguration' {} a -> s {destination = a} :: LustreLogCreateConfiguration)
+
+-- | Sets which data repository events are logged by Amazon FSx.
+--
+-- -   @WARN_ONLY@ - only warning events are logged.
+--
+-- -   @ERROR_ONLY@ - only error events are logged.
+--
+-- -   @WARN_ERROR@ - both warning events and error events are logged.
+--
+-- -   @DISABLED@ - logging of data repository events is turned off.
+lustreLogCreateConfiguration_level :: Lens.Lens' LustreLogCreateConfiguration LustreAccessAuditLogLevel
+lustreLogCreateConfiguration_level = Lens.lens (\LustreLogCreateConfiguration' {level} -> level) (\s@LustreLogCreateConfiguration' {} a -> s {level = a} :: LustreLogCreateConfiguration)
+
+instance
+  Prelude.Hashable
+    LustreLogCreateConfiguration
+  where
+  hashWithSalt _salt LustreLogCreateConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` level
+
+instance Prelude.NFData LustreLogCreateConfiguration where
+  rnf LustreLogCreateConfiguration' {..} =
+    Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf level
+
+instance Data.ToJSON LustreLogCreateConfiguration where
+  toJSON LustreLogCreateConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Destination" Data..=) Prelude.<$> destination,
+            Prelude.Just ("Level" Data..= level)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/LustreRootSquashConfiguration.hs b/gen/Amazonka/FSx/Types/LustreRootSquashConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/LustreRootSquashConfiguration.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.FSx.Types.LustreRootSquashConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.LustreRootSquashConfiguration where
+
+import qualified 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 Lustre root squash used to restrict root-level
+-- access from clients that try to access your FSx for Lustre file system
+-- as root. Use the @RootSquash@ parameter to enable root squash. To learn
+-- more about Lustre root squash, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/root-squash.html Lustre root squash>.
+--
+-- You can also use the @NoSquashNids@ parameter to provide an array of
+-- clients who are not affected by the root squash setting. These clients
+-- will access the file system as root, with unrestricted privileges.
+--
+-- /See:/ 'newLustreRootSquashConfiguration' smart constructor.
+data LustreRootSquashConfiguration = LustreRootSquashConfiguration'
+  { -- | When root squash is enabled, you can optionally specify an array of NIDs
+    -- of clients for which root squash does not apply. A client NID is a
+    -- Lustre Network Identifier used to uniquely identify a client. You can
+    -- specify the NID as either a single address or a range of addresses:
+    --
+    -- -   A single address is described in standard Lustre NID format by
+    --     specifying the client’s IP address followed by the Lustre network ID
+    --     (for example, @10.0.1.6\@tcp@).
+    --
+    -- -   An address range is described using a dash to separate the range
+    --     (for example, @10.0.[2-10].[1-255]\@tcp@).
+    noSquashNids :: Prelude.Maybe [Prelude.Text],
+    -- | You enable root squash by setting a user ID (UID) and group ID (GID) for
+    -- the file system in the format @UID:GID@ (for example, @365534:65534@).
+    -- The UID and GID values can range from @0@ to @4294967294@:
+    --
+    -- -   A non-zero value for UID and GID enables root squash. The UID and
+    --     GID values can be different, but each must be a non-zero value.
+    --
+    -- -   A value of @0@ (zero) for UID and GID indicates root, and therefore
+    --     disables root squash.
+    --
+    -- When root squash is enabled, the user ID and group ID of a root user
+    -- accessing the file system are re-mapped to the UID and GID you provide.
+    rootSquash :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LustreRootSquashConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'noSquashNids', 'lustreRootSquashConfiguration_noSquashNids' - When root squash is enabled, you can optionally specify an array of NIDs
+-- of clients for which root squash does not apply. A client NID is a
+-- Lustre Network Identifier used to uniquely identify a client. You can
+-- specify the NID as either a single address or a range of addresses:
+--
+-- -   A single address is described in standard Lustre NID format by
+--     specifying the client’s IP address followed by the Lustre network ID
+--     (for example, @10.0.1.6\@tcp@).
+--
+-- -   An address range is described using a dash to separate the range
+--     (for example, @10.0.[2-10].[1-255]\@tcp@).
+--
+-- 'rootSquash', 'lustreRootSquashConfiguration_rootSquash' - You enable root squash by setting a user ID (UID) and group ID (GID) for
+-- the file system in the format @UID:GID@ (for example, @365534:65534@).
+-- The UID and GID values can range from @0@ to @4294967294@:
+--
+-- -   A non-zero value for UID and GID enables root squash. The UID and
+--     GID values can be different, but each must be a non-zero value.
+--
+-- -   A value of @0@ (zero) for UID and GID indicates root, and therefore
+--     disables root squash.
+--
+-- When root squash is enabled, the user ID and group ID of a root user
+-- accessing the file system are re-mapped to the UID and GID you provide.
+newLustreRootSquashConfiguration ::
+  LustreRootSquashConfiguration
+newLustreRootSquashConfiguration =
+  LustreRootSquashConfiguration'
+    { noSquashNids =
+        Prelude.Nothing,
+      rootSquash = Prelude.Nothing
+    }
+
+-- | When root squash is enabled, you can optionally specify an array of NIDs
+-- of clients for which root squash does not apply. A client NID is a
+-- Lustre Network Identifier used to uniquely identify a client. You can
+-- specify the NID as either a single address or a range of addresses:
+--
+-- -   A single address is described in standard Lustre NID format by
+--     specifying the client’s IP address followed by the Lustre network ID
+--     (for example, @10.0.1.6\@tcp@).
+--
+-- -   An address range is described using a dash to separate the range
+--     (for example, @10.0.[2-10].[1-255]\@tcp@).
+lustreRootSquashConfiguration_noSquashNids :: Lens.Lens' LustreRootSquashConfiguration (Prelude.Maybe [Prelude.Text])
+lustreRootSquashConfiguration_noSquashNids = Lens.lens (\LustreRootSquashConfiguration' {noSquashNids} -> noSquashNids) (\s@LustreRootSquashConfiguration' {} a -> s {noSquashNids = a} :: LustreRootSquashConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | You enable root squash by setting a user ID (UID) and group ID (GID) for
+-- the file system in the format @UID:GID@ (for example, @365534:65534@).
+-- The UID and GID values can range from @0@ to @4294967294@:
+--
+-- -   A non-zero value for UID and GID enables root squash. The UID and
+--     GID values can be different, but each must be a non-zero value.
+--
+-- -   A value of @0@ (zero) for UID and GID indicates root, and therefore
+--     disables root squash.
+--
+-- When root squash is enabled, the user ID and group ID of a root user
+-- accessing the file system are re-mapped to the UID and GID you provide.
+lustreRootSquashConfiguration_rootSquash :: Lens.Lens' LustreRootSquashConfiguration (Prelude.Maybe Prelude.Text)
+lustreRootSquashConfiguration_rootSquash = Lens.lens (\LustreRootSquashConfiguration' {rootSquash} -> rootSquash) (\s@LustreRootSquashConfiguration' {} a -> s {rootSquash = a} :: LustreRootSquashConfiguration)
+
+instance Data.FromJSON LustreRootSquashConfiguration where
+  parseJSON =
+    Data.withObject
+      "LustreRootSquashConfiguration"
+      ( \x ->
+          LustreRootSquashConfiguration'
+            Prelude.<$> (x Data..:? "NoSquashNids" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RootSquash")
+      )
+
+instance
+  Prelude.Hashable
+    LustreRootSquashConfiguration
+  where
+  hashWithSalt _salt LustreRootSquashConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` noSquashNids
+      `Prelude.hashWithSalt` rootSquash
+
+instance Prelude.NFData LustreRootSquashConfiguration where
+  rnf LustreRootSquashConfiguration' {..} =
+    Prelude.rnf noSquashNids
+      `Prelude.seq` Prelude.rnf rootSquash
+
+instance Data.ToJSON LustreRootSquashConfiguration where
+  toJSON LustreRootSquashConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NoSquashNids" Data..=) Prelude.<$> noSquashNids,
+            ("RootSquash" Data..=) Prelude.<$> rootSquash
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/NFSDataRepositoryConfiguration.hs b/gen/Amazonka/FSx/Types/NFSDataRepositoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/NFSDataRepositoryConfiguration.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.FSx.Types.NFSDataRepositoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.NFSDataRepositoryConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AutoExportPolicy
+import Amazonka.FSx.Types.NfsVersion
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for a data repository association that links an Amazon
+-- File Cache resource to an NFS data repository.
+--
+-- /See:/ 'newNFSDataRepositoryConfiguration' smart constructor.
+data NFSDataRepositoryConfiguration = NFSDataRepositoryConfiguration'
+  { -- | This parameter is not supported for Amazon File Cache.
+    autoExportPolicy :: Prelude.Maybe AutoExportPolicy,
+    -- | A list of up to 2 IP addresses of DNS servers used to resolve the NFS
+    -- file system domain name. The provided IP addresses can either be the IP
+    -- addresses of a DNS forwarder or resolver that the customer manages and
+    -- runs inside the customer VPC, or the IP addresses of the on-premises DNS
+    -- servers.
+    dnsIps :: Prelude.Maybe [Prelude.Text],
+    -- | The version of the NFS (Network File System) protocol of the NFS data
+    -- repository. Currently, the only supported value is @NFS3@, which
+    -- indicates that the data repository must support the NFSv3 protocol.
+    version :: NfsVersion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NFSDataRepositoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoExportPolicy', 'nFSDataRepositoryConfiguration_autoExportPolicy' - This parameter is not supported for Amazon File Cache.
+--
+-- 'dnsIps', 'nFSDataRepositoryConfiguration_dnsIps' - A list of up to 2 IP addresses of DNS servers used to resolve the NFS
+-- file system domain name. The provided IP addresses can either be the IP
+-- addresses of a DNS forwarder or resolver that the customer manages and
+-- runs inside the customer VPC, or the IP addresses of the on-premises DNS
+-- servers.
+--
+-- 'version', 'nFSDataRepositoryConfiguration_version' - The version of the NFS (Network File System) protocol of the NFS data
+-- repository. Currently, the only supported value is @NFS3@, which
+-- indicates that the data repository must support the NFSv3 protocol.
+newNFSDataRepositoryConfiguration ::
+  -- | 'version'
+  NfsVersion ->
+  NFSDataRepositoryConfiguration
+newNFSDataRepositoryConfiguration pVersion_ =
+  NFSDataRepositoryConfiguration'
+    { autoExportPolicy =
+        Prelude.Nothing,
+      dnsIps = Prelude.Nothing,
+      version = pVersion_
+    }
+
+-- | This parameter is not supported for Amazon File Cache.
+nFSDataRepositoryConfiguration_autoExportPolicy :: Lens.Lens' NFSDataRepositoryConfiguration (Prelude.Maybe AutoExportPolicy)
+nFSDataRepositoryConfiguration_autoExportPolicy = Lens.lens (\NFSDataRepositoryConfiguration' {autoExportPolicy} -> autoExportPolicy) (\s@NFSDataRepositoryConfiguration' {} a -> s {autoExportPolicy = a} :: NFSDataRepositoryConfiguration)
+
+-- | A list of up to 2 IP addresses of DNS servers used to resolve the NFS
+-- file system domain name. The provided IP addresses can either be the IP
+-- addresses of a DNS forwarder or resolver that the customer manages and
+-- runs inside the customer VPC, or the IP addresses of the on-premises DNS
+-- servers.
+nFSDataRepositoryConfiguration_dnsIps :: Lens.Lens' NFSDataRepositoryConfiguration (Prelude.Maybe [Prelude.Text])
+nFSDataRepositoryConfiguration_dnsIps = Lens.lens (\NFSDataRepositoryConfiguration' {dnsIps} -> dnsIps) (\s@NFSDataRepositoryConfiguration' {} a -> s {dnsIps = a} :: NFSDataRepositoryConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The version of the NFS (Network File System) protocol of the NFS data
+-- repository. Currently, the only supported value is @NFS3@, which
+-- indicates that the data repository must support the NFSv3 protocol.
+nFSDataRepositoryConfiguration_version :: Lens.Lens' NFSDataRepositoryConfiguration NfsVersion
+nFSDataRepositoryConfiguration_version = Lens.lens (\NFSDataRepositoryConfiguration' {version} -> version) (\s@NFSDataRepositoryConfiguration' {} a -> s {version = a} :: NFSDataRepositoryConfiguration)
+
+instance Data.FromJSON NFSDataRepositoryConfiguration where
+  parseJSON =
+    Data.withObject
+      "NFSDataRepositoryConfiguration"
+      ( \x ->
+          NFSDataRepositoryConfiguration'
+            Prelude.<$> (x Data..:? "AutoExportPolicy")
+            Prelude.<*> (x Data..:? "DnsIps" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "Version")
+      )
+
+instance
+  Prelude.Hashable
+    NFSDataRepositoryConfiguration
+  where
+  hashWithSalt
+    _salt
+    NFSDataRepositoryConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` autoExportPolicy
+        `Prelude.hashWithSalt` dnsIps
+        `Prelude.hashWithSalt` version
+
+instance
+  Prelude.NFData
+    NFSDataRepositoryConfiguration
+  where
+  rnf NFSDataRepositoryConfiguration' {..} =
+    Prelude.rnf autoExportPolicy
+      `Prelude.seq` Prelude.rnf dnsIps
+      `Prelude.seq` Prelude.rnf version
diff --git a/gen/Amazonka/FSx/Types/NfsVersion.hs b/gen/Amazonka/FSx/Types/NfsVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/NfsVersion.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.FSx.Types.NfsVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.NfsVersion
+  ( NfsVersion
+      ( ..,
+        NfsVersion_NFS3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NfsVersion = NfsVersion'
+  { fromNfsVersion ::
+      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 NfsVersion_NFS3 :: NfsVersion
+pattern NfsVersion_NFS3 = NfsVersion' "NFS3"
+
+{-# COMPLETE
+  NfsVersion_NFS3,
+  NfsVersion'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OntapDeploymentType.hs b/gen/Amazonka/FSx/Types/OntapDeploymentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OntapDeploymentType.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.FSx.Types.OntapDeploymentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OntapDeploymentType
+  ( OntapDeploymentType
+      ( ..,
+        OntapDeploymentType_MULTI_AZ_1,
+        OntapDeploymentType_SINGLE_AZ_1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OntapDeploymentType = OntapDeploymentType'
+  { fromOntapDeploymentType ::
+      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 OntapDeploymentType_MULTI_AZ_1 :: OntapDeploymentType
+pattern OntapDeploymentType_MULTI_AZ_1 = OntapDeploymentType' "MULTI_AZ_1"
+
+pattern OntapDeploymentType_SINGLE_AZ_1 :: OntapDeploymentType
+pattern OntapDeploymentType_SINGLE_AZ_1 = OntapDeploymentType' "SINGLE_AZ_1"
+
+{-# COMPLETE
+  OntapDeploymentType_MULTI_AZ_1,
+  OntapDeploymentType_SINGLE_AZ_1,
+  OntapDeploymentType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OntapFileSystemConfiguration.hs b/gen/Amazonka/FSx/Types/OntapFileSystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OntapFileSystemConfiguration.hs
@@ -0,0 +1,246 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.OntapFileSystemConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OntapFileSystemConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import Amazonka.FSx.Types.FileSystemEndpoints
+import Amazonka.FSx.Types.OntapDeploymentType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Configuration for the FSx for NetApp ONTAP file system.
+--
+-- /See:/ 'newOntapFileSystemConfiguration' smart constructor.
+data OntapFileSystemConfiguration = OntapFileSystemConfiguration'
+  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the FSx for ONTAP file system deployment type in use in the
+    -- file system.
+    --
+    -- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
+    --     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
+    --     unavailability.
+    --
+    -- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
+    --
+    -- For information about the use cases for Multi-AZ and Single-AZ
+    -- deployments, refer to
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html Choosing Multi-AZ or Single-AZ file system deployment>.
+    deploymentType :: Prelude.Maybe OntapDeploymentType,
+    -- | The SSD IOPS configuration for the ONTAP file system, specifying the
+    -- number of provisioned IOPS and the provision mode.
+    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
+    -- | (Multi-AZ only) The IP address range in which the endpoints to access
+    -- your file system are created.
+    --
+    -- The Endpoint IP address range you select for your file system must exist
+    -- outside the VPC\'s CIDR range and must be at least \/30 or larger. If
+    -- you do not specify this optional parameter, Amazon FSx will
+    -- automatically select a CIDR block for you.
+    endpointIpAddressRange :: Prelude.Maybe Prelude.Text,
+    -- | The @Management@ and @Intercluster@ endpoints that are used to access
+    -- data or to manage the file system using the NetApp ONTAP CLI, REST API,
+    -- or NetApp SnapMirror.
+    endpoints :: Prelude.Maybe FileSystemEndpoints,
+    preferredSubnetId :: Prelude.Maybe Prelude.Text,
+    -- | (Multi-AZ only) The VPC route tables in which your file system\'s
+    -- endpoints are created.
+    routeTableIds :: Prelude.Maybe [Prelude.Text],
+    throughputCapacity :: Prelude.Maybe Prelude.Natural,
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OntapFileSystemConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automaticBackupRetentionDays', 'ontapFileSystemConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'dailyAutomaticBackupStartTime', 'ontapFileSystemConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'deploymentType', 'ontapFileSystemConfiguration_deploymentType' - Specifies the FSx for ONTAP file system deployment type in use in the
+-- file system.
+--
+-- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
+--     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
+--     unavailability.
+--
+-- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
+--
+-- For information about the use cases for Multi-AZ and Single-AZ
+-- deployments, refer to
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html Choosing Multi-AZ or Single-AZ file system deployment>.
+--
+-- 'diskIopsConfiguration', 'ontapFileSystemConfiguration_diskIopsConfiguration' - The SSD IOPS configuration for the ONTAP file system, specifying the
+-- number of provisioned IOPS and the provision mode.
+--
+-- 'endpointIpAddressRange', 'ontapFileSystemConfiguration_endpointIpAddressRange' - (Multi-AZ only) The IP address range in which the endpoints to access
+-- your file system are created.
+--
+-- The Endpoint IP address range you select for your file system must exist
+-- outside the VPC\'s CIDR range and must be at least \/30 or larger. If
+-- you do not specify this optional parameter, Amazon FSx will
+-- automatically select a CIDR block for you.
+--
+-- 'endpoints', 'ontapFileSystemConfiguration_endpoints' - The @Management@ and @Intercluster@ endpoints that are used to access
+-- data or to manage the file system using the NetApp ONTAP CLI, REST API,
+-- or NetApp SnapMirror.
+--
+-- 'preferredSubnetId', 'ontapFileSystemConfiguration_preferredSubnetId' - Undocumented member.
+--
+-- 'routeTableIds', 'ontapFileSystemConfiguration_routeTableIds' - (Multi-AZ only) The VPC route tables in which your file system\'s
+-- endpoints are created.
+--
+-- 'throughputCapacity', 'ontapFileSystemConfiguration_throughputCapacity' - Undocumented member.
+--
+-- 'weeklyMaintenanceStartTime', 'ontapFileSystemConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+newOntapFileSystemConfiguration ::
+  OntapFileSystemConfiguration
+newOntapFileSystemConfiguration =
+  OntapFileSystemConfiguration'
+    { automaticBackupRetentionDays =
+        Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      deploymentType = Prelude.Nothing,
+      diskIopsConfiguration = Prelude.Nothing,
+      endpointIpAddressRange = Prelude.Nothing,
+      endpoints = Prelude.Nothing,
+      preferredSubnetId = Prelude.Nothing,
+      routeTableIds = Prelude.Nothing,
+      throughputCapacity = Prelude.Nothing,
+      weeklyMaintenanceStartTime = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+ontapFileSystemConfiguration_automaticBackupRetentionDays :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+ontapFileSystemConfiguration_automaticBackupRetentionDays = Lens.lens (\OntapFileSystemConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@OntapFileSystemConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: OntapFileSystemConfiguration)
+
+-- | Undocumented member.
+ontapFileSystemConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+ontapFileSystemConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\OntapFileSystemConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@OntapFileSystemConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: OntapFileSystemConfiguration)
+
+-- | Specifies the FSx for ONTAP file system deployment type in use in the
+-- file system.
+--
+-- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
+--     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
+--     unavailability.
+--
+-- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
+--
+-- For information about the use cases for Multi-AZ and Single-AZ
+-- deployments, refer to
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html Choosing Multi-AZ or Single-AZ file system deployment>.
+ontapFileSystemConfiguration_deploymentType :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe OntapDeploymentType)
+ontapFileSystemConfiguration_deploymentType = Lens.lens (\OntapFileSystemConfiguration' {deploymentType} -> deploymentType) (\s@OntapFileSystemConfiguration' {} a -> s {deploymentType = a} :: OntapFileSystemConfiguration)
+
+-- | The SSD IOPS configuration for the ONTAP file system, specifying the
+-- number of provisioned IOPS and the provision mode.
+ontapFileSystemConfiguration_diskIopsConfiguration :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe DiskIopsConfiguration)
+ontapFileSystemConfiguration_diskIopsConfiguration = Lens.lens (\OntapFileSystemConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@OntapFileSystemConfiguration' {} a -> s {diskIopsConfiguration = a} :: OntapFileSystemConfiguration)
+
+-- | (Multi-AZ only) The IP address range in which the endpoints to access
+-- your file system are created.
+--
+-- The Endpoint IP address range you select for your file system must exist
+-- outside the VPC\'s CIDR range and must be at least \/30 or larger. If
+-- you do not specify this optional parameter, Amazon FSx will
+-- automatically select a CIDR block for you.
+ontapFileSystemConfiguration_endpointIpAddressRange :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+ontapFileSystemConfiguration_endpointIpAddressRange = Lens.lens (\OntapFileSystemConfiguration' {endpointIpAddressRange} -> endpointIpAddressRange) (\s@OntapFileSystemConfiguration' {} a -> s {endpointIpAddressRange = a} :: OntapFileSystemConfiguration)
+
+-- | The @Management@ and @Intercluster@ endpoints that are used to access
+-- data or to manage the file system using the NetApp ONTAP CLI, REST API,
+-- or NetApp SnapMirror.
+ontapFileSystemConfiguration_endpoints :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe FileSystemEndpoints)
+ontapFileSystemConfiguration_endpoints = Lens.lens (\OntapFileSystemConfiguration' {endpoints} -> endpoints) (\s@OntapFileSystemConfiguration' {} a -> s {endpoints = a} :: OntapFileSystemConfiguration)
+
+-- | Undocumented member.
+ontapFileSystemConfiguration_preferredSubnetId :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+ontapFileSystemConfiguration_preferredSubnetId = Lens.lens (\OntapFileSystemConfiguration' {preferredSubnetId} -> preferredSubnetId) (\s@OntapFileSystemConfiguration' {} a -> s {preferredSubnetId = a} :: OntapFileSystemConfiguration)
+
+-- | (Multi-AZ only) The VPC route tables in which your file system\'s
+-- endpoints are created.
+ontapFileSystemConfiguration_routeTableIds :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe [Prelude.Text])
+ontapFileSystemConfiguration_routeTableIds = Lens.lens (\OntapFileSystemConfiguration' {routeTableIds} -> routeTableIds) (\s@OntapFileSystemConfiguration' {} a -> s {routeTableIds = a} :: OntapFileSystemConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+ontapFileSystemConfiguration_throughputCapacity :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+ontapFileSystemConfiguration_throughputCapacity = Lens.lens (\OntapFileSystemConfiguration' {throughputCapacity} -> throughputCapacity) (\s@OntapFileSystemConfiguration' {} a -> s {throughputCapacity = a} :: OntapFileSystemConfiguration)
+
+-- | Undocumented member.
+ontapFileSystemConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' OntapFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+ontapFileSystemConfiguration_weeklyMaintenanceStartTime = Lens.lens (\OntapFileSystemConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@OntapFileSystemConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: OntapFileSystemConfiguration)
+
+instance Data.FromJSON OntapFileSystemConfiguration where
+  parseJSON =
+    Data.withObject
+      "OntapFileSystemConfiguration"
+      ( \x ->
+          OntapFileSystemConfiguration'
+            Prelude.<$> (x Data..:? "AutomaticBackupRetentionDays")
+            Prelude.<*> (x Data..:? "DailyAutomaticBackupStartTime")
+            Prelude.<*> (x Data..:? "DeploymentType")
+            Prelude.<*> (x Data..:? "DiskIopsConfiguration")
+            Prelude.<*> (x Data..:? "EndpointIpAddressRange")
+            Prelude.<*> (x Data..:? "Endpoints")
+            Prelude.<*> (x Data..:? "PreferredSubnetId")
+            Prelude.<*> (x Data..:? "RouteTableIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ThroughputCapacity")
+            Prelude.<*> (x Data..:? "WeeklyMaintenanceStartTime")
+      )
+
+instance
+  Prelude.Hashable
+    OntapFileSystemConfiguration
+  where
+  hashWithSalt _salt OntapFileSystemConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` automaticBackupRetentionDays
+      `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+      `Prelude.hashWithSalt` deploymentType
+      `Prelude.hashWithSalt` diskIopsConfiguration
+      `Prelude.hashWithSalt` endpointIpAddressRange
+      `Prelude.hashWithSalt` endpoints
+      `Prelude.hashWithSalt` preferredSubnetId
+      `Prelude.hashWithSalt` routeTableIds
+      `Prelude.hashWithSalt` throughputCapacity
+      `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance Prelude.NFData OntapFileSystemConfiguration where
+  rnf OntapFileSystemConfiguration' {..} =
+    Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf diskIopsConfiguration
+      `Prelude.seq` Prelude.rnf endpointIpAddressRange
+      `Prelude.seq` Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf preferredSubnetId
+      `Prelude.seq` Prelude.rnf routeTableIds
+      `Prelude.seq` Prelude.rnf throughputCapacity
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
diff --git a/gen/Amazonka/FSx/Types/OntapVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/OntapVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OntapVolumeConfiguration.hs
@@ -0,0 +1,389 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.OntapVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OntapVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.FlexCacheEndpointType
+import Amazonka.FSx.Types.OntapVolumeType
+import Amazonka.FSx.Types.SecurityStyle
+import Amazonka.FSx.Types.TieringPolicy
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration of an Amazon FSx for NetApp ONTAP volume.
+--
+-- /See:/ 'newOntapVolumeConfiguration' smart constructor.
+data OntapVolumeConfiguration = OntapVolumeConfiguration'
+  { -- | A boolean flag indicating whether tags for the volume should be copied
+    -- to backups. This value defaults to false. If it\'s set to true, all tags
+    -- for the volume are copied to all automatic and user-initiated backups
+    -- where the user doesn\'t specify tags. If this value is true, and you
+    -- specify one or more tags, only the specified tags are copied to backups.
+    -- If you specify one or more tags when creating a user-initiated backup,
+    -- no tags are copied from the volume, regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the FlexCache endpoint type of the volume. Valid values are
+    -- the following:
+    --
+    -- -   @NONE@ specifies that the volume doesn\'t have a FlexCache
+    --     configuration. @NONE@ is the default.
+    --
+    -- -   @ORIGIN@ specifies that the volume is the origin volume for a
+    --     FlexCache volume.
+    --
+    -- -   @CACHE@ specifies that the volume is a FlexCache volume.
+    flexCacheEndpointType :: Prelude.Maybe FlexCacheEndpointType,
+    -- | Specifies the directory that network-attached storage (NAS) clients use
+    -- to mount the volume, along with the storage virtual machine (SVM) Domain
+    -- Name System (DNS) name or IP address. You can create a @JunctionPath@
+    -- directly below a parent volume junction or on a directory within a
+    -- volume. A @JunctionPath@ for a volume named @vol3@ might be
+    -- @\/vol1\/vol2\/vol3@, or @\/vol1\/dir2\/vol3@, or even
+    -- @\/dir1\/dir2\/vol3@.
+    junctionPath :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the type of volume. Valid values are the following:
+    --
+    -- -   @RW@ specifies a read\/write volume. @RW@ is the default.
+    --
+    -- -   @DP@ specifies a data-protection volume. You can protect data by
+    --     replicating it to data-protection mirror copies. If a disaster
+    --     occurs, you can use these data-protection mirror copies to recover
+    --     data.
+    --
+    -- -   @LS@ specifies a load-sharing mirror volume. A load-sharing mirror
+    --     reduces the network traffic to a FlexVol volume by providing
+    --     additional read-only access to clients.
+    ontapVolumeType :: Prelude.Maybe OntapVolumeType,
+    -- | The security style for the volume, which can be @UNIX@, @NTFS@, or
+    -- @MIXED@.
+    securityStyle :: Prelude.Maybe SecurityStyle,
+    -- | The configured size of the volume, in megabytes (MBs).
+    sizeInMegabytes :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies the snapshot policy for the volume. There are three built-in
+    -- snapshot policies:
+    --
+    -- -   @default@: This is the default policy. A maximum of six hourly
+    --     snapshots taken five minutes past the hour. A maximum of two daily
+    --     snapshots taken Monday through Saturday at 10 minutes after
+    --     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+    --     minutes after midnight.
+    --
+    -- -   @default-1weekly@: This policy is the same as the @default@ policy
+    --     except that it only retains one snapshot from the weekly schedule.
+    --
+    -- -   @none@: This policy does not take any snapshots. This policy can be
+    --     assigned to volumes to prevent automatic snapshots from being taken.
+    --
+    -- You can also provide the name of a custom policy that you created with
+    -- the ONTAP CLI or REST API.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+    -- in the /Amazon FSx for NetApp ONTAP User Guide/.
+    snapshotPolicy :: Prelude.Maybe Prelude.Text,
+    -- | The volume\'s storage efficiency setting.
+    storageEfficiencyEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the volume\'s storage virtual machine.
+    storageVirtualMachineId :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean flag indicating whether this volume is the root volume for its
+    -- storage virtual machine (SVM). Only one volume on an SVM can be the root
+    -- volume. This value defaults to @false@. If this value is @true@, then
+    -- this is the SVM root volume.
+    --
+    -- This flag is useful when you\'re deleting an SVM, because you must first
+    -- delete all non-root volumes. This flag, when set to @false@, helps you
+    -- identify which volumes to delete before you can delete the SVM.
+    storageVirtualMachineRoot :: Prelude.Maybe Prelude.Bool,
+    -- | The volume\'s @TieringPolicy@ setting.
+    tieringPolicy :: Prelude.Maybe TieringPolicy,
+    -- | The volume\'s universally unique identifier (UUID).
+    uuid :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OntapVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToBackups', 'ontapVolumeConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags for the volume should be copied
+-- to backups. This value defaults to false. If it\'s set to true, all tags
+-- for the volume are copied to all automatic and user-initiated backups
+-- where the user doesn\'t specify tags. If this value is true, and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the volume, regardless of this value.
+--
+-- 'flexCacheEndpointType', 'ontapVolumeConfiguration_flexCacheEndpointType' - Specifies the FlexCache endpoint type of the volume. Valid values are
+-- the following:
+--
+-- -   @NONE@ specifies that the volume doesn\'t have a FlexCache
+--     configuration. @NONE@ is the default.
+--
+-- -   @ORIGIN@ specifies that the volume is the origin volume for a
+--     FlexCache volume.
+--
+-- -   @CACHE@ specifies that the volume is a FlexCache volume.
+--
+-- 'junctionPath', 'ontapVolumeConfiguration_junctionPath' - Specifies the directory that network-attached storage (NAS) clients use
+-- to mount the volume, along with the storage virtual machine (SVM) Domain
+-- Name System (DNS) name or IP address. You can create a @JunctionPath@
+-- directly below a parent volume junction or on a directory within a
+-- volume. A @JunctionPath@ for a volume named @vol3@ might be
+-- @\/vol1\/vol2\/vol3@, or @\/vol1\/dir2\/vol3@, or even
+-- @\/dir1\/dir2\/vol3@.
+--
+-- 'ontapVolumeType', 'ontapVolumeConfiguration_ontapVolumeType' - Specifies the type of volume. Valid values are the following:
+--
+-- -   @RW@ specifies a read\/write volume. @RW@ is the default.
+--
+-- -   @DP@ specifies a data-protection volume. You can protect data by
+--     replicating it to data-protection mirror copies. If a disaster
+--     occurs, you can use these data-protection mirror copies to recover
+--     data.
+--
+-- -   @LS@ specifies a load-sharing mirror volume. A load-sharing mirror
+--     reduces the network traffic to a FlexVol volume by providing
+--     additional read-only access to clients.
+--
+-- 'securityStyle', 'ontapVolumeConfiguration_securityStyle' - The security style for the volume, which can be @UNIX@, @NTFS@, or
+-- @MIXED@.
+--
+-- 'sizeInMegabytes', 'ontapVolumeConfiguration_sizeInMegabytes' - The configured size of the volume, in megabytes (MBs).
+--
+-- 'snapshotPolicy', 'ontapVolumeConfiguration_snapshotPolicy' - Specifies the snapshot policy for the volume. There are three built-in
+-- snapshot policies:
+--
+-- -   @default@: This is the default policy. A maximum of six hourly
+--     snapshots taken five minutes past the hour. A maximum of two daily
+--     snapshots taken Monday through Saturday at 10 minutes after
+--     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+--     minutes after midnight.
+--
+-- -   @default-1weekly@: This policy is the same as the @default@ policy
+--     except that it only retains one snapshot from the weekly schedule.
+--
+-- -   @none@: This policy does not take any snapshots. This policy can be
+--     assigned to volumes to prevent automatic snapshots from being taken.
+--
+-- You can also provide the name of a custom policy that you created with
+-- the ONTAP CLI or REST API.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+--
+-- 'storageEfficiencyEnabled', 'ontapVolumeConfiguration_storageEfficiencyEnabled' - The volume\'s storage efficiency setting.
+--
+-- 'storageVirtualMachineId', 'ontapVolumeConfiguration_storageVirtualMachineId' - The ID of the volume\'s storage virtual machine.
+--
+-- 'storageVirtualMachineRoot', 'ontapVolumeConfiguration_storageVirtualMachineRoot' - A Boolean flag indicating whether this volume is the root volume for its
+-- storage virtual machine (SVM). Only one volume on an SVM can be the root
+-- volume. This value defaults to @false@. If this value is @true@, then
+-- this is the SVM root volume.
+--
+-- This flag is useful when you\'re deleting an SVM, because you must first
+-- delete all non-root volumes. This flag, when set to @false@, helps you
+-- identify which volumes to delete before you can delete the SVM.
+--
+-- 'tieringPolicy', 'ontapVolumeConfiguration_tieringPolicy' - The volume\'s @TieringPolicy@ setting.
+--
+-- 'uuid', 'ontapVolumeConfiguration_uuid' - The volume\'s universally unique identifier (UUID).
+newOntapVolumeConfiguration ::
+  OntapVolumeConfiguration
+newOntapVolumeConfiguration =
+  OntapVolumeConfiguration'
+    { copyTagsToBackups =
+        Prelude.Nothing,
+      flexCacheEndpointType = Prelude.Nothing,
+      junctionPath = Prelude.Nothing,
+      ontapVolumeType = Prelude.Nothing,
+      securityStyle = Prelude.Nothing,
+      sizeInMegabytes = Prelude.Nothing,
+      snapshotPolicy = Prelude.Nothing,
+      storageEfficiencyEnabled = Prelude.Nothing,
+      storageVirtualMachineId = Prelude.Nothing,
+      storageVirtualMachineRoot = Prelude.Nothing,
+      tieringPolicy = Prelude.Nothing,
+      uuid = Prelude.Nothing
+    }
+
+-- | A boolean flag indicating whether tags for the volume should be copied
+-- to backups. This value defaults to false. If it\'s set to true, all tags
+-- for the volume are copied to all automatic and user-initiated backups
+-- where the user doesn\'t specify tags. If this value is true, and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the volume, regardless of this value.
+ontapVolumeConfiguration_copyTagsToBackups :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+ontapVolumeConfiguration_copyTagsToBackups = Lens.lens (\OntapVolumeConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@OntapVolumeConfiguration' {} a -> s {copyTagsToBackups = a} :: OntapVolumeConfiguration)
+
+-- | Specifies the FlexCache endpoint type of the volume. Valid values are
+-- the following:
+--
+-- -   @NONE@ specifies that the volume doesn\'t have a FlexCache
+--     configuration. @NONE@ is the default.
+--
+-- -   @ORIGIN@ specifies that the volume is the origin volume for a
+--     FlexCache volume.
+--
+-- -   @CACHE@ specifies that the volume is a FlexCache volume.
+ontapVolumeConfiguration_flexCacheEndpointType :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe FlexCacheEndpointType)
+ontapVolumeConfiguration_flexCacheEndpointType = Lens.lens (\OntapVolumeConfiguration' {flexCacheEndpointType} -> flexCacheEndpointType) (\s@OntapVolumeConfiguration' {} a -> s {flexCacheEndpointType = a} :: OntapVolumeConfiguration)
+
+-- | Specifies the directory that network-attached storage (NAS) clients use
+-- to mount the volume, along with the storage virtual machine (SVM) Domain
+-- Name System (DNS) name or IP address. You can create a @JunctionPath@
+-- directly below a parent volume junction or on a directory within a
+-- volume. A @JunctionPath@ for a volume named @vol3@ might be
+-- @\/vol1\/vol2\/vol3@, or @\/vol1\/dir2\/vol3@, or even
+-- @\/dir1\/dir2\/vol3@.
+ontapVolumeConfiguration_junctionPath :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+ontapVolumeConfiguration_junctionPath = Lens.lens (\OntapVolumeConfiguration' {junctionPath} -> junctionPath) (\s@OntapVolumeConfiguration' {} a -> s {junctionPath = a} :: OntapVolumeConfiguration)
+
+-- | Specifies the type of volume. Valid values are the following:
+--
+-- -   @RW@ specifies a read\/write volume. @RW@ is the default.
+--
+-- -   @DP@ specifies a data-protection volume. You can protect data by
+--     replicating it to data-protection mirror copies. If a disaster
+--     occurs, you can use these data-protection mirror copies to recover
+--     data.
+--
+-- -   @LS@ specifies a load-sharing mirror volume. A load-sharing mirror
+--     reduces the network traffic to a FlexVol volume by providing
+--     additional read-only access to clients.
+ontapVolumeConfiguration_ontapVolumeType :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe OntapVolumeType)
+ontapVolumeConfiguration_ontapVolumeType = Lens.lens (\OntapVolumeConfiguration' {ontapVolumeType} -> ontapVolumeType) (\s@OntapVolumeConfiguration' {} a -> s {ontapVolumeType = a} :: OntapVolumeConfiguration)
+
+-- | The security style for the volume, which can be @UNIX@, @NTFS@, or
+-- @MIXED@.
+ontapVolumeConfiguration_securityStyle :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe SecurityStyle)
+ontapVolumeConfiguration_securityStyle = Lens.lens (\OntapVolumeConfiguration' {securityStyle} -> securityStyle) (\s@OntapVolumeConfiguration' {} a -> s {securityStyle = a} :: OntapVolumeConfiguration)
+
+-- | The configured size of the volume, in megabytes (MBs).
+ontapVolumeConfiguration_sizeInMegabytes :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+ontapVolumeConfiguration_sizeInMegabytes = Lens.lens (\OntapVolumeConfiguration' {sizeInMegabytes} -> sizeInMegabytes) (\s@OntapVolumeConfiguration' {} a -> s {sizeInMegabytes = a} :: OntapVolumeConfiguration)
+
+-- | Specifies the snapshot policy for the volume. There are three built-in
+-- snapshot policies:
+--
+-- -   @default@: This is the default policy. A maximum of six hourly
+--     snapshots taken five minutes past the hour. A maximum of two daily
+--     snapshots taken Monday through Saturday at 10 minutes after
+--     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+--     minutes after midnight.
+--
+-- -   @default-1weekly@: This policy is the same as the @default@ policy
+--     except that it only retains one snapshot from the weekly schedule.
+--
+-- -   @none@: This policy does not take any snapshots. This policy can be
+--     assigned to volumes to prevent automatic snapshots from being taken.
+--
+-- You can also provide the name of a custom policy that you created with
+-- the ONTAP CLI or REST API.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+ontapVolumeConfiguration_snapshotPolicy :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+ontapVolumeConfiguration_snapshotPolicy = Lens.lens (\OntapVolumeConfiguration' {snapshotPolicy} -> snapshotPolicy) (\s@OntapVolumeConfiguration' {} a -> s {snapshotPolicy = a} :: OntapVolumeConfiguration)
+
+-- | The volume\'s storage efficiency setting.
+ontapVolumeConfiguration_storageEfficiencyEnabled :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+ontapVolumeConfiguration_storageEfficiencyEnabled = Lens.lens (\OntapVolumeConfiguration' {storageEfficiencyEnabled} -> storageEfficiencyEnabled) (\s@OntapVolumeConfiguration' {} a -> s {storageEfficiencyEnabled = a} :: OntapVolumeConfiguration)
+
+-- | The ID of the volume\'s storage virtual machine.
+ontapVolumeConfiguration_storageVirtualMachineId :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+ontapVolumeConfiguration_storageVirtualMachineId = Lens.lens (\OntapVolumeConfiguration' {storageVirtualMachineId} -> storageVirtualMachineId) (\s@OntapVolumeConfiguration' {} a -> s {storageVirtualMachineId = a} :: OntapVolumeConfiguration)
+
+-- | A Boolean flag indicating whether this volume is the root volume for its
+-- storage virtual machine (SVM). Only one volume on an SVM can be the root
+-- volume. This value defaults to @false@. If this value is @true@, then
+-- this is the SVM root volume.
+--
+-- This flag is useful when you\'re deleting an SVM, because you must first
+-- delete all non-root volumes. This flag, when set to @false@, helps you
+-- identify which volumes to delete before you can delete the SVM.
+ontapVolumeConfiguration_storageVirtualMachineRoot :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+ontapVolumeConfiguration_storageVirtualMachineRoot = Lens.lens (\OntapVolumeConfiguration' {storageVirtualMachineRoot} -> storageVirtualMachineRoot) (\s@OntapVolumeConfiguration' {} a -> s {storageVirtualMachineRoot = a} :: OntapVolumeConfiguration)
+
+-- | The volume\'s @TieringPolicy@ setting.
+ontapVolumeConfiguration_tieringPolicy :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe TieringPolicy)
+ontapVolumeConfiguration_tieringPolicy = Lens.lens (\OntapVolumeConfiguration' {tieringPolicy} -> tieringPolicy) (\s@OntapVolumeConfiguration' {} a -> s {tieringPolicy = a} :: OntapVolumeConfiguration)
+
+-- | The volume\'s universally unique identifier (UUID).
+ontapVolumeConfiguration_uuid :: Lens.Lens' OntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+ontapVolumeConfiguration_uuid = Lens.lens (\OntapVolumeConfiguration' {uuid} -> uuid) (\s@OntapVolumeConfiguration' {} a -> s {uuid = a} :: OntapVolumeConfiguration)
+
+instance Data.FromJSON OntapVolumeConfiguration where
+  parseJSON =
+    Data.withObject
+      "OntapVolumeConfiguration"
+      ( \x ->
+          OntapVolumeConfiguration'
+            Prelude.<$> (x Data..:? "CopyTagsToBackups")
+            Prelude.<*> (x Data..:? "FlexCacheEndpointType")
+            Prelude.<*> (x Data..:? "JunctionPath")
+            Prelude.<*> (x Data..:? "OntapVolumeType")
+            Prelude.<*> (x Data..:? "SecurityStyle")
+            Prelude.<*> (x Data..:? "SizeInMegabytes")
+            Prelude.<*> (x Data..:? "SnapshotPolicy")
+            Prelude.<*> (x Data..:? "StorageEfficiencyEnabled")
+            Prelude.<*> (x Data..:? "StorageVirtualMachineId")
+            Prelude.<*> (x Data..:? "StorageVirtualMachineRoot")
+            Prelude.<*> (x Data..:? "TieringPolicy")
+            Prelude.<*> (x Data..:? "UUID")
+      )
+
+instance Prelude.Hashable OntapVolumeConfiguration where
+  hashWithSalt _salt OntapVolumeConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` copyTagsToBackups
+      `Prelude.hashWithSalt` flexCacheEndpointType
+      `Prelude.hashWithSalt` junctionPath
+      `Prelude.hashWithSalt` ontapVolumeType
+      `Prelude.hashWithSalt` securityStyle
+      `Prelude.hashWithSalt` sizeInMegabytes
+      `Prelude.hashWithSalt` snapshotPolicy
+      `Prelude.hashWithSalt` storageEfficiencyEnabled
+      `Prelude.hashWithSalt` storageVirtualMachineId
+      `Prelude.hashWithSalt` storageVirtualMachineRoot
+      `Prelude.hashWithSalt` tieringPolicy
+      `Prelude.hashWithSalt` uuid
+
+instance Prelude.NFData OntapVolumeConfiguration where
+  rnf OntapVolumeConfiguration' {..} =
+    Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf flexCacheEndpointType
+      `Prelude.seq` Prelude.rnf junctionPath
+      `Prelude.seq` Prelude.rnf ontapVolumeType
+      `Prelude.seq` Prelude.rnf securityStyle
+      `Prelude.seq` Prelude.rnf sizeInMegabytes
+      `Prelude.seq` Prelude.rnf snapshotPolicy
+      `Prelude.seq` Prelude.rnf storageEfficiencyEnabled
+      `Prelude.seq` Prelude.rnf storageVirtualMachineId
+      `Prelude.seq` Prelude.rnf storageVirtualMachineRoot
+      `Prelude.seq` Prelude.rnf tieringPolicy
+      `Prelude.seq` Prelude.rnf uuid
diff --git a/gen/Amazonka/FSx/Types/OntapVolumeType.hs b/gen/Amazonka/FSx/Types/OntapVolumeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OntapVolumeType.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.FSx.Types.OntapVolumeType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OntapVolumeType
+  ( OntapVolumeType
+      ( ..,
+        OntapVolumeType_DP,
+        OntapVolumeType_LS,
+        OntapVolumeType_RW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OntapVolumeType = OntapVolumeType'
+  { fromOntapVolumeType ::
+      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 OntapVolumeType_DP :: OntapVolumeType
+pattern OntapVolumeType_DP = OntapVolumeType' "DP"
+
+pattern OntapVolumeType_LS :: OntapVolumeType
+pattern OntapVolumeType_LS = OntapVolumeType' "LS"
+
+pattern OntapVolumeType_RW :: OntapVolumeType
+pattern OntapVolumeType_RW = OntapVolumeType' "RW"
+
+{-# COMPLETE
+  OntapVolumeType_DP,
+  OntapVolumeType_LS,
+  OntapVolumeType_RW,
+  OntapVolumeType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OpenZFSClientConfiguration.hs b/gen/Amazonka/FSx/Types/OpenZFSClientConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSClientConfiguration.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.FSx.Types.OpenZFSClientConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSClientConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies who can mount an OpenZFS file system and the options available
+-- while mounting the file system.
+--
+-- /See:/ 'newOpenZFSClientConfiguration' smart constructor.
+data OpenZFSClientConfiguration = OpenZFSClientConfiguration'
+  { -- | A value that specifies who can mount the file system. You can provide a
+    -- wildcard character (@*@), an IP address (@0.0.0.0@), or a CIDR address
+    -- (@192.0.2.0\/24@). By default, Amazon FSx uses the wildcard character
+    -- when specifying the client.
+    clients :: Prelude.Text,
+    -- | The options to use when mounting the file system. For a list of options
+    -- that you can use with Network File System (NFS), see the
+    -- <https://linux.die.net/man/5/exports exports(5) - Linux man page>. When
+    -- choosing your options, consider the following:
+    --
+    -- -   @crossmnt@ is used by default. If you don\'t specify @crossmnt@ when
+    --     changing the client configuration, you won\'t be able to see or
+    --     access snapshots in your file system\'s snapshot directory.
+    --
+    -- -   @sync@ is used by default. If you instead specify @async@, the
+    --     system acknowledges writes before writing to disk. If the system
+    --     crashes before the writes are finished, you lose the unwritten data.
+    options :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSClientConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clients', 'openZFSClientConfiguration_clients' - A value that specifies who can mount the file system. You can provide a
+-- wildcard character (@*@), an IP address (@0.0.0.0@), or a CIDR address
+-- (@192.0.2.0\/24@). By default, Amazon FSx uses the wildcard character
+-- when specifying the client.
+--
+-- 'options', 'openZFSClientConfiguration_options' - The options to use when mounting the file system. For a list of options
+-- that you can use with Network File System (NFS), see the
+-- <https://linux.die.net/man/5/exports exports(5) - Linux man page>. When
+-- choosing your options, consider the following:
+--
+-- -   @crossmnt@ is used by default. If you don\'t specify @crossmnt@ when
+--     changing the client configuration, you won\'t be able to see or
+--     access snapshots in your file system\'s snapshot directory.
+--
+-- -   @sync@ is used by default. If you instead specify @async@, the
+--     system acknowledges writes before writing to disk. If the system
+--     crashes before the writes are finished, you lose the unwritten data.
+newOpenZFSClientConfiguration ::
+  -- | 'clients'
+  Prelude.Text ->
+  -- | 'options'
+  Prelude.NonEmpty Prelude.Text ->
+  OpenZFSClientConfiguration
+newOpenZFSClientConfiguration pClients_ pOptions_ =
+  OpenZFSClientConfiguration'
+    { clients = pClients_,
+      options = Lens.coerced Lens.# pOptions_
+    }
+
+-- | A value that specifies who can mount the file system. You can provide a
+-- wildcard character (@*@), an IP address (@0.0.0.0@), or a CIDR address
+-- (@192.0.2.0\/24@). By default, Amazon FSx uses the wildcard character
+-- when specifying the client.
+openZFSClientConfiguration_clients :: Lens.Lens' OpenZFSClientConfiguration Prelude.Text
+openZFSClientConfiguration_clients = Lens.lens (\OpenZFSClientConfiguration' {clients} -> clients) (\s@OpenZFSClientConfiguration' {} a -> s {clients = a} :: OpenZFSClientConfiguration)
+
+-- | The options to use when mounting the file system. For a list of options
+-- that you can use with Network File System (NFS), see the
+-- <https://linux.die.net/man/5/exports exports(5) - Linux man page>. When
+-- choosing your options, consider the following:
+--
+-- -   @crossmnt@ is used by default. If you don\'t specify @crossmnt@ when
+--     changing the client configuration, you won\'t be able to see or
+--     access snapshots in your file system\'s snapshot directory.
+--
+-- -   @sync@ is used by default. If you instead specify @async@, the
+--     system acknowledges writes before writing to disk. If the system
+--     crashes before the writes are finished, you lose the unwritten data.
+openZFSClientConfiguration_options :: Lens.Lens' OpenZFSClientConfiguration (Prelude.NonEmpty Prelude.Text)
+openZFSClientConfiguration_options = Lens.lens (\OpenZFSClientConfiguration' {options} -> options) (\s@OpenZFSClientConfiguration' {} a -> s {options = a} :: OpenZFSClientConfiguration) Prelude.. Lens.coerced
+
+instance Data.FromJSON OpenZFSClientConfiguration where
+  parseJSON =
+    Data.withObject
+      "OpenZFSClientConfiguration"
+      ( \x ->
+          OpenZFSClientConfiguration'
+            Prelude.<$> (x Data..: "Clients")
+            Prelude.<*> (x Data..: "Options")
+      )
+
+instance Prelude.Hashable OpenZFSClientConfiguration where
+  hashWithSalt _salt OpenZFSClientConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` clients
+      `Prelude.hashWithSalt` options
+
+instance Prelude.NFData OpenZFSClientConfiguration where
+  rnf OpenZFSClientConfiguration' {..} =
+    Prelude.rnf clients
+      `Prelude.seq` Prelude.rnf options
+
+instance Data.ToJSON OpenZFSClientConfiguration where
+  toJSON OpenZFSClientConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Clients" Data..= clients),
+            Prelude.Just ("Options" Data..= options)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/OpenZFSCopyStrategy.hs b/gen/Amazonka/FSx/Types/OpenZFSCopyStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSCopyStrategy.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.FSx.Types.OpenZFSCopyStrategy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSCopyStrategy
+  ( OpenZFSCopyStrategy
+      ( ..,
+        OpenZFSCopyStrategy_CLONE,
+        OpenZFSCopyStrategy_FULL_COPY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OpenZFSCopyStrategy = OpenZFSCopyStrategy'
+  { fromOpenZFSCopyStrategy ::
+      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 OpenZFSCopyStrategy_CLONE :: OpenZFSCopyStrategy
+pattern OpenZFSCopyStrategy_CLONE = OpenZFSCopyStrategy' "CLONE"
+
+pattern OpenZFSCopyStrategy_FULL_COPY :: OpenZFSCopyStrategy
+pattern OpenZFSCopyStrategy_FULL_COPY = OpenZFSCopyStrategy' "FULL_COPY"
+
+{-# COMPLETE
+  OpenZFSCopyStrategy_CLONE,
+  OpenZFSCopyStrategy_FULL_COPY,
+  OpenZFSCopyStrategy'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OpenZFSCreateRootVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/OpenZFSCreateRootVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSCreateRootVolumeConfiguration.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.FSx.Types.OpenZFSCreateRootVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSCreateRootVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSDataCompressionType
+import Amazonka.FSx.Types.OpenZFSNfsExport
+import Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration of an Amazon FSx for OpenZFS root volume.
+--
+-- /See:/ 'newOpenZFSCreateRootVolumeConfiguration' smart constructor.
+data OpenZFSCreateRootVolumeConfiguration = OpenZFSCreateRootVolumeConfiguration'
+  { -- | A Boolean value indicating whether tags for the volume should be copied
+    -- to snapshots of the volume. This value defaults to @false@. If it\'s set
+    -- to @true@, all tags for the volume are copied to snapshots where the
+    -- user doesn\'t specify tags. If this value is @true@ and you specify one
+    -- or more tags, only the specified tags are copied to snapshots. If you
+    -- specify one or more tags when creating the snapshot, no tags are copied
+    -- from the volume, regardless of this value.
+    copyTagsToSnapshots :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the method used to compress the data on the volume. The
+    -- compression type is @NONE@ by default.
+    --
+    -- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+    --     default.
+    --
+    -- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+    --     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+    --     better compression ratio to minimize on-disk storage utilization.
+    --
+    -- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+    --     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+    --     delivers higher write throughput speeds.
+    dataCompressionType :: Prelude.Maybe OpenZFSDataCompressionType,
+    -- | The configuration object for mounting a file system.
+    nfsExports :: Prelude.Maybe [OpenZFSNfsExport],
+    -- | A Boolean value indicating whether the volume is read-only. Setting this
+    -- value to @true@ can be useful after you have completed changes to a
+    -- volume and no longer want changes to occur.
+    readOnly :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the record size of an OpenZFS root volume, in kibibytes (KiB).
+    -- Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The
+    -- default is 128 KiB. Most workloads should use the default record size.
+    -- Database workflows can benefit from a smaller record size, while
+    -- streaming workflows can benefit from a larger record size. For
+    -- additional guidance on setting a custom record size, see
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+    -- in the /Amazon FSx for OpenZFS User Guide/.
+    recordSizeKiB :: Prelude.Maybe Prelude.Natural,
+    -- | An object specifying how much storage users or groups can use on the
+    -- volume.
+    userAndGroupQuotas :: Prelude.Maybe [OpenZFSUserOrGroupQuota]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSCreateRootVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToSnapshots', 'openZFSCreateRootVolumeConfiguration_copyTagsToSnapshots' - A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots of the volume. This value defaults to @false@. If it\'s set
+-- to @true@, all tags for the volume are copied to snapshots where the
+-- user doesn\'t specify tags. If this value is @true@ and you specify one
+-- or more tags, only the specified tags are copied to snapshots. If you
+-- specify one or more tags when creating the snapshot, no tags are copied
+-- from the volume, regardless of this value.
+--
+-- 'dataCompressionType', 'openZFSCreateRootVolumeConfiguration_dataCompressionType' - Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+--     better compression ratio to minimize on-disk storage utilization.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+--     delivers higher write throughput speeds.
+--
+-- 'nfsExports', 'openZFSCreateRootVolumeConfiguration_nfsExports' - The configuration object for mounting a file system.
+--
+-- 'readOnly', 'openZFSCreateRootVolumeConfiguration_readOnly' - A Boolean value indicating whether the volume is read-only. Setting this
+-- value to @true@ can be useful after you have completed changes to a
+-- volume and no longer want changes to occur.
+--
+-- 'recordSizeKiB', 'openZFSCreateRootVolumeConfiguration_recordSizeKiB' - Specifies the record size of an OpenZFS root volume, in kibibytes (KiB).
+-- Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The
+-- default is 128 KiB. Most workloads should use the default record size.
+-- Database workflows can benefit from a smaller record size, while
+-- streaming workflows can benefit from a larger record size. For
+-- additional guidance on setting a custom record size, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+--
+-- 'userAndGroupQuotas', 'openZFSCreateRootVolumeConfiguration_userAndGroupQuotas' - An object specifying how much storage users or groups can use on the
+-- volume.
+newOpenZFSCreateRootVolumeConfiguration ::
+  OpenZFSCreateRootVolumeConfiguration
+newOpenZFSCreateRootVolumeConfiguration =
+  OpenZFSCreateRootVolumeConfiguration'
+    { copyTagsToSnapshots =
+        Prelude.Nothing,
+      dataCompressionType = Prelude.Nothing,
+      nfsExports = Prelude.Nothing,
+      readOnly = Prelude.Nothing,
+      recordSizeKiB = Prelude.Nothing,
+      userAndGroupQuotas = Prelude.Nothing
+    }
+
+-- | A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots of the volume. This value defaults to @false@. If it\'s set
+-- to @true@, all tags for the volume are copied to snapshots where the
+-- user doesn\'t specify tags. If this value is @true@ and you specify one
+-- or more tags, only the specified tags are copied to snapshots. If you
+-- specify one or more tags when creating the snapshot, no tags are copied
+-- from the volume, regardless of this value.
+openZFSCreateRootVolumeConfiguration_copyTagsToSnapshots :: Lens.Lens' OpenZFSCreateRootVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSCreateRootVolumeConfiguration_copyTagsToSnapshots = Lens.lens (\OpenZFSCreateRootVolumeConfiguration' {copyTagsToSnapshots} -> copyTagsToSnapshots) (\s@OpenZFSCreateRootVolumeConfiguration' {} a -> s {copyTagsToSnapshots = a} :: OpenZFSCreateRootVolumeConfiguration)
+
+-- | Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+--     better compression ratio to minimize on-disk storage utilization.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+--     delivers higher write throughput speeds.
+openZFSCreateRootVolumeConfiguration_dataCompressionType :: Lens.Lens' OpenZFSCreateRootVolumeConfiguration (Prelude.Maybe OpenZFSDataCompressionType)
+openZFSCreateRootVolumeConfiguration_dataCompressionType = Lens.lens (\OpenZFSCreateRootVolumeConfiguration' {dataCompressionType} -> dataCompressionType) (\s@OpenZFSCreateRootVolumeConfiguration' {} a -> s {dataCompressionType = a} :: OpenZFSCreateRootVolumeConfiguration)
+
+-- | The configuration object for mounting a file system.
+openZFSCreateRootVolumeConfiguration_nfsExports :: Lens.Lens' OpenZFSCreateRootVolumeConfiguration (Prelude.Maybe [OpenZFSNfsExport])
+openZFSCreateRootVolumeConfiguration_nfsExports = Lens.lens (\OpenZFSCreateRootVolumeConfiguration' {nfsExports} -> nfsExports) (\s@OpenZFSCreateRootVolumeConfiguration' {} a -> s {nfsExports = a} :: OpenZFSCreateRootVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | A Boolean value indicating whether the volume is read-only. Setting this
+-- value to @true@ can be useful after you have completed changes to a
+-- volume and no longer want changes to occur.
+openZFSCreateRootVolumeConfiguration_readOnly :: Lens.Lens' OpenZFSCreateRootVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSCreateRootVolumeConfiguration_readOnly = Lens.lens (\OpenZFSCreateRootVolumeConfiguration' {readOnly} -> readOnly) (\s@OpenZFSCreateRootVolumeConfiguration' {} a -> s {readOnly = a} :: OpenZFSCreateRootVolumeConfiguration)
+
+-- | Specifies the record size of an OpenZFS root volume, in kibibytes (KiB).
+-- Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The
+-- default is 128 KiB. Most workloads should use the default record size.
+-- Database workflows can benefit from a smaller record size, while
+-- streaming workflows can benefit from a larger record size. For
+-- additional guidance on setting a custom record size, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+openZFSCreateRootVolumeConfiguration_recordSizeKiB :: Lens.Lens' OpenZFSCreateRootVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+openZFSCreateRootVolumeConfiguration_recordSizeKiB = Lens.lens (\OpenZFSCreateRootVolumeConfiguration' {recordSizeKiB} -> recordSizeKiB) (\s@OpenZFSCreateRootVolumeConfiguration' {} a -> s {recordSizeKiB = a} :: OpenZFSCreateRootVolumeConfiguration)
+
+-- | An object specifying how much storage users or groups can use on the
+-- volume.
+openZFSCreateRootVolumeConfiguration_userAndGroupQuotas :: Lens.Lens' OpenZFSCreateRootVolumeConfiguration (Prelude.Maybe [OpenZFSUserOrGroupQuota])
+openZFSCreateRootVolumeConfiguration_userAndGroupQuotas = Lens.lens (\OpenZFSCreateRootVolumeConfiguration' {userAndGroupQuotas} -> userAndGroupQuotas) (\s@OpenZFSCreateRootVolumeConfiguration' {} a -> s {userAndGroupQuotas = a} :: OpenZFSCreateRootVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    OpenZFSCreateRootVolumeConfiguration
+  where
+  hashWithSalt
+    _salt
+    OpenZFSCreateRootVolumeConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` copyTagsToSnapshots
+        `Prelude.hashWithSalt` dataCompressionType
+        `Prelude.hashWithSalt` nfsExports
+        `Prelude.hashWithSalt` readOnly
+        `Prelude.hashWithSalt` recordSizeKiB
+        `Prelude.hashWithSalt` userAndGroupQuotas
+
+instance
+  Prelude.NFData
+    OpenZFSCreateRootVolumeConfiguration
+  where
+  rnf OpenZFSCreateRootVolumeConfiguration' {..} =
+    Prelude.rnf copyTagsToSnapshots
+      `Prelude.seq` Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf nfsExports
+      `Prelude.seq` Prelude.rnf readOnly
+      `Prelude.seq` Prelude.rnf recordSizeKiB
+      `Prelude.seq` Prelude.rnf userAndGroupQuotas
+
+instance
+  Data.ToJSON
+    OpenZFSCreateRootVolumeConfiguration
+  where
+  toJSON OpenZFSCreateRootVolumeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CopyTagsToSnapshots" Data..=)
+              Prelude.<$> copyTagsToSnapshots,
+            ("DataCompressionType" Data..=)
+              Prelude.<$> dataCompressionType,
+            ("NfsExports" Data..=) Prelude.<$> nfsExports,
+            ("ReadOnly" Data..=) Prelude.<$> readOnly,
+            ("RecordSizeKiB" Data..=) Prelude.<$> recordSizeKiB,
+            ("UserAndGroupQuotas" Data..=)
+              Prelude.<$> userAndGroupQuotas
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/OpenZFSDataCompressionType.hs b/gen/Amazonka/FSx/Types/OpenZFSDataCompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSDataCompressionType.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.FSx.Types.OpenZFSDataCompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSDataCompressionType
+  ( OpenZFSDataCompressionType
+      ( ..,
+        OpenZFSDataCompressionType_LZ4,
+        OpenZFSDataCompressionType_NONE,
+        OpenZFSDataCompressionType_ZSTD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OpenZFSDataCompressionType = OpenZFSDataCompressionType'
+  { fromOpenZFSDataCompressionType ::
+      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 OpenZFSDataCompressionType_LZ4 :: OpenZFSDataCompressionType
+pattern OpenZFSDataCompressionType_LZ4 = OpenZFSDataCompressionType' "LZ4"
+
+pattern OpenZFSDataCompressionType_NONE :: OpenZFSDataCompressionType
+pattern OpenZFSDataCompressionType_NONE = OpenZFSDataCompressionType' "NONE"
+
+pattern OpenZFSDataCompressionType_ZSTD :: OpenZFSDataCompressionType
+pattern OpenZFSDataCompressionType_ZSTD = OpenZFSDataCompressionType' "ZSTD"
+
+{-# COMPLETE
+  OpenZFSDataCompressionType_LZ4,
+  OpenZFSDataCompressionType_NONE,
+  OpenZFSDataCompressionType_ZSTD,
+  OpenZFSDataCompressionType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OpenZFSDeploymentType.hs b/gen/Amazonka/FSx/Types/OpenZFSDeploymentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSDeploymentType.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.FSx.Types.OpenZFSDeploymentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSDeploymentType
+  ( OpenZFSDeploymentType
+      ( ..,
+        OpenZFSDeploymentType_SINGLE_AZ_1,
+        OpenZFSDeploymentType_SINGLE_AZ_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OpenZFSDeploymentType = OpenZFSDeploymentType'
+  { fromOpenZFSDeploymentType ::
+      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 OpenZFSDeploymentType_SINGLE_AZ_1 :: OpenZFSDeploymentType
+pattern OpenZFSDeploymentType_SINGLE_AZ_1 = OpenZFSDeploymentType' "SINGLE_AZ_1"
+
+pattern OpenZFSDeploymentType_SINGLE_AZ_2 :: OpenZFSDeploymentType
+pattern OpenZFSDeploymentType_SINGLE_AZ_2 = OpenZFSDeploymentType' "SINGLE_AZ_2"
+
+{-# COMPLETE
+  OpenZFSDeploymentType_SINGLE_AZ_1,
+  OpenZFSDeploymentType_SINGLE_AZ_2,
+  OpenZFSDeploymentType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OpenZFSFileSystemConfiguration.hs b/gen/Amazonka/FSx/Types/OpenZFSFileSystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSFileSystemConfiguration.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.OpenZFSFileSystemConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSFileSystemConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import Amazonka.FSx.Types.OpenZFSDeploymentType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the Amazon FSx for OpenZFS file system.
+--
+-- /See:/ 'newOpenZFSFileSystemConfiguration' smart constructor.
+data OpenZFSFileSystemConfiguration = OpenZFSFileSystemConfiguration'
+  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | A Boolean value indicating whether tags on the file system should be
+    -- copied to backups. If it\'s set to @true@, all tags on the file system
+    -- are copied to all automatic backups and any user-initiated backups where
+    -- the user doesn\'t specify any tags. If this value is @true@ and you
+    -- specify one or more tags, only the specified tags are copied to backups.
+    -- If you specify one or more tags when creating a user-initiated backup,
+    -- no tags are copied from the file system, regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | A Boolean value indicating whether tags for the volume should be copied
+    -- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+    -- all tags for the volume are copied to snapshots where the user doesn\'t
+    -- specify tags. If this value is @true@ and you specify one or more tags,
+    -- only the specified tags are copied to snapshots. If you specify one or
+    -- more tags when creating the snapshot, no tags are copied from the
+    -- volume, regardless of this value.
+    copyTagsToVolumes :: Prelude.Maybe Prelude.Bool,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the file-system deployment type. Amazon FSx for OpenZFS
+    -- supports  @SINGLE_AZ_1@ and @SINGLE_AZ_2@.
+    deploymentType :: Prelude.Maybe OpenZFSDeploymentType,
+    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
+    -- | The ID of the root volume of the OpenZFS file system.
+    rootVolumeId :: Prelude.Maybe Prelude.Text,
+    -- | The throughput of an Amazon FSx file system, measured in megabytes per
+    -- second (MBps).
+    throughputCapacity :: Prelude.Maybe Prelude.Natural,
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSFileSystemConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automaticBackupRetentionDays', 'openZFSFileSystemConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'copyTagsToBackups', 'openZFSFileSystemConfiguration_copyTagsToBackups' - A Boolean value indicating whether tags on the file system should be
+-- copied to backups. If it\'s set to @true@, all tags on the file system
+-- are copied to all automatic backups and any user-initiated backups where
+-- the user doesn\'t specify any tags. If this value is @true@ and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the file system, regardless of this value.
+--
+-- 'copyTagsToVolumes', 'openZFSFileSystemConfiguration_copyTagsToVolumes' - A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@ and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+--
+-- 'dailyAutomaticBackupStartTime', 'openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'deploymentType', 'openZFSFileSystemConfiguration_deploymentType' - Specifies the file-system deployment type. Amazon FSx for OpenZFS
+-- supports  @SINGLE_AZ_1@ and @SINGLE_AZ_2@.
+--
+-- 'diskIopsConfiguration', 'openZFSFileSystemConfiguration_diskIopsConfiguration' - Undocumented member.
+--
+-- 'rootVolumeId', 'openZFSFileSystemConfiguration_rootVolumeId' - The ID of the root volume of the OpenZFS file system.
+--
+-- 'throughputCapacity', 'openZFSFileSystemConfiguration_throughputCapacity' - The throughput of an Amazon FSx file system, measured in megabytes per
+-- second (MBps).
+--
+-- 'weeklyMaintenanceStartTime', 'openZFSFileSystemConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+newOpenZFSFileSystemConfiguration ::
+  OpenZFSFileSystemConfiguration
+newOpenZFSFileSystemConfiguration =
+  OpenZFSFileSystemConfiguration'
+    { automaticBackupRetentionDays =
+        Prelude.Nothing,
+      copyTagsToBackups = Prelude.Nothing,
+      copyTagsToVolumes = Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      deploymentType = Prelude.Nothing,
+      diskIopsConfiguration = Prelude.Nothing,
+      rootVolumeId = Prelude.Nothing,
+      throughputCapacity = Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+openZFSFileSystemConfiguration_automaticBackupRetentionDays :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+openZFSFileSystemConfiguration_automaticBackupRetentionDays = Lens.lens (\OpenZFSFileSystemConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@OpenZFSFileSystemConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: OpenZFSFileSystemConfiguration)
+
+-- | A Boolean value indicating whether tags on the file system should be
+-- copied to backups. If it\'s set to @true@, all tags on the file system
+-- are copied to all automatic backups and any user-initiated backups where
+-- the user doesn\'t specify any tags. If this value is @true@ and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the file system, regardless of this value.
+openZFSFileSystemConfiguration_copyTagsToBackups :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSFileSystemConfiguration_copyTagsToBackups = Lens.lens (\OpenZFSFileSystemConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@OpenZFSFileSystemConfiguration' {} a -> s {copyTagsToBackups = a} :: OpenZFSFileSystemConfiguration)
+
+-- | A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@ and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+openZFSFileSystemConfiguration_copyTagsToVolumes :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSFileSystemConfiguration_copyTagsToVolumes = Lens.lens (\OpenZFSFileSystemConfiguration' {copyTagsToVolumes} -> copyTagsToVolumes) (\s@OpenZFSFileSystemConfiguration' {} a -> s {copyTagsToVolumes = a} :: OpenZFSFileSystemConfiguration)
+
+-- | Undocumented member.
+openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\OpenZFSFileSystemConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@OpenZFSFileSystemConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: OpenZFSFileSystemConfiguration)
+
+-- | Specifies the file-system deployment type. Amazon FSx for OpenZFS
+-- supports  @SINGLE_AZ_1@ and @SINGLE_AZ_2@.
+openZFSFileSystemConfiguration_deploymentType :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe OpenZFSDeploymentType)
+openZFSFileSystemConfiguration_deploymentType = Lens.lens (\OpenZFSFileSystemConfiguration' {deploymentType} -> deploymentType) (\s@OpenZFSFileSystemConfiguration' {} a -> s {deploymentType = a} :: OpenZFSFileSystemConfiguration)
+
+-- | Undocumented member.
+openZFSFileSystemConfiguration_diskIopsConfiguration :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe DiskIopsConfiguration)
+openZFSFileSystemConfiguration_diskIopsConfiguration = Lens.lens (\OpenZFSFileSystemConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@OpenZFSFileSystemConfiguration' {} a -> s {diskIopsConfiguration = a} :: OpenZFSFileSystemConfiguration)
+
+-- | The ID of the root volume of the OpenZFS file system.
+openZFSFileSystemConfiguration_rootVolumeId :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+openZFSFileSystemConfiguration_rootVolumeId = Lens.lens (\OpenZFSFileSystemConfiguration' {rootVolumeId} -> rootVolumeId) (\s@OpenZFSFileSystemConfiguration' {} a -> s {rootVolumeId = a} :: OpenZFSFileSystemConfiguration)
+
+-- | The throughput of an Amazon FSx file system, measured in megabytes per
+-- second (MBps).
+openZFSFileSystemConfiguration_throughputCapacity :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+openZFSFileSystemConfiguration_throughputCapacity = Lens.lens (\OpenZFSFileSystemConfiguration' {throughputCapacity} -> throughputCapacity) (\s@OpenZFSFileSystemConfiguration' {} a -> s {throughputCapacity = a} :: OpenZFSFileSystemConfiguration)
+
+-- | Undocumented member.
+openZFSFileSystemConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+openZFSFileSystemConfiguration_weeklyMaintenanceStartTime = Lens.lens (\OpenZFSFileSystemConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@OpenZFSFileSystemConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: OpenZFSFileSystemConfiguration)
+
+instance Data.FromJSON OpenZFSFileSystemConfiguration where
+  parseJSON =
+    Data.withObject
+      "OpenZFSFileSystemConfiguration"
+      ( \x ->
+          OpenZFSFileSystemConfiguration'
+            Prelude.<$> (x Data..:? "AutomaticBackupRetentionDays")
+            Prelude.<*> (x Data..:? "CopyTagsToBackups")
+            Prelude.<*> (x Data..:? "CopyTagsToVolumes")
+            Prelude.<*> (x Data..:? "DailyAutomaticBackupStartTime")
+            Prelude.<*> (x Data..:? "DeploymentType")
+            Prelude.<*> (x Data..:? "DiskIopsConfiguration")
+            Prelude.<*> (x Data..:? "RootVolumeId")
+            Prelude.<*> (x Data..:? "ThroughputCapacity")
+            Prelude.<*> (x Data..:? "WeeklyMaintenanceStartTime")
+      )
+
+instance
+  Prelude.Hashable
+    OpenZFSFileSystemConfiguration
+  where
+  hashWithSalt
+    _salt
+    OpenZFSFileSystemConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` copyTagsToVolumes
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` diskIopsConfiguration
+        `Prelude.hashWithSalt` rootVolumeId
+        `Prelude.hashWithSalt` throughputCapacity
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    OpenZFSFileSystemConfiguration
+  where
+  rnf OpenZFSFileSystemConfiguration' {..} =
+    Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf copyTagsToVolumes
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf diskIopsConfiguration
+      `Prelude.seq` Prelude.rnf rootVolumeId
+      `Prelude.seq` Prelude.rnf throughputCapacity
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
diff --git a/gen/Amazonka/FSx/Types/OpenZFSNfsExport.hs b/gen/Amazonka/FSx/Types/OpenZFSNfsExport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSNfsExport.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.FSx.Types.OpenZFSNfsExport
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSNfsExport where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSClientConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Network File System (NFS) configurations for mounting an Amazon FSx
+-- for OpenZFS file system.
+--
+-- /See:/ 'newOpenZFSNfsExport' smart constructor.
+data OpenZFSNfsExport = OpenZFSNfsExport'
+  { -- | A list of configuration objects that contain the client and options for
+    -- mounting the OpenZFS file system.
+    clientConfigurations :: [OpenZFSClientConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSNfsExport' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientConfigurations', 'openZFSNfsExport_clientConfigurations' - A list of configuration objects that contain the client and options for
+-- mounting the OpenZFS file system.
+newOpenZFSNfsExport ::
+  OpenZFSNfsExport
+newOpenZFSNfsExport =
+  OpenZFSNfsExport'
+    { clientConfigurations =
+        Prelude.mempty
+    }
+
+-- | A list of configuration objects that contain the client and options for
+-- mounting the OpenZFS file system.
+openZFSNfsExport_clientConfigurations :: Lens.Lens' OpenZFSNfsExport [OpenZFSClientConfiguration]
+openZFSNfsExport_clientConfigurations = Lens.lens (\OpenZFSNfsExport' {clientConfigurations} -> clientConfigurations) (\s@OpenZFSNfsExport' {} a -> s {clientConfigurations = a} :: OpenZFSNfsExport) Prelude.. Lens.coerced
+
+instance Data.FromJSON OpenZFSNfsExport where
+  parseJSON =
+    Data.withObject
+      "OpenZFSNfsExport"
+      ( \x ->
+          OpenZFSNfsExport'
+            Prelude.<$> ( x
+                            Data..:? "ClientConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable OpenZFSNfsExport where
+  hashWithSalt _salt OpenZFSNfsExport' {..} =
+    _salt `Prelude.hashWithSalt` clientConfigurations
+
+instance Prelude.NFData OpenZFSNfsExport where
+  rnf OpenZFSNfsExport' {..} =
+    Prelude.rnf clientConfigurations
+
+instance Data.ToJSON OpenZFSNfsExport where
+  toJSON OpenZFSNfsExport' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ClientConfigurations"
+                  Data..= clientConfigurations
+              )
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/OpenZFSOriginSnapshotConfiguration.hs b/gen/Amazonka/FSx/Types/OpenZFSOriginSnapshotConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSOriginSnapshotConfiguration.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.FSx.Types.OpenZFSOriginSnapshotConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSOriginSnapshotConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSCopyStrategy
+import qualified Amazonka.Prelude as Prelude
+
+-- | The snapshot configuration to use when creating an OpenZFS volume from a
+-- snapshot.
+--
+-- /See:/ 'newOpenZFSOriginSnapshotConfiguration' smart constructor.
+data OpenZFSOriginSnapshotConfiguration = OpenZFSOriginSnapshotConfiguration'
+  { -- | The strategy used when copying data from the snapshot to the new volume.
+    --
+    -- -   @CLONE@ - The new volume references the data in the origin snapshot.
+    --     Cloning a snapshot is faster than copying the data from a snapshot
+    --     to a new volume and doesn\'t consume disk throughput. However, the
+    --     origin snapshot can\'t be deleted if there is a volume using its
+    --     copied data.
+    --
+    -- -   @FULL_COPY@ - Copies all data from the snapshot to the new volume.
+    copyStrategy :: Prelude.Maybe OpenZFSCopyStrategy,
+    snapshotARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSOriginSnapshotConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyStrategy', 'openZFSOriginSnapshotConfiguration_copyStrategy' - The strategy used when copying data from the snapshot to the new volume.
+--
+-- -   @CLONE@ - The new volume references the data in the origin snapshot.
+--     Cloning a snapshot is faster than copying the data from a snapshot
+--     to a new volume and doesn\'t consume disk throughput. However, the
+--     origin snapshot can\'t be deleted if there is a volume using its
+--     copied data.
+--
+-- -   @FULL_COPY@ - Copies all data from the snapshot to the new volume.
+--
+-- 'snapshotARN', 'openZFSOriginSnapshotConfiguration_snapshotARN' - Undocumented member.
+newOpenZFSOriginSnapshotConfiguration ::
+  OpenZFSOriginSnapshotConfiguration
+newOpenZFSOriginSnapshotConfiguration =
+  OpenZFSOriginSnapshotConfiguration'
+    { copyStrategy =
+        Prelude.Nothing,
+      snapshotARN = Prelude.Nothing
+    }
+
+-- | The strategy used when copying data from the snapshot to the new volume.
+--
+-- -   @CLONE@ - The new volume references the data in the origin snapshot.
+--     Cloning a snapshot is faster than copying the data from a snapshot
+--     to a new volume and doesn\'t consume disk throughput. However, the
+--     origin snapshot can\'t be deleted if there is a volume using its
+--     copied data.
+--
+-- -   @FULL_COPY@ - Copies all data from the snapshot to the new volume.
+openZFSOriginSnapshotConfiguration_copyStrategy :: Lens.Lens' OpenZFSOriginSnapshotConfiguration (Prelude.Maybe OpenZFSCopyStrategy)
+openZFSOriginSnapshotConfiguration_copyStrategy = Lens.lens (\OpenZFSOriginSnapshotConfiguration' {copyStrategy} -> copyStrategy) (\s@OpenZFSOriginSnapshotConfiguration' {} a -> s {copyStrategy = a} :: OpenZFSOriginSnapshotConfiguration)
+
+-- | Undocumented member.
+openZFSOriginSnapshotConfiguration_snapshotARN :: Lens.Lens' OpenZFSOriginSnapshotConfiguration (Prelude.Maybe Prelude.Text)
+openZFSOriginSnapshotConfiguration_snapshotARN = Lens.lens (\OpenZFSOriginSnapshotConfiguration' {snapshotARN} -> snapshotARN) (\s@OpenZFSOriginSnapshotConfiguration' {} a -> s {snapshotARN = a} :: OpenZFSOriginSnapshotConfiguration)
+
+instance
+  Data.FromJSON
+    OpenZFSOriginSnapshotConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "OpenZFSOriginSnapshotConfiguration"
+      ( \x ->
+          OpenZFSOriginSnapshotConfiguration'
+            Prelude.<$> (x Data..:? "CopyStrategy")
+            Prelude.<*> (x Data..:? "SnapshotARN")
+      )
+
+instance
+  Prelude.Hashable
+    OpenZFSOriginSnapshotConfiguration
+  where
+  hashWithSalt
+    _salt
+    OpenZFSOriginSnapshotConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` copyStrategy
+        `Prelude.hashWithSalt` snapshotARN
+
+instance
+  Prelude.NFData
+    OpenZFSOriginSnapshotConfiguration
+  where
+  rnf OpenZFSOriginSnapshotConfiguration' {..} =
+    Prelude.rnf copyStrategy
+      `Prelude.seq` Prelude.rnf snapshotARN
diff --git a/gen/Amazonka/FSx/Types/OpenZFSQuotaType.hs b/gen/Amazonka/FSx/Types/OpenZFSQuotaType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSQuotaType.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.FSx.Types.OpenZFSQuotaType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSQuotaType
+  ( OpenZFSQuotaType
+      ( ..,
+        OpenZFSQuotaType_GROUP,
+        OpenZFSQuotaType_USER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OpenZFSQuotaType = OpenZFSQuotaType'
+  { fromOpenZFSQuotaType ::
+      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 OpenZFSQuotaType_GROUP :: OpenZFSQuotaType
+pattern OpenZFSQuotaType_GROUP = OpenZFSQuotaType' "GROUP"
+
+pattern OpenZFSQuotaType_USER :: OpenZFSQuotaType
+pattern OpenZFSQuotaType_USER = OpenZFSQuotaType' "USER"
+
+{-# COMPLETE
+  OpenZFSQuotaType_GROUP,
+  OpenZFSQuotaType_USER,
+  OpenZFSQuotaType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/OpenZFSUserOrGroupQuota.hs b/gen/Amazonka/FSx/Types/OpenZFSUserOrGroupQuota.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSUserOrGroupQuota.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.FSx.Types.OpenZFSUserOrGroupQuota
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSUserOrGroupQuota where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSQuotaType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for how much storage a user or group can use on the
+-- volume.
+--
+-- /See:/ 'newOpenZFSUserOrGroupQuota' smart constructor.
+data OpenZFSUserOrGroupQuota = OpenZFSUserOrGroupQuota'
+  { -- | A value that specifies whether the quota applies to a user or group.
+    type' :: OpenZFSQuotaType,
+    -- | The ID of the user or group.
+    id :: Prelude.Natural,
+    -- | The amount of storage that the user or group can use in gibibytes (GiB).
+    storageCapacityQuotaGiB :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSUserOrGroupQuota' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'type'', 'openZFSUserOrGroupQuota_type' - A value that specifies whether the quota applies to a user or group.
+--
+-- 'id', 'openZFSUserOrGroupQuota_id' - The ID of the user or group.
+--
+-- 'storageCapacityQuotaGiB', 'openZFSUserOrGroupQuota_storageCapacityQuotaGiB' - The amount of storage that the user or group can use in gibibytes (GiB).
+newOpenZFSUserOrGroupQuota ::
+  -- | 'type''
+  OpenZFSQuotaType ->
+  -- | 'id'
+  Prelude.Natural ->
+  -- | 'storageCapacityQuotaGiB'
+  Prelude.Natural ->
+  OpenZFSUserOrGroupQuota
+newOpenZFSUserOrGroupQuota
+  pType_
+  pId_
+  pStorageCapacityQuotaGiB_ =
+    OpenZFSUserOrGroupQuota'
+      { type' = pType_,
+        id = pId_,
+        storageCapacityQuotaGiB =
+          pStorageCapacityQuotaGiB_
+      }
+
+-- | A value that specifies whether the quota applies to a user or group.
+openZFSUserOrGroupQuota_type :: Lens.Lens' OpenZFSUserOrGroupQuota OpenZFSQuotaType
+openZFSUserOrGroupQuota_type = Lens.lens (\OpenZFSUserOrGroupQuota' {type'} -> type') (\s@OpenZFSUserOrGroupQuota' {} a -> s {type' = a} :: OpenZFSUserOrGroupQuota)
+
+-- | The ID of the user or group.
+openZFSUserOrGroupQuota_id :: Lens.Lens' OpenZFSUserOrGroupQuota Prelude.Natural
+openZFSUserOrGroupQuota_id = Lens.lens (\OpenZFSUserOrGroupQuota' {id} -> id) (\s@OpenZFSUserOrGroupQuota' {} a -> s {id = a} :: OpenZFSUserOrGroupQuota)
+
+-- | The amount of storage that the user or group can use in gibibytes (GiB).
+openZFSUserOrGroupQuota_storageCapacityQuotaGiB :: Lens.Lens' OpenZFSUserOrGroupQuota Prelude.Natural
+openZFSUserOrGroupQuota_storageCapacityQuotaGiB = Lens.lens (\OpenZFSUserOrGroupQuota' {storageCapacityQuotaGiB} -> storageCapacityQuotaGiB) (\s@OpenZFSUserOrGroupQuota' {} a -> s {storageCapacityQuotaGiB = a} :: OpenZFSUserOrGroupQuota)
+
+instance Data.FromJSON OpenZFSUserOrGroupQuota where
+  parseJSON =
+    Data.withObject
+      "OpenZFSUserOrGroupQuota"
+      ( \x ->
+          OpenZFSUserOrGroupQuota'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> (x Data..: "Id")
+            Prelude.<*> (x Data..: "StorageCapacityQuotaGiB")
+      )
+
+instance Prelude.Hashable OpenZFSUserOrGroupQuota where
+  hashWithSalt _salt OpenZFSUserOrGroupQuota' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` storageCapacityQuotaGiB
+
+instance Prelude.NFData OpenZFSUserOrGroupQuota where
+  rnf OpenZFSUserOrGroupQuota' {..} =
+    Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf storageCapacityQuotaGiB
+
+instance Data.ToJSON OpenZFSUserOrGroupQuota where
+  toJSON OpenZFSUserOrGroupQuota' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Id" Data..= id),
+            Prelude.Just
+              ( "StorageCapacityQuotaGiB"
+                  Data..= storageCapacityQuotaGiB
+              )
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/OpenZFSVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/OpenZFSVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/OpenZFSVolumeConfiguration.hs
@@ -0,0 +1,338 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.OpenZFSVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.OpenZFSVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSDataCompressionType
+import Amazonka.FSx.Types.OpenZFSNfsExport
+import Amazonka.FSx.Types.OpenZFSOriginSnapshotConfiguration
+import Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration of an Amazon FSx for OpenZFS volume.
+--
+-- /See:/ 'newOpenZFSVolumeConfiguration' smart constructor.
+data OpenZFSVolumeConfiguration = OpenZFSVolumeConfiguration'
+  { -- | A Boolean value indicating whether tags for the volume should be copied
+    -- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+    -- all tags for the volume are copied to snapshots where the user doesn\'t
+    -- specify tags. If this value is @true@ and you specify one or more tags,
+    -- only the specified tags are copied to snapshots. If you specify one or
+    -- more tags when creating the snapshot, no tags are copied from the
+    -- volume, regardless of this value.
+    copyTagsToSnapshots :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the method used to compress the data on the volume. The
+    -- compression type is @NONE@ by default.
+    --
+    -- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+    --     default.
+    --
+    -- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+    --     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+    --     better compression ratio to minimize on-disk storage utilization.
+    --
+    -- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+    --     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+    --     delivers higher write throughput speeds.
+    dataCompressionType :: Prelude.Maybe OpenZFSDataCompressionType,
+    -- | A Boolean value indicating whether dependent clone volumes created from
+    -- intermediate snapshots should be deleted when a volume is restored from
+    -- snapshot.
+    deleteClonedVolumes :: Prelude.Maybe Prelude.Bool,
+    -- | A Boolean value indicating whether snapshots between the current state
+    -- and the specified snapshot should be deleted when a volume is restored
+    -- from snapshot.
+    deleteIntermediateSnaphots :: Prelude.Maybe Prelude.Bool,
+    -- | The configuration object for mounting a Network File System (NFS) file
+    -- system.
+    nfsExports :: Prelude.Maybe [OpenZFSNfsExport],
+    -- | The configuration object that specifies the snapshot to use as the
+    -- origin of the data for the volume.
+    originSnapshot :: Prelude.Maybe OpenZFSOriginSnapshotConfiguration,
+    -- | The ID of the parent volume.
+    parentVolumeId :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean value indicating whether the volume is read-only.
+    readOnly :: Prelude.Maybe Prelude.Bool,
+    -- | The record size of an OpenZFS volume, in kibibytes (KiB). Valid values
+    -- are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is 128
+    -- KiB. Most workloads should use the default record size. For guidance on
+    -- when to set a custom record size, see the /Amazon FSx for OpenZFS User
+    -- Guide/.
+    recordSizeKiB :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies the ID of the snapshot to which the volume was restored.
+    restoreToSnapshot :: Prelude.Maybe Prelude.Text,
+    -- | The maximum amount of storage in gibibtyes (GiB) that the volume can use
+    -- from its parent. You can specify a quota larger than the storage on the
+    -- parent volume.
+    storageCapacityQuotaGiB :: Prelude.Maybe Prelude.Natural,
+    -- | The amount of storage in gibibytes (GiB) to reserve from the parent
+    -- volume. You can\'t reserve more storage than the parent volume has
+    -- reserved.
+    storageCapacityReservationGiB :: Prelude.Maybe Prelude.Natural,
+    -- | An object specifying how much storage users or groups can use on the
+    -- volume.
+    userAndGroupQuotas :: Prelude.Maybe [OpenZFSUserOrGroupQuota],
+    -- | The path to the volume from the root volume. For example,
+    -- @fsx\/parentVolume\/volume1@.
+    volumePath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpenZFSVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToSnapshots', 'openZFSVolumeConfiguration_copyTagsToSnapshots' - A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@ and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+--
+-- 'dataCompressionType', 'openZFSVolumeConfiguration_dataCompressionType' - Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+--     better compression ratio to minimize on-disk storage utilization.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+--     delivers higher write throughput speeds.
+--
+-- 'deleteClonedVolumes', 'openZFSVolumeConfiguration_deleteClonedVolumes' - A Boolean value indicating whether dependent clone volumes created from
+-- intermediate snapshots should be deleted when a volume is restored from
+-- snapshot.
+--
+-- 'deleteIntermediateSnaphots', 'openZFSVolumeConfiguration_deleteIntermediateSnaphots' - A Boolean value indicating whether snapshots between the current state
+-- and the specified snapshot should be deleted when a volume is restored
+-- from snapshot.
+--
+-- 'nfsExports', 'openZFSVolumeConfiguration_nfsExports' - The configuration object for mounting a Network File System (NFS) file
+-- system.
+--
+-- 'originSnapshot', 'openZFSVolumeConfiguration_originSnapshot' - The configuration object that specifies the snapshot to use as the
+-- origin of the data for the volume.
+--
+-- 'parentVolumeId', 'openZFSVolumeConfiguration_parentVolumeId' - The ID of the parent volume.
+--
+-- 'readOnly', 'openZFSVolumeConfiguration_readOnly' - A Boolean value indicating whether the volume is read-only.
+--
+-- 'recordSizeKiB', 'openZFSVolumeConfiguration_recordSizeKiB' - The record size of an OpenZFS volume, in kibibytes (KiB). Valid values
+-- are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is 128
+-- KiB. Most workloads should use the default record size. For guidance on
+-- when to set a custom record size, see the /Amazon FSx for OpenZFS User
+-- Guide/.
+--
+-- 'restoreToSnapshot', 'openZFSVolumeConfiguration_restoreToSnapshot' - Specifies the ID of the snapshot to which the volume was restored.
+--
+-- 'storageCapacityQuotaGiB', 'openZFSVolumeConfiguration_storageCapacityQuotaGiB' - The maximum amount of storage in gibibtyes (GiB) that the volume can use
+-- from its parent. You can specify a quota larger than the storage on the
+-- parent volume.
+--
+-- 'storageCapacityReservationGiB', 'openZFSVolumeConfiguration_storageCapacityReservationGiB' - The amount of storage in gibibytes (GiB) to reserve from the parent
+-- volume. You can\'t reserve more storage than the parent volume has
+-- reserved.
+--
+-- 'userAndGroupQuotas', 'openZFSVolumeConfiguration_userAndGroupQuotas' - An object specifying how much storage users or groups can use on the
+-- volume.
+--
+-- 'volumePath', 'openZFSVolumeConfiguration_volumePath' - The path to the volume from the root volume. For example,
+-- @fsx\/parentVolume\/volume1@.
+newOpenZFSVolumeConfiguration ::
+  OpenZFSVolumeConfiguration
+newOpenZFSVolumeConfiguration =
+  OpenZFSVolumeConfiguration'
+    { copyTagsToSnapshots =
+        Prelude.Nothing,
+      dataCompressionType = Prelude.Nothing,
+      deleteClonedVolumes = Prelude.Nothing,
+      deleteIntermediateSnaphots = Prelude.Nothing,
+      nfsExports = Prelude.Nothing,
+      originSnapshot = Prelude.Nothing,
+      parentVolumeId = Prelude.Nothing,
+      readOnly = Prelude.Nothing,
+      recordSizeKiB = Prelude.Nothing,
+      restoreToSnapshot = Prelude.Nothing,
+      storageCapacityQuotaGiB = Prelude.Nothing,
+      storageCapacityReservationGiB = Prelude.Nothing,
+      userAndGroupQuotas = Prelude.Nothing,
+      volumePath = Prelude.Nothing
+    }
+
+-- | A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@ and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+openZFSVolumeConfiguration_copyTagsToSnapshots :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSVolumeConfiguration_copyTagsToSnapshots = Lens.lens (\OpenZFSVolumeConfiguration' {copyTagsToSnapshots} -> copyTagsToSnapshots) (\s@OpenZFSVolumeConfiguration' {} a -> s {copyTagsToSnapshots = a} :: OpenZFSVolumeConfiguration)
+
+-- | Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+--     better compression ratio to minimize on-disk storage utilization.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+--     delivers higher write throughput speeds.
+openZFSVolumeConfiguration_dataCompressionType :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe OpenZFSDataCompressionType)
+openZFSVolumeConfiguration_dataCompressionType = Lens.lens (\OpenZFSVolumeConfiguration' {dataCompressionType} -> dataCompressionType) (\s@OpenZFSVolumeConfiguration' {} a -> s {dataCompressionType = a} :: OpenZFSVolumeConfiguration)
+
+-- | A Boolean value indicating whether dependent clone volumes created from
+-- intermediate snapshots should be deleted when a volume is restored from
+-- snapshot.
+openZFSVolumeConfiguration_deleteClonedVolumes :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSVolumeConfiguration_deleteClonedVolumes = Lens.lens (\OpenZFSVolumeConfiguration' {deleteClonedVolumes} -> deleteClonedVolumes) (\s@OpenZFSVolumeConfiguration' {} a -> s {deleteClonedVolumes = a} :: OpenZFSVolumeConfiguration)
+
+-- | A Boolean value indicating whether snapshots between the current state
+-- and the specified snapshot should be deleted when a volume is restored
+-- from snapshot.
+openZFSVolumeConfiguration_deleteIntermediateSnaphots :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSVolumeConfiguration_deleteIntermediateSnaphots = Lens.lens (\OpenZFSVolumeConfiguration' {deleteIntermediateSnaphots} -> deleteIntermediateSnaphots) (\s@OpenZFSVolumeConfiguration' {} a -> s {deleteIntermediateSnaphots = a} :: OpenZFSVolumeConfiguration)
+
+-- | The configuration object for mounting a Network File System (NFS) file
+-- system.
+openZFSVolumeConfiguration_nfsExports :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe [OpenZFSNfsExport])
+openZFSVolumeConfiguration_nfsExports = Lens.lens (\OpenZFSVolumeConfiguration' {nfsExports} -> nfsExports) (\s@OpenZFSVolumeConfiguration' {} a -> s {nfsExports = a} :: OpenZFSVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration object that specifies the snapshot to use as the
+-- origin of the data for the volume.
+openZFSVolumeConfiguration_originSnapshot :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe OpenZFSOriginSnapshotConfiguration)
+openZFSVolumeConfiguration_originSnapshot = Lens.lens (\OpenZFSVolumeConfiguration' {originSnapshot} -> originSnapshot) (\s@OpenZFSVolumeConfiguration' {} a -> s {originSnapshot = a} :: OpenZFSVolumeConfiguration)
+
+-- | The ID of the parent volume.
+openZFSVolumeConfiguration_parentVolumeId :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Text)
+openZFSVolumeConfiguration_parentVolumeId = Lens.lens (\OpenZFSVolumeConfiguration' {parentVolumeId} -> parentVolumeId) (\s@OpenZFSVolumeConfiguration' {} a -> s {parentVolumeId = a} :: OpenZFSVolumeConfiguration)
+
+-- | A Boolean value indicating whether the volume is read-only.
+openZFSVolumeConfiguration_readOnly :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+openZFSVolumeConfiguration_readOnly = Lens.lens (\OpenZFSVolumeConfiguration' {readOnly} -> readOnly) (\s@OpenZFSVolumeConfiguration' {} a -> s {readOnly = a} :: OpenZFSVolumeConfiguration)
+
+-- | The record size of an OpenZFS volume, in kibibytes (KiB). Valid values
+-- are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is 128
+-- KiB. Most workloads should use the default record size. For guidance on
+-- when to set a custom record size, see the /Amazon FSx for OpenZFS User
+-- Guide/.
+openZFSVolumeConfiguration_recordSizeKiB :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+openZFSVolumeConfiguration_recordSizeKiB = Lens.lens (\OpenZFSVolumeConfiguration' {recordSizeKiB} -> recordSizeKiB) (\s@OpenZFSVolumeConfiguration' {} a -> s {recordSizeKiB = a} :: OpenZFSVolumeConfiguration)
+
+-- | Specifies the ID of the snapshot to which the volume was restored.
+openZFSVolumeConfiguration_restoreToSnapshot :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Text)
+openZFSVolumeConfiguration_restoreToSnapshot = Lens.lens (\OpenZFSVolumeConfiguration' {restoreToSnapshot} -> restoreToSnapshot) (\s@OpenZFSVolumeConfiguration' {} a -> s {restoreToSnapshot = a} :: OpenZFSVolumeConfiguration)
+
+-- | The maximum amount of storage in gibibtyes (GiB) that the volume can use
+-- from its parent. You can specify a quota larger than the storage on the
+-- parent volume.
+openZFSVolumeConfiguration_storageCapacityQuotaGiB :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+openZFSVolumeConfiguration_storageCapacityQuotaGiB = Lens.lens (\OpenZFSVolumeConfiguration' {storageCapacityQuotaGiB} -> storageCapacityQuotaGiB) (\s@OpenZFSVolumeConfiguration' {} a -> s {storageCapacityQuotaGiB = a} :: OpenZFSVolumeConfiguration)
+
+-- | The amount of storage in gibibytes (GiB) to reserve from the parent
+-- volume. You can\'t reserve more storage than the parent volume has
+-- reserved.
+openZFSVolumeConfiguration_storageCapacityReservationGiB :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+openZFSVolumeConfiguration_storageCapacityReservationGiB = Lens.lens (\OpenZFSVolumeConfiguration' {storageCapacityReservationGiB} -> storageCapacityReservationGiB) (\s@OpenZFSVolumeConfiguration' {} a -> s {storageCapacityReservationGiB = a} :: OpenZFSVolumeConfiguration)
+
+-- | An object specifying how much storage users or groups can use on the
+-- volume.
+openZFSVolumeConfiguration_userAndGroupQuotas :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe [OpenZFSUserOrGroupQuota])
+openZFSVolumeConfiguration_userAndGroupQuotas = Lens.lens (\OpenZFSVolumeConfiguration' {userAndGroupQuotas} -> userAndGroupQuotas) (\s@OpenZFSVolumeConfiguration' {} a -> s {userAndGroupQuotas = a} :: OpenZFSVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The path to the volume from the root volume. For example,
+-- @fsx\/parentVolume\/volume1@.
+openZFSVolumeConfiguration_volumePath :: Lens.Lens' OpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Text)
+openZFSVolumeConfiguration_volumePath = Lens.lens (\OpenZFSVolumeConfiguration' {volumePath} -> volumePath) (\s@OpenZFSVolumeConfiguration' {} a -> s {volumePath = a} :: OpenZFSVolumeConfiguration)
+
+instance Data.FromJSON OpenZFSVolumeConfiguration where
+  parseJSON =
+    Data.withObject
+      "OpenZFSVolumeConfiguration"
+      ( \x ->
+          OpenZFSVolumeConfiguration'
+            Prelude.<$> (x Data..:? "CopyTagsToSnapshots")
+            Prelude.<*> (x Data..:? "DataCompressionType")
+            Prelude.<*> (x Data..:? "DeleteClonedVolumes")
+            Prelude.<*> (x Data..:? "DeleteIntermediateSnaphots")
+            Prelude.<*> (x Data..:? "NfsExports" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "OriginSnapshot")
+            Prelude.<*> (x Data..:? "ParentVolumeId")
+            Prelude.<*> (x Data..:? "ReadOnly")
+            Prelude.<*> (x Data..:? "RecordSizeKiB")
+            Prelude.<*> (x Data..:? "RestoreToSnapshot")
+            Prelude.<*> (x Data..:? "StorageCapacityQuotaGiB")
+            Prelude.<*> (x Data..:? "StorageCapacityReservationGiB")
+            Prelude.<*> ( x
+                            Data..:? "UserAndGroupQuotas"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "VolumePath")
+      )
+
+instance Prelude.Hashable OpenZFSVolumeConfiguration where
+  hashWithSalt _salt OpenZFSVolumeConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` copyTagsToSnapshots
+      `Prelude.hashWithSalt` dataCompressionType
+      `Prelude.hashWithSalt` deleteClonedVolumes
+      `Prelude.hashWithSalt` deleteIntermediateSnaphots
+      `Prelude.hashWithSalt` nfsExports
+      `Prelude.hashWithSalt` originSnapshot
+      `Prelude.hashWithSalt` parentVolumeId
+      `Prelude.hashWithSalt` readOnly
+      `Prelude.hashWithSalt` recordSizeKiB
+      `Prelude.hashWithSalt` restoreToSnapshot
+      `Prelude.hashWithSalt` storageCapacityQuotaGiB
+      `Prelude.hashWithSalt` storageCapacityReservationGiB
+      `Prelude.hashWithSalt` userAndGroupQuotas
+      `Prelude.hashWithSalt` volumePath
+
+instance Prelude.NFData OpenZFSVolumeConfiguration where
+  rnf OpenZFSVolumeConfiguration' {..} =
+    Prelude.rnf copyTagsToSnapshots
+      `Prelude.seq` Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf deleteClonedVolumes
+      `Prelude.seq` Prelude.rnf deleteIntermediateSnaphots
+      `Prelude.seq` Prelude.rnf nfsExports
+      `Prelude.seq` Prelude.rnf originSnapshot
+      `Prelude.seq` Prelude.rnf parentVolumeId
+      `Prelude.seq` Prelude.rnf readOnly
+      `Prelude.seq` Prelude.rnf recordSizeKiB
+      `Prelude.seq` Prelude.rnf restoreToSnapshot
+      `Prelude.seq` Prelude.rnf storageCapacityQuotaGiB
+      `Prelude.seq` Prelude.rnf storageCapacityReservationGiB
+      `Prelude.seq` Prelude.rnf userAndGroupQuotas
+      `Prelude.seq` Prelude.rnf volumePath
diff --git a/gen/Amazonka/FSx/Types/ReportFormat.hs b/gen/Amazonka/FSx/Types/ReportFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/ReportFormat.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.FSx.Types.ReportFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.ReportFormat
+  ( ReportFormat
+      ( ..,
+        ReportFormat_REPORT_CSV_20191124
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReportFormat = ReportFormat'
+  { fromReportFormat ::
+      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 ReportFormat_REPORT_CSV_20191124 :: ReportFormat
+pattern ReportFormat_REPORT_CSV_20191124 = ReportFormat' "REPORT_CSV_20191124"
+
+{-# COMPLETE
+  ReportFormat_REPORT_CSV_20191124,
+  ReportFormat'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/ReportScope.hs b/gen/Amazonka/FSx/Types/ReportScope.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/ReportScope.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.FSx.Types.ReportScope
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.ReportScope
+  ( ReportScope
+      ( ..,
+        ReportScope_FAILED_FILES_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReportScope = ReportScope'
+  { fromReportScope ::
+      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 ReportScope_FAILED_FILES_ONLY :: ReportScope
+pattern ReportScope_FAILED_FILES_ONLY = ReportScope' "FAILED_FILES_ONLY"
+
+{-# COMPLETE
+  ReportScope_FAILED_FILES_ONLY,
+  ReportScope'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/ResourceType.hs b/gen/Amazonka/FSx/Types/ResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/ResourceType.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.FSx.Types.ResourceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.ResourceType
+  ( ResourceType
+      ( ..,
+        ResourceType_FILE_SYSTEM,
+        ResourceType_VOLUME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceType = ResourceType'
+  { fromResourceType ::
+      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 ResourceType_FILE_SYSTEM :: ResourceType
+pattern ResourceType_FILE_SYSTEM = ResourceType' "FILE_SYSTEM"
+
+pattern ResourceType_VOLUME :: ResourceType
+pattern ResourceType_VOLUME = ResourceType' "VOLUME"
+
+{-# COMPLETE
+  ResourceType_FILE_SYSTEM,
+  ResourceType_VOLUME,
+  ResourceType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/RestoreOpenZFSVolumeOption.hs b/gen/Amazonka/FSx/Types/RestoreOpenZFSVolumeOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/RestoreOpenZFSVolumeOption.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.FSx.Types.RestoreOpenZFSVolumeOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.RestoreOpenZFSVolumeOption
+  ( RestoreOpenZFSVolumeOption
+      ( ..,
+        RestoreOpenZFSVolumeOption_DELETE_CLONED_VOLUMES,
+        RestoreOpenZFSVolumeOption_DELETE_INTERMEDIATE_SNAPSHOTS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RestoreOpenZFSVolumeOption = RestoreOpenZFSVolumeOption'
+  { fromRestoreOpenZFSVolumeOption ::
+      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 RestoreOpenZFSVolumeOption_DELETE_CLONED_VOLUMES :: RestoreOpenZFSVolumeOption
+pattern RestoreOpenZFSVolumeOption_DELETE_CLONED_VOLUMES = RestoreOpenZFSVolumeOption' "DELETE_CLONED_VOLUMES"
+
+pattern RestoreOpenZFSVolumeOption_DELETE_INTERMEDIATE_SNAPSHOTS :: RestoreOpenZFSVolumeOption
+pattern RestoreOpenZFSVolumeOption_DELETE_INTERMEDIATE_SNAPSHOTS = RestoreOpenZFSVolumeOption' "DELETE_INTERMEDIATE_SNAPSHOTS"
+
+{-# COMPLETE
+  RestoreOpenZFSVolumeOption_DELETE_CLONED_VOLUMES,
+  RestoreOpenZFSVolumeOption_DELETE_INTERMEDIATE_SNAPSHOTS,
+  RestoreOpenZFSVolumeOption'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/S3DataRepositoryConfiguration.hs b/gen/Amazonka/FSx/Types/S3DataRepositoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/S3DataRepositoryConfiguration.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.FSx.Types.S3DataRepositoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.S3DataRepositoryConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AutoExportPolicy
+import Amazonka.FSx.Types.AutoImportPolicy
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx for Lustre file system with a data repository association. The
+-- configuration consists of an @AutoImportPolicy@ that defines which file
+-- events on the data repository are automatically imported to the file
+-- system and an @AutoExportPolicy@ that defines which file events on the
+-- file system are automatically exported to the data repository. File
+-- events are when files or directories are added, changed, or deleted on
+-- the file system or the data repository.
+--
+-- Data repository associations on Amazon File Cache don\'t use
+-- @S3DataRepositoryConfiguration@ because they don\'t support automatic
+-- import or automatic export.
+--
+-- /See:/ 'newS3DataRepositoryConfiguration' smart constructor.
+data S3DataRepositoryConfiguration = S3DataRepositoryConfiguration'
+  { -- | Specifies the type of updated objects (new, changed, deleted) that will
+    -- be automatically exported from your file system to the linked S3 bucket.
+    autoExportPolicy :: Prelude.Maybe AutoExportPolicy,
+    -- | Specifies the type of updated objects (new, changed, deleted) that will
+    -- be automatically imported from the linked S3 bucket to your file system.
+    autoImportPolicy :: Prelude.Maybe AutoImportPolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DataRepositoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoExportPolicy', 's3DataRepositoryConfiguration_autoExportPolicy' - Specifies the type of updated objects (new, changed, deleted) that will
+-- be automatically exported from your file system to the linked S3 bucket.
+--
+-- 'autoImportPolicy', 's3DataRepositoryConfiguration_autoImportPolicy' - Specifies the type of updated objects (new, changed, deleted) that will
+-- be automatically imported from the linked S3 bucket to your file system.
+newS3DataRepositoryConfiguration ::
+  S3DataRepositoryConfiguration
+newS3DataRepositoryConfiguration =
+  S3DataRepositoryConfiguration'
+    { autoExportPolicy =
+        Prelude.Nothing,
+      autoImportPolicy = Prelude.Nothing
+    }
+
+-- | Specifies the type of updated objects (new, changed, deleted) that will
+-- be automatically exported from your file system to the linked S3 bucket.
+s3DataRepositoryConfiguration_autoExportPolicy :: Lens.Lens' S3DataRepositoryConfiguration (Prelude.Maybe AutoExportPolicy)
+s3DataRepositoryConfiguration_autoExportPolicy = Lens.lens (\S3DataRepositoryConfiguration' {autoExportPolicy} -> autoExportPolicy) (\s@S3DataRepositoryConfiguration' {} a -> s {autoExportPolicy = a} :: S3DataRepositoryConfiguration)
+
+-- | Specifies the type of updated objects (new, changed, deleted) that will
+-- be automatically imported from the linked S3 bucket to your file system.
+s3DataRepositoryConfiguration_autoImportPolicy :: Lens.Lens' S3DataRepositoryConfiguration (Prelude.Maybe AutoImportPolicy)
+s3DataRepositoryConfiguration_autoImportPolicy = Lens.lens (\S3DataRepositoryConfiguration' {autoImportPolicy} -> autoImportPolicy) (\s@S3DataRepositoryConfiguration' {} a -> s {autoImportPolicy = a} :: S3DataRepositoryConfiguration)
+
+instance Data.FromJSON S3DataRepositoryConfiguration where
+  parseJSON =
+    Data.withObject
+      "S3DataRepositoryConfiguration"
+      ( \x ->
+          S3DataRepositoryConfiguration'
+            Prelude.<$> (x Data..:? "AutoExportPolicy")
+            Prelude.<*> (x Data..:? "AutoImportPolicy")
+      )
+
+instance
+  Prelude.Hashable
+    S3DataRepositoryConfiguration
+  where
+  hashWithSalt _salt S3DataRepositoryConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoExportPolicy
+      `Prelude.hashWithSalt` autoImportPolicy
+
+instance Prelude.NFData S3DataRepositoryConfiguration where
+  rnf S3DataRepositoryConfiguration' {..} =
+    Prelude.rnf autoExportPolicy
+      `Prelude.seq` Prelude.rnf autoImportPolicy
+
+instance Data.ToJSON S3DataRepositoryConfiguration where
+  toJSON S3DataRepositoryConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoExportPolicy" Data..=)
+              Prelude.<$> autoExportPolicy,
+            ("AutoImportPolicy" Data..=)
+              Prelude.<$> autoImportPolicy
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/SecurityStyle.hs b/gen/Amazonka/FSx/Types/SecurityStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SecurityStyle.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.FSx.Types.SecurityStyle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SecurityStyle
+  ( SecurityStyle
+      ( ..,
+        SecurityStyle_MIXED,
+        SecurityStyle_NTFS,
+        SecurityStyle_UNIX
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SecurityStyle = SecurityStyle'
+  { fromSecurityStyle ::
+      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 SecurityStyle_MIXED :: SecurityStyle
+pattern SecurityStyle_MIXED = SecurityStyle' "MIXED"
+
+pattern SecurityStyle_NTFS :: SecurityStyle
+pattern SecurityStyle_NTFS = SecurityStyle' "NTFS"
+
+pattern SecurityStyle_UNIX :: SecurityStyle
+pattern SecurityStyle_UNIX = SecurityStyle' "UNIX"
+
+{-# COMPLETE
+  SecurityStyle_MIXED,
+  SecurityStyle_NTFS,
+  SecurityStyle_UNIX,
+  SecurityStyle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryAttributes.hs b/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryAttributes.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes where
+
+import qualified 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 the self-managed Microsoft Active Directory (AD)
+-- directory to which the Windows File Server or ONTAP storage virtual
+-- machine (SVM) instance is joined.
+--
+-- /See:/ 'newSelfManagedActiveDirectoryAttributes' smart constructor.
+data SelfManagedActiveDirectoryAttributes = SelfManagedActiveDirectoryAttributes'
+  { -- | A list of up to three IP addresses of DNS servers or domain controllers
+    -- in the self-managed AD directory.
+    dnsIps :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The fully qualified domain name of the self-managed AD directory.
+    domainName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the domain group whose members have administrative
+    -- privileges for the FSx file system.
+    fileSystemAdministratorsGroup :: Prelude.Maybe Prelude.Text,
+    -- | The fully qualified distinguished name of the organizational unit within
+    -- the self-managed AD directory to which the Windows File Server or ONTAP
+    -- storage virtual machine (SVM) instance is joined.
+    organizationalUnitDistinguishedName :: Prelude.Maybe Prelude.Text,
+    -- | The user name for the service account on your self-managed AD domain
+    -- that FSx uses to join to your AD domain.
+    userName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelfManagedActiveDirectoryAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dnsIps', 'selfManagedActiveDirectoryAttributes_dnsIps' - A list of up to three IP addresses of DNS servers or domain controllers
+-- in the self-managed AD directory.
+--
+-- 'domainName', 'selfManagedActiveDirectoryAttributes_domainName' - The fully qualified domain name of the self-managed AD directory.
+--
+-- 'fileSystemAdministratorsGroup', 'selfManagedActiveDirectoryAttributes_fileSystemAdministratorsGroup' - The name of the domain group whose members have administrative
+-- privileges for the FSx file system.
+--
+-- 'organizationalUnitDistinguishedName', 'selfManagedActiveDirectoryAttributes_organizationalUnitDistinguishedName' - The fully qualified distinguished name of the organizational unit within
+-- the self-managed AD directory to which the Windows File Server or ONTAP
+-- storage virtual machine (SVM) instance is joined.
+--
+-- 'userName', 'selfManagedActiveDirectoryAttributes_userName' - The user name for the service account on your self-managed AD domain
+-- that FSx uses to join to your AD domain.
+newSelfManagedActiveDirectoryAttributes ::
+  SelfManagedActiveDirectoryAttributes
+newSelfManagedActiveDirectoryAttributes =
+  SelfManagedActiveDirectoryAttributes'
+    { dnsIps =
+        Prelude.Nothing,
+      domainName = Prelude.Nothing,
+      fileSystemAdministratorsGroup =
+        Prelude.Nothing,
+      organizationalUnitDistinguishedName =
+        Prelude.Nothing,
+      userName = Prelude.Nothing
+    }
+
+-- | A list of up to three IP addresses of DNS servers or domain controllers
+-- in the self-managed AD directory.
+selfManagedActiveDirectoryAttributes_dnsIps :: Lens.Lens' SelfManagedActiveDirectoryAttributes (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+selfManagedActiveDirectoryAttributes_dnsIps = Lens.lens (\SelfManagedActiveDirectoryAttributes' {dnsIps} -> dnsIps) (\s@SelfManagedActiveDirectoryAttributes' {} a -> s {dnsIps = a} :: SelfManagedActiveDirectoryAttributes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The fully qualified domain name of the self-managed AD directory.
+selfManagedActiveDirectoryAttributes_domainName :: Lens.Lens' SelfManagedActiveDirectoryAttributes (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryAttributes_domainName = Lens.lens (\SelfManagedActiveDirectoryAttributes' {domainName} -> domainName) (\s@SelfManagedActiveDirectoryAttributes' {} a -> s {domainName = a} :: SelfManagedActiveDirectoryAttributes)
+
+-- | The name of the domain group whose members have administrative
+-- privileges for the FSx file system.
+selfManagedActiveDirectoryAttributes_fileSystemAdministratorsGroup :: Lens.Lens' SelfManagedActiveDirectoryAttributes (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryAttributes_fileSystemAdministratorsGroup = Lens.lens (\SelfManagedActiveDirectoryAttributes' {fileSystemAdministratorsGroup} -> fileSystemAdministratorsGroup) (\s@SelfManagedActiveDirectoryAttributes' {} a -> s {fileSystemAdministratorsGroup = a} :: SelfManagedActiveDirectoryAttributes)
+
+-- | The fully qualified distinguished name of the organizational unit within
+-- the self-managed AD directory to which the Windows File Server or ONTAP
+-- storage virtual machine (SVM) instance is joined.
+selfManagedActiveDirectoryAttributes_organizationalUnitDistinguishedName :: Lens.Lens' SelfManagedActiveDirectoryAttributes (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryAttributes_organizationalUnitDistinguishedName = Lens.lens (\SelfManagedActiveDirectoryAttributes' {organizationalUnitDistinguishedName} -> organizationalUnitDistinguishedName) (\s@SelfManagedActiveDirectoryAttributes' {} a -> s {organizationalUnitDistinguishedName = a} :: SelfManagedActiveDirectoryAttributes)
+
+-- | The user name for the service account on your self-managed AD domain
+-- that FSx uses to join to your AD domain.
+selfManagedActiveDirectoryAttributes_userName :: Lens.Lens' SelfManagedActiveDirectoryAttributes (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryAttributes_userName = Lens.lens (\SelfManagedActiveDirectoryAttributes' {userName} -> userName) (\s@SelfManagedActiveDirectoryAttributes' {} a -> s {userName = a} :: SelfManagedActiveDirectoryAttributes)
+
+instance
+  Data.FromJSON
+    SelfManagedActiveDirectoryAttributes
+  where
+  parseJSON =
+    Data.withObject
+      "SelfManagedActiveDirectoryAttributes"
+      ( \x ->
+          SelfManagedActiveDirectoryAttributes'
+            Prelude.<$> (x Data..:? "DnsIps")
+            Prelude.<*> (x Data..:? "DomainName")
+            Prelude.<*> (x Data..:? "FileSystemAdministratorsGroup")
+            Prelude.<*> (x Data..:? "OrganizationalUnitDistinguishedName")
+            Prelude.<*> (x Data..:? "UserName")
+      )
+
+instance
+  Prelude.Hashable
+    SelfManagedActiveDirectoryAttributes
+  where
+  hashWithSalt
+    _salt
+    SelfManagedActiveDirectoryAttributes' {..} =
+      _salt
+        `Prelude.hashWithSalt` dnsIps
+        `Prelude.hashWithSalt` domainName
+        `Prelude.hashWithSalt` fileSystemAdministratorsGroup
+        `Prelude.hashWithSalt` organizationalUnitDistinguishedName
+        `Prelude.hashWithSalt` userName
+
+instance
+  Prelude.NFData
+    SelfManagedActiveDirectoryAttributes
+  where
+  rnf SelfManagedActiveDirectoryAttributes' {..} =
+    Prelude.rnf dnsIps
+      `Prelude.seq` Prelude.rnf domainName
+      `Prelude.seq` Prelude.rnf fileSystemAdministratorsGroup
+      `Prelude.seq` Prelude.rnf organizationalUnitDistinguishedName
+      `Prelude.seq` Prelude.rnf userName
diff --git a/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryConfiguration.hs b/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryConfiguration.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.FSx.Types.SelfManagedActiveDirectoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SelfManagedActiveDirectoryConfiguration where
+
+import qualified 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 that Amazon FSx uses to join a FSx for Windows File
+-- Server file system or an ONTAP storage virtual machine (SVM) to a
+-- self-managed (including on-premises) Microsoft Active Directory (AD)
+-- directory. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/self-managed-AD.html Using Amazon FSx with your self-managed Microsoft Active Directory>
+-- or
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-svms.html Managing SVMs>.
+--
+-- /See:/ 'newSelfManagedActiveDirectoryConfiguration' smart constructor.
+data SelfManagedActiveDirectoryConfiguration = SelfManagedActiveDirectoryConfiguration'
+  { -- | (Optional) The name of the domain group whose members are granted
+    -- administrative privileges for the file system. Administrative privileges
+    -- include taking ownership of files and folders, setting audit controls
+    -- (audit ACLs) on files and folders, and administering the file system
+    -- remotely by using the FSx Remote PowerShell. The group that you specify
+    -- must already exist in your domain. If you don\'t provide one, your AD
+    -- domain\'s Domain Admins group is used.
+    fileSystemAdministratorsGroup :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) The fully qualified distinguished name of the organizational
+    -- unit within your self-managed AD directory. Amazon FSx only accepts OU
+    -- as the direct parent of the file system. An example is
+    -- @OU=FSx,DC=yourdomain,DC=corp,DC=com@. To learn more, see
+    -- <https://tools.ietf.org/html/rfc2253 RFC 2253>. If none is provided, the
+    -- FSx file system is created in the default location of your self-managed
+    -- AD directory.
+    --
+    -- Only Organizational Unit (OU) objects can be the direct parent of the
+    -- file system that you\'re creating.
+    organizationalUnitDistinguishedName :: Prelude.Maybe Prelude.Text,
+    -- | The fully qualified domain name of the self-managed AD directory, such
+    -- as @corp.example.com@.
+    domainName :: Prelude.Text,
+    -- | The user name for the service account on your self-managed AD domain
+    -- that Amazon FSx will use to join to your AD domain. This account must
+    -- have the permission to join computers to the domain in the
+    -- organizational unit provided in @OrganizationalUnitDistinguishedName@,
+    -- or in the default location of your AD domain.
+    userName :: Prelude.Text,
+    -- | The password for the service account on your self-managed AD domain that
+    -- Amazon FSx will use to join to your AD domain.
+    password :: Data.Sensitive Prelude.Text,
+    -- | A list of up to three IP addresses of DNS servers or domain controllers
+    -- in the self-managed AD directory.
+    dnsIps :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelfManagedActiveDirectoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystemAdministratorsGroup', 'selfManagedActiveDirectoryConfiguration_fileSystemAdministratorsGroup' - (Optional) The name of the domain group whose members are granted
+-- administrative privileges for the file system. Administrative privileges
+-- include taking ownership of files and folders, setting audit controls
+-- (audit ACLs) on files and folders, and administering the file system
+-- remotely by using the FSx Remote PowerShell. The group that you specify
+-- must already exist in your domain. If you don\'t provide one, your AD
+-- domain\'s Domain Admins group is used.
+--
+-- 'organizationalUnitDistinguishedName', 'selfManagedActiveDirectoryConfiguration_organizationalUnitDistinguishedName' - (Optional) The fully qualified distinguished name of the organizational
+-- unit within your self-managed AD directory. Amazon FSx only accepts OU
+-- as the direct parent of the file system. An example is
+-- @OU=FSx,DC=yourdomain,DC=corp,DC=com@. To learn more, see
+-- <https://tools.ietf.org/html/rfc2253 RFC 2253>. If none is provided, the
+-- FSx file system is created in the default location of your self-managed
+-- AD directory.
+--
+-- Only Organizational Unit (OU) objects can be the direct parent of the
+-- file system that you\'re creating.
+--
+-- 'domainName', 'selfManagedActiveDirectoryConfiguration_domainName' - The fully qualified domain name of the self-managed AD directory, such
+-- as @corp.example.com@.
+--
+-- 'userName', 'selfManagedActiveDirectoryConfiguration_userName' - The user name for the service account on your self-managed AD domain
+-- that Amazon FSx will use to join to your AD domain. This account must
+-- have the permission to join computers to the domain in the
+-- organizational unit provided in @OrganizationalUnitDistinguishedName@,
+-- or in the default location of your AD domain.
+--
+-- 'password', 'selfManagedActiveDirectoryConfiguration_password' - The password for the service account on your self-managed AD domain that
+-- Amazon FSx will use to join to your AD domain.
+--
+-- 'dnsIps', 'selfManagedActiveDirectoryConfiguration_dnsIps' - A list of up to three IP addresses of DNS servers or domain controllers
+-- in the self-managed AD directory.
+newSelfManagedActiveDirectoryConfiguration ::
+  -- | 'domainName'
+  Prelude.Text ->
+  -- | 'userName'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  -- | 'dnsIps'
+  Prelude.NonEmpty Prelude.Text ->
+  SelfManagedActiveDirectoryConfiguration
+newSelfManagedActiveDirectoryConfiguration
+  pDomainName_
+  pUserName_
+  pPassword_
+  pDnsIps_ =
+    SelfManagedActiveDirectoryConfiguration'
+      { fileSystemAdministratorsGroup =
+          Prelude.Nothing,
+        organizationalUnitDistinguishedName =
+          Prelude.Nothing,
+        domainName = pDomainName_,
+        userName = pUserName_,
+        password =
+          Data._Sensitive
+            Lens.# pPassword_,
+        dnsIps =
+          Lens.coerced Lens.# pDnsIps_
+      }
+
+-- | (Optional) The name of the domain group whose members are granted
+-- administrative privileges for the file system. Administrative privileges
+-- include taking ownership of files and folders, setting audit controls
+-- (audit ACLs) on files and folders, and administering the file system
+-- remotely by using the FSx Remote PowerShell. The group that you specify
+-- must already exist in your domain. If you don\'t provide one, your AD
+-- domain\'s Domain Admins group is used.
+selfManagedActiveDirectoryConfiguration_fileSystemAdministratorsGroup :: Lens.Lens' SelfManagedActiveDirectoryConfiguration (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryConfiguration_fileSystemAdministratorsGroup = Lens.lens (\SelfManagedActiveDirectoryConfiguration' {fileSystemAdministratorsGroup} -> fileSystemAdministratorsGroup) (\s@SelfManagedActiveDirectoryConfiguration' {} a -> s {fileSystemAdministratorsGroup = a} :: SelfManagedActiveDirectoryConfiguration)
+
+-- | (Optional) The fully qualified distinguished name of the organizational
+-- unit within your self-managed AD directory. Amazon FSx only accepts OU
+-- as the direct parent of the file system. An example is
+-- @OU=FSx,DC=yourdomain,DC=corp,DC=com@. To learn more, see
+-- <https://tools.ietf.org/html/rfc2253 RFC 2253>. If none is provided, the
+-- FSx file system is created in the default location of your self-managed
+-- AD directory.
+--
+-- Only Organizational Unit (OU) objects can be the direct parent of the
+-- file system that you\'re creating.
+selfManagedActiveDirectoryConfiguration_organizationalUnitDistinguishedName :: Lens.Lens' SelfManagedActiveDirectoryConfiguration (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryConfiguration_organizationalUnitDistinguishedName = Lens.lens (\SelfManagedActiveDirectoryConfiguration' {organizationalUnitDistinguishedName} -> organizationalUnitDistinguishedName) (\s@SelfManagedActiveDirectoryConfiguration' {} a -> s {organizationalUnitDistinguishedName = a} :: SelfManagedActiveDirectoryConfiguration)
+
+-- | The fully qualified domain name of the self-managed AD directory, such
+-- as @corp.example.com@.
+selfManagedActiveDirectoryConfiguration_domainName :: Lens.Lens' SelfManagedActiveDirectoryConfiguration Prelude.Text
+selfManagedActiveDirectoryConfiguration_domainName = Lens.lens (\SelfManagedActiveDirectoryConfiguration' {domainName} -> domainName) (\s@SelfManagedActiveDirectoryConfiguration' {} a -> s {domainName = a} :: SelfManagedActiveDirectoryConfiguration)
+
+-- | The user name for the service account on your self-managed AD domain
+-- that Amazon FSx will use to join to your AD domain. This account must
+-- have the permission to join computers to the domain in the
+-- organizational unit provided in @OrganizationalUnitDistinguishedName@,
+-- or in the default location of your AD domain.
+selfManagedActiveDirectoryConfiguration_userName :: Lens.Lens' SelfManagedActiveDirectoryConfiguration Prelude.Text
+selfManagedActiveDirectoryConfiguration_userName = Lens.lens (\SelfManagedActiveDirectoryConfiguration' {userName} -> userName) (\s@SelfManagedActiveDirectoryConfiguration' {} a -> s {userName = a} :: SelfManagedActiveDirectoryConfiguration)
+
+-- | The password for the service account on your self-managed AD domain that
+-- Amazon FSx will use to join to your AD domain.
+selfManagedActiveDirectoryConfiguration_password :: Lens.Lens' SelfManagedActiveDirectoryConfiguration Prelude.Text
+selfManagedActiveDirectoryConfiguration_password = Lens.lens (\SelfManagedActiveDirectoryConfiguration' {password} -> password) (\s@SelfManagedActiveDirectoryConfiguration' {} a -> s {password = a} :: SelfManagedActiveDirectoryConfiguration) Prelude.. Data._Sensitive
+
+-- | A list of up to three IP addresses of DNS servers or domain controllers
+-- in the self-managed AD directory.
+selfManagedActiveDirectoryConfiguration_dnsIps :: Lens.Lens' SelfManagedActiveDirectoryConfiguration (Prelude.NonEmpty Prelude.Text)
+selfManagedActiveDirectoryConfiguration_dnsIps = Lens.lens (\SelfManagedActiveDirectoryConfiguration' {dnsIps} -> dnsIps) (\s@SelfManagedActiveDirectoryConfiguration' {} a -> s {dnsIps = a} :: SelfManagedActiveDirectoryConfiguration) Prelude.. Lens.coerced
+
+instance
+  Prelude.Hashable
+    SelfManagedActiveDirectoryConfiguration
+  where
+  hashWithSalt
+    _salt
+    SelfManagedActiveDirectoryConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` fileSystemAdministratorsGroup
+        `Prelude.hashWithSalt` organizationalUnitDistinguishedName
+        `Prelude.hashWithSalt` domainName
+        `Prelude.hashWithSalt` userName
+        `Prelude.hashWithSalt` password
+        `Prelude.hashWithSalt` dnsIps
+
+instance
+  Prelude.NFData
+    SelfManagedActiveDirectoryConfiguration
+  where
+  rnf SelfManagedActiveDirectoryConfiguration' {..} =
+    Prelude.rnf fileSystemAdministratorsGroup
+      `Prelude.seq` Prelude.rnf organizationalUnitDistinguishedName
+      `Prelude.seq` Prelude.rnf domainName
+      `Prelude.seq` Prelude.rnf userName
+      `Prelude.seq` Prelude.rnf password
+      `Prelude.seq` Prelude.rnf dnsIps
+
+instance
+  Data.ToJSON
+    SelfManagedActiveDirectoryConfiguration
+  where
+  toJSON SelfManagedActiveDirectoryConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FileSystemAdministratorsGroup" Data..=)
+              Prelude.<$> fileSystemAdministratorsGroup,
+            ("OrganizationalUnitDistinguishedName" Data..=)
+              Prelude.<$> organizationalUnitDistinguishedName,
+            Prelude.Just ("DomainName" Data..= domainName),
+            Prelude.Just ("UserName" Data..= userName),
+            Prelude.Just ("Password" Data..= password),
+            Prelude.Just ("DnsIps" Data..= dnsIps)
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryConfigurationUpdates.hs b/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryConfigurationUpdates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SelfManagedActiveDirectoryConfigurationUpdates.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.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates where
+
+import qualified 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 that Amazon FSx uses to join the Windows File Server
+-- instance to a self-managed Microsoft Active Directory (AD) directory.
+--
+-- /See:/ 'newSelfManagedActiveDirectoryConfigurationUpdates' smart constructor.
+data SelfManagedActiveDirectoryConfigurationUpdates = SelfManagedActiveDirectoryConfigurationUpdates'
+  { -- | A list of up to three IP addresses of DNS servers or domain controllers
+    -- in the self-managed AD directory.
+    dnsIps :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The password for the service account on your self-managed AD domain that
+    -- Amazon FSx will use to join to your AD domain.
+    password :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The user name for the service account on your self-managed AD domain
+    -- that Amazon FSx will use to join to your AD domain. This account must
+    -- have the permission to join computers to the domain in the
+    -- organizational unit provided in @OrganizationalUnitDistinguishedName@.
+    userName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelfManagedActiveDirectoryConfigurationUpdates' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dnsIps', 'selfManagedActiveDirectoryConfigurationUpdates_dnsIps' - A list of up to three IP addresses of DNS servers or domain controllers
+-- in the self-managed AD directory.
+--
+-- 'password', 'selfManagedActiveDirectoryConfigurationUpdates_password' - The password for the service account on your self-managed AD domain that
+-- Amazon FSx will use to join to your AD domain.
+--
+-- 'userName', 'selfManagedActiveDirectoryConfigurationUpdates_userName' - The user name for the service account on your self-managed AD domain
+-- that Amazon FSx will use to join to your AD domain. This account must
+-- have the permission to join computers to the domain in the
+-- organizational unit provided in @OrganizationalUnitDistinguishedName@.
+newSelfManagedActiveDirectoryConfigurationUpdates ::
+  SelfManagedActiveDirectoryConfigurationUpdates
+newSelfManagedActiveDirectoryConfigurationUpdates =
+  SelfManagedActiveDirectoryConfigurationUpdates'
+    { dnsIps =
+        Prelude.Nothing,
+      password = Prelude.Nothing,
+      userName = Prelude.Nothing
+    }
+
+-- | A list of up to three IP addresses of DNS servers or domain controllers
+-- in the self-managed AD directory.
+selfManagedActiveDirectoryConfigurationUpdates_dnsIps :: Lens.Lens' SelfManagedActiveDirectoryConfigurationUpdates (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+selfManagedActiveDirectoryConfigurationUpdates_dnsIps = Lens.lens (\SelfManagedActiveDirectoryConfigurationUpdates' {dnsIps} -> dnsIps) (\s@SelfManagedActiveDirectoryConfigurationUpdates' {} a -> s {dnsIps = a} :: SelfManagedActiveDirectoryConfigurationUpdates) Prelude.. Lens.mapping Lens.coerced
+
+-- | The password for the service account on your self-managed AD domain that
+-- Amazon FSx will use to join to your AD domain.
+selfManagedActiveDirectoryConfigurationUpdates_password :: Lens.Lens' SelfManagedActiveDirectoryConfigurationUpdates (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryConfigurationUpdates_password = Lens.lens (\SelfManagedActiveDirectoryConfigurationUpdates' {password} -> password) (\s@SelfManagedActiveDirectoryConfigurationUpdates' {} a -> s {password = a} :: SelfManagedActiveDirectoryConfigurationUpdates) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The user name for the service account on your self-managed AD domain
+-- that Amazon FSx will use to join to your AD domain. This account must
+-- have the permission to join computers to the domain in the
+-- organizational unit provided in @OrganizationalUnitDistinguishedName@.
+selfManagedActiveDirectoryConfigurationUpdates_userName :: Lens.Lens' SelfManagedActiveDirectoryConfigurationUpdates (Prelude.Maybe Prelude.Text)
+selfManagedActiveDirectoryConfigurationUpdates_userName = Lens.lens (\SelfManagedActiveDirectoryConfigurationUpdates' {userName} -> userName) (\s@SelfManagedActiveDirectoryConfigurationUpdates' {} a -> s {userName = a} :: SelfManagedActiveDirectoryConfigurationUpdates)
+
+instance
+  Prelude.Hashable
+    SelfManagedActiveDirectoryConfigurationUpdates
+  where
+  hashWithSalt
+    _salt
+    SelfManagedActiveDirectoryConfigurationUpdates' {..} =
+      _salt
+        `Prelude.hashWithSalt` dnsIps
+        `Prelude.hashWithSalt` password
+        `Prelude.hashWithSalt` userName
+
+instance
+  Prelude.NFData
+    SelfManagedActiveDirectoryConfigurationUpdates
+  where
+  rnf
+    SelfManagedActiveDirectoryConfigurationUpdates' {..} =
+      Prelude.rnf dnsIps
+        `Prelude.seq` Prelude.rnf password
+        `Prelude.seq` Prelude.rnf userName
+
+instance
+  Data.ToJSON
+    SelfManagedActiveDirectoryConfigurationUpdates
+  where
+  toJSON
+    SelfManagedActiveDirectoryConfigurationUpdates' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("DnsIps" Data..=) Prelude.<$> dnsIps,
+              ("Password" Data..=) Prelude.<$> password,
+              ("UserName" Data..=) Prelude.<$> userName
+            ]
+        )
diff --git a/gen/Amazonka/FSx/Types/Snapshot.hs b/gen/Amazonka/FSx/Types/Snapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Snapshot.hs
@@ -0,0 +1,201 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.Snapshot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.Snapshot where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import {-# SOURCE #-} Amazonka.FSx.Types.AdministrativeAction
+import Amazonka.FSx.Types.LifecycleTransitionReason
+import Amazonka.FSx.Types.SnapshotLifecycle
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | A snapshot of an Amazon FSx for OpenZFS volume.
+--
+-- /See:/ 'newSnapshot' smart constructor.
+data Snapshot = Snapshot'
+  { -- | A list of administrative actions for the file system that are in process
+    -- or waiting to be processed. Administrative actions describe changes to
+    -- the Amazon FSx system.
+    administrativeActions :: Prelude.Maybe [AdministrativeAction],
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The lifecycle status of the snapshot.
+    --
+    -- -   @PENDING@ - Amazon FSx hasn\'t started creating the snapshot.
+    --
+    -- -   @CREATING@ - Amazon FSx is creating the snapshot.
+    --
+    -- -   @DELETING@ - Amazon FSx is deleting the snapshot.
+    --
+    -- -   @AVAILABLE@ - The snapshot is fully available.
+    lifecycle :: Prelude.Maybe SnapshotLifecycle,
+    lifecycleTransitionReason :: Prelude.Maybe LifecycleTransitionReason,
+    -- | The name of the snapshot.
+    name :: Prelude.Maybe Prelude.Text,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the snapshot.
+    snapshotId :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ID of the volume that the snapshot is of.
+    volumeId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Snapshot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'administrativeActions', 'snapshot_administrativeActions' - A list of administrative actions for the file system that are in process
+-- or waiting to be processed. Administrative actions describe changes to
+-- the Amazon FSx system.
+--
+-- 'creationTime', 'snapshot_creationTime' - Undocumented member.
+--
+-- 'lifecycle', 'snapshot_lifecycle' - The lifecycle status of the snapshot.
+--
+-- -   @PENDING@ - Amazon FSx hasn\'t started creating the snapshot.
+--
+-- -   @CREATING@ - Amazon FSx is creating the snapshot.
+--
+-- -   @DELETING@ - Amazon FSx is deleting the snapshot.
+--
+-- -   @AVAILABLE@ - The snapshot is fully available.
+--
+-- 'lifecycleTransitionReason', 'snapshot_lifecycleTransitionReason' - Undocumented member.
+--
+-- 'name', 'snapshot_name' - The name of the snapshot.
+--
+-- 'resourceARN', 'snapshot_resourceARN' - Undocumented member.
+--
+-- 'snapshotId', 'snapshot_snapshotId' - The ID of the snapshot.
+--
+-- 'tags', 'snapshot_tags' - Undocumented member.
+--
+-- 'volumeId', 'snapshot_volumeId' - The ID of the volume that the snapshot is of.
+newSnapshot ::
+  Snapshot
+newSnapshot =
+  Snapshot'
+    { administrativeActions = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lifecycleTransitionReason = Prelude.Nothing,
+      name = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      snapshotId = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      volumeId = Prelude.Nothing
+    }
+
+-- | A list of administrative actions for the file system that are in process
+-- or waiting to be processed. Administrative actions describe changes to
+-- the Amazon FSx system.
+snapshot_administrativeActions :: Lens.Lens' Snapshot (Prelude.Maybe [AdministrativeAction])
+snapshot_administrativeActions = Lens.lens (\Snapshot' {administrativeActions} -> administrativeActions) (\s@Snapshot' {} a -> s {administrativeActions = a} :: Snapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+snapshot_creationTime :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.UTCTime)
+snapshot_creationTime = Lens.lens (\Snapshot' {creationTime} -> creationTime) (\s@Snapshot' {} a -> s {creationTime = a} :: Snapshot) Prelude.. Lens.mapping Data._Time
+
+-- | The lifecycle status of the snapshot.
+--
+-- -   @PENDING@ - Amazon FSx hasn\'t started creating the snapshot.
+--
+-- -   @CREATING@ - Amazon FSx is creating the snapshot.
+--
+-- -   @DELETING@ - Amazon FSx is deleting the snapshot.
+--
+-- -   @AVAILABLE@ - The snapshot is fully available.
+snapshot_lifecycle :: Lens.Lens' Snapshot (Prelude.Maybe SnapshotLifecycle)
+snapshot_lifecycle = Lens.lens (\Snapshot' {lifecycle} -> lifecycle) (\s@Snapshot' {} a -> s {lifecycle = a} :: Snapshot)
+
+-- | Undocumented member.
+snapshot_lifecycleTransitionReason :: Lens.Lens' Snapshot (Prelude.Maybe LifecycleTransitionReason)
+snapshot_lifecycleTransitionReason = Lens.lens (\Snapshot' {lifecycleTransitionReason} -> lifecycleTransitionReason) (\s@Snapshot' {} a -> s {lifecycleTransitionReason = a} :: Snapshot)
+
+-- | The name of the snapshot.
+snapshot_name :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)
+snapshot_name = Lens.lens (\Snapshot' {name} -> name) (\s@Snapshot' {} a -> s {name = a} :: Snapshot)
+
+-- | Undocumented member.
+snapshot_resourceARN :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)
+snapshot_resourceARN = Lens.lens (\Snapshot' {resourceARN} -> resourceARN) (\s@Snapshot' {} a -> s {resourceARN = a} :: Snapshot)
+
+-- | The ID of the snapshot.
+snapshot_snapshotId :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)
+snapshot_snapshotId = Lens.lens (\Snapshot' {snapshotId} -> snapshotId) (\s@Snapshot' {} a -> s {snapshotId = a} :: Snapshot)
+
+-- | Undocumented member.
+snapshot_tags :: Lens.Lens' Snapshot (Prelude.Maybe (Prelude.NonEmpty Tag))
+snapshot_tags = Lens.lens (\Snapshot' {tags} -> tags) (\s@Snapshot' {} a -> s {tags = a} :: Snapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the volume that the snapshot is of.
+snapshot_volumeId :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)
+snapshot_volumeId = Lens.lens (\Snapshot' {volumeId} -> volumeId) (\s@Snapshot' {} a -> s {volumeId = a} :: Snapshot)
+
+instance Data.FromJSON Snapshot where
+  parseJSON =
+    Data.withObject
+      "Snapshot"
+      ( \x ->
+          Snapshot'
+            Prelude.<$> ( x
+                            Data..:? "AdministrativeActions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "LifecycleTransitionReason")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "SnapshotId")
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..:? "VolumeId")
+      )
+
+instance Prelude.Hashable Snapshot where
+  hashWithSalt _salt Snapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` administrativeActions
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` lifecycleTransitionReason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` snapshotId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` volumeId
+
+instance Prelude.NFData Snapshot where
+  rnf Snapshot' {..} =
+    Prelude.rnf administrativeActions
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lifecycleTransitionReason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf snapshotId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf volumeId
diff --git a/gen/Amazonka/FSx/Types/Snapshot.hs-boot b/gen/Amazonka/FSx/Types/Snapshot.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Snapshot.hs-boot
@@ -0,0 +1,31 @@
+{-# OPTIONS_GHC -Wno-missing-methods #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.Snapshot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.Snapshot where
+
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+data Snapshot
+
+instance Prelude.Eq Snapshot
+
+instance Prelude.Read Snapshot
+
+instance Prelude.Show Snapshot
+
+instance Prelude.Generic Snapshot
+
+instance Data.FromJSON Snapshot
+
+instance Prelude.NFData Snapshot
+
+instance Prelude.Hashable Snapshot
diff --git a/gen/Amazonka/FSx/Types/SnapshotFilter.hs b/gen/Amazonka/FSx/Types/SnapshotFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SnapshotFilter.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.FSx.Types.SnapshotFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SnapshotFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SnapshotFilterName
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter used to restrict the results of @DescribeSnapshots@ calls. You
+-- can use multiple filters to return results that meet all applied filter
+-- requirements.
+--
+-- /See:/ 'newSnapshotFilter' smart constructor.
+data SnapshotFilter = SnapshotFilter'
+  { -- | The name of the filter to use. You can filter by the @file-system-id@ or
+    -- by @volume-id@.
+    name :: Prelude.Maybe SnapshotFilterName,
+    -- | The @file-system-id@ or @volume-id@ that you are filtering for.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SnapshotFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'snapshotFilter_name' - The name of the filter to use. You can filter by the @file-system-id@ or
+-- by @volume-id@.
+--
+-- 'values', 'snapshotFilter_values' - The @file-system-id@ or @volume-id@ that you are filtering for.
+newSnapshotFilter ::
+  SnapshotFilter
+newSnapshotFilter =
+  SnapshotFilter'
+    { name = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The name of the filter to use. You can filter by the @file-system-id@ or
+-- by @volume-id@.
+snapshotFilter_name :: Lens.Lens' SnapshotFilter (Prelude.Maybe SnapshotFilterName)
+snapshotFilter_name = Lens.lens (\SnapshotFilter' {name} -> name) (\s@SnapshotFilter' {} a -> s {name = a} :: SnapshotFilter)
+
+-- | The @file-system-id@ or @volume-id@ that you are filtering for.
+snapshotFilter_values :: Lens.Lens' SnapshotFilter (Prelude.Maybe [Prelude.Text])
+snapshotFilter_values = Lens.lens (\SnapshotFilter' {values} -> values) (\s@SnapshotFilter' {} a -> s {values = a} :: SnapshotFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable SnapshotFilter where
+  hashWithSalt _salt SnapshotFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData SnapshotFilter where
+  rnf SnapshotFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON SnapshotFilter where
+  toJSON SnapshotFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/SnapshotFilterName.hs b/gen/Amazonka/FSx/Types/SnapshotFilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SnapshotFilterName.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.FSx.Types.SnapshotFilterName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SnapshotFilterName
+  ( SnapshotFilterName
+      ( ..,
+        SnapshotFilterName_File_system_id,
+        SnapshotFilterName_Volume_id
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SnapshotFilterName = SnapshotFilterName'
+  { fromSnapshotFilterName ::
+      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 SnapshotFilterName_File_system_id :: SnapshotFilterName
+pattern SnapshotFilterName_File_system_id = SnapshotFilterName' "file-system-id"
+
+pattern SnapshotFilterName_Volume_id :: SnapshotFilterName
+pattern SnapshotFilterName_Volume_id = SnapshotFilterName' "volume-id"
+
+{-# COMPLETE
+  SnapshotFilterName_File_system_id,
+  SnapshotFilterName_Volume_id,
+  SnapshotFilterName'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/SnapshotLifecycle.hs b/gen/Amazonka/FSx/Types/SnapshotLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SnapshotLifecycle.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.FSx.Types.SnapshotLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SnapshotLifecycle
+  ( SnapshotLifecycle
+      ( ..,
+        SnapshotLifecycle_AVAILABLE,
+        SnapshotLifecycle_CREATING,
+        SnapshotLifecycle_DELETING,
+        SnapshotLifecycle_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SnapshotLifecycle = SnapshotLifecycle'
+  { fromSnapshotLifecycle ::
+      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 SnapshotLifecycle_AVAILABLE :: SnapshotLifecycle
+pattern SnapshotLifecycle_AVAILABLE = SnapshotLifecycle' "AVAILABLE"
+
+pattern SnapshotLifecycle_CREATING :: SnapshotLifecycle
+pattern SnapshotLifecycle_CREATING = SnapshotLifecycle' "CREATING"
+
+pattern SnapshotLifecycle_DELETING :: SnapshotLifecycle
+pattern SnapshotLifecycle_DELETING = SnapshotLifecycle' "DELETING"
+
+pattern SnapshotLifecycle_PENDING :: SnapshotLifecycle
+pattern SnapshotLifecycle_PENDING = SnapshotLifecycle' "PENDING"
+
+{-# COMPLETE
+  SnapshotLifecycle_AVAILABLE,
+  SnapshotLifecycle_CREATING,
+  SnapshotLifecycle_DELETING,
+  SnapshotLifecycle_PENDING,
+  SnapshotLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/Status.hs b/gen/Amazonka/FSx/Types/Status.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Status.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.FSx.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.FSx.Types.Status
+  ( Status
+      ( ..,
+        Status_COMPLETED,
+        Status_FAILED,
+        Status_IN_PROGRESS,
+        Status_PENDING,
+        Status_UPDATED_OPTIMIZING
+      ),
+  )
+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_COMPLETED :: Status
+pattern Status_COMPLETED = Status' "COMPLETED"
+
+pattern Status_FAILED :: Status
+pattern Status_FAILED = Status' "FAILED"
+
+pattern Status_IN_PROGRESS :: Status
+pattern Status_IN_PROGRESS = Status' "IN_PROGRESS"
+
+pattern Status_PENDING :: Status
+pattern Status_PENDING = Status' "PENDING"
+
+pattern Status_UPDATED_OPTIMIZING :: Status
+pattern Status_UPDATED_OPTIMIZING = Status' "UPDATED_OPTIMIZING"
+
+{-# COMPLETE
+  Status_COMPLETED,
+  Status_FAILED,
+  Status_IN_PROGRESS,
+  Status_PENDING,
+  Status_UPDATED_OPTIMIZING,
+  Status'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/StorageType.hs b/gen/Amazonka/FSx/Types/StorageType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageType.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.StorageType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageType
+  ( StorageType
+      ( ..,
+        StorageType_HDD,
+        StorageType_SSD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The storage type for your Amazon FSx file system.
+newtype StorageType = StorageType'
+  { fromStorageType ::
+      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 StorageType_HDD :: StorageType
+pattern StorageType_HDD = StorageType' "HDD"
+
+pattern StorageType_SSD :: StorageType
+pattern StorageType_SSD = StorageType' "SSD"
+
+{-# COMPLETE
+  StorageType_HDD,
+  StorageType_SSD,
+  StorageType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/StorageVirtualMachine.hs b/gen/Amazonka/FSx/Types/StorageVirtualMachine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageVirtualMachine.hs
@@ -0,0 +1,266 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.StorageVirtualMachine
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageVirtualMachine where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.LifecycleTransitionReason
+import Amazonka.FSx.Types.StorageVirtualMachineLifecycle
+import Amazonka.FSx.Types.StorageVirtualMachineRootVolumeSecurityStyle
+import Amazonka.FSx.Types.StorageVirtualMachineSubtype
+import Amazonka.FSx.Types.SvmActiveDirectoryConfiguration
+import Amazonka.FSx.Types.SvmEndpoints
+import Amazonka.FSx.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the Amazon FSx for NetApp ONTAP storage virtual machine (SVM)
+-- configuration.
+--
+-- /See:/ 'newStorageVirtualMachine' smart constructor.
+data StorageVirtualMachine = StorageVirtualMachine'
+  { -- | Describes the Microsoft Active Directory configuration to which the SVM
+    -- is joined, if applicable.
+    activeDirectoryConfiguration :: Prelude.Maybe SvmActiveDirectoryConfiguration,
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The endpoints that are used to access data or to manage the SVM using
+    -- the NetApp ONTAP CLI, REST API, or NetApp CloudManager. They are the
+    -- @Iscsi@, @Management@, @Nfs@, and @Smb@ endpoints.
+    endpoints :: Prelude.Maybe SvmEndpoints,
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the SVM\'s lifecycle status.
+    --
+    -- -   @CREATED@ - The SVM is fully available for use.
+    --
+    -- -   @CREATING@ - Amazon FSx is creating the new SVM.
+    --
+    -- -   @DELETING@ - Amazon FSx is deleting an existing SVM.
+    --
+    -- -   @FAILED@ - Amazon FSx was unable to create the SVM.
+    --
+    -- -   @MISCONFIGURED@ - The SVM is in a failed but recoverable state.
+    --
+    -- -   @PENDING@ - Amazon FSx has not started creating the SVM.
+    lifecycle :: Prelude.Maybe StorageVirtualMachineLifecycle,
+    -- | Describes why the SVM lifecycle state changed.
+    lifecycleTransitionReason :: Prelude.Maybe LifecycleTransitionReason,
+    -- | The name of the SVM, if provisioned.
+    name :: Prelude.Maybe Prelude.Text,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The security style of the root volume of the SVM.
+    rootVolumeSecurityStyle :: Prelude.Maybe StorageVirtualMachineRootVolumeSecurityStyle,
+    -- | The SVM\'s system generated unique ID.
+    storageVirtualMachineId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the SVM\'s subtype.
+    subtype :: Prelude.Maybe StorageVirtualMachineSubtype,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The SVM\'s UUID (universally unique identifier).
+    uuid :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StorageVirtualMachine' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryConfiguration', 'storageVirtualMachine_activeDirectoryConfiguration' - Describes the Microsoft Active Directory configuration to which the SVM
+-- is joined, if applicable.
+--
+-- 'creationTime', 'storageVirtualMachine_creationTime' - Undocumented member.
+--
+-- 'endpoints', 'storageVirtualMachine_endpoints' - The endpoints that are used to access data or to manage the SVM using
+-- the NetApp ONTAP CLI, REST API, or NetApp CloudManager. They are the
+-- @Iscsi@, @Management@, @Nfs@, and @Smb@ endpoints.
+--
+-- 'fileSystemId', 'storageVirtualMachine_fileSystemId' - Undocumented member.
+--
+-- 'lifecycle', 'storageVirtualMachine_lifecycle' - Describes the SVM\'s lifecycle status.
+--
+-- -   @CREATED@ - The SVM is fully available for use.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new SVM.
+--
+-- -   @DELETING@ - Amazon FSx is deleting an existing SVM.
+--
+-- -   @FAILED@ - Amazon FSx was unable to create the SVM.
+--
+-- -   @MISCONFIGURED@ - The SVM is in a failed but recoverable state.
+--
+-- -   @PENDING@ - Amazon FSx has not started creating the SVM.
+--
+-- 'lifecycleTransitionReason', 'storageVirtualMachine_lifecycleTransitionReason' - Describes why the SVM lifecycle state changed.
+--
+-- 'name', 'storageVirtualMachine_name' - The name of the SVM, if provisioned.
+--
+-- 'resourceARN', 'storageVirtualMachine_resourceARN' - Undocumented member.
+--
+-- 'rootVolumeSecurityStyle', 'storageVirtualMachine_rootVolumeSecurityStyle' - The security style of the root volume of the SVM.
+--
+-- 'storageVirtualMachineId', 'storageVirtualMachine_storageVirtualMachineId' - The SVM\'s system generated unique ID.
+--
+-- 'subtype', 'storageVirtualMachine_subtype' - Describes the SVM\'s subtype.
+--
+-- 'tags', 'storageVirtualMachine_tags' - Undocumented member.
+--
+-- 'uuid', 'storageVirtualMachine_uuid' - The SVM\'s UUID (universally unique identifier).
+newStorageVirtualMachine ::
+  StorageVirtualMachine
+newStorageVirtualMachine =
+  StorageVirtualMachine'
+    { activeDirectoryConfiguration =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      endpoints = Prelude.Nothing,
+      fileSystemId = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lifecycleTransitionReason = Prelude.Nothing,
+      name = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      rootVolumeSecurityStyle = Prelude.Nothing,
+      storageVirtualMachineId = Prelude.Nothing,
+      subtype = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      uuid = Prelude.Nothing
+    }
+
+-- | Describes the Microsoft Active Directory configuration to which the SVM
+-- is joined, if applicable.
+storageVirtualMachine_activeDirectoryConfiguration :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe SvmActiveDirectoryConfiguration)
+storageVirtualMachine_activeDirectoryConfiguration = Lens.lens (\StorageVirtualMachine' {activeDirectoryConfiguration} -> activeDirectoryConfiguration) (\s@StorageVirtualMachine' {} a -> s {activeDirectoryConfiguration = a} :: StorageVirtualMachine)
+
+-- | Undocumented member.
+storageVirtualMachine_creationTime :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe Prelude.UTCTime)
+storageVirtualMachine_creationTime = Lens.lens (\StorageVirtualMachine' {creationTime} -> creationTime) (\s@StorageVirtualMachine' {} a -> s {creationTime = a} :: StorageVirtualMachine) Prelude.. Lens.mapping Data._Time
+
+-- | The endpoints that are used to access data or to manage the SVM using
+-- the NetApp ONTAP CLI, REST API, or NetApp CloudManager. They are the
+-- @Iscsi@, @Management@, @Nfs@, and @Smb@ endpoints.
+storageVirtualMachine_endpoints :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe SvmEndpoints)
+storageVirtualMachine_endpoints = Lens.lens (\StorageVirtualMachine' {endpoints} -> endpoints) (\s@StorageVirtualMachine' {} a -> s {endpoints = a} :: StorageVirtualMachine)
+
+-- | Undocumented member.
+storageVirtualMachine_fileSystemId :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe Prelude.Text)
+storageVirtualMachine_fileSystemId = Lens.lens (\StorageVirtualMachine' {fileSystemId} -> fileSystemId) (\s@StorageVirtualMachine' {} a -> s {fileSystemId = a} :: StorageVirtualMachine)
+
+-- | Describes the SVM\'s lifecycle status.
+--
+-- -   @CREATED@ - The SVM is fully available for use.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new SVM.
+--
+-- -   @DELETING@ - Amazon FSx is deleting an existing SVM.
+--
+-- -   @FAILED@ - Amazon FSx was unable to create the SVM.
+--
+-- -   @MISCONFIGURED@ - The SVM is in a failed but recoverable state.
+--
+-- -   @PENDING@ - Amazon FSx has not started creating the SVM.
+storageVirtualMachine_lifecycle :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe StorageVirtualMachineLifecycle)
+storageVirtualMachine_lifecycle = Lens.lens (\StorageVirtualMachine' {lifecycle} -> lifecycle) (\s@StorageVirtualMachine' {} a -> s {lifecycle = a} :: StorageVirtualMachine)
+
+-- | Describes why the SVM lifecycle state changed.
+storageVirtualMachine_lifecycleTransitionReason :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe LifecycleTransitionReason)
+storageVirtualMachine_lifecycleTransitionReason = Lens.lens (\StorageVirtualMachine' {lifecycleTransitionReason} -> lifecycleTransitionReason) (\s@StorageVirtualMachine' {} a -> s {lifecycleTransitionReason = a} :: StorageVirtualMachine)
+
+-- | The name of the SVM, if provisioned.
+storageVirtualMachine_name :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe Prelude.Text)
+storageVirtualMachine_name = Lens.lens (\StorageVirtualMachine' {name} -> name) (\s@StorageVirtualMachine' {} a -> s {name = a} :: StorageVirtualMachine)
+
+-- | Undocumented member.
+storageVirtualMachine_resourceARN :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe Prelude.Text)
+storageVirtualMachine_resourceARN = Lens.lens (\StorageVirtualMachine' {resourceARN} -> resourceARN) (\s@StorageVirtualMachine' {} a -> s {resourceARN = a} :: StorageVirtualMachine)
+
+-- | The security style of the root volume of the SVM.
+storageVirtualMachine_rootVolumeSecurityStyle :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe StorageVirtualMachineRootVolumeSecurityStyle)
+storageVirtualMachine_rootVolumeSecurityStyle = Lens.lens (\StorageVirtualMachine' {rootVolumeSecurityStyle} -> rootVolumeSecurityStyle) (\s@StorageVirtualMachine' {} a -> s {rootVolumeSecurityStyle = a} :: StorageVirtualMachine)
+
+-- | The SVM\'s system generated unique ID.
+storageVirtualMachine_storageVirtualMachineId :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe Prelude.Text)
+storageVirtualMachine_storageVirtualMachineId = Lens.lens (\StorageVirtualMachine' {storageVirtualMachineId} -> storageVirtualMachineId) (\s@StorageVirtualMachine' {} a -> s {storageVirtualMachineId = a} :: StorageVirtualMachine)
+
+-- | Describes the SVM\'s subtype.
+storageVirtualMachine_subtype :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe StorageVirtualMachineSubtype)
+storageVirtualMachine_subtype = Lens.lens (\StorageVirtualMachine' {subtype} -> subtype) (\s@StorageVirtualMachine' {} a -> s {subtype = a} :: StorageVirtualMachine)
+
+-- | Undocumented member.
+storageVirtualMachine_tags :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe (Prelude.NonEmpty Tag))
+storageVirtualMachine_tags = Lens.lens (\StorageVirtualMachine' {tags} -> tags) (\s@StorageVirtualMachine' {} a -> s {tags = a} :: StorageVirtualMachine) Prelude.. Lens.mapping Lens.coerced
+
+-- | The SVM\'s UUID (universally unique identifier).
+storageVirtualMachine_uuid :: Lens.Lens' StorageVirtualMachine (Prelude.Maybe Prelude.Text)
+storageVirtualMachine_uuid = Lens.lens (\StorageVirtualMachine' {uuid} -> uuid) (\s@StorageVirtualMachine' {} a -> s {uuid = a} :: StorageVirtualMachine)
+
+instance Data.FromJSON StorageVirtualMachine where
+  parseJSON =
+    Data.withObject
+      "StorageVirtualMachine"
+      ( \x ->
+          StorageVirtualMachine'
+            Prelude.<$> (x Data..:? "ActiveDirectoryConfiguration")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Endpoints")
+            Prelude.<*> (x Data..:? "FileSystemId")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "LifecycleTransitionReason")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "RootVolumeSecurityStyle")
+            Prelude.<*> (x Data..:? "StorageVirtualMachineId")
+            Prelude.<*> (x Data..:? "Subtype")
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..:? "UUID")
+      )
+
+instance Prelude.Hashable StorageVirtualMachine where
+  hashWithSalt _salt StorageVirtualMachine' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeDirectoryConfiguration
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` endpoints
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` lifecycleTransitionReason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` rootVolumeSecurityStyle
+      `Prelude.hashWithSalt` storageVirtualMachineId
+      `Prelude.hashWithSalt` subtype
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` uuid
+
+instance Prelude.NFData StorageVirtualMachine where
+  rnf StorageVirtualMachine' {..} =
+    Prelude.rnf activeDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lifecycleTransitionReason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf rootVolumeSecurityStyle
+      `Prelude.seq` Prelude.rnf storageVirtualMachineId
+      `Prelude.seq` Prelude.rnf subtype
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf uuid
diff --git a/gen/Amazonka/FSx/Types/StorageVirtualMachineFilter.hs b/gen/Amazonka/FSx/Types/StorageVirtualMachineFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageVirtualMachineFilter.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.FSx.Types.StorageVirtualMachineFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageVirtualMachineFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.StorageVirtualMachineFilterName
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter used to restrict the results of describe calls for Amazon FSx
+-- for NetApp ONTAP storage virtual machines (SVMs). You can use multiple
+-- filters to return results that meet all applied filter requirements.
+--
+-- /See:/ 'newStorageVirtualMachineFilter' smart constructor.
+data StorageVirtualMachineFilter = StorageVirtualMachineFilter'
+  { -- | The name for this filter.
+    name :: Prelude.Maybe StorageVirtualMachineFilterName,
+    -- | The values of the filter. These are all the values for any of the
+    -- applied filters.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StorageVirtualMachineFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'storageVirtualMachineFilter_name' - The name for this filter.
+--
+-- 'values', 'storageVirtualMachineFilter_values' - The values of the filter. These are all the values for any of the
+-- applied filters.
+newStorageVirtualMachineFilter ::
+  StorageVirtualMachineFilter
+newStorageVirtualMachineFilter =
+  StorageVirtualMachineFilter'
+    { name =
+        Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The name for this filter.
+storageVirtualMachineFilter_name :: Lens.Lens' StorageVirtualMachineFilter (Prelude.Maybe StorageVirtualMachineFilterName)
+storageVirtualMachineFilter_name = Lens.lens (\StorageVirtualMachineFilter' {name} -> name) (\s@StorageVirtualMachineFilter' {} a -> s {name = a} :: StorageVirtualMachineFilter)
+
+-- | The values of the filter. These are all the values for any of the
+-- applied filters.
+storageVirtualMachineFilter_values :: Lens.Lens' StorageVirtualMachineFilter (Prelude.Maybe [Prelude.Text])
+storageVirtualMachineFilter_values = Lens.lens (\StorageVirtualMachineFilter' {values} -> values) (\s@StorageVirtualMachineFilter' {} a -> s {values = a} :: StorageVirtualMachineFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable StorageVirtualMachineFilter where
+  hashWithSalt _salt StorageVirtualMachineFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData StorageVirtualMachineFilter where
+  rnf StorageVirtualMachineFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON StorageVirtualMachineFilter where
+  toJSON StorageVirtualMachineFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/StorageVirtualMachineFilterName.hs b/gen/Amazonka/FSx/Types/StorageVirtualMachineFilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageVirtualMachineFilterName.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.FSx.Types.StorageVirtualMachineFilterName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageVirtualMachineFilterName
+  ( StorageVirtualMachineFilterName
+      ( ..,
+        StorageVirtualMachineFilterName_File_system_id
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StorageVirtualMachineFilterName = StorageVirtualMachineFilterName'
+  { fromStorageVirtualMachineFilterName ::
+      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 StorageVirtualMachineFilterName_File_system_id :: StorageVirtualMachineFilterName
+pattern StorageVirtualMachineFilterName_File_system_id = StorageVirtualMachineFilterName' "file-system-id"
+
+{-# COMPLETE
+  StorageVirtualMachineFilterName_File_system_id,
+  StorageVirtualMachineFilterName'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/StorageVirtualMachineLifecycle.hs b/gen/Amazonka/FSx/Types/StorageVirtualMachineLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageVirtualMachineLifecycle.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.FSx.Types.StorageVirtualMachineLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageVirtualMachineLifecycle
+  ( StorageVirtualMachineLifecycle
+      ( ..,
+        StorageVirtualMachineLifecycle_CREATED,
+        StorageVirtualMachineLifecycle_CREATING,
+        StorageVirtualMachineLifecycle_DELETING,
+        StorageVirtualMachineLifecycle_FAILED,
+        StorageVirtualMachineLifecycle_MISCONFIGURED,
+        StorageVirtualMachineLifecycle_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StorageVirtualMachineLifecycle = StorageVirtualMachineLifecycle'
+  { fromStorageVirtualMachineLifecycle ::
+      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 StorageVirtualMachineLifecycle_CREATED :: StorageVirtualMachineLifecycle
+pattern StorageVirtualMachineLifecycle_CREATED = StorageVirtualMachineLifecycle' "CREATED"
+
+pattern StorageVirtualMachineLifecycle_CREATING :: StorageVirtualMachineLifecycle
+pattern StorageVirtualMachineLifecycle_CREATING = StorageVirtualMachineLifecycle' "CREATING"
+
+pattern StorageVirtualMachineLifecycle_DELETING :: StorageVirtualMachineLifecycle
+pattern StorageVirtualMachineLifecycle_DELETING = StorageVirtualMachineLifecycle' "DELETING"
+
+pattern StorageVirtualMachineLifecycle_FAILED :: StorageVirtualMachineLifecycle
+pattern StorageVirtualMachineLifecycle_FAILED = StorageVirtualMachineLifecycle' "FAILED"
+
+pattern StorageVirtualMachineLifecycle_MISCONFIGURED :: StorageVirtualMachineLifecycle
+pattern StorageVirtualMachineLifecycle_MISCONFIGURED = StorageVirtualMachineLifecycle' "MISCONFIGURED"
+
+pattern StorageVirtualMachineLifecycle_PENDING :: StorageVirtualMachineLifecycle
+pattern StorageVirtualMachineLifecycle_PENDING = StorageVirtualMachineLifecycle' "PENDING"
+
+{-# COMPLETE
+  StorageVirtualMachineLifecycle_CREATED,
+  StorageVirtualMachineLifecycle_CREATING,
+  StorageVirtualMachineLifecycle_DELETING,
+  StorageVirtualMachineLifecycle_FAILED,
+  StorageVirtualMachineLifecycle_MISCONFIGURED,
+  StorageVirtualMachineLifecycle_PENDING,
+  StorageVirtualMachineLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/StorageVirtualMachineRootVolumeSecurityStyle.hs b/gen/Amazonka/FSx/Types/StorageVirtualMachineRootVolumeSecurityStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageVirtualMachineRootVolumeSecurityStyle.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.FSx.Types.StorageVirtualMachineRootVolumeSecurityStyle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageVirtualMachineRootVolumeSecurityStyle
+  ( StorageVirtualMachineRootVolumeSecurityStyle
+      ( ..,
+        StorageVirtualMachineRootVolumeSecurityStyle_MIXED,
+        StorageVirtualMachineRootVolumeSecurityStyle_NTFS,
+        StorageVirtualMachineRootVolumeSecurityStyle_UNIX
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StorageVirtualMachineRootVolumeSecurityStyle = StorageVirtualMachineRootVolumeSecurityStyle'
+  { fromStorageVirtualMachineRootVolumeSecurityStyle ::
+      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 StorageVirtualMachineRootVolumeSecurityStyle_MIXED :: StorageVirtualMachineRootVolumeSecurityStyle
+pattern StorageVirtualMachineRootVolumeSecurityStyle_MIXED = StorageVirtualMachineRootVolumeSecurityStyle' "MIXED"
+
+pattern StorageVirtualMachineRootVolumeSecurityStyle_NTFS :: StorageVirtualMachineRootVolumeSecurityStyle
+pattern StorageVirtualMachineRootVolumeSecurityStyle_NTFS = StorageVirtualMachineRootVolumeSecurityStyle' "NTFS"
+
+pattern StorageVirtualMachineRootVolumeSecurityStyle_UNIX :: StorageVirtualMachineRootVolumeSecurityStyle
+pattern StorageVirtualMachineRootVolumeSecurityStyle_UNIX = StorageVirtualMachineRootVolumeSecurityStyle' "UNIX"
+
+{-# COMPLETE
+  StorageVirtualMachineRootVolumeSecurityStyle_MIXED,
+  StorageVirtualMachineRootVolumeSecurityStyle_NTFS,
+  StorageVirtualMachineRootVolumeSecurityStyle_UNIX,
+  StorageVirtualMachineRootVolumeSecurityStyle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/StorageVirtualMachineSubtype.hs b/gen/Amazonka/FSx/Types/StorageVirtualMachineSubtype.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/StorageVirtualMachineSubtype.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.FSx.Types.StorageVirtualMachineSubtype
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.StorageVirtualMachineSubtype
+  ( StorageVirtualMachineSubtype
+      ( ..,
+        StorageVirtualMachineSubtype_DEFAULT,
+        StorageVirtualMachineSubtype_DP_DESTINATION,
+        StorageVirtualMachineSubtype_SYNC_DESTINATION,
+        StorageVirtualMachineSubtype_SYNC_SOURCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StorageVirtualMachineSubtype = StorageVirtualMachineSubtype'
+  { fromStorageVirtualMachineSubtype ::
+      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 StorageVirtualMachineSubtype_DEFAULT :: StorageVirtualMachineSubtype
+pattern StorageVirtualMachineSubtype_DEFAULT = StorageVirtualMachineSubtype' "DEFAULT"
+
+pattern StorageVirtualMachineSubtype_DP_DESTINATION :: StorageVirtualMachineSubtype
+pattern StorageVirtualMachineSubtype_DP_DESTINATION = StorageVirtualMachineSubtype' "DP_DESTINATION"
+
+pattern StorageVirtualMachineSubtype_SYNC_DESTINATION :: StorageVirtualMachineSubtype
+pattern StorageVirtualMachineSubtype_SYNC_DESTINATION = StorageVirtualMachineSubtype' "SYNC_DESTINATION"
+
+pattern StorageVirtualMachineSubtype_SYNC_SOURCE :: StorageVirtualMachineSubtype
+pattern StorageVirtualMachineSubtype_SYNC_SOURCE = StorageVirtualMachineSubtype' "SYNC_SOURCE"
+
+{-# COMPLETE
+  StorageVirtualMachineSubtype_DEFAULT,
+  StorageVirtualMachineSubtype_DP_DESTINATION,
+  StorageVirtualMachineSubtype_SYNC_DESTINATION,
+  StorageVirtualMachineSubtype_SYNC_SOURCE,
+  StorageVirtualMachineSubtype'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/SvmActiveDirectoryConfiguration.hs b/gen/Amazonka/FSx/Types/SvmActiveDirectoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SvmActiveDirectoryConfiguration.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.FSx.Types.SvmActiveDirectoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SvmActiveDirectoryConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the configuration of the Microsoft Active Directory (AD)
+-- directory to which the Amazon FSx for ONTAP storage virtual machine
+-- (SVM) is joined. Pleae note, account credentials are not returned in the
+-- response payload.
+--
+-- /See:/ 'newSvmActiveDirectoryConfiguration' smart constructor.
+data SvmActiveDirectoryConfiguration = SvmActiveDirectoryConfiguration'
+  { -- | The NetBIOS name of the Active Directory computer object that is joined
+    -- to your SVM.
+    netBiosName :: Prelude.Maybe Prelude.Text,
+    selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryAttributes
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SvmActiveDirectoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'netBiosName', 'svmActiveDirectoryConfiguration_netBiosName' - The NetBIOS name of the Active Directory computer object that is joined
+-- to your SVM.
+--
+-- 'selfManagedActiveDirectoryConfiguration', 'svmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration' - Undocumented member.
+newSvmActiveDirectoryConfiguration ::
+  SvmActiveDirectoryConfiguration
+newSvmActiveDirectoryConfiguration =
+  SvmActiveDirectoryConfiguration'
+    { netBiosName =
+        Prelude.Nothing,
+      selfManagedActiveDirectoryConfiguration =
+        Prelude.Nothing
+    }
+
+-- | The NetBIOS name of the Active Directory computer object that is joined
+-- to your SVM.
+svmActiveDirectoryConfiguration_netBiosName :: Lens.Lens' SvmActiveDirectoryConfiguration (Prelude.Maybe Prelude.Text)
+svmActiveDirectoryConfiguration_netBiosName = Lens.lens (\SvmActiveDirectoryConfiguration' {netBiosName} -> netBiosName) (\s@SvmActiveDirectoryConfiguration' {} a -> s {netBiosName = a} :: SvmActiveDirectoryConfiguration)
+
+-- | Undocumented member.
+svmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' SvmActiveDirectoryConfiguration (Prelude.Maybe SelfManagedActiveDirectoryAttributes)
+svmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\SvmActiveDirectoryConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@SvmActiveDirectoryConfiguration' {} a -> s {selfManagedActiveDirectoryConfiguration = a} :: SvmActiveDirectoryConfiguration)
+
+instance
+  Data.FromJSON
+    SvmActiveDirectoryConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SvmActiveDirectoryConfiguration"
+      ( \x ->
+          SvmActiveDirectoryConfiguration'
+            Prelude.<$> (x Data..:? "NetBiosName")
+            Prelude.<*> ( x
+                            Data..:? "SelfManagedActiveDirectoryConfiguration"
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    SvmActiveDirectoryConfiguration
+  where
+  hashWithSalt
+    _salt
+    SvmActiveDirectoryConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` netBiosName
+        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
+
+instance
+  Prelude.NFData
+    SvmActiveDirectoryConfiguration
+  where
+  rnf SvmActiveDirectoryConfiguration' {..} =
+    Prelude.rnf netBiosName
+      `Prelude.seq` Prelude.rnf selfManagedActiveDirectoryConfiguration
diff --git a/gen/Amazonka/FSx/Types/SvmEndpoint.hs b/gen/Amazonka/FSx/Types/SvmEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SvmEndpoint.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.FSx.Types.SvmEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SvmEndpoint where
+
+import qualified 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 Amazon FSx for NetApp ONTAP storage virtual machine (SVM) has four
+-- endpoints that are used to access data or to manage the SVM using the
+-- NetApp ONTAP CLI, REST API, or NetApp CloudManager. They are the
+-- @Iscsi@, @Management@, @Nfs@, and @Smb@ endpoints.
+--
+-- /See:/ 'newSvmEndpoint' smart constructor.
+data SvmEndpoint = SvmEndpoint'
+  { dNSName :: Prelude.Maybe Prelude.Text,
+    -- | The SVM endpoint\'s IP addresses.
+    ipAddresses :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SvmEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dNSName', 'svmEndpoint_dNSName' - Undocumented member.
+--
+-- 'ipAddresses', 'svmEndpoint_ipAddresses' - The SVM endpoint\'s IP addresses.
+newSvmEndpoint ::
+  SvmEndpoint
+newSvmEndpoint =
+  SvmEndpoint'
+    { dNSName = Prelude.Nothing,
+      ipAddresses = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+svmEndpoint_dNSName :: Lens.Lens' SvmEndpoint (Prelude.Maybe Prelude.Text)
+svmEndpoint_dNSName = Lens.lens (\SvmEndpoint' {dNSName} -> dNSName) (\s@SvmEndpoint' {} a -> s {dNSName = a} :: SvmEndpoint)
+
+-- | The SVM endpoint\'s IP addresses.
+svmEndpoint_ipAddresses :: Lens.Lens' SvmEndpoint (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+svmEndpoint_ipAddresses = Lens.lens (\SvmEndpoint' {ipAddresses} -> ipAddresses) (\s@SvmEndpoint' {} a -> s {ipAddresses = a} :: SvmEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SvmEndpoint where
+  parseJSON =
+    Data.withObject
+      "SvmEndpoint"
+      ( \x ->
+          SvmEndpoint'
+            Prelude.<$> (x Data..:? "DNSName")
+            Prelude.<*> (x Data..:? "IpAddresses")
+      )
+
+instance Prelude.Hashable SvmEndpoint where
+  hashWithSalt _salt SvmEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` dNSName
+      `Prelude.hashWithSalt` ipAddresses
+
+instance Prelude.NFData SvmEndpoint where
+  rnf SvmEndpoint' {..} =
+    Prelude.rnf dNSName
+      `Prelude.seq` Prelude.rnf ipAddresses
diff --git a/gen/Amazonka/FSx/Types/SvmEndpoints.hs b/gen/Amazonka/FSx/Types/SvmEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/SvmEndpoints.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.FSx.Types.SvmEndpoints
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.SvmEndpoints where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SvmEndpoint
+import qualified Amazonka.Prelude as Prelude
+
+-- | An Amazon FSx for NetApp ONTAP storage virtual machine (SVM) has the
+-- following endpoints that are used to access data or to manage the SVM
+-- using the NetApp ONTAP CLI, REST API, or NetApp CloudManager.
+--
+-- /See:/ 'newSvmEndpoints' smart constructor.
+data SvmEndpoints = SvmEndpoints'
+  { -- | An endpoint for connecting using the Internet Small Computer Systems
+    -- Interface (iSCSI) protocol.
+    iscsi :: Prelude.Maybe SvmEndpoint,
+    -- | An endpoint for managing SVMs using the NetApp ONTAP CLI, NetApp ONTAP
+    -- API, or NetApp CloudManager.
+    management :: Prelude.Maybe SvmEndpoint,
+    -- | An endpoint for connecting using the Network File System (NFS) protocol.
+    nfs :: Prelude.Maybe SvmEndpoint,
+    -- | An endpoint for connecting using the Server Message Block (SMB)
+    -- protocol.
+    smb :: Prelude.Maybe SvmEndpoint
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SvmEndpoints' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iscsi', 'svmEndpoints_iscsi' - An endpoint for connecting using the Internet Small Computer Systems
+-- Interface (iSCSI) protocol.
+--
+-- 'management', 'svmEndpoints_management' - An endpoint for managing SVMs using the NetApp ONTAP CLI, NetApp ONTAP
+-- API, or NetApp CloudManager.
+--
+-- 'nfs', 'svmEndpoints_nfs' - An endpoint for connecting using the Network File System (NFS) protocol.
+--
+-- 'smb', 'svmEndpoints_smb' - An endpoint for connecting using the Server Message Block (SMB)
+-- protocol.
+newSvmEndpoints ::
+  SvmEndpoints
+newSvmEndpoints =
+  SvmEndpoints'
+    { iscsi = Prelude.Nothing,
+      management = Prelude.Nothing,
+      nfs = Prelude.Nothing,
+      smb = Prelude.Nothing
+    }
+
+-- | An endpoint for connecting using the Internet Small Computer Systems
+-- Interface (iSCSI) protocol.
+svmEndpoints_iscsi :: Lens.Lens' SvmEndpoints (Prelude.Maybe SvmEndpoint)
+svmEndpoints_iscsi = Lens.lens (\SvmEndpoints' {iscsi} -> iscsi) (\s@SvmEndpoints' {} a -> s {iscsi = a} :: SvmEndpoints)
+
+-- | An endpoint for managing SVMs using the NetApp ONTAP CLI, NetApp ONTAP
+-- API, or NetApp CloudManager.
+svmEndpoints_management :: Lens.Lens' SvmEndpoints (Prelude.Maybe SvmEndpoint)
+svmEndpoints_management = Lens.lens (\SvmEndpoints' {management} -> management) (\s@SvmEndpoints' {} a -> s {management = a} :: SvmEndpoints)
+
+-- | An endpoint for connecting using the Network File System (NFS) protocol.
+svmEndpoints_nfs :: Lens.Lens' SvmEndpoints (Prelude.Maybe SvmEndpoint)
+svmEndpoints_nfs = Lens.lens (\SvmEndpoints' {nfs} -> nfs) (\s@SvmEndpoints' {} a -> s {nfs = a} :: SvmEndpoints)
+
+-- | An endpoint for connecting using the Server Message Block (SMB)
+-- protocol.
+svmEndpoints_smb :: Lens.Lens' SvmEndpoints (Prelude.Maybe SvmEndpoint)
+svmEndpoints_smb = Lens.lens (\SvmEndpoints' {smb} -> smb) (\s@SvmEndpoints' {} a -> s {smb = a} :: SvmEndpoints)
+
+instance Data.FromJSON SvmEndpoints where
+  parseJSON =
+    Data.withObject
+      "SvmEndpoints"
+      ( \x ->
+          SvmEndpoints'
+            Prelude.<$> (x Data..:? "Iscsi")
+            Prelude.<*> (x Data..:? "Management")
+            Prelude.<*> (x Data..:? "Nfs")
+            Prelude.<*> (x Data..:? "Smb")
+      )
+
+instance Prelude.Hashable SvmEndpoints where
+  hashWithSalt _salt SvmEndpoints' {..} =
+    _salt
+      `Prelude.hashWithSalt` iscsi
+      `Prelude.hashWithSalt` management
+      `Prelude.hashWithSalt` nfs
+      `Prelude.hashWithSalt` smb
+
+instance Prelude.NFData SvmEndpoints where
+  rnf SvmEndpoints' {..} =
+    Prelude.rnf iscsi
+      `Prelude.seq` Prelude.rnf management
+      `Prelude.seq` Prelude.rnf nfs
+      `Prelude.seq` Prelude.rnf smb
diff --git a/gen/Amazonka/FSx/Types/Tag.hs b/gen/Amazonka/FSx/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Tag.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.FSx.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.FSx.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
+
+-- | Specifies a key-value pair for a resource tag.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | A value that specifies the @TagKey@, the name of the tag. Tag keys must
+    -- be unique for the resource to which they are attached.
+    key :: Prelude.Text,
+    -- | A value that specifies the @TagValue@, the value assigned to the
+    -- corresponding tag key. Tag values can be null and don\'t have to be
+    -- unique in a tag set. For example, you can have a key-value pair in a tag
+    -- set of @finances : April@ and also of @payroll : April@.
+    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' - A value that specifies the @TagKey@, the name of the tag. Tag keys must
+-- be unique for the resource to which they are attached.
+--
+-- 'value', 'tag_value' - A value that specifies the @TagValue@, the value assigned to the
+-- corresponding tag key. Tag values can be null and don\'t have to be
+-- unique in a tag set. For example, you can have a key-value pair in a tag
+-- set of @finances : April@ and also of @payroll : April@.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | A value that specifies the @TagKey@, the name of the tag. Tag keys must
+-- be unique for the resource to which they are attached.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | A value that specifies the @TagValue@, the value assigned to the
+-- corresponding tag key. Tag values can be null and don\'t have to be
+-- unique in a tag set. For example, you can have a key-value pair in a tag
+-- set of @finances : April@ and also of @payroll : April@.
+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/FSx/Types/TieringPolicy.hs b/gen/Amazonka/FSx/Types/TieringPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/TieringPolicy.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.FSx.Types.TieringPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.TieringPolicy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.TieringPolicyName
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the data tiering policy for an ONTAP volume. When enabled,
+-- Amazon FSx for ONTAP\'s intelligent tiering automatically transitions a
+-- volume\'s data between the file system\'s primary storage and capacity
+-- pool storage based on your access patterns.
+--
+-- Valid tiering policies are the following:
+--
+-- -   @SNAPSHOT_ONLY@ - (Default value) moves cold snapshots to the
+--     capacity pool storage tier.
+--
+-- -   @AUTO@ - moves cold user data and snapshots to the capacity pool
+--     storage tier based on your access patterns.
+--
+-- -   @ALL@ - moves all user data blocks in both the active file system
+--     and Snapshot copies to the storage pool tier.
+--
+-- -   @NONE@ - keeps a volume\'s data in the primary storage tier,
+--     preventing it from being moved to the capacity pool tier.
+--
+-- /See:/ 'newTieringPolicy' smart constructor.
+data TieringPolicy = TieringPolicy'
+  { -- | Specifies the number of days that user data in a volume must remain
+    -- inactive before it is considered \"cold\" and moved to the capacity
+    -- pool. Used with the @AUTO@ and @SNAPSHOT_ONLY@ tiering policies. Enter a
+    -- whole number between 2 and 183. Default values are 31 days for @AUTO@
+    -- and 2 days for @SNAPSHOT_ONLY@.
+    coolingPeriod :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies the tiering policy used to transition data. Default value is
+    -- @SNAPSHOT_ONLY@.
+    --
+    -- -   @SNAPSHOT_ONLY@ - moves cold snapshots to the capacity pool storage
+    --     tier.
+    --
+    -- -   @AUTO@ - moves cold user data and snapshots to the capacity pool
+    --     storage tier based on your access patterns.
+    --
+    -- -   @ALL@ - moves all user data blocks in both the active file system
+    --     and Snapshot copies to the storage pool tier.
+    --
+    -- -   @NONE@ - keeps a volume\'s data in the primary storage tier,
+    --     preventing it from being moved to the capacity pool tier.
+    name :: Prelude.Maybe TieringPolicyName
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TieringPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coolingPeriod', 'tieringPolicy_coolingPeriod' - Specifies the number of days that user data in a volume must remain
+-- inactive before it is considered \"cold\" and moved to the capacity
+-- pool. Used with the @AUTO@ and @SNAPSHOT_ONLY@ tiering policies. Enter a
+-- whole number between 2 and 183. Default values are 31 days for @AUTO@
+-- and 2 days for @SNAPSHOT_ONLY@.
+--
+-- 'name', 'tieringPolicy_name' - Specifies the tiering policy used to transition data. Default value is
+-- @SNAPSHOT_ONLY@.
+--
+-- -   @SNAPSHOT_ONLY@ - moves cold snapshots to the capacity pool storage
+--     tier.
+--
+-- -   @AUTO@ - moves cold user data and snapshots to the capacity pool
+--     storage tier based on your access patterns.
+--
+-- -   @ALL@ - moves all user data blocks in both the active file system
+--     and Snapshot copies to the storage pool tier.
+--
+-- -   @NONE@ - keeps a volume\'s data in the primary storage tier,
+--     preventing it from being moved to the capacity pool tier.
+newTieringPolicy ::
+  TieringPolicy
+newTieringPolicy =
+  TieringPolicy'
+    { coolingPeriod = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | Specifies the number of days that user data in a volume must remain
+-- inactive before it is considered \"cold\" and moved to the capacity
+-- pool. Used with the @AUTO@ and @SNAPSHOT_ONLY@ tiering policies. Enter a
+-- whole number between 2 and 183. Default values are 31 days for @AUTO@
+-- and 2 days for @SNAPSHOT_ONLY@.
+tieringPolicy_coolingPeriod :: Lens.Lens' TieringPolicy (Prelude.Maybe Prelude.Natural)
+tieringPolicy_coolingPeriod = Lens.lens (\TieringPolicy' {coolingPeriod} -> coolingPeriod) (\s@TieringPolicy' {} a -> s {coolingPeriod = a} :: TieringPolicy)
+
+-- | Specifies the tiering policy used to transition data. Default value is
+-- @SNAPSHOT_ONLY@.
+--
+-- -   @SNAPSHOT_ONLY@ - moves cold snapshots to the capacity pool storage
+--     tier.
+--
+-- -   @AUTO@ - moves cold user data and snapshots to the capacity pool
+--     storage tier based on your access patterns.
+--
+-- -   @ALL@ - moves all user data blocks in both the active file system
+--     and Snapshot copies to the storage pool tier.
+--
+-- -   @NONE@ - keeps a volume\'s data in the primary storage tier,
+--     preventing it from being moved to the capacity pool tier.
+tieringPolicy_name :: Lens.Lens' TieringPolicy (Prelude.Maybe TieringPolicyName)
+tieringPolicy_name = Lens.lens (\TieringPolicy' {name} -> name) (\s@TieringPolicy' {} a -> s {name = a} :: TieringPolicy)
+
+instance Data.FromJSON TieringPolicy where
+  parseJSON =
+    Data.withObject
+      "TieringPolicy"
+      ( \x ->
+          TieringPolicy'
+            Prelude.<$> (x Data..:? "CoolingPeriod")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable TieringPolicy where
+  hashWithSalt _salt TieringPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` coolingPeriod
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData TieringPolicy where
+  rnf TieringPolicy' {..} =
+    Prelude.rnf coolingPeriod
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON TieringPolicy where
+  toJSON TieringPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CoolingPeriod" Data..=) Prelude.<$> coolingPeriod,
+            ("Name" Data..=) Prelude.<$> name
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/TieringPolicyName.hs b/gen/Amazonka/FSx/Types/TieringPolicyName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/TieringPolicyName.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.FSx.Types.TieringPolicyName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.TieringPolicyName
+  ( TieringPolicyName
+      ( ..,
+        TieringPolicyName_ALL,
+        TieringPolicyName_AUTO,
+        TieringPolicyName_NONE,
+        TieringPolicyName_SNAPSHOT_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TieringPolicyName = TieringPolicyName'
+  { fromTieringPolicyName ::
+      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 TieringPolicyName_ALL :: TieringPolicyName
+pattern TieringPolicyName_ALL = TieringPolicyName' "ALL"
+
+pattern TieringPolicyName_AUTO :: TieringPolicyName
+pattern TieringPolicyName_AUTO = TieringPolicyName' "AUTO"
+
+pattern TieringPolicyName_NONE :: TieringPolicyName
+pattern TieringPolicyName_NONE = TieringPolicyName' "NONE"
+
+pattern TieringPolicyName_SNAPSHOT_ONLY :: TieringPolicyName
+pattern TieringPolicyName_SNAPSHOT_ONLY = TieringPolicyName' "SNAPSHOT_ONLY"
+
+{-# COMPLETE
+  TieringPolicyName_ALL,
+  TieringPolicyName_AUTO,
+  TieringPolicyName_NONE,
+  TieringPolicyName_SNAPSHOT_ONLY,
+  TieringPolicyName'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/UpdateFileCacheLustreConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateFileCacheLustreConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateFileCacheLustreConfiguration.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.FSx.Types.UpdateFileCacheLustreConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateFileCacheLustreConfiguration where
+
+import qualified 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 update for an Amazon File Cache resource.
+--
+-- /See:/ 'newUpdateFileCacheLustreConfiguration' smart constructor.
+data UpdateFileCacheLustreConfiguration = UpdateFileCacheLustreConfiguration'
+  { weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileCacheLustreConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'weeklyMaintenanceStartTime', 'updateFileCacheLustreConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+newUpdateFileCacheLustreConfiguration ::
+  UpdateFileCacheLustreConfiguration
+newUpdateFileCacheLustreConfiguration =
+  UpdateFileCacheLustreConfiguration'
+    { weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+updateFileCacheLustreConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' UpdateFileCacheLustreConfiguration (Prelude.Maybe Prelude.Text)
+updateFileCacheLustreConfiguration_weeklyMaintenanceStartTime = Lens.lens (\UpdateFileCacheLustreConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@UpdateFileCacheLustreConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: UpdateFileCacheLustreConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateFileCacheLustreConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateFileCacheLustreConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    UpdateFileCacheLustreConfiguration
+  where
+  rnf UpdateFileCacheLustreConfiguration' {..} =
+    Prelude.rnf weeklyMaintenanceStartTime
+
+instance
+  Data.ToJSON
+    UpdateFileCacheLustreConfiguration
+  where
+  toJSON UpdateFileCacheLustreConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateFileSystemLustreConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateFileSystemLustreConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateFileSystemLustreConfiguration.hs
@@ -0,0 +1,304 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.UpdateFileSystemLustreConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateFileSystemLustreConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.AutoImportPolicyType
+import Amazonka.FSx.Types.DataCompressionType
+import Amazonka.FSx.Types.LustreLogCreateConfiguration
+import Amazonka.FSx.Types.LustreRootSquashConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for Amazon FSx for Lustre file systems used in
+-- the @UpdateFileSystem@ operation.
+--
+-- /See:/ 'newUpdateFileSystemLustreConfiguration' smart constructor.
+data UpdateFileSystemLustreConfiguration = UpdateFileSystemLustreConfiguration'
+  { -- | (Optional) When you create your file system, your existing S3 objects
+    -- appear as file and directory listings. Use this property to choose how
+    -- Amazon FSx keeps your file and directory listing up to date as you add
+    -- or modify objects in your linked S3 bucket. @AutoImportPolicy@ can have
+    -- the following values:
+    --
+    -- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+    --     and directory listings from the linked S3 bucket when the file
+    --     system is created. FSx does not update the file and directory
+    --     listing for any new or changed objects after choosing this option.
+    --
+    -- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+    --     listings of any new objects added to the linked S3 bucket that do
+    --     not currently exist in the FSx file system.
+    --
+    -- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+    --     file and directory listings of any new objects added to the S3
+    --     bucket and any existing objects that are changed in the S3 bucket
+    --     after you choose this option.
+    --
+    -- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+    --     imports file and directory listings of any new objects added to the
+    --     S3 bucket, any existing objects that are changed in the S3 bucket,
+    --     and any objects that were deleted in the S3 bucket.
+    --
+    -- The @AutoImportPolicy@ parameter is not supported for Lustre file
+    -- systems with the @Persistent_2@ deployment type. Instead, use to update
+    -- a data repository association on your @Persistent_2@ file system.
+    autoImportPolicy :: Prelude.Maybe AutoImportPolicyType,
+    automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Sets the data compression configuration for the file system.
+    -- @DataCompressionType@ can have the following values:
+    --
+    -- -   @NONE@ - Data compression is turned off for the file system.
+    --
+    -- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+    --
+    -- If you don\'t use @DataCompressionType@, the file system retains its
+    -- current data compression configuration.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>.
+    dataCompressionType :: Prelude.Maybe DataCompressionType,
+    -- | The Lustre logging configuration used when updating an Amazon FSx for
+    -- Lustre file system. When logging is enabled, Lustre logs error and
+    -- warning events for data repositories associated with your file system to
+    -- Amazon CloudWatch Logs.
+    logConfiguration :: Prelude.Maybe LustreLogCreateConfiguration,
+    -- | The Lustre root squash configuration used when updating an Amazon FSx
+    -- for Lustre file system. When enabled, root squash restricts root-level
+    -- access from clients that try to access your file system as a root user.
+    rootSquashConfiguration :: Prelude.Maybe LustreRootSquashConfiguration,
+    -- | (Optional) The preferred start time to perform weekly maintenance,
+    -- formatted d:HH:MM in the UTC time zone. d is the weekday number, from 1
+    -- through 7, beginning with Monday and ending with Sunday.
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileSystemLustreConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoImportPolicy', 'updateFileSystemLustreConfiguration_autoImportPolicy' - (Optional) When you create your file system, your existing S3 objects
+-- appear as file and directory listings. Use this property to choose how
+-- Amazon FSx keeps your file and directory listing up to date as you add
+-- or modify objects in your linked S3 bucket. @AutoImportPolicy@ can have
+-- the following values:
+--
+-- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+--     and directory listings from the linked S3 bucket when the file
+--     system is created. FSx does not update the file and directory
+--     listing for any new or changed objects after choosing this option.
+--
+-- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+--     listings of any new objects added to the linked S3 bucket that do
+--     not currently exist in the FSx file system.
+--
+-- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+--     file and directory listings of any new objects added to the S3
+--     bucket and any existing objects that are changed in the S3 bucket
+--     after you choose this option.
+--
+-- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+--     imports file and directory listings of any new objects added to the
+--     S3 bucket, any existing objects that are changed in the S3 bucket,
+--     and any objects that were deleted in the S3 bucket.
+--
+-- The @AutoImportPolicy@ parameter is not supported for Lustre file
+-- systems with the @Persistent_2@ deployment type. Instead, use to update
+-- a data repository association on your @Persistent_2@ file system.
+--
+-- 'automaticBackupRetentionDays', 'updateFileSystemLustreConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'dailyAutomaticBackupStartTime', 'updateFileSystemLustreConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'dataCompressionType', 'updateFileSystemLustreConfiguration_dataCompressionType' - Sets the data compression configuration for the file system.
+-- @DataCompressionType@ can have the following values:
+--
+-- -   @NONE@ - Data compression is turned off for the file system.
+--
+-- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+--
+-- If you don\'t use @DataCompressionType@, the file system retains its
+-- current data compression configuration.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>.
+--
+-- 'logConfiguration', 'updateFileSystemLustreConfiguration_logConfiguration' - The Lustre logging configuration used when updating an Amazon FSx for
+-- Lustre file system. When logging is enabled, Lustre logs error and
+-- warning events for data repositories associated with your file system to
+-- Amazon CloudWatch Logs.
+--
+-- 'rootSquashConfiguration', 'updateFileSystemLustreConfiguration_rootSquashConfiguration' - The Lustre root squash configuration used when updating an Amazon FSx
+-- for Lustre file system. When enabled, root squash restricts root-level
+-- access from clients that try to access your file system as a root user.
+--
+-- 'weeklyMaintenanceStartTime', 'updateFileSystemLustreConfiguration_weeklyMaintenanceStartTime' - (Optional) The preferred start time to perform weekly maintenance,
+-- formatted d:HH:MM in the UTC time zone. d is the weekday number, from 1
+-- through 7, beginning with Monday and ending with Sunday.
+newUpdateFileSystemLustreConfiguration ::
+  UpdateFileSystemLustreConfiguration
+newUpdateFileSystemLustreConfiguration =
+  UpdateFileSystemLustreConfiguration'
+    { autoImportPolicy =
+        Prelude.Nothing,
+      automaticBackupRetentionDays =
+        Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      dataCompressionType = Prelude.Nothing,
+      logConfiguration = Prelude.Nothing,
+      rootSquashConfiguration =
+        Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | (Optional) When you create your file system, your existing S3 objects
+-- appear as file and directory listings. Use this property to choose how
+-- Amazon FSx keeps your file and directory listing up to date as you add
+-- or modify objects in your linked S3 bucket. @AutoImportPolicy@ can have
+-- the following values:
+--
+-- -   @NONE@ - (Default) AutoImport is off. Amazon FSx only updates file
+--     and directory listings from the linked S3 bucket when the file
+--     system is created. FSx does not update the file and directory
+--     listing for any new or changed objects after choosing this option.
+--
+-- -   @NEW@ - AutoImport is on. Amazon FSx automatically imports directory
+--     listings of any new objects added to the linked S3 bucket that do
+--     not currently exist in the FSx file system.
+--
+-- -   @NEW_CHANGED@ - AutoImport is on. Amazon FSx automatically imports
+--     file and directory listings of any new objects added to the S3
+--     bucket and any existing objects that are changed in the S3 bucket
+--     after you choose this option.
+--
+-- -   @NEW_CHANGED_DELETED@ - AutoImport is on. Amazon FSx automatically
+--     imports file and directory listings of any new objects added to the
+--     S3 bucket, any existing objects that are changed in the S3 bucket,
+--     and any objects that were deleted in the S3 bucket.
+--
+-- The @AutoImportPolicy@ parameter is not supported for Lustre file
+-- systems with the @Persistent_2@ deployment type. Instead, use to update
+-- a data repository association on your @Persistent_2@ file system.
+updateFileSystemLustreConfiguration_autoImportPolicy :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe AutoImportPolicyType)
+updateFileSystemLustreConfiguration_autoImportPolicy = Lens.lens (\UpdateFileSystemLustreConfiguration' {autoImportPolicy} -> autoImportPolicy) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {autoImportPolicy = a} :: UpdateFileSystemLustreConfiguration)
+
+-- | Undocumented member.
+updateFileSystemLustreConfiguration_automaticBackupRetentionDays :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemLustreConfiguration_automaticBackupRetentionDays = Lens.lens (\UpdateFileSystemLustreConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: UpdateFileSystemLustreConfiguration)
+
+-- | Undocumented member.
+updateFileSystemLustreConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemLustreConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\UpdateFileSystemLustreConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: UpdateFileSystemLustreConfiguration)
+
+-- | Sets the data compression configuration for the file system.
+-- @DataCompressionType@ can have the following values:
+--
+-- -   @NONE@ - Data compression is turned off for the file system.
+--
+-- -   @LZ4@ - Data compression is turned on with the LZ4 algorithm.
+--
+-- If you don\'t use @DataCompressionType@, the file system retains its
+-- current data compression configuration.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html Lustre data compression>.
+updateFileSystemLustreConfiguration_dataCompressionType :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe DataCompressionType)
+updateFileSystemLustreConfiguration_dataCompressionType = Lens.lens (\UpdateFileSystemLustreConfiguration' {dataCompressionType} -> dataCompressionType) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {dataCompressionType = a} :: UpdateFileSystemLustreConfiguration)
+
+-- | The Lustre logging configuration used when updating an Amazon FSx for
+-- Lustre file system. When logging is enabled, Lustre logs error and
+-- warning events for data repositories associated with your file system to
+-- Amazon CloudWatch Logs.
+updateFileSystemLustreConfiguration_logConfiguration :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe LustreLogCreateConfiguration)
+updateFileSystemLustreConfiguration_logConfiguration = Lens.lens (\UpdateFileSystemLustreConfiguration' {logConfiguration} -> logConfiguration) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {logConfiguration = a} :: UpdateFileSystemLustreConfiguration)
+
+-- | The Lustre root squash configuration used when updating an Amazon FSx
+-- for Lustre file system. When enabled, root squash restricts root-level
+-- access from clients that try to access your file system as a root user.
+updateFileSystemLustreConfiguration_rootSquashConfiguration :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe LustreRootSquashConfiguration)
+updateFileSystemLustreConfiguration_rootSquashConfiguration = Lens.lens (\UpdateFileSystemLustreConfiguration' {rootSquashConfiguration} -> rootSquashConfiguration) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {rootSquashConfiguration = a} :: UpdateFileSystemLustreConfiguration)
+
+-- | (Optional) The preferred start time to perform weekly maintenance,
+-- formatted d:HH:MM in the UTC time zone. d is the weekday number, from 1
+-- through 7, beginning with Monday and ending with Sunday.
+updateFileSystemLustreConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' UpdateFileSystemLustreConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemLustreConfiguration_weeklyMaintenanceStartTime = Lens.lens (\UpdateFileSystemLustreConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@UpdateFileSystemLustreConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: UpdateFileSystemLustreConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateFileSystemLustreConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateFileSystemLustreConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` autoImportPolicy
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` dataCompressionType
+        `Prelude.hashWithSalt` logConfiguration
+        `Prelude.hashWithSalt` rootSquashConfiguration
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    UpdateFileSystemLustreConfiguration
+  where
+  rnf UpdateFileSystemLustreConfiguration' {..} =
+    Prelude.rnf autoImportPolicy
+      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf logConfiguration
+      `Prelude.seq` Prelude.rnf rootSquashConfiguration
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+
+instance
+  Data.ToJSON
+    UpdateFileSystemLustreConfiguration
+  where
+  toJSON UpdateFileSystemLustreConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoImportPolicy" Data..=)
+              Prelude.<$> autoImportPolicy,
+            ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DataCompressionType" Data..=)
+              Prelude.<$> dataCompressionType,
+            ("LogConfiguration" Data..=)
+              Prelude.<$> logConfiguration,
+            ("RootSquashConfiguration" Data..=)
+              Prelude.<$> rootSquashConfiguration,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateFileSystemOntapConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateFileSystemOntapConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateFileSystemOntapConfiguration.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.UpdateFileSystemOntapConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateFileSystemOntapConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration updates for an Amazon FSx for NetApp ONTAP file
+-- system.
+--
+-- /See:/ 'newUpdateFileSystemOntapConfiguration' smart constructor.
+data UpdateFileSystemOntapConfiguration = UpdateFileSystemOntapConfiguration'
+  { -- | (Multi-AZ only) A list of IDs of new virtual private cloud (VPC) route
+    -- tables to associate (add) with your Amazon FSx for NetApp ONTAP file
+    -- system.
+    addRouteTableIds :: Prelude.Maybe [Prelude.Text],
+    automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | The SSD IOPS (input\/output operations per second) configuration for an
+    -- Amazon FSx for NetApp ONTAP file system. The default is 3 IOPS per GB of
+    -- storage capacity, but you can provision additional IOPS per GB of
+    -- storage. The configuration consists of an IOPS mode (@AUTOMATIC@ or
+    -- @USER_PROVISIONED@), and in the case of @USER_PROVISIONED@ IOPS, the
+    -- total number of SSD IOPS provisioned.
+    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
+    -- | The ONTAP administrative password for the @fsxadmin@ user.
+    fsxAdminPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | (Multi-AZ only) A list of IDs of existing virtual private cloud (VPC)
+    -- route tables to disassociate (remove) from your Amazon FSx for NetApp
+    -- ONTAP file system. You can use the API operation to retrieve the list of
+    -- VPC route table IDs for a file system.
+    removeRouteTableIds :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies the throughput of an FSx for NetApp ONTAP file system,
+    -- measured in megabytes per second (MBps). Valid values are 128, 256, 512,
+    -- 1024, 2048, and 4096 MBps.
+    throughputCapacity :: Prelude.Maybe Prelude.Natural,
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileSystemOntapConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'addRouteTableIds', 'updateFileSystemOntapConfiguration_addRouteTableIds' - (Multi-AZ only) A list of IDs of new virtual private cloud (VPC) route
+-- tables to associate (add) with your Amazon FSx for NetApp ONTAP file
+-- system.
+--
+-- 'automaticBackupRetentionDays', 'updateFileSystemOntapConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'dailyAutomaticBackupStartTime', 'updateFileSystemOntapConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'diskIopsConfiguration', 'updateFileSystemOntapConfiguration_diskIopsConfiguration' - The SSD IOPS (input\/output operations per second) configuration for an
+-- Amazon FSx for NetApp ONTAP file system. The default is 3 IOPS per GB of
+-- storage capacity, but you can provision additional IOPS per GB of
+-- storage. The configuration consists of an IOPS mode (@AUTOMATIC@ or
+-- @USER_PROVISIONED@), and in the case of @USER_PROVISIONED@ IOPS, the
+-- total number of SSD IOPS provisioned.
+--
+-- 'fsxAdminPassword', 'updateFileSystemOntapConfiguration_fsxAdminPassword' - The ONTAP administrative password for the @fsxadmin@ user.
+--
+-- 'removeRouteTableIds', 'updateFileSystemOntapConfiguration_removeRouteTableIds' - (Multi-AZ only) A list of IDs of existing virtual private cloud (VPC)
+-- route tables to disassociate (remove) from your Amazon FSx for NetApp
+-- ONTAP file system. You can use the API operation to retrieve the list of
+-- VPC route table IDs for a file system.
+--
+-- 'throughputCapacity', 'updateFileSystemOntapConfiguration_throughputCapacity' - Specifies the throughput of an FSx for NetApp ONTAP file system,
+-- measured in megabytes per second (MBps). Valid values are 128, 256, 512,
+-- 1024, 2048, and 4096 MBps.
+--
+-- 'weeklyMaintenanceStartTime', 'updateFileSystemOntapConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+newUpdateFileSystemOntapConfiguration ::
+  UpdateFileSystemOntapConfiguration
+newUpdateFileSystemOntapConfiguration =
+  UpdateFileSystemOntapConfiguration'
+    { addRouteTableIds =
+        Prelude.Nothing,
+      automaticBackupRetentionDays =
+        Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      diskIopsConfiguration = Prelude.Nothing,
+      fsxAdminPassword = Prelude.Nothing,
+      removeRouteTableIds = Prelude.Nothing,
+      throughputCapacity = Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | (Multi-AZ only) A list of IDs of new virtual private cloud (VPC) route
+-- tables to associate (add) with your Amazon FSx for NetApp ONTAP file
+-- system.
+updateFileSystemOntapConfiguration_addRouteTableIds :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe [Prelude.Text])
+updateFileSystemOntapConfiguration_addRouteTableIds = Lens.lens (\UpdateFileSystemOntapConfiguration' {addRouteTableIds} -> addRouteTableIds) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {addRouteTableIds = a} :: UpdateFileSystemOntapConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+updateFileSystemOntapConfiguration_automaticBackupRetentionDays :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemOntapConfiguration_automaticBackupRetentionDays = Lens.lens (\UpdateFileSystemOntapConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: UpdateFileSystemOntapConfiguration)
+
+-- | Undocumented member.
+updateFileSystemOntapConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemOntapConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\UpdateFileSystemOntapConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: UpdateFileSystemOntapConfiguration)
+
+-- | The SSD IOPS (input\/output operations per second) configuration for an
+-- Amazon FSx for NetApp ONTAP file system. The default is 3 IOPS per GB of
+-- storage capacity, but you can provision additional IOPS per GB of
+-- storage. The configuration consists of an IOPS mode (@AUTOMATIC@ or
+-- @USER_PROVISIONED@), and in the case of @USER_PROVISIONED@ IOPS, the
+-- total number of SSD IOPS provisioned.
+updateFileSystemOntapConfiguration_diskIopsConfiguration :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe DiskIopsConfiguration)
+updateFileSystemOntapConfiguration_diskIopsConfiguration = Lens.lens (\UpdateFileSystemOntapConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {diskIopsConfiguration = a} :: UpdateFileSystemOntapConfiguration)
+
+-- | The ONTAP administrative password for the @fsxadmin@ user.
+updateFileSystemOntapConfiguration_fsxAdminPassword :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemOntapConfiguration_fsxAdminPassword = Lens.lens (\UpdateFileSystemOntapConfiguration' {fsxAdminPassword} -> fsxAdminPassword) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {fsxAdminPassword = a} :: UpdateFileSystemOntapConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | (Multi-AZ only) A list of IDs of existing virtual private cloud (VPC)
+-- route tables to disassociate (remove) from your Amazon FSx for NetApp
+-- ONTAP file system. You can use the API operation to retrieve the list of
+-- VPC route table IDs for a file system.
+updateFileSystemOntapConfiguration_removeRouteTableIds :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe [Prelude.Text])
+updateFileSystemOntapConfiguration_removeRouteTableIds = Lens.lens (\UpdateFileSystemOntapConfiguration' {removeRouteTableIds} -> removeRouteTableIds) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {removeRouteTableIds = a} :: UpdateFileSystemOntapConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the throughput of an FSx for NetApp ONTAP file system,
+-- measured in megabytes per second (MBps). Valid values are 128, 256, 512,
+-- 1024, 2048, and 4096 MBps.
+updateFileSystemOntapConfiguration_throughputCapacity :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemOntapConfiguration_throughputCapacity = Lens.lens (\UpdateFileSystemOntapConfiguration' {throughputCapacity} -> throughputCapacity) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {throughputCapacity = a} :: UpdateFileSystemOntapConfiguration)
+
+-- | Undocumented member.
+updateFileSystemOntapConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' UpdateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemOntapConfiguration_weeklyMaintenanceStartTime = Lens.lens (\UpdateFileSystemOntapConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@UpdateFileSystemOntapConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: UpdateFileSystemOntapConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateFileSystemOntapConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateFileSystemOntapConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` addRouteTableIds
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` diskIopsConfiguration
+        `Prelude.hashWithSalt` fsxAdminPassword
+        `Prelude.hashWithSalt` removeRouteTableIds
+        `Prelude.hashWithSalt` throughputCapacity
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    UpdateFileSystemOntapConfiguration
+  where
+  rnf UpdateFileSystemOntapConfiguration' {..} =
+    Prelude.rnf addRouteTableIds
+      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf diskIopsConfiguration
+      `Prelude.seq` Prelude.rnf fsxAdminPassword
+      `Prelude.seq` Prelude.rnf removeRouteTableIds
+      `Prelude.seq` Prelude.rnf throughputCapacity
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+
+instance
+  Data.ToJSON
+    UpdateFileSystemOntapConfiguration
+  where
+  toJSON UpdateFileSystemOntapConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AddRouteTableIds" Data..=)
+              Prelude.<$> addRouteTableIds,
+            ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DiskIopsConfiguration" Data..=)
+              Prelude.<$> diskIopsConfiguration,
+            ("FsxAdminPassword" Data..=)
+              Prelude.<$> fsxAdminPassword,
+            ("RemoveRouteTableIds" Data..=)
+              Prelude.<$> removeRouteTableIds,
+            ("ThroughputCapacity" Data..=)
+              Prelude.<$> throughputCapacity,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateFileSystemOpenZFSConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateFileSystemOpenZFSConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateFileSystemOpenZFSConfiguration.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.FSx.Types.UpdateFileSystemOpenZFSConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateFileSystemOpenZFSConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.DiskIopsConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration updates for an Amazon FSx for OpenZFS file system.
+--
+-- /See:/ 'newUpdateFileSystemOpenZFSConfiguration' smart constructor.
+data UpdateFileSystemOpenZFSConfiguration = UpdateFileSystemOpenZFSConfiguration'
+  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | A Boolean value indicating whether tags for the file system should be
+    -- copied to backups. This value defaults to @false@. If it\'s set to
+    -- @true@, all tags for the file system are copied to all automatic and
+    -- user-initiated backups where the user doesn\'t specify tags. If this
+    -- value is @true@ and you specify one or more tags, only the specified
+    -- tags are copied to backups. If you specify one or more tags when
+    -- creating a user-initiated backup, no tags are copied from the file
+    -- system, regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | A Boolean value indicating whether tags for the volume should be copied
+    -- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+    -- all tags for the volume are copied to snapshots where the user doesn\'t
+    -- specify tags. If this value is @true@ and you specify one or more tags,
+    -- only the specified tags are copied to snapshots. If you specify one or
+    -- more tags when creating the snapshot, no tags are copied from the
+    -- volume, regardless of this value.
+    copyTagsToVolumes :: Prelude.Maybe Prelude.Bool,
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
+    -- | The throughput of an Amazon FSx for OpenZFS file system, measured in
+    -- megabytes per second  (MB\/s). Valid values depend on the DeploymentType
+    -- you choose, as follows:
+    --
+    -- -   For @SINGLE_AZ_1@, valid values are 64, 128, 256, 512, 1024, 2048,
+    --     3072, or 4096 MB\/s.
+    --
+    -- -   For @SINGLE_AZ_2@, valid values are 160, 320, 640, 1280, 2560, 3840,
+    --     5120, 7680, or 10240 MB\/s.
+    throughputCapacity :: Prelude.Maybe Prelude.Natural,
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileSystemOpenZFSConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automaticBackupRetentionDays', 'updateFileSystemOpenZFSConfiguration_automaticBackupRetentionDays' - Undocumented member.
+--
+-- 'copyTagsToBackups', 'updateFileSystemOpenZFSConfiguration_copyTagsToBackups' - A Boolean value indicating whether tags for the file system should be
+-- copied to backups. This value defaults to @false@. If it\'s set to
+-- @true@, all tags for the file system are copied to all automatic and
+-- user-initiated backups where the user doesn\'t specify tags. If this
+-- value is @true@ and you specify one or more tags, only the specified
+-- tags are copied to backups. If you specify one or more tags when
+-- creating a user-initiated backup, no tags are copied from the file
+-- system, regardless of this value.
+--
+-- 'copyTagsToVolumes', 'updateFileSystemOpenZFSConfiguration_copyTagsToVolumes' - A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@ and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+--
+-- 'dailyAutomaticBackupStartTime', 'updateFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
+--
+-- 'diskIopsConfiguration', 'updateFileSystemOpenZFSConfiguration_diskIopsConfiguration' - Undocumented member.
+--
+-- 'throughputCapacity', 'updateFileSystemOpenZFSConfiguration_throughputCapacity' - The throughput of an Amazon FSx for OpenZFS file system, measured in
+-- megabytes per second  (MB\/s). Valid values depend on the DeploymentType
+-- you choose, as follows:
+--
+-- -   For @SINGLE_AZ_1@, valid values are 64, 128, 256, 512, 1024, 2048,
+--     3072, or 4096 MB\/s.
+--
+-- -   For @SINGLE_AZ_2@, valid values are 160, 320, 640, 1280, 2560, 3840,
+--     5120, 7680, or 10240 MB\/s.
+--
+-- 'weeklyMaintenanceStartTime', 'updateFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
+newUpdateFileSystemOpenZFSConfiguration ::
+  UpdateFileSystemOpenZFSConfiguration
+newUpdateFileSystemOpenZFSConfiguration =
+  UpdateFileSystemOpenZFSConfiguration'
+    { automaticBackupRetentionDays =
+        Prelude.Nothing,
+      copyTagsToBackups = Prelude.Nothing,
+      copyTagsToVolumes = Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      diskIopsConfiguration =
+        Prelude.Nothing,
+      throughputCapacity = Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+updateFileSystemOpenZFSConfiguration_automaticBackupRetentionDays :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemOpenZFSConfiguration_automaticBackupRetentionDays = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+-- | A Boolean value indicating whether tags for the file system should be
+-- copied to backups. This value defaults to @false@. If it\'s set to
+-- @true@, all tags for the file system are copied to all automatic and
+-- user-initiated backups where the user doesn\'t specify tags. If this
+-- value is @true@ and you specify one or more tags, only the specified
+-- tags are copied to backups. If you specify one or more tags when
+-- creating a user-initiated backup, no tags are copied from the file
+-- system, regardless of this value.
+updateFileSystemOpenZFSConfiguration_copyTagsToBackups :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Bool)
+updateFileSystemOpenZFSConfiguration_copyTagsToBackups = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {copyTagsToBackups = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+-- | A Boolean value indicating whether tags for the volume should be copied
+-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
+-- all tags for the volume are copied to snapshots where the user doesn\'t
+-- specify tags. If this value is @true@ and you specify one or more tags,
+-- only the specified tags are copied to snapshots. If you specify one or
+-- more tags when creating the snapshot, no tags are copied from the
+-- volume, regardless of this value.
+updateFileSystemOpenZFSConfiguration_copyTagsToVolumes :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Bool)
+updateFileSystemOpenZFSConfiguration_copyTagsToVolumes = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {copyTagsToVolumes} -> copyTagsToVolumes) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {copyTagsToVolumes = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+-- | Undocumented member.
+updateFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemOpenZFSConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+-- | Undocumented member.
+updateFileSystemOpenZFSConfiguration_diskIopsConfiguration :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe DiskIopsConfiguration)
+updateFileSystemOpenZFSConfiguration_diskIopsConfiguration = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {diskIopsConfiguration = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+-- | The throughput of an Amazon FSx for OpenZFS file system, measured in
+-- megabytes per second  (MB\/s). Valid values depend on the DeploymentType
+-- you choose, as follows:
+--
+-- -   For @SINGLE_AZ_1@, valid values are 64, 128, 256, 512, 1024, 2048,
+--     3072, or 4096 MB\/s.
+--
+-- -   For @SINGLE_AZ_2@, valid values are 160, 320, 640, 1280, 2560, 3840,
+--     5120, 7680, or 10240 MB\/s.
+updateFileSystemOpenZFSConfiguration_throughputCapacity :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemOpenZFSConfiguration_throughputCapacity = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {throughputCapacity} -> throughputCapacity) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {throughputCapacity = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+-- | Undocumented member.
+updateFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' UpdateFileSystemOpenZFSConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemOpenZFSConfiguration_weeklyMaintenanceStartTime = Lens.lens (\UpdateFileSystemOpenZFSConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@UpdateFileSystemOpenZFSConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: UpdateFileSystemOpenZFSConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateFileSystemOpenZFSConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateFileSystemOpenZFSConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` copyTagsToVolumes
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` diskIopsConfiguration
+        `Prelude.hashWithSalt` throughputCapacity
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    UpdateFileSystemOpenZFSConfiguration
+  where
+  rnf UpdateFileSystemOpenZFSConfiguration' {..} =
+    Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf copyTagsToVolumes
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf diskIopsConfiguration
+      `Prelude.seq` Prelude.rnf throughputCapacity
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+
+instance
+  Data.ToJSON
+    UpdateFileSystemOpenZFSConfiguration
+  where
+  toJSON UpdateFileSystemOpenZFSConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("CopyTagsToBackups" Data..=)
+              Prelude.<$> copyTagsToBackups,
+            ("CopyTagsToVolumes" Data..=)
+              Prelude.<$> copyTagsToVolumes,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("DiskIopsConfiguration" Data..=)
+              Prelude.<$> diskIopsConfiguration,
+            ("ThroughputCapacity" Data..=)
+              Prelude.<$> throughputCapacity,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateFileSystemWindowsConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateFileSystemWindowsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateFileSystemWindowsConfiguration.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.FSx.Types.UpdateFileSystemWindowsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateFileSystemWindowsConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates
+import Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | Updates the configuration for an existing Amazon FSx for Windows File
+-- Server file system. Amazon FSx only overwrites existing properties with
+-- non-null values provided in the request.
+--
+-- /See:/ 'newUpdateFileSystemWindowsConfiguration' smart constructor.
+data UpdateFileSystemWindowsConfiguration = UpdateFileSystemWindowsConfiguration'
+  { -- | The configuration that Amazon FSx for Windows File Server uses to audit
+    -- and log user accesses of files, folders, and file shares on the Amazon
+    -- FSx for Windows File Server file system..
+    auditLogConfiguration :: Prelude.Maybe WindowsAuditLogCreateConfiguration,
+    -- | The number of days to retain automatic daily backups. Setting this to
+    -- zero (0) disables automatic daily backups. You can retain automatic
+    -- daily backups for a maximum of 90 days. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/using-backups.html#automatic-backups Working with Automatic Daily Backups>.
+    automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | The preferred time to start the daily automatic backup, in the UTC time
+    -- zone, for example, @02:00@
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | The configuration Amazon FSx uses to join the Windows File Server
+    -- instance to the self-managed Microsoft AD directory. You cannot make a
+    -- self-managed Microsoft AD update request if there is an existing
+    -- self-managed Microsoft AD update request in progress.
+    selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryConfigurationUpdates,
+    -- | Sets the target value for a file system\'s throughput capacity, in
+    -- MB\/s, that you are updating the file system to. Valid values are 8, 16,
+    -- 32, 64, 128, 256, 512, 1024, 2048. You cannot make a throughput capacity
+    -- update request if there is an existing throughput capacity update
+    -- request in progress. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-throughput-capacity.html Managing Throughput Capacity>.
+    throughputCapacity :: Prelude.Maybe Prelude.Natural,
+    -- | The preferred start time to perform weekly maintenance, formatted
+    -- d:HH:MM in the UTC time zone. Where d is the weekday number, from 1
+    -- through 7, with 1 = Monday and 7 = Sunday.
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileSystemWindowsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'auditLogConfiguration', 'updateFileSystemWindowsConfiguration_auditLogConfiguration' - The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system..
+--
+-- 'automaticBackupRetentionDays', 'updateFileSystemWindowsConfiguration_automaticBackupRetentionDays' - The number of days to retain automatic daily backups. Setting this to
+-- zero (0) disables automatic daily backups. You can retain automatic
+-- daily backups for a maximum of 90 days. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/using-backups.html#automatic-backups Working with Automatic Daily Backups>.
+--
+-- 'dailyAutomaticBackupStartTime', 'updateFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime' - The preferred time to start the daily automatic backup, in the UTC time
+-- zone, for example, @02:00@
+--
+-- 'selfManagedActiveDirectoryConfiguration', 'updateFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration' - The configuration Amazon FSx uses to join the Windows File Server
+-- instance to the self-managed Microsoft AD directory. You cannot make a
+-- self-managed Microsoft AD update request if there is an existing
+-- self-managed Microsoft AD update request in progress.
+--
+-- 'throughputCapacity', 'updateFileSystemWindowsConfiguration_throughputCapacity' - Sets the target value for a file system\'s throughput capacity, in
+-- MB\/s, that you are updating the file system to. Valid values are 8, 16,
+-- 32, 64, 128, 256, 512, 1024, 2048. You cannot make a throughput capacity
+-- update request if there is an existing throughput capacity update
+-- request in progress. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-throughput-capacity.html Managing Throughput Capacity>.
+--
+-- 'weeklyMaintenanceStartTime', 'updateFileSystemWindowsConfiguration_weeklyMaintenanceStartTime' - The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone. Where d is the weekday number, from 1
+-- through 7, with 1 = Monday and 7 = Sunday.
+newUpdateFileSystemWindowsConfiguration ::
+  UpdateFileSystemWindowsConfiguration
+newUpdateFileSystemWindowsConfiguration =
+  UpdateFileSystemWindowsConfiguration'
+    { auditLogConfiguration =
+        Prelude.Nothing,
+      automaticBackupRetentionDays =
+        Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      selfManagedActiveDirectoryConfiguration =
+        Prelude.Nothing,
+      throughputCapacity = Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system..
+updateFileSystemWindowsConfiguration_auditLogConfiguration :: Lens.Lens' UpdateFileSystemWindowsConfiguration (Prelude.Maybe WindowsAuditLogCreateConfiguration)
+updateFileSystemWindowsConfiguration_auditLogConfiguration = Lens.lens (\UpdateFileSystemWindowsConfiguration' {auditLogConfiguration} -> auditLogConfiguration) (\s@UpdateFileSystemWindowsConfiguration' {} a -> s {auditLogConfiguration = a} :: UpdateFileSystemWindowsConfiguration)
+
+-- | The number of days to retain automatic daily backups. Setting this to
+-- zero (0) disables automatic daily backups. You can retain automatic
+-- daily backups for a maximum of 90 days. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/using-backups.html#automatic-backups Working with Automatic Daily Backups>.
+updateFileSystemWindowsConfiguration_automaticBackupRetentionDays :: Lens.Lens' UpdateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemWindowsConfiguration_automaticBackupRetentionDays = Lens.lens (\UpdateFileSystemWindowsConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@UpdateFileSystemWindowsConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: UpdateFileSystemWindowsConfiguration)
+
+-- | The preferred time to start the daily automatic backup, in the UTC time
+-- zone, for example, @02:00@
+updateFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' UpdateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\UpdateFileSystemWindowsConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@UpdateFileSystemWindowsConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: UpdateFileSystemWindowsConfiguration)
+
+-- | The configuration Amazon FSx uses to join the Windows File Server
+-- instance to the self-managed Microsoft AD directory. You cannot make a
+-- self-managed Microsoft AD update request if there is an existing
+-- self-managed Microsoft AD update request in progress.
+updateFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' UpdateFileSystemWindowsConfiguration (Prelude.Maybe SelfManagedActiveDirectoryConfigurationUpdates)
+updateFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\UpdateFileSystemWindowsConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@UpdateFileSystemWindowsConfiguration' {} a -> s {selfManagedActiveDirectoryConfiguration = a} :: UpdateFileSystemWindowsConfiguration)
+
+-- | Sets the target value for a file system\'s throughput capacity, in
+-- MB\/s, that you are updating the file system to. Valid values are 8, 16,
+-- 32, 64, 128, 256, 512, 1024, 2048. You cannot make a throughput capacity
+-- update request if there is an existing throughput capacity update
+-- request in progress. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-throughput-capacity.html Managing Throughput Capacity>.
+updateFileSystemWindowsConfiguration_throughputCapacity :: Lens.Lens' UpdateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Natural)
+updateFileSystemWindowsConfiguration_throughputCapacity = Lens.lens (\UpdateFileSystemWindowsConfiguration' {throughputCapacity} -> throughputCapacity) (\s@UpdateFileSystemWindowsConfiguration' {} a -> s {throughputCapacity = a} :: UpdateFileSystemWindowsConfiguration)
+
+-- | The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone. Where d is the weekday number, from 1
+-- through 7, with 1 = Monday and 7 = Sunday.
+updateFileSystemWindowsConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' UpdateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
+updateFileSystemWindowsConfiguration_weeklyMaintenanceStartTime = Lens.lens (\UpdateFileSystemWindowsConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@UpdateFileSystemWindowsConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: UpdateFileSystemWindowsConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateFileSystemWindowsConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateFileSystemWindowsConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` auditLogConfiguration
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
+        `Prelude.hashWithSalt` throughputCapacity
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    UpdateFileSystemWindowsConfiguration
+  where
+  rnf UpdateFileSystemWindowsConfiguration' {..} =
+    Prelude.rnf auditLogConfiguration
+      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf selfManagedActiveDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf throughputCapacity
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
+
+instance
+  Data.ToJSON
+    UpdateFileSystemWindowsConfiguration
+  where
+  toJSON UpdateFileSystemWindowsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AuditLogConfiguration" Data..=)
+              Prelude.<$> auditLogConfiguration,
+            ("AutomaticBackupRetentionDays" Data..=)
+              Prelude.<$> automaticBackupRetentionDays,
+            ("DailyAutomaticBackupStartTime" Data..=)
+              Prelude.<$> dailyAutomaticBackupStartTime,
+            ("SelfManagedActiveDirectoryConfiguration" Data..=)
+              Prelude.<$> selfManagedActiveDirectoryConfiguration,
+            ("ThroughputCapacity" Data..=)
+              Prelude.<$> throughputCapacity,
+            ("WeeklyMaintenanceStartTime" Data..=)
+              Prelude.<$> weeklyMaintenanceStartTime
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateOntapVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateOntapVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateOntapVolumeConfiguration.hs
@@ -0,0 +1,249 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.UpdateOntapVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateOntapVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SecurityStyle
+import Amazonka.FSx.Types.TieringPolicy
+import qualified Amazonka.Prelude as Prelude
+
+-- | Used to specify changes to the ONTAP configuration for the volume you
+-- are updating.
+--
+-- /See:/ 'newUpdateOntapVolumeConfiguration' smart constructor.
+data UpdateOntapVolumeConfiguration = UpdateOntapVolumeConfiguration'
+  { -- | A boolean flag indicating whether tags for the volume should be copied
+    -- to backups. This value defaults to false. If it\'s set to true, all tags
+    -- for the volume are copied to all automatic and user-initiated backups
+    -- where the user doesn\'t specify tags. If this value is true, and you
+    -- specify one or more tags, only the specified tags are copied to backups.
+    -- If you specify one or more tags when creating a user-initiated backup,
+    -- no tags are copied from the volume, regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the location in the SVM\'s namespace where the volume is
+    -- mounted. The @JunctionPath@ must have a leading forward slash, such as
+    -- @\/vol3@.
+    junctionPath :: Prelude.Maybe Prelude.Text,
+    -- | The security style for the volume, which can be @UNIX@. @NTFS@, or
+    -- @MIXED@.
+    securityStyle :: Prelude.Maybe SecurityStyle,
+    -- | Specifies the size of the volume in megabytes.
+    sizeInMegabytes :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies the snapshot policy for the volume. There are three built-in
+    -- snapshot policies:
+    --
+    -- -   @default@: This is the default policy. A maximum of six hourly
+    --     snapshots taken five minutes past the hour. A maximum of two daily
+    --     snapshots taken Monday through Saturday at 10 minutes after
+    --     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+    --     minutes after midnight.
+    --
+    -- -   @default-1weekly@: This policy is the same as the @default@ policy
+    --     except that it only retains one snapshot from the weekly schedule.
+    --
+    -- -   @none@: This policy does not take any snapshots. This policy can be
+    --     assigned to volumes to prevent automatic snapshots from being taken.
+    --
+    -- You can also provide the name of a custom policy that you created with
+    -- the ONTAP CLI or REST API.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+    -- in the /Amazon FSx for NetApp ONTAP User Guide/.
+    snapshotPolicy :: Prelude.Maybe Prelude.Text,
+    -- | Default is @false@. Set to true to enable the deduplication,
+    -- compression, and compaction storage efficiency features on the volume.
+    storageEfficiencyEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Update the volume\'s data tiering policy.
+    tieringPolicy :: Prelude.Maybe TieringPolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateOntapVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'copyTagsToBackups', 'updateOntapVolumeConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags for the volume should be copied
+-- to backups. This value defaults to false. If it\'s set to true, all tags
+-- for the volume are copied to all automatic and user-initiated backups
+-- where the user doesn\'t specify tags. If this value is true, and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the volume, regardless of this value.
+--
+-- 'junctionPath', 'updateOntapVolumeConfiguration_junctionPath' - Specifies the location in the SVM\'s namespace where the volume is
+-- mounted. The @JunctionPath@ must have a leading forward slash, such as
+-- @\/vol3@.
+--
+-- 'securityStyle', 'updateOntapVolumeConfiguration_securityStyle' - The security style for the volume, which can be @UNIX@. @NTFS@, or
+-- @MIXED@.
+--
+-- 'sizeInMegabytes', 'updateOntapVolumeConfiguration_sizeInMegabytes' - Specifies the size of the volume in megabytes.
+--
+-- 'snapshotPolicy', 'updateOntapVolumeConfiguration_snapshotPolicy' - Specifies the snapshot policy for the volume. There are three built-in
+-- snapshot policies:
+--
+-- -   @default@: This is the default policy. A maximum of six hourly
+--     snapshots taken five minutes past the hour. A maximum of two daily
+--     snapshots taken Monday through Saturday at 10 minutes after
+--     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+--     minutes after midnight.
+--
+-- -   @default-1weekly@: This policy is the same as the @default@ policy
+--     except that it only retains one snapshot from the weekly schedule.
+--
+-- -   @none@: This policy does not take any snapshots. This policy can be
+--     assigned to volumes to prevent automatic snapshots from being taken.
+--
+-- You can also provide the name of a custom policy that you created with
+-- the ONTAP CLI or REST API.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+--
+-- 'storageEfficiencyEnabled', 'updateOntapVolumeConfiguration_storageEfficiencyEnabled' - Default is @false@. Set to true to enable the deduplication,
+-- compression, and compaction storage efficiency features on the volume.
+--
+-- 'tieringPolicy', 'updateOntapVolumeConfiguration_tieringPolicy' - Update the volume\'s data tiering policy.
+newUpdateOntapVolumeConfiguration ::
+  UpdateOntapVolumeConfiguration
+newUpdateOntapVolumeConfiguration =
+  UpdateOntapVolumeConfiguration'
+    { copyTagsToBackups =
+        Prelude.Nothing,
+      junctionPath = Prelude.Nothing,
+      securityStyle = Prelude.Nothing,
+      sizeInMegabytes = Prelude.Nothing,
+      snapshotPolicy = Prelude.Nothing,
+      storageEfficiencyEnabled = Prelude.Nothing,
+      tieringPolicy = Prelude.Nothing
+    }
+
+-- | A boolean flag indicating whether tags for the volume should be copied
+-- to backups. This value defaults to false. If it\'s set to true, all tags
+-- for the volume are copied to all automatic and user-initiated backups
+-- where the user doesn\'t specify tags. If this value is true, and you
+-- specify one or more tags, only the specified tags are copied to backups.
+-- If you specify one or more tags when creating a user-initiated backup,
+-- no tags are copied from the volume, regardless of this value.
+updateOntapVolumeConfiguration_copyTagsToBackups :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+updateOntapVolumeConfiguration_copyTagsToBackups = Lens.lens (\UpdateOntapVolumeConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@UpdateOntapVolumeConfiguration' {} a -> s {copyTagsToBackups = a} :: UpdateOntapVolumeConfiguration)
+
+-- | Specifies the location in the SVM\'s namespace where the volume is
+-- mounted. The @JunctionPath@ must have a leading forward slash, such as
+-- @\/vol3@.
+updateOntapVolumeConfiguration_junctionPath :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+updateOntapVolumeConfiguration_junctionPath = Lens.lens (\UpdateOntapVolumeConfiguration' {junctionPath} -> junctionPath) (\s@UpdateOntapVolumeConfiguration' {} a -> s {junctionPath = a} :: UpdateOntapVolumeConfiguration)
+
+-- | The security style for the volume, which can be @UNIX@. @NTFS@, or
+-- @MIXED@.
+updateOntapVolumeConfiguration_securityStyle :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe SecurityStyle)
+updateOntapVolumeConfiguration_securityStyle = Lens.lens (\UpdateOntapVolumeConfiguration' {securityStyle} -> securityStyle) (\s@UpdateOntapVolumeConfiguration' {} a -> s {securityStyle = a} :: UpdateOntapVolumeConfiguration)
+
+-- | Specifies the size of the volume in megabytes.
+updateOntapVolumeConfiguration_sizeInMegabytes :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+updateOntapVolumeConfiguration_sizeInMegabytes = Lens.lens (\UpdateOntapVolumeConfiguration' {sizeInMegabytes} -> sizeInMegabytes) (\s@UpdateOntapVolumeConfiguration' {} a -> s {sizeInMegabytes = a} :: UpdateOntapVolumeConfiguration)
+
+-- | Specifies the snapshot policy for the volume. There are three built-in
+-- snapshot policies:
+--
+-- -   @default@: This is the default policy. A maximum of six hourly
+--     snapshots taken five minutes past the hour. A maximum of two daily
+--     snapshots taken Monday through Saturday at 10 minutes after
+--     midnight. A maximum of two weekly snapshots taken every Sunday at 15
+--     minutes after midnight.
+--
+-- -   @default-1weekly@: This policy is the same as the @default@ policy
+--     except that it only retains one snapshot from the weekly schedule.
+--
+-- -   @none@: This policy does not take any snapshots. This policy can be
+--     assigned to volumes to prevent automatic snapshots from being taken.
+--
+-- You can also provide the name of a custom policy that you created with
+-- the ONTAP CLI or REST API.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-policies Snapshot policies>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+updateOntapVolumeConfiguration_snapshotPolicy :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe Prelude.Text)
+updateOntapVolumeConfiguration_snapshotPolicy = Lens.lens (\UpdateOntapVolumeConfiguration' {snapshotPolicy} -> snapshotPolicy) (\s@UpdateOntapVolumeConfiguration' {} a -> s {snapshotPolicy = a} :: UpdateOntapVolumeConfiguration)
+
+-- | Default is @false@. Set to true to enable the deduplication,
+-- compression, and compaction storage efficiency features on the volume.
+updateOntapVolumeConfiguration_storageEfficiencyEnabled :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+updateOntapVolumeConfiguration_storageEfficiencyEnabled = Lens.lens (\UpdateOntapVolumeConfiguration' {storageEfficiencyEnabled} -> storageEfficiencyEnabled) (\s@UpdateOntapVolumeConfiguration' {} a -> s {storageEfficiencyEnabled = a} :: UpdateOntapVolumeConfiguration)
+
+-- | Update the volume\'s data tiering policy.
+updateOntapVolumeConfiguration_tieringPolicy :: Lens.Lens' UpdateOntapVolumeConfiguration (Prelude.Maybe TieringPolicy)
+updateOntapVolumeConfiguration_tieringPolicy = Lens.lens (\UpdateOntapVolumeConfiguration' {tieringPolicy} -> tieringPolicy) (\s@UpdateOntapVolumeConfiguration' {} a -> s {tieringPolicy = a} :: UpdateOntapVolumeConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateOntapVolumeConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateOntapVolumeConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` junctionPath
+        `Prelude.hashWithSalt` securityStyle
+        `Prelude.hashWithSalt` sizeInMegabytes
+        `Prelude.hashWithSalt` snapshotPolicy
+        `Prelude.hashWithSalt` storageEfficiencyEnabled
+        `Prelude.hashWithSalt` tieringPolicy
+
+instance
+  Prelude.NFData
+    UpdateOntapVolumeConfiguration
+  where
+  rnf UpdateOntapVolumeConfiguration' {..} =
+    Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf junctionPath
+      `Prelude.seq` Prelude.rnf securityStyle
+      `Prelude.seq` Prelude.rnf sizeInMegabytes
+      `Prelude.seq` Prelude.rnf snapshotPolicy
+      `Prelude.seq` Prelude.rnf storageEfficiencyEnabled
+      `Prelude.seq` Prelude.rnf tieringPolicy
+
+instance Data.ToJSON UpdateOntapVolumeConfiguration where
+  toJSON UpdateOntapVolumeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CopyTagsToBackups" Data..=)
+              Prelude.<$> copyTagsToBackups,
+            ("JunctionPath" Data..=) Prelude.<$> junctionPath,
+            ("SecurityStyle" Data..=) Prelude.<$> securityStyle,
+            ("SizeInMegabytes" Data..=)
+              Prelude.<$> sizeInMegabytes,
+            ("SnapshotPolicy" Data..=)
+              Prelude.<$> snapshotPolicy,
+            ("StorageEfficiencyEnabled" Data..=)
+              Prelude.<$> storageEfficiencyEnabled,
+            ("TieringPolicy" Data..=) Prelude.<$> tieringPolicy
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateOpenZFSVolumeConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateOpenZFSVolumeConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateOpenZFSVolumeConfiguration.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.UpdateOpenZFSVolumeConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateOpenZFSVolumeConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.OpenZFSDataCompressionType
+import Amazonka.FSx.Types.OpenZFSNfsExport
+import Amazonka.FSx.Types.OpenZFSUserOrGroupQuota
+import qualified Amazonka.Prelude as Prelude
+
+-- | Used to specify changes to the OpenZFS configuration for the volume that
+-- you are updating.
+--
+-- /See:/ 'newUpdateOpenZFSVolumeConfiguration' smart constructor.
+data UpdateOpenZFSVolumeConfiguration = UpdateOpenZFSVolumeConfiguration'
+  { -- | Specifies the method used to compress the data on the volume. The
+    -- compression type is @NONE@ by default.
+    --
+    -- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+    --     default.
+    --
+    -- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+    --     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+    --     better compression ratio to minimize on-disk storage utilization.
+    --
+    -- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+    --     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+    --     delivers higher write throughput speeds.
+    dataCompressionType :: Prelude.Maybe OpenZFSDataCompressionType,
+    -- | The configuration object for mounting a Network File System (NFS) file
+    -- system.
+    nfsExports :: Prelude.Maybe [OpenZFSNfsExport],
+    -- | A Boolean value indicating whether the volume is read-only.
+    readOnly :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the record size of an OpenZFS volume, in kibibytes (KiB).
+    -- Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The
+    -- default is 128 KiB. Most workloads should use the default record size.
+    -- Database workflows can benefit from a smaller record size, while
+    -- streaming workflows can benefit from a larger record size. For
+    -- additional guidance on when to set a custom record size, see
+    -- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+    -- in the /Amazon FSx for OpenZFS User Guide/.
+    recordSizeKiB :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum amount of storage in gibibytes (GiB) that the volume can use
+    -- from its parent. You can specify a quota larger than the storage on the
+    -- parent volume. You can specify a value of @-1@ to unset a volume\'s
+    -- storage capacity quota.
+    storageCapacityQuotaGiB :: Prelude.Maybe Prelude.Int,
+    -- | The amount of storage in gibibytes (GiB) to reserve from the parent
+    -- volume. You can\'t reserve more storage than the parent volume has
+    -- reserved. You can specify a value of @-1@ to unset a volume\'s storage
+    -- capacity reservation.
+    storageCapacityReservationGiB :: Prelude.Maybe Prelude.Int,
+    -- | An object specifying how much storage users or groups can use on the
+    -- volume.
+    userAndGroupQuotas :: Prelude.Maybe [OpenZFSUserOrGroupQuota]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateOpenZFSVolumeConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataCompressionType', 'updateOpenZFSVolumeConfiguration_dataCompressionType' - Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+--     better compression ratio to minimize on-disk storage utilization.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+--     delivers higher write throughput speeds.
+--
+-- 'nfsExports', 'updateOpenZFSVolumeConfiguration_nfsExports' - The configuration object for mounting a Network File System (NFS) file
+-- system.
+--
+-- 'readOnly', 'updateOpenZFSVolumeConfiguration_readOnly' - A Boolean value indicating whether the volume is read-only.
+--
+-- 'recordSizeKiB', 'updateOpenZFSVolumeConfiguration_recordSizeKiB' - Specifies the record size of an OpenZFS volume, in kibibytes (KiB).
+-- Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The
+-- default is 128 KiB. Most workloads should use the default record size.
+-- Database workflows can benefit from a smaller record size, while
+-- streaming workflows can benefit from a larger record size. For
+-- additional guidance on when to set a custom record size, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+--
+-- 'storageCapacityQuotaGiB', 'updateOpenZFSVolumeConfiguration_storageCapacityQuotaGiB' - The maximum amount of storage in gibibytes (GiB) that the volume can use
+-- from its parent. You can specify a quota larger than the storage on the
+-- parent volume. You can specify a value of @-1@ to unset a volume\'s
+-- storage capacity quota.
+--
+-- 'storageCapacityReservationGiB', 'updateOpenZFSVolumeConfiguration_storageCapacityReservationGiB' - The amount of storage in gibibytes (GiB) to reserve from the parent
+-- volume. You can\'t reserve more storage than the parent volume has
+-- reserved. You can specify a value of @-1@ to unset a volume\'s storage
+-- capacity reservation.
+--
+-- 'userAndGroupQuotas', 'updateOpenZFSVolumeConfiguration_userAndGroupQuotas' - An object specifying how much storage users or groups can use on the
+-- volume.
+newUpdateOpenZFSVolumeConfiguration ::
+  UpdateOpenZFSVolumeConfiguration
+newUpdateOpenZFSVolumeConfiguration =
+  UpdateOpenZFSVolumeConfiguration'
+    { dataCompressionType =
+        Prelude.Nothing,
+      nfsExports = Prelude.Nothing,
+      readOnly = Prelude.Nothing,
+      recordSizeKiB = Prelude.Nothing,
+      storageCapacityQuotaGiB = Prelude.Nothing,
+      storageCapacityReservationGiB =
+        Prelude.Nothing,
+      userAndGroupQuotas = Prelude.Nothing
+    }
+
+-- | Specifies the method used to compress the data on the volume. The
+-- compression type is @NONE@ by default.
+--
+-- -   @NONE@ - Doesn\'t compress the data on the volume. @NONE@ is the
+--     default.
+--
+-- -   @ZSTD@ - Compresses the data in the volume using the Zstandard
+--     (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a
+--     better compression ratio to minimize on-disk storage utilization.
+--
+-- -   @LZ4@ - Compresses the data in the volume using the LZ4 compression
+--     algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
+--     delivers higher write throughput speeds.
+updateOpenZFSVolumeConfiguration_dataCompressionType :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe OpenZFSDataCompressionType)
+updateOpenZFSVolumeConfiguration_dataCompressionType = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {dataCompressionType} -> dataCompressionType) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {dataCompressionType = a} :: UpdateOpenZFSVolumeConfiguration)
+
+-- | The configuration object for mounting a Network File System (NFS) file
+-- system.
+updateOpenZFSVolumeConfiguration_nfsExports :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe [OpenZFSNfsExport])
+updateOpenZFSVolumeConfiguration_nfsExports = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {nfsExports} -> nfsExports) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {nfsExports = a} :: UpdateOpenZFSVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | A Boolean value indicating whether the volume is read-only.
+updateOpenZFSVolumeConfiguration_readOnly :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Bool)
+updateOpenZFSVolumeConfiguration_readOnly = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {readOnly} -> readOnly) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {readOnly = a} :: UpdateOpenZFSVolumeConfiguration)
+
+-- | Specifies the record size of an OpenZFS volume, in kibibytes (KiB).
+-- Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The
+-- default is 128 KiB. Most workloads should use the default record size.
+-- Database workflows can benefit from a smaller record size, while
+-- streaming workflows can benefit from a larger record size. For
+-- additional guidance on when to set a custom record size, see
+-- <https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs Tips for maximizing performance>
+-- in the /Amazon FSx for OpenZFS User Guide/.
+updateOpenZFSVolumeConfiguration_recordSizeKiB :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Natural)
+updateOpenZFSVolumeConfiguration_recordSizeKiB = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {recordSizeKiB} -> recordSizeKiB) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {recordSizeKiB = a} :: UpdateOpenZFSVolumeConfiguration)
+
+-- | The maximum amount of storage in gibibytes (GiB) that the volume can use
+-- from its parent. You can specify a quota larger than the storage on the
+-- parent volume. You can specify a value of @-1@ to unset a volume\'s
+-- storage capacity quota.
+updateOpenZFSVolumeConfiguration_storageCapacityQuotaGiB :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Int)
+updateOpenZFSVolumeConfiguration_storageCapacityQuotaGiB = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {storageCapacityQuotaGiB} -> storageCapacityQuotaGiB) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {storageCapacityQuotaGiB = a} :: UpdateOpenZFSVolumeConfiguration)
+
+-- | The amount of storage in gibibytes (GiB) to reserve from the parent
+-- volume. You can\'t reserve more storage than the parent volume has
+-- reserved. You can specify a value of @-1@ to unset a volume\'s storage
+-- capacity reservation.
+updateOpenZFSVolumeConfiguration_storageCapacityReservationGiB :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe Prelude.Int)
+updateOpenZFSVolumeConfiguration_storageCapacityReservationGiB = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {storageCapacityReservationGiB} -> storageCapacityReservationGiB) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {storageCapacityReservationGiB = a} :: UpdateOpenZFSVolumeConfiguration)
+
+-- | An object specifying how much storage users or groups can use on the
+-- volume.
+updateOpenZFSVolumeConfiguration_userAndGroupQuotas :: Lens.Lens' UpdateOpenZFSVolumeConfiguration (Prelude.Maybe [OpenZFSUserOrGroupQuota])
+updateOpenZFSVolumeConfiguration_userAndGroupQuotas = Lens.lens (\UpdateOpenZFSVolumeConfiguration' {userAndGroupQuotas} -> userAndGroupQuotas) (\s@UpdateOpenZFSVolumeConfiguration' {} a -> s {userAndGroupQuotas = a} :: UpdateOpenZFSVolumeConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    UpdateOpenZFSVolumeConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateOpenZFSVolumeConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` dataCompressionType
+        `Prelude.hashWithSalt` nfsExports
+        `Prelude.hashWithSalt` readOnly
+        `Prelude.hashWithSalt` recordSizeKiB
+        `Prelude.hashWithSalt` storageCapacityQuotaGiB
+        `Prelude.hashWithSalt` storageCapacityReservationGiB
+        `Prelude.hashWithSalt` userAndGroupQuotas
+
+instance
+  Prelude.NFData
+    UpdateOpenZFSVolumeConfiguration
+  where
+  rnf UpdateOpenZFSVolumeConfiguration' {..} =
+    Prelude.rnf dataCompressionType
+      `Prelude.seq` Prelude.rnf nfsExports
+      `Prelude.seq` Prelude.rnf readOnly
+      `Prelude.seq` Prelude.rnf recordSizeKiB
+      `Prelude.seq` Prelude.rnf storageCapacityQuotaGiB
+      `Prelude.seq` Prelude.rnf storageCapacityReservationGiB
+      `Prelude.seq` Prelude.rnf userAndGroupQuotas
+
+instance Data.ToJSON UpdateOpenZFSVolumeConfiguration where
+  toJSON UpdateOpenZFSVolumeConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataCompressionType" Data..=)
+              Prelude.<$> dataCompressionType,
+            ("NfsExports" Data..=) Prelude.<$> nfsExports,
+            ("ReadOnly" Data..=) Prelude.<$> readOnly,
+            ("RecordSizeKiB" Data..=) Prelude.<$> recordSizeKiB,
+            ("StorageCapacityQuotaGiB" Data..=)
+              Prelude.<$> storageCapacityQuotaGiB,
+            ("StorageCapacityReservationGiB" Data..=)
+              Prelude.<$> storageCapacityReservationGiB,
+            ("UserAndGroupQuotas" Data..=)
+              Prelude.<$> userAndGroupQuotas
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/UpdateSvmActiveDirectoryConfiguration.hs b/gen/Amazonka/FSx/Types/UpdateSvmActiveDirectoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/UpdateSvmActiveDirectoryConfiguration.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.FSx.Types.UpdateSvmActiveDirectoryConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.UpdateSvmActiveDirectoryConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryConfigurationUpdates
+import qualified Amazonka.Prelude as Prelude
+
+-- | Updates the Microsoft Active Directory (AD) configuration of an SVM
+-- joined to an AD. Please note, account credentials are not returned in
+-- the response payload.
+--
+-- /See:/ 'newUpdateSvmActiveDirectoryConfiguration' smart constructor.
+data UpdateSvmActiveDirectoryConfiguration = UpdateSvmActiveDirectoryConfiguration'
+  { selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryConfigurationUpdates
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSvmActiveDirectoryConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selfManagedActiveDirectoryConfiguration', 'updateSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration' - Undocumented member.
+newUpdateSvmActiveDirectoryConfiguration ::
+  UpdateSvmActiveDirectoryConfiguration
+newUpdateSvmActiveDirectoryConfiguration =
+  UpdateSvmActiveDirectoryConfiguration'
+    { selfManagedActiveDirectoryConfiguration =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+updateSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' UpdateSvmActiveDirectoryConfiguration (Prelude.Maybe SelfManagedActiveDirectoryConfigurationUpdates)
+updateSvmActiveDirectoryConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\UpdateSvmActiveDirectoryConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@UpdateSvmActiveDirectoryConfiguration' {} a -> s {selfManagedActiveDirectoryConfiguration = a} :: UpdateSvmActiveDirectoryConfiguration)
+
+instance
+  Prelude.Hashable
+    UpdateSvmActiveDirectoryConfiguration
+  where
+  hashWithSalt
+    _salt
+    UpdateSvmActiveDirectoryConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
+
+instance
+  Prelude.NFData
+    UpdateSvmActiveDirectoryConfiguration
+  where
+  rnf UpdateSvmActiveDirectoryConfiguration' {..} =
+    Prelude.rnf selfManagedActiveDirectoryConfiguration
+
+instance
+  Data.ToJSON
+    UpdateSvmActiveDirectoryConfiguration
+  where
+  toJSON UpdateSvmActiveDirectoryConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SelfManagedActiveDirectoryConfiguration" Data..=)
+              Prelude.<$> selfManagedActiveDirectoryConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/Volume.hs b/gen/Amazonka/FSx/Types/Volume.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Volume.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.FSx.Types.Volume
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.Volume where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import {-# SOURCE #-} Amazonka.FSx.Types.AdministrativeAction
+import Amazonka.FSx.Types.LifecycleTransitionReason
+import Amazonka.FSx.Types.OntapVolumeConfiguration
+import Amazonka.FSx.Types.OpenZFSVolumeConfiguration
+import Amazonka.FSx.Types.Tag
+import Amazonka.FSx.Types.VolumeLifecycle
+import Amazonka.FSx.Types.VolumeType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS
+-- volume.
+--
+-- /See:/ 'newVolume' smart constructor.
+data Volume = Volume'
+  { -- | A list of administrative actions for the volume that are in process or
+    -- waiting to be processed. Administrative actions describe changes to the
+    -- volume that you have initiated using the @UpdateVolume@ action.
+    administrativeActions :: Prelude.Maybe [AdministrativeAction],
+    creationTime :: Prelude.Maybe Data.POSIX,
+    fileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | The lifecycle status of the volume.
+    --
+    -- -   @AVAILABLE@ - The volume is fully available for use.
+    --
+    -- -   @CREATED@ - The volume has been created.
+    --
+    -- -   @CREATING@ - Amazon FSx is creating the new volume.
+    --
+    -- -   @DELETING@ - Amazon FSx is deleting an existing volume.
+    --
+    -- -   @FAILED@ - Amazon FSx was unable to create the volume.
+    --
+    -- -   @MISCONFIGURED@ - The volume is in a failed but recoverable state.
+    --
+    -- -   @PENDING@ - Amazon FSx hasn\'t started creating the volume.
+    lifecycle :: Prelude.Maybe VolumeLifecycle,
+    -- | The reason why the volume lifecycle status changed.
+    lifecycleTransitionReason :: Prelude.Maybe LifecycleTransitionReason,
+    -- | The name of the volume.
+    name :: Prelude.Maybe Prelude.Text,
+    ontapConfiguration :: Prelude.Maybe OntapVolumeConfiguration,
+    -- | The configuration of an Amazon FSx for OpenZFS volume.
+    openZFSConfiguration :: Prelude.Maybe OpenZFSVolumeConfiguration,
+    resourceARN :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The system-generated, unique ID of the volume.
+    volumeId :: Prelude.Maybe Prelude.Text,
+    -- | The type of the volume.
+    volumeType :: Prelude.Maybe VolumeType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Volume' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'administrativeActions', 'volume_administrativeActions' - A list of administrative actions for the volume that are in process or
+-- waiting to be processed. Administrative actions describe changes to the
+-- volume that you have initiated using the @UpdateVolume@ action.
+--
+-- 'creationTime', 'volume_creationTime' - Undocumented member.
+--
+-- 'fileSystemId', 'volume_fileSystemId' - Undocumented member.
+--
+-- 'lifecycle', 'volume_lifecycle' - The lifecycle status of the volume.
+--
+-- -   @AVAILABLE@ - The volume is fully available for use.
+--
+-- -   @CREATED@ - The volume has been created.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new volume.
+--
+-- -   @DELETING@ - Amazon FSx is deleting an existing volume.
+--
+-- -   @FAILED@ - Amazon FSx was unable to create the volume.
+--
+-- -   @MISCONFIGURED@ - The volume is in a failed but recoverable state.
+--
+-- -   @PENDING@ - Amazon FSx hasn\'t started creating the volume.
+--
+-- 'lifecycleTransitionReason', 'volume_lifecycleTransitionReason' - The reason why the volume lifecycle status changed.
+--
+-- 'name', 'volume_name' - The name of the volume.
+--
+-- 'ontapConfiguration', 'volume_ontapConfiguration' - Undocumented member.
+--
+-- 'openZFSConfiguration', 'volume_openZFSConfiguration' - The configuration of an Amazon FSx for OpenZFS volume.
+--
+-- 'resourceARN', 'volume_resourceARN' - Undocumented member.
+--
+-- 'tags', 'volume_tags' - Undocumented member.
+--
+-- 'volumeId', 'volume_volumeId' - The system-generated, unique ID of the volume.
+--
+-- 'volumeType', 'volume_volumeType' - The type of the volume.
+newVolume ::
+  Volume
+newVolume =
+  Volume'
+    { administrativeActions = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      fileSystemId = Prelude.Nothing,
+      lifecycle = Prelude.Nothing,
+      lifecycleTransitionReason = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      resourceARN = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      volumeId = Prelude.Nothing,
+      volumeType = Prelude.Nothing
+    }
+
+-- | A list of administrative actions for the volume that are in process or
+-- waiting to be processed. Administrative actions describe changes to the
+-- volume that you have initiated using the @UpdateVolume@ action.
+volume_administrativeActions :: Lens.Lens' Volume (Prelude.Maybe [AdministrativeAction])
+volume_administrativeActions = Lens.lens (\Volume' {administrativeActions} -> administrativeActions) (\s@Volume' {} a -> s {administrativeActions = a} :: Volume) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+volume_creationTime :: Lens.Lens' Volume (Prelude.Maybe Prelude.UTCTime)
+volume_creationTime = Lens.lens (\Volume' {creationTime} -> creationTime) (\s@Volume' {} a -> s {creationTime = a} :: Volume) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+volume_fileSystemId :: Lens.Lens' Volume (Prelude.Maybe Prelude.Text)
+volume_fileSystemId = Lens.lens (\Volume' {fileSystemId} -> fileSystemId) (\s@Volume' {} a -> s {fileSystemId = a} :: Volume)
+
+-- | The lifecycle status of the volume.
+--
+-- -   @AVAILABLE@ - The volume is fully available for use.
+--
+-- -   @CREATED@ - The volume has been created.
+--
+-- -   @CREATING@ - Amazon FSx is creating the new volume.
+--
+-- -   @DELETING@ - Amazon FSx is deleting an existing volume.
+--
+-- -   @FAILED@ - Amazon FSx was unable to create the volume.
+--
+-- -   @MISCONFIGURED@ - The volume is in a failed but recoverable state.
+--
+-- -   @PENDING@ - Amazon FSx hasn\'t started creating the volume.
+volume_lifecycle :: Lens.Lens' Volume (Prelude.Maybe VolumeLifecycle)
+volume_lifecycle = Lens.lens (\Volume' {lifecycle} -> lifecycle) (\s@Volume' {} a -> s {lifecycle = a} :: Volume)
+
+-- | The reason why the volume lifecycle status changed.
+volume_lifecycleTransitionReason :: Lens.Lens' Volume (Prelude.Maybe LifecycleTransitionReason)
+volume_lifecycleTransitionReason = Lens.lens (\Volume' {lifecycleTransitionReason} -> lifecycleTransitionReason) (\s@Volume' {} a -> s {lifecycleTransitionReason = a} :: Volume)
+
+-- | The name of the volume.
+volume_name :: Lens.Lens' Volume (Prelude.Maybe Prelude.Text)
+volume_name = Lens.lens (\Volume' {name} -> name) (\s@Volume' {} a -> s {name = a} :: Volume)
+
+-- | Undocumented member.
+volume_ontapConfiguration :: Lens.Lens' Volume (Prelude.Maybe OntapVolumeConfiguration)
+volume_ontapConfiguration = Lens.lens (\Volume' {ontapConfiguration} -> ontapConfiguration) (\s@Volume' {} a -> s {ontapConfiguration = a} :: Volume)
+
+-- | The configuration of an Amazon FSx for OpenZFS volume.
+volume_openZFSConfiguration :: Lens.Lens' Volume (Prelude.Maybe OpenZFSVolumeConfiguration)
+volume_openZFSConfiguration = Lens.lens (\Volume' {openZFSConfiguration} -> openZFSConfiguration) (\s@Volume' {} a -> s {openZFSConfiguration = a} :: Volume)
+
+-- | Undocumented member.
+volume_resourceARN :: Lens.Lens' Volume (Prelude.Maybe Prelude.Text)
+volume_resourceARN = Lens.lens (\Volume' {resourceARN} -> resourceARN) (\s@Volume' {} a -> s {resourceARN = a} :: Volume)
+
+-- | Undocumented member.
+volume_tags :: Lens.Lens' Volume (Prelude.Maybe (Prelude.NonEmpty Tag))
+volume_tags = Lens.lens (\Volume' {tags} -> tags) (\s@Volume' {} a -> s {tags = a} :: Volume) Prelude.. Lens.mapping Lens.coerced
+
+-- | The system-generated, unique ID of the volume.
+volume_volumeId :: Lens.Lens' Volume (Prelude.Maybe Prelude.Text)
+volume_volumeId = Lens.lens (\Volume' {volumeId} -> volumeId) (\s@Volume' {} a -> s {volumeId = a} :: Volume)
+
+-- | The type of the volume.
+volume_volumeType :: Lens.Lens' Volume (Prelude.Maybe VolumeType)
+volume_volumeType = Lens.lens (\Volume' {volumeType} -> volumeType) (\s@Volume' {} a -> s {volumeType = a} :: Volume)
+
+instance Data.FromJSON Volume where
+  parseJSON =
+    Data.withObject
+      "Volume"
+      ( \x ->
+          Volume'
+            Prelude.<$> ( x
+                            Data..:? "AdministrativeActions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "FileSystemId")
+            Prelude.<*> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "LifecycleTransitionReason")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OntapConfiguration")
+            Prelude.<*> (x Data..:? "OpenZFSConfiguration")
+            Prelude.<*> (x Data..:? "ResourceARN")
+            Prelude.<*> (x Data..:? "Tags")
+            Prelude.<*> (x Data..:? "VolumeId")
+            Prelude.<*> (x Data..:? "VolumeType")
+      )
+
+instance Prelude.Hashable Volume where
+  hashWithSalt _salt Volume' {..} =
+    _salt
+      `Prelude.hashWithSalt` administrativeActions
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` lifecycleTransitionReason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` volumeId
+      `Prelude.hashWithSalt` volumeType
+
+instance Prelude.NFData Volume where
+  rnf Volume' {..} =
+    Prelude.rnf administrativeActions
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf lifecycleTransitionReason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf volumeId
+      `Prelude.seq` Prelude.rnf volumeType
diff --git a/gen/Amazonka/FSx/Types/Volume.hs-boot b/gen/Amazonka/FSx/Types/Volume.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/Volume.hs-boot
@@ -0,0 +1,31 @@
+{-# OPTIONS_GHC -Wno-missing-methods #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.Volume
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.Volume where
+
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+data Volume
+
+instance Prelude.Eq Volume
+
+instance Prelude.Read Volume
+
+instance Prelude.Show Volume
+
+instance Prelude.Generic Volume
+
+instance Data.FromJSON Volume
+
+instance Prelude.NFData Volume
+
+instance Prelude.Hashable Volume
diff --git a/gen/Amazonka/FSx/Types/VolumeFilter.hs b/gen/Amazonka/FSx/Types/VolumeFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/VolumeFilter.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.FSx.Types.VolumeFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.VolumeFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.VolumeFilterName
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter used to restrict the results of describe calls for Amazon FSx
+-- for NetApp ONTAP or Amazon FSx for OpenZFS volumes. You can use multiple
+-- filters to return results that meet all applied filter requirements.
+--
+-- /See:/ 'newVolumeFilter' smart constructor.
+data VolumeFilter = VolumeFilter'
+  { -- | The name for this filter.
+    name :: Prelude.Maybe VolumeFilterName,
+    -- | The values of the filter. These are all the values for any of the
+    -- applied filters.
+    values :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VolumeFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'volumeFilter_name' - The name for this filter.
+--
+-- 'values', 'volumeFilter_values' - The values of the filter. These are all the values for any of the
+-- applied filters.
+newVolumeFilter ::
+  VolumeFilter
+newVolumeFilter =
+  VolumeFilter'
+    { name = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The name for this filter.
+volumeFilter_name :: Lens.Lens' VolumeFilter (Prelude.Maybe VolumeFilterName)
+volumeFilter_name = Lens.lens (\VolumeFilter' {name} -> name) (\s@VolumeFilter' {} a -> s {name = a} :: VolumeFilter)
+
+-- | The values of the filter. These are all the values for any of the
+-- applied filters.
+volumeFilter_values :: Lens.Lens' VolumeFilter (Prelude.Maybe [Prelude.Text])
+volumeFilter_values = Lens.lens (\VolumeFilter' {values} -> values) (\s@VolumeFilter' {} a -> s {values = a} :: VolumeFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable VolumeFilter where
+  hashWithSalt _salt VolumeFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData VolumeFilter where
+  rnf VolumeFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON VolumeFilter where
+  toJSON VolumeFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/VolumeFilterName.hs b/gen/Amazonka/FSx/Types/VolumeFilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/VolumeFilterName.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.FSx.Types.VolumeFilterName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.VolumeFilterName
+  ( VolumeFilterName
+      ( ..,
+        VolumeFilterName_File_system_id,
+        VolumeFilterName_Storage_virtual_machine_id
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VolumeFilterName = VolumeFilterName'
+  { fromVolumeFilterName ::
+      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 VolumeFilterName_File_system_id :: VolumeFilterName
+pattern VolumeFilterName_File_system_id = VolumeFilterName' "file-system-id"
+
+pattern VolumeFilterName_Storage_virtual_machine_id :: VolumeFilterName
+pattern VolumeFilterName_Storage_virtual_machine_id = VolumeFilterName' "storage-virtual-machine-id"
+
+{-# COMPLETE
+  VolumeFilterName_File_system_id,
+  VolumeFilterName_Storage_virtual_machine_id,
+  VolumeFilterName'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/VolumeLifecycle.hs b/gen/Amazonka/FSx/Types/VolumeLifecycle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/VolumeLifecycle.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.FSx.Types.VolumeLifecycle
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.VolumeLifecycle
+  ( VolumeLifecycle
+      ( ..,
+        VolumeLifecycle_AVAILABLE,
+        VolumeLifecycle_CREATED,
+        VolumeLifecycle_CREATING,
+        VolumeLifecycle_DELETING,
+        VolumeLifecycle_FAILED,
+        VolumeLifecycle_MISCONFIGURED,
+        VolumeLifecycle_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VolumeLifecycle = VolumeLifecycle'
+  { fromVolumeLifecycle ::
+      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 VolumeLifecycle_AVAILABLE :: VolumeLifecycle
+pattern VolumeLifecycle_AVAILABLE = VolumeLifecycle' "AVAILABLE"
+
+pattern VolumeLifecycle_CREATED :: VolumeLifecycle
+pattern VolumeLifecycle_CREATED = VolumeLifecycle' "CREATED"
+
+pattern VolumeLifecycle_CREATING :: VolumeLifecycle
+pattern VolumeLifecycle_CREATING = VolumeLifecycle' "CREATING"
+
+pattern VolumeLifecycle_DELETING :: VolumeLifecycle
+pattern VolumeLifecycle_DELETING = VolumeLifecycle' "DELETING"
+
+pattern VolumeLifecycle_FAILED :: VolumeLifecycle
+pattern VolumeLifecycle_FAILED = VolumeLifecycle' "FAILED"
+
+pattern VolumeLifecycle_MISCONFIGURED :: VolumeLifecycle
+pattern VolumeLifecycle_MISCONFIGURED = VolumeLifecycle' "MISCONFIGURED"
+
+pattern VolumeLifecycle_PENDING :: VolumeLifecycle
+pattern VolumeLifecycle_PENDING = VolumeLifecycle' "PENDING"
+
+{-# COMPLETE
+  VolumeLifecycle_AVAILABLE,
+  VolumeLifecycle_CREATED,
+  VolumeLifecycle_CREATING,
+  VolumeLifecycle_DELETING,
+  VolumeLifecycle_FAILED,
+  VolumeLifecycle_MISCONFIGURED,
+  VolumeLifecycle_PENDING,
+  VolumeLifecycle'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/VolumeType.hs b/gen/Amazonka/FSx/Types/VolumeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/VolumeType.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.FSx.Types.VolumeType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.VolumeType
+  ( VolumeType
+      ( ..,
+        VolumeType_ONTAP,
+        VolumeType_OPENZFS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VolumeType = VolumeType'
+  { fromVolumeType ::
+      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 VolumeType_ONTAP :: VolumeType
+pattern VolumeType_ONTAP = VolumeType' "ONTAP"
+
+pattern VolumeType_OPENZFS :: VolumeType
+pattern VolumeType_OPENZFS = VolumeType' "OPENZFS"
+
+{-# COMPLETE
+  VolumeType_ONTAP,
+  VolumeType_OPENZFS,
+  VolumeType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/WindowsAccessAuditLogLevel.hs b/gen/Amazonka/FSx/Types/WindowsAccessAuditLogLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/WindowsAccessAuditLogLevel.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.FSx.Types.WindowsAccessAuditLogLevel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.WindowsAccessAuditLogLevel
+  ( WindowsAccessAuditLogLevel
+      ( ..,
+        WindowsAccessAuditLogLevel_DISABLED,
+        WindowsAccessAuditLogLevel_FAILURE_ONLY,
+        WindowsAccessAuditLogLevel_SUCCESS_AND_FAILURE,
+        WindowsAccessAuditLogLevel_SUCCESS_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WindowsAccessAuditLogLevel = WindowsAccessAuditLogLevel'
+  { fromWindowsAccessAuditLogLevel ::
+      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 WindowsAccessAuditLogLevel_DISABLED :: WindowsAccessAuditLogLevel
+pattern WindowsAccessAuditLogLevel_DISABLED = WindowsAccessAuditLogLevel' "DISABLED"
+
+pattern WindowsAccessAuditLogLevel_FAILURE_ONLY :: WindowsAccessAuditLogLevel
+pattern WindowsAccessAuditLogLevel_FAILURE_ONLY = WindowsAccessAuditLogLevel' "FAILURE_ONLY"
+
+pattern WindowsAccessAuditLogLevel_SUCCESS_AND_FAILURE :: WindowsAccessAuditLogLevel
+pattern WindowsAccessAuditLogLevel_SUCCESS_AND_FAILURE = WindowsAccessAuditLogLevel' "SUCCESS_AND_FAILURE"
+
+pattern WindowsAccessAuditLogLevel_SUCCESS_ONLY :: WindowsAccessAuditLogLevel
+pattern WindowsAccessAuditLogLevel_SUCCESS_ONLY = WindowsAccessAuditLogLevel' "SUCCESS_ONLY"
+
+{-# COMPLETE
+  WindowsAccessAuditLogLevel_DISABLED,
+  WindowsAccessAuditLogLevel_FAILURE_ONLY,
+  WindowsAccessAuditLogLevel_SUCCESS_AND_FAILURE,
+  WindowsAccessAuditLogLevel_SUCCESS_ONLY,
+  WindowsAccessAuditLogLevel'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/WindowsAuditLogConfiguration.hs b/gen/Amazonka/FSx/Types/WindowsAuditLogConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/WindowsAuditLogConfiguration.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.FSx.Types.WindowsAuditLogConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.WindowsAuditLogConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.WindowsAccessAuditLogLevel
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/file-access-auditing.html File access auditing>.
+--
+-- /See:/ 'newWindowsAuditLogConfiguration' smart constructor.
+data WindowsAuditLogConfiguration = WindowsAuditLogConfiguration'
+  { -- | The Amazon Resource Name (ARN) for the destination of the audit logs.
+    -- The destination can be any Amazon CloudWatch Logs log group ARN or
+    -- Amazon Kinesis Data Firehose delivery stream ARN.
+    --
+    -- The name of the Amazon CloudWatch Logs log group must begin with the
+    -- @\/aws\/fsx@ prefix. The name of the Amazon Kinesis Data Firehouse
+    -- delivery stream must begin with the @aws-fsx@ prefix.
+    --
+    -- The destination ARN (either CloudWatch Logs log group or Kinesis Data
+    -- Firehose delivery stream) must be in the same Amazon Web Services
+    -- partition, Amazon Web Services Region, and Amazon Web Services account
+    -- as your Amazon FSx file system.
+    auditLogDestination :: Prelude.Maybe Prelude.Text,
+    -- | Sets which attempt type is logged by Amazon FSx for file and folder
+    -- accesses.
+    --
+    -- -   @SUCCESS_ONLY@ - only successful attempts to access files or folders
+    --     are logged.
+    --
+    -- -   @FAILURE_ONLY@ - only failed attempts to access files or folders are
+    --     logged.
+    --
+    -- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+    --     to access files or folders are logged.
+    --
+    -- -   @DISABLED@ - access auditing of files and folders is turned off.
+    fileAccessAuditLogLevel :: WindowsAccessAuditLogLevel,
+    -- | Sets which attempt type is logged by Amazon FSx for file share accesses.
+    --
+    -- -   @SUCCESS_ONLY@ - only successful attempts to access file shares are
+    --     logged.
+    --
+    -- -   @FAILURE_ONLY@ - only failed attempts to access file shares are
+    --     logged.
+    --
+    -- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+    --     to access file shares are logged.
+    --
+    -- -   @DISABLED@ - access auditing of file shares is turned off.
+    fileShareAccessAuditLogLevel :: WindowsAccessAuditLogLevel
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WindowsAuditLogConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'auditLogDestination', 'windowsAuditLogConfiguration_auditLogDestination' - The Amazon Resource Name (ARN) for the destination of the audit logs.
+-- The destination can be any Amazon CloudWatch Logs log group ARN or
+-- Amazon Kinesis Data Firehose delivery stream ARN.
+--
+-- The name of the Amazon CloudWatch Logs log group must begin with the
+-- @\/aws\/fsx@ prefix. The name of the Amazon Kinesis Data Firehouse
+-- delivery stream must begin with the @aws-fsx@ prefix.
+--
+-- The destination ARN (either CloudWatch Logs log group or Kinesis Data
+-- Firehose delivery stream) must be in the same Amazon Web Services
+-- partition, Amazon Web Services Region, and Amazon Web Services account
+-- as your Amazon FSx file system.
+--
+-- 'fileAccessAuditLogLevel', 'windowsAuditLogConfiguration_fileAccessAuditLogLevel' - Sets which attempt type is logged by Amazon FSx for file and folder
+-- accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access files or folders
+--     are logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access files or folders are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access files or folders are logged.
+--
+-- -   @DISABLED@ - access auditing of files and folders is turned off.
+--
+-- 'fileShareAccessAuditLogLevel', 'windowsAuditLogConfiguration_fileShareAccessAuditLogLevel' - Sets which attempt type is logged by Amazon FSx for file share accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access file shares are
+--     logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access file shares are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access file shares are logged.
+--
+-- -   @DISABLED@ - access auditing of file shares is turned off.
+newWindowsAuditLogConfiguration ::
+  -- | 'fileAccessAuditLogLevel'
+  WindowsAccessAuditLogLevel ->
+  -- | 'fileShareAccessAuditLogLevel'
+  WindowsAccessAuditLogLevel ->
+  WindowsAuditLogConfiguration
+newWindowsAuditLogConfiguration
+  pFileAccessAuditLogLevel_
+  pFileShareAccessAuditLogLevel_ =
+    WindowsAuditLogConfiguration'
+      { auditLogDestination =
+          Prelude.Nothing,
+        fileAccessAuditLogLevel =
+          pFileAccessAuditLogLevel_,
+        fileShareAccessAuditLogLevel =
+          pFileShareAccessAuditLogLevel_
+      }
+
+-- | The Amazon Resource Name (ARN) for the destination of the audit logs.
+-- The destination can be any Amazon CloudWatch Logs log group ARN or
+-- Amazon Kinesis Data Firehose delivery stream ARN.
+--
+-- The name of the Amazon CloudWatch Logs log group must begin with the
+-- @\/aws\/fsx@ prefix. The name of the Amazon Kinesis Data Firehouse
+-- delivery stream must begin with the @aws-fsx@ prefix.
+--
+-- The destination ARN (either CloudWatch Logs log group or Kinesis Data
+-- Firehose delivery stream) must be in the same Amazon Web Services
+-- partition, Amazon Web Services Region, and Amazon Web Services account
+-- as your Amazon FSx file system.
+windowsAuditLogConfiguration_auditLogDestination :: Lens.Lens' WindowsAuditLogConfiguration (Prelude.Maybe Prelude.Text)
+windowsAuditLogConfiguration_auditLogDestination = Lens.lens (\WindowsAuditLogConfiguration' {auditLogDestination} -> auditLogDestination) (\s@WindowsAuditLogConfiguration' {} a -> s {auditLogDestination = a} :: WindowsAuditLogConfiguration)
+
+-- | Sets which attempt type is logged by Amazon FSx for file and folder
+-- accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access files or folders
+--     are logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access files or folders are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access files or folders are logged.
+--
+-- -   @DISABLED@ - access auditing of files and folders is turned off.
+windowsAuditLogConfiguration_fileAccessAuditLogLevel :: Lens.Lens' WindowsAuditLogConfiguration WindowsAccessAuditLogLevel
+windowsAuditLogConfiguration_fileAccessAuditLogLevel = Lens.lens (\WindowsAuditLogConfiguration' {fileAccessAuditLogLevel} -> fileAccessAuditLogLevel) (\s@WindowsAuditLogConfiguration' {} a -> s {fileAccessAuditLogLevel = a} :: WindowsAuditLogConfiguration)
+
+-- | Sets which attempt type is logged by Amazon FSx for file share accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access file shares are
+--     logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access file shares are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access file shares are logged.
+--
+-- -   @DISABLED@ - access auditing of file shares is turned off.
+windowsAuditLogConfiguration_fileShareAccessAuditLogLevel :: Lens.Lens' WindowsAuditLogConfiguration WindowsAccessAuditLogLevel
+windowsAuditLogConfiguration_fileShareAccessAuditLogLevel = Lens.lens (\WindowsAuditLogConfiguration' {fileShareAccessAuditLogLevel} -> fileShareAccessAuditLogLevel) (\s@WindowsAuditLogConfiguration' {} a -> s {fileShareAccessAuditLogLevel = a} :: WindowsAuditLogConfiguration)
+
+instance Data.FromJSON WindowsAuditLogConfiguration where
+  parseJSON =
+    Data.withObject
+      "WindowsAuditLogConfiguration"
+      ( \x ->
+          WindowsAuditLogConfiguration'
+            Prelude.<$> (x Data..:? "AuditLogDestination")
+            Prelude.<*> (x Data..: "FileAccessAuditLogLevel")
+            Prelude.<*> (x Data..: "FileShareAccessAuditLogLevel")
+      )
+
+instance
+  Prelude.Hashable
+    WindowsAuditLogConfiguration
+  where
+  hashWithSalt _salt WindowsAuditLogConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` auditLogDestination
+      `Prelude.hashWithSalt` fileAccessAuditLogLevel
+      `Prelude.hashWithSalt` fileShareAccessAuditLogLevel
+
+instance Prelude.NFData WindowsAuditLogConfiguration where
+  rnf WindowsAuditLogConfiguration' {..} =
+    Prelude.rnf auditLogDestination
+      `Prelude.seq` Prelude.rnf fileAccessAuditLogLevel
+      `Prelude.seq` Prelude.rnf fileShareAccessAuditLogLevel
diff --git a/gen/Amazonka/FSx/Types/WindowsAuditLogCreateConfiguration.hs b/gen/Amazonka/FSx/Types/WindowsAuditLogCreateConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/WindowsAuditLogCreateConfiguration.hs
@@ -0,0 +1,268 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.WindowsAccessAuditLogLevel
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Windows file access auditing configuration used when creating or
+-- updating an Amazon FSx for Windows File Server file system.
+--
+-- /See:/ 'newWindowsAuditLogCreateConfiguration' smart constructor.
+data WindowsAuditLogCreateConfiguration = WindowsAuditLogCreateConfiguration'
+  { -- | The Amazon Resource Name (ARN) that specifies the destination of the
+    -- audit logs.
+    --
+    -- The destination can be any Amazon CloudWatch Logs log group ARN or
+    -- Amazon Kinesis Data Firehose delivery stream ARN, with the following
+    -- requirements:
+    --
+    -- -   The destination ARN that you provide (either CloudWatch Logs log
+    --     group or Kinesis Data Firehose delivery stream) must be in the same
+    --     Amazon Web Services partition, Amazon Web Services Region, and
+    --     Amazon Web Services account as your Amazon FSx file system.
+    --
+    -- -   The name of the Amazon CloudWatch Logs log group must begin with the
+    --     @\/aws\/fsx@ prefix. The name of the Amazon Kinesis Data Firehouse
+    --     delivery stream must begin with the @aws-fsx@ prefix.
+    --
+    -- -   If you do not provide a destination in @AuditLogDestination@, Amazon
+    --     FSx will create and use a log stream in the CloudWatch Logs
+    --     @\/aws\/fsx\/windows@ log group.
+    --
+    -- -   If @AuditLogDestination@ is provided and the resource does not
+    --     exist, the request will fail with a @BadRequest@ error.
+    --
+    -- -   If @FileAccessAuditLogLevel@ and @FileShareAccessAuditLogLevel@ are
+    --     both set to @DISABLED@, you cannot specify a destination in
+    --     @AuditLogDestination@.
+    auditLogDestination :: Prelude.Maybe Prelude.Text,
+    -- | Sets which attempt type is logged by Amazon FSx for file and folder
+    -- accesses.
+    --
+    -- -   @SUCCESS_ONLY@ - only successful attempts to access files or folders
+    --     are logged.
+    --
+    -- -   @FAILURE_ONLY@ - only failed attempts to access files or folders are
+    --     logged.
+    --
+    -- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+    --     to access files or folders are logged.
+    --
+    -- -   @DISABLED@ - access auditing of files and folders is turned off.
+    fileAccessAuditLogLevel :: WindowsAccessAuditLogLevel,
+    -- | Sets which attempt type is logged by Amazon FSx for file share accesses.
+    --
+    -- -   @SUCCESS_ONLY@ - only successful attempts to access file shares are
+    --     logged.
+    --
+    -- -   @FAILURE_ONLY@ - only failed attempts to access file shares are
+    --     logged.
+    --
+    -- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+    --     to access file shares are logged.
+    --
+    -- -   @DISABLED@ - access auditing of file shares is turned off.
+    fileShareAccessAuditLogLevel :: WindowsAccessAuditLogLevel
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WindowsAuditLogCreateConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'auditLogDestination', 'windowsAuditLogCreateConfiguration_auditLogDestination' - The Amazon Resource Name (ARN) that specifies the destination of the
+-- audit logs.
+--
+-- The destination can be any Amazon CloudWatch Logs log group ARN or
+-- Amazon Kinesis Data Firehose delivery stream ARN, with the following
+-- requirements:
+--
+-- -   The destination ARN that you provide (either CloudWatch Logs log
+--     group or Kinesis Data Firehose delivery stream) must be in the same
+--     Amazon Web Services partition, Amazon Web Services Region, and
+--     Amazon Web Services account as your Amazon FSx file system.
+--
+-- -   The name of the Amazon CloudWatch Logs log group must begin with the
+--     @\/aws\/fsx@ prefix. The name of the Amazon Kinesis Data Firehouse
+--     delivery stream must begin with the @aws-fsx@ prefix.
+--
+-- -   If you do not provide a destination in @AuditLogDestination@, Amazon
+--     FSx will create and use a log stream in the CloudWatch Logs
+--     @\/aws\/fsx\/windows@ log group.
+--
+-- -   If @AuditLogDestination@ is provided and the resource does not
+--     exist, the request will fail with a @BadRequest@ error.
+--
+-- -   If @FileAccessAuditLogLevel@ and @FileShareAccessAuditLogLevel@ are
+--     both set to @DISABLED@, you cannot specify a destination in
+--     @AuditLogDestination@.
+--
+-- 'fileAccessAuditLogLevel', 'windowsAuditLogCreateConfiguration_fileAccessAuditLogLevel' - Sets which attempt type is logged by Amazon FSx for file and folder
+-- accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access files or folders
+--     are logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access files or folders are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access files or folders are logged.
+--
+-- -   @DISABLED@ - access auditing of files and folders is turned off.
+--
+-- 'fileShareAccessAuditLogLevel', 'windowsAuditLogCreateConfiguration_fileShareAccessAuditLogLevel' - Sets which attempt type is logged by Amazon FSx for file share accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access file shares are
+--     logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access file shares are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access file shares are logged.
+--
+-- -   @DISABLED@ - access auditing of file shares is turned off.
+newWindowsAuditLogCreateConfiguration ::
+  -- | 'fileAccessAuditLogLevel'
+  WindowsAccessAuditLogLevel ->
+  -- | 'fileShareAccessAuditLogLevel'
+  WindowsAccessAuditLogLevel ->
+  WindowsAuditLogCreateConfiguration
+newWindowsAuditLogCreateConfiguration
+  pFileAccessAuditLogLevel_
+  pFileShareAccessAuditLogLevel_ =
+    WindowsAuditLogCreateConfiguration'
+      { auditLogDestination =
+          Prelude.Nothing,
+        fileAccessAuditLogLevel =
+          pFileAccessAuditLogLevel_,
+        fileShareAccessAuditLogLevel =
+          pFileShareAccessAuditLogLevel_
+      }
+
+-- | The Amazon Resource Name (ARN) that specifies the destination of the
+-- audit logs.
+--
+-- The destination can be any Amazon CloudWatch Logs log group ARN or
+-- Amazon Kinesis Data Firehose delivery stream ARN, with the following
+-- requirements:
+--
+-- -   The destination ARN that you provide (either CloudWatch Logs log
+--     group or Kinesis Data Firehose delivery stream) must be in the same
+--     Amazon Web Services partition, Amazon Web Services Region, and
+--     Amazon Web Services account as your Amazon FSx file system.
+--
+-- -   The name of the Amazon CloudWatch Logs log group must begin with the
+--     @\/aws\/fsx@ prefix. The name of the Amazon Kinesis Data Firehouse
+--     delivery stream must begin with the @aws-fsx@ prefix.
+--
+-- -   If you do not provide a destination in @AuditLogDestination@, Amazon
+--     FSx will create and use a log stream in the CloudWatch Logs
+--     @\/aws\/fsx\/windows@ log group.
+--
+-- -   If @AuditLogDestination@ is provided and the resource does not
+--     exist, the request will fail with a @BadRequest@ error.
+--
+-- -   If @FileAccessAuditLogLevel@ and @FileShareAccessAuditLogLevel@ are
+--     both set to @DISABLED@, you cannot specify a destination in
+--     @AuditLogDestination@.
+windowsAuditLogCreateConfiguration_auditLogDestination :: Lens.Lens' WindowsAuditLogCreateConfiguration (Prelude.Maybe Prelude.Text)
+windowsAuditLogCreateConfiguration_auditLogDestination = Lens.lens (\WindowsAuditLogCreateConfiguration' {auditLogDestination} -> auditLogDestination) (\s@WindowsAuditLogCreateConfiguration' {} a -> s {auditLogDestination = a} :: WindowsAuditLogCreateConfiguration)
+
+-- | Sets which attempt type is logged by Amazon FSx for file and folder
+-- accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access files or folders
+--     are logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access files or folders are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access files or folders are logged.
+--
+-- -   @DISABLED@ - access auditing of files and folders is turned off.
+windowsAuditLogCreateConfiguration_fileAccessAuditLogLevel :: Lens.Lens' WindowsAuditLogCreateConfiguration WindowsAccessAuditLogLevel
+windowsAuditLogCreateConfiguration_fileAccessAuditLogLevel = Lens.lens (\WindowsAuditLogCreateConfiguration' {fileAccessAuditLogLevel} -> fileAccessAuditLogLevel) (\s@WindowsAuditLogCreateConfiguration' {} a -> s {fileAccessAuditLogLevel = a} :: WindowsAuditLogCreateConfiguration)
+
+-- | Sets which attempt type is logged by Amazon FSx for file share accesses.
+--
+-- -   @SUCCESS_ONLY@ - only successful attempts to access file shares are
+--     logged.
+--
+-- -   @FAILURE_ONLY@ - only failed attempts to access file shares are
+--     logged.
+--
+-- -   @SUCCESS_AND_FAILURE@ - both successful attempts and failed attempts
+--     to access file shares are logged.
+--
+-- -   @DISABLED@ - access auditing of file shares is turned off.
+windowsAuditLogCreateConfiguration_fileShareAccessAuditLogLevel :: Lens.Lens' WindowsAuditLogCreateConfiguration WindowsAccessAuditLogLevel
+windowsAuditLogCreateConfiguration_fileShareAccessAuditLogLevel = Lens.lens (\WindowsAuditLogCreateConfiguration' {fileShareAccessAuditLogLevel} -> fileShareAccessAuditLogLevel) (\s@WindowsAuditLogCreateConfiguration' {} a -> s {fileShareAccessAuditLogLevel = a} :: WindowsAuditLogCreateConfiguration)
+
+instance
+  Prelude.Hashable
+    WindowsAuditLogCreateConfiguration
+  where
+  hashWithSalt
+    _salt
+    WindowsAuditLogCreateConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` auditLogDestination
+        `Prelude.hashWithSalt` fileAccessAuditLogLevel
+        `Prelude.hashWithSalt` fileShareAccessAuditLogLevel
+
+instance
+  Prelude.NFData
+    WindowsAuditLogCreateConfiguration
+  where
+  rnf WindowsAuditLogCreateConfiguration' {..} =
+    Prelude.rnf auditLogDestination
+      `Prelude.seq` Prelude.rnf fileAccessAuditLogLevel
+      `Prelude.seq` Prelude.rnf fileShareAccessAuditLogLevel
+
+instance
+  Data.ToJSON
+    WindowsAuditLogCreateConfiguration
+  where
+  toJSON WindowsAuditLogCreateConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AuditLogDestination" Data..=)
+              Prelude.<$> auditLogDestination,
+            Prelude.Just
+              ( "FileAccessAuditLogLevel"
+                  Data..= fileAccessAuditLogLevel
+              ),
+            Prelude.Just
+              ( "FileShareAccessAuditLogLevel"
+                  Data..= fileShareAccessAuditLogLevel
+              )
+          ]
+      )
diff --git a/gen/Amazonka/FSx/Types/WindowsDeploymentType.hs b/gen/Amazonka/FSx/Types/WindowsDeploymentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/WindowsDeploymentType.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.FSx.Types.WindowsDeploymentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.WindowsDeploymentType
+  ( WindowsDeploymentType
+      ( ..,
+        WindowsDeploymentType_MULTI_AZ_1,
+        WindowsDeploymentType_SINGLE_AZ_1,
+        WindowsDeploymentType_SINGLE_AZ_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WindowsDeploymentType = WindowsDeploymentType'
+  { fromWindowsDeploymentType ::
+      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 WindowsDeploymentType_MULTI_AZ_1 :: WindowsDeploymentType
+pattern WindowsDeploymentType_MULTI_AZ_1 = WindowsDeploymentType' "MULTI_AZ_1"
+
+pattern WindowsDeploymentType_SINGLE_AZ_1 :: WindowsDeploymentType
+pattern WindowsDeploymentType_SINGLE_AZ_1 = WindowsDeploymentType' "SINGLE_AZ_1"
+
+pattern WindowsDeploymentType_SINGLE_AZ_2 :: WindowsDeploymentType
+pattern WindowsDeploymentType_SINGLE_AZ_2 = WindowsDeploymentType' "SINGLE_AZ_2"
+
+{-# COMPLETE
+  WindowsDeploymentType_MULTI_AZ_1,
+  WindowsDeploymentType_SINGLE_AZ_1,
+  WindowsDeploymentType_SINGLE_AZ_2,
+  WindowsDeploymentType'
+  #-}
diff --git a/gen/Amazonka/FSx/Types/WindowsFileSystemConfiguration.hs b/gen/Amazonka/FSx/Types/WindowsFileSystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/Types/WindowsFileSystemConfiguration.hs
@@ -0,0 +1,426 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.Types.WindowsFileSystemConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.FSx.Types.WindowsFileSystemConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types.Alias
+import Amazonka.FSx.Types.FileSystemMaintenanceOperation
+import Amazonka.FSx.Types.SelfManagedActiveDirectoryAttributes
+import Amazonka.FSx.Types.WindowsAuditLogConfiguration
+import Amazonka.FSx.Types.WindowsDeploymentType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for this Microsoft Windows file system.
+--
+-- /See:/ 'newWindowsFileSystemConfiguration' smart constructor.
+data WindowsFileSystemConfiguration = WindowsFileSystemConfiguration'
+  { -- | The ID for an existing Amazon Web Services Managed Microsoft Active
+    -- Directory instance that the file system is joined to.
+    activeDirectoryId :: Prelude.Maybe Prelude.Text,
+    aliases :: Prelude.Maybe [Alias],
+    -- | The configuration that Amazon FSx for Windows File Server uses to audit
+    -- and log user accesses of files, folders, and file shares on the Amazon
+    -- FSx for Windows File Server file system.
+    auditLogConfiguration :: Prelude.Maybe WindowsAuditLogConfiguration,
+    -- | The number of days to retain automatic backups. Setting this to 0
+    -- disables automatic backups. You can retain automatic backups for a
+    -- maximum of 90 days.
+    automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
+    -- | A boolean flag indicating whether tags on the file system should be
+    -- copied to backups. This value defaults to false. If it\'s set to true,
+    -- all tags on the file system are copied to all automatic backups and any
+    -- user-initiated backups where the user doesn\'t specify any tags. If this
+    -- value is true, and you specify one or more tags, only the specified tags
+    -- are copied to backups. If you specify one or more tags when creating a
+    -- user-initiated backup, no tags are copied from the file system,
+    -- regardless of this value.
+    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
+    -- | The preferred time to take daily automatic backups, in the UTC time
+    -- zone.
+    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the file system deployment type, valid values are the
+    -- following:
+    --
+    -- -   @MULTI_AZ_1@ - Specifies a high availability file system that is
+    --     configured for Multi-AZ redundancy to tolerate temporary
+    --     Availability Zone (AZ) unavailability, and supports SSD and HDD
+    --     storage.
+    --
+    -- -   @SINGLE_AZ_1@ - (Default) Specifies a file system that is configured
+    --     for single AZ redundancy, only supports SSD storage.
+    --
+    -- -   @SINGLE_AZ_2@ - Latest generation Single AZ file system. Specifies a
+    --     file system that is configured for single AZ redundancy and supports
+    --     SSD and HDD storage.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Single-AZ and Multi-AZ File Systems>.
+    deploymentType :: Prelude.Maybe WindowsDeploymentType,
+    -- | The list of maintenance operations in progress for this file system.
+    maintenanceOperationsInProgress :: Prelude.Maybe [FileSystemMaintenanceOperation],
+    -- | For @MULTI_AZ_1@ deployment types, the IP address of the primary, or
+    -- preferred, file server.
+    --
+    -- Use this IP address when mounting the file system on Linux SMB clients
+    -- or Windows SMB clients that are not joined to a Microsoft Active
+    -- Directory. Applicable for all Windows file system deployment types. This
+    -- IP address is temporarily unavailable when the file system is undergoing
+    -- maintenance. For Linux and Windows SMB clients that are joined to an
+    -- Active Directory, use the file system\'s DNSName instead. For more
+    -- information on mapping and mounting file shares, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/accessing-file-shares.html Accessing File Shares>.
+    preferredFileServerIp :: Prelude.Maybe Prelude.Text,
+    -- | For @MULTI_AZ_1@ deployment types, it specifies the ID of the subnet
+    -- where the preferred file server is located. Must be one of the two
+    -- subnet IDs specified in @SubnetIds@ property. Amazon FSx serves traffic
+    -- from this subnet except in the event of a failover to the secondary file
+    -- server.
+    --
+    -- For @SINGLE_AZ_1@ and @SINGLE_AZ_2@ deployment types, this value is the
+    -- same as that for @SubnetIDs@. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html#single-multi-az-resources Availability and durability: Single-AZ and Multi-AZ file systems>.
+    preferredSubnetId :: Prelude.Maybe Prelude.Text,
+    -- | For @MULTI_AZ_1@ deployment types, use this endpoint when performing
+    -- administrative tasks on the file system using Amazon FSx Remote
+    -- PowerShell.
+    --
+    -- For @SINGLE_AZ_1@ and @SINGLE_AZ_2@ deployment types, this is the DNS
+    -- name of the file system.
+    --
+    -- This endpoint is temporarily unavailable when the file system is
+    -- undergoing maintenance.
+    remoteAdministrationEndpoint :: Prelude.Maybe Prelude.Text,
+    selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryAttributes,
+    -- | The throughput of the Amazon FSx file system, measured in megabytes per
+    -- second.
+    throughputCapacity :: Prelude.Maybe Prelude.Natural,
+    -- | The preferred start time to perform weekly maintenance, formatted
+    -- d:HH:MM in the UTC time zone. d is the weekday number, from 1 through 7,
+    -- beginning with Monday and ending with Sunday.
+    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WindowsFileSystemConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryId', 'windowsFileSystemConfiguration_activeDirectoryId' - The ID for an existing Amazon Web Services Managed Microsoft Active
+-- Directory instance that the file system is joined to.
+--
+-- 'aliases', 'windowsFileSystemConfiguration_aliases' - Undocumented member.
+--
+-- 'auditLogConfiguration', 'windowsFileSystemConfiguration_auditLogConfiguration' - The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system.
+--
+-- 'automaticBackupRetentionDays', 'windowsFileSystemConfiguration_automaticBackupRetentionDays' - The number of days to retain automatic backups. Setting this to 0
+-- disables automatic backups. You can retain automatic backups for a
+-- maximum of 90 days.
+--
+-- 'copyTagsToBackups', 'windowsFileSystemConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags on the file system should be
+-- copied to backups. This value defaults to false. If it\'s set to true,
+-- all tags on the file system are copied to all automatic backups and any
+-- user-initiated backups where the user doesn\'t specify any tags. If this
+-- value is true, and you specify one or more tags, only the specified tags
+-- are copied to backups. If you specify one or more tags when creating a
+-- user-initiated backup, no tags are copied from the file system,
+-- regardless of this value.
+--
+-- 'dailyAutomaticBackupStartTime', 'windowsFileSystemConfiguration_dailyAutomaticBackupStartTime' - The preferred time to take daily automatic backups, in the UTC time
+-- zone.
+--
+-- 'deploymentType', 'windowsFileSystemConfiguration_deploymentType' - Specifies the file system deployment type, valid values are the
+-- following:
+--
+-- -   @MULTI_AZ_1@ - Specifies a high availability file system that is
+--     configured for Multi-AZ redundancy to tolerate temporary
+--     Availability Zone (AZ) unavailability, and supports SSD and HDD
+--     storage.
+--
+-- -   @SINGLE_AZ_1@ - (Default) Specifies a file system that is configured
+--     for single AZ redundancy, only supports SSD storage.
+--
+-- -   @SINGLE_AZ_2@ - Latest generation Single AZ file system. Specifies a
+--     file system that is configured for single AZ redundancy and supports
+--     SSD and HDD storage.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Single-AZ and Multi-AZ File Systems>.
+--
+-- 'maintenanceOperationsInProgress', 'windowsFileSystemConfiguration_maintenanceOperationsInProgress' - The list of maintenance operations in progress for this file system.
+--
+-- 'preferredFileServerIp', 'windowsFileSystemConfiguration_preferredFileServerIp' - For @MULTI_AZ_1@ deployment types, the IP address of the primary, or
+-- preferred, file server.
+--
+-- Use this IP address when mounting the file system on Linux SMB clients
+-- or Windows SMB clients that are not joined to a Microsoft Active
+-- Directory. Applicable for all Windows file system deployment types. This
+-- IP address is temporarily unavailable when the file system is undergoing
+-- maintenance. For Linux and Windows SMB clients that are joined to an
+-- Active Directory, use the file system\'s DNSName instead. For more
+-- information on mapping and mounting file shares, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/accessing-file-shares.html Accessing File Shares>.
+--
+-- 'preferredSubnetId', 'windowsFileSystemConfiguration_preferredSubnetId' - For @MULTI_AZ_1@ deployment types, it specifies the ID of the subnet
+-- where the preferred file server is located. Must be one of the two
+-- subnet IDs specified in @SubnetIds@ property. Amazon FSx serves traffic
+-- from this subnet except in the event of a failover to the secondary file
+-- server.
+--
+-- For @SINGLE_AZ_1@ and @SINGLE_AZ_2@ deployment types, this value is the
+-- same as that for @SubnetIDs@. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html#single-multi-az-resources Availability and durability: Single-AZ and Multi-AZ file systems>.
+--
+-- 'remoteAdministrationEndpoint', 'windowsFileSystemConfiguration_remoteAdministrationEndpoint' - For @MULTI_AZ_1@ deployment types, use this endpoint when performing
+-- administrative tasks on the file system using Amazon FSx Remote
+-- PowerShell.
+--
+-- For @SINGLE_AZ_1@ and @SINGLE_AZ_2@ deployment types, this is the DNS
+-- name of the file system.
+--
+-- This endpoint is temporarily unavailable when the file system is
+-- undergoing maintenance.
+--
+-- 'selfManagedActiveDirectoryConfiguration', 'windowsFileSystemConfiguration_selfManagedActiveDirectoryConfiguration' - Undocumented member.
+--
+-- 'throughputCapacity', 'windowsFileSystemConfiguration_throughputCapacity' - The throughput of the Amazon FSx file system, measured in megabytes per
+-- second.
+--
+-- 'weeklyMaintenanceStartTime', 'windowsFileSystemConfiguration_weeklyMaintenanceStartTime' - The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone. d is the weekday number, from 1 through 7,
+-- beginning with Monday and ending with Sunday.
+newWindowsFileSystemConfiguration ::
+  WindowsFileSystemConfiguration
+newWindowsFileSystemConfiguration =
+  WindowsFileSystemConfiguration'
+    { activeDirectoryId =
+        Prelude.Nothing,
+      aliases = Prelude.Nothing,
+      auditLogConfiguration = Prelude.Nothing,
+      automaticBackupRetentionDays =
+        Prelude.Nothing,
+      copyTagsToBackups = Prelude.Nothing,
+      dailyAutomaticBackupStartTime =
+        Prelude.Nothing,
+      deploymentType = Prelude.Nothing,
+      maintenanceOperationsInProgress =
+        Prelude.Nothing,
+      preferredFileServerIp = Prelude.Nothing,
+      preferredSubnetId = Prelude.Nothing,
+      remoteAdministrationEndpoint =
+        Prelude.Nothing,
+      selfManagedActiveDirectoryConfiguration =
+        Prelude.Nothing,
+      throughputCapacity = Prelude.Nothing,
+      weeklyMaintenanceStartTime =
+        Prelude.Nothing
+    }
+
+-- | The ID for an existing Amazon Web Services Managed Microsoft Active
+-- Directory instance that the file system is joined to.
+windowsFileSystemConfiguration_activeDirectoryId :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+windowsFileSystemConfiguration_activeDirectoryId = Lens.lens (\WindowsFileSystemConfiguration' {activeDirectoryId} -> activeDirectoryId) (\s@WindowsFileSystemConfiguration' {} a -> s {activeDirectoryId = a} :: WindowsFileSystemConfiguration)
+
+-- | Undocumented member.
+windowsFileSystemConfiguration_aliases :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe [Alias])
+windowsFileSystemConfiguration_aliases = Lens.lens (\WindowsFileSystemConfiguration' {aliases} -> aliases) (\s@WindowsFileSystemConfiguration' {} a -> s {aliases = a} :: WindowsFileSystemConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration that Amazon FSx for Windows File Server uses to audit
+-- and log user accesses of files, folders, and file shares on the Amazon
+-- FSx for Windows File Server file system.
+windowsFileSystemConfiguration_auditLogConfiguration :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe WindowsAuditLogConfiguration)
+windowsFileSystemConfiguration_auditLogConfiguration = Lens.lens (\WindowsFileSystemConfiguration' {auditLogConfiguration} -> auditLogConfiguration) (\s@WindowsFileSystemConfiguration' {} a -> s {auditLogConfiguration = a} :: WindowsFileSystemConfiguration)
+
+-- | The number of days to retain automatic backups. Setting this to 0
+-- disables automatic backups. You can retain automatic backups for a
+-- maximum of 90 days.
+windowsFileSystemConfiguration_automaticBackupRetentionDays :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+windowsFileSystemConfiguration_automaticBackupRetentionDays = Lens.lens (\WindowsFileSystemConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@WindowsFileSystemConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: WindowsFileSystemConfiguration)
+
+-- | A boolean flag indicating whether tags on the file system should be
+-- copied to backups. This value defaults to false. If it\'s set to true,
+-- all tags on the file system are copied to all automatic backups and any
+-- user-initiated backups where the user doesn\'t specify any tags. If this
+-- value is true, and you specify one or more tags, only the specified tags
+-- are copied to backups. If you specify one or more tags when creating a
+-- user-initiated backup, no tags are copied from the file system,
+-- regardless of this value.
+windowsFileSystemConfiguration_copyTagsToBackups :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Bool)
+windowsFileSystemConfiguration_copyTagsToBackups = Lens.lens (\WindowsFileSystemConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@WindowsFileSystemConfiguration' {} a -> s {copyTagsToBackups = a} :: WindowsFileSystemConfiguration)
+
+-- | The preferred time to take daily automatic backups, in the UTC time
+-- zone.
+windowsFileSystemConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+windowsFileSystemConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\WindowsFileSystemConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@WindowsFileSystemConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: WindowsFileSystemConfiguration)
+
+-- | Specifies the file system deployment type, valid values are the
+-- following:
+--
+-- -   @MULTI_AZ_1@ - Specifies a high availability file system that is
+--     configured for Multi-AZ redundancy to tolerate temporary
+--     Availability Zone (AZ) unavailability, and supports SSD and HDD
+--     storage.
+--
+-- -   @SINGLE_AZ_1@ - (Default) Specifies a file system that is configured
+--     for single AZ redundancy, only supports SSD storage.
+--
+-- -   @SINGLE_AZ_2@ - Latest generation Single AZ file system. Specifies a
+--     file system that is configured for single AZ redundancy and supports
+--     SSD and HDD storage.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Single-AZ and Multi-AZ File Systems>.
+windowsFileSystemConfiguration_deploymentType :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe WindowsDeploymentType)
+windowsFileSystemConfiguration_deploymentType = Lens.lens (\WindowsFileSystemConfiguration' {deploymentType} -> deploymentType) (\s@WindowsFileSystemConfiguration' {} a -> s {deploymentType = a} :: WindowsFileSystemConfiguration)
+
+-- | The list of maintenance operations in progress for this file system.
+windowsFileSystemConfiguration_maintenanceOperationsInProgress :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe [FileSystemMaintenanceOperation])
+windowsFileSystemConfiguration_maintenanceOperationsInProgress = Lens.lens (\WindowsFileSystemConfiguration' {maintenanceOperationsInProgress} -> maintenanceOperationsInProgress) (\s@WindowsFileSystemConfiguration' {} a -> s {maintenanceOperationsInProgress = a} :: WindowsFileSystemConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | For @MULTI_AZ_1@ deployment types, the IP address of the primary, or
+-- preferred, file server.
+--
+-- Use this IP address when mounting the file system on Linux SMB clients
+-- or Windows SMB clients that are not joined to a Microsoft Active
+-- Directory. Applicable for all Windows file system deployment types. This
+-- IP address is temporarily unavailable when the file system is undergoing
+-- maintenance. For Linux and Windows SMB clients that are joined to an
+-- Active Directory, use the file system\'s DNSName instead. For more
+-- information on mapping and mounting file shares, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/accessing-file-shares.html Accessing File Shares>.
+windowsFileSystemConfiguration_preferredFileServerIp :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+windowsFileSystemConfiguration_preferredFileServerIp = Lens.lens (\WindowsFileSystemConfiguration' {preferredFileServerIp} -> preferredFileServerIp) (\s@WindowsFileSystemConfiguration' {} a -> s {preferredFileServerIp = a} :: WindowsFileSystemConfiguration)
+
+-- | For @MULTI_AZ_1@ deployment types, it specifies the ID of the subnet
+-- where the preferred file server is located. Must be one of the two
+-- subnet IDs specified in @SubnetIds@ property. Amazon FSx serves traffic
+-- from this subnet except in the event of a failover to the secondary file
+-- server.
+--
+-- For @SINGLE_AZ_1@ and @SINGLE_AZ_2@ deployment types, this value is the
+-- same as that for @SubnetIDs@. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html#single-multi-az-resources Availability and durability: Single-AZ and Multi-AZ file systems>.
+windowsFileSystemConfiguration_preferredSubnetId :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+windowsFileSystemConfiguration_preferredSubnetId = Lens.lens (\WindowsFileSystemConfiguration' {preferredSubnetId} -> preferredSubnetId) (\s@WindowsFileSystemConfiguration' {} a -> s {preferredSubnetId = a} :: WindowsFileSystemConfiguration)
+
+-- | For @MULTI_AZ_1@ deployment types, use this endpoint when performing
+-- administrative tasks on the file system using Amazon FSx Remote
+-- PowerShell.
+--
+-- For @SINGLE_AZ_1@ and @SINGLE_AZ_2@ deployment types, this is the DNS
+-- name of the file system.
+--
+-- This endpoint is temporarily unavailable when the file system is
+-- undergoing maintenance.
+windowsFileSystemConfiguration_remoteAdministrationEndpoint :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+windowsFileSystemConfiguration_remoteAdministrationEndpoint = Lens.lens (\WindowsFileSystemConfiguration' {remoteAdministrationEndpoint} -> remoteAdministrationEndpoint) (\s@WindowsFileSystemConfiguration' {} a -> s {remoteAdministrationEndpoint = a} :: WindowsFileSystemConfiguration)
+
+-- | Undocumented member.
+windowsFileSystemConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe SelfManagedActiveDirectoryAttributes)
+windowsFileSystemConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\WindowsFileSystemConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@WindowsFileSystemConfiguration' {} a -> s {selfManagedActiveDirectoryConfiguration = a} :: WindowsFileSystemConfiguration)
+
+-- | The throughput of the Amazon FSx file system, measured in megabytes per
+-- second.
+windowsFileSystemConfiguration_throughputCapacity :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
+windowsFileSystemConfiguration_throughputCapacity = Lens.lens (\WindowsFileSystemConfiguration' {throughputCapacity} -> throughputCapacity) (\s@WindowsFileSystemConfiguration' {} a -> s {throughputCapacity = a} :: WindowsFileSystemConfiguration)
+
+-- | The preferred start time to perform weekly maintenance, formatted
+-- d:HH:MM in the UTC time zone. d is the weekday number, from 1 through 7,
+-- beginning with Monday and ending with Sunday.
+windowsFileSystemConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' WindowsFileSystemConfiguration (Prelude.Maybe Prelude.Text)
+windowsFileSystemConfiguration_weeklyMaintenanceStartTime = Lens.lens (\WindowsFileSystemConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@WindowsFileSystemConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: WindowsFileSystemConfiguration)
+
+instance Data.FromJSON WindowsFileSystemConfiguration where
+  parseJSON =
+    Data.withObject
+      "WindowsFileSystemConfiguration"
+      ( \x ->
+          WindowsFileSystemConfiguration'
+            Prelude.<$> (x Data..:? "ActiveDirectoryId")
+            Prelude.<*> (x Data..:? "Aliases" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "AuditLogConfiguration")
+            Prelude.<*> (x Data..:? "AutomaticBackupRetentionDays")
+            Prelude.<*> (x Data..:? "CopyTagsToBackups")
+            Prelude.<*> (x Data..:? "DailyAutomaticBackupStartTime")
+            Prelude.<*> (x Data..:? "DeploymentType")
+            Prelude.<*> ( x
+                            Data..:? "MaintenanceOperationsInProgress"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "PreferredFileServerIp")
+            Prelude.<*> (x Data..:? "PreferredSubnetId")
+            Prelude.<*> (x Data..:? "RemoteAdministrationEndpoint")
+            Prelude.<*> ( x
+                            Data..:? "SelfManagedActiveDirectoryConfiguration"
+                        )
+            Prelude.<*> (x Data..:? "ThroughputCapacity")
+            Prelude.<*> (x Data..:? "WeeklyMaintenanceStartTime")
+      )
+
+instance
+  Prelude.Hashable
+    WindowsFileSystemConfiguration
+  where
+  hashWithSalt
+    _salt
+    WindowsFileSystemConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` activeDirectoryId
+        `Prelude.hashWithSalt` aliases
+        `Prelude.hashWithSalt` auditLogConfiguration
+        `Prelude.hashWithSalt` automaticBackupRetentionDays
+        `Prelude.hashWithSalt` copyTagsToBackups
+        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
+        `Prelude.hashWithSalt` deploymentType
+        `Prelude.hashWithSalt` maintenanceOperationsInProgress
+        `Prelude.hashWithSalt` preferredFileServerIp
+        `Prelude.hashWithSalt` preferredSubnetId
+        `Prelude.hashWithSalt` remoteAdministrationEndpoint
+        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
+        `Prelude.hashWithSalt` throughputCapacity
+        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
+
+instance
+  Prelude.NFData
+    WindowsFileSystemConfiguration
+  where
+  rnf WindowsFileSystemConfiguration' {..} =
+    Prelude.rnf activeDirectoryId
+      `Prelude.seq` Prelude.rnf aliases
+      `Prelude.seq` Prelude.rnf auditLogConfiguration
+      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
+      `Prelude.seq` Prelude.rnf copyTagsToBackups
+      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
+      `Prelude.seq` Prelude.rnf deploymentType
+      `Prelude.seq` Prelude.rnf maintenanceOperationsInProgress
+      `Prelude.seq` Prelude.rnf preferredFileServerIp
+      `Prelude.seq` Prelude.rnf preferredSubnetId
+      `Prelude.seq` Prelude.rnf remoteAdministrationEndpoint
+      `Prelude.seq` Prelude.rnf
+        selfManagedActiveDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf throughputCapacity
+      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
diff --git a/gen/Amazonka/FSx/UntagResource.hs b/gen/Amazonka/FSx/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UntagResource.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.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)
+--
+-- This action removes a tag from an Amazon FSx resource.
+module Amazonka.FSx.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for @UntagResource@ action.
+--
+-- /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The ARN of the Amazon FSx resource to untag.
+    resourceARN :: Prelude.Text,
+    -- | A list of keys of tags on the resource to untag. In case the tag key
+    -- doesn\'t exist, the call will still succeed to be idempotent.
+    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 ARN of the Amazon FSx resource to untag.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - A list of keys of tags on the resource to untag. In case the tag key
+-- doesn\'t exist, the call will still succeed to be idempotent.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ pTagKeys_ =
+  UntagResource'
+    { resourceARN = pResourceARN_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The ARN of the Amazon FSx resource to untag.
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
+
+-- | A list of keys of tags on the resource to untag. In case the tag key
+-- doesn\'t exist, the call will still succeed to be idempotent.
+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.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UntagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for @UntagResource@ action.
+--
+-- /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/UpdateDataRepositoryAssociation.hs b/gen/Amazonka/FSx/UpdateDataRepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UpdateDataRepositoryAssociation.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.FSx.UpdateDataRepositoryAssociation
+-- 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 configuration of an existing data repository association on
+-- an Amazon FSx for Lustre file system. Data repository associations are
+-- supported only for file systems with the @Persistent_2@ deployment type.
+module Amazonka.FSx.UpdateDataRepositoryAssociation
+  ( -- * Creating a Request
+    UpdateDataRepositoryAssociation (..),
+    newUpdateDataRepositoryAssociation,
+
+    -- * Request Lenses
+    updateDataRepositoryAssociation_clientRequestToken,
+    updateDataRepositoryAssociation_importedFileChunkSize,
+    updateDataRepositoryAssociation_s3,
+    updateDataRepositoryAssociation_associationId,
+
+    -- * Destructuring the Response
+    UpdateDataRepositoryAssociationResponse (..),
+    newUpdateDataRepositoryAssociationResponse,
+
+    -- * Response Lenses
+    updateDataRepositoryAssociationResponse_association,
+    updateDataRepositoryAssociationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDataRepositoryAssociation' smart constructor.
+data UpdateDataRepositoryAssociation = UpdateDataRepositoryAssociation'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | For files imported from a data repository, this value determines the
+    -- stripe count and maximum amount of data per file (in MiB) stored on a
+    -- single physical disk. The maximum number of disks that a single file can
+    -- be striped across is limited by the total number of disks that make up
+    -- the file system.
+    --
+    -- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+    -- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+    importedFileChunkSize :: Prelude.Maybe Prelude.Natural,
+    -- | The configuration for an Amazon S3 data repository linked to an Amazon
+    -- FSx Lustre file system with a data repository association. The
+    -- configuration defines which file events (new, changed, or deleted files
+    -- or directories) are automatically imported from the linked data
+    -- repository to the file system or automatically exported from the file
+    -- system to the data repository.
+    s3 :: Prelude.Maybe S3DataRepositoryConfiguration,
+    -- | The ID of the data repository association that you are updating.
+    associationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataRepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'updateDataRepositoryAssociation_clientRequestToken' - Undocumented member.
+--
+-- 'importedFileChunkSize', 'updateDataRepositoryAssociation_importedFileChunkSize' - For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+--
+-- 's3', 'updateDataRepositoryAssociation_s3' - The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx Lustre file system with a data repository association. The
+-- configuration defines which file events (new, changed, or deleted files
+-- or directories) are automatically imported from the linked data
+-- repository to the file system or automatically exported from the file
+-- system to the data repository.
+--
+-- 'associationId', 'updateDataRepositoryAssociation_associationId' - The ID of the data repository association that you are updating.
+newUpdateDataRepositoryAssociation ::
+  -- | 'associationId'
+  Prelude.Text ->
+  UpdateDataRepositoryAssociation
+newUpdateDataRepositoryAssociation pAssociationId_ =
+  UpdateDataRepositoryAssociation'
+    { clientRequestToken =
+        Prelude.Nothing,
+      importedFileChunkSize = Prelude.Nothing,
+      s3 = Prelude.Nothing,
+      associationId = pAssociationId_
+    }
+
+-- | Undocumented member.
+updateDataRepositoryAssociation_clientRequestToken :: Lens.Lens' UpdateDataRepositoryAssociation (Prelude.Maybe Prelude.Text)
+updateDataRepositoryAssociation_clientRequestToken = Lens.lens (\UpdateDataRepositoryAssociation' {clientRequestToken} -> clientRequestToken) (\s@UpdateDataRepositoryAssociation' {} a -> s {clientRequestToken = a} :: UpdateDataRepositoryAssociation)
+
+-- | For files imported from a data repository, this value determines the
+-- stripe count and maximum amount of data per file (in MiB) stored on a
+-- single physical disk. The maximum number of disks that a single file can
+-- be striped across is limited by the total number of disks that make up
+-- the file system.
+--
+-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
+-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
+updateDataRepositoryAssociation_importedFileChunkSize :: Lens.Lens' UpdateDataRepositoryAssociation (Prelude.Maybe Prelude.Natural)
+updateDataRepositoryAssociation_importedFileChunkSize = Lens.lens (\UpdateDataRepositoryAssociation' {importedFileChunkSize} -> importedFileChunkSize) (\s@UpdateDataRepositoryAssociation' {} a -> s {importedFileChunkSize = a} :: UpdateDataRepositoryAssociation)
+
+-- | The configuration for an Amazon S3 data repository linked to an Amazon
+-- FSx Lustre file system with a data repository association. The
+-- configuration defines which file events (new, changed, or deleted files
+-- or directories) are automatically imported from the linked data
+-- repository to the file system or automatically exported from the file
+-- system to the data repository.
+updateDataRepositoryAssociation_s3 :: Lens.Lens' UpdateDataRepositoryAssociation (Prelude.Maybe S3DataRepositoryConfiguration)
+updateDataRepositoryAssociation_s3 = Lens.lens (\UpdateDataRepositoryAssociation' {s3} -> s3) (\s@UpdateDataRepositoryAssociation' {} a -> s {s3 = a} :: UpdateDataRepositoryAssociation)
+
+-- | The ID of the data repository association that you are updating.
+updateDataRepositoryAssociation_associationId :: Lens.Lens' UpdateDataRepositoryAssociation Prelude.Text
+updateDataRepositoryAssociation_associationId = Lens.lens (\UpdateDataRepositoryAssociation' {associationId} -> associationId) (\s@UpdateDataRepositoryAssociation' {} a -> s {associationId = a} :: UpdateDataRepositoryAssociation)
+
+instance
+  Core.AWSRequest
+    UpdateDataRepositoryAssociation
+  where
+  type
+    AWSResponse UpdateDataRepositoryAssociation =
+      UpdateDataRepositoryAssociationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDataRepositoryAssociationResponse'
+            Prelude.<$> (x Data..?> "Association")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateDataRepositoryAssociation
+  where
+  hashWithSalt
+    _salt
+    UpdateDataRepositoryAssociation' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` importedFileChunkSize
+        `Prelude.hashWithSalt` s3
+        `Prelude.hashWithSalt` associationId
+
+instance
+  Prelude.NFData
+    UpdateDataRepositoryAssociation
+  where
+  rnf UpdateDataRepositoryAssociation' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf importedFileChunkSize
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf associationId
+
+instance
+  Data.ToHeaders
+    UpdateDataRepositoryAssociation
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UpdateDataRepositoryAssociation" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDataRepositoryAssociation where
+  toJSON UpdateDataRepositoryAssociation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("ImportedFileChunkSize" Data..=)
+              Prelude.<$> importedFileChunkSize,
+            ("S3" Data..=) Prelude.<$> s3,
+            Prelude.Just
+              ("AssociationId" Data..= associationId)
+          ]
+      )
+
+instance Data.ToPath UpdateDataRepositoryAssociation where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateDataRepositoryAssociation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDataRepositoryAssociationResponse' smart constructor.
+data UpdateDataRepositoryAssociationResponse = UpdateDataRepositoryAssociationResponse'
+  { -- | The response object returned after the data repository association is
+    -- updated.
+    association :: Prelude.Maybe DataRepositoryAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDataRepositoryAssociationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'association', 'updateDataRepositoryAssociationResponse_association' - The response object returned after the data repository association is
+-- updated.
+--
+-- 'httpStatus', 'updateDataRepositoryAssociationResponse_httpStatus' - The response's http status code.
+newUpdateDataRepositoryAssociationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateDataRepositoryAssociationResponse
+newUpdateDataRepositoryAssociationResponse
+  pHttpStatus_ =
+    UpdateDataRepositoryAssociationResponse'
+      { association =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The response object returned after the data repository association is
+-- updated.
+updateDataRepositoryAssociationResponse_association :: Lens.Lens' UpdateDataRepositoryAssociationResponse (Prelude.Maybe DataRepositoryAssociation)
+updateDataRepositoryAssociationResponse_association = Lens.lens (\UpdateDataRepositoryAssociationResponse' {association} -> association) (\s@UpdateDataRepositoryAssociationResponse' {} a -> s {association = a} :: UpdateDataRepositoryAssociationResponse)
+
+-- | The response's http status code.
+updateDataRepositoryAssociationResponse_httpStatus :: Lens.Lens' UpdateDataRepositoryAssociationResponse Prelude.Int
+updateDataRepositoryAssociationResponse_httpStatus = Lens.lens (\UpdateDataRepositoryAssociationResponse' {httpStatus} -> httpStatus) (\s@UpdateDataRepositoryAssociationResponse' {} a -> s {httpStatus = a} :: UpdateDataRepositoryAssociationResponse)
+
+instance
+  Prelude.NFData
+    UpdateDataRepositoryAssociationResponse
+  where
+  rnf UpdateDataRepositoryAssociationResponse' {..} =
+    Prelude.rnf association
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/UpdateFileCache.hs b/gen/Amazonka/FSx/UpdateFileCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UpdateFileCache.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.FSx.UpdateFileCache
+-- 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 configuration of an existing Amazon File Cache resource. You
+-- can update multiple properties in a single request.
+module Amazonka.FSx.UpdateFileCache
+  ( -- * Creating a Request
+    UpdateFileCache (..),
+    newUpdateFileCache,
+
+    -- * Request Lenses
+    updateFileCache_clientRequestToken,
+    updateFileCache_lustreConfiguration,
+    updateFileCache_fileCacheId,
+
+    -- * Destructuring the Response
+    UpdateFileCacheResponse (..),
+    newUpdateFileCacheResponse,
+
+    -- * Response Lenses
+    updateFileCacheResponse_fileCache,
+    updateFileCacheResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateFileCache' smart constructor.
+data UpdateFileCache = UpdateFileCache'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The configuration updates for an Amazon File Cache resource.
+    lustreConfiguration :: Prelude.Maybe UpdateFileCacheLustreConfiguration,
+    -- | The ID of the cache that you are updating.
+    fileCacheId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileCache' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'updateFileCache_clientRequestToken' - Undocumented member.
+--
+-- 'lustreConfiguration', 'updateFileCache_lustreConfiguration' - The configuration updates for an Amazon File Cache resource.
+--
+-- 'fileCacheId', 'updateFileCache_fileCacheId' - The ID of the cache that you are updating.
+newUpdateFileCache ::
+  -- | 'fileCacheId'
+  Prelude.Text ->
+  UpdateFileCache
+newUpdateFileCache pFileCacheId_ =
+  UpdateFileCache'
+    { clientRequestToken =
+        Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      fileCacheId = pFileCacheId_
+    }
+
+-- | Undocumented member.
+updateFileCache_clientRequestToken :: Lens.Lens' UpdateFileCache (Prelude.Maybe Prelude.Text)
+updateFileCache_clientRequestToken = Lens.lens (\UpdateFileCache' {clientRequestToken} -> clientRequestToken) (\s@UpdateFileCache' {} a -> s {clientRequestToken = a} :: UpdateFileCache)
+
+-- | The configuration updates for an Amazon File Cache resource.
+updateFileCache_lustreConfiguration :: Lens.Lens' UpdateFileCache (Prelude.Maybe UpdateFileCacheLustreConfiguration)
+updateFileCache_lustreConfiguration = Lens.lens (\UpdateFileCache' {lustreConfiguration} -> lustreConfiguration) (\s@UpdateFileCache' {} a -> s {lustreConfiguration = a} :: UpdateFileCache)
+
+-- | The ID of the cache that you are updating.
+updateFileCache_fileCacheId :: Lens.Lens' UpdateFileCache Prelude.Text
+updateFileCache_fileCacheId = Lens.lens (\UpdateFileCache' {fileCacheId} -> fileCacheId) (\s@UpdateFileCache' {} a -> s {fileCacheId = a} :: UpdateFileCache)
+
+instance Core.AWSRequest UpdateFileCache where
+  type
+    AWSResponse UpdateFileCache =
+      UpdateFileCacheResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateFileCacheResponse'
+            Prelude.<$> (x Data..?> "FileCache")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateFileCache where
+  hashWithSalt _salt UpdateFileCache' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` fileCacheId
+
+instance Prelude.NFData UpdateFileCache where
+  rnf UpdateFileCache' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf fileCacheId
+
+instance Data.ToHeaders UpdateFileCache where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UpdateFileCache" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFileCache where
+  toJSON UpdateFileCache' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("LustreConfiguration" Data..=)
+              Prelude.<$> lustreConfiguration,
+            Prelude.Just ("FileCacheId" Data..= fileCacheId)
+          ]
+      )
+
+instance Data.ToPath UpdateFileCache where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateFileCache where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFileCacheResponse' smart constructor.
+data UpdateFileCacheResponse = UpdateFileCacheResponse'
+  { -- | A description of the cache that was updated.
+    fileCache :: Prelude.Maybe FileCache,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileCacheResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileCache', 'updateFileCacheResponse_fileCache' - A description of the cache that was updated.
+--
+-- 'httpStatus', 'updateFileCacheResponse_httpStatus' - The response's http status code.
+newUpdateFileCacheResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateFileCacheResponse
+newUpdateFileCacheResponse pHttpStatus_ =
+  UpdateFileCacheResponse'
+    { fileCache =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the cache that was updated.
+updateFileCacheResponse_fileCache :: Lens.Lens' UpdateFileCacheResponse (Prelude.Maybe FileCache)
+updateFileCacheResponse_fileCache = Lens.lens (\UpdateFileCacheResponse' {fileCache} -> fileCache) (\s@UpdateFileCacheResponse' {} a -> s {fileCache = a} :: UpdateFileCacheResponse)
+
+-- | The response's http status code.
+updateFileCacheResponse_httpStatus :: Lens.Lens' UpdateFileCacheResponse Prelude.Int
+updateFileCacheResponse_httpStatus = Lens.lens (\UpdateFileCacheResponse' {httpStatus} -> httpStatus) (\s@UpdateFileCacheResponse' {} a -> s {httpStatus = a} :: UpdateFileCacheResponse)
+
+instance Prelude.NFData UpdateFileCacheResponse where
+  rnf UpdateFileCacheResponse' {..} =
+    Prelude.rnf fileCache
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/UpdateFileSystem.hs b/gen/Amazonka/FSx/UpdateFileSystem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UpdateFileSystem.hs
@@ -0,0 +1,456 @@
+{-# 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.FSx.UpdateFileSystem
+-- 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 this operation to update the configuration of an existing Amazon FSx
+-- file system. You can update multiple properties in a single request.
+--
+-- For Amazon FSx for Windows File Server file systems, you can update the
+-- following properties:
+--
+-- -   @AuditLogConfiguration@
+--
+-- -   @AutomaticBackupRetentionDays@
+--
+-- -   @DailyAutomaticBackupStartTime@
+--
+-- -   @SelfManagedActiveDirectoryConfiguration@
+--
+-- -   @StorageCapacity@
+--
+-- -   @ThroughputCapacity@
+--
+-- -   @WeeklyMaintenanceStartTime@
+--
+-- For Amazon FSx for Lustre file systems, you can update the following
+-- properties:
+--
+-- -   @AutoImportPolicy@
+--
+-- -   @AutomaticBackupRetentionDays@
+--
+-- -   @DailyAutomaticBackupStartTime@
+--
+-- -   @DataCompressionType@
+--
+-- -   @LustreRootSquashConfiguration@
+--
+-- -   @StorageCapacity@
+--
+-- -   @WeeklyMaintenanceStartTime@
+--
+-- For Amazon FSx for NetApp ONTAP file systems, you can update the
+-- following properties:
+--
+-- -   @AutomaticBackupRetentionDays@
+--
+-- -   @DailyAutomaticBackupStartTime@
+--
+-- -   @DiskIopsConfiguration@
+--
+-- -   @FsxAdminPassword@
+--
+-- -   @StorageCapacity@
+--
+-- -   @ThroughputCapacity@
+--
+-- -   @WeeklyMaintenanceStartTime@
+--
+-- For the Amazon FSx for OpenZFS file systems, you can update the
+-- following properties:
+--
+-- -   @AutomaticBackupRetentionDays@
+--
+-- -   @CopyTagsToBackups@
+--
+-- -   @CopyTagsToVolumes@
+--
+-- -   @DailyAutomaticBackupStartTime@
+--
+-- -   @ThroughputCapacity@
+--
+-- -   @WeeklyMaintenanceStartTime@
+module Amazonka.FSx.UpdateFileSystem
+  ( -- * Creating a Request
+    UpdateFileSystem (..),
+    newUpdateFileSystem,
+
+    -- * Request Lenses
+    updateFileSystem_clientRequestToken,
+    updateFileSystem_lustreConfiguration,
+    updateFileSystem_ontapConfiguration,
+    updateFileSystem_openZFSConfiguration,
+    updateFileSystem_storageCapacity,
+    updateFileSystem_windowsConfiguration,
+    updateFileSystem_fileSystemId,
+
+    -- * Destructuring the Response
+    UpdateFileSystemResponse (..),
+    newUpdateFileSystemResponse,
+
+    -- * Response Lenses
+    updateFileSystemResponse_fileSystem,
+    updateFileSystemResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request object for the @UpdateFileSystem@ operation.
+--
+-- /See:/ 'newUpdateFileSystem' smart constructor.
+data UpdateFileSystem = UpdateFileSystem'
+  { -- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+    -- idempotent updates. This string is automatically filled on your behalf
+    -- when you use the Command Line Interface (CLI) or an Amazon Web Services
+    -- SDK.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    lustreConfiguration :: Prelude.Maybe UpdateFileSystemLustreConfiguration,
+    ontapConfiguration :: Prelude.Maybe UpdateFileSystemOntapConfiguration,
+    -- | The configuration updates for an Amazon FSx for OpenZFS file system.
+    openZFSConfiguration :: Prelude.Maybe UpdateFileSystemOpenZFSConfiguration,
+    -- | Use this parameter to increase the storage capacity of an Amazon FSx for
+    -- Windows File Server, Amazon FSx for Lustre, or Amazon FSx for NetApp
+    -- ONTAP file system. Specifies the storage capacity target value, in GiB,
+    -- to increase the storage capacity for the file system that you\'re
+    -- updating.
+    --
+    -- You can\'t make a storage capacity increase request if there is an
+    -- existing storage capacity increase request in progress.
+    --
+    -- For Windows file systems, the storage capacity target value must be at
+    -- least 10 percent greater than the current storage capacity value. To
+    -- increase storage capacity, the file system must have at least 16 MBps of
+    -- throughput capacity. For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html Managing storage capacity>
+    -- in the /Amazon FSx for Windows File Server User Guide/.
+    --
+    -- For Lustre file systems, the storage capacity target value can be the
+    -- following:
+    --
+    -- -   For @SCRATCH_2@, @PERSISTENT_1@, and @PERSISTENT_2 SSD@ deployment
+    --     types, valid values are in multiples of 2400 GiB. The value must be
+    --     greater than the current storage capacity.
+    --
+    -- -   For @PERSISTENT HDD@ file systems, valid values are multiples of
+    --     6000 GiB for 12-MBps throughput per TiB file systems and multiples
+    --     of 1800 GiB for 40-MBps throughput per TiB file systems. The values
+    --     must be greater than the current storage capacity.
+    --
+    -- -   For @SCRATCH_1@ file systems, you can\'t increase the storage
+    --     capacity.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html Managing storage and throughput capacity>
+    -- in the /Amazon FSx for Lustre User Guide/.
+    --
+    -- For ONTAP file systems, the storage capacity target value must be at
+    -- least 10 percent greater than the current storage capacity value. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-storage-capacity.html Managing storage capacity and provisioned IOPS>
+    -- in the /Amazon FSx for NetApp ONTAP User Guide/.
+    storageCapacity :: Prelude.Maybe Prelude.Natural,
+    -- | The configuration updates for an Amazon FSx for Windows File Server file
+    -- system.
+    windowsConfiguration :: Prelude.Maybe UpdateFileSystemWindowsConfiguration,
+    -- | The ID of the file system that you are updating.
+    fileSystemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileSystem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'updateFileSystem_clientRequestToken' - A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent updates. This string is automatically filled on your behalf
+-- when you use the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+--
+-- 'lustreConfiguration', 'updateFileSystem_lustreConfiguration' - Undocumented member.
+--
+-- 'ontapConfiguration', 'updateFileSystem_ontapConfiguration' - Undocumented member.
+--
+-- 'openZFSConfiguration', 'updateFileSystem_openZFSConfiguration' - The configuration updates for an Amazon FSx for OpenZFS file system.
+--
+-- 'storageCapacity', 'updateFileSystem_storageCapacity' - Use this parameter to increase the storage capacity of an Amazon FSx for
+-- Windows File Server, Amazon FSx for Lustre, or Amazon FSx for NetApp
+-- ONTAP file system. Specifies the storage capacity target value, in GiB,
+-- to increase the storage capacity for the file system that you\'re
+-- updating.
+--
+-- You can\'t make a storage capacity increase request if there is an
+-- existing storage capacity increase request in progress.
+--
+-- For Windows file systems, the storage capacity target value must be at
+-- least 10 percent greater than the current storage capacity value. To
+-- increase storage capacity, the file system must have at least 16 MBps of
+-- throughput capacity. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html Managing storage capacity>
+-- in the /Amazon FSx for Windows File Server User Guide/.
+--
+-- For Lustre file systems, the storage capacity target value can be the
+-- following:
+--
+-- -   For @SCRATCH_2@, @PERSISTENT_1@, and @PERSISTENT_2 SSD@ deployment
+--     types, valid values are in multiples of 2400 GiB. The value must be
+--     greater than the current storage capacity.
+--
+-- -   For @PERSISTENT HDD@ file systems, valid values are multiples of
+--     6000 GiB for 12-MBps throughput per TiB file systems and multiples
+--     of 1800 GiB for 40-MBps throughput per TiB file systems. The values
+--     must be greater than the current storage capacity.
+--
+-- -   For @SCRATCH_1@ file systems, you can\'t increase the storage
+--     capacity.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html Managing storage and throughput capacity>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- For ONTAP file systems, the storage capacity target value must be at
+-- least 10 percent greater than the current storage capacity value. For
+-- more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-storage-capacity.html Managing storage capacity and provisioned IOPS>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+--
+-- 'windowsConfiguration', 'updateFileSystem_windowsConfiguration' - The configuration updates for an Amazon FSx for Windows File Server file
+-- system.
+--
+-- 'fileSystemId', 'updateFileSystem_fileSystemId' - The ID of the file system that you are updating.
+newUpdateFileSystem ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  UpdateFileSystem
+newUpdateFileSystem pFileSystemId_ =
+  UpdateFileSystem'
+    { clientRequestToken =
+        Prelude.Nothing,
+      lustreConfiguration = Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      storageCapacity = Prelude.Nothing,
+      windowsConfiguration = Prelude.Nothing,
+      fileSystemId = pFileSystemId_
+    }
+
+-- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
+-- idempotent updates. This string is automatically filled on your behalf
+-- when you use the Command Line Interface (CLI) or an Amazon Web Services
+-- SDK.
+updateFileSystem_clientRequestToken :: Lens.Lens' UpdateFileSystem (Prelude.Maybe Prelude.Text)
+updateFileSystem_clientRequestToken = Lens.lens (\UpdateFileSystem' {clientRequestToken} -> clientRequestToken) (\s@UpdateFileSystem' {} a -> s {clientRequestToken = a} :: UpdateFileSystem)
+
+-- | Undocumented member.
+updateFileSystem_lustreConfiguration :: Lens.Lens' UpdateFileSystem (Prelude.Maybe UpdateFileSystemLustreConfiguration)
+updateFileSystem_lustreConfiguration = Lens.lens (\UpdateFileSystem' {lustreConfiguration} -> lustreConfiguration) (\s@UpdateFileSystem' {} a -> s {lustreConfiguration = a} :: UpdateFileSystem)
+
+-- | Undocumented member.
+updateFileSystem_ontapConfiguration :: Lens.Lens' UpdateFileSystem (Prelude.Maybe UpdateFileSystemOntapConfiguration)
+updateFileSystem_ontapConfiguration = Lens.lens (\UpdateFileSystem' {ontapConfiguration} -> ontapConfiguration) (\s@UpdateFileSystem' {} a -> s {ontapConfiguration = a} :: UpdateFileSystem)
+
+-- | The configuration updates for an Amazon FSx for OpenZFS file system.
+updateFileSystem_openZFSConfiguration :: Lens.Lens' UpdateFileSystem (Prelude.Maybe UpdateFileSystemOpenZFSConfiguration)
+updateFileSystem_openZFSConfiguration = Lens.lens (\UpdateFileSystem' {openZFSConfiguration} -> openZFSConfiguration) (\s@UpdateFileSystem' {} a -> s {openZFSConfiguration = a} :: UpdateFileSystem)
+
+-- | Use this parameter to increase the storage capacity of an Amazon FSx for
+-- Windows File Server, Amazon FSx for Lustre, or Amazon FSx for NetApp
+-- ONTAP file system. Specifies the storage capacity target value, in GiB,
+-- to increase the storage capacity for the file system that you\'re
+-- updating.
+--
+-- You can\'t make a storage capacity increase request if there is an
+-- existing storage capacity increase request in progress.
+--
+-- For Windows file systems, the storage capacity target value must be at
+-- least 10 percent greater than the current storage capacity value. To
+-- increase storage capacity, the file system must have at least 16 MBps of
+-- throughput capacity. For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html Managing storage capacity>
+-- in the /Amazon FSx for Windows File Server User Guide/.
+--
+-- For Lustre file systems, the storage capacity target value can be the
+-- following:
+--
+-- -   For @SCRATCH_2@, @PERSISTENT_1@, and @PERSISTENT_2 SSD@ deployment
+--     types, valid values are in multiples of 2400 GiB. The value must be
+--     greater than the current storage capacity.
+--
+-- -   For @PERSISTENT HDD@ file systems, valid values are multiples of
+--     6000 GiB for 12-MBps throughput per TiB file systems and multiples
+--     of 1800 GiB for 40-MBps throughput per TiB file systems. The values
+--     must be greater than the current storage capacity.
+--
+-- -   For @SCRATCH_1@ file systems, you can\'t increase the storage
+--     capacity.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html Managing storage and throughput capacity>
+-- in the /Amazon FSx for Lustre User Guide/.
+--
+-- For ONTAP file systems, the storage capacity target value must be at
+-- least 10 percent greater than the current storage capacity value. For
+-- more information, see
+-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-storage-capacity.html Managing storage capacity and provisioned IOPS>
+-- in the /Amazon FSx for NetApp ONTAP User Guide/.
+updateFileSystem_storageCapacity :: Lens.Lens' UpdateFileSystem (Prelude.Maybe Prelude.Natural)
+updateFileSystem_storageCapacity = Lens.lens (\UpdateFileSystem' {storageCapacity} -> storageCapacity) (\s@UpdateFileSystem' {} a -> s {storageCapacity = a} :: UpdateFileSystem)
+
+-- | The configuration updates for an Amazon FSx for Windows File Server file
+-- system.
+updateFileSystem_windowsConfiguration :: Lens.Lens' UpdateFileSystem (Prelude.Maybe UpdateFileSystemWindowsConfiguration)
+updateFileSystem_windowsConfiguration = Lens.lens (\UpdateFileSystem' {windowsConfiguration} -> windowsConfiguration) (\s@UpdateFileSystem' {} a -> s {windowsConfiguration = a} :: UpdateFileSystem)
+
+-- | The ID of the file system that you are updating.
+updateFileSystem_fileSystemId :: Lens.Lens' UpdateFileSystem Prelude.Text
+updateFileSystem_fileSystemId = Lens.lens (\UpdateFileSystem' {fileSystemId} -> fileSystemId) (\s@UpdateFileSystem' {} a -> s {fileSystemId = a} :: UpdateFileSystem)
+
+instance Core.AWSRequest UpdateFileSystem where
+  type
+    AWSResponse UpdateFileSystem =
+      UpdateFileSystemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateFileSystemResponse'
+            Prelude.<$> (x Data..?> "FileSystem")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateFileSystem where
+  hashWithSalt _salt UpdateFileSystem' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` lustreConfiguration
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` storageCapacity
+      `Prelude.hashWithSalt` windowsConfiguration
+      `Prelude.hashWithSalt` fileSystemId
+
+instance Prelude.NFData UpdateFileSystem where
+  rnf UpdateFileSystem' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf lustreConfiguration
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf storageCapacity
+      `Prelude.seq` Prelude.rnf windowsConfiguration
+      `Prelude.seq` Prelude.rnf fileSystemId
+
+instance Data.ToHeaders UpdateFileSystem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UpdateFileSystem" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFileSystem where
+  toJSON UpdateFileSystem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("LustreConfiguration" Data..=)
+              Prelude.<$> lustreConfiguration,
+            ("OntapConfiguration" Data..=)
+              Prelude.<$> ontapConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            ("StorageCapacity" Data..=)
+              Prelude.<$> storageCapacity,
+            ("WindowsConfiguration" Data..=)
+              Prelude.<$> windowsConfiguration,
+            Prelude.Just ("FileSystemId" Data..= fileSystemId)
+          ]
+      )
+
+instance Data.ToPath UpdateFileSystem where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateFileSystem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response object for the @UpdateFileSystem@ operation.
+--
+-- /See:/ 'newUpdateFileSystemResponse' smart constructor.
+data UpdateFileSystemResponse = UpdateFileSystemResponse'
+  { -- | A description of the file system that was updated.
+    fileSystem :: Prelude.Maybe FileSystem,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFileSystemResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fileSystem', 'updateFileSystemResponse_fileSystem' - A description of the file system that was updated.
+--
+-- 'httpStatus', 'updateFileSystemResponse_httpStatus' - The response's http status code.
+newUpdateFileSystemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateFileSystemResponse
+newUpdateFileSystemResponse pHttpStatus_ =
+  UpdateFileSystemResponse'
+    { fileSystem =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the file system that was updated.
+updateFileSystemResponse_fileSystem :: Lens.Lens' UpdateFileSystemResponse (Prelude.Maybe FileSystem)
+updateFileSystemResponse_fileSystem = Lens.lens (\UpdateFileSystemResponse' {fileSystem} -> fileSystem) (\s@UpdateFileSystemResponse' {} a -> s {fileSystem = a} :: UpdateFileSystemResponse)
+
+-- | The response's http status code.
+updateFileSystemResponse_httpStatus :: Lens.Lens' UpdateFileSystemResponse Prelude.Int
+updateFileSystemResponse_httpStatus = Lens.lens (\UpdateFileSystemResponse' {httpStatus} -> httpStatus) (\s@UpdateFileSystemResponse' {} a -> s {httpStatus = a} :: UpdateFileSystemResponse)
+
+instance Prelude.NFData UpdateFileSystemResponse where
+  rnf UpdateFileSystemResponse' {..} =
+    Prelude.rnf fileSystem
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/UpdateSnapshot.hs b/gen/Amazonka/FSx/UpdateSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UpdateSnapshot.hs
@@ -0,0 +1,207 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.UpdateSnapshot
+-- 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 an Amazon FSx for OpenZFS snapshot.
+module Amazonka.FSx.UpdateSnapshot
+  ( -- * Creating a Request
+    UpdateSnapshot (..),
+    newUpdateSnapshot,
+
+    -- * Request Lenses
+    updateSnapshot_clientRequestToken,
+    updateSnapshot_name,
+    updateSnapshot_snapshotId,
+
+    -- * Destructuring the Response
+    UpdateSnapshotResponse (..),
+    newUpdateSnapshotResponse,
+
+    -- * Response Lenses
+    updateSnapshotResponse_snapshot,
+    updateSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSnapshot' smart constructor.
+data UpdateSnapshot = UpdateSnapshot'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the snapshot to update.
+    name :: Prelude.Text,
+    -- | The ID of the snapshot that you want to update, in the format
+    -- @fsvolsnap-0123456789abcdef0@.
+    snapshotId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSnapshot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'updateSnapshot_clientRequestToken' - Undocumented member.
+--
+-- 'name', 'updateSnapshot_name' - The name of the snapshot to update.
+--
+-- 'snapshotId', 'updateSnapshot_snapshotId' - The ID of the snapshot that you want to update, in the format
+-- @fsvolsnap-0123456789abcdef0@.
+newUpdateSnapshot ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'snapshotId'
+  Prelude.Text ->
+  UpdateSnapshot
+newUpdateSnapshot pName_ pSnapshotId_ =
+  UpdateSnapshot'
+    { clientRequestToken =
+        Prelude.Nothing,
+      name = pName_,
+      snapshotId = pSnapshotId_
+    }
+
+-- | Undocumented member.
+updateSnapshot_clientRequestToken :: Lens.Lens' UpdateSnapshot (Prelude.Maybe Prelude.Text)
+updateSnapshot_clientRequestToken = Lens.lens (\UpdateSnapshot' {clientRequestToken} -> clientRequestToken) (\s@UpdateSnapshot' {} a -> s {clientRequestToken = a} :: UpdateSnapshot)
+
+-- | The name of the snapshot to update.
+updateSnapshot_name :: Lens.Lens' UpdateSnapshot Prelude.Text
+updateSnapshot_name = Lens.lens (\UpdateSnapshot' {name} -> name) (\s@UpdateSnapshot' {} a -> s {name = a} :: UpdateSnapshot)
+
+-- | The ID of the snapshot that you want to update, in the format
+-- @fsvolsnap-0123456789abcdef0@.
+updateSnapshot_snapshotId :: Lens.Lens' UpdateSnapshot Prelude.Text
+updateSnapshot_snapshotId = Lens.lens (\UpdateSnapshot' {snapshotId} -> snapshotId) (\s@UpdateSnapshot' {} a -> s {snapshotId = a} :: UpdateSnapshot)
+
+instance Core.AWSRequest UpdateSnapshot where
+  type
+    AWSResponse UpdateSnapshot =
+      UpdateSnapshotResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSnapshotResponse'
+            Prelude.<$> (x Data..?> "Snapshot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSnapshot where
+  hashWithSalt _salt UpdateSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` snapshotId
+
+instance Prelude.NFData UpdateSnapshot where
+  rnf UpdateSnapshot' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf snapshotId
+
+instance Data.ToHeaders UpdateSnapshot where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UpdateSnapshot" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSnapshot where
+  toJSON UpdateSnapshot' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("SnapshotId" Data..= snapshotId)
+          ]
+      )
+
+instance Data.ToPath UpdateSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateSnapshot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSnapshotResponse' smart constructor.
+data UpdateSnapshotResponse = UpdateSnapshotResponse'
+  { -- | Returned after a successful @UpdateSnapshot@ operation, describing the
+    -- snapshot that you updated.
+    snapshot :: Prelude.Maybe Snapshot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSnapshotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'snapshot', 'updateSnapshotResponse_snapshot' - Returned after a successful @UpdateSnapshot@ operation, describing the
+-- snapshot that you updated.
+--
+-- 'httpStatus', 'updateSnapshotResponse_httpStatus' - The response's http status code.
+newUpdateSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSnapshotResponse
+newUpdateSnapshotResponse pHttpStatus_ =
+  UpdateSnapshotResponse'
+    { snapshot = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returned after a successful @UpdateSnapshot@ operation, describing the
+-- snapshot that you updated.
+updateSnapshotResponse_snapshot :: Lens.Lens' UpdateSnapshotResponse (Prelude.Maybe Snapshot)
+updateSnapshotResponse_snapshot = Lens.lens (\UpdateSnapshotResponse' {snapshot} -> snapshot) (\s@UpdateSnapshotResponse' {} a -> s {snapshot = a} :: UpdateSnapshotResponse)
+
+-- | The response's http status code.
+updateSnapshotResponse_httpStatus :: Lens.Lens' UpdateSnapshotResponse Prelude.Int
+updateSnapshotResponse_httpStatus = Lens.lens (\UpdateSnapshotResponse' {httpStatus} -> httpStatus) (\s@UpdateSnapshotResponse' {} a -> s {httpStatus = a} :: UpdateSnapshotResponse)
+
+instance Prelude.NFData UpdateSnapshotResponse where
+  rnf UpdateSnapshotResponse' {..} =
+    Prelude.rnf snapshot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/UpdateStorageVirtualMachine.hs b/gen/Amazonka/FSx/UpdateStorageVirtualMachine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UpdateStorageVirtualMachine.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.FSx.UpdateStorageVirtualMachine
+-- 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 FSx for ONTAP storage virtual machine (SVM).
+module Amazonka.FSx.UpdateStorageVirtualMachine
+  ( -- * Creating a Request
+    UpdateStorageVirtualMachine (..),
+    newUpdateStorageVirtualMachine,
+
+    -- * Request Lenses
+    updateStorageVirtualMachine_activeDirectoryConfiguration,
+    updateStorageVirtualMachine_clientRequestToken,
+    updateStorageVirtualMachine_svmAdminPassword,
+    updateStorageVirtualMachine_storageVirtualMachineId,
+
+    -- * Destructuring the Response
+    UpdateStorageVirtualMachineResponse (..),
+    newUpdateStorageVirtualMachineResponse,
+
+    -- * Response Lenses
+    updateStorageVirtualMachineResponse_storageVirtualMachine,
+    updateStorageVirtualMachineResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateStorageVirtualMachine' smart constructor.
+data UpdateStorageVirtualMachine = UpdateStorageVirtualMachine'
+  { -- | Updates the Microsoft Active Directory (AD) configuration for an SVM
+    -- that is joined to an AD.
+    activeDirectoryConfiguration :: Prelude.Maybe UpdateSvmActiveDirectoryConfiguration,
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Enter a new SvmAdminPassword if you are updating it.
+    svmAdminPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the SVM that you want to update, in the format
+    -- @svm-0123456789abcdef0@.
+    storageVirtualMachineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateStorageVirtualMachine' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryConfiguration', 'updateStorageVirtualMachine_activeDirectoryConfiguration' - Updates the Microsoft Active Directory (AD) configuration for an SVM
+-- that is joined to an AD.
+--
+-- 'clientRequestToken', 'updateStorageVirtualMachine_clientRequestToken' - Undocumented member.
+--
+-- 'svmAdminPassword', 'updateStorageVirtualMachine_svmAdminPassword' - Enter a new SvmAdminPassword if you are updating it.
+--
+-- 'storageVirtualMachineId', 'updateStorageVirtualMachine_storageVirtualMachineId' - The ID of the SVM that you want to update, in the format
+-- @svm-0123456789abcdef0@.
+newUpdateStorageVirtualMachine ::
+  -- | 'storageVirtualMachineId'
+  Prelude.Text ->
+  UpdateStorageVirtualMachine
+newUpdateStorageVirtualMachine
+  pStorageVirtualMachineId_ =
+    UpdateStorageVirtualMachine'
+      { activeDirectoryConfiguration =
+          Prelude.Nothing,
+        clientRequestToken = Prelude.Nothing,
+        svmAdminPassword = Prelude.Nothing,
+        storageVirtualMachineId =
+          pStorageVirtualMachineId_
+      }
+
+-- | Updates the Microsoft Active Directory (AD) configuration for an SVM
+-- that is joined to an AD.
+updateStorageVirtualMachine_activeDirectoryConfiguration :: Lens.Lens' UpdateStorageVirtualMachine (Prelude.Maybe UpdateSvmActiveDirectoryConfiguration)
+updateStorageVirtualMachine_activeDirectoryConfiguration = Lens.lens (\UpdateStorageVirtualMachine' {activeDirectoryConfiguration} -> activeDirectoryConfiguration) (\s@UpdateStorageVirtualMachine' {} a -> s {activeDirectoryConfiguration = a} :: UpdateStorageVirtualMachine)
+
+-- | Undocumented member.
+updateStorageVirtualMachine_clientRequestToken :: Lens.Lens' UpdateStorageVirtualMachine (Prelude.Maybe Prelude.Text)
+updateStorageVirtualMachine_clientRequestToken = Lens.lens (\UpdateStorageVirtualMachine' {clientRequestToken} -> clientRequestToken) (\s@UpdateStorageVirtualMachine' {} a -> s {clientRequestToken = a} :: UpdateStorageVirtualMachine)
+
+-- | Enter a new SvmAdminPassword if you are updating it.
+updateStorageVirtualMachine_svmAdminPassword :: Lens.Lens' UpdateStorageVirtualMachine (Prelude.Maybe Prelude.Text)
+updateStorageVirtualMachine_svmAdminPassword = Lens.lens (\UpdateStorageVirtualMachine' {svmAdminPassword} -> svmAdminPassword) (\s@UpdateStorageVirtualMachine' {} a -> s {svmAdminPassword = a} :: UpdateStorageVirtualMachine) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the SVM that you want to update, in the format
+-- @svm-0123456789abcdef0@.
+updateStorageVirtualMachine_storageVirtualMachineId :: Lens.Lens' UpdateStorageVirtualMachine Prelude.Text
+updateStorageVirtualMachine_storageVirtualMachineId = Lens.lens (\UpdateStorageVirtualMachine' {storageVirtualMachineId} -> storageVirtualMachineId) (\s@UpdateStorageVirtualMachine' {} a -> s {storageVirtualMachineId = a} :: UpdateStorageVirtualMachine)
+
+instance Core.AWSRequest UpdateStorageVirtualMachine where
+  type
+    AWSResponse UpdateStorageVirtualMachine =
+      UpdateStorageVirtualMachineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateStorageVirtualMachineResponse'
+            Prelude.<$> (x Data..?> "StorageVirtualMachine")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateStorageVirtualMachine where
+  hashWithSalt _salt UpdateStorageVirtualMachine' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeDirectoryConfiguration
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` svmAdminPassword
+      `Prelude.hashWithSalt` storageVirtualMachineId
+
+instance Prelude.NFData UpdateStorageVirtualMachine where
+  rnf UpdateStorageVirtualMachine' {..} =
+    Prelude.rnf activeDirectoryConfiguration
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf svmAdminPassword
+      `Prelude.seq` Prelude.rnf storageVirtualMachineId
+
+instance Data.ToHeaders UpdateStorageVirtualMachine where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UpdateStorageVirtualMachine" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateStorageVirtualMachine where
+  toJSON UpdateStorageVirtualMachine' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveDirectoryConfiguration" Data..=)
+              Prelude.<$> activeDirectoryConfiguration,
+            ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("SvmAdminPassword" Data..=)
+              Prelude.<$> svmAdminPassword,
+            Prelude.Just
+              ( "StorageVirtualMachineId"
+                  Data..= storageVirtualMachineId
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateStorageVirtualMachine where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateStorageVirtualMachine where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateStorageVirtualMachineResponse' smart constructor.
+data UpdateStorageVirtualMachineResponse = UpdateStorageVirtualMachineResponse'
+  { storageVirtualMachine :: Prelude.Maybe StorageVirtualMachine,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateStorageVirtualMachineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'storageVirtualMachine', 'updateStorageVirtualMachineResponse_storageVirtualMachine' - Undocumented member.
+--
+-- 'httpStatus', 'updateStorageVirtualMachineResponse_httpStatus' - The response's http status code.
+newUpdateStorageVirtualMachineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateStorageVirtualMachineResponse
+newUpdateStorageVirtualMachineResponse pHttpStatus_ =
+  UpdateStorageVirtualMachineResponse'
+    { storageVirtualMachine =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateStorageVirtualMachineResponse_storageVirtualMachine :: Lens.Lens' UpdateStorageVirtualMachineResponse (Prelude.Maybe StorageVirtualMachine)
+updateStorageVirtualMachineResponse_storageVirtualMachine = Lens.lens (\UpdateStorageVirtualMachineResponse' {storageVirtualMachine} -> storageVirtualMachine) (\s@UpdateStorageVirtualMachineResponse' {} a -> s {storageVirtualMachine = a} :: UpdateStorageVirtualMachineResponse)
+
+-- | The response's http status code.
+updateStorageVirtualMachineResponse_httpStatus :: Lens.Lens' UpdateStorageVirtualMachineResponse Prelude.Int
+updateStorageVirtualMachineResponse_httpStatus = Lens.lens (\UpdateStorageVirtualMachineResponse' {httpStatus} -> httpStatus) (\s@UpdateStorageVirtualMachineResponse' {} a -> s {httpStatus = a} :: UpdateStorageVirtualMachineResponse)
+
+instance
+  Prelude.NFData
+    UpdateStorageVirtualMachineResponse
+  where
+  rnf UpdateStorageVirtualMachineResponse' {..} =
+    Prelude.rnf storageVirtualMachine
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/UpdateVolume.hs b/gen/Amazonka/FSx/UpdateVolume.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/UpdateVolume.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.FSx.UpdateVolume
+-- 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 configuration of an Amazon FSx for NetApp ONTAP or Amazon
+-- FSx for OpenZFS volume.
+module Amazonka.FSx.UpdateVolume
+  ( -- * Creating a Request
+    UpdateVolume (..),
+    newUpdateVolume,
+
+    -- * Request Lenses
+    updateVolume_clientRequestToken,
+    updateVolume_name,
+    updateVolume_ontapConfiguration,
+    updateVolume_openZFSConfiguration,
+    updateVolume_volumeId,
+
+    -- * Destructuring the Response
+    UpdateVolumeResponse (..),
+    newUpdateVolumeResponse,
+
+    -- * Response Lenses
+    updateVolumeResponse_volume,
+    updateVolumeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateVolume' smart constructor.
+data UpdateVolume = UpdateVolume'
+  { clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the OpenZFS volume. OpenZFS root volumes are automatically
+    -- named @FSX@. Child volume names must be unique among their parent
+    -- volume\'s children. The name of the volume is part of the mount string
+    -- for the OpenZFS volume.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The configuration of the ONTAP volume that you are updating.
+    ontapConfiguration :: Prelude.Maybe UpdateOntapVolumeConfiguration,
+    -- | The configuration of the OpenZFS volume that you are updating.
+    openZFSConfiguration :: Prelude.Maybe UpdateOpenZFSVolumeConfiguration,
+    -- | The ID of the volume that you want to update, in the format
+    -- @fsvol-0123456789abcdef0@.
+    volumeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVolume' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'updateVolume_clientRequestToken' - Undocumented member.
+--
+-- 'name', 'updateVolume_name' - The name of the OpenZFS volume. OpenZFS root volumes are automatically
+-- named @FSX@. Child volume names must be unique among their parent
+-- volume\'s children. The name of the volume is part of the mount string
+-- for the OpenZFS volume.
+--
+-- 'ontapConfiguration', 'updateVolume_ontapConfiguration' - The configuration of the ONTAP volume that you are updating.
+--
+-- 'openZFSConfiguration', 'updateVolume_openZFSConfiguration' - The configuration of the OpenZFS volume that you are updating.
+--
+-- 'volumeId', 'updateVolume_volumeId' - The ID of the volume that you want to update, in the format
+-- @fsvol-0123456789abcdef0@.
+newUpdateVolume ::
+  -- | 'volumeId'
+  Prelude.Text ->
+  UpdateVolume
+newUpdateVolume pVolumeId_ =
+  UpdateVolume'
+    { clientRequestToken = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ontapConfiguration = Prelude.Nothing,
+      openZFSConfiguration = Prelude.Nothing,
+      volumeId = pVolumeId_
+    }
+
+-- | Undocumented member.
+updateVolume_clientRequestToken :: Lens.Lens' UpdateVolume (Prelude.Maybe Prelude.Text)
+updateVolume_clientRequestToken = Lens.lens (\UpdateVolume' {clientRequestToken} -> clientRequestToken) (\s@UpdateVolume' {} a -> s {clientRequestToken = a} :: UpdateVolume)
+
+-- | The name of the OpenZFS volume. OpenZFS root volumes are automatically
+-- named @FSX@. Child volume names must be unique among their parent
+-- volume\'s children. The name of the volume is part of the mount string
+-- for the OpenZFS volume.
+updateVolume_name :: Lens.Lens' UpdateVolume (Prelude.Maybe Prelude.Text)
+updateVolume_name = Lens.lens (\UpdateVolume' {name} -> name) (\s@UpdateVolume' {} a -> s {name = a} :: UpdateVolume)
+
+-- | The configuration of the ONTAP volume that you are updating.
+updateVolume_ontapConfiguration :: Lens.Lens' UpdateVolume (Prelude.Maybe UpdateOntapVolumeConfiguration)
+updateVolume_ontapConfiguration = Lens.lens (\UpdateVolume' {ontapConfiguration} -> ontapConfiguration) (\s@UpdateVolume' {} a -> s {ontapConfiguration = a} :: UpdateVolume)
+
+-- | The configuration of the OpenZFS volume that you are updating.
+updateVolume_openZFSConfiguration :: Lens.Lens' UpdateVolume (Prelude.Maybe UpdateOpenZFSVolumeConfiguration)
+updateVolume_openZFSConfiguration = Lens.lens (\UpdateVolume' {openZFSConfiguration} -> openZFSConfiguration) (\s@UpdateVolume' {} a -> s {openZFSConfiguration = a} :: UpdateVolume)
+
+-- | The ID of the volume that you want to update, in the format
+-- @fsvol-0123456789abcdef0@.
+updateVolume_volumeId :: Lens.Lens' UpdateVolume Prelude.Text
+updateVolume_volumeId = Lens.lens (\UpdateVolume' {volumeId} -> volumeId) (\s@UpdateVolume' {} a -> s {volumeId = a} :: UpdateVolume)
+
+instance Core.AWSRequest UpdateVolume where
+  type AWSResponse UpdateVolume = UpdateVolumeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateVolumeResponse'
+            Prelude.<$> (x Data..?> "Volume")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateVolume where
+  hashWithSalt _salt UpdateVolume' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` ontapConfiguration
+      `Prelude.hashWithSalt` openZFSConfiguration
+      `Prelude.hashWithSalt` volumeId
+
+instance Prelude.NFData UpdateVolume where
+  rnf UpdateVolume' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ontapConfiguration
+      `Prelude.seq` Prelude.rnf openZFSConfiguration
+      `Prelude.seq` Prelude.rnf volumeId
+
+instance Data.ToHeaders UpdateVolume where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSSimbaAPIService_v20180301.UpdateVolume" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateVolume where
+  toJSON UpdateVolume' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Name" Data..=) Prelude.<$> name,
+            ("OntapConfiguration" Data..=)
+              Prelude.<$> ontapConfiguration,
+            ("OpenZFSConfiguration" Data..=)
+              Prelude.<$> openZFSConfiguration,
+            Prelude.Just ("VolumeId" Data..= volumeId)
+          ]
+      )
+
+instance Data.ToPath UpdateVolume where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateVolume where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateVolumeResponse' smart constructor.
+data UpdateVolumeResponse = UpdateVolumeResponse'
+  { -- | A description of the volume just updated. Returned after a successful
+    -- @UpdateVolume@ API operation.
+    volume :: Prelude.Maybe Volume,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVolumeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'volume', 'updateVolumeResponse_volume' - A description of the volume just updated. Returned after a successful
+-- @UpdateVolume@ API operation.
+--
+-- 'httpStatus', 'updateVolumeResponse_httpStatus' - The response's http status code.
+newUpdateVolumeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateVolumeResponse
+newUpdateVolumeResponse pHttpStatus_ =
+  UpdateVolumeResponse'
+    { volume = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A description of the volume just updated. Returned after a successful
+-- @UpdateVolume@ API operation.
+updateVolumeResponse_volume :: Lens.Lens' UpdateVolumeResponse (Prelude.Maybe Volume)
+updateVolumeResponse_volume = Lens.lens (\UpdateVolumeResponse' {volume} -> volume) (\s@UpdateVolumeResponse' {} a -> s {volume = a} :: UpdateVolumeResponse)
+
+-- | The response's http status code.
+updateVolumeResponse_httpStatus :: Lens.Lens' UpdateVolumeResponse Prelude.Int
+updateVolumeResponse_httpStatus = Lens.lens (\UpdateVolumeResponse' {httpStatus} -> httpStatus) (\s@UpdateVolumeResponse' {} a -> s {httpStatus = a} :: UpdateVolumeResponse)
+
+instance Prelude.NFData UpdateVolumeResponse where
+  rnf UpdateVolumeResponse' {..} =
+    Prelude.rnf volume
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/FSx/Waiters.hs b/gen/Amazonka/FSx/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/FSx/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.FSx.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.FSx.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.FSx.Lens
+import Amazonka.FSx.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.FSx
+import Test.Amazonka.FSx.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "FSx"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/FSx.hs b/test/Test/Amazonka/FSx.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/FSx.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.FSx
+-- Copyright   : (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.FSx
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/FSx/Internal.hs b/test/Test/Amazonka/FSx/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/FSx/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.FSx.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.FSx.Internal where
diff --git a/test/Test/Amazonka/Gen/FSx.hs b/test/Test/Amazonka/Gen/FSx.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/FSx.hs
@@ -0,0 +1,858 @@
+{-# 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.FSx
+-- Copyright   : (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.FSx where
+
+import Amazonka.FSx
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.FSx.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAssociateFileSystemAliases $
+--             newAssociateFileSystemAliases
+--
+--         , requestCancelDataRepositoryTask $
+--             newCancelDataRepositoryTask
+--
+--         , requestCopyBackup $
+--             newCopyBackup
+--
+--         , requestCreateBackup $
+--             newCreateBackup
+--
+--         , requestCreateDataRepositoryAssociation $
+--             newCreateDataRepositoryAssociation
+--
+--         , requestCreateDataRepositoryTask $
+--             newCreateDataRepositoryTask
+--
+--         , requestCreateFileCache $
+--             newCreateFileCache
+--
+--         , requestCreateFileSystem $
+--             newCreateFileSystem
+--
+--         , requestCreateFileSystemFromBackup $
+--             newCreateFileSystemFromBackup
+--
+--         , requestCreateSnapshot $
+--             newCreateSnapshot
+--
+--         , requestCreateStorageVirtualMachine $
+--             newCreateStorageVirtualMachine
+--
+--         , requestCreateVolume $
+--             newCreateVolume
+--
+--         , requestCreateVolumeFromBackup $
+--             newCreateVolumeFromBackup
+--
+--         , requestDeleteBackup $
+--             newDeleteBackup
+--
+--         , requestDeleteDataRepositoryAssociation $
+--             newDeleteDataRepositoryAssociation
+--
+--         , requestDeleteFileCache $
+--             newDeleteFileCache
+--
+--         , requestDeleteFileSystem $
+--             newDeleteFileSystem
+--
+--         , requestDeleteSnapshot $
+--             newDeleteSnapshot
+--
+--         , requestDeleteStorageVirtualMachine $
+--             newDeleteStorageVirtualMachine
+--
+--         , requestDeleteVolume $
+--             newDeleteVolume
+--
+--         , requestDescribeBackups $
+--             newDescribeBackups
+--
+--         , requestDescribeDataRepositoryAssociations $
+--             newDescribeDataRepositoryAssociations
+--
+--         , requestDescribeDataRepositoryTasks $
+--             newDescribeDataRepositoryTasks
+--
+--         , requestDescribeFileCaches $
+--             newDescribeFileCaches
+--
+--         , requestDescribeFileSystemAliases $
+--             newDescribeFileSystemAliases
+--
+--         , requestDescribeFileSystems $
+--             newDescribeFileSystems
+--
+--         , requestDescribeSnapshots $
+--             newDescribeSnapshots
+--
+--         , requestDescribeStorageVirtualMachines $
+--             newDescribeStorageVirtualMachines
+--
+--         , requestDescribeVolumes $
+--             newDescribeVolumes
+--
+--         , requestDisassociateFileSystemAliases $
+--             newDisassociateFileSystemAliases
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestReleaseFileSystemNfsV3Locks $
+--             newReleaseFileSystemNfsV3Locks
+--
+--         , requestRestoreVolumeFromSnapshot $
+--             newRestoreVolumeFromSnapshot
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateDataRepositoryAssociation $
+--             newUpdateDataRepositoryAssociation
+--
+--         , requestUpdateFileCache $
+--             newUpdateFileCache
+--
+--         , requestUpdateFileSystem $
+--             newUpdateFileSystem
+--
+--         , requestUpdateSnapshot $
+--             newUpdateSnapshot
+--
+--         , requestUpdateStorageVirtualMachine $
+--             newUpdateStorageVirtualMachine
+--
+--         , requestUpdateVolume $
+--             newUpdateVolume
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateFileSystemAliases $
+--             newAssociateFileSystemAliasesResponse
+--
+--         , responseCancelDataRepositoryTask $
+--             newCancelDataRepositoryTaskResponse
+--
+--         , responseCopyBackup $
+--             newCopyBackupResponse
+--
+--         , responseCreateBackup $
+--             newCreateBackupResponse
+--
+--         , responseCreateDataRepositoryAssociation $
+--             newCreateDataRepositoryAssociationResponse
+--
+--         , responseCreateDataRepositoryTask $
+--             newCreateDataRepositoryTaskResponse
+--
+--         , responseCreateFileCache $
+--             newCreateFileCacheResponse
+--
+--         , responseCreateFileSystem $
+--             newCreateFileSystemResponse
+--
+--         , responseCreateFileSystemFromBackup $
+--             newCreateFileSystemFromBackupResponse
+--
+--         , responseCreateSnapshot $
+--             newCreateSnapshotResponse
+--
+--         , responseCreateStorageVirtualMachine $
+--             newCreateStorageVirtualMachineResponse
+--
+--         , responseCreateVolume $
+--             newCreateVolumeResponse
+--
+--         , responseCreateVolumeFromBackup $
+--             newCreateVolumeFromBackupResponse
+--
+--         , responseDeleteBackup $
+--             newDeleteBackupResponse
+--
+--         , responseDeleteDataRepositoryAssociation $
+--             newDeleteDataRepositoryAssociationResponse
+--
+--         , responseDeleteFileCache $
+--             newDeleteFileCacheResponse
+--
+--         , responseDeleteFileSystem $
+--             newDeleteFileSystemResponse
+--
+--         , responseDeleteSnapshot $
+--             newDeleteSnapshotResponse
+--
+--         , responseDeleteStorageVirtualMachine $
+--             newDeleteStorageVirtualMachineResponse
+--
+--         , responseDeleteVolume $
+--             newDeleteVolumeResponse
+--
+--         , responseDescribeBackups $
+--             newDescribeBackupsResponse
+--
+--         , responseDescribeDataRepositoryAssociations $
+--             newDescribeDataRepositoryAssociationsResponse
+--
+--         , responseDescribeDataRepositoryTasks $
+--             newDescribeDataRepositoryTasksResponse
+--
+--         , responseDescribeFileCaches $
+--             newDescribeFileCachesResponse
+--
+--         , responseDescribeFileSystemAliases $
+--             newDescribeFileSystemAliasesResponse
+--
+--         , responseDescribeFileSystems $
+--             newDescribeFileSystemsResponse
+--
+--         , responseDescribeSnapshots $
+--             newDescribeSnapshotsResponse
+--
+--         , responseDescribeStorageVirtualMachines $
+--             newDescribeStorageVirtualMachinesResponse
+--
+--         , responseDescribeVolumes $
+--             newDescribeVolumesResponse
+--
+--         , responseDisassociateFileSystemAliases $
+--             newDisassociateFileSystemAliasesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseReleaseFileSystemNfsV3Locks $
+--             newReleaseFileSystemNfsV3LocksResponse
+--
+--         , responseRestoreVolumeFromSnapshot $
+--             newRestoreVolumeFromSnapshotResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateDataRepositoryAssociation $
+--             newUpdateDataRepositoryAssociationResponse
+--
+--         , responseUpdateFileCache $
+--             newUpdateFileCacheResponse
+--
+--         , responseUpdateFileSystem $
+--             newUpdateFileSystemResponse
+--
+--         , responseUpdateSnapshot $
+--             newUpdateSnapshotResponse
+--
+--         , responseUpdateStorageVirtualMachine $
+--             newUpdateStorageVirtualMachineResponse
+--
+--         , responseUpdateVolume $
+--             newUpdateVolumeResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateFileSystemAliases :: AssociateFileSystemAliases -> TestTree
+requestAssociateFileSystemAliases =
+  req
+    "AssociateFileSystemAliases"
+    "fixture/AssociateFileSystemAliases.yaml"
+
+requestCancelDataRepositoryTask :: CancelDataRepositoryTask -> TestTree
+requestCancelDataRepositoryTask =
+  req
+    "CancelDataRepositoryTask"
+    "fixture/CancelDataRepositoryTask.yaml"
+
+requestCopyBackup :: CopyBackup -> TestTree
+requestCopyBackup =
+  req
+    "CopyBackup"
+    "fixture/CopyBackup.yaml"
+
+requestCreateBackup :: CreateBackup -> TestTree
+requestCreateBackup =
+  req
+    "CreateBackup"
+    "fixture/CreateBackup.yaml"
+
+requestCreateDataRepositoryAssociation :: CreateDataRepositoryAssociation -> TestTree
+requestCreateDataRepositoryAssociation =
+  req
+    "CreateDataRepositoryAssociation"
+    "fixture/CreateDataRepositoryAssociation.yaml"
+
+requestCreateDataRepositoryTask :: CreateDataRepositoryTask -> TestTree
+requestCreateDataRepositoryTask =
+  req
+    "CreateDataRepositoryTask"
+    "fixture/CreateDataRepositoryTask.yaml"
+
+requestCreateFileCache :: CreateFileCache -> TestTree
+requestCreateFileCache =
+  req
+    "CreateFileCache"
+    "fixture/CreateFileCache.yaml"
+
+requestCreateFileSystem :: CreateFileSystem -> TestTree
+requestCreateFileSystem =
+  req
+    "CreateFileSystem"
+    "fixture/CreateFileSystem.yaml"
+
+requestCreateFileSystemFromBackup :: CreateFileSystemFromBackup -> TestTree
+requestCreateFileSystemFromBackup =
+  req
+    "CreateFileSystemFromBackup"
+    "fixture/CreateFileSystemFromBackup.yaml"
+
+requestCreateSnapshot :: CreateSnapshot -> TestTree
+requestCreateSnapshot =
+  req
+    "CreateSnapshot"
+    "fixture/CreateSnapshot.yaml"
+
+requestCreateStorageVirtualMachine :: CreateStorageVirtualMachine -> TestTree
+requestCreateStorageVirtualMachine =
+  req
+    "CreateStorageVirtualMachine"
+    "fixture/CreateStorageVirtualMachine.yaml"
+
+requestCreateVolume :: CreateVolume -> TestTree
+requestCreateVolume =
+  req
+    "CreateVolume"
+    "fixture/CreateVolume.yaml"
+
+requestCreateVolumeFromBackup :: CreateVolumeFromBackup -> TestTree
+requestCreateVolumeFromBackup =
+  req
+    "CreateVolumeFromBackup"
+    "fixture/CreateVolumeFromBackup.yaml"
+
+requestDeleteBackup :: DeleteBackup -> TestTree
+requestDeleteBackup =
+  req
+    "DeleteBackup"
+    "fixture/DeleteBackup.yaml"
+
+requestDeleteDataRepositoryAssociation :: DeleteDataRepositoryAssociation -> TestTree
+requestDeleteDataRepositoryAssociation =
+  req
+    "DeleteDataRepositoryAssociation"
+    "fixture/DeleteDataRepositoryAssociation.yaml"
+
+requestDeleteFileCache :: DeleteFileCache -> TestTree
+requestDeleteFileCache =
+  req
+    "DeleteFileCache"
+    "fixture/DeleteFileCache.yaml"
+
+requestDeleteFileSystem :: DeleteFileSystem -> TestTree
+requestDeleteFileSystem =
+  req
+    "DeleteFileSystem"
+    "fixture/DeleteFileSystem.yaml"
+
+requestDeleteSnapshot :: DeleteSnapshot -> TestTree
+requestDeleteSnapshot =
+  req
+    "DeleteSnapshot"
+    "fixture/DeleteSnapshot.yaml"
+
+requestDeleteStorageVirtualMachine :: DeleteStorageVirtualMachine -> TestTree
+requestDeleteStorageVirtualMachine =
+  req
+    "DeleteStorageVirtualMachine"
+    "fixture/DeleteStorageVirtualMachine.yaml"
+
+requestDeleteVolume :: DeleteVolume -> TestTree
+requestDeleteVolume =
+  req
+    "DeleteVolume"
+    "fixture/DeleteVolume.yaml"
+
+requestDescribeBackups :: DescribeBackups -> TestTree
+requestDescribeBackups =
+  req
+    "DescribeBackups"
+    "fixture/DescribeBackups.yaml"
+
+requestDescribeDataRepositoryAssociations :: DescribeDataRepositoryAssociations -> TestTree
+requestDescribeDataRepositoryAssociations =
+  req
+    "DescribeDataRepositoryAssociations"
+    "fixture/DescribeDataRepositoryAssociations.yaml"
+
+requestDescribeDataRepositoryTasks :: DescribeDataRepositoryTasks -> TestTree
+requestDescribeDataRepositoryTasks =
+  req
+    "DescribeDataRepositoryTasks"
+    "fixture/DescribeDataRepositoryTasks.yaml"
+
+requestDescribeFileCaches :: DescribeFileCaches -> TestTree
+requestDescribeFileCaches =
+  req
+    "DescribeFileCaches"
+    "fixture/DescribeFileCaches.yaml"
+
+requestDescribeFileSystemAliases :: DescribeFileSystemAliases -> TestTree
+requestDescribeFileSystemAliases =
+  req
+    "DescribeFileSystemAliases"
+    "fixture/DescribeFileSystemAliases.yaml"
+
+requestDescribeFileSystems :: DescribeFileSystems -> TestTree
+requestDescribeFileSystems =
+  req
+    "DescribeFileSystems"
+    "fixture/DescribeFileSystems.yaml"
+
+requestDescribeSnapshots :: DescribeSnapshots -> TestTree
+requestDescribeSnapshots =
+  req
+    "DescribeSnapshots"
+    "fixture/DescribeSnapshots.yaml"
+
+requestDescribeStorageVirtualMachines :: DescribeStorageVirtualMachines -> TestTree
+requestDescribeStorageVirtualMachines =
+  req
+    "DescribeStorageVirtualMachines"
+    "fixture/DescribeStorageVirtualMachines.yaml"
+
+requestDescribeVolumes :: DescribeVolumes -> TestTree
+requestDescribeVolumes =
+  req
+    "DescribeVolumes"
+    "fixture/DescribeVolumes.yaml"
+
+requestDisassociateFileSystemAliases :: DisassociateFileSystemAliases -> TestTree
+requestDisassociateFileSystemAliases =
+  req
+    "DisassociateFileSystemAliases"
+    "fixture/DisassociateFileSystemAliases.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestReleaseFileSystemNfsV3Locks :: ReleaseFileSystemNfsV3Locks -> TestTree
+requestReleaseFileSystemNfsV3Locks =
+  req
+    "ReleaseFileSystemNfsV3Locks"
+    "fixture/ReleaseFileSystemNfsV3Locks.yaml"
+
+requestRestoreVolumeFromSnapshot :: RestoreVolumeFromSnapshot -> TestTree
+requestRestoreVolumeFromSnapshot =
+  req
+    "RestoreVolumeFromSnapshot"
+    "fixture/RestoreVolumeFromSnapshot.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateDataRepositoryAssociation :: UpdateDataRepositoryAssociation -> TestTree
+requestUpdateDataRepositoryAssociation =
+  req
+    "UpdateDataRepositoryAssociation"
+    "fixture/UpdateDataRepositoryAssociation.yaml"
+
+requestUpdateFileCache :: UpdateFileCache -> TestTree
+requestUpdateFileCache =
+  req
+    "UpdateFileCache"
+    "fixture/UpdateFileCache.yaml"
+
+requestUpdateFileSystem :: UpdateFileSystem -> TestTree
+requestUpdateFileSystem =
+  req
+    "UpdateFileSystem"
+    "fixture/UpdateFileSystem.yaml"
+
+requestUpdateSnapshot :: UpdateSnapshot -> TestTree
+requestUpdateSnapshot =
+  req
+    "UpdateSnapshot"
+    "fixture/UpdateSnapshot.yaml"
+
+requestUpdateStorageVirtualMachine :: UpdateStorageVirtualMachine -> TestTree
+requestUpdateStorageVirtualMachine =
+  req
+    "UpdateStorageVirtualMachine"
+    "fixture/UpdateStorageVirtualMachine.yaml"
+
+requestUpdateVolume :: UpdateVolume -> TestTree
+requestUpdateVolume =
+  req
+    "UpdateVolume"
+    "fixture/UpdateVolume.yaml"
+
+-- Responses
+
+responseAssociateFileSystemAliases :: AssociateFileSystemAliasesResponse -> TestTree
+responseAssociateFileSystemAliases =
+  res
+    "AssociateFileSystemAliasesResponse"
+    "fixture/AssociateFileSystemAliasesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateFileSystemAliases)
+
+responseCancelDataRepositoryTask :: CancelDataRepositoryTaskResponse -> TestTree
+responseCancelDataRepositoryTask =
+  res
+    "CancelDataRepositoryTaskResponse"
+    "fixture/CancelDataRepositoryTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CancelDataRepositoryTask)
+
+responseCopyBackup :: CopyBackupResponse -> TestTree
+responseCopyBackup =
+  res
+    "CopyBackupResponse"
+    "fixture/CopyBackupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CopyBackup)
+
+responseCreateBackup :: CreateBackupResponse -> TestTree
+responseCreateBackup =
+  res
+    "CreateBackupResponse"
+    "fixture/CreateBackupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBackup)
+
+responseCreateDataRepositoryAssociation :: CreateDataRepositoryAssociationResponse -> TestTree
+responseCreateDataRepositoryAssociation =
+  res
+    "CreateDataRepositoryAssociationResponse"
+    "fixture/CreateDataRepositoryAssociationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDataRepositoryAssociation)
+
+responseCreateDataRepositoryTask :: CreateDataRepositoryTaskResponse -> TestTree
+responseCreateDataRepositoryTask =
+  res
+    "CreateDataRepositoryTaskResponse"
+    "fixture/CreateDataRepositoryTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDataRepositoryTask)
+
+responseCreateFileCache :: CreateFileCacheResponse -> TestTree
+responseCreateFileCache =
+  res
+    "CreateFileCacheResponse"
+    "fixture/CreateFileCacheResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFileCache)
+
+responseCreateFileSystem :: CreateFileSystemResponse -> TestTree
+responseCreateFileSystem =
+  res
+    "CreateFileSystemResponse"
+    "fixture/CreateFileSystemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFileSystem)
+
+responseCreateFileSystemFromBackup :: CreateFileSystemFromBackupResponse -> TestTree
+responseCreateFileSystemFromBackup =
+  res
+    "CreateFileSystemFromBackupResponse"
+    "fixture/CreateFileSystemFromBackupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFileSystemFromBackup)
+
+responseCreateSnapshot :: CreateSnapshotResponse -> TestTree
+responseCreateSnapshot =
+  res
+    "CreateSnapshotResponse"
+    "fixture/CreateSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSnapshot)
+
+responseCreateStorageVirtualMachine :: CreateStorageVirtualMachineResponse -> TestTree
+responseCreateStorageVirtualMachine =
+  res
+    "CreateStorageVirtualMachineResponse"
+    "fixture/CreateStorageVirtualMachineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateStorageVirtualMachine)
+
+responseCreateVolume :: CreateVolumeResponse -> TestTree
+responseCreateVolume =
+  res
+    "CreateVolumeResponse"
+    "fixture/CreateVolumeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateVolume)
+
+responseCreateVolumeFromBackup :: CreateVolumeFromBackupResponse -> TestTree
+responseCreateVolumeFromBackup =
+  res
+    "CreateVolumeFromBackupResponse"
+    "fixture/CreateVolumeFromBackupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateVolumeFromBackup)
+
+responseDeleteBackup :: DeleteBackupResponse -> TestTree
+responseDeleteBackup =
+  res
+    "DeleteBackupResponse"
+    "fixture/DeleteBackupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteBackup)
+
+responseDeleteDataRepositoryAssociation :: DeleteDataRepositoryAssociationResponse -> TestTree
+responseDeleteDataRepositoryAssociation =
+  res
+    "DeleteDataRepositoryAssociationResponse"
+    "fixture/DeleteDataRepositoryAssociationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDataRepositoryAssociation)
+
+responseDeleteFileCache :: DeleteFileCacheResponse -> TestTree
+responseDeleteFileCache =
+  res
+    "DeleteFileCacheResponse"
+    "fixture/DeleteFileCacheResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFileCache)
+
+responseDeleteFileSystem :: DeleteFileSystemResponse -> TestTree
+responseDeleteFileSystem =
+  res
+    "DeleteFileSystemResponse"
+    "fixture/DeleteFileSystemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFileSystem)
+
+responseDeleteSnapshot :: DeleteSnapshotResponse -> TestTree
+responseDeleteSnapshot =
+  res
+    "DeleteSnapshotResponse"
+    "fixture/DeleteSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSnapshot)
+
+responseDeleteStorageVirtualMachine :: DeleteStorageVirtualMachineResponse -> TestTree
+responseDeleteStorageVirtualMachine =
+  res
+    "DeleteStorageVirtualMachineResponse"
+    "fixture/DeleteStorageVirtualMachineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteStorageVirtualMachine)
+
+responseDeleteVolume :: DeleteVolumeResponse -> TestTree
+responseDeleteVolume =
+  res
+    "DeleteVolumeResponse"
+    "fixture/DeleteVolumeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVolume)
+
+responseDescribeBackups :: DescribeBackupsResponse -> TestTree
+responseDescribeBackups =
+  res
+    "DescribeBackupsResponse"
+    "fixture/DescribeBackupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeBackups)
+
+responseDescribeDataRepositoryAssociations :: DescribeDataRepositoryAssociationsResponse -> TestTree
+responseDescribeDataRepositoryAssociations =
+  res
+    "DescribeDataRepositoryAssociationsResponse"
+    "fixture/DescribeDataRepositoryAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataRepositoryAssociations)
+
+responseDescribeDataRepositoryTasks :: DescribeDataRepositoryTasksResponse -> TestTree
+responseDescribeDataRepositoryTasks =
+  res
+    "DescribeDataRepositoryTasksResponse"
+    "fixture/DescribeDataRepositoryTasksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataRepositoryTasks)
+
+responseDescribeFileCaches :: DescribeFileCachesResponse -> TestTree
+responseDescribeFileCaches =
+  res
+    "DescribeFileCachesResponse"
+    "fixture/DescribeFileCachesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFileCaches)
+
+responseDescribeFileSystemAliases :: DescribeFileSystemAliasesResponse -> TestTree
+responseDescribeFileSystemAliases =
+  res
+    "DescribeFileSystemAliasesResponse"
+    "fixture/DescribeFileSystemAliasesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFileSystemAliases)
+
+responseDescribeFileSystems :: DescribeFileSystemsResponse -> TestTree
+responseDescribeFileSystems =
+  res
+    "DescribeFileSystemsResponse"
+    "fixture/DescribeFileSystemsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFileSystems)
+
+responseDescribeSnapshots :: DescribeSnapshotsResponse -> TestTree
+responseDescribeSnapshots =
+  res
+    "DescribeSnapshotsResponse"
+    "fixture/DescribeSnapshotsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeSnapshots)
+
+responseDescribeStorageVirtualMachines :: DescribeStorageVirtualMachinesResponse -> TestTree
+responseDescribeStorageVirtualMachines =
+  res
+    "DescribeStorageVirtualMachinesResponse"
+    "fixture/DescribeStorageVirtualMachinesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeStorageVirtualMachines)
+
+responseDescribeVolumes :: DescribeVolumesResponse -> TestTree
+responseDescribeVolumes =
+  res
+    "DescribeVolumesResponse"
+    "fixture/DescribeVolumesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeVolumes)
+
+responseDisassociateFileSystemAliases :: DisassociateFileSystemAliasesResponse -> TestTree
+responseDisassociateFileSystemAliases =
+  res
+    "DisassociateFileSystemAliasesResponse"
+    "fixture/DisassociateFileSystemAliasesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateFileSystemAliases)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseReleaseFileSystemNfsV3Locks :: ReleaseFileSystemNfsV3LocksResponse -> TestTree
+responseReleaseFileSystemNfsV3Locks =
+  res
+    "ReleaseFileSystemNfsV3LocksResponse"
+    "fixture/ReleaseFileSystemNfsV3LocksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ReleaseFileSystemNfsV3Locks)
+
+responseRestoreVolumeFromSnapshot :: RestoreVolumeFromSnapshotResponse -> TestTree
+responseRestoreVolumeFromSnapshot =
+  res
+    "RestoreVolumeFromSnapshotResponse"
+    "fixture/RestoreVolumeFromSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestoreVolumeFromSnapshot)
+
+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)
+
+responseUpdateDataRepositoryAssociation :: UpdateDataRepositoryAssociationResponse -> TestTree
+responseUpdateDataRepositoryAssociation =
+  res
+    "UpdateDataRepositoryAssociationResponse"
+    "fixture/UpdateDataRepositoryAssociationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDataRepositoryAssociation)
+
+responseUpdateFileCache :: UpdateFileCacheResponse -> TestTree
+responseUpdateFileCache =
+  res
+    "UpdateFileCacheResponse"
+    "fixture/UpdateFileCacheResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFileCache)
+
+responseUpdateFileSystem :: UpdateFileSystemResponse -> TestTree
+responseUpdateFileSystem =
+  res
+    "UpdateFileSystemResponse"
+    "fixture/UpdateFileSystemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFileSystem)
+
+responseUpdateSnapshot :: UpdateSnapshotResponse -> TestTree
+responseUpdateSnapshot =
+  res
+    "UpdateSnapshotResponse"
+    "fixture/UpdateSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSnapshot)
+
+responseUpdateStorageVirtualMachine :: UpdateStorageVirtualMachineResponse -> TestTree
+responseUpdateStorageVirtualMachine =
+  res
+    "UpdateStorageVirtualMachineResponse"
+    "fixture/UpdateStorageVirtualMachineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateStorageVirtualMachine)
+
+responseUpdateVolume :: UpdateVolumeResponse -> TestTree
+responseUpdateVolume =
+  res
+    "UpdateVolumeResponse"
+    "fixture/UpdateVolumeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateVolume)
