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 Appflow SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2020-08-23@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-appflow)
+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.AppFlow](http://hackage.haskell.org/package/amazonka-appflow/docs/Amazonka-AppFlow.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-appflow` 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-appflow.cabal b/amazonka-appflow.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-appflow.cabal
@@ -0,0 +1,290 @@
+cabal-version:      2.2
+name:               amazonka-appflow
+version:            2.0
+synopsis:           Amazon Appflow SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2020-08-23@ 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.AppFlow.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.AppFlow" 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-appflow
+
+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.AppFlow
+    Amazonka.AppFlow.CreateConnectorProfile
+    Amazonka.AppFlow.CreateFlow
+    Amazonka.AppFlow.DeleteConnectorProfile
+    Amazonka.AppFlow.DeleteFlow
+    Amazonka.AppFlow.DescribeConnector
+    Amazonka.AppFlow.DescribeConnectorEntity
+    Amazonka.AppFlow.DescribeConnectorProfiles
+    Amazonka.AppFlow.DescribeConnectors
+    Amazonka.AppFlow.DescribeFlow
+    Amazonka.AppFlow.DescribeFlowExecutionRecords
+    Amazonka.AppFlow.Lens
+    Amazonka.AppFlow.ListConnectorEntities
+    Amazonka.AppFlow.ListConnectors
+    Amazonka.AppFlow.ListFlows
+    Amazonka.AppFlow.ListTagsForResource
+    Amazonka.AppFlow.RegisterConnector
+    Amazonka.AppFlow.StartFlow
+    Amazonka.AppFlow.StopFlow
+    Amazonka.AppFlow.TagResource
+    Amazonka.AppFlow.Types
+    Amazonka.AppFlow.Types.AggregationConfig
+    Amazonka.AppFlow.Types.AggregationType
+    Amazonka.AppFlow.Types.AmplitudeConnectorOperator
+    Amazonka.AppFlow.Types.AmplitudeConnectorProfileCredentials
+    Amazonka.AppFlow.Types.AmplitudeConnectorProfileProperties
+    Amazonka.AppFlow.Types.AmplitudeMetadata
+    Amazonka.AppFlow.Types.AmplitudeSourceProperties
+    Amazonka.AppFlow.Types.ApiKeyCredentials
+    Amazonka.AppFlow.Types.AuthenticationConfig
+    Amazonka.AppFlow.Types.AuthenticationType
+    Amazonka.AppFlow.Types.AuthParameter
+    Amazonka.AppFlow.Types.BasicAuthCredentials
+    Amazonka.AppFlow.Types.CatalogType
+    Amazonka.AppFlow.Types.ConnectionMode
+    Amazonka.AppFlow.Types.ConnectorConfiguration
+    Amazonka.AppFlow.Types.ConnectorDetail
+    Amazonka.AppFlow.Types.ConnectorEntity
+    Amazonka.AppFlow.Types.ConnectorEntityField
+    Amazonka.AppFlow.Types.ConnectorMetadata
+    Amazonka.AppFlow.Types.ConnectorOAuthRequest
+    Amazonka.AppFlow.Types.ConnectorOperator
+    Amazonka.AppFlow.Types.ConnectorProfile
+    Amazonka.AppFlow.Types.ConnectorProfileConfig
+    Amazonka.AppFlow.Types.ConnectorProfileCredentials
+    Amazonka.AppFlow.Types.ConnectorProfileProperties
+    Amazonka.AppFlow.Types.ConnectorProvisioningConfig
+    Amazonka.AppFlow.Types.ConnectorProvisioningType
+    Amazonka.AppFlow.Types.ConnectorRuntimeSetting
+    Amazonka.AppFlow.Types.ConnectorType
+    Amazonka.AppFlow.Types.CustomAuthConfig
+    Amazonka.AppFlow.Types.CustomAuthCredentials
+    Amazonka.AppFlow.Types.CustomConnectorDestinationProperties
+    Amazonka.AppFlow.Types.CustomConnectorProfileCredentials
+    Amazonka.AppFlow.Types.CustomConnectorProfileProperties
+    Amazonka.AppFlow.Types.CustomConnectorSourceProperties
+    Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
+    Amazonka.AppFlow.Types.CustomerProfilesMetadata
+    Amazonka.AppFlow.Types.DatadogConnectorOperator
+    Amazonka.AppFlow.Types.DatadogConnectorProfileCredentials
+    Amazonka.AppFlow.Types.DatadogConnectorProfileProperties
+    Amazonka.AppFlow.Types.DatadogMetadata
+    Amazonka.AppFlow.Types.DatadogSourceProperties
+    Amazonka.AppFlow.Types.DataPullMode
+    Amazonka.AppFlow.Types.DestinationConnectorProperties
+    Amazonka.AppFlow.Types.DestinationFieldProperties
+    Amazonka.AppFlow.Types.DestinationFlowConfig
+    Amazonka.AppFlow.Types.DynatraceConnectorOperator
+    Amazonka.AppFlow.Types.DynatraceConnectorProfileCredentials
+    Amazonka.AppFlow.Types.DynatraceConnectorProfileProperties
+    Amazonka.AppFlow.Types.DynatraceMetadata
+    Amazonka.AppFlow.Types.DynatraceSourceProperties
+    Amazonka.AppFlow.Types.ErrorHandlingConfig
+    Amazonka.AppFlow.Types.ErrorInfo
+    Amazonka.AppFlow.Types.EventBridgeDestinationProperties
+    Amazonka.AppFlow.Types.EventBridgeMetadata
+    Amazonka.AppFlow.Types.ExecutionDetails
+    Amazonka.AppFlow.Types.ExecutionRecord
+    Amazonka.AppFlow.Types.ExecutionResult
+    Amazonka.AppFlow.Types.ExecutionStatus
+    Amazonka.AppFlow.Types.FieldTypeDetails
+    Amazonka.AppFlow.Types.FileType
+    Amazonka.AppFlow.Types.FlowDefinition
+    Amazonka.AppFlow.Types.FlowStatus
+    Amazonka.AppFlow.Types.GlueDataCatalogConfig
+    Amazonka.AppFlow.Types.GoogleAnalyticsConnectorOperator
+    Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileCredentials
+    Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileProperties
+    Amazonka.AppFlow.Types.GoogleAnalyticsMetadata
+    Amazonka.AppFlow.Types.GoogleAnalyticsSourceProperties
+    Amazonka.AppFlow.Types.HoneycodeConnectorProfileCredentials
+    Amazonka.AppFlow.Types.HoneycodeConnectorProfileProperties
+    Amazonka.AppFlow.Types.HoneycodeDestinationProperties
+    Amazonka.AppFlow.Types.HoneycodeMetadata
+    Amazonka.AppFlow.Types.IncrementalPullConfig
+    Amazonka.AppFlow.Types.InforNexusConnectorOperator
+    Amazonka.AppFlow.Types.InforNexusConnectorProfileCredentials
+    Amazonka.AppFlow.Types.InforNexusConnectorProfileProperties
+    Amazonka.AppFlow.Types.InforNexusMetadata
+    Amazonka.AppFlow.Types.InforNexusSourceProperties
+    Amazonka.AppFlow.Types.LambdaConnectorProvisioningConfig
+    Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
+    Amazonka.AppFlow.Types.MarketoConnectorOperator
+    Amazonka.AppFlow.Types.MarketoConnectorProfileCredentials
+    Amazonka.AppFlow.Types.MarketoConnectorProfileProperties
+    Amazonka.AppFlow.Types.MarketoDestinationProperties
+    Amazonka.AppFlow.Types.MarketoMetadata
+    Amazonka.AppFlow.Types.MarketoSourceProperties
+    Amazonka.AppFlow.Types.MetadataCatalogConfig
+    Amazonka.AppFlow.Types.MetadataCatalogDetail
+    Amazonka.AppFlow.Types.OAuth2Credentials
+    Amazonka.AppFlow.Types.OAuth2CustomParameter
+    Amazonka.AppFlow.Types.OAuth2CustomPropType
+    Amazonka.AppFlow.Types.OAuth2Defaults
+    Amazonka.AppFlow.Types.OAuth2GrantType
+    Amazonka.AppFlow.Types.OAuth2Properties
+    Amazonka.AppFlow.Types.OAuthCredentials
+    Amazonka.AppFlow.Types.OAuthProperties
+    Amazonka.AppFlow.Types.Operator
+    Amazonka.AppFlow.Types.OperatorPropertiesKeys
+    Amazonka.AppFlow.Types.Operators
+    Amazonka.AppFlow.Types.PathPrefix
+    Amazonka.AppFlow.Types.PrefixConfig
+    Amazonka.AppFlow.Types.PrefixFormat
+    Amazonka.AppFlow.Types.PrefixType
+    Amazonka.AppFlow.Types.PrivateConnectionProvisioningFailureCause
+    Amazonka.AppFlow.Types.PrivateConnectionProvisioningState
+    Amazonka.AppFlow.Types.PrivateConnectionProvisioningStatus
+    Amazonka.AppFlow.Types.Range
+    Amazonka.AppFlow.Types.RedshiftConnectorProfileCredentials
+    Amazonka.AppFlow.Types.RedshiftConnectorProfileProperties
+    Amazonka.AppFlow.Types.RedshiftDestinationProperties
+    Amazonka.AppFlow.Types.RedshiftMetadata
+    Amazonka.AppFlow.Types.RegistrationOutput
+    Amazonka.AppFlow.Types.S3ConnectorOperator
+    Amazonka.AppFlow.Types.S3DestinationProperties
+    Amazonka.AppFlow.Types.S3InputFileType
+    Amazonka.AppFlow.Types.S3InputFormatConfig
+    Amazonka.AppFlow.Types.S3Metadata
+    Amazonka.AppFlow.Types.S3OutputFormatConfig
+    Amazonka.AppFlow.Types.S3SourceProperties
+    Amazonka.AppFlow.Types.SalesforceConnectorOperator
+    Amazonka.AppFlow.Types.SalesforceConnectorProfileCredentials
+    Amazonka.AppFlow.Types.SalesforceConnectorProfileProperties
+    Amazonka.AppFlow.Types.SalesforceDataTransferApi
+    Amazonka.AppFlow.Types.SalesforceDestinationProperties
+    Amazonka.AppFlow.Types.SalesforceMetadata
+    Amazonka.AppFlow.Types.SalesforceSourceProperties
+    Amazonka.AppFlow.Types.SAPODataConnectorOperator
+    Amazonka.AppFlow.Types.SAPODataConnectorProfileCredentials
+    Amazonka.AppFlow.Types.SAPODataConnectorProfileProperties
+    Amazonka.AppFlow.Types.SAPODataDestinationProperties
+    Amazonka.AppFlow.Types.SAPODataMetadata
+    Amazonka.AppFlow.Types.SAPODataSourceProperties
+    Amazonka.AppFlow.Types.ScheduledTriggerProperties
+    Amazonka.AppFlow.Types.ScheduleFrequencyType
+    Amazonka.AppFlow.Types.ServiceNowConnectorOperator
+    Amazonka.AppFlow.Types.ServiceNowConnectorProfileCredentials
+    Amazonka.AppFlow.Types.ServiceNowConnectorProfileProperties
+    Amazonka.AppFlow.Types.ServiceNowMetadata
+    Amazonka.AppFlow.Types.ServiceNowSourceProperties
+    Amazonka.AppFlow.Types.SingularConnectorOperator
+    Amazonka.AppFlow.Types.SingularConnectorProfileCredentials
+    Amazonka.AppFlow.Types.SingularConnectorProfileProperties
+    Amazonka.AppFlow.Types.SingularMetadata
+    Amazonka.AppFlow.Types.SingularSourceProperties
+    Amazonka.AppFlow.Types.SlackConnectorOperator
+    Amazonka.AppFlow.Types.SlackConnectorProfileCredentials
+    Amazonka.AppFlow.Types.SlackConnectorProfileProperties
+    Amazonka.AppFlow.Types.SlackMetadata
+    Amazonka.AppFlow.Types.SlackSourceProperties
+    Amazonka.AppFlow.Types.SnowflakeConnectorProfileCredentials
+    Amazonka.AppFlow.Types.SnowflakeConnectorProfileProperties
+    Amazonka.AppFlow.Types.SnowflakeDestinationProperties
+    Amazonka.AppFlow.Types.SnowflakeMetadata
+    Amazonka.AppFlow.Types.SourceConnectorProperties
+    Amazonka.AppFlow.Types.SourceFieldProperties
+    Amazonka.AppFlow.Types.SourceFlowConfig
+    Amazonka.AppFlow.Types.SuccessResponseHandlingConfig
+    Amazonka.AppFlow.Types.SupportedFieldTypeDetails
+    Amazonka.AppFlow.Types.Task
+    Amazonka.AppFlow.Types.TaskType
+    Amazonka.AppFlow.Types.TrendmicroConnectorOperator
+    Amazonka.AppFlow.Types.TrendmicroConnectorProfileCredentials
+    Amazonka.AppFlow.Types.TrendmicroConnectorProfileProperties
+    Amazonka.AppFlow.Types.TrendmicroMetadata
+    Amazonka.AppFlow.Types.TrendmicroSourceProperties
+    Amazonka.AppFlow.Types.TriggerConfig
+    Amazonka.AppFlow.Types.TriggerProperties
+    Amazonka.AppFlow.Types.TriggerType
+    Amazonka.AppFlow.Types.UpsolverDestinationProperties
+    Amazonka.AppFlow.Types.UpsolverMetadata
+    Amazonka.AppFlow.Types.UpsolverS3OutputFormatConfig
+    Amazonka.AppFlow.Types.VeevaConnectorOperator
+    Amazonka.AppFlow.Types.VeevaConnectorProfileCredentials
+    Amazonka.AppFlow.Types.VeevaConnectorProfileProperties
+    Amazonka.AppFlow.Types.VeevaMetadata
+    Amazonka.AppFlow.Types.VeevaSourceProperties
+    Amazonka.AppFlow.Types.WriteOperationType
+    Amazonka.AppFlow.Types.ZendeskConnectorOperator
+    Amazonka.AppFlow.Types.ZendeskConnectorProfileCredentials
+    Amazonka.AppFlow.Types.ZendeskConnectorProfileProperties
+    Amazonka.AppFlow.Types.ZendeskDestinationProperties
+    Amazonka.AppFlow.Types.ZendeskMetadata
+    Amazonka.AppFlow.Types.ZendeskSourceProperties
+    Amazonka.AppFlow.UnregisterConnector
+    Amazonka.AppFlow.UntagResource
+    Amazonka.AppFlow.UpdateConnectorProfile
+    Amazonka.AppFlow.UpdateConnectorRegistration
+    Amazonka.AppFlow.UpdateFlow
+    Amazonka.AppFlow.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-appflow-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.AppFlow
+    Test.Amazonka.AppFlow.Internal
+    Test.Amazonka.Gen.AppFlow
+
+  build-depends:
+    , amazonka-appflow
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateConnectorProfile.yaml b/fixture/CreateConnectorProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectorProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/CreateConnectorProfileResponse.proto b/fixture/CreateConnectorProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectorProfileResponse.proto
diff --git a/fixture/CreateFlow.yaml b/fixture/CreateFlow.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFlow.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/CreateFlowResponse.proto b/fixture/CreateFlowResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFlowResponse.proto
diff --git a/fixture/DeleteConnectorProfile.yaml b/fixture/DeleteConnectorProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConnectorProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DeleteConnectorProfileResponse.proto b/fixture/DeleteConnectorProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConnectorProfileResponse.proto
diff --git a/fixture/DeleteFlow.yaml b/fixture/DeleteFlow.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFlow.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DeleteFlowResponse.proto b/fixture/DeleteFlowResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFlowResponse.proto
diff --git a/fixture/DescribeConnector.yaml b/fixture/DescribeConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DescribeConnectorEntity.yaml b/fixture/DescribeConnectorEntity.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectorEntity.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DescribeConnectorEntityResponse.proto b/fixture/DescribeConnectorEntityResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectorEntityResponse.proto
diff --git a/fixture/DescribeConnectorProfiles.yaml b/fixture/DescribeConnectorProfiles.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectorProfiles.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DescribeConnectorProfilesResponse.proto b/fixture/DescribeConnectorProfilesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectorProfilesResponse.proto
diff --git a/fixture/DescribeConnectorResponse.proto b/fixture/DescribeConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectorResponse.proto
diff --git a/fixture/DescribeConnectors.yaml b/fixture/DescribeConnectors.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectors.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DescribeConnectorsResponse.proto b/fixture/DescribeConnectorsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectorsResponse.proto
diff --git a/fixture/DescribeFlow.yaml b/fixture/DescribeFlow.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFlow.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DescribeFlowExecutionRecords.yaml b/fixture/DescribeFlowExecutionRecords.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFlowExecutionRecords.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/DescribeFlowExecutionRecordsResponse.proto b/fixture/DescribeFlowExecutionRecordsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFlowExecutionRecordsResponse.proto
diff --git a/fixture/DescribeFlowResponse.proto b/fixture/DescribeFlowResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFlowResponse.proto
diff --git a/fixture/ListConnectorEntities.yaml b/fixture/ListConnectorEntities.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListConnectorEntities.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/ListConnectorEntitiesResponse.proto b/fixture/ListConnectorEntitiesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListConnectorEntitiesResponse.proto
diff --git a/fixture/ListConnectors.yaml b/fixture/ListConnectors.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListConnectors.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/ListConnectorsResponse.proto b/fixture/ListConnectorsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListConnectorsResponse.proto
diff --git a/fixture/ListFlows.yaml b/fixture/ListFlows.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFlows.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/ListFlowsResponse.proto b/fixture/ListFlowsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFlowsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/RegisterConnector.yaml b/fixture/RegisterConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/RegisterConnectorResponse.proto b/fixture/RegisterConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterConnectorResponse.proto
diff --git a/fixture/StartFlow.yaml b/fixture/StartFlow.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartFlow.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/StartFlowResponse.proto b/fixture/StartFlowResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartFlowResponse.proto
diff --git a/fixture/StopFlow.yaml b/fixture/StopFlow.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopFlow.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/StopFlowResponse.proto b/fixture/StopFlowResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopFlowResponse.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/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/UnregisterConnector.yaml b/fixture/UnregisterConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UnregisterConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/UnregisterConnectorResponse.proto b/fixture/UnregisterConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UnregisterConnectorResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/UpdateConnectorProfile.yaml b/fixture/UpdateConnectorProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConnectorProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/UpdateConnectorProfileResponse.proto b/fixture/UpdateConnectorProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConnectorProfileResponse.proto
diff --git a/fixture/UpdateConnectorRegistration.yaml b/fixture/UpdateConnectorRegistration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConnectorRegistration.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/UpdateConnectorRegistrationResponse.proto b/fixture/UpdateConnectorRegistrationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConnectorRegistrationResponse.proto
diff --git a/fixture/UpdateFlow.yaml b/fixture/UpdateFlow.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFlow.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appflow/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appflow.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/UpdateFlowResponse.proto b/fixture/UpdateFlowResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFlowResponse.proto
diff --git a/gen/Amazonka/AppFlow.hs b/gen/Amazonka/AppFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow.hs
@@ -0,0 +1,979 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.AppFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2020-08-23@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Welcome to the Amazon AppFlow API reference. This guide is for
+-- developers who need detailed information about the Amazon AppFlow API
+-- operations, data types, and errors.
+--
+-- Amazon AppFlow is a fully managed integration service that enables you
+-- to securely transfer data between software as a service (SaaS)
+-- applications like Salesforce, Marketo, Slack, and ServiceNow, and Amazon
+-- Web Services like Amazon S3 and Amazon Redshift.
+--
+-- Use the following links to get started on the Amazon AppFlow API:
+--
+-- -   <https://docs.aws.amazon.com/appflow/1.0/APIReference/API_Operations.html Actions>:
+--     An alphabetical list of all Amazon AppFlow API operations.
+--
+-- -   <https://docs.aws.amazon.com/appflow/1.0/APIReference/API_Types.html Data types>:
+--     An alphabetical list of all Amazon AppFlow data types.
+--
+-- -   <https://docs.aws.amazon.com/appflow/1.0/APIReference/CommonParameters.html Common parameters>:
+--     Parameters that all Query operations can use.
+--
+-- -   <https://docs.aws.amazon.com/appflow/1.0/APIReference/CommonErrors.html Common errors>:
+--     Client and server errors that all operations can return.
+--
+-- If you\'re new to Amazon AppFlow, we recommend that you review the
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html Amazon AppFlow User Guide>.
+--
+-- Amazon AppFlow API users can use vendor-specific mechanisms for OAuth,
+-- and include applicable OAuth attributes (such as @auth-code@ and
+-- @redirecturi@) with the connector-specific @ConnectorProfileProperties@
+-- when creating a new connector profile using Amazon AppFlow API
+-- operations. For example, Salesforce users can refer to the
+-- <https://help.salesforce.com/articleView?id=remoteaccess_authenticate.htm Authorize Apps with OAuth>
+-- documentation.
+module Amazonka.AppFlow
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** ConnectorAuthenticationException
+    _ConnectorAuthenticationException,
+
+    -- ** ConnectorServerException
+    _ConnectorServerException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** UnsupportedOperationException
+    _UnsupportedOperationException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateConnectorProfile
+    CreateConnectorProfile (CreateConnectorProfile'),
+    newCreateConnectorProfile,
+    CreateConnectorProfileResponse (CreateConnectorProfileResponse'),
+    newCreateConnectorProfileResponse,
+
+    -- ** CreateFlow
+    CreateFlow (CreateFlow'),
+    newCreateFlow,
+    CreateFlowResponse (CreateFlowResponse'),
+    newCreateFlowResponse,
+
+    -- ** DeleteConnectorProfile
+    DeleteConnectorProfile (DeleteConnectorProfile'),
+    newDeleteConnectorProfile,
+    DeleteConnectorProfileResponse (DeleteConnectorProfileResponse'),
+    newDeleteConnectorProfileResponse,
+
+    -- ** DeleteFlow
+    DeleteFlow (DeleteFlow'),
+    newDeleteFlow,
+    DeleteFlowResponse (DeleteFlowResponse'),
+    newDeleteFlowResponse,
+
+    -- ** DescribeConnector
+    DescribeConnector (DescribeConnector'),
+    newDescribeConnector,
+    DescribeConnectorResponse (DescribeConnectorResponse'),
+    newDescribeConnectorResponse,
+
+    -- ** DescribeConnectorEntity
+    DescribeConnectorEntity (DescribeConnectorEntity'),
+    newDescribeConnectorEntity,
+    DescribeConnectorEntityResponse (DescribeConnectorEntityResponse'),
+    newDescribeConnectorEntityResponse,
+
+    -- ** DescribeConnectorProfiles
+    DescribeConnectorProfiles (DescribeConnectorProfiles'),
+    newDescribeConnectorProfiles,
+    DescribeConnectorProfilesResponse (DescribeConnectorProfilesResponse'),
+    newDescribeConnectorProfilesResponse,
+
+    -- ** DescribeConnectors
+    DescribeConnectors (DescribeConnectors'),
+    newDescribeConnectors,
+    DescribeConnectorsResponse (DescribeConnectorsResponse'),
+    newDescribeConnectorsResponse,
+
+    -- ** DescribeFlow
+    DescribeFlow (DescribeFlow'),
+    newDescribeFlow,
+    DescribeFlowResponse (DescribeFlowResponse'),
+    newDescribeFlowResponse,
+
+    -- ** DescribeFlowExecutionRecords
+    DescribeFlowExecutionRecords (DescribeFlowExecutionRecords'),
+    newDescribeFlowExecutionRecords,
+    DescribeFlowExecutionRecordsResponse (DescribeFlowExecutionRecordsResponse'),
+    newDescribeFlowExecutionRecordsResponse,
+
+    -- ** ListConnectorEntities
+    ListConnectorEntities (ListConnectorEntities'),
+    newListConnectorEntities,
+    ListConnectorEntitiesResponse (ListConnectorEntitiesResponse'),
+    newListConnectorEntitiesResponse,
+
+    -- ** ListConnectors
+    ListConnectors (ListConnectors'),
+    newListConnectors,
+    ListConnectorsResponse (ListConnectorsResponse'),
+    newListConnectorsResponse,
+
+    -- ** ListFlows
+    ListFlows (ListFlows'),
+    newListFlows,
+    ListFlowsResponse (ListFlowsResponse'),
+    newListFlowsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** RegisterConnector
+    RegisterConnector (RegisterConnector'),
+    newRegisterConnector,
+    RegisterConnectorResponse (RegisterConnectorResponse'),
+    newRegisterConnectorResponse,
+
+    -- ** StartFlow
+    StartFlow (StartFlow'),
+    newStartFlow,
+    StartFlowResponse (StartFlowResponse'),
+    newStartFlowResponse,
+
+    -- ** StopFlow
+    StopFlow (StopFlow'),
+    newStopFlow,
+    StopFlowResponse (StopFlowResponse'),
+    newStopFlowResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UnregisterConnector
+    UnregisterConnector (UnregisterConnector'),
+    newUnregisterConnector,
+    UnregisterConnectorResponse (UnregisterConnectorResponse'),
+    newUnregisterConnectorResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateConnectorProfile
+    UpdateConnectorProfile (UpdateConnectorProfile'),
+    newUpdateConnectorProfile,
+    UpdateConnectorProfileResponse (UpdateConnectorProfileResponse'),
+    newUpdateConnectorProfileResponse,
+
+    -- ** UpdateConnectorRegistration
+    UpdateConnectorRegistration (UpdateConnectorRegistration'),
+    newUpdateConnectorRegistration,
+    UpdateConnectorRegistrationResponse (UpdateConnectorRegistrationResponse'),
+    newUpdateConnectorRegistrationResponse,
+
+    -- ** UpdateFlow
+    UpdateFlow (UpdateFlow'),
+    newUpdateFlow,
+    UpdateFlowResponse (UpdateFlowResponse'),
+    newUpdateFlowResponse,
+
+    -- * Types
+
+    -- ** AggregationType
+    AggregationType (..),
+
+    -- ** AmplitudeConnectorOperator
+    AmplitudeConnectorOperator (..),
+
+    -- ** AuthenticationType
+    AuthenticationType (..),
+
+    -- ** CatalogType
+    CatalogType (..),
+
+    -- ** ConnectionMode
+    ConnectionMode (..),
+
+    -- ** ConnectorProvisioningType
+    ConnectorProvisioningType (..),
+
+    -- ** ConnectorType
+    ConnectorType (..),
+
+    -- ** DataPullMode
+    DataPullMode (..),
+
+    -- ** DatadogConnectorOperator
+    DatadogConnectorOperator (..),
+
+    -- ** DynatraceConnectorOperator
+    DynatraceConnectorOperator (..),
+
+    -- ** ExecutionStatus
+    ExecutionStatus (..),
+
+    -- ** FileType
+    FileType (..),
+
+    -- ** FlowStatus
+    FlowStatus (..),
+
+    -- ** GoogleAnalyticsConnectorOperator
+    GoogleAnalyticsConnectorOperator (..),
+
+    -- ** InforNexusConnectorOperator
+    InforNexusConnectorOperator (..),
+
+    -- ** MarketoConnectorOperator
+    MarketoConnectorOperator (..),
+
+    -- ** OAuth2CustomPropType
+    OAuth2CustomPropType (..),
+
+    -- ** OAuth2GrantType
+    OAuth2GrantType (..),
+
+    -- ** Operator
+    Operator (..),
+
+    -- ** OperatorPropertiesKeys
+    OperatorPropertiesKeys (..),
+
+    -- ** Operators
+    Operators (..),
+
+    -- ** PathPrefix
+    PathPrefix (..),
+
+    -- ** PrefixFormat
+    PrefixFormat (..),
+
+    -- ** PrefixType
+    PrefixType (..),
+
+    -- ** PrivateConnectionProvisioningFailureCause
+    PrivateConnectionProvisioningFailureCause (..),
+
+    -- ** PrivateConnectionProvisioningStatus
+    PrivateConnectionProvisioningStatus (..),
+
+    -- ** S3ConnectorOperator
+    S3ConnectorOperator (..),
+
+    -- ** S3InputFileType
+    S3InputFileType (..),
+
+    -- ** SAPODataConnectorOperator
+    SAPODataConnectorOperator (..),
+
+    -- ** SalesforceConnectorOperator
+    SalesforceConnectorOperator (..),
+
+    -- ** SalesforceDataTransferApi
+    SalesforceDataTransferApi (..),
+
+    -- ** ScheduleFrequencyType
+    ScheduleFrequencyType (..),
+
+    -- ** ServiceNowConnectorOperator
+    ServiceNowConnectorOperator (..),
+
+    -- ** SingularConnectorOperator
+    SingularConnectorOperator (..),
+
+    -- ** SlackConnectorOperator
+    SlackConnectorOperator (..),
+
+    -- ** TaskType
+    TaskType (..),
+
+    -- ** TrendmicroConnectorOperator
+    TrendmicroConnectorOperator (..),
+
+    -- ** TriggerType
+    TriggerType (..),
+
+    -- ** VeevaConnectorOperator
+    VeevaConnectorOperator (..),
+
+    -- ** WriteOperationType
+    WriteOperationType (..),
+
+    -- ** ZendeskConnectorOperator
+    ZendeskConnectorOperator (..),
+
+    -- ** AggregationConfig
+    AggregationConfig (AggregationConfig'),
+    newAggregationConfig,
+
+    -- ** AmplitudeConnectorProfileCredentials
+    AmplitudeConnectorProfileCredentials (AmplitudeConnectorProfileCredentials'),
+    newAmplitudeConnectorProfileCredentials,
+
+    -- ** AmplitudeConnectorProfileProperties
+    AmplitudeConnectorProfileProperties (AmplitudeConnectorProfileProperties'),
+    newAmplitudeConnectorProfileProperties,
+
+    -- ** AmplitudeMetadata
+    AmplitudeMetadata (AmplitudeMetadata'),
+    newAmplitudeMetadata,
+
+    -- ** AmplitudeSourceProperties
+    AmplitudeSourceProperties (AmplitudeSourceProperties'),
+    newAmplitudeSourceProperties,
+
+    -- ** ApiKeyCredentials
+    ApiKeyCredentials (ApiKeyCredentials'),
+    newApiKeyCredentials,
+
+    -- ** AuthParameter
+    AuthParameter (AuthParameter'),
+    newAuthParameter,
+
+    -- ** AuthenticationConfig
+    AuthenticationConfig (AuthenticationConfig'),
+    newAuthenticationConfig,
+
+    -- ** BasicAuthCredentials
+    BasicAuthCredentials (BasicAuthCredentials'),
+    newBasicAuthCredentials,
+
+    -- ** ConnectorConfiguration
+    ConnectorConfiguration (ConnectorConfiguration'),
+    newConnectorConfiguration,
+
+    -- ** ConnectorDetail
+    ConnectorDetail (ConnectorDetail'),
+    newConnectorDetail,
+
+    -- ** ConnectorEntity
+    ConnectorEntity (ConnectorEntity'),
+    newConnectorEntity,
+
+    -- ** ConnectorEntityField
+    ConnectorEntityField (ConnectorEntityField'),
+    newConnectorEntityField,
+
+    -- ** ConnectorMetadata
+    ConnectorMetadata (ConnectorMetadata'),
+    newConnectorMetadata,
+
+    -- ** ConnectorOAuthRequest
+    ConnectorOAuthRequest (ConnectorOAuthRequest'),
+    newConnectorOAuthRequest,
+
+    -- ** ConnectorOperator
+    ConnectorOperator (ConnectorOperator'),
+    newConnectorOperator,
+
+    -- ** ConnectorProfile
+    ConnectorProfile (ConnectorProfile'),
+    newConnectorProfile,
+
+    -- ** ConnectorProfileConfig
+    ConnectorProfileConfig (ConnectorProfileConfig'),
+    newConnectorProfileConfig,
+
+    -- ** ConnectorProfileCredentials
+    ConnectorProfileCredentials (ConnectorProfileCredentials'),
+    newConnectorProfileCredentials,
+
+    -- ** ConnectorProfileProperties
+    ConnectorProfileProperties (ConnectorProfileProperties'),
+    newConnectorProfileProperties,
+
+    -- ** ConnectorProvisioningConfig
+    ConnectorProvisioningConfig (ConnectorProvisioningConfig'),
+    newConnectorProvisioningConfig,
+
+    -- ** ConnectorRuntimeSetting
+    ConnectorRuntimeSetting (ConnectorRuntimeSetting'),
+    newConnectorRuntimeSetting,
+
+    -- ** CustomAuthConfig
+    CustomAuthConfig (CustomAuthConfig'),
+    newCustomAuthConfig,
+
+    -- ** CustomAuthCredentials
+    CustomAuthCredentials (CustomAuthCredentials'),
+    newCustomAuthCredentials,
+
+    -- ** CustomConnectorDestinationProperties
+    CustomConnectorDestinationProperties (CustomConnectorDestinationProperties'),
+    newCustomConnectorDestinationProperties,
+
+    -- ** CustomConnectorProfileCredentials
+    CustomConnectorProfileCredentials (CustomConnectorProfileCredentials'),
+    newCustomConnectorProfileCredentials,
+
+    -- ** CustomConnectorProfileProperties
+    CustomConnectorProfileProperties (CustomConnectorProfileProperties'),
+    newCustomConnectorProfileProperties,
+
+    -- ** CustomConnectorSourceProperties
+    CustomConnectorSourceProperties (CustomConnectorSourceProperties'),
+    newCustomConnectorSourceProperties,
+
+    -- ** CustomerProfilesDestinationProperties
+    CustomerProfilesDestinationProperties (CustomerProfilesDestinationProperties'),
+    newCustomerProfilesDestinationProperties,
+
+    -- ** CustomerProfilesMetadata
+    CustomerProfilesMetadata (CustomerProfilesMetadata'),
+    newCustomerProfilesMetadata,
+
+    -- ** DatadogConnectorProfileCredentials
+    DatadogConnectorProfileCredentials (DatadogConnectorProfileCredentials'),
+    newDatadogConnectorProfileCredentials,
+
+    -- ** DatadogConnectorProfileProperties
+    DatadogConnectorProfileProperties (DatadogConnectorProfileProperties'),
+    newDatadogConnectorProfileProperties,
+
+    -- ** DatadogMetadata
+    DatadogMetadata (DatadogMetadata'),
+    newDatadogMetadata,
+
+    -- ** DatadogSourceProperties
+    DatadogSourceProperties (DatadogSourceProperties'),
+    newDatadogSourceProperties,
+
+    -- ** DestinationConnectorProperties
+    DestinationConnectorProperties (DestinationConnectorProperties'),
+    newDestinationConnectorProperties,
+
+    -- ** DestinationFieldProperties
+    DestinationFieldProperties (DestinationFieldProperties'),
+    newDestinationFieldProperties,
+
+    -- ** DestinationFlowConfig
+    DestinationFlowConfig (DestinationFlowConfig'),
+    newDestinationFlowConfig,
+
+    -- ** DynatraceConnectorProfileCredentials
+    DynatraceConnectorProfileCredentials (DynatraceConnectorProfileCredentials'),
+    newDynatraceConnectorProfileCredentials,
+
+    -- ** DynatraceConnectorProfileProperties
+    DynatraceConnectorProfileProperties (DynatraceConnectorProfileProperties'),
+    newDynatraceConnectorProfileProperties,
+
+    -- ** DynatraceMetadata
+    DynatraceMetadata (DynatraceMetadata'),
+    newDynatraceMetadata,
+
+    -- ** DynatraceSourceProperties
+    DynatraceSourceProperties (DynatraceSourceProperties'),
+    newDynatraceSourceProperties,
+
+    -- ** ErrorHandlingConfig
+    ErrorHandlingConfig (ErrorHandlingConfig'),
+    newErrorHandlingConfig,
+
+    -- ** ErrorInfo
+    ErrorInfo (ErrorInfo'),
+    newErrorInfo,
+
+    -- ** EventBridgeDestinationProperties
+    EventBridgeDestinationProperties (EventBridgeDestinationProperties'),
+    newEventBridgeDestinationProperties,
+
+    -- ** EventBridgeMetadata
+    EventBridgeMetadata (EventBridgeMetadata'),
+    newEventBridgeMetadata,
+
+    -- ** ExecutionDetails
+    ExecutionDetails (ExecutionDetails'),
+    newExecutionDetails,
+
+    -- ** ExecutionRecord
+    ExecutionRecord (ExecutionRecord'),
+    newExecutionRecord,
+
+    -- ** ExecutionResult
+    ExecutionResult (ExecutionResult'),
+    newExecutionResult,
+
+    -- ** FieldTypeDetails
+    FieldTypeDetails (FieldTypeDetails'),
+    newFieldTypeDetails,
+
+    -- ** FlowDefinition
+    FlowDefinition (FlowDefinition'),
+    newFlowDefinition,
+
+    -- ** GlueDataCatalogConfig
+    GlueDataCatalogConfig (GlueDataCatalogConfig'),
+    newGlueDataCatalogConfig,
+
+    -- ** GoogleAnalyticsConnectorProfileCredentials
+    GoogleAnalyticsConnectorProfileCredentials (GoogleAnalyticsConnectorProfileCredentials'),
+    newGoogleAnalyticsConnectorProfileCredentials,
+
+    -- ** GoogleAnalyticsConnectorProfileProperties
+    GoogleAnalyticsConnectorProfileProperties (GoogleAnalyticsConnectorProfileProperties'),
+    newGoogleAnalyticsConnectorProfileProperties,
+
+    -- ** GoogleAnalyticsMetadata
+    GoogleAnalyticsMetadata (GoogleAnalyticsMetadata'),
+    newGoogleAnalyticsMetadata,
+
+    -- ** GoogleAnalyticsSourceProperties
+    GoogleAnalyticsSourceProperties (GoogleAnalyticsSourceProperties'),
+    newGoogleAnalyticsSourceProperties,
+
+    -- ** HoneycodeConnectorProfileCredentials
+    HoneycodeConnectorProfileCredentials (HoneycodeConnectorProfileCredentials'),
+    newHoneycodeConnectorProfileCredentials,
+
+    -- ** HoneycodeConnectorProfileProperties
+    HoneycodeConnectorProfileProperties (HoneycodeConnectorProfileProperties'),
+    newHoneycodeConnectorProfileProperties,
+
+    -- ** HoneycodeDestinationProperties
+    HoneycodeDestinationProperties (HoneycodeDestinationProperties'),
+    newHoneycodeDestinationProperties,
+
+    -- ** HoneycodeMetadata
+    HoneycodeMetadata (HoneycodeMetadata'),
+    newHoneycodeMetadata,
+
+    -- ** IncrementalPullConfig
+    IncrementalPullConfig (IncrementalPullConfig'),
+    newIncrementalPullConfig,
+
+    -- ** InforNexusConnectorProfileCredentials
+    InforNexusConnectorProfileCredentials (InforNexusConnectorProfileCredentials'),
+    newInforNexusConnectorProfileCredentials,
+
+    -- ** InforNexusConnectorProfileProperties
+    InforNexusConnectorProfileProperties (InforNexusConnectorProfileProperties'),
+    newInforNexusConnectorProfileProperties,
+
+    -- ** InforNexusMetadata
+    InforNexusMetadata (InforNexusMetadata'),
+    newInforNexusMetadata,
+
+    -- ** InforNexusSourceProperties
+    InforNexusSourceProperties (InforNexusSourceProperties'),
+    newInforNexusSourceProperties,
+
+    -- ** LambdaConnectorProvisioningConfig
+    LambdaConnectorProvisioningConfig (LambdaConnectorProvisioningConfig'),
+    newLambdaConnectorProvisioningConfig,
+
+    -- ** LookoutMetricsDestinationProperties
+    LookoutMetricsDestinationProperties (LookoutMetricsDestinationProperties'),
+    newLookoutMetricsDestinationProperties,
+
+    -- ** MarketoConnectorProfileCredentials
+    MarketoConnectorProfileCredentials (MarketoConnectorProfileCredentials'),
+    newMarketoConnectorProfileCredentials,
+
+    -- ** MarketoConnectorProfileProperties
+    MarketoConnectorProfileProperties (MarketoConnectorProfileProperties'),
+    newMarketoConnectorProfileProperties,
+
+    -- ** MarketoDestinationProperties
+    MarketoDestinationProperties (MarketoDestinationProperties'),
+    newMarketoDestinationProperties,
+
+    -- ** MarketoMetadata
+    MarketoMetadata (MarketoMetadata'),
+    newMarketoMetadata,
+
+    -- ** MarketoSourceProperties
+    MarketoSourceProperties (MarketoSourceProperties'),
+    newMarketoSourceProperties,
+
+    -- ** MetadataCatalogConfig
+    MetadataCatalogConfig (MetadataCatalogConfig'),
+    newMetadataCatalogConfig,
+
+    -- ** MetadataCatalogDetail
+    MetadataCatalogDetail (MetadataCatalogDetail'),
+    newMetadataCatalogDetail,
+
+    -- ** OAuth2Credentials
+    OAuth2Credentials (OAuth2Credentials'),
+    newOAuth2Credentials,
+
+    -- ** OAuth2CustomParameter
+    OAuth2CustomParameter (OAuth2CustomParameter'),
+    newOAuth2CustomParameter,
+
+    -- ** OAuth2Defaults
+    OAuth2Defaults (OAuth2Defaults'),
+    newOAuth2Defaults,
+
+    -- ** OAuth2Properties
+    OAuth2Properties (OAuth2Properties'),
+    newOAuth2Properties,
+
+    -- ** OAuthCredentials
+    OAuthCredentials (OAuthCredentials'),
+    newOAuthCredentials,
+
+    -- ** OAuthProperties
+    OAuthProperties (OAuthProperties'),
+    newOAuthProperties,
+
+    -- ** PrefixConfig
+    PrefixConfig (PrefixConfig'),
+    newPrefixConfig,
+
+    -- ** PrivateConnectionProvisioningState
+    PrivateConnectionProvisioningState (PrivateConnectionProvisioningState'),
+    newPrivateConnectionProvisioningState,
+
+    -- ** Range
+    Range (Range'),
+    newRange,
+
+    -- ** RedshiftConnectorProfileCredentials
+    RedshiftConnectorProfileCredentials (RedshiftConnectorProfileCredentials'),
+    newRedshiftConnectorProfileCredentials,
+
+    -- ** RedshiftConnectorProfileProperties
+    RedshiftConnectorProfileProperties (RedshiftConnectorProfileProperties'),
+    newRedshiftConnectorProfileProperties,
+
+    -- ** RedshiftDestinationProperties
+    RedshiftDestinationProperties (RedshiftDestinationProperties'),
+    newRedshiftDestinationProperties,
+
+    -- ** RedshiftMetadata
+    RedshiftMetadata (RedshiftMetadata'),
+    newRedshiftMetadata,
+
+    -- ** RegistrationOutput
+    RegistrationOutput (RegistrationOutput'),
+    newRegistrationOutput,
+
+    -- ** S3DestinationProperties
+    S3DestinationProperties (S3DestinationProperties'),
+    newS3DestinationProperties,
+
+    -- ** S3InputFormatConfig
+    S3InputFormatConfig (S3InputFormatConfig'),
+    newS3InputFormatConfig,
+
+    -- ** S3Metadata
+    S3Metadata (S3Metadata'),
+    newS3Metadata,
+
+    -- ** S3OutputFormatConfig
+    S3OutputFormatConfig (S3OutputFormatConfig'),
+    newS3OutputFormatConfig,
+
+    -- ** S3SourceProperties
+    S3SourceProperties (S3SourceProperties'),
+    newS3SourceProperties,
+
+    -- ** SAPODataConnectorProfileCredentials
+    SAPODataConnectorProfileCredentials (SAPODataConnectorProfileCredentials'),
+    newSAPODataConnectorProfileCredentials,
+
+    -- ** SAPODataConnectorProfileProperties
+    SAPODataConnectorProfileProperties (SAPODataConnectorProfileProperties'),
+    newSAPODataConnectorProfileProperties,
+
+    -- ** SAPODataDestinationProperties
+    SAPODataDestinationProperties (SAPODataDestinationProperties'),
+    newSAPODataDestinationProperties,
+
+    -- ** SAPODataMetadata
+    SAPODataMetadata (SAPODataMetadata'),
+    newSAPODataMetadata,
+
+    -- ** SAPODataSourceProperties
+    SAPODataSourceProperties (SAPODataSourceProperties'),
+    newSAPODataSourceProperties,
+
+    -- ** SalesforceConnectorProfileCredentials
+    SalesforceConnectorProfileCredentials (SalesforceConnectorProfileCredentials'),
+    newSalesforceConnectorProfileCredentials,
+
+    -- ** SalesforceConnectorProfileProperties
+    SalesforceConnectorProfileProperties (SalesforceConnectorProfileProperties'),
+    newSalesforceConnectorProfileProperties,
+
+    -- ** SalesforceDestinationProperties
+    SalesforceDestinationProperties (SalesforceDestinationProperties'),
+    newSalesforceDestinationProperties,
+
+    -- ** SalesforceMetadata
+    SalesforceMetadata (SalesforceMetadata'),
+    newSalesforceMetadata,
+
+    -- ** SalesforceSourceProperties
+    SalesforceSourceProperties (SalesforceSourceProperties'),
+    newSalesforceSourceProperties,
+
+    -- ** ScheduledTriggerProperties
+    ScheduledTriggerProperties (ScheduledTriggerProperties'),
+    newScheduledTriggerProperties,
+
+    -- ** ServiceNowConnectorProfileCredentials
+    ServiceNowConnectorProfileCredentials (ServiceNowConnectorProfileCredentials'),
+    newServiceNowConnectorProfileCredentials,
+
+    -- ** ServiceNowConnectorProfileProperties
+    ServiceNowConnectorProfileProperties (ServiceNowConnectorProfileProperties'),
+    newServiceNowConnectorProfileProperties,
+
+    -- ** ServiceNowMetadata
+    ServiceNowMetadata (ServiceNowMetadata'),
+    newServiceNowMetadata,
+
+    -- ** ServiceNowSourceProperties
+    ServiceNowSourceProperties (ServiceNowSourceProperties'),
+    newServiceNowSourceProperties,
+
+    -- ** SingularConnectorProfileCredentials
+    SingularConnectorProfileCredentials (SingularConnectorProfileCredentials'),
+    newSingularConnectorProfileCredentials,
+
+    -- ** SingularConnectorProfileProperties
+    SingularConnectorProfileProperties (SingularConnectorProfileProperties'),
+    newSingularConnectorProfileProperties,
+
+    -- ** SingularMetadata
+    SingularMetadata (SingularMetadata'),
+    newSingularMetadata,
+
+    -- ** SingularSourceProperties
+    SingularSourceProperties (SingularSourceProperties'),
+    newSingularSourceProperties,
+
+    -- ** SlackConnectorProfileCredentials
+    SlackConnectorProfileCredentials (SlackConnectorProfileCredentials'),
+    newSlackConnectorProfileCredentials,
+
+    -- ** SlackConnectorProfileProperties
+    SlackConnectorProfileProperties (SlackConnectorProfileProperties'),
+    newSlackConnectorProfileProperties,
+
+    -- ** SlackMetadata
+    SlackMetadata (SlackMetadata'),
+    newSlackMetadata,
+
+    -- ** SlackSourceProperties
+    SlackSourceProperties (SlackSourceProperties'),
+    newSlackSourceProperties,
+
+    -- ** SnowflakeConnectorProfileCredentials
+    SnowflakeConnectorProfileCredentials (SnowflakeConnectorProfileCredentials'),
+    newSnowflakeConnectorProfileCredentials,
+
+    -- ** SnowflakeConnectorProfileProperties
+    SnowflakeConnectorProfileProperties (SnowflakeConnectorProfileProperties'),
+    newSnowflakeConnectorProfileProperties,
+
+    -- ** SnowflakeDestinationProperties
+    SnowflakeDestinationProperties (SnowflakeDestinationProperties'),
+    newSnowflakeDestinationProperties,
+
+    -- ** SnowflakeMetadata
+    SnowflakeMetadata (SnowflakeMetadata'),
+    newSnowflakeMetadata,
+
+    -- ** SourceConnectorProperties
+    SourceConnectorProperties (SourceConnectorProperties'),
+    newSourceConnectorProperties,
+
+    -- ** SourceFieldProperties
+    SourceFieldProperties (SourceFieldProperties'),
+    newSourceFieldProperties,
+
+    -- ** SourceFlowConfig
+    SourceFlowConfig (SourceFlowConfig'),
+    newSourceFlowConfig,
+
+    -- ** SuccessResponseHandlingConfig
+    SuccessResponseHandlingConfig (SuccessResponseHandlingConfig'),
+    newSuccessResponseHandlingConfig,
+
+    -- ** SupportedFieldTypeDetails
+    SupportedFieldTypeDetails (SupportedFieldTypeDetails'),
+    newSupportedFieldTypeDetails,
+
+    -- ** Task
+    Task (Task'),
+    newTask,
+
+    -- ** TrendmicroConnectorProfileCredentials
+    TrendmicroConnectorProfileCredentials (TrendmicroConnectorProfileCredentials'),
+    newTrendmicroConnectorProfileCredentials,
+
+    -- ** TrendmicroConnectorProfileProperties
+    TrendmicroConnectorProfileProperties (TrendmicroConnectorProfileProperties'),
+    newTrendmicroConnectorProfileProperties,
+
+    -- ** TrendmicroMetadata
+    TrendmicroMetadata (TrendmicroMetadata'),
+    newTrendmicroMetadata,
+
+    -- ** TrendmicroSourceProperties
+    TrendmicroSourceProperties (TrendmicroSourceProperties'),
+    newTrendmicroSourceProperties,
+
+    -- ** TriggerConfig
+    TriggerConfig (TriggerConfig'),
+    newTriggerConfig,
+
+    -- ** TriggerProperties
+    TriggerProperties (TriggerProperties'),
+    newTriggerProperties,
+
+    -- ** UpsolverDestinationProperties
+    UpsolverDestinationProperties (UpsolverDestinationProperties'),
+    newUpsolverDestinationProperties,
+
+    -- ** UpsolverMetadata
+    UpsolverMetadata (UpsolverMetadata'),
+    newUpsolverMetadata,
+
+    -- ** UpsolverS3OutputFormatConfig
+    UpsolverS3OutputFormatConfig (UpsolverS3OutputFormatConfig'),
+    newUpsolverS3OutputFormatConfig,
+
+    -- ** VeevaConnectorProfileCredentials
+    VeevaConnectorProfileCredentials (VeevaConnectorProfileCredentials'),
+    newVeevaConnectorProfileCredentials,
+
+    -- ** VeevaConnectorProfileProperties
+    VeevaConnectorProfileProperties (VeevaConnectorProfileProperties'),
+    newVeevaConnectorProfileProperties,
+
+    -- ** VeevaMetadata
+    VeevaMetadata (VeevaMetadata'),
+    newVeevaMetadata,
+
+    -- ** VeevaSourceProperties
+    VeevaSourceProperties (VeevaSourceProperties'),
+    newVeevaSourceProperties,
+
+    -- ** ZendeskConnectorProfileCredentials
+    ZendeskConnectorProfileCredentials (ZendeskConnectorProfileCredentials'),
+    newZendeskConnectorProfileCredentials,
+
+    -- ** ZendeskConnectorProfileProperties
+    ZendeskConnectorProfileProperties (ZendeskConnectorProfileProperties'),
+    newZendeskConnectorProfileProperties,
+
+    -- ** ZendeskDestinationProperties
+    ZendeskDestinationProperties (ZendeskDestinationProperties'),
+    newZendeskDestinationProperties,
+
+    -- ** ZendeskMetadata
+    ZendeskMetadata (ZendeskMetadata'),
+    newZendeskMetadata,
+
+    -- ** ZendeskSourceProperties
+    ZendeskSourceProperties (ZendeskSourceProperties'),
+    newZendeskSourceProperties,
+  )
+where
+
+import Amazonka.AppFlow.CreateConnectorProfile
+import Amazonka.AppFlow.CreateFlow
+import Amazonka.AppFlow.DeleteConnectorProfile
+import Amazonka.AppFlow.DeleteFlow
+import Amazonka.AppFlow.DescribeConnector
+import Amazonka.AppFlow.DescribeConnectorEntity
+import Amazonka.AppFlow.DescribeConnectorProfiles
+import Amazonka.AppFlow.DescribeConnectors
+import Amazonka.AppFlow.DescribeFlow
+import Amazonka.AppFlow.DescribeFlowExecutionRecords
+import Amazonka.AppFlow.Lens
+import Amazonka.AppFlow.ListConnectorEntities
+import Amazonka.AppFlow.ListConnectors
+import Amazonka.AppFlow.ListFlows
+import Amazonka.AppFlow.ListTagsForResource
+import Amazonka.AppFlow.RegisterConnector
+import Amazonka.AppFlow.StartFlow
+import Amazonka.AppFlow.StopFlow
+import Amazonka.AppFlow.TagResource
+import Amazonka.AppFlow.Types
+import Amazonka.AppFlow.UnregisterConnector
+import Amazonka.AppFlow.UntagResource
+import Amazonka.AppFlow.UpdateConnectorProfile
+import Amazonka.AppFlow.UpdateConnectorRegistration
+import Amazonka.AppFlow.UpdateFlow
+import Amazonka.AppFlow.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 'AppFlow'.
+
+-- $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/AppFlow/CreateConnectorProfile.hs b/gen/Amazonka/AppFlow/CreateConnectorProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/CreateConnectorProfile.hs
@@ -0,0 +1,289 @@
+{-# 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.AppFlow.CreateConnectorProfile
+-- 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 connector profile associated with your Amazon Web Services
+-- account. There is a soft quota of 100 connector profiles per Amazon Web
+-- Services account. If you need more connector profiles than this quota
+-- allows, you can submit a request to the Amazon AppFlow team through the
+-- Amazon AppFlow support channel. In each connector profile that you
+-- create, you can provide the credentials and properties for only one
+-- connector.
+module Amazonka.AppFlow.CreateConnectorProfile
+  ( -- * Creating a Request
+    CreateConnectorProfile (..),
+    newCreateConnectorProfile,
+
+    -- * Request Lenses
+    createConnectorProfile_connectorLabel,
+    createConnectorProfile_kmsArn,
+    createConnectorProfile_connectorProfileName,
+    createConnectorProfile_connectorType,
+    createConnectorProfile_connectionMode,
+    createConnectorProfile_connectorProfileConfig,
+
+    -- * Destructuring the Response
+    CreateConnectorProfileResponse (..),
+    newCreateConnectorProfileResponse,
+
+    -- * Response Lenses
+    createConnectorProfileResponse_connectorProfileArn,
+    createConnectorProfileResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateConnectorProfile' smart constructor.
+data CreateConnectorProfile = CreateConnectorProfile'
+  { -- | The label of the connector. The label is unique for each
+    -- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+    -- if calling for CUSTOMCONNECTOR connector type\/.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+    -- you provide for encryption. This is required if you do not want to use
+    -- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+    -- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+    kmsArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. The name is unique for each
+    -- @ConnectorProfile@ in your Amazon Web Services account.
+    connectorProfileName :: Prelude.Text,
+    -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorType :: ConnectorType,
+    -- | Indicates the connection mode and specifies whether it is public or
+    -- private. Private flows use Amazon Web Services PrivateLink to route data
+    -- over Amazon Web Services infrastructure without exposing it to the
+    -- public internet.
+    connectionMode :: ConnectionMode,
+    -- | Defines the connector-specific configuration and credentials.
+    connectorProfileConfig :: ConnectorProfileConfig
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnectorProfile' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorLabel', 'createConnectorProfile_connectorLabel' - The label of the connector. The label is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+-- if calling for CUSTOMCONNECTOR connector type\/.
+--
+-- 'kmsArn', 'createConnectorProfile_kmsArn' - The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+-- you provide for encryption. This is required if you do not want to use
+-- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+-- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+--
+-- 'connectorProfileName', 'createConnectorProfile_connectorProfileName' - The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in your Amazon Web Services account.
+--
+-- 'connectorType', 'createConnectorProfile_connectorType' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'connectionMode', 'createConnectorProfile_connectionMode' - Indicates the connection mode and specifies whether it is public or
+-- private. Private flows use Amazon Web Services PrivateLink to route data
+-- over Amazon Web Services infrastructure without exposing it to the
+-- public internet.
+--
+-- 'connectorProfileConfig', 'createConnectorProfile_connectorProfileConfig' - Defines the connector-specific configuration and credentials.
+newCreateConnectorProfile ::
+  -- | 'connectorProfileName'
+  Prelude.Text ->
+  -- | 'connectorType'
+  ConnectorType ->
+  -- | 'connectionMode'
+  ConnectionMode ->
+  -- | 'connectorProfileConfig'
+  ConnectorProfileConfig ->
+  CreateConnectorProfile
+newCreateConnectorProfile
+  pConnectorProfileName_
+  pConnectorType_
+  pConnectionMode_
+  pConnectorProfileConfig_ =
+    CreateConnectorProfile'
+      { connectorLabel =
+          Prelude.Nothing,
+        kmsArn = Prelude.Nothing,
+        connectorProfileName = pConnectorProfileName_,
+        connectorType = pConnectorType_,
+        connectionMode = pConnectionMode_,
+        connectorProfileConfig = pConnectorProfileConfig_
+      }
+
+-- | The label of the connector. The label is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+-- if calling for CUSTOMCONNECTOR connector type\/.
+createConnectorProfile_connectorLabel :: Lens.Lens' CreateConnectorProfile (Prelude.Maybe Prelude.Text)
+createConnectorProfile_connectorLabel = Lens.lens (\CreateConnectorProfile' {connectorLabel} -> connectorLabel) (\s@CreateConnectorProfile' {} a -> s {connectorLabel = a} :: CreateConnectorProfile)
+
+-- | The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+-- you provide for encryption. This is required if you do not want to use
+-- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+-- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+createConnectorProfile_kmsArn :: Lens.Lens' CreateConnectorProfile (Prelude.Maybe Prelude.Text)
+createConnectorProfile_kmsArn = Lens.lens (\CreateConnectorProfile' {kmsArn} -> kmsArn) (\s@CreateConnectorProfile' {} a -> s {kmsArn = a} :: CreateConnectorProfile)
+
+-- | The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in your Amazon Web Services account.
+createConnectorProfile_connectorProfileName :: Lens.Lens' CreateConnectorProfile Prelude.Text
+createConnectorProfile_connectorProfileName = Lens.lens (\CreateConnectorProfile' {connectorProfileName} -> connectorProfileName) (\s@CreateConnectorProfile' {} a -> s {connectorProfileName = a} :: CreateConnectorProfile)
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+createConnectorProfile_connectorType :: Lens.Lens' CreateConnectorProfile ConnectorType
+createConnectorProfile_connectorType = Lens.lens (\CreateConnectorProfile' {connectorType} -> connectorType) (\s@CreateConnectorProfile' {} a -> s {connectorType = a} :: CreateConnectorProfile)
+
+-- | Indicates the connection mode and specifies whether it is public or
+-- private. Private flows use Amazon Web Services PrivateLink to route data
+-- over Amazon Web Services infrastructure without exposing it to the
+-- public internet.
+createConnectorProfile_connectionMode :: Lens.Lens' CreateConnectorProfile ConnectionMode
+createConnectorProfile_connectionMode = Lens.lens (\CreateConnectorProfile' {connectionMode} -> connectionMode) (\s@CreateConnectorProfile' {} a -> s {connectionMode = a} :: CreateConnectorProfile)
+
+-- | Defines the connector-specific configuration and credentials.
+createConnectorProfile_connectorProfileConfig :: Lens.Lens' CreateConnectorProfile ConnectorProfileConfig
+createConnectorProfile_connectorProfileConfig = Lens.lens (\CreateConnectorProfile' {connectorProfileConfig} -> connectorProfileConfig) (\s@CreateConnectorProfile' {} a -> s {connectorProfileConfig = a} :: CreateConnectorProfile)
+
+instance Core.AWSRequest CreateConnectorProfile where
+  type
+    AWSResponse CreateConnectorProfile =
+      CreateConnectorProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateConnectorProfileResponse'
+            Prelude.<$> (x Data..?> "connectorProfileArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateConnectorProfile where
+  hashWithSalt _salt CreateConnectorProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` kmsArn
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` connectionMode
+      `Prelude.hashWithSalt` connectorProfileConfig
+
+instance Prelude.NFData CreateConnectorProfile where
+  rnf CreateConnectorProfile' {..} =
+    Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf kmsArn
+      `Prelude.seq` Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf connectionMode
+      `Prelude.seq` Prelude.rnf connectorProfileConfig
+
+instance Data.ToHeaders CreateConnectorProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateConnectorProfile where
+  toJSON CreateConnectorProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorLabel" Data..=)
+              Prelude.<$> connectorLabel,
+            ("kmsArn" Data..=) Prelude.<$> kmsArn,
+            Prelude.Just
+              ( "connectorProfileName"
+                  Data..= connectorProfileName
+              ),
+            Prelude.Just ("connectorType" Data..= connectorType),
+            Prelude.Just
+              ("connectionMode" Data..= connectionMode),
+            Prelude.Just
+              ( "connectorProfileConfig"
+                  Data..= connectorProfileConfig
+              )
+          ]
+      )
+
+instance Data.ToPath CreateConnectorProfile where
+  toPath = Prelude.const "/create-connector-profile"
+
+instance Data.ToQuery CreateConnectorProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateConnectorProfileResponse' smart constructor.
+data CreateConnectorProfileResponse = CreateConnectorProfileResponse'
+  { -- | The Amazon Resource Name (ARN) of the connector profile.
+    connectorProfileArn :: 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 'CreateConnectorProfileResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorProfileArn', 'createConnectorProfileResponse_connectorProfileArn' - The Amazon Resource Name (ARN) of the connector profile.
+--
+-- 'httpStatus', 'createConnectorProfileResponse_httpStatus' - The response's http status code.
+newCreateConnectorProfileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConnectorProfileResponse
+newCreateConnectorProfileResponse pHttpStatus_ =
+  CreateConnectorProfileResponse'
+    { connectorProfileArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the connector profile.
+createConnectorProfileResponse_connectorProfileArn :: Lens.Lens' CreateConnectorProfileResponse (Prelude.Maybe Prelude.Text)
+createConnectorProfileResponse_connectorProfileArn = Lens.lens (\CreateConnectorProfileResponse' {connectorProfileArn} -> connectorProfileArn) (\s@CreateConnectorProfileResponse' {} a -> s {connectorProfileArn = a} :: CreateConnectorProfileResponse)
+
+-- | The response's http status code.
+createConnectorProfileResponse_httpStatus :: Lens.Lens' CreateConnectorProfileResponse Prelude.Int
+createConnectorProfileResponse_httpStatus = Lens.lens (\CreateConnectorProfileResponse' {httpStatus} -> httpStatus) (\s@CreateConnectorProfileResponse' {} a -> s {httpStatus = a} :: CreateConnectorProfileResponse)
+
+instance
+  Prelude.NFData
+    CreateConnectorProfileResponse
+  where
+  rnf CreateConnectorProfileResponse' {..} =
+    Prelude.rnf connectorProfileArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/CreateFlow.hs b/gen/Amazonka/AppFlow/CreateFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/CreateFlow.hs
@@ -0,0 +1,326 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.CreateFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables your application to create a new flow using Amazon AppFlow. You
+-- must create a connector profile before calling this API. Please note
+-- that the Request Syntax below shows syntax for multiple destinations,
+-- however, you can only transfer data to one item in this list at a time.
+-- Amazon AppFlow does not currently support flows to multiple destinations
+-- at once.
+module Amazonka.AppFlow.CreateFlow
+  ( -- * Creating a Request
+    CreateFlow (..),
+    newCreateFlow,
+
+    -- * Request Lenses
+    createFlow_description,
+    createFlow_kmsArn,
+    createFlow_metadataCatalogConfig,
+    createFlow_tags,
+    createFlow_flowName,
+    createFlow_triggerConfig,
+    createFlow_sourceFlowConfig,
+    createFlow_destinationFlowConfigList,
+    createFlow_tasks,
+
+    -- * Destructuring the Response
+    CreateFlowResponse (..),
+    newCreateFlowResponse,
+
+    -- * Response Lenses
+    createFlowResponse_flowArn,
+    createFlowResponse_flowStatus,
+    createFlowResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateFlow' smart constructor.
+data CreateFlow = CreateFlow'
+  { -- | A description of the flow you want to create.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+    -- you provide for encryption. This is required if you do not want to use
+    -- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+    -- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+    kmsArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+    -- the data that\'s transferred by the associated flow. When Amazon AppFlow
+    -- catalogs the data from a flow, it stores metadata in a data catalog.
+    metadataCatalogConfig :: Prelude.Maybe MetadataCatalogConfig,
+    -- | The tags used to organize, track, or control access for your flow.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text,
+    -- | The trigger settings that determine how and when the flow runs.
+    triggerConfig :: TriggerConfig,
+    -- | The configuration that controls how Amazon AppFlow retrieves data from
+    -- the source connector.
+    sourceFlowConfig :: SourceFlowConfig,
+    -- | The configuration that controls how Amazon AppFlow places data in the
+    -- destination connector.
+    destinationFlowConfigList :: [DestinationFlowConfig],
+    -- | A list of tasks that Amazon AppFlow performs while transferring the data
+    -- in the flow run.
+    tasks :: [Task]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFlow' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createFlow_description' - A description of the flow you want to create.
+--
+-- 'kmsArn', 'createFlow_kmsArn' - The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+-- you provide for encryption. This is required if you do not want to use
+-- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+-- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+--
+-- 'metadataCatalogConfig', 'createFlow_metadataCatalogConfig' - Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- the data that\'s transferred by the associated flow. When Amazon AppFlow
+-- catalogs the data from a flow, it stores metadata in a data catalog.
+--
+-- 'tags', 'createFlow_tags' - The tags used to organize, track, or control access for your flow.
+--
+-- 'flowName', 'createFlow_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+--
+-- 'triggerConfig', 'createFlow_triggerConfig' - The trigger settings that determine how and when the flow runs.
+--
+-- 'sourceFlowConfig', 'createFlow_sourceFlowConfig' - The configuration that controls how Amazon AppFlow retrieves data from
+-- the source connector.
+--
+-- 'destinationFlowConfigList', 'createFlow_destinationFlowConfigList' - The configuration that controls how Amazon AppFlow places data in the
+-- destination connector.
+--
+-- 'tasks', 'createFlow_tasks' - A list of tasks that Amazon AppFlow performs while transferring the data
+-- in the flow run.
+newCreateFlow ::
+  -- | 'flowName'
+  Prelude.Text ->
+  -- | 'triggerConfig'
+  TriggerConfig ->
+  -- | 'sourceFlowConfig'
+  SourceFlowConfig ->
+  CreateFlow
+newCreateFlow
+  pFlowName_
+  pTriggerConfig_
+  pSourceFlowConfig_ =
+    CreateFlow'
+      { description = Prelude.Nothing,
+        kmsArn = Prelude.Nothing,
+        metadataCatalogConfig = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        flowName = pFlowName_,
+        triggerConfig = pTriggerConfig_,
+        sourceFlowConfig = pSourceFlowConfig_,
+        destinationFlowConfigList = Prelude.mempty,
+        tasks = Prelude.mempty
+      }
+
+-- | A description of the flow you want to create.
+createFlow_description :: Lens.Lens' CreateFlow (Prelude.Maybe Prelude.Text)
+createFlow_description = Lens.lens (\CreateFlow' {description} -> description) (\s@CreateFlow' {} a -> s {description = a} :: CreateFlow)
+
+-- | The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+-- you provide for encryption. This is required if you do not want to use
+-- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+-- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+createFlow_kmsArn :: Lens.Lens' CreateFlow (Prelude.Maybe Prelude.Text)
+createFlow_kmsArn = Lens.lens (\CreateFlow' {kmsArn} -> kmsArn) (\s@CreateFlow' {} a -> s {kmsArn = a} :: CreateFlow)
+
+-- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- the data that\'s transferred by the associated flow. When Amazon AppFlow
+-- catalogs the data from a flow, it stores metadata in a data catalog.
+createFlow_metadataCatalogConfig :: Lens.Lens' CreateFlow (Prelude.Maybe MetadataCatalogConfig)
+createFlow_metadataCatalogConfig = Lens.lens (\CreateFlow' {metadataCatalogConfig} -> metadataCatalogConfig) (\s@CreateFlow' {} a -> s {metadataCatalogConfig = a} :: CreateFlow)
+
+-- | The tags used to organize, track, or control access for your flow.
+createFlow_tags :: Lens.Lens' CreateFlow (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createFlow_tags = Lens.lens (\CreateFlow' {tags} -> tags) (\s@CreateFlow' {} a -> s {tags = a} :: CreateFlow) Prelude.. Lens.mapping Lens.coerced
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+createFlow_flowName :: Lens.Lens' CreateFlow Prelude.Text
+createFlow_flowName = Lens.lens (\CreateFlow' {flowName} -> flowName) (\s@CreateFlow' {} a -> s {flowName = a} :: CreateFlow)
+
+-- | The trigger settings that determine how and when the flow runs.
+createFlow_triggerConfig :: Lens.Lens' CreateFlow TriggerConfig
+createFlow_triggerConfig = Lens.lens (\CreateFlow' {triggerConfig} -> triggerConfig) (\s@CreateFlow' {} a -> s {triggerConfig = a} :: CreateFlow)
+
+-- | The configuration that controls how Amazon AppFlow retrieves data from
+-- the source connector.
+createFlow_sourceFlowConfig :: Lens.Lens' CreateFlow SourceFlowConfig
+createFlow_sourceFlowConfig = Lens.lens (\CreateFlow' {sourceFlowConfig} -> sourceFlowConfig) (\s@CreateFlow' {} a -> s {sourceFlowConfig = a} :: CreateFlow)
+
+-- | The configuration that controls how Amazon AppFlow places data in the
+-- destination connector.
+createFlow_destinationFlowConfigList :: Lens.Lens' CreateFlow [DestinationFlowConfig]
+createFlow_destinationFlowConfigList = Lens.lens (\CreateFlow' {destinationFlowConfigList} -> destinationFlowConfigList) (\s@CreateFlow' {} a -> s {destinationFlowConfigList = a} :: CreateFlow) Prelude.. Lens.coerced
+
+-- | A list of tasks that Amazon AppFlow performs while transferring the data
+-- in the flow run.
+createFlow_tasks :: Lens.Lens' CreateFlow [Task]
+createFlow_tasks = Lens.lens (\CreateFlow' {tasks} -> tasks) (\s@CreateFlow' {} a -> s {tasks = a} :: CreateFlow) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateFlow where
+  type AWSResponse CreateFlow = CreateFlowResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFlowResponse'
+            Prelude.<$> (x Data..?> "flowArn")
+            Prelude.<*> (x Data..?> "flowStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFlow where
+  hashWithSalt _salt CreateFlow' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` kmsArn
+      `Prelude.hashWithSalt` metadataCatalogConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` flowName
+      `Prelude.hashWithSalt` triggerConfig
+      `Prelude.hashWithSalt` sourceFlowConfig
+      `Prelude.hashWithSalt` destinationFlowConfigList
+      `Prelude.hashWithSalt` tasks
+
+instance Prelude.NFData CreateFlow where
+  rnf CreateFlow' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf kmsArn
+      `Prelude.seq` Prelude.rnf metadataCatalogConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf flowName
+      `Prelude.seq` Prelude.rnf triggerConfig
+      `Prelude.seq` Prelude.rnf sourceFlowConfig
+      `Prelude.seq` Prelude.rnf destinationFlowConfigList
+      `Prelude.seq` Prelude.rnf tasks
+
+instance Data.ToHeaders CreateFlow where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFlow where
+  toJSON CreateFlow' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            ("kmsArn" Data..=) Prelude.<$> kmsArn,
+            ("metadataCatalogConfig" Data..=)
+              Prelude.<$> metadataCatalogConfig,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("flowName" Data..= flowName),
+            Prelude.Just ("triggerConfig" Data..= triggerConfig),
+            Prelude.Just
+              ("sourceFlowConfig" Data..= sourceFlowConfig),
+            Prelude.Just
+              ( "destinationFlowConfigList"
+                  Data..= destinationFlowConfigList
+              ),
+            Prelude.Just ("tasks" Data..= tasks)
+          ]
+      )
+
+instance Data.ToPath CreateFlow where
+  toPath = Prelude.const "/create-flow"
+
+instance Data.ToQuery CreateFlow where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFlowResponse' smart constructor.
+data CreateFlowResponse = CreateFlowResponse'
+  { -- | The flow\'s Amazon Resource Name (ARN).
+    flowArn :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the current status of the flow.
+    flowStatus :: Prelude.Maybe FlowStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFlowResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowArn', 'createFlowResponse_flowArn' - The flow\'s Amazon Resource Name (ARN).
+--
+-- 'flowStatus', 'createFlowResponse_flowStatus' - Indicates the current status of the flow.
+--
+-- 'httpStatus', 'createFlowResponse_httpStatus' - The response's http status code.
+newCreateFlowResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateFlowResponse
+newCreateFlowResponse pHttpStatus_ =
+  CreateFlowResponse'
+    { flowArn = Prelude.Nothing,
+      flowStatus = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The flow\'s Amazon Resource Name (ARN).
+createFlowResponse_flowArn :: Lens.Lens' CreateFlowResponse (Prelude.Maybe Prelude.Text)
+createFlowResponse_flowArn = Lens.lens (\CreateFlowResponse' {flowArn} -> flowArn) (\s@CreateFlowResponse' {} a -> s {flowArn = a} :: CreateFlowResponse)
+
+-- | Indicates the current status of the flow.
+createFlowResponse_flowStatus :: Lens.Lens' CreateFlowResponse (Prelude.Maybe FlowStatus)
+createFlowResponse_flowStatus = Lens.lens (\CreateFlowResponse' {flowStatus} -> flowStatus) (\s@CreateFlowResponse' {} a -> s {flowStatus = a} :: CreateFlowResponse)
+
+-- | The response's http status code.
+createFlowResponse_httpStatus :: Lens.Lens' CreateFlowResponse Prelude.Int
+createFlowResponse_httpStatus = Lens.lens (\CreateFlowResponse' {httpStatus} -> httpStatus) (\s@CreateFlowResponse' {} a -> s {httpStatus = a} :: CreateFlowResponse)
+
+instance Prelude.NFData CreateFlowResponse where
+  rnf CreateFlowResponse' {..} =
+    Prelude.rnf flowArn
+      `Prelude.seq` Prelude.rnf flowStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DeleteConnectorProfile.hs b/gen/Amazonka/AppFlow/DeleteConnectorProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DeleteConnectorProfile.hs
@@ -0,0 +1,183 @@
+{-# 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.AppFlow.DeleteConnectorProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables you to delete an existing connector profile.
+module Amazonka.AppFlow.DeleteConnectorProfile
+  ( -- * Creating a Request
+    DeleteConnectorProfile (..),
+    newDeleteConnectorProfile,
+
+    -- * Request Lenses
+    deleteConnectorProfile_forceDelete,
+    deleteConnectorProfile_connectorProfileName,
+
+    -- * Destructuring the Response
+    DeleteConnectorProfileResponse (..),
+    newDeleteConnectorProfileResponse,
+
+    -- * Response Lenses
+    deleteConnectorProfileResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteConnectorProfile' smart constructor.
+data DeleteConnectorProfile = DeleteConnectorProfile'
+  { -- | Indicates whether Amazon AppFlow should delete the profile, even if it
+    -- is currently in use in one or more flows.
+    forceDelete :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the connector profile. The name is unique for each
+    -- @ConnectorProfile@ in your account.
+    connectorProfileName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConnectorProfile' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forceDelete', 'deleteConnectorProfile_forceDelete' - Indicates whether Amazon AppFlow should delete the profile, even if it
+-- is currently in use in one or more flows.
+--
+-- 'connectorProfileName', 'deleteConnectorProfile_connectorProfileName' - The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in your account.
+newDeleteConnectorProfile ::
+  -- | 'connectorProfileName'
+  Prelude.Text ->
+  DeleteConnectorProfile
+newDeleteConnectorProfile pConnectorProfileName_ =
+  DeleteConnectorProfile'
+    { forceDelete =
+        Prelude.Nothing,
+      connectorProfileName = pConnectorProfileName_
+    }
+
+-- | Indicates whether Amazon AppFlow should delete the profile, even if it
+-- is currently in use in one or more flows.
+deleteConnectorProfile_forceDelete :: Lens.Lens' DeleteConnectorProfile (Prelude.Maybe Prelude.Bool)
+deleteConnectorProfile_forceDelete = Lens.lens (\DeleteConnectorProfile' {forceDelete} -> forceDelete) (\s@DeleteConnectorProfile' {} a -> s {forceDelete = a} :: DeleteConnectorProfile)
+
+-- | The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in your account.
+deleteConnectorProfile_connectorProfileName :: Lens.Lens' DeleteConnectorProfile Prelude.Text
+deleteConnectorProfile_connectorProfileName = Lens.lens (\DeleteConnectorProfile' {connectorProfileName} -> connectorProfileName) (\s@DeleteConnectorProfile' {} a -> s {connectorProfileName = a} :: DeleteConnectorProfile)
+
+instance Core.AWSRequest DeleteConnectorProfile where
+  type
+    AWSResponse DeleteConnectorProfile =
+      DeleteConnectorProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteConnectorProfileResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteConnectorProfile where
+  hashWithSalt _salt DeleteConnectorProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` forceDelete
+      `Prelude.hashWithSalt` connectorProfileName
+
+instance Prelude.NFData DeleteConnectorProfile where
+  rnf DeleteConnectorProfile' {..} =
+    Prelude.rnf forceDelete
+      `Prelude.seq` Prelude.rnf connectorProfileName
+
+instance Data.ToHeaders DeleteConnectorProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteConnectorProfile where
+  toJSON DeleteConnectorProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("forceDelete" Data..=) Prelude.<$> forceDelete,
+            Prelude.Just
+              ( "connectorProfileName"
+                  Data..= connectorProfileName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteConnectorProfile where
+  toPath = Prelude.const "/delete-connector-profile"
+
+instance Data.ToQuery DeleteConnectorProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteConnectorProfileResponse' smart constructor.
+data DeleteConnectorProfileResponse = DeleteConnectorProfileResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConnectorProfileResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteConnectorProfileResponse_httpStatus' - The response's http status code.
+newDeleteConnectorProfileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteConnectorProfileResponse
+newDeleteConnectorProfileResponse pHttpStatus_ =
+  DeleteConnectorProfileResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteConnectorProfileResponse_httpStatus :: Lens.Lens' DeleteConnectorProfileResponse Prelude.Int
+deleteConnectorProfileResponse_httpStatus = Lens.lens (\DeleteConnectorProfileResponse' {httpStatus} -> httpStatus) (\s@DeleteConnectorProfileResponse' {} a -> s {httpStatus = a} :: DeleteConnectorProfileResponse)
+
+instance
+  Prelude.NFData
+    DeleteConnectorProfileResponse
+  where
+  rnf DeleteConnectorProfileResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DeleteFlow.hs b/gen/Amazonka/AppFlow/DeleteFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DeleteFlow.hs
@@ -0,0 +1,172 @@
+{-# 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.AppFlow.DeleteFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables your application to delete an existing flow. Before deleting the
+-- flow, Amazon AppFlow validates the request by checking the flow
+-- configuration and status. You can delete flows one at a time.
+module Amazonka.AppFlow.DeleteFlow
+  ( -- * Creating a Request
+    DeleteFlow (..),
+    newDeleteFlow,
+
+    -- * Request Lenses
+    deleteFlow_forceDelete,
+    deleteFlow_flowName,
+
+    -- * Destructuring the Response
+    DeleteFlowResponse (..),
+    newDeleteFlowResponse,
+
+    -- * Response Lenses
+    deleteFlowResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteFlow' smart constructor.
+data DeleteFlow = DeleteFlow'
+  { -- | Indicates whether Amazon AppFlow should delete the flow, even if it is
+    -- currently in use.
+    forceDelete :: Prelude.Maybe Prelude.Bool,
+    -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFlow' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forceDelete', 'deleteFlow_forceDelete' - Indicates whether Amazon AppFlow should delete the flow, even if it is
+-- currently in use.
+--
+-- 'flowName', 'deleteFlow_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+newDeleteFlow ::
+  -- | 'flowName'
+  Prelude.Text ->
+  DeleteFlow
+newDeleteFlow pFlowName_ =
+  DeleteFlow'
+    { forceDelete = Prelude.Nothing,
+      flowName = pFlowName_
+    }
+
+-- | Indicates whether Amazon AppFlow should delete the flow, even if it is
+-- currently in use.
+deleteFlow_forceDelete :: Lens.Lens' DeleteFlow (Prelude.Maybe Prelude.Bool)
+deleteFlow_forceDelete = Lens.lens (\DeleteFlow' {forceDelete} -> forceDelete) (\s@DeleteFlow' {} a -> s {forceDelete = a} :: DeleteFlow)
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+deleteFlow_flowName :: Lens.Lens' DeleteFlow Prelude.Text
+deleteFlow_flowName = Lens.lens (\DeleteFlow' {flowName} -> flowName) (\s@DeleteFlow' {} a -> s {flowName = a} :: DeleteFlow)
+
+instance Core.AWSRequest DeleteFlow where
+  type AWSResponse DeleteFlow = DeleteFlowResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteFlowResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteFlow where
+  hashWithSalt _salt DeleteFlow' {..} =
+    _salt
+      `Prelude.hashWithSalt` forceDelete
+      `Prelude.hashWithSalt` flowName
+
+instance Prelude.NFData DeleteFlow where
+  rnf DeleteFlow' {..} =
+    Prelude.rnf forceDelete
+      `Prelude.seq` Prelude.rnf flowName
+
+instance Data.ToHeaders DeleteFlow where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteFlow where
+  toJSON DeleteFlow' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("forceDelete" Data..=) Prelude.<$> forceDelete,
+            Prelude.Just ("flowName" Data..= flowName)
+          ]
+      )
+
+instance Data.ToPath DeleteFlow where
+  toPath = Prelude.const "/delete-flow"
+
+instance Data.ToQuery DeleteFlow where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFlowResponse' smart constructor.
+data DeleteFlowResponse = DeleteFlowResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFlowResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteFlowResponse_httpStatus' - The response's http status code.
+newDeleteFlowResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteFlowResponse
+newDeleteFlowResponse pHttpStatus_ =
+  DeleteFlowResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteFlowResponse_httpStatus :: Lens.Lens' DeleteFlowResponse Prelude.Int
+deleteFlowResponse_httpStatus = Lens.lens (\DeleteFlowResponse' {httpStatus} -> httpStatus) (\s@DeleteFlowResponse' {} a -> s {httpStatus = a} :: DeleteFlowResponse)
+
+instance Prelude.NFData DeleteFlowResponse where
+  rnf DeleteFlowResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DescribeConnector.hs b/gen/Amazonka/AppFlow/DescribeConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DescribeConnector.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.DescribeConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the given custom connector registered in your Amazon Web
+-- Services account. This API can be used for custom connectors that are
+-- registered in your account and also for Amazon authored connectors.
+module Amazonka.AppFlow.DescribeConnector
+  ( -- * Creating a Request
+    DescribeConnector (..),
+    newDescribeConnector,
+
+    -- * Request Lenses
+    describeConnector_connectorLabel,
+    describeConnector_connectorType,
+
+    -- * Destructuring the Response
+    DescribeConnectorResponse (..),
+    newDescribeConnectorResponse,
+
+    -- * Response Lenses
+    describeConnectorResponse_connectorConfiguration,
+    describeConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeConnector' smart constructor.
+data DescribeConnector = DescribeConnector'
+  { -- | The label of the connector. The label is unique for each
+    -- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+    -- if calling for CUSTOMCONNECTOR connector type\/.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | The connector type, such as CUSTOMCONNECTOR, Saleforce, Marketo. Please
+    -- choose CUSTOMCONNECTOR for Lambda based custom connectors.
+    connectorType :: ConnectorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorLabel', 'describeConnector_connectorLabel' - The label of the connector. The label is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+-- if calling for CUSTOMCONNECTOR connector type\/.
+--
+-- 'connectorType', 'describeConnector_connectorType' - The connector type, such as CUSTOMCONNECTOR, Saleforce, Marketo. Please
+-- choose CUSTOMCONNECTOR for Lambda based custom connectors.
+newDescribeConnector ::
+  -- | 'connectorType'
+  ConnectorType ->
+  DescribeConnector
+newDescribeConnector pConnectorType_ =
+  DescribeConnector'
+    { connectorLabel =
+        Prelude.Nothing,
+      connectorType = pConnectorType_
+    }
+
+-- | The label of the connector. The label is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+-- if calling for CUSTOMCONNECTOR connector type\/.
+describeConnector_connectorLabel :: Lens.Lens' DescribeConnector (Prelude.Maybe Prelude.Text)
+describeConnector_connectorLabel = Lens.lens (\DescribeConnector' {connectorLabel} -> connectorLabel) (\s@DescribeConnector' {} a -> s {connectorLabel = a} :: DescribeConnector)
+
+-- | The connector type, such as CUSTOMCONNECTOR, Saleforce, Marketo. Please
+-- choose CUSTOMCONNECTOR for Lambda based custom connectors.
+describeConnector_connectorType :: Lens.Lens' DescribeConnector ConnectorType
+describeConnector_connectorType = Lens.lens (\DescribeConnector' {connectorType} -> connectorType) (\s@DescribeConnector' {} a -> s {connectorType = a} :: DescribeConnector)
+
+instance Core.AWSRequest DescribeConnector where
+  type
+    AWSResponse DescribeConnector =
+      DescribeConnectorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeConnectorResponse'
+            Prelude.<$> (x Data..?> "connectorConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeConnector where
+  hashWithSalt _salt DescribeConnector' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` connectorType
+
+instance Prelude.NFData DescribeConnector where
+  rnf DescribeConnector' {..} =
+    Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf connectorType
+
+instance Data.ToHeaders DescribeConnector where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeConnector where
+  toJSON DescribeConnector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorLabel" Data..=)
+              Prelude.<$> connectorLabel,
+            Prelude.Just
+              ("connectorType" Data..= connectorType)
+          ]
+      )
+
+instance Data.ToPath DescribeConnector where
+  toPath = Prelude.const "/describe-connector"
+
+instance Data.ToQuery DescribeConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeConnectorResponse' smart constructor.
+data DescribeConnectorResponse = DescribeConnectorResponse'
+  { -- | Configuration info of all the connectors that the user requested.
+    connectorConfiguration :: Prelude.Maybe ConnectorConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorConfiguration', 'describeConnectorResponse_connectorConfiguration' - Configuration info of all the connectors that the user requested.
+--
+-- 'httpStatus', 'describeConnectorResponse_httpStatus' - The response's http status code.
+newDescribeConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeConnectorResponse
+newDescribeConnectorResponse pHttpStatus_ =
+  DescribeConnectorResponse'
+    { connectorConfiguration =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Configuration info of all the connectors that the user requested.
+describeConnectorResponse_connectorConfiguration :: Lens.Lens' DescribeConnectorResponse (Prelude.Maybe ConnectorConfiguration)
+describeConnectorResponse_connectorConfiguration = Lens.lens (\DescribeConnectorResponse' {connectorConfiguration} -> connectorConfiguration) (\s@DescribeConnectorResponse' {} a -> s {connectorConfiguration = a} :: DescribeConnectorResponse)
+
+-- | The response's http status code.
+describeConnectorResponse_httpStatus :: Lens.Lens' DescribeConnectorResponse Prelude.Int
+describeConnectorResponse_httpStatus = Lens.lens (\DescribeConnectorResponse' {httpStatus} -> httpStatus) (\s@DescribeConnectorResponse' {} a -> s {httpStatus = a} :: DescribeConnectorResponse)
+
+instance Prelude.NFData DescribeConnectorResponse where
+  rnf DescribeConnectorResponse' {..} =
+    Prelude.rnf connectorConfiguration
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DescribeConnectorEntity.hs b/gen/Amazonka/AppFlow/DescribeConnectorEntity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DescribeConnectorEntity.hs
@@ -0,0 +1,230 @@
+{-# 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.AppFlow.DescribeConnectorEntity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides details regarding the entity used with the connector, with a
+-- description of the data model for each field in that entity.
+module Amazonka.AppFlow.DescribeConnectorEntity
+  ( -- * Creating a Request
+    DescribeConnectorEntity (..),
+    newDescribeConnectorEntity,
+
+    -- * Request Lenses
+    describeConnectorEntity_apiVersion,
+    describeConnectorEntity_connectorProfileName,
+    describeConnectorEntity_connectorType,
+    describeConnectorEntity_connectorEntityName,
+
+    -- * Destructuring the Response
+    DescribeConnectorEntityResponse (..),
+    newDescribeConnectorEntityResponse,
+
+    -- * Response Lenses
+    describeConnectorEntityResponse_httpStatus,
+    describeConnectorEntityResponse_connectorEntityFields,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeConnectorEntity' smart constructor.
+data DescribeConnectorEntity = DescribeConnectorEntity'
+  { -- | The version of the API that\'s used by the connector.
+    apiVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. The name is unique for each
+    -- @ConnectorProfile@ in the Amazon Web Services account.
+    connectorProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The type of connector application, such as Salesforce, Amplitude, and so
+    -- on.
+    connectorType :: Prelude.Maybe ConnectorType,
+    -- | The entity name for that connector.
+    connectorEntityName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConnectorEntity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiVersion', 'describeConnectorEntity_apiVersion' - The version of the API that\'s used by the connector.
+--
+-- 'connectorProfileName', 'describeConnectorEntity_connectorProfileName' - The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+--
+-- 'connectorType', 'describeConnectorEntity_connectorType' - The type of connector application, such as Salesforce, Amplitude, and so
+-- on.
+--
+-- 'connectorEntityName', 'describeConnectorEntity_connectorEntityName' - The entity name for that connector.
+newDescribeConnectorEntity ::
+  -- | 'connectorEntityName'
+  Prelude.Text ->
+  DescribeConnectorEntity
+newDescribeConnectorEntity pConnectorEntityName_ =
+  DescribeConnectorEntity'
+    { apiVersion =
+        Prelude.Nothing,
+      connectorProfileName = Prelude.Nothing,
+      connectorType = Prelude.Nothing,
+      connectorEntityName = pConnectorEntityName_
+    }
+
+-- | The version of the API that\'s used by the connector.
+describeConnectorEntity_apiVersion :: Lens.Lens' DescribeConnectorEntity (Prelude.Maybe Prelude.Text)
+describeConnectorEntity_apiVersion = Lens.lens (\DescribeConnectorEntity' {apiVersion} -> apiVersion) (\s@DescribeConnectorEntity' {} a -> s {apiVersion = a} :: DescribeConnectorEntity)
+
+-- | The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+describeConnectorEntity_connectorProfileName :: Lens.Lens' DescribeConnectorEntity (Prelude.Maybe Prelude.Text)
+describeConnectorEntity_connectorProfileName = Lens.lens (\DescribeConnectorEntity' {connectorProfileName} -> connectorProfileName) (\s@DescribeConnectorEntity' {} a -> s {connectorProfileName = a} :: DescribeConnectorEntity)
+
+-- | The type of connector application, such as Salesforce, Amplitude, and so
+-- on.
+describeConnectorEntity_connectorType :: Lens.Lens' DescribeConnectorEntity (Prelude.Maybe ConnectorType)
+describeConnectorEntity_connectorType = Lens.lens (\DescribeConnectorEntity' {connectorType} -> connectorType) (\s@DescribeConnectorEntity' {} a -> s {connectorType = a} :: DescribeConnectorEntity)
+
+-- | The entity name for that connector.
+describeConnectorEntity_connectorEntityName :: Lens.Lens' DescribeConnectorEntity Prelude.Text
+describeConnectorEntity_connectorEntityName = Lens.lens (\DescribeConnectorEntity' {connectorEntityName} -> connectorEntityName) (\s@DescribeConnectorEntity' {} a -> s {connectorEntityName = a} :: DescribeConnectorEntity)
+
+instance Core.AWSRequest DescribeConnectorEntity where
+  type
+    AWSResponse DescribeConnectorEntity =
+      DescribeConnectorEntityResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeConnectorEntityResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "connectorEntityFields"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DescribeConnectorEntity where
+  hashWithSalt _salt DescribeConnectorEntity' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiVersion
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` connectorEntityName
+
+instance Prelude.NFData DescribeConnectorEntity where
+  rnf DescribeConnectorEntity' {..} =
+    Prelude.rnf apiVersion
+      `Prelude.seq` Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf connectorEntityName
+
+instance Data.ToHeaders DescribeConnectorEntity where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeConnectorEntity where
+  toJSON DescribeConnectorEntity' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("apiVersion" Data..=) Prelude.<$> apiVersion,
+            ("connectorProfileName" Data..=)
+              Prelude.<$> connectorProfileName,
+            ("connectorType" Data..=) Prelude.<$> connectorType,
+            Prelude.Just
+              ("connectorEntityName" Data..= connectorEntityName)
+          ]
+      )
+
+instance Data.ToPath DescribeConnectorEntity where
+  toPath = Prelude.const "/describe-connector-entity"
+
+instance Data.ToQuery DescribeConnectorEntity where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeConnectorEntityResponse' smart constructor.
+data DescribeConnectorEntityResponse = DescribeConnectorEntityResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Describes the fields for that connector entity. For example, for an
+    -- /account/ entity, the fields would be /account name/, /account ID/, and
+    -- so on.
+    connectorEntityFields :: [ConnectorEntityField]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConnectorEntityResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeConnectorEntityResponse_httpStatus' - The response's http status code.
+--
+-- 'connectorEntityFields', 'describeConnectorEntityResponse_connectorEntityFields' - Describes the fields for that connector entity. For example, for an
+-- /account/ entity, the fields would be /account name/, /account ID/, and
+-- so on.
+newDescribeConnectorEntityResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeConnectorEntityResponse
+newDescribeConnectorEntityResponse pHttpStatus_ =
+  DescribeConnectorEntityResponse'
+    { httpStatus =
+        pHttpStatus_,
+      connectorEntityFields = Prelude.mempty
+    }
+
+-- | The response's http status code.
+describeConnectorEntityResponse_httpStatus :: Lens.Lens' DescribeConnectorEntityResponse Prelude.Int
+describeConnectorEntityResponse_httpStatus = Lens.lens (\DescribeConnectorEntityResponse' {httpStatus} -> httpStatus) (\s@DescribeConnectorEntityResponse' {} a -> s {httpStatus = a} :: DescribeConnectorEntityResponse)
+
+-- | Describes the fields for that connector entity. For example, for an
+-- /account/ entity, the fields would be /account name/, /account ID/, and
+-- so on.
+describeConnectorEntityResponse_connectorEntityFields :: Lens.Lens' DescribeConnectorEntityResponse [ConnectorEntityField]
+describeConnectorEntityResponse_connectorEntityFields = Lens.lens (\DescribeConnectorEntityResponse' {connectorEntityFields} -> connectorEntityFields) (\s@DescribeConnectorEntityResponse' {} a -> s {connectorEntityFields = a} :: DescribeConnectorEntityResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    DescribeConnectorEntityResponse
+  where
+  rnf DescribeConnectorEntityResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf connectorEntityFields
diff --git a/gen/Amazonka/AppFlow/DescribeConnectorProfiles.hs b/gen/Amazonka/AppFlow/DescribeConnectorProfiles.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DescribeConnectorProfiles.hs
@@ -0,0 +1,267 @@
+{-# 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.AppFlow.DescribeConnectorProfiles
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of @connector-profile@ details matching the provided
+-- @connector-profile@ names and @connector-types@. Both input lists are
+-- optional, and you can use them to filter the result.
+--
+-- If no names or @connector-types@ are provided, returns all connector
+-- profiles in a paginated form. If there is no match, this operation
+-- returns an empty list.
+module Amazonka.AppFlow.DescribeConnectorProfiles
+  ( -- * Creating a Request
+    DescribeConnectorProfiles (..),
+    newDescribeConnectorProfiles,
+
+    -- * Request Lenses
+    describeConnectorProfiles_connectorLabel,
+    describeConnectorProfiles_connectorProfileNames,
+    describeConnectorProfiles_connectorType,
+    describeConnectorProfiles_maxResults,
+    describeConnectorProfiles_nextToken,
+
+    -- * Destructuring the Response
+    DescribeConnectorProfilesResponse (..),
+    newDescribeConnectorProfilesResponse,
+
+    -- * Response Lenses
+    describeConnectorProfilesResponse_connectorProfileDetails,
+    describeConnectorProfilesResponse_nextToken,
+    describeConnectorProfilesResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeConnectorProfiles' smart constructor.
+data DescribeConnectorProfiles = DescribeConnectorProfiles'
+  { -- | The name of the connector. The name is unique for each
+    -- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+    -- if calling for CUSTOMCONNECTOR connector type\/.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. The name is unique for each
+    -- @ConnectorProfile@ in the Amazon Web Services account.
+    connectorProfileNames :: Prelude.Maybe [Prelude.Text],
+    -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorType :: Prelude.Maybe ConnectorType,
+    -- | Specifies the maximum number of items that should be returned in the
+    -- result set. The default for @maxResults@ is 20 (for all paginated API
+    -- operations).
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token for the next page of data.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConnectorProfiles' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorLabel', 'describeConnectorProfiles_connectorLabel' - The name of the connector. The name is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+-- if calling for CUSTOMCONNECTOR connector type\/.
+--
+-- 'connectorProfileNames', 'describeConnectorProfiles_connectorProfileNames' - The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+--
+-- 'connectorType', 'describeConnectorProfiles_connectorType' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'maxResults', 'describeConnectorProfiles_maxResults' - Specifies the maximum number of items that should be returned in the
+-- result set. The default for @maxResults@ is 20 (for all paginated API
+-- operations).
+--
+-- 'nextToken', 'describeConnectorProfiles_nextToken' - The pagination token for the next page of data.
+newDescribeConnectorProfiles ::
+  DescribeConnectorProfiles
+newDescribeConnectorProfiles =
+  DescribeConnectorProfiles'
+    { connectorLabel =
+        Prelude.Nothing,
+      connectorProfileNames = Prelude.Nothing,
+      connectorType = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The name of the connector. The name is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account. Only needed
+-- if calling for CUSTOMCONNECTOR connector type\/.
+describeConnectorProfiles_connectorLabel :: Lens.Lens' DescribeConnectorProfiles (Prelude.Maybe Prelude.Text)
+describeConnectorProfiles_connectorLabel = Lens.lens (\DescribeConnectorProfiles' {connectorLabel} -> connectorLabel) (\s@DescribeConnectorProfiles' {} a -> s {connectorLabel = a} :: DescribeConnectorProfiles)
+
+-- | The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+describeConnectorProfiles_connectorProfileNames :: Lens.Lens' DescribeConnectorProfiles (Prelude.Maybe [Prelude.Text])
+describeConnectorProfiles_connectorProfileNames = Lens.lens (\DescribeConnectorProfiles' {connectorProfileNames} -> connectorProfileNames) (\s@DescribeConnectorProfiles' {} a -> s {connectorProfileNames = a} :: DescribeConnectorProfiles) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+describeConnectorProfiles_connectorType :: Lens.Lens' DescribeConnectorProfiles (Prelude.Maybe ConnectorType)
+describeConnectorProfiles_connectorType = Lens.lens (\DescribeConnectorProfiles' {connectorType} -> connectorType) (\s@DescribeConnectorProfiles' {} a -> s {connectorType = a} :: DescribeConnectorProfiles)
+
+-- | Specifies the maximum number of items that should be returned in the
+-- result set. The default for @maxResults@ is 20 (for all paginated API
+-- operations).
+describeConnectorProfiles_maxResults :: Lens.Lens' DescribeConnectorProfiles (Prelude.Maybe Prelude.Natural)
+describeConnectorProfiles_maxResults = Lens.lens (\DescribeConnectorProfiles' {maxResults} -> maxResults) (\s@DescribeConnectorProfiles' {} a -> s {maxResults = a} :: DescribeConnectorProfiles)
+
+-- | The pagination token for the next page of data.
+describeConnectorProfiles_nextToken :: Lens.Lens' DescribeConnectorProfiles (Prelude.Maybe Prelude.Text)
+describeConnectorProfiles_nextToken = Lens.lens (\DescribeConnectorProfiles' {nextToken} -> nextToken) (\s@DescribeConnectorProfiles' {} a -> s {nextToken = a} :: DescribeConnectorProfiles)
+
+instance Core.AWSRequest DescribeConnectorProfiles where
+  type
+    AWSResponse DescribeConnectorProfiles =
+      DescribeConnectorProfilesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeConnectorProfilesResponse'
+            Prelude.<$> ( x
+                            Data..?> "connectorProfileDetails"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeConnectorProfiles where
+  hashWithSalt _salt DescribeConnectorProfiles' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` connectorProfileNames
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeConnectorProfiles where
+  rnf DescribeConnectorProfiles' {..} =
+    Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf connectorProfileNames
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeConnectorProfiles where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeConnectorProfiles where
+  toJSON DescribeConnectorProfiles' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorLabel" Data..=)
+              Prelude.<$> connectorLabel,
+            ("connectorProfileNames" Data..=)
+              Prelude.<$> connectorProfileNames,
+            ("connectorType" Data..=) Prelude.<$> connectorType,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeConnectorProfiles where
+  toPath = Prelude.const "/describe-connector-profiles"
+
+instance Data.ToQuery DescribeConnectorProfiles where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeConnectorProfilesResponse' smart constructor.
+data DescribeConnectorProfilesResponse = DescribeConnectorProfilesResponse'
+  { -- | Returns information about the connector profiles associated with the
+    -- flow.
+    connectorProfileDetails :: Prelude.Maybe [ConnectorProfile],
+    -- | The pagination token for the next page of data. If @nextToken=null@,
+    -- this means that all records have been fetched.
+    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 'DescribeConnectorProfilesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorProfileDetails', 'describeConnectorProfilesResponse_connectorProfileDetails' - Returns information about the connector profiles associated with the
+-- flow.
+--
+-- 'nextToken', 'describeConnectorProfilesResponse_nextToken' - The pagination token for the next page of data. If @nextToken=null@,
+-- this means that all records have been fetched.
+--
+-- 'httpStatus', 'describeConnectorProfilesResponse_httpStatus' - The response's http status code.
+newDescribeConnectorProfilesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeConnectorProfilesResponse
+newDescribeConnectorProfilesResponse pHttpStatus_ =
+  DescribeConnectorProfilesResponse'
+    { connectorProfileDetails =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns information about the connector profiles associated with the
+-- flow.
+describeConnectorProfilesResponse_connectorProfileDetails :: Lens.Lens' DescribeConnectorProfilesResponse (Prelude.Maybe [ConnectorProfile])
+describeConnectorProfilesResponse_connectorProfileDetails = Lens.lens (\DescribeConnectorProfilesResponse' {connectorProfileDetails} -> connectorProfileDetails) (\s@DescribeConnectorProfilesResponse' {} a -> s {connectorProfileDetails = a} :: DescribeConnectorProfilesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token for the next page of data. If @nextToken=null@,
+-- this means that all records have been fetched.
+describeConnectorProfilesResponse_nextToken :: Lens.Lens' DescribeConnectorProfilesResponse (Prelude.Maybe Prelude.Text)
+describeConnectorProfilesResponse_nextToken = Lens.lens (\DescribeConnectorProfilesResponse' {nextToken} -> nextToken) (\s@DescribeConnectorProfilesResponse' {} a -> s {nextToken = a} :: DescribeConnectorProfilesResponse)
+
+-- | The response's http status code.
+describeConnectorProfilesResponse_httpStatus :: Lens.Lens' DescribeConnectorProfilesResponse Prelude.Int
+describeConnectorProfilesResponse_httpStatus = Lens.lens (\DescribeConnectorProfilesResponse' {httpStatus} -> httpStatus) (\s@DescribeConnectorProfilesResponse' {} a -> s {httpStatus = a} :: DescribeConnectorProfilesResponse)
+
+instance
+  Prelude.NFData
+    DescribeConnectorProfilesResponse
+  where
+  rnf DescribeConnectorProfilesResponse' {..} =
+    Prelude.rnf connectorProfileDetails
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DescribeConnectors.hs b/gen/Amazonka/AppFlow/DescribeConnectors.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DescribeConnectors.hs
@@ -0,0 +1,230 @@
+{-# 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.AppFlow.DescribeConnectors
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the connectors vended by Amazon AppFlow for specified
+-- connector types. If you don\'t specify a connector type, this operation
+-- describes all connectors vended by Amazon AppFlow. If there are more
+-- connectors than can be returned in one page, the response contains a
+-- @nextToken@ object, which can be be passed in to the next call to the
+-- @DescribeConnectors@ API operation to retrieve the next page.
+module Amazonka.AppFlow.DescribeConnectors
+  ( -- * Creating a Request
+    DescribeConnectors (..),
+    newDescribeConnectors,
+
+    -- * Request Lenses
+    describeConnectors_connectorTypes,
+    describeConnectors_maxResults,
+    describeConnectors_nextToken,
+
+    -- * Destructuring the Response
+    DescribeConnectorsResponse (..),
+    newDescribeConnectorsResponse,
+
+    -- * Response Lenses
+    describeConnectorsResponse_connectorConfigurations,
+    describeConnectorsResponse_connectors,
+    describeConnectorsResponse_nextToken,
+    describeConnectorsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeConnectors' smart constructor.
+data DescribeConnectors = DescribeConnectors'
+  { -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorTypes :: Prelude.Maybe [ConnectorType],
+    -- | The maximum number of items that should be returned in the result set.
+    -- The default is 20.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token for the next page of data.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConnectors' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorTypes', 'describeConnectors_connectorTypes' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'maxResults', 'describeConnectors_maxResults' - The maximum number of items that should be returned in the result set.
+-- The default is 20.
+--
+-- 'nextToken', 'describeConnectors_nextToken' - The pagination token for the next page of data.
+newDescribeConnectors ::
+  DescribeConnectors
+newDescribeConnectors =
+  DescribeConnectors'
+    { connectorTypes =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+describeConnectors_connectorTypes :: Lens.Lens' DescribeConnectors (Prelude.Maybe [ConnectorType])
+describeConnectors_connectorTypes = Lens.lens (\DescribeConnectors' {connectorTypes} -> connectorTypes) (\s@DescribeConnectors' {} a -> s {connectorTypes = a} :: DescribeConnectors) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of items that should be returned in the result set.
+-- The default is 20.
+describeConnectors_maxResults :: Lens.Lens' DescribeConnectors (Prelude.Maybe Prelude.Natural)
+describeConnectors_maxResults = Lens.lens (\DescribeConnectors' {maxResults} -> maxResults) (\s@DescribeConnectors' {} a -> s {maxResults = a} :: DescribeConnectors)
+
+-- | The pagination token for the next page of data.
+describeConnectors_nextToken :: Lens.Lens' DescribeConnectors (Prelude.Maybe Prelude.Text)
+describeConnectors_nextToken = Lens.lens (\DescribeConnectors' {nextToken} -> nextToken) (\s@DescribeConnectors' {} a -> s {nextToken = a} :: DescribeConnectors)
+
+instance Core.AWSRequest DescribeConnectors where
+  type
+    AWSResponse DescribeConnectors =
+      DescribeConnectorsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeConnectorsResponse'
+            Prelude.<$> ( x
+                            Data..?> "connectorConfigurations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "connectors" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeConnectors where
+  hashWithSalt _salt DescribeConnectors' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorTypes
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeConnectors where
+  rnf DescribeConnectors' {..} =
+    Prelude.rnf connectorTypes
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeConnectors where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeConnectors where
+  toJSON DescribeConnectors' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorTypes" Data..=)
+              Prelude.<$> connectorTypes,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeConnectors where
+  toPath = Prelude.const "/describe-connectors"
+
+instance Data.ToQuery DescribeConnectors where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeConnectorsResponse' smart constructor.
+data DescribeConnectorsResponse = DescribeConnectorsResponse'
+  { -- | The configuration that is applied to the connectors used in the flow.
+    connectorConfigurations :: Prelude.Maybe (Prelude.HashMap ConnectorType ConnectorConfiguration),
+    -- | Information about the connectors supported in Amazon AppFlow.
+    connectors :: Prelude.Maybe [ConnectorDetail],
+    -- | The pagination token for the next page of data.
+    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 'DescribeConnectorsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorConfigurations', 'describeConnectorsResponse_connectorConfigurations' - The configuration that is applied to the connectors used in the flow.
+--
+-- 'connectors', 'describeConnectorsResponse_connectors' - Information about the connectors supported in Amazon AppFlow.
+--
+-- 'nextToken', 'describeConnectorsResponse_nextToken' - The pagination token for the next page of data.
+--
+-- 'httpStatus', 'describeConnectorsResponse_httpStatus' - The response's http status code.
+newDescribeConnectorsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeConnectorsResponse
+newDescribeConnectorsResponse pHttpStatus_ =
+  DescribeConnectorsResponse'
+    { connectorConfigurations =
+        Prelude.Nothing,
+      connectors = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The configuration that is applied to the connectors used in the flow.
+describeConnectorsResponse_connectorConfigurations :: Lens.Lens' DescribeConnectorsResponse (Prelude.Maybe (Prelude.HashMap ConnectorType ConnectorConfiguration))
+describeConnectorsResponse_connectorConfigurations = Lens.lens (\DescribeConnectorsResponse' {connectorConfigurations} -> connectorConfigurations) (\s@DescribeConnectorsResponse' {} a -> s {connectorConfigurations = a} :: DescribeConnectorsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Information about the connectors supported in Amazon AppFlow.
+describeConnectorsResponse_connectors :: Lens.Lens' DescribeConnectorsResponse (Prelude.Maybe [ConnectorDetail])
+describeConnectorsResponse_connectors = Lens.lens (\DescribeConnectorsResponse' {connectors} -> connectors) (\s@DescribeConnectorsResponse' {} a -> s {connectors = a} :: DescribeConnectorsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token for the next page of data.
+describeConnectorsResponse_nextToken :: Lens.Lens' DescribeConnectorsResponse (Prelude.Maybe Prelude.Text)
+describeConnectorsResponse_nextToken = Lens.lens (\DescribeConnectorsResponse' {nextToken} -> nextToken) (\s@DescribeConnectorsResponse' {} a -> s {nextToken = a} :: DescribeConnectorsResponse)
+
+-- | The response's http status code.
+describeConnectorsResponse_httpStatus :: Lens.Lens' DescribeConnectorsResponse Prelude.Int
+describeConnectorsResponse_httpStatus = Lens.lens (\DescribeConnectorsResponse' {httpStatus} -> httpStatus) (\s@DescribeConnectorsResponse' {} a -> s {httpStatus = a} :: DescribeConnectorsResponse)
+
+instance Prelude.NFData DescribeConnectorsResponse where
+  rnf DescribeConnectorsResponse' {..} =
+    Prelude.rnf connectorConfigurations
+      `Prelude.seq` Prelude.rnf connectors
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DescribeFlow.hs b/gen/Amazonka/AppFlow/DescribeFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DescribeFlow.hs
@@ -0,0 +1,446 @@
+{-# 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.AppFlow.DescribeFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a description of the specified flow.
+module Amazonka.AppFlow.DescribeFlow
+  ( -- * Creating a Request
+    DescribeFlow (..),
+    newDescribeFlow,
+
+    -- * Request Lenses
+    describeFlow_flowName,
+
+    -- * Destructuring the Response
+    DescribeFlowResponse (..),
+    newDescribeFlowResponse,
+
+    -- * Response Lenses
+    describeFlowResponse_createdAt,
+    describeFlowResponse_createdBy,
+    describeFlowResponse_description,
+    describeFlowResponse_destinationFlowConfigList,
+    describeFlowResponse_flowArn,
+    describeFlowResponse_flowName,
+    describeFlowResponse_flowStatus,
+    describeFlowResponse_flowStatusMessage,
+    describeFlowResponse_kmsArn,
+    describeFlowResponse_lastRunExecutionDetails,
+    describeFlowResponse_lastRunMetadataCatalogDetails,
+    describeFlowResponse_lastUpdatedAt,
+    describeFlowResponse_lastUpdatedBy,
+    describeFlowResponse_metadataCatalogConfig,
+    describeFlowResponse_schemaVersion,
+    describeFlowResponse_sourceFlowConfig,
+    describeFlowResponse_tags,
+    describeFlowResponse_tasks,
+    describeFlowResponse_triggerConfig,
+    describeFlowResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeFlow' smart constructor.
+data DescribeFlow = DescribeFlow'
+  { -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFlow' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowName', 'describeFlow_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+newDescribeFlow ::
+  -- | 'flowName'
+  Prelude.Text ->
+  DescribeFlow
+newDescribeFlow pFlowName_ =
+  DescribeFlow' {flowName = pFlowName_}
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+describeFlow_flowName :: Lens.Lens' DescribeFlow Prelude.Text
+describeFlow_flowName = Lens.lens (\DescribeFlow' {flowName} -> flowName) (\s@DescribeFlow' {} a -> s {flowName = a} :: DescribeFlow)
+
+instance Core.AWSRequest DescribeFlow where
+  type AWSResponse DescribeFlow = DescribeFlowResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFlowResponse'
+            Prelude.<$> (x Data..?> "createdAt")
+            Prelude.<*> (x Data..?> "createdBy")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> ( x
+                            Data..?> "destinationFlowConfigList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "flowArn")
+            Prelude.<*> (x Data..?> "flowName")
+            Prelude.<*> (x Data..?> "flowStatus")
+            Prelude.<*> (x Data..?> "flowStatusMessage")
+            Prelude.<*> (x Data..?> "kmsArn")
+            Prelude.<*> (x Data..?> "lastRunExecutionDetails")
+            Prelude.<*> ( x
+                            Data..?> "lastRunMetadataCatalogDetails"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "lastUpdatedAt")
+            Prelude.<*> (x Data..?> "lastUpdatedBy")
+            Prelude.<*> (x Data..?> "metadataCatalogConfig")
+            Prelude.<*> (x Data..?> "schemaVersion")
+            Prelude.<*> (x Data..?> "sourceFlowConfig")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "tasks" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "triggerConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFlow where
+  hashWithSalt _salt DescribeFlow' {..} =
+    _salt `Prelude.hashWithSalt` flowName
+
+instance Prelude.NFData DescribeFlow where
+  rnf DescribeFlow' {..} = Prelude.rnf flowName
+
+instance Data.ToHeaders DescribeFlow where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFlow where
+  toJSON DescribeFlow' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("flowName" Data..= flowName)]
+      )
+
+instance Data.ToPath DescribeFlow where
+  toPath = Prelude.const "/describe-flow"
+
+instance Data.ToQuery DescribeFlow where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFlowResponse' smart constructor.
+data DescribeFlowResponse = DescribeFlowResponse'
+  { -- | Specifies when the flow was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the user who created the flow.
+    createdBy :: Prelude.Maybe Prelude.Text,
+    -- | A description of the flow.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The configuration that controls how Amazon AppFlow transfers data to the
+    -- destination connector.
+    destinationFlowConfigList :: Prelude.Maybe [DestinationFlowConfig],
+    -- | The flow\'s Amazon Resource Name (ARN).
+    flowArn :: Prelude.Maybe Prelude.Text,
+    -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the current status of the flow.
+    flowStatus :: Prelude.Maybe FlowStatus,
+    -- | Contains an error message if the flow status is in a suspended or error
+    -- state. This applies only to scheduled or event-triggered flows.
+    flowStatusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+    -- you provide for encryption. This is required if you do not want to use
+    -- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+    -- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+    kmsArn :: Prelude.Maybe Prelude.Text,
+    -- | Describes the details of the most recent flow run.
+    lastRunExecutionDetails :: Prelude.Maybe ExecutionDetails,
+    -- | Describes the metadata catalog, metadata table, and data partitions that
+    -- Amazon AppFlow used for the associated flow run.
+    lastRunMetadataCatalogDetails :: Prelude.Maybe [MetadataCatalogDetail],
+    -- | Specifies when the flow was last updated.
+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the user name of the account that performed the most recent
+    -- update.
+    lastUpdatedBy :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+    -- the data that\'s transferred by the associated flow. When Amazon AppFlow
+    -- catalogs the data from a flow, it stores metadata in a data catalog.
+    metadataCatalogConfig :: Prelude.Maybe MetadataCatalogConfig,
+    -- | The version number of your data schema. Amazon AppFlow assigns this
+    -- version number. The version number increases by one when you change any
+    -- of the following settings in your flow configuration:
+    --
+    -- -   Source-to-destination field mappings
+    --
+    -- -   Field data types
+    --
+    -- -   Partition keys
+    schemaVersion :: Prelude.Maybe Prelude.Integer,
+    -- | The configuration that controls how Amazon AppFlow retrieves data from
+    -- the source connector.
+    sourceFlowConfig :: Prelude.Maybe SourceFlowConfig,
+    -- | The tags used to organize, track, or control access for your flow.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of tasks that Amazon AppFlow performs while transferring the data
+    -- in the flow run.
+    tasks :: Prelude.Maybe [Task],
+    -- | The trigger settings that determine how and when the flow runs.
+    triggerConfig :: Prelude.Maybe TriggerConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFlowResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeFlowResponse_createdAt' - Specifies when the flow was created.
+--
+-- 'createdBy', 'describeFlowResponse_createdBy' - The ARN of the user who created the flow.
+--
+-- 'description', 'describeFlowResponse_description' - A description of the flow.
+--
+-- 'destinationFlowConfigList', 'describeFlowResponse_destinationFlowConfigList' - The configuration that controls how Amazon AppFlow transfers data to the
+-- destination connector.
+--
+-- 'flowArn', 'describeFlowResponse_flowArn' - The flow\'s Amazon Resource Name (ARN).
+--
+-- 'flowName', 'describeFlowResponse_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+--
+-- 'flowStatus', 'describeFlowResponse_flowStatus' - Indicates the current status of the flow.
+--
+-- 'flowStatusMessage', 'describeFlowResponse_flowStatusMessage' - Contains an error message if the flow status is in a suspended or error
+-- state. This applies only to scheduled or event-triggered flows.
+--
+-- 'kmsArn', 'describeFlowResponse_kmsArn' - The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+-- you provide for encryption. This is required if you do not want to use
+-- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+-- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+--
+-- 'lastRunExecutionDetails', 'describeFlowResponse_lastRunExecutionDetails' - Describes the details of the most recent flow run.
+--
+-- 'lastRunMetadataCatalogDetails', 'describeFlowResponse_lastRunMetadataCatalogDetails' - Describes the metadata catalog, metadata table, and data partitions that
+-- Amazon AppFlow used for the associated flow run.
+--
+-- 'lastUpdatedAt', 'describeFlowResponse_lastUpdatedAt' - Specifies when the flow was last updated.
+--
+-- 'lastUpdatedBy', 'describeFlowResponse_lastUpdatedBy' - Specifies the user name of the account that performed the most recent
+-- update.
+--
+-- 'metadataCatalogConfig', 'describeFlowResponse_metadataCatalogConfig' - Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- the data that\'s transferred by the associated flow. When Amazon AppFlow
+-- catalogs the data from a flow, it stores metadata in a data catalog.
+--
+-- 'schemaVersion', 'describeFlowResponse_schemaVersion' - The version number of your data schema. Amazon AppFlow assigns this
+-- version number. The version number increases by one when you change any
+-- of the following settings in your flow configuration:
+--
+-- -   Source-to-destination field mappings
+--
+-- -   Field data types
+--
+-- -   Partition keys
+--
+-- 'sourceFlowConfig', 'describeFlowResponse_sourceFlowConfig' - The configuration that controls how Amazon AppFlow retrieves data from
+-- the source connector.
+--
+-- 'tags', 'describeFlowResponse_tags' - The tags used to organize, track, or control access for your flow.
+--
+-- 'tasks', 'describeFlowResponse_tasks' - A list of tasks that Amazon AppFlow performs while transferring the data
+-- in the flow run.
+--
+-- 'triggerConfig', 'describeFlowResponse_triggerConfig' - The trigger settings that determine how and when the flow runs.
+--
+-- 'httpStatus', 'describeFlowResponse_httpStatus' - The response's http status code.
+newDescribeFlowResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeFlowResponse
+newDescribeFlowResponse pHttpStatus_ =
+  DescribeFlowResponse'
+    { createdAt = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      description = Prelude.Nothing,
+      destinationFlowConfigList = Prelude.Nothing,
+      flowArn = Prelude.Nothing,
+      flowName = Prelude.Nothing,
+      flowStatus = Prelude.Nothing,
+      flowStatusMessage = Prelude.Nothing,
+      kmsArn = Prelude.Nothing,
+      lastRunExecutionDetails = Prelude.Nothing,
+      lastRunMetadataCatalogDetails = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      lastUpdatedBy = Prelude.Nothing,
+      metadataCatalogConfig = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      sourceFlowConfig = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      tasks = Prelude.Nothing,
+      triggerConfig = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Specifies when the flow was created.
+describeFlowResponse_createdAt :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.UTCTime)
+describeFlowResponse_createdAt = Lens.lens (\DescribeFlowResponse' {createdAt} -> createdAt) (\s@DescribeFlowResponse' {} a -> s {createdAt = a} :: DescribeFlowResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the user who created the flow.
+describeFlowResponse_createdBy :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_createdBy = Lens.lens (\DescribeFlowResponse' {createdBy} -> createdBy) (\s@DescribeFlowResponse' {} a -> s {createdBy = a} :: DescribeFlowResponse)
+
+-- | A description of the flow.
+describeFlowResponse_description :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_description = Lens.lens (\DescribeFlowResponse' {description} -> description) (\s@DescribeFlowResponse' {} a -> s {description = a} :: DescribeFlowResponse)
+
+-- | The configuration that controls how Amazon AppFlow transfers data to the
+-- destination connector.
+describeFlowResponse_destinationFlowConfigList :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe [DestinationFlowConfig])
+describeFlowResponse_destinationFlowConfigList = Lens.lens (\DescribeFlowResponse' {destinationFlowConfigList} -> destinationFlowConfigList) (\s@DescribeFlowResponse' {} a -> s {destinationFlowConfigList = a} :: DescribeFlowResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The flow\'s Amazon Resource Name (ARN).
+describeFlowResponse_flowArn :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_flowArn = Lens.lens (\DescribeFlowResponse' {flowArn} -> flowArn) (\s@DescribeFlowResponse' {} a -> s {flowArn = a} :: DescribeFlowResponse)
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+describeFlowResponse_flowName :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_flowName = Lens.lens (\DescribeFlowResponse' {flowName} -> flowName) (\s@DescribeFlowResponse' {} a -> s {flowName = a} :: DescribeFlowResponse)
+
+-- | Indicates the current status of the flow.
+describeFlowResponse_flowStatus :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe FlowStatus)
+describeFlowResponse_flowStatus = Lens.lens (\DescribeFlowResponse' {flowStatus} -> flowStatus) (\s@DescribeFlowResponse' {} a -> s {flowStatus = a} :: DescribeFlowResponse)
+
+-- | Contains an error message if the flow status is in a suspended or error
+-- state. This applies only to scheduled or event-triggered flows.
+describeFlowResponse_flowStatusMessage :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_flowStatusMessage = Lens.lens (\DescribeFlowResponse' {flowStatusMessage} -> flowStatusMessage) (\s@DescribeFlowResponse' {} a -> s {flowStatusMessage = a} :: DescribeFlowResponse)
+
+-- | The ARN (Amazon Resource Name) of the Key Management Service (KMS) key
+-- you provide for encryption. This is required if you do not want to use
+-- the Amazon AppFlow-managed KMS key. If you don\'t provide anything here,
+-- Amazon AppFlow uses the Amazon AppFlow-managed KMS key.
+describeFlowResponse_kmsArn :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_kmsArn = Lens.lens (\DescribeFlowResponse' {kmsArn} -> kmsArn) (\s@DescribeFlowResponse' {} a -> s {kmsArn = a} :: DescribeFlowResponse)
+
+-- | Describes the details of the most recent flow run.
+describeFlowResponse_lastRunExecutionDetails :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe ExecutionDetails)
+describeFlowResponse_lastRunExecutionDetails = Lens.lens (\DescribeFlowResponse' {lastRunExecutionDetails} -> lastRunExecutionDetails) (\s@DescribeFlowResponse' {} a -> s {lastRunExecutionDetails = a} :: DescribeFlowResponse)
+
+-- | Describes the metadata catalog, metadata table, and data partitions that
+-- Amazon AppFlow used for the associated flow run.
+describeFlowResponse_lastRunMetadataCatalogDetails :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe [MetadataCatalogDetail])
+describeFlowResponse_lastRunMetadataCatalogDetails = Lens.lens (\DescribeFlowResponse' {lastRunMetadataCatalogDetails} -> lastRunMetadataCatalogDetails) (\s@DescribeFlowResponse' {} a -> s {lastRunMetadataCatalogDetails = a} :: DescribeFlowResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies when the flow was last updated.
+describeFlowResponse_lastUpdatedAt :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.UTCTime)
+describeFlowResponse_lastUpdatedAt = Lens.lens (\DescribeFlowResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@DescribeFlowResponse' {} a -> s {lastUpdatedAt = a} :: DescribeFlowResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the user name of the account that performed the most recent
+-- update.
+describeFlowResponse_lastUpdatedBy :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Text)
+describeFlowResponse_lastUpdatedBy = Lens.lens (\DescribeFlowResponse' {lastUpdatedBy} -> lastUpdatedBy) (\s@DescribeFlowResponse' {} a -> s {lastUpdatedBy = a} :: DescribeFlowResponse)
+
+-- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- the data that\'s transferred by the associated flow. When Amazon AppFlow
+-- catalogs the data from a flow, it stores metadata in a data catalog.
+describeFlowResponse_metadataCatalogConfig :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe MetadataCatalogConfig)
+describeFlowResponse_metadataCatalogConfig = Lens.lens (\DescribeFlowResponse' {metadataCatalogConfig} -> metadataCatalogConfig) (\s@DescribeFlowResponse' {} a -> s {metadataCatalogConfig = a} :: DescribeFlowResponse)
+
+-- | The version number of your data schema. Amazon AppFlow assigns this
+-- version number. The version number increases by one when you change any
+-- of the following settings in your flow configuration:
+--
+-- -   Source-to-destination field mappings
+--
+-- -   Field data types
+--
+-- -   Partition keys
+describeFlowResponse_schemaVersion :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe Prelude.Integer)
+describeFlowResponse_schemaVersion = Lens.lens (\DescribeFlowResponse' {schemaVersion} -> schemaVersion) (\s@DescribeFlowResponse' {} a -> s {schemaVersion = a} :: DescribeFlowResponse)
+
+-- | The configuration that controls how Amazon AppFlow retrieves data from
+-- the source connector.
+describeFlowResponse_sourceFlowConfig :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe SourceFlowConfig)
+describeFlowResponse_sourceFlowConfig = Lens.lens (\DescribeFlowResponse' {sourceFlowConfig} -> sourceFlowConfig) (\s@DescribeFlowResponse' {} a -> s {sourceFlowConfig = a} :: DescribeFlowResponse)
+
+-- | The tags used to organize, track, or control access for your flow.
+describeFlowResponse_tags :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeFlowResponse_tags = Lens.lens (\DescribeFlowResponse' {tags} -> tags) (\s@DescribeFlowResponse' {} a -> s {tags = a} :: DescribeFlowResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of tasks that Amazon AppFlow performs while transferring the data
+-- in the flow run.
+describeFlowResponse_tasks :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe [Task])
+describeFlowResponse_tasks = Lens.lens (\DescribeFlowResponse' {tasks} -> tasks) (\s@DescribeFlowResponse' {} a -> s {tasks = a} :: DescribeFlowResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The trigger settings that determine how and when the flow runs.
+describeFlowResponse_triggerConfig :: Lens.Lens' DescribeFlowResponse (Prelude.Maybe TriggerConfig)
+describeFlowResponse_triggerConfig = Lens.lens (\DescribeFlowResponse' {triggerConfig} -> triggerConfig) (\s@DescribeFlowResponse' {} a -> s {triggerConfig = a} :: DescribeFlowResponse)
+
+-- | The response's http status code.
+describeFlowResponse_httpStatus :: Lens.Lens' DescribeFlowResponse Prelude.Int
+describeFlowResponse_httpStatus = Lens.lens (\DescribeFlowResponse' {httpStatus} -> httpStatus) (\s@DescribeFlowResponse' {} a -> s {httpStatus = a} :: DescribeFlowResponse)
+
+instance Prelude.NFData DescribeFlowResponse where
+  rnf DescribeFlowResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf destinationFlowConfigList
+      `Prelude.seq` Prelude.rnf flowArn
+      `Prelude.seq` Prelude.rnf flowName
+      `Prelude.seq` Prelude.rnf flowStatus
+      `Prelude.seq` Prelude.rnf flowStatusMessage
+      `Prelude.seq` Prelude.rnf kmsArn
+      `Prelude.seq` Prelude.rnf lastRunExecutionDetails
+      `Prelude.seq` Prelude.rnf lastRunMetadataCatalogDetails
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf lastUpdatedBy
+      `Prelude.seq` Prelude.rnf metadataCatalogConfig
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf sourceFlowConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf tasks
+      `Prelude.seq` Prelude.rnf triggerConfig
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/DescribeFlowExecutionRecords.hs b/gen/Amazonka/AppFlow/DescribeFlowExecutionRecords.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/DescribeFlowExecutionRecords.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.DescribeFlowExecutionRecords
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Fetches the execution history of the flow.
+module Amazonka.AppFlow.DescribeFlowExecutionRecords
+  ( -- * Creating a Request
+    DescribeFlowExecutionRecords (..),
+    newDescribeFlowExecutionRecords,
+
+    -- * Request Lenses
+    describeFlowExecutionRecords_maxResults,
+    describeFlowExecutionRecords_nextToken,
+    describeFlowExecutionRecords_flowName,
+
+    -- * Destructuring the Response
+    DescribeFlowExecutionRecordsResponse (..),
+    newDescribeFlowExecutionRecordsResponse,
+
+    -- * Response Lenses
+    describeFlowExecutionRecordsResponse_flowExecutions,
+    describeFlowExecutionRecordsResponse_nextToken,
+    describeFlowExecutionRecordsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeFlowExecutionRecords' smart constructor.
+data DescribeFlowExecutionRecords = DescribeFlowExecutionRecords'
+  { -- | Specifies the maximum number of items that should be returned in the
+    -- result set. The default for @maxResults@ is 20 (for all paginated API
+    -- operations).
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token for the next page of data.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFlowExecutionRecords' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeFlowExecutionRecords_maxResults' - Specifies the maximum number of items that should be returned in the
+-- result set. The default for @maxResults@ is 20 (for all paginated API
+-- operations).
+--
+-- 'nextToken', 'describeFlowExecutionRecords_nextToken' - The pagination token for the next page of data.
+--
+-- 'flowName', 'describeFlowExecutionRecords_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+newDescribeFlowExecutionRecords ::
+  -- | 'flowName'
+  Prelude.Text ->
+  DescribeFlowExecutionRecords
+newDescribeFlowExecutionRecords pFlowName_ =
+  DescribeFlowExecutionRecords'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      flowName = pFlowName_
+    }
+
+-- | Specifies the maximum number of items that should be returned in the
+-- result set. The default for @maxResults@ is 20 (for all paginated API
+-- operations).
+describeFlowExecutionRecords_maxResults :: Lens.Lens' DescribeFlowExecutionRecords (Prelude.Maybe Prelude.Natural)
+describeFlowExecutionRecords_maxResults = Lens.lens (\DescribeFlowExecutionRecords' {maxResults} -> maxResults) (\s@DescribeFlowExecutionRecords' {} a -> s {maxResults = a} :: DescribeFlowExecutionRecords)
+
+-- | The pagination token for the next page of data.
+describeFlowExecutionRecords_nextToken :: Lens.Lens' DescribeFlowExecutionRecords (Prelude.Maybe Prelude.Text)
+describeFlowExecutionRecords_nextToken = Lens.lens (\DescribeFlowExecutionRecords' {nextToken} -> nextToken) (\s@DescribeFlowExecutionRecords' {} a -> s {nextToken = a} :: DescribeFlowExecutionRecords)
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+describeFlowExecutionRecords_flowName :: Lens.Lens' DescribeFlowExecutionRecords Prelude.Text
+describeFlowExecutionRecords_flowName = Lens.lens (\DescribeFlowExecutionRecords' {flowName} -> flowName) (\s@DescribeFlowExecutionRecords' {} a -> s {flowName = a} :: DescribeFlowExecutionRecords)
+
+instance Core.AWSRequest DescribeFlowExecutionRecords where
+  type
+    AWSResponse DescribeFlowExecutionRecords =
+      DescribeFlowExecutionRecordsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFlowExecutionRecordsResponse'
+            Prelude.<$> (x Data..?> "flowExecutions" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeFlowExecutionRecords
+  where
+  hashWithSalt _salt DescribeFlowExecutionRecords' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` flowName
+
+instance Prelude.NFData DescribeFlowExecutionRecords where
+  rnf DescribeFlowExecutionRecords' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf flowName
+
+instance Data.ToHeaders DescribeFlowExecutionRecords where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFlowExecutionRecords where
+  toJSON DescribeFlowExecutionRecords' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("flowName" Data..= flowName)
+          ]
+      )
+
+instance Data.ToPath DescribeFlowExecutionRecords where
+  toPath =
+    Prelude.const "/describe-flow-execution-records"
+
+instance Data.ToQuery DescribeFlowExecutionRecords where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFlowExecutionRecordsResponse' smart constructor.
+data DescribeFlowExecutionRecordsResponse = DescribeFlowExecutionRecordsResponse'
+  { -- | Returns a list of all instances when this flow was run.
+    flowExecutions :: Prelude.Maybe [ExecutionRecord],
+    -- | The pagination token for the next page of data.
+    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 'DescribeFlowExecutionRecordsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowExecutions', 'describeFlowExecutionRecordsResponse_flowExecutions' - Returns a list of all instances when this flow was run.
+--
+-- 'nextToken', 'describeFlowExecutionRecordsResponse_nextToken' - The pagination token for the next page of data.
+--
+-- 'httpStatus', 'describeFlowExecutionRecordsResponse_httpStatus' - The response's http status code.
+newDescribeFlowExecutionRecordsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeFlowExecutionRecordsResponse
+newDescribeFlowExecutionRecordsResponse pHttpStatus_ =
+  DescribeFlowExecutionRecordsResponse'
+    { flowExecutions =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns a list of all instances when this flow was run.
+describeFlowExecutionRecordsResponse_flowExecutions :: Lens.Lens' DescribeFlowExecutionRecordsResponse (Prelude.Maybe [ExecutionRecord])
+describeFlowExecutionRecordsResponse_flowExecutions = Lens.lens (\DescribeFlowExecutionRecordsResponse' {flowExecutions} -> flowExecutions) (\s@DescribeFlowExecutionRecordsResponse' {} a -> s {flowExecutions = a} :: DescribeFlowExecutionRecordsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token for the next page of data.
+describeFlowExecutionRecordsResponse_nextToken :: Lens.Lens' DescribeFlowExecutionRecordsResponse (Prelude.Maybe Prelude.Text)
+describeFlowExecutionRecordsResponse_nextToken = Lens.lens (\DescribeFlowExecutionRecordsResponse' {nextToken} -> nextToken) (\s@DescribeFlowExecutionRecordsResponse' {} a -> s {nextToken = a} :: DescribeFlowExecutionRecordsResponse)
+
+-- | The response's http status code.
+describeFlowExecutionRecordsResponse_httpStatus :: Lens.Lens' DescribeFlowExecutionRecordsResponse Prelude.Int
+describeFlowExecutionRecordsResponse_httpStatus = Lens.lens (\DescribeFlowExecutionRecordsResponse' {httpStatus} -> httpStatus) (\s@DescribeFlowExecutionRecordsResponse' {} a -> s {httpStatus = a} :: DescribeFlowExecutionRecordsResponse)
+
+instance
+  Prelude.NFData
+    DescribeFlowExecutionRecordsResponse
+  where
+  rnf DescribeFlowExecutionRecordsResponse' {..} =
+    Prelude.rnf flowExecutions
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/Lens.hs b/gen/Amazonka/AppFlow/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Lens.hs
@@ -0,0 +1,1153 @@
+{-# 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.AppFlow.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.AppFlow.Lens
+  ( -- * Operations
+
+    -- ** CreateConnectorProfile
+    createConnectorProfile_connectorLabel,
+    createConnectorProfile_kmsArn,
+    createConnectorProfile_connectorProfileName,
+    createConnectorProfile_connectorType,
+    createConnectorProfile_connectionMode,
+    createConnectorProfile_connectorProfileConfig,
+    createConnectorProfileResponse_connectorProfileArn,
+    createConnectorProfileResponse_httpStatus,
+
+    -- ** CreateFlow
+    createFlow_description,
+    createFlow_kmsArn,
+    createFlow_metadataCatalogConfig,
+    createFlow_tags,
+    createFlow_flowName,
+    createFlow_triggerConfig,
+    createFlow_sourceFlowConfig,
+    createFlow_destinationFlowConfigList,
+    createFlow_tasks,
+    createFlowResponse_flowArn,
+    createFlowResponse_flowStatus,
+    createFlowResponse_httpStatus,
+
+    -- ** DeleteConnectorProfile
+    deleteConnectorProfile_forceDelete,
+    deleteConnectorProfile_connectorProfileName,
+    deleteConnectorProfileResponse_httpStatus,
+
+    -- ** DeleteFlow
+    deleteFlow_forceDelete,
+    deleteFlow_flowName,
+    deleteFlowResponse_httpStatus,
+
+    -- ** DescribeConnector
+    describeConnector_connectorLabel,
+    describeConnector_connectorType,
+    describeConnectorResponse_connectorConfiguration,
+    describeConnectorResponse_httpStatus,
+
+    -- ** DescribeConnectorEntity
+    describeConnectorEntity_apiVersion,
+    describeConnectorEntity_connectorProfileName,
+    describeConnectorEntity_connectorType,
+    describeConnectorEntity_connectorEntityName,
+    describeConnectorEntityResponse_httpStatus,
+    describeConnectorEntityResponse_connectorEntityFields,
+
+    -- ** DescribeConnectorProfiles
+    describeConnectorProfiles_connectorLabel,
+    describeConnectorProfiles_connectorProfileNames,
+    describeConnectorProfiles_connectorType,
+    describeConnectorProfiles_maxResults,
+    describeConnectorProfiles_nextToken,
+    describeConnectorProfilesResponse_connectorProfileDetails,
+    describeConnectorProfilesResponse_nextToken,
+    describeConnectorProfilesResponse_httpStatus,
+
+    -- ** DescribeConnectors
+    describeConnectors_connectorTypes,
+    describeConnectors_maxResults,
+    describeConnectors_nextToken,
+    describeConnectorsResponse_connectorConfigurations,
+    describeConnectorsResponse_connectors,
+    describeConnectorsResponse_nextToken,
+    describeConnectorsResponse_httpStatus,
+
+    -- ** DescribeFlow
+    describeFlow_flowName,
+    describeFlowResponse_createdAt,
+    describeFlowResponse_createdBy,
+    describeFlowResponse_description,
+    describeFlowResponse_destinationFlowConfigList,
+    describeFlowResponse_flowArn,
+    describeFlowResponse_flowName,
+    describeFlowResponse_flowStatus,
+    describeFlowResponse_flowStatusMessage,
+    describeFlowResponse_kmsArn,
+    describeFlowResponse_lastRunExecutionDetails,
+    describeFlowResponse_lastRunMetadataCatalogDetails,
+    describeFlowResponse_lastUpdatedAt,
+    describeFlowResponse_lastUpdatedBy,
+    describeFlowResponse_metadataCatalogConfig,
+    describeFlowResponse_schemaVersion,
+    describeFlowResponse_sourceFlowConfig,
+    describeFlowResponse_tags,
+    describeFlowResponse_tasks,
+    describeFlowResponse_triggerConfig,
+    describeFlowResponse_httpStatus,
+
+    -- ** DescribeFlowExecutionRecords
+    describeFlowExecutionRecords_maxResults,
+    describeFlowExecutionRecords_nextToken,
+    describeFlowExecutionRecords_flowName,
+    describeFlowExecutionRecordsResponse_flowExecutions,
+    describeFlowExecutionRecordsResponse_nextToken,
+    describeFlowExecutionRecordsResponse_httpStatus,
+
+    -- ** ListConnectorEntities
+    listConnectorEntities_apiVersion,
+    listConnectorEntities_connectorProfileName,
+    listConnectorEntities_connectorType,
+    listConnectorEntities_entitiesPath,
+    listConnectorEntities_maxResults,
+    listConnectorEntities_nextToken,
+    listConnectorEntitiesResponse_nextToken,
+    listConnectorEntitiesResponse_httpStatus,
+    listConnectorEntitiesResponse_connectorEntityMap,
+
+    -- ** ListConnectors
+    listConnectors_maxResults,
+    listConnectors_nextToken,
+    listConnectorsResponse_connectors,
+    listConnectorsResponse_nextToken,
+    listConnectorsResponse_httpStatus,
+
+    -- ** ListFlows
+    listFlows_maxResults,
+    listFlows_nextToken,
+    listFlowsResponse_flows,
+    listFlowsResponse_nextToken,
+    listFlowsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** RegisterConnector
+    registerConnector_connectorLabel,
+    registerConnector_connectorProvisioningConfig,
+    registerConnector_connectorProvisioningType,
+    registerConnector_description,
+    registerConnectorResponse_connectorArn,
+    registerConnectorResponse_httpStatus,
+
+    -- ** StartFlow
+    startFlow_flowName,
+    startFlowResponse_executionId,
+    startFlowResponse_flowArn,
+    startFlowResponse_flowStatus,
+    startFlowResponse_httpStatus,
+
+    -- ** StopFlow
+    stopFlow_flowName,
+    stopFlowResponse_flowArn,
+    stopFlowResponse_flowStatus,
+    stopFlowResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UnregisterConnector
+    unregisterConnector_forceDelete,
+    unregisterConnector_connectorLabel,
+    unregisterConnectorResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateConnectorProfile
+    updateConnectorProfile_connectorProfileName,
+    updateConnectorProfile_connectionMode,
+    updateConnectorProfile_connectorProfileConfig,
+    updateConnectorProfileResponse_connectorProfileArn,
+    updateConnectorProfileResponse_httpStatus,
+
+    -- ** UpdateConnectorRegistration
+    updateConnectorRegistration_connectorProvisioningConfig,
+    updateConnectorRegistration_description,
+    updateConnectorRegistration_connectorLabel,
+    updateConnectorRegistrationResponse_connectorArn,
+    updateConnectorRegistrationResponse_httpStatus,
+
+    -- ** UpdateFlow
+    updateFlow_description,
+    updateFlow_metadataCatalogConfig,
+    updateFlow_flowName,
+    updateFlow_triggerConfig,
+    updateFlow_sourceFlowConfig,
+    updateFlow_destinationFlowConfigList,
+    updateFlow_tasks,
+    updateFlowResponse_flowStatus,
+    updateFlowResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AggregationConfig
+    aggregationConfig_aggregationType,
+    aggregationConfig_targetFileSize,
+
+    -- ** AmplitudeConnectorProfileCredentials
+    amplitudeConnectorProfileCredentials_apiKey,
+    amplitudeConnectorProfileCredentials_secretKey,
+
+    -- ** AmplitudeConnectorProfileProperties
+
+    -- ** AmplitudeMetadata
+
+    -- ** AmplitudeSourceProperties
+    amplitudeSourceProperties_object,
+
+    -- ** ApiKeyCredentials
+    apiKeyCredentials_apiSecretKey,
+    apiKeyCredentials_apiKey,
+
+    -- ** AuthParameter
+    authParameter_connectorSuppliedValues,
+    authParameter_description,
+    authParameter_isRequired,
+    authParameter_isSensitiveField,
+    authParameter_key,
+    authParameter_label,
+
+    -- ** AuthenticationConfig
+    authenticationConfig_customAuthConfigs,
+    authenticationConfig_isApiKeyAuthSupported,
+    authenticationConfig_isBasicAuthSupported,
+    authenticationConfig_isCustomAuthSupported,
+    authenticationConfig_isOAuth2Supported,
+    authenticationConfig_oAuth2Defaults,
+
+    -- ** BasicAuthCredentials
+    basicAuthCredentials_username,
+    basicAuthCredentials_password,
+
+    -- ** ConnectorConfiguration
+    connectorConfiguration_authenticationConfig,
+    connectorConfiguration_canUseAsDestination,
+    connectorConfiguration_canUseAsSource,
+    connectorConfiguration_connectorArn,
+    connectorConfiguration_connectorDescription,
+    connectorConfiguration_connectorLabel,
+    connectorConfiguration_connectorMetadata,
+    connectorConfiguration_connectorModes,
+    connectorConfiguration_connectorName,
+    connectorConfiguration_connectorOwner,
+    connectorConfiguration_connectorProvisioningConfig,
+    connectorConfiguration_connectorProvisioningType,
+    connectorConfiguration_connectorRuntimeSettings,
+    connectorConfiguration_connectorType,
+    connectorConfiguration_connectorVersion,
+    connectorConfiguration_isPrivateLinkEnabled,
+    connectorConfiguration_isPrivateLinkEndpointUrlRequired,
+    connectorConfiguration_logoURL,
+    connectorConfiguration_registeredAt,
+    connectorConfiguration_registeredBy,
+    connectorConfiguration_supportedApiVersions,
+    connectorConfiguration_supportedDestinationConnectors,
+    connectorConfiguration_supportedOperators,
+    connectorConfiguration_supportedSchedulingFrequencies,
+    connectorConfiguration_supportedTriggerTypes,
+    connectorConfiguration_supportedWriteOperations,
+
+    -- ** ConnectorDetail
+    connectorDetail_applicationType,
+    connectorDetail_connectorDescription,
+    connectorDetail_connectorLabel,
+    connectorDetail_connectorModes,
+    connectorDetail_connectorName,
+    connectorDetail_connectorOwner,
+    connectorDetail_connectorProvisioningType,
+    connectorDetail_connectorType,
+    connectorDetail_connectorVersion,
+    connectorDetail_registeredAt,
+    connectorDetail_registeredBy,
+
+    -- ** ConnectorEntity
+    connectorEntity_hasNestedEntities,
+    connectorEntity_label,
+    connectorEntity_name,
+
+    -- ** ConnectorEntityField
+    connectorEntityField_customProperties,
+    connectorEntityField_defaultValue,
+    connectorEntityField_description,
+    connectorEntityField_destinationProperties,
+    connectorEntityField_isDeprecated,
+    connectorEntityField_isPrimaryKey,
+    connectorEntityField_label,
+    connectorEntityField_parentIdentifier,
+    connectorEntityField_sourceProperties,
+    connectorEntityField_supportedFieldTypeDetails,
+    connectorEntityField_identifier,
+
+    -- ** ConnectorMetadata
+    connectorMetadata_amplitude,
+    connectorMetadata_customerProfiles,
+    connectorMetadata_datadog,
+    connectorMetadata_dynatrace,
+    connectorMetadata_eventBridge,
+    connectorMetadata_googleAnalytics,
+    connectorMetadata_honeycode,
+    connectorMetadata_inforNexus,
+    connectorMetadata_marketo,
+    connectorMetadata_redshift,
+    connectorMetadata_s3,
+    connectorMetadata_sAPOData,
+    connectorMetadata_salesforce,
+    connectorMetadata_serviceNow,
+    connectorMetadata_singular,
+    connectorMetadata_slack,
+    connectorMetadata_snowflake,
+    connectorMetadata_trendmicro,
+    connectorMetadata_upsolver,
+    connectorMetadata_veeva,
+    connectorMetadata_zendesk,
+
+    -- ** ConnectorOAuthRequest
+    connectorOAuthRequest_authCode,
+    connectorOAuthRequest_redirectUri,
+
+    -- ** ConnectorOperator
+    connectorOperator_amplitude,
+    connectorOperator_customConnector,
+    connectorOperator_datadog,
+    connectorOperator_dynatrace,
+    connectorOperator_googleAnalytics,
+    connectorOperator_inforNexus,
+    connectorOperator_marketo,
+    connectorOperator_s3,
+    connectorOperator_sAPOData,
+    connectorOperator_salesforce,
+    connectorOperator_serviceNow,
+    connectorOperator_singular,
+    connectorOperator_slack,
+    connectorOperator_trendmicro,
+    connectorOperator_veeva,
+    connectorOperator_zendesk,
+
+    -- ** ConnectorProfile
+    connectorProfile_connectionMode,
+    connectorProfile_connectorLabel,
+    connectorProfile_connectorProfileArn,
+    connectorProfile_connectorProfileName,
+    connectorProfile_connectorProfileProperties,
+    connectorProfile_connectorType,
+    connectorProfile_createdAt,
+    connectorProfile_credentialsArn,
+    connectorProfile_lastUpdatedAt,
+    connectorProfile_privateConnectionProvisioningState,
+
+    -- ** ConnectorProfileConfig
+    connectorProfileConfig_connectorProfileCredentials,
+    connectorProfileConfig_connectorProfileProperties,
+
+    -- ** ConnectorProfileCredentials
+    connectorProfileCredentials_amplitude,
+    connectorProfileCredentials_customConnector,
+    connectorProfileCredentials_datadog,
+    connectorProfileCredentials_dynatrace,
+    connectorProfileCredentials_googleAnalytics,
+    connectorProfileCredentials_honeycode,
+    connectorProfileCredentials_inforNexus,
+    connectorProfileCredentials_marketo,
+    connectorProfileCredentials_redshift,
+    connectorProfileCredentials_sAPOData,
+    connectorProfileCredentials_salesforce,
+    connectorProfileCredentials_serviceNow,
+    connectorProfileCredentials_singular,
+    connectorProfileCredentials_slack,
+    connectorProfileCredentials_snowflake,
+    connectorProfileCredentials_trendmicro,
+    connectorProfileCredentials_veeva,
+    connectorProfileCredentials_zendesk,
+
+    -- ** ConnectorProfileProperties
+    connectorProfileProperties_amplitude,
+    connectorProfileProperties_customConnector,
+    connectorProfileProperties_datadog,
+    connectorProfileProperties_dynatrace,
+    connectorProfileProperties_googleAnalytics,
+    connectorProfileProperties_honeycode,
+    connectorProfileProperties_inforNexus,
+    connectorProfileProperties_marketo,
+    connectorProfileProperties_redshift,
+    connectorProfileProperties_sAPOData,
+    connectorProfileProperties_salesforce,
+    connectorProfileProperties_serviceNow,
+    connectorProfileProperties_singular,
+    connectorProfileProperties_slack,
+    connectorProfileProperties_snowflake,
+    connectorProfileProperties_trendmicro,
+    connectorProfileProperties_veeva,
+    connectorProfileProperties_zendesk,
+
+    -- ** ConnectorProvisioningConfig
+    connectorProvisioningConfig_lambda,
+
+    -- ** ConnectorRuntimeSetting
+    connectorRuntimeSetting_connectorSuppliedValueOptions,
+    connectorRuntimeSetting_dataType,
+    connectorRuntimeSetting_description,
+    connectorRuntimeSetting_isRequired,
+    connectorRuntimeSetting_key,
+    connectorRuntimeSetting_label,
+    connectorRuntimeSetting_scope,
+
+    -- ** CustomAuthConfig
+    customAuthConfig_authParameters,
+    customAuthConfig_customAuthenticationType,
+
+    -- ** CustomAuthCredentials
+    customAuthCredentials_credentialsMap,
+    customAuthCredentials_customAuthenticationType,
+
+    -- ** CustomConnectorDestinationProperties
+    customConnectorDestinationProperties_customProperties,
+    customConnectorDestinationProperties_errorHandlingConfig,
+    customConnectorDestinationProperties_idFieldNames,
+    customConnectorDestinationProperties_writeOperationType,
+    customConnectorDestinationProperties_entityName,
+
+    -- ** CustomConnectorProfileCredentials
+    customConnectorProfileCredentials_apiKey,
+    customConnectorProfileCredentials_basic,
+    customConnectorProfileCredentials_custom,
+    customConnectorProfileCredentials_oauth2,
+    customConnectorProfileCredentials_authenticationType,
+
+    -- ** CustomConnectorProfileProperties
+    customConnectorProfileProperties_oAuth2Properties,
+    customConnectorProfileProperties_profileProperties,
+
+    -- ** CustomConnectorSourceProperties
+    customConnectorSourceProperties_customProperties,
+    customConnectorSourceProperties_entityName,
+
+    -- ** CustomerProfilesDestinationProperties
+    customerProfilesDestinationProperties_objectTypeName,
+    customerProfilesDestinationProperties_domainName,
+
+    -- ** CustomerProfilesMetadata
+
+    -- ** DatadogConnectorProfileCredentials
+    datadogConnectorProfileCredentials_apiKey,
+    datadogConnectorProfileCredentials_applicationKey,
+
+    -- ** DatadogConnectorProfileProperties
+    datadogConnectorProfileProperties_instanceUrl,
+
+    -- ** DatadogMetadata
+
+    -- ** DatadogSourceProperties
+    datadogSourceProperties_object,
+
+    -- ** DestinationConnectorProperties
+    destinationConnectorProperties_customConnector,
+    destinationConnectorProperties_customerProfiles,
+    destinationConnectorProperties_eventBridge,
+    destinationConnectorProperties_honeycode,
+    destinationConnectorProperties_lookoutMetrics,
+    destinationConnectorProperties_marketo,
+    destinationConnectorProperties_redshift,
+    destinationConnectorProperties_s3,
+    destinationConnectorProperties_sAPOData,
+    destinationConnectorProperties_salesforce,
+    destinationConnectorProperties_snowflake,
+    destinationConnectorProperties_upsolver,
+    destinationConnectorProperties_zendesk,
+
+    -- ** DestinationFieldProperties
+    destinationFieldProperties_isCreatable,
+    destinationFieldProperties_isDefaultedOnCreate,
+    destinationFieldProperties_isNullable,
+    destinationFieldProperties_isUpdatable,
+    destinationFieldProperties_isUpsertable,
+    destinationFieldProperties_supportedWriteOperations,
+
+    -- ** DestinationFlowConfig
+    destinationFlowConfig_apiVersion,
+    destinationFlowConfig_connectorProfileName,
+    destinationFlowConfig_connectorType,
+    destinationFlowConfig_destinationConnectorProperties,
+
+    -- ** DynatraceConnectorProfileCredentials
+    dynatraceConnectorProfileCredentials_apiToken,
+
+    -- ** DynatraceConnectorProfileProperties
+    dynatraceConnectorProfileProperties_instanceUrl,
+
+    -- ** DynatraceMetadata
+
+    -- ** DynatraceSourceProperties
+    dynatraceSourceProperties_object,
+
+    -- ** ErrorHandlingConfig
+    errorHandlingConfig_bucketName,
+    errorHandlingConfig_bucketPrefix,
+    errorHandlingConfig_failOnFirstDestinationError,
+
+    -- ** ErrorInfo
+    errorInfo_executionMessage,
+    errorInfo_putFailuresCount,
+
+    -- ** EventBridgeDestinationProperties
+    eventBridgeDestinationProperties_errorHandlingConfig,
+    eventBridgeDestinationProperties_object,
+
+    -- ** EventBridgeMetadata
+
+    -- ** ExecutionDetails
+    executionDetails_mostRecentExecutionMessage,
+    executionDetails_mostRecentExecutionStatus,
+    executionDetails_mostRecentExecutionTime,
+
+    -- ** ExecutionRecord
+    executionRecord_dataPullEndTime,
+    executionRecord_dataPullStartTime,
+    executionRecord_executionId,
+    executionRecord_executionResult,
+    executionRecord_executionStatus,
+    executionRecord_lastUpdatedAt,
+    executionRecord_metadataCatalogDetails,
+    executionRecord_startedAt,
+
+    -- ** ExecutionResult
+    executionResult_bytesProcessed,
+    executionResult_bytesWritten,
+    executionResult_errorInfo,
+    executionResult_recordsProcessed,
+
+    -- ** FieldTypeDetails
+    fieldTypeDetails_fieldLengthRange,
+    fieldTypeDetails_fieldValueRange,
+    fieldTypeDetails_supportedDateFormat,
+    fieldTypeDetails_supportedValues,
+    fieldTypeDetails_valueRegexPattern,
+    fieldTypeDetails_fieldType,
+    fieldTypeDetails_filterOperators,
+
+    -- ** FlowDefinition
+    flowDefinition_createdAt,
+    flowDefinition_createdBy,
+    flowDefinition_description,
+    flowDefinition_destinationConnectorLabel,
+    flowDefinition_destinationConnectorType,
+    flowDefinition_flowArn,
+    flowDefinition_flowName,
+    flowDefinition_flowStatus,
+    flowDefinition_lastRunExecutionDetails,
+    flowDefinition_lastUpdatedAt,
+    flowDefinition_lastUpdatedBy,
+    flowDefinition_sourceConnectorLabel,
+    flowDefinition_sourceConnectorType,
+    flowDefinition_tags,
+    flowDefinition_triggerType,
+
+    -- ** GlueDataCatalogConfig
+    glueDataCatalogConfig_roleArn,
+    glueDataCatalogConfig_databaseName,
+    glueDataCatalogConfig_tablePrefix,
+
+    -- ** GoogleAnalyticsConnectorProfileCredentials
+    googleAnalyticsConnectorProfileCredentials_accessToken,
+    googleAnalyticsConnectorProfileCredentials_oAuthRequest,
+    googleAnalyticsConnectorProfileCredentials_refreshToken,
+    googleAnalyticsConnectorProfileCredentials_clientId,
+    googleAnalyticsConnectorProfileCredentials_clientSecret,
+
+    -- ** GoogleAnalyticsConnectorProfileProperties
+
+    -- ** GoogleAnalyticsMetadata
+    googleAnalyticsMetadata_oAuthScopes,
+
+    -- ** GoogleAnalyticsSourceProperties
+    googleAnalyticsSourceProperties_object,
+
+    -- ** HoneycodeConnectorProfileCredentials
+    honeycodeConnectorProfileCredentials_accessToken,
+    honeycodeConnectorProfileCredentials_oAuthRequest,
+    honeycodeConnectorProfileCredentials_refreshToken,
+
+    -- ** HoneycodeConnectorProfileProperties
+
+    -- ** HoneycodeDestinationProperties
+    honeycodeDestinationProperties_errorHandlingConfig,
+    honeycodeDestinationProperties_object,
+
+    -- ** HoneycodeMetadata
+    honeycodeMetadata_oAuthScopes,
+
+    -- ** IncrementalPullConfig
+    incrementalPullConfig_datetimeTypeFieldName,
+
+    -- ** InforNexusConnectorProfileCredentials
+    inforNexusConnectorProfileCredentials_accessKeyId,
+    inforNexusConnectorProfileCredentials_userId,
+    inforNexusConnectorProfileCredentials_secretAccessKey,
+    inforNexusConnectorProfileCredentials_datakey,
+
+    -- ** InforNexusConnectorProfileProperties
+    inforNexusConnectorProfileProperties_instanceUrl,
+
+    -- ** InforNexusMetadata
+
+    -- ** InforNexusSourceProperties
+    inforNexusSourceProperties_object,
+
+    -- ** LambdaConnectorProvisioningConfig
+    lambdaConnectorProvisioningConfig_lambdaArn,
+
+    -- ** LookoutMetricsDestinationProperties
+
+    -- ** MarketoConnectorProfileCredentials
+    marketoConnectorProfileCredentials_accessToken,
+    marketoConnectorProfileCredentials_oAuthRequest,
+    marketoConnectorProfileCredentials_clientId,
+    marketoConnectorProfileCredentials_clientSecret,
+
+    -- ** MarketoConnectorProfileProperties
+    marketoConnectorProfileProperties_instanceUrl,
+
+    -- ** MarketoDestinationProperties
+    marketoDestinationProperties_errorHandlingConfig,
+    marketoDestinationProperties_object,
+
+    -- ** MarketoMetadata
+
+    -- ** MarketoSourceProperties
+    marketoSourceProperties_object,
+
+    -- ** MetadataCatalogConfig
+    metadataCatalogConfig_glueDataCatalog,
+
+    -- ** MetadataCatalogDetail
+    metadataCatalogDetail_catalogType,
+    metadataCatalogDetail_partitionRegistrationOutput,
+    metadataCatalogDetail_tableName,
+    metadataCatalogDetail_tableRegistrationOutput,
+
+    -- ** OAuth2Credentials
+    oAuth2Credentials_accessToken,
+    oAuth2Credentials_clientId,
+    oAuth2Credentials_clientSecret,
+    oAuth2Credentials_oAuthRequest,
+    oAuth2Credentials_refreshToken,
+
+    -- ** OAuth2CustomParameter
+    oAuth2CustomParameter_connectorSuppliedValues,
+    oAuth2CustomParameter_description,
+    oAuth2CustomParameter_isRequired,
+    oAuth2CustomParameter_isSensitiveField,
+    oAuth2CustomParameter_key,
+    oAuth2CustomParameter_label,
+    oAuth2CustomParameter_type,
+
+    -- ** OAuth2Defaults
+    oAuth2Defaults_authCodeUrls,
+    oAuth2Defaults_oauth2CustomProperties,
+    oAuth2Defaults_oauth2GrantTypesSupported,
+    oAuth2Defaults_oauthScopes,
+    oAuth2Defaults_tokenUrls,
+
+    -- ** OAuth2Properties
+    oAuth2Properties_tokenUrlCustomProperties,
+    oAuth2Properties_tokenUrl,
+    oAuth2Properties_oAuth2GrantType,
+
+    -- ** OAuthCredentials
+    oAuthCredentials_accessToken,
+    oAuthCredentials_oAuthRequest,
+    oAuthCredentials_refreshToken,
+    oAuthCredentials_clientId,
+    oAuthCredentials_clientSecret,
+
+    -- ** OAuthProperties
+    oAuthProperties_tokenUrl,
+    oAuthProperties_authCodeUrl,
+    oAuthProperties_oAuthScopes,
+
+    -- ** PrefixConfig
+    prefixConfig_pathPrefixHierarchy,
+    prefixConfig_prefixFormat,
+    prefixConfig_prefixType,
+
+    -- ** PrivateConnectionProvisioningState
+    privateConnectionProvisioningState_failureCause,
+    privateConnectionProvisioningState_failureMessage,
+    privateConnectionProvisioningState_status,
+
+    -- ** Range
+    range_maximum,
+    range_minimum,
+
+    -- ** RedshiftConnectorProfileCredentials
+    redshiftConnectorProfileCredentials_password,
+    redshiftConnectorProfileCredentials_username,
+
+    -- ** RedshiftConnectorProfileProperties
+    redshiftConnectorProfileProperties_bucketPrefix,
+    redshiftConnectorProfileProperties_clusterIdentifier,
+    redshiftConnectorProfileProperties_dataApiRoleArn,
+    redshiftConnectorProfileProperties_databaseName,
+    redshiftConnectorProfileProperties_databaseUrl,
+    redshiftConnectorProfileProperties_isRedshiftServerless,
+    redshiftConnectorProfileProperties_workgroupName,
+    redshiftConnectorProfileProperties_bucketName,
+    redshiftConnectorProfileProperties_roleArn,
+
+    -- ** RedshiftDestinationProperties
+    redshiftDestinationProperties_bucketPrefix,
+    redshiftDestinationProperties_errorHandlingConfig,
+    redshiftDestinationProperties_object,
+    redshiftDestinationProperties_intermediateBucketName,
+
+    -- ** RedshiftMetadata
+
+    -- ** RegistrationOutput
+    registrationOutput_message,
+    registrationOutput_result,
+    registrationOutput_status,
+
+    -- ** S3DestinationProperties
+    s3DestinationProperties_bucketPrefix,
+    s3DestinationProperties_s3OutputFormatConfig,
+    s3DestinationProperties_bucketName,
+
+    -- ** S3InputFormatConfig
+    s3InputFormatConfig_s3InputFileType,
+
+    -- ** S3Metadata
+
+    -- ** S3OutputFormatConfig
+    s3OutputFormatConfig_aggregationConfig,
+    s3OutputFormatConfig_fileType,
+    s3OutputFormatConfig_prefixConfig,
+    s3OutputFormatConfig_preserveSourceDataTyping,
+
+    -- ** S3SourceProperties
+    s3SourceProperties_bucketPrefix,
+    s3SourceProperties_s3InputFormatConfig,
+    s3SourceProperties_bucketName,
+
+    -- ** SAPODataConnectorProfileCredentials
+    sAPODataConnectorProfileCredentials_basicAuthCredentials,
+    sAPODataConnectorProfileCredentials_oAuthCredentials,
+
+    -- ** SAPODataConnectorProfileProperties
+    sAPODataConnectorProfileProperties_logonLanguage,
+    sAPODataConnectorProfileProperties_oAuthProperties,
+    sAPODataConnectorProfileProperties_privateLinkServiceName,
+    sAPODataConnectorProfileProperties_applicationHostUrl,
+    sAPODataConnectorProfileProperties_applicationServicePath,
+    sAPODataConnectorProfileProperties_portNumber,
+    sAPODataConnectorProfileProperties_clientNumber,
+
+    -- ** SAPODataDestinationProperties
+    sAPODataDestinationProperties_errorHandlingConfig,
+    sAPODataDestinationProperties_idFieldNames,
+    sAPODataDestinationProperties_successResponseHandlingConfig,
+    sAPODataDestinationProperties_writeOperationType,
+    sAPODataDestinationProperties_objectPath,
+
+    -- ** SAPODataMetadata
+
+    -- ** SAPODataSourceProperties
+    sAPODataSourceProperties_objectPath,
+
+    -- ** SalesforceConnectorProfileCredentials
+    salesforceConnectorProfileCredentials_accessToken,
+    salesforceConnectorProfileCredentials_clientCredentialsArn,
+    salesforceConnectorProfileCredentials_oAuthRequest,
+    salesforceConnectorProfileCredentials_refreshToken,
+
+    -- ** SalesforceConnectorProfileProperties
+    salesforceConnectorProfileProperties_instanceUrl,
+    salesforceConnectorProfileProperties_isSandboxEnvironment,
+
+    -- ** SalesforceDestinationProperties
+    salesforceDestinationProperties_dataTransferApi,
+    salesforceDestinationProperties_errorHandlingConfig,
+    salesforceDestinationProperties_idFieldNames,
+    salesforceDestinationProperties_writeOperationType,
+    salesforceDestinationProperties_object,
+
+    -- ** SalesforceMetadata
+    salesforceMetadata_dataTransferApis,
+    salesforceMetadata_oAuthScopes,
+
+    -- ** SalesforceSourceProperties
+    salesforceSourceProperties_dataTransferApi,
+    salesforceSourceProperties_enableDynamicFieldUpdate,
+    salesforceSourceProperties_includeDeletedRecords,
+    salesforceSourceProperties_object,
+
+    -- ** ScheduledTriggerProperties
+    scheduledTriggerProperties_dataPullMode,
+    scheduledTriggerProperties_firstExecutionFrom,
+    scheduledTriggerProperties_flowErrorDeactivationThreshold,
+    scheduledTriggerProperties_scheduleEndTime,
+    scheduledTriggerProperties_scheduleOffset,
+    scheduledTriggerProperties_scheduleStartTime,
+    scheduledTriggerProperties_timezone,
+    scheduledTriggerProperties_scheduleExpression,
+
+    -- ** ServiceNowConnectorProfileCredentials
+    serviceNowConnectorProfileCredentials_username,
+    serviceNowConnectorProfileCredentials_password,
+
+    -- ** ServiceNowConnectorProfileProperties
+    serviceNowConnectorProfileProperties_instanceUrl,
+
+    -- ** ServiceNowMetadata
+
+    -- ** ServiceNowSourceProperties
+    serviceNowSourceProperties_object,
+
+    -- ** SingularConnectorProfileCredentials
+    singularConnectorProfileCredentials_apiKey,
+
+    -- ** SingularConnectorProfileProperties
+
+    -- ** SingularMetadata
+
+    -- ** SingularSourceProperties
+    singularSourceProperties_object,
+
+    -- ** SlackConnectorProfileCredentials
+    slackConnectorProfileCredentials_accessToken,
+    slackConnectorProfileCredentials_oAuthRequest,
+    slackConnectorProfileCredentials_clientId,
+    slackConnectorProfileCredentials_clientSecret,
+
+    -- ** SlackConnectorProfileProperties
+    slackConnectorProfileProperties_instanceUrl,
+
+    -- ** SlackMetadata
+    slackMetadata_oAuthScopes,
+
+    -- ** SlackSourceProperties
+    slackSourceProperties_object,
+
+    -- ** SnowflakeConnectorProfileCredentials
+    snowflakeConnectorProfileCredentials_username,
+    snowflakeConnectorProfileCredentials_password,
+
+    -- ** SnowflakeConnectorProfileProperties
+    snowflakeConnectorProfileProperties_accountName,
+    snowflakeConnectorProfileProperties_bucketPrefix,
+    snowflakeConnectorProfileProperties_privateLinkServiceName,
+    snowflakeConnectorProfileProperties_region,
+    snowflakeConnectorProfileProperties_warehouse,
+    snowflakeConnectorProfileProperties_stage,
+    snowflakeConnectorProfileProperties_bucketName,
+
+    -- ** SnowflakeDestinationProperties
+    snowflakeDestinationProperties_bucketPrefix,
+    snowflakeDestinationProperties_errorHandlingConfig,
+    snowflakeDestinationProperties_object,
+    snowflakeDestinationProperties_intermediateBucketName,
+
+    -- ** SnowflakeMetadata
+    snowflakeMetadata_supportedRegions,
+
+    -- ** SourceConnectorProperties
+    sourceConnectorProperties_amplitude,
+    sourceConnectorProperties_customConnector,
+    sourceConnectorProperties_datadog,
+    sourceConnectorProperties_dynatrace,
+    sourceConnectorProperties_googleAnalytics,
+    sourceConnectorProperties_inforNexus,
+    sourceConnectorProperties_marketo,
+    sourceConnectorProperties_s3,
+    sourceConnectorProperties_sAPOData,
+    sourceConnectorProperties_salesforce,
+    sourceConnectorProperties_serviceNow,
+    sourceConnectorProperties_singular,
+    sourceConnectorProperties_slack,
+    sourceConnectorProperties_trendmicro,
+    sourceConnectorProperties_veeva,
+    sourceConnectorProperties_zendesk,
+
+    -- ** SourceFieldProperties
+    sourceFieldProperties_isQueryable,
+    sourceFieldProperties_isRetrievable,
+    sourceFieldProperties_isTimestampFieldForIncrementalQueries,
+
+    -- ** SourceFlowConfig
+    sourceFlowConfig_apiVersion,
+    sourceFlowConfig_connectorProfileName,
+    sourceFlowConfig_incrementalPullConfig,
+    sourceFlowConfig_connectorType,
+    sourceFlowConfig_sourceConnectorProperties,
+
+    -- ** SuccessResponseHandlingConfig
+    successResponseHandlingConfig_bucketName,
+    successResponseHandlingConfig_bucketPrefix,
+
+    -- ** SupportedFieldTypeDetails
+    supportedFieldTypeDetails_v1,
+
+    -- ** Task
+    task_connectorOperator,
+    task_destinationField,
+    task_taskProperties,
+    task_sourceFields,
+    task_taskType,
+
+    -- ** TrendmicroConnectorProfileCredentials
+    trendmicroConnectorProfileCredentials_apiSecretKey,
+
+    -- ** TrendmicroConnectorProfileProperties
+
+    -- ** TrendmicroMetadata
+
+    -- ** TrendmicroSourceProperties
+    trendmicroSourceProperties_object,
+
+    -- ** TriggerConfig
+    triggerConfig_triggerProperties,
+    triggerConfig_triggerType,
+
+    -- ** TriggerProperties
+    triggerProperties_scheduled,
+
+    -- ** UpsolverDestinationProperties
+    upsolverDestinationProperties_bucketPrefix,
+    upsolverDestinationProperties_bucketName,
+    upsolverDestinationProperties_s3OutputFormatConfig,
+
+    -- ** UpsolverMetadata
+
+    -- ** UpsolverS3OutputFormatConfig
+    upsolverS3OutputFormatConfig_aggregationConfig,
+    upsolverS3OutputFormatConfig_fileType,
+    upsolverS3OutputFormatConfig_prefixConfig,
+
+    -- ** VeevaConnectorProfileCredentials
+    veevaConnectorProfileCredentials_username,
+    veevaConnectorProfileCredentials_password,
+
+    -- ** VeevaConnectorProfileProperties
+    veevaConnectorProfileProperties_instanceUrl,
+
+    -- ** VeevaMetadata
+
+    -- ** VeevaSourceProperties
+    veevaSourceProperties_documentType,
+    veevaSourceProperties_includeAllVersions,
+    veevaSourceProperties_includeRenditions,
+    veevaSourceProperties_includeSourceFiles,
+    veevaSourceProperties_object,
+
+    -- ** ZendeskConnectorProfileCredentials
+    zendeskConnectorProfileCredentials_accessToken,
+    zendeskConnectorProfileCredentials_oAuthRequest,
+    zendeskConnectorProfileCredentials_clientId,
+    zendeskConnectorProfileCredentials_clientSecret,
+
+    -- ** ZendeskConnectorProfileProperties
+    zendeskConnectorProfileProperties_instanceUrl,
+
+    -- ** ZendeskDestinationProperties
+    zendeskDestinationProperties_errorHandlingConfig,
+    zendeskDestinationProperties_idFieldNames,
+    zendeskDestinationProperties_writeOperationType,
+    zendeskDestinationProperties_object,
+
+    -- ** ZendeskMetadata
+    zendeskMetadata_oAuthScopes,
+
+    -- ** ZendeskSourceProperties
+    zendeskSourceProperties_object,
+  )
+where
+
+import Amazonka.AppFlow.CreateConnectorProfile
+import Amazonka.AppFlow.CreateFlow
+import Amazonka.AppFlow.DeleteConnectorProfile
+import Amazonka.AppFlow.DeleteFlow
+import Amazonka.AppFlow.DescribeConnector
+import Amazonka.AppFlow.DescribeConnectorEntity
+import Amazonka.AppFlow.DescribeConnectorProfiles
+import Amazonka.AppFlow.DescribeConnectors
+import Amazonka.AppFlow.DescribeFlow
+import Amazonka.AppFlow.DescribeFlowExecutionRecords
+import Amazonka.AppFlow.ListConnectorEntities
+import Amazonka.AppFlow.ListConnectors
+import Amazonka.AppFlow.ListFlows
+import Amazonka.AppFlow.ListTagsForResource
+import Amazonka.AppFlow.RegisterConnector
+import Amazonka.AppFlow.StartFlow
+import Amazonka.AppFlow.StopFlow
+import Amazonka.AppFlow.TagResource
+import Amazonka.AppFlow.Types.AggregationConfig
+import Amazonka.AppFlow.Types.AmplitudeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.AmplitudeConnectorProfileProperties
+import Amazonka.AppFlow.Types.AmplitudeMetadata
+import Amazonka.AppFlow.Types.AmplitudeSourceProperties
+import Amazonka.AppFlow.Types.ApiKeyCredentials
+import Amazonka.AppFlow.Types.AuthParameter
+import Amazonka.AppFlow.Types.AuthenticationConfig
+import Amazonka.AppFlow.Types.BasicAuthCredentials
+import Amazonka.AppFlow.Types.ConnectorConfiguration
+import Amazonka.AppFlow.Types.ConnectorDetail
+import Amazonka.AppFlow.Types.ConnectorEntity
+import Amazonka.AppFlow.Types.ConnectorEntityField
+import Amazonka.AppFlow.Types.ConnectorMetadata
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import Amazonka.AppFlow.Types.ConnectorOperator
+import Amazonka.AppFlow.Types.ConnectorProfile
+import Amazonka.AppFlow.Types.ConnectorProfileConfig
+import Amazonka.AppFlow.Types.ConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ConnectorProfileProperties
+import Amazonka.AppFlow.Types.ConnectorProvisioningConfig
+import Amazonka.AppFlow.Types.ConnectorRuntimeSetting
+import Amazonka.AppFlow.Types.CustomAuthConfig
+import Amazonka.AppFlow.Types.CustomAuthCredentials
+import Amazonka.AppFlow.Types.CustomConnectorDestinationProperties
+import Amazonka.AppFlow.Types.CustomConnectorProfileCredentials
+import Amazonka.AppFlow.Types.CustomConnectorProfileProperties
+import Amazonka.AppFlow.Types.CustomConnectorSourceProperties
+import Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
+import Amazonka.AppFlow.Types.CustomerProfilesMetadata
+import Amazonka.AppFlow.Types.DatadogConnectorProfileCredentials
+import Amazonka.AppFlow.Types.DatadogConnectorProfileProperties
+import Amazonka.AppFlow.Types.DatadogMetadata
+import Amazonka.AppFlow.Types.DatadogSourceProperties
+import Amazonka.AppFlow.Types.DestinationConnectorProperties
+import Amazonka.AppFlow.Types.DestinationFieldProperties
+import Amazonka.AppFlow.Types.DestinationFlowConfig
+import Amazonka.AppFlow.Types.DynatraceConnectorProfileCredentials
+import Amazonka.AppFlow.Types.DynatraceConnectorProfileProperties
+import Amazonka.AppFlow.Types.DynatraceMetadata
+import Amazonka.AppFlow.Types.DynatraceSourceProperties
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import Amazonka.AppFlow.Types.ErrorInfo
+import Amazonka.AppFlow.Types.EventBridgeDestinationProperties
+import Amazonka.AppFlow.Types.EventBridgeMetadata
+import Amazonka.AppFlow.Types.ExecutionDetails
+import Amazonka.AppFlow.Types.ExecutionRecord
+import Amazonka.AppFlow.Types.ExecutionResult
+import Amazonka.AppFlow.Types.FieldTypeDetails
+import Amazonka.AppFlow.Types.FlowDefinition
+import Amazonka.AppFlow.Types.GlueDataCatalogConfig
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileCredentials
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileProperties
+import Amazonka.AppFlow.Types.GoogleAnalyticsMetadata
+import Amazonka.AppFlow.Types.GoogleAnalyticsSourceProperties
+import Amazonka.AppFlow.Types.HoneycodeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.HoneycodeConnectorProfileProperties
+import Amazonka.AppFlow.Types.HoneycodeDestinationProperties
+import Amazonka.AppFlow.Types.HoneycodeMetadata
+import Amazonka.AppFlow.Types.IncrementalPullConfig
+import Amazonka.AppFlow.Types.InforNexusConnectorProfileCredentials
+import Amazonka.AppFlow.Types.InforNexusConnectorProfileProperties
+import Amazonka.AppFlow.Types.InforNexusMetadata
+import Amazonka.AppFlow.Types.InforNexusSourceProperties
+import Amazonka.AppFlow.Types.LambdaConnectorProvisioningConfig
+import Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
+import Amazonka.AppFlow.Types.MarketoConnectorProfileCredentials
+import Amazonka.AppFlow.Types.MarketoConnectorProfileProperties
+import Amazonka.AppFlow.Types.MarketoDestinationProperties
+import Amazonka.AppFlow.Types.MarketoMetadata
+import Amazonka.AppFlow.Types.MarketoSourceProperties
+import Amazonka.AppFlow.Types.MetadataCatalogConfig
+import Amazonka.AppFlow.Types.MetadataCatalogDetail
+import Amazonka.AppFlow.Types.OAuth2Credentials
+import Amazonka.AppFlow.Types.OAuth2CustomParameter
+import Amazonka.AppFlow.Types.OAuth2Defaults
+import Amazonka.AppFlow.Types.OAuth2Properties
+import Amazonka.AppFlow.Types.OAuthCredentials
+import Amazonka.AppFlow.Types.OAuthProperties
+import Amazonka.AppFlow.Types.PrefixConfig
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningState
+import Amazonka.AppFlow.Types.Range
+import Amazonka.AppFlow.Types.RedshiftConnectorProfileCredentials
+import Amazonka.AppFlow.Types.RedshiftConnectorProfileProperties
+import Amazonka.AppFlow.Types.RedshiftDestinationProperties
+import Amazonka.AppFlow.Types.RedshiftMetadata
+import Amazonka.AppFlow.Types.RegistrationOutput
+import Amazonka.AppFlow.Types.S3DestinationProperties
+import Amazonka.AppFlow.Types.S3InputFormatConfig
+import Amazonka.AppFlow.Types.S3Metadata
+import Amazonka.AppFlow.Types.S3OutputFormatConfig
+import Amazonka.AppFlow.Types.S3SourceProperties
+import Amazonka.AppFlow.Types.SAPODataConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SAPODataConnectorProfileProperties
+import Amazonka.AppFlow.Types.SAPODataDestinationProperties
+import Amazonka.AppFlow.Types.SAPODataMetadata
+import Amazonka.AppFlow.Types.SAPODataSourceProperties
+import Amazonka.AppFlow.Types.SalesforceConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SalesforceConnectorProfileProperties
+import Amazonka.AppFlow.Types.SalesforceDestinationProperties
+import Amazonka.AppFlow.Types.SalesforceMetadata
+import Amazonka.AppFlow.Types.SalesforceSourceProperties
+import Amazonka.AppFlow.Types.ScheduledTriggerProperties
+import Amazonka.AppFlow.Types.ServiceNowConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ServiceNowConnectorProfileProperties
+import Amazonka.AppFlow.Types.ServiceNowMetadata
+import Amazonka.AppFlow.Types.ServiceNowSourceProperties
+import Amazonka.AppFlow.Types.SingularConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SingularConnectorProfileProperties
+import Amazonka.AppFlow.Types.SingularMetadata
+import Amazonka.AppFlow.Types.SingularSourceProperties
+import Amazonka.AppFlow.Types.SlackConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SlackConnectorProfileProperties
+import Amazonka.AppFlow.Types.SlackMetadata
+import Amazonka.AppFlow.Types.SlackSourceProperties
+import Amazonka.AppFlow.Types.SnowflakeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SnowflakeConnectorProfileProperties
+import Amazonka.AppFlow.Types.SnowflakeDestinationProperties
+import Amazonka.AppFlow.Types.SnowflakeMetadata
+import Amazonka.AppFlow.Types.SourceConnectorProperties
+import Amazonka.AppFlow.Types.SourceFieldProperties
+import Amazonka.AppFlow.Types.SourceFlowConfig
+import Amazonka.AppFlow.Types.SuccessResponseHandlingConfig
+import Amazonka.AppFlow.Types.SupportedFieldTypeDetails
+import Amazonka.AppFlow.Types.Task
+import Amazonka.AppFlow.Types.TrendmicroConnectorProfileCredentials
+import Amazonka.AppFlow.Types.TrendmicroConnectorProfileProperties
+import Amazonka.AppFlow.Types.TrendmicroMetadata
+import Amazonka.AppFlow.Types.TrendmicroSourceProperties
+import Amazonka.AppFlow.Types.TriggerConfig
+import Amazonka.AppFlow.Types.TriggerProperties
+import Amazonka.AppFlow.Types.UpsolverDestinationProperties
+import Amazonka.AppFlow.Types.UpsolverMetadata
+import Amazonka.AppFlow.Types.UpsolverS3OutputFormatConfig
+import Amazonka.AppFlow.Types.VeevaConnectorProfileCredentials
+import Amazonka.AppFlow.Types.VeevaConnectorProfileProperties
+import Amazonka.AppFlow.Types.VeevaMetadata
+import Amazonka.AppFlow.Types.VeevaSourceProperties
+import Amazonka.AppFlow.Types.ZendeskConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ZendeskConnectorProfileProperties
+import Amazonka.AppFlow.Types.ZendeskDestinationProperties
+import Amazonka.AppFlow.Types.ZendeskMetadata
+import Amazonka.AppFlow.Types.ZendeskSourceProperties
+import Amazonka.AppFlow.UnregisterConnector
+import Amazonka.AppFlow.UntagResource
+import Amazonka.AppFlow.UpdateConnectorProfile
+import Amazonka.AppFlow.UpdateConnectorRegistration
+import Amazonka.AppFlow.UpdateFlow
diff --git a/gen/Amazonka/AppFlow/ListConnectorEntities.hs b/gen/Amazonka/AppFlow/ListConnectorEntities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/ListConnectorEntities.hs
@@ -0,0 +1,293 @@
+{-# 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.AppFlow.ListConnectorEntities
+-- 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 list of available connector entities supported by Amazon
+-- AppFlow. For example, you can query Salesforce for /Account/ and
+-- /Opportunity/ entities, or query ServiceNow for the /Incident/ entity.
+module Amazonka.AppFlow.ListConnectorEntities
+  ( -- * Creating a Request
+    ListConnectorEntities (..),
+    newListConnectorEntities,
+
+    -- * Request Lenses
+    listConnectorEntities_apiVersion,
+    listConnectorEntities_connectorProfileName,
+    listConnectorEntities_connectorType,
+    listConnectorEntities_entitiesPath,
+    listConnectorEntities_maxResults,
+    listConnectorEntities_nextToken,
+
+    -- * Destructuring the Response
+    ListConnectorEntitiesResponse (..),
+    newListConnectorEntitiesResponse,
+
+    -- * Response Lenses
+    listConnectorEntitiesResponse_nextToken,
+    listConnectorEntitiesResponse_httpStatus,
+    listConnectorEntitiesResponse_connectorEntityMap,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListConnectorEntities' smart constructor.
+data ListConnectorEntities = ListConnectorEntities'
+  { -- | The version of the API that\'s used by the connector.
+    apiVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. The name is unique for each
+    -- @ConnectorProfile@ in the Amazon Web Services account, and is used to
+    -- query the downstream connector.
+    connectorProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorType :: Prelude.Maybe ConnectorType,
+    -- | This optional parameter is specific to connector implementation. Some
+    -- connectors support multiple levels or categories of entities. You can
+    -- find out the list of roots for such providers by sending a request
+    -- without the @entitiesPath@ parameter. If the connector supports entities
+    -- at different roots, this initial request returns the list of roots.
+    -- Otherwise, this request returns all entities supported by the provider.
+    entitiesPath :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of items that the operation returns in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token that was provided by your prior @ListConnectorEntities@
+    -- operation if the response was too big for the page size. You specify
+    -- this token to get the next page of results in paginated response.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConnectorEntities' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiVersion', 'listConnectorEntities_apiVersion' - The version of the API that\'s used by the connector.
+--
+-- 'connectorProfileName', 'listConnectorEntities_connectorProfileName' - The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account, and is used to
+-- query the downstream connector.
+--
+-- 'connectorType', 'listConnectorEntities_connectorType' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'entitiesPath', 'listConnectorEntities_entitiesPath' - This optional parameter is specific to connector implementation. Some
+-- connectors support multiple levels or categories of entities. You can
+-- find out the list of roots for such providers by sending a request
+-- without the @entitiesPath@ parameter. If the connector supports entities
+-- at different roots, this initial request returns the list of roots.
+-- Otherwise, this request returns all entities supported by the provider.
+--
+-- 'maxResults', 'listConnectorEntities_maxResults' - The maximum number of items that the operation returns in the response.
+--
+-- 'nextToken', 'listConnectorEntities_nextToken' - A token that was provided by your prior @ListConnectorEntities@
+-- operation if the response was too big for the page size. You specify
+-- this token to get the next page of results in paginated response.
+newListConnectorEntities ::
+  ListConnectorEntities
+newListConnectorEntities =
+  ListConnectorEntities'
+    { apiVersion =
+        Prelude.Nothing,
+      connectorProfileName = Prelude.Nothing,
+      connectorType = Prelude.Nothing,
+      entitiesPath = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The version of the API that\'s used by the connector.
+listConnectorEntities_apiVersion :: Lens.Lens' ListConnectorEntities (Prelude.Maybe Prelude.Text)
+listConnectorEntities_apiVersion = Lens.lens (\ListConnectorEntities' {apiVersion} -> apiVersion) (\s@ListConnectorEntities' {} a -> s {apiVersion = a} :: ListConnectorEntities)
+
+-- | The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account, and is used to
+-- query the downstream connector.
+listConnectorEntities_connectorProfileName :: Lens.Lens' ListConnectorEntities (Prelude.Maybe Prelude.Text)
+listConnectorEntities_connectorProfileName = Lens.lens (\ListConnectorEntities' {connectorProfileName} -> connectorProfileName) (\s@ListConnectorEntities' {} a -> s {connectorProfileName = a} :: ListConnectorEntities)
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+listConnectorEntities_connectorType :: Lens.Lens' ListConnectorEntities (Prelude.Maybe ConnectorType)
+listConnectorEntities_connectorType = Lens.lens (\ListConnectorEntities' {connectorType} -> connectorType) (\s@ListConnectorEntities' {} a -> s {connectorType = a} :: ListConnectorEntities)
+
+-- | This optional parameter is specific to connector implementation. Some
+-- connectors support multiple levels or categories of entities. You can
+-- find out the list of roots for such providers by sending a request
+-- without the @entitiesPath@ parameter. If the connector supports entities
+-- at different roots, this initial request returns the list of roots.
+-- Otherwise, this request returns all entities supported by the provider.
+listConnectorEntities_entitiesPath :: Lens.Lens' ListConnectorEntities (Prelude.Maybe Prelude.Text)
+listConnectorEntities_entitiesPath = Lens.lens (\ListConnectorEntities' {entitiesPath} -> entitiesPath) (\s@ListConnectorEntities' {} a -> s {entitiesPath = a} :: ListConnectorEntities)
+
+-- | The maximum number of items that the operation returns in the response.
+listConnectorEntities_maxResults :: Lens.Lens' ListConnectorEntities (Prelude.Maybe Prelude.Natural)
+listConnectorEntities_maxResults = Lens.lens (\ListConnectorEntities' {maxResults} -> maxResults) (\s@ListConnectorEntities' {} a -> s {maxResults = a} :: ListConnectorEntities)
+
+-- | A token that was provided by your prior @ListConnectorEntities@
+-- operation if the response was too big for the page size. You specify
+-- this token to get the next page of results in paginated response.
+listConnectorEntities_nextToken :: Lens.Lens' ListConnectorEntities (Prelude.Maybe Prelude.Text)
+listConnectorEntities_nextToken = Lens.lens (\ListConnectorEntities' {nextToken} -> nextToken) (\s@ListConnectorEntities' {} a -> s {nextToken = a} :: ListConnectorEntities)
+
+instance Core.AWSRequest ListConnectorEntities where
+  type
+    AWSResponse ListConnectorEntities =
+      ListConnectorEntitiesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListConnectorEntitiesResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "connectorEntityMap"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListConnectorEntities where
+  hashWithSalt _salt ListConnectorEntities' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiVersion
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` entitiesPath
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListConnectorEntities where
+  rnf ListConnectorEntities' {..} =
+    Prelude.rnf apiVersion
+      `Prelude.seq` Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf entitiesPath
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListConnectorEntities where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListConnectorEntities where
+  toJSON ListConnectorEntities' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("apiVersion" Data..=) Prelude.<$> apiVersion,
+            ("connectorProfileName" Data..=)
+              Prelude.<$> connectorProfileName,
+            ("connectorType" Data..=) Prelude.<$> connectorType,
+            ("entitiesPath" Data..=) Prelude.<$> entitiesPath,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListConnectorEntities where
+  toPath = Prelude.const "/list-connector-entities"
+
+instance Data.ToQuery ListConnectorEntities where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListConnectorEntitiesResponse' smart constructor.
+data ListConnectorEntitiesResponse = ListConnectorEntitiesResponse'
+  { -- | A token that you specify in your next @ListConnectorEntities@ operation
+    -- to get the next page of results in paginated response. The
+    -- @ListConnectorEntities@ operation provides this token if the response is
+    -- too big for the page size.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The response of @ListConnectorEntities@ lists entities grouped by
+    -- category. This map\'s key represents the group name, and its value
+    -- contains the list of entities belonging to that group.
+    connectorEntityMap :: Prelude.HashMap Prelude.Text [ConnectorEntity]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConnectorEntitiesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listConnectorEntitiesResponse_nextToken' - A token that you specify in your next @ListConnectorEntities@ operation
+-- to get the next page of results in paginated response. The
+-- @ListConnectorEntities@ operation provides this token if the response is
+-- too big for the page size.
+--
+-- 'httpStatus', 'listConnectorEntitiesResponse_httpStatus' - The response's http status code.
+--
+-- 'connectorEntityMap', 'listConnectorEntitiesResponse_connectorEntityMap' - The response of @ListConnectorEntities@ lists entities grouped by
+-- category. This map\'s key represents the group name, and its value
+-- contains the list of entities belonging to that group.
+newListConnectorEntitiesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListConnectorEntitiesResponse
+newListConnectorEntitiesResponse pHttpStatus_ =
+  ListConnectorEntitiesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      connectorEntityMap = Prelude.mempty
+    }
+
+-- | A token that you specify in your next @ListConnectorEntities@ operation
+-- to get the next page of results in paginated response. The
+-- @ListConnectorEntities@ operation provides this token if the response is
+-- too big for the page size.
+listConnectorEntitiesResponse_nextToken :: Lens.Lens' ListConnectorEntitiesResponse (Prelude.Maybe Prelude.Text)
+listConnectorEntitiesResponse_nextToken = Lens.lens (\ListConnectorEntitiesResponse' {nextToken} -> nextToken) (\s@ListConnectorEntitiesResponse' {} a -> s {nextToken = a} :: ListConnectorEntitiesResponse)
+
+-- | The response's http status code.
+listConnectorEntitiesResponse_httpStatus :: Lens.Lens' ListConnectorEntitiesResponse Prelude.Int
+listConnectorEntitiesResponse_httpStatus = Lens.lens (\ListConnectorEntitiesResponse' {httpStatus} -> httpStatus) (\s@ListConnectorEntitiesResponse' {} a -> s {httpStatus = a} :: ListConnectorEntitiesResponse)
+
+-- | The response of @ListConnectorEntities@ lists entities grouped by
+-- category. This map\'s key represents the group name, and its value
+-- contains the list of entities belonging to that group.
+listConnectorEntitiesResponse_connectorEntityMap :: Lens.Lens' ListConnectorEntitiesResponse (Prelude.HashMap Prelude.Text [ConnectorEntity])
+listConnectorEntitiesResponse_connectorEntityMap = Lens.lens (\ListConnectorEntitiesResponse' {connectorEntityMap} -> connectorEntityMap) (\s@ListConnectorEntitiesResponse' {} a -> s {connectorEntityMap = a} :: ListConnectorEntitiesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListConnectorEntitiesResponse where
+  rnf ListConnectorEntitiesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf connectorEntityMap
diff --git a/gen/Amazonka/AppFlow/ListConnectors.hs b/gen/Amazonka/AppFlow/ListConnectors.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/ListConnectors.hs
@@ -0,0 +1,203 @@
+{-# 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.AppFlow.ListConnectors
+-- 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 list of all registered custom connectors in your Amazon Web
+-- Services account. This API lists only custom connectors registered in
+-- this account, not the Amazon Web Services authored connectors.
+module Amazonka.AppFlow.ListConnectors
+  ( -- * Creating a Request
+    ListConnectors (..),
+    newListConnectors,
+
+    -- * Request Lenses
+    listConnectors_maxResults,
+    listConnectors_nextToken,
+
+    -- * Destructuring the Response
+    ListConnectorsResponse (..),
+    newListConnectorsResponse,
+
+    -- * Response Lenses
+    listConnectorsResponse_connectors,
+    listConnectorsResponse_nextToken,
+    listConnectorsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListConnectors' smart constructor.
+data ListConnectors = ListConnectors'
+  { -- | Specifies the maximum number of items that should be returned in the
+    -- result set. The default for @maxResults@ is 20 (for all paginated API
+    -- operations).
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token for the next page of data.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConnectors' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listConnectors_maxResults' - Specifies the maximum number of items that should be returned in the
+-- result set. The default for @maxResults@ is 20 (for all paginated API
+-- operations).
+--
+-- 'nextToken', 'listConnectors_nextToken' - The pagination token for the next page of data.
+newListConnectors ::
+  ListConnectors
+newListConnectors =
+  ListConnectors'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Specifies the maximum number of items that should be returned in the
+-- result set. The default for @maxResults@ is 20 (for all paginated API
+-- operations).
+listConnectors_maxResults :: Lens.Lens' ListConnectors (Prelude.Maybe Prelude.Natural)
+listConnectors_maxResults = Lens.lens (\ListConnectors' {maxResults} -> maxResults) (\s@ListConnectors' {} a -> s {maxResults = a} :: ListConnectors)
+
+-- | The pagination token for the next page of data.
+listConnectors_nextToken :: Lens.Lens' ListConnectors (Prelude.Maybe Prelude.Text)
+listConnectors_nextToken = Lens.lens (\ListConnectors' {nextToken} -> nextToken) (\s@ListConnectors' {} a -> s {nextToken = a} :: ListConnectors)
+
+instance Core.AWSRequest ListConnectors where
+  type
+    AWSResponse ListConnectors =
+      ListConnectorsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListConnectorsResponse'
+            Prelude.<$> (x Data..?> "connectors" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListConnectors where
+  hashWithSalt _salt ListConnectors' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListConnectors where
+  rnf ListConnectors' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListConnectors where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListConnectors where
+  toJSON ListConnectors' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListConnectors where
+  toPath = Prelude.const "/list-connectors"
+
+instance Data.ToQuery ListConnectors where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListConnectorsResponse' smart constructor.
+data ListConnectorsResponse = ListConnectorsResponse'
+  { -- | Contains information about the connectors supported by Amazon AppFlow.
+    connectors :: Prelude.Maybe [ConnectorDetail],
+    -- | The pagination token for the next page of data. If nextToken=null, this
+    -- means that all records have been fetched.
+    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 'ListConnectorsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectors', 'listConnectorsResponse_connectors' - Contains information about the connectors supported by Amazon AppFlow.
+--
+-- 'nextToken', 'listConnectorsResponse_nextToken' - The pagination token for the next page of data. If nextToken=null, this
+-- means that all records have been fetched.
+--
+-- 'httpStatus', 'listConnectorsResponse_httpStatus' - The response's http status code.
+newListConnectorsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListConnectorsResponse
+newListConnectorsResponse pHttpStatus_ =
+  ListConnectorsResponse'
+    { connectors =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Contains information about the connectors supported by Amazon AppFlow.
+listConnectorsResponse_connectors :: Lens.Lens' ListConnectorsResponse (Prelude.Maybe [ConnectorDetail])
+listConnectorsResponse_connectors = Lens.lens (\ListConnectorsResponse' {connectors} -> connectors) (\s@ListConnectorsResponse' {} a -> s {connectors = a} :: ListConnectorsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token for the next page of data. If nextToken=null, this
+-- means that all records have been fetched.
+listConnectorsResponse_nextToken :: Lens.Lens' ListConnectorsResponse (Prelude.Maybe Prelude.Text)
+listConnectorsResponse_nextToken = Lens.lens (\ListConnectorsResponse' {nextToken} -> nextToken) (\s@ListConnectorsResponse' {} a -> s {nextToken = a} :: ListConnectorsResponse)
+
+-- | The response's http status code.
+listConnectorsResponse_httpStatus :: Lens.Lens' ListConnectorsResponse Prelude.Int
+listConnectorsResponse_httpStatus = Lens.lens (\ListConnectorsResponse' {httpStatus} -> httpStatus) (\s@ListConnectorsResponse' {} a -> s {httpStatus = a} :: ListConnectorsResponse)
+
+instance Prelude.NFData ListConnectorsResponse where
+  rnf ListConnectorsResponse' {..} =
+    Prelude.rnf connectors
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/ListFlows.hs b/gen/Amazonka/AppFlow/ListFlows.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/ListFlows.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.ListFlows
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all of the flows associated with your account.
+module Amazonka.AppFlow.ListFlows
+  ( -- * Creating a Request
+    ListFlows (..),
+    newListFlows,
+
+    -- * Request Lenses
+    listFlows_maxResults,
+    listFlows_nextToken,
+
+    -- * Destructuring the Response
+    ListFlowsResponse (..),
+    newListFlowsResponse,
+
+    -- * Response Lenses
+    listFlowsResponse_flows,
+    listFlowsResponse_nextToken,
+    listFlowsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListFlows' smart constructor.
+data ListFlows = ListFlows'
+  { -- | Specifies the maximum number of items that should be returned in the
+    -- result set.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token for next page of data.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFlows' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listFlows_maxResults' - Specifies the maximum number of items that should be returned in the
+-- result set.
+--
+-- 'nextToken', 'listFlows_nextToken' - The pagination token for next page of data.
+newListFlows ::
+  ListFlows
+newListFlows =
+  ListFlows'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Specifies the maximum number of items that should be returned in the
+-- result set.
+listFlows_maxResults :: Lens.Lens' ListFlows (Prelude.Maybe Prelude.Natural)
+listFlows_maxResults = Lens.lens (\ListFlows' {maxResults} -> maxResults) (\s@ListFlows' {} a -> s {maxResults = a} :: ListFlows)
+
+-- | The pagination token for next page of data.
+listFlows_nextToken :: Lens.Lens' ListFlows (Prelude.Maybe Prelude.Text)
+listFlows_nextToken = Lens.lens (\ListFlows' {nextToken} -> nextToken) (\s@ListFlows' {} a -> s {nextToken = a} :: ListFlows)
+
+instance Core.AWSRequest ListFlows where
+  type AWSResponse ListFlows = ListFlowsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFlowsResponse'
+            Prelude.<$> (x Data..?> "flows" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListFlows where
+  hashWithSalt _salt ListFlows' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListFlows where
+  rnf ListFlows' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListFlows where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListFlows where
+  toJSON ListFlows' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListFlows where
+  toPath = Prelude.const "/list-flows"
+
+instance Data.ToQuery ListFlows where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListFlowsResponse' smart constructor.
+data ListFlowsResponse = ListFlowsResponse'
+  { -- | The list of flows associated with your account.
+    flows :: Prelude.Maybe [FlowDefinition],
+    -- | The pagination token for next page of data.
+    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 'ListFlowsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flows', 'listFlowsResponse_flows' - The list of flows associated with your account.
+--
+-- 'nextToken', 'listFlowsResponse_nextToken' - The pagination token for next page of data.
+--
+-- 'httpStatus', 'listFlowsResponse_httpStatus' - The response's http status code.
+newListFlowsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListFlowsResponse
+newListFlowsResponse pHttpStatus_ =
+  ListFlowsResponse'
+    { flows = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of flows associated with your account.
+listFlowsResponse_flows :: Lens.Lens' ListFlowsResponse (Prelude.Maybe [FlowDefinition])
+listFlowsResponse_flows = Lens.lens (\ListFlowsResponse' {flows} -> flows) (\s@ListFlowsResponse' {} a -> s {flows = a} :: ListFlowsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token for next page of data.
+listFlowsResponse_nextToken :: Lens.Lens' ListFlowsResponse (Prelude.Maybe Prelude.Text)
+listFlowsResponse_nextToken = Lens.lens (\ListFlowsResponse' {nextToken} -> nextToken) (\s@ListFlowsResponse' {} a -> s {nextToken = a} :: ListFlowsResponse)
+
+-- | The response's http status code.
+listFlowsResponse_httpStatus :: Lens.Lens' ListFlowsResponse Prelude.Int
+listFlowsResponse_httpStatus = Lens.lens (\ListFlowsResponse' {httpStatus} -> httpStatus) (\s@ListFlowsResponse' {} a -> s {httpStatus = a} :: ListFlowsResponse)
+
+instance Prelude.NFData ListFlowsResponse where
+  rnf ListFlowsResponse' {..} =
+    Prelude.rnf flows
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/ListTagsForResource.hs b/gen/Amazonka/AppFlow/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/ListTagsForResource.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.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)
+--
+-- Retrieves the tags that are associated with a specified flow.
+module Amazonka.AppFlow.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the specified flow.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the specified flow.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the specified flow.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The tags used to organize, track, or control access for your flow.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The tags used to organize, track, or control access for your flow.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The tags used to organize, track, or control access for your flow.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/RegisterConnector.hs b/gen/Amazonka/AppFlow/RegisterConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/RegisterConnector.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.RegisterConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers a new custom connector with your Amazon Web Services account.
+-- Before you can register the connector, you must deploy the associated
+-- AWS lambda function in your account.
+module Amazonka.AppFlow.RegisterConnector
+  ( -- * Creating a Request
+    RegisterConnector (..),
+    newRegisterConnector,
+
+    -- * Request Lenses
+    registerConnector_connectorLabel,
+    registerConnector_connectorProvisioningConfig,
+    registerConnector_connectorProvisioningType,
+    registerConnector_description,
+
+    -- * Destructuring the Response
+    RegisterConnectorResponse (..),
+    newRegisterConnectorResponse,
+
+    -- * Response Lenses
+    registerConnectorResponse_connectorArn,
+    registerConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRegisterConnector' smart constructor.
+data RegisterConnector = RegisterConnector'
+  { -- | The name of the connector. The name is unique for each
+    -- @ConnectorRegistration@ in your Amazon Web Services account.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | The provisioning type of the connector. Currently the only supported
+    -- value is LAMBDA.
+    connectorProvisioningConfig :: Prelude.Maybe ConnectorProvisioningConfig,
+    -- | The provisioning type of the connector. Currently the only supported
+    -- value is LAMBDA.
+    connectorProvisioningType :: Prelude.Maybe ConnectorProvisioningType,
+    -- | A description about the connector that\'s being registered.
+    description :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorLabel', 'registerConnector_connectorLabel' - The name of the connector. The name is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account.
+--
+-- 'connectorProvisioningConfig', 'registerConnector_connectorProvisioningConfig' - The provisioning type of the connector. Currently the only supported
+-- value is LAMBDA.
+--
+-- 'connectorProvisioningType', 'registerConnector_connectorProvisioningType' - The provisioning type of the connector. Currently the only supported
+-- value is LAMBDA.
+--
+-- 'description', 'registerConnector_description' - A description about the connector that\'s being registered.
+newRegisterConnector ::
+  RegisterConnector
+newRegisterConnector =
+  RegisterConnector'
+    { connectorLabel =
+        Prelude.Nothing,
+      connectorProvisioningConfig = Prelude.Nothing,
+      connectorProvisioningType = Prelude.Nothing,
+      description = Prelude.Nothing
+    }
+
+-- | The name of the connector. The name is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account.
+registerConnector_connectorLabel :: Lens.Lens' RegisterConnector (Prelude.Maybe Prelude.Text)
+registerConnector_connectorLabel = Lens.lens (\RegisterConnector' {connectorLabel} -> connectorLabel) (\s@RegisterConnector' {} a -> s {connectorLabel = a} :: RegisterConnector)
+
+-- | The provisioning type of the connector. Currently the only supported
+-- value is LAMBDA.
+registerConnector_connectorProvisioningConfig :: Lens.Lens' RegisterConnector (Prelude.Maybe ConnectorProvisioningConfig)
+registerConnector_connectorProvisioningConfig = Lens.lens (\RegisterConnector' {connectorProvisioningConfig} -> connectorProvisioningConfig) (\s@RegisterConnector' {} a -> s {connectorProvisioningConfig = a} :: RegisterConnector)
+
+-- | The provisioning type of the connector. Currently the only supported
+-- value is LAMBDA.
+registerConnector_connectorProvisioningType :: Lens.Lens' RegisterConnector (Prelude.Maybe ConnectorProvisioningType)
+registerConnector_connectorProvisioningType = Lens.lens (\RegisterConnector' {connectorProvisioningType} -> connectorProvisioningType) (\s@RegisterConnector' {} a -> s {connectorProvisioningType = a} :: RegisterConnector)
+
+-- | A description about the connector that\'s being registered.
+registerConnector_description :: Lens.Lens' RegisterConnector (Prelude.Maybe Prelude.Text)
+registerConnector_description = Lens.lens (\RegisterConnector' {description} -> description) (\s@RegisterConnector' {} a -> s {description = a} :: RegisterConnector)
+
+instance Core.AWSRequest RegisterConnector where
+  type
+    AWSResponse RegisterConnector =
+      RegisterConnectorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RegisterConnectorResponse'
+            Prelude.<$> (x Data..?> "connectorArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RegisterConnector where
+  hashWithSalt _salt RegisterConnector' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` connectorProvisioningConfig
+      `Prelude.hashWithSalt` connectorProvisioningType
+      `Prelude.hashWithSalt` description
+
+instance Prelude.NFData RegisterConnector where
+  rnf RegisterConnector' {..} =
+    Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf connectorProvisioningConfig
+      `Prelude.seq` Prelude.rnf connectorProvisioningType
+      `Prelude.seq` Prelude.rnf description
+
+instance Data.ToHeaders RegisterConnector where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RegisterConnector where
+  toJSON RegisterConnector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorLabel" Data..=)
+              Prelude.<$> connectorLabel,
+            ("connectorProvisioningConfig" Data..=)
+              Prelude.<$> connectorProvisioningConfig,
+            ("connectorProvisioningType" Data..=)
+              Prelude.<$> connectorProvisioningType,
+            ("description" Data..=) Prelude.<$> description
+          ]
+      )
+
+instance Data.ToPath RegisterConnector where
+  toPath = Prelude.const "/register-connector"
+
+instance Data.ToQuery RegisterConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRegisterConnectorResponse' smart constructor.
+data RegisterConnectorResponse = RegisterConnectorResponse'
+  { -- | The ARN of the connector being registered.
+    connectorArn :: 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 'RegisterConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorArn', 'registerConnectorResponse_connectorArn' - The ARN of the connector being registered.
+--
+-- 'httpStatus', 'registerConnectorResponse_httpStatus' - The response's http status code.
+newRegisterConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RegisterConnectorResponse
+newRegisterConnectorResponse pHttpStatus_ =
+  RegisterConnectorResponse'
+    { connectorArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the connector being registered.
+registerConnectorResponse_connectorArn :: Lens.Lens' RegisterConnectorResponse (Prelude.Maybe Prelude.Text)
+registerConnectorResponse_connectorArn = Lens.lens (\RegisterConnectorResponse' {connectorArn} -> connectorArn) (\s@RegisterConnectorResponse' {} a -> s {connectorArn = a} :: RegisterConnectorResponse)
+
+-- | The response's http status code.
+registerConnectorResponse_httpStatus :: Lens.Lens' RegisterConnectorResponse Prelude.Int
+registerConnectorResponse_httpStatus = Lens.lens (\RegisterConnectorResponse' {httpStatus} -> httpStatus) (\s@RegisterConnectorResponse' {} a -> s {httpStatus = a} :: RegisterConnectorResponse)
+
+instance Prelude.NFData RegisterConnectorResponse where
+  rnf RegisterConnectorResponse' {..} =
+    Prelude.rnf connectorArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/StartFlow.hs b/gen/Amazonka/AppFlow/StartFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/StartFlow.hs
@@ -0,0 +1,193 @@
+{-# 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.AppFlow.StartFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates an existing flow. For on-demand flows, this operation runs the
+-- flow immediately. For schedule and event-triggered flows, this operation
+-- activates the flow.
+module Amazonka.AppFlow.StartFlow
+  ( -- * Creating a Request
+    StartFlow (..),
+    newStartFlow,
+
+    -- * Request Lenses
+    startFlow_flowName,
+
+    -- * Destructuring the Response
+    StartFlowResponse (..),
+    newStartFlowResponse,
+
+    -- * Response Lenses
+    startFlowResponse_executionId,
+    startFlowResponse_flowArn,
+    startFlowResponse_flowStatus,
+    startFlowResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartFlow' smart constructor.
+data StartFlow = StartFlow'
+  { -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartFlow' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowName', 'startFlow_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+newStartFlow ::
+  -- | 'flowName'
+  Prelude.Text ->
+  StartFlow
+newStartFlow pFlowName_ =
+  StartFlow' {flowName = pFlowName_}
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+startFlow_flowName :: Lens.Lens' StartFlow Prelude.Text
+startFlow_flowName = Lens.lens (\StartFlow' {flowName} -> flowName) (\s@StartFlow' {} a -> s {flowName = a} :: StartFlow)
+
+instance Core.AWSRequest StartFlow where
+  type AWSResponse StartFlow = StartFlowResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartFlowResponse'
+            Prelude.<$> (x Data..?> "executionId")
+            Prelude.<*> (x Data..?> "flowArn")
+            Prelude.<*> (x Data..?> "flowStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartFlow where
+  hashWithSalt _salt StartFlow' {..} =
+    _salt `Prelude.hashWithSalt` flowName
+
+instance Prelude.NFData StartFlow where
+  rnf StartFlow' {..} = Prelude.rnf flowName
+
+instance Data.ToHeaders StartFlow where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartFlow where
+  toJSON StartFlow' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("flowName" Data..= flowName)]
+      )
+
+instance Data.ToPath StartFlow where
+  toPath = Prelude.const "/start-flow"
+
+instance Data.ToQuery StartFlow where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartFlowResponse' smart constructor.
+data StartFlowResponse = StartFlowResponse'
+  { -- | Returns the internal execution ID of an on-demand flow when the flow is
+    -- started. For scheduled or event-triggered flows, this value is null.
+    executionId :: Prelude.Maybe Prelude.Text,
+    -- | The flow\'s Amazon Resource Name (ARN).
+    flowArn :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the current status of the flow.
+    flowStatus :: Prelude.Maybe FlowStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartFlowResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'executionId', 'startFlowResponse_executionId' - Returns the internal execution ID of an on-demand flow when the flow is
+-- started. For scheduled or event-triggered flows, this value is null.
+--
+-- 'flowArn', 'startFlowResponse_flowArn' - The flow\'s Amazon Resource Name (ARN).
+--
+-- 'flowStatus', 'startFlowResponse_flowStatus' - Indicates the current status of the flow.
+--
+-- 'httpStatus', 'startFlowResponse_httpStatus' - The response's http status code.
+newStartFlowResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartFlowResponse
+newStartFlowResponse pHttpStatus_ =
+  StartFlowResponse'
+    { executionId = Prelude.Nothing,
+      flowArn = Prelude.Nothing,
+      flowStatus = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns the internal execution ID of an on-demand flow when the flow is
+-- started. For scheduled or event-triggered flows, this value is null.
+startFlowResponse_executionId :: Lens.Lens' StartFlowResponse (Prelude.Maybe Prelude.Text)
+startFlowResponse_executionId = Lens.lens (\StartFlowResponse' {executionId} -> executionId) (\s@StartFlowResponse' {} a -> s {executionId = a} :: StartFlowResponse)
+
+-- | The flow\'s Amazon Resource Name (ARN).
+startFlowResponse_flowArn :: Lens.Lens' StartFlowResponse (Prelude.Maybe Prelude.Text)
+startFlowResponse_flowArn = Lens.lens (\StartFlowResponse' {flowArn} -> flowArn) (\s@StartFlowResponse' {} a -> s {flowArn = a} :: StartFlowResponse)
+
+-- | Indicates the current status of the flow.
+startFlowResponse_flowStatus :: Lens.Lens' StartFlowResponse (Prelude.Maybe FlowStatus)
+startFlowResponse_flowStatus = Lens.lens (\StartFlowResponse' {flowStatus} -> flowStatus) (\s@StartFlowResponse' {} a -> s {flowStatus = a} :: StartFlowResponse)
+
+-- | The response's http status code.
+startFlowResponse_httpStatus :: Lens.Lens' StartFlowResponse Prelude.Int
+startFlowResponse_httpStatus = Lens.lens (\StartFlowResponse' {httpStatus} -> httpStatus) (\s@StartFlowResponse' {} a -> s {httpStatus = a} :: StartFlowResponse)
+
+instance Prelude.NFData StartFlowResponse where
+  rnf StartFlowResponse' {..} =
+    Prelude.rnf executionId
+      `Prelude.seq` Prelude.rnf flowArn
+      `Prelude.seq` Prelude.rnf flowStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/StopFlow.hs b/gen/Amazonka/AppFlow/StopFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/StopFlow.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.StopFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deactivates the existing flow. For on-demand flows, this operation
+-- returns an @unsupportedOperationException@ error message. For schedule
+-- and event-triggered flows, this operation deactivates the flow.
+module Amazonka.AppFlow.StopFlow
+  ( -- * Creating a Request
+    StopFlow (..),
+    newStopFlow,
+
+    -- * Request Lenses
+    stopFlow_flowName,
+
+    -- * Destructuring the Response
+    StopFlowResponse (..),
+    newStopFlowResponse,
+
+    -- * Response Lenses
+    stopFlowResponse_flowArn,
+    stopFlowResponse_flowStatus,
+    stopFlowResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopFlow' smart constructor.
+data StopFlow = StopFlow'
+  { -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopFlow' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowName', 'stopFlow_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+newStopFlow ::
+  -- | 'flowName'
+  Prelude.Text ->
+  StopFlow
+newStopFlow pFlowName_ =
+  StopFlow' {flowName = pFlowName_}
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+stopFlow_flowName :: Lens.Lens' StopFlow Prelude.Text
+stopFlow_flowName = Lens.lens (\StopFlow' {flowName} -> flowName) (\s@StopFlow' {} a -> s {flowName = a} :: StopFlow)
+
+instance Core.AWSRequest StopFlow where
+  type AWSResponse StopFlow = StopFlowResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopFlowResponse'
+            Prelude.<$> (x Data..?> "flowArn")
+            Prelude.<*> (x Data..?> "flowStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopFlow where
+  hashWithSalt _salt StopFlow' {..} =
+    _salt `Prelude.hashWithSalt` flowName
+
+instance Prelude.NFData StopFlow where
+  rnf StopFlow' {..} = Prelude.rnf flowName
+
+instance Data.ToHeaders StopFlow where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopFlow where
+  toJSON StopFlow' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("flowName" Data..= flowName)]
+      )
+
+instance Data.ToPath StopFlow where
+  toPath = Prelude.const "/stop-flow"
+
+instance Data.ToQuery StopFlow where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopFlowResponse' smart constructor.
+data StopFlowResponse = StopFlowResponse'
+  { -- | The flow\'s Amazon Resource Name (ARN).
+    flowArn :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the current status of the flow.
+    flowStatus :: Prelude.Maybe FlowStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopFlowResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowArn', 'stopFlowResponse_flowArn' - The flow\'s Amazon Resource Name (ARN).
+--
+-- 'flowStatus', 'stopFlowResponse_flowStatus' - Indicates the current status of the flow.
+--
+-- 'httpStatus', 'stopFlowResponse_httpStatus' - The response's http status code.
+newStopFlowResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopFlowResponse
+newStopFlowResponse pHttpStatus_ =
+  StopFlowResponse'
+    { flowArn = Prelude.Nothing,
+      flowStatus = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The flow\'s Amazon Resource Name (ARN).
+stopFlowResponse_flowArn :: Lens.Lens' StopFlowResponse (Prelude.Maybe Prelude.Text)
+stopFlowResponse_flowArn = Lens.lens (\StopFlowResponse' {flowArn} -> flowArn) (\s@StopFlowResponse' {} a -> s {flowArn = a} :: StopFlowResponse)
+
+-- | Indicates the current status of the flow.
+stopFlowResponse_flowStatus :: Lens.Lens' StopFlowResponse (Prelude.Maybe FlowStatus)
+stopFlowResponse_flowStatus = Lens.lens (\StopFlowResponse' {flowStatus} -> flowStatus) (\s@StopFlowResponse' {} a -> s {flowStatus = a} :: StopFlowResponse)
+
+-- | The response's http status code.
+stopFlowResponse_httpStatus :: Lens.Lens' StopFlowResponse Prelude.Int
+stopFlowResponse_httpStatus = Lens.lens (\StopFlowResponse' {httpStatus} -> httpStatus) (\s@StopFlowResponse' {} a -> s {httpStatus = a} :: StopFlowResponse)
+
+instance Prelude.NFData StopFlowResponse where
+  rnf StopFlowResponse' {..} =
+    Prelude.rnf flowArn
+      `Prelude.seq` Prelude.rnf flowStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/TagResource.hs b/gen/Amazonka/AppFlow/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/TagResource.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.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)
+--
+-- Applies a tag to the specified flow.
+module Amazonka.AppFlow.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the flow that you want to tag.
+    resourceArn :: Prelude.Text,
+    -- | The tags used to organize, track, or control access for your flow.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the flow that you want to tag.
+--
+-- 'tags', 'tagResource_tags' - The tags used to organize, track, or control access for your flow.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the flow 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)
+
+-- | The tags used to organize, track, or control access for your flow.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/Types.hs b/gen/Amazonka/AppFlow/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types.hs
@@ -0,0 +1,1564 @@
+{-# 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.AppFlow.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.AppFlow.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _ConnectorAuthenticationException,
+    _ConnectorServerException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _UnsupportedOperationException,
+    _ValidationException,
+
+    -- * AggregationType
+    AggregationType (..),
+
+    -- * AmplitudeConnectorOperator
+    AmplitudeConnectorOperator (..),
+
+    -- * AuthenticationType
+    AuthenticationType (..),
+
+    -- * CatalogType
+    CatalogType (..),
+
+    -- * ConnectionMode
+    ConnectionMode (..),
+
+    -- * ConnectorProvisioningType
+    ConnectorProvisioningType (..),
+
+    -- * ConnectorType
+    ConnectorType (..),
+
+    -- * DataPullMode
+    DataPullMode (..),
+
+    -- * DatadogConnectorOperator
+    DatadogConnectorOperator (..),
+
+    -- * DynatraceConnectorOperator
+    DynatraceConnectorOperator (..),
+
+    -- * ExecutionStatus
+    ExecutionStatus (..),
+
+    -- * FileType
+    FileType (..),
+
+    -- * FlowStatus
+    FlowStatus (..),
+
+    -- * GoogleAnalyticsConnectorOperator
+    GoogleAnalyticsConnectorOperator (..),
+
+    -- * InforNexusConnectorOperator
+    InforNexusConnectorOperator (..),
+
+    -- * MarketoConnectorOperator
+    MarketoConnectorOperator (..),
+
+    -- * OAuth2CustomPropType
+    OAuth2CustomPropType (..),
+
+    -- * OAuth2GrantType
+    OAuth2GrantType (..),
+
+    -- * Operator
+    Operator (..),
+
+    -- * OperatorPropertiesKeys
+    OperatorPropertiesKeys (..),
+
+    -- * Operators
+    Operators (..),
+
+    -- * PathPrefix
+    PathPrefix (..),
+
+    -- * PrefixFormat
+    PrefixFormat (..),
+
+    -- * PrefixType
+    PrefixType (..),
+
+    -- * PrivateConnectionProvisioningFailureCause
+    PrivateConnectionProvisioningFailureCause (..),
+
+    -- * PrivateConnectionProvisioningStatus
+    PrivateConnectionProvisioningStatus (..),
+
+    -- * S3ConnectorOperator
+    S3ConnectorOperator (..),
+
+    -- * S3InputFileType
+    S3InputFileType (..),
+
+    -- * SAPODataConnectorOperator
+    SAPODataConnectorOperator (..),
+
+    -- * SalesforceConnectorOperator
+    SalesforceConnectorOperator (..),
+
+    -- * SalesforceDataTransferApi
+    SalesforceDataTransferApi (..),
+
+    -- * ScheduleFrequencyType
+    ScheduleFrequencyType (..),
+
+    -- * ServiceNowConnectorOperator
+    ServiceNowConnectorOperator (..),
+
+    -- * SingularConnectorOperator
+    SingularConnectorOperator (..),
+
+    -- * SlackConnectorOperator
+    SlackConnectorOperator (..),
+
+    -- * TaskType
+    TaskType (..),
+
+    -- * TrendmicroConnectorOperator
+    TrendmicroConnectorOperator (..),
+
+    -- * TriggerType
+    TriggerType (..),
+
+    -- * VeevaConnectorOperator
+    VeevaConnectorOperator (..),
+
+    -- * WriteOperationType
+    WriteOperationType (..),
+
+    -- * ZendeskConnectorOperator
+    ZendeskConnectorOperator (..),
+
+    -- * AggregationConfig
+    AggregationConfig (..),
+    newAggregationConfig,
+    aggregationConfig_aggregationType,
+    aggregationConfig_targetFileSize,
+
+    -- * AmplitudeConnectorProfileCredentials
+    AmplitudeConnectorProfileCredentials (..),
+    newAmplitudeConnectorProfileCredentials,
+    amplitudeConnectorProfileCredentials_apiKey,
+    amplitudeConnectorProfileCredentials_secretKey,
+
+    -- * AmplitudeConnectorProfileProperties
+    AmplitudeConnectorProfileProperties (..),
+    newAmplitudeConnectorProfileProperties,
+
+    -- * AmplitudeMetadata
+    AmplitudeMetadata (..),
+    newAmplitudeMetadata,
+
+    -- * AmplitudeSourceProperties
+    AmplitudeSourceProperties (..),
+    newAmplitudeSourceProperties,
+    amplitudeSourceProperties_object,
+
+    -- * ApiKeyCredentials
+    ApiKeyCredentials (..),
+    newApiKeyCredentials,
+    apiKeyCredentials_apiSecretKey,
+    apiKeyCredentials_apiKey,
+
+    -- * AuthParameter
+    AuthParameter (..),
+    newAuthParameter,
+    authParameter_connectorSuppliedValues,
+    authParameter_description,
+    authParameter_isRequired,
+    authParameter_isSensitiveField,
+    authParameter_key,
+    authParameter_label,
+
+    -- * AuthenticationConfig
+    AuthenticationConfig (..),
+    newAuthenticationConfig,
+    authenticationConfig_customAuthConfigs,
+    authenticationConfig_isApiKeyAuthSupported,
+    authenticationConfig_isBasicAuthSupported,
+    authenticationConfig_isCustomAuthSupported,
+    authenticationConfig_isOAuth2Supported,
+    authenticationConfig_oAuth2Defaults,
+
+    -- * BasicAuthCredentials
+    BasicAuthCredentials (..),
+    newBasicAuthCredentials,
+    basicAuthCredentials_username,
+    basicAuthCredentials_password,
+
+    -- * ConnectorConfiguration
+    ConnectorConfiguration (..),
+    newConnectorConfiguration,
+    connectorConfiguration_authenticationConfig,
+    connectorConfiguration_canUseAsDestination,
+    connectorConfiguration_canUseAsSource,
+    connectorConfiguration_connectorArn,
+    connectorConfiguration_connectorDescription,
+    connectorConfiguration_connectorLabel,
+    connectorConfiguration_connectorMetadata,
+    connectorConfiguration_connectorModes,
+    connectorConfiguration_connectorName,
+    connectorConfiguration_connectorOwner,
+    connectorConfiguration_connectorProvisioningConfig,
+    connectorConfiguration_connectorProvisioningType,
+    connectorConfiguration_connectorRuntimeSettings,
+    connectorConfiguration_connectorType,
+    connectorConfiguration_connectorVersion,
+    connectorConfiguration_isPrivateLinkEnabled,
+    connectorConfiguration_isPrivateLinkEndpointUrlRequired,
+    connectorConfiguration_logoURL,
+    connectorConfiguration_registeredAt,
+    connectorConfiguration_registeredBy,
+    connectorConfiguration_supportedApiVersions,
+    connectorConfiguration_supportedDestinationConnectors,
+    connectorConfiguration_supportedOperators,
+    connectorConfiguration_supportedSchedulingFrequencies,
+    connectorConfiguration_supportedTriggerTypes,
+    connectorConfiguration_supportedWriteOperations,
+
+    -- * ConnectorDetail
+    ConnectorDetail (..),
+    newConnectorDetail,
+    connectorDetail_applicationType,
+    connectorDetail_connectorDescription,
+    connectorDetail_connectorLabel,
+    connectorDetail_connectorModes,
+    connectorDetail_connectorName,
+    connectorDetail_connectorOwner,
+    connectorDetail_connectorProvisioningType,
+    connectorDetail_connectorType,
+    connectorDetail_connectorVersion,
+    connectorDetail_registeredAt,
+    connectorDetail_registeredBy,
+
+    -- * ConnectorEntity
+    ConnectorEntity (..),
+    newConnectorEntity,
+    connectorEntity_hasNestedEntities,
+    connectorEntity_label,
+    connectorEntity_name,
+
+    -- * ConnectorEntityField
+    ConnectorEntityField (..),
+    newConnectorEntityField,
+    connectorEntityField_customProperties,
+    connectorEntityField_defaultValue,
+    connectorEntityField_description,
+    connectorEntityField_destinationProperties,
+    connectorEntityField_isDeprecated,
+    connectorEntityField_isPrimaryKey,
+    connectorEntityField_label,
+    connectorEntityField_parentIdentifier,
+    connectorEntityField_sourceProperties,
+    connectorEntityField_supportedFieldTypeDetails,
+    connectorEntityField_identifier,
+
+    -- * ConnectorMetadata
+    ConnectorMetadata (..),
+    newConnectorMetadata,
+    connectorMetadata_amplitude,
+    connectorMetadata_customerProfiles,
+    connectorMetadata_datadog,
+    connectorMetadata_dynatrace,
+    connectorMetadata_eventBridge,
+    connectorMetadata_googleAnalytics,
+    connectorMetadata_honeycode,
+    connectorMetadata_inforNexus,
+    connectorMetadata_marketo,
+    connectorMetadata_redshift,
+    connectorMetadata_s3,
+    connectorMetadata_sAPOData,
+    connectorMetadata_salesforce,
+    connectorMetadata_serviceNow,
+    connectorMetadata_singular,
+    connectorMetadata_slack,
+    connectorMetadata_snowflake,
+    connectorMetadata_trendmicro,
+    connectorMetadata_upsolver,
+    connectorMetadata_veeva,
+    connectorMetadata_zendesk,
+
+    -- * ConnectorOAuthRequest
+    ConnectorOAuthRequest (..),
+    newConnectorOAuthRequest,
+    connectorOAuthRequest_authCode,
+    connectorOAuthRequest_redirectUri,
+
+    -- * ConnectorOperator
+    ConnectorOperator (..),
+    newConnectorOperator,
+    connectorOperator_amplitude,
+    connectorOperator_customConnector,
+    connectorOperator_datadog,
+    connectorOperator_dynatrace,
+    connectorOperator_googleAnalytics,
+    connectorOperator_inforNexus,
+    connectorOperator_marketo,
+    connectorOperator_s3,
+    connectorOperator_sAPOData,
+    connectorOperator_salesforce,
+    connectorOperator_serviceNow,
+    connectorOperator_singular,
+    connectorOperator_slack,
+    connectorOperator_trendmicro,
+    connectorOperator_veeva,
+    connectorOperator_zendesk,
+
+    -- * ConnectorProfile
+    ConnectorProfile (..),
+    newConnectorProfile,
+    connectorProfile_connectionMode,
+    connectorProfile_connectorLabel,
+    connectorProfile_connectorProfileArn,
+    connectorProfile_connectorProfileName,
+    connectorProfile_connectorProfileProperties,
+    connectorProfile_connectorType,
+    connectorProfile_createdAt,
+    connectorProfile_credentialsArn,
+    connectorProfile_lastUpdatedAt,
+    connectorProfile_privateConnectionProvisioningState,
+
+    -- * ConnectorProfileConfig
+    ConnectorProfileConfig (..),
+    newConnectorProfileConfig,
+    connectorProfileConfig_connectorProfileCredentials,
+    connectorProfileConfig_connectorProfileProperties,
+
+    -- * ConnectorProfileCredentials
+    ConnectorProfileCredentials (..),
+    newConnectorProfileCredentials,
+    connectorProfileCredentials_amplitude,
+    connectorProfileCredentials_customConnector,
+    connectorProfileCredentials_datadog,
+    connectorProfileCredentials_dynatrace,
+    connectorProfileCredentials_googleAnalytics,
+    connectorProfileCredentials_honeycode,
+    connectorProfileCredentials_inforNexus,
+    connectorProfileCredentials_marketo,
+    connectorProfileCredentials_redshift,
+    connectorProfileCredentials_sAPOData,
+    connectorProfileCredentials_salesforce,
+    connectorProfileCredentials_serviceNow,
+    connectorProfileCredentials_singular,
+    connectorProfileCredentials_slack,
+    connectorProfileCredentials_snowflake,
+    connectorProfileCredentials_trendmicro,
+    connectorProfileCredentials_veeva,
+    connectorProfileCredentials_zendesk,
+
+    -- * ConnectorProfileProperties
+    ConnectorProfileProperties (..),
+    newConnectorProfileProperties,
+    connectorProfileProperties_amplitude,
+    connectorProfileProperties_customConnector,
+    connectorProfileProperties_datadog,
+    connectorProfileProperties_dynatrace,
+    connectorProfileProperties_googleAnalytics,
+    connectorProfileProperties_honeycode,
+    connectorProfileProperties_inforNexus,
+    connectorProfileProperties_marketo,
+    connectorProfileProperties_redshift,
+    connectorProfileProperties_sAPOData,
+    connectorProfileProperties_salesforce,
+    connectorProfileProperties_serviceNow,
+    connectorProfileProperties_singular,
+    connectorProfileProperties_slack,
+    connectorProfileProperties_snowflake,
+    connectorProfileProperties_trendmicro,
+    connectorProfileProperties_veeva,
+    connectorProfileProperties_zendesk,
+
+    -- * ConnectorProvisioningConfig
+    ConnectorProvisioningConfig (..),
+    newConnectorProvisioningConfig,
+    connectorProvisioningConfig_lambda,
+
+    -- * ConnectorRuntimeSetting
+    ConnectorRuntimeSetting (..),
+    newConnectorRuntimeSetting,
+    connectorRuntimeSetting_connectorSuppliedValueOptions,
+    connectorRuntimeSetting_dataType,
+    connectorRuntimeSetting_description,
+    connectorRuntimeSetting_isRequired,
+    connectorRuntimeSetting_key,
+    connectorRuntimeSetting_label,
+    connectorRuntimeSetting_scope,
+
+    -- * CustomAuthConfig
+    CustomAuthConfig (..),
+    newCustomAuthConfig,
+    customAuthConfig_authParameters,
+    customAuthConfig_customAuthenticationType,
+
+    -- * CustomAuthCredentials
+    CustomAuthCredentials (..),
+    newCustomAuthCredentials,
+    customAuthCredentials_credentialsMap,
+    customAuthCredentials_customAuthenticationType,
+
+    -- * CustomConnectorDestinationProperties
+    CustomConnectorDestinationProperties (..),
+    newCustomConnectorDestinationProperties,
+    customConnectorDestinationProperties_customProperties,
+    customConnectorDestinationProperties_errorHandlingConfig,
+    customConnectorDestinationProperties_idFieldNames,
+    customConnectorDestinationProperties_writeOperationType,
+    customConnectorDestinationProperties_entityName,
+
+    -- * CustomConnectorProfileCredentials
+    CustomConnectorProfileCredentials (..),
+    newCustomConnectorProfileCredentials,
+    customConnectorProfileCredentials_apiKey,
+    customConnectorProfileCredentials_basic,
+    customConnectorProfileCredentials_custom,
+    customConnectorProfileCredentials_oauth2,
+    customConnectorProfileCredentials_authenticationType,
+
+    -- * CustomConnectorProfileProperties
+    CustomConnectorProfileProperties (..),
+    newCustomConnectorProfileProperties,
+    customConnectorProfileProperties_oAuth2Properties,
+    customConnectorProfileProperties_profileProperties,
+
+    -- * CustomConnectorSourceProperties
+    CustomConnectorSourceProperties (..),
+    newCustomConnectorSourceProperties,
+    customConnectorSourceProperties_customProperties,
+    customConnectorSourceProperties_entityName,
+
+    -- * CustomerProfilesDestinationProperties
+    CustomerProfilesDestinationProperties (..),
+    newCustomerProfilesDestinationProperties,
+    customerProfilesDestinationProperties_objectTypeName,
+    customerProfilesDestinationProperties_domainName,
+
+    -- * CustomerProfilesMetadata
+    CustomerProfilesMetadata (..),
+    newCustomerProfilesMetadata,
+
+    -- * DatadogConnectorProfileCredentials
+    DatadogConnectorProfileCredentials (..),
+    newDatadogConnectorProfileCredentials,
+    datadogConnectorProfileCredentials_apiKey,
+    datadogConnectorProfileCredentials_applicationKey,
+
+    -- * DatadogConnectorProfileProperties
+    DatadogConnectorProfileProperties (..),
+    newDatadogConnectorProfileProperties,
+    datadogConnectorProfileProperties_instanceUrl,
+
+    -- * DatadogMetadata
+    DatadogMetadata (..),
+    newDatadogMetadata,
+
+    -- * DatadogSourceProperties
+    DatadogSourceProperties (..),
+    newDatadogSourceProperties,
+    datadogSourceProperties_object,
+
+    -- * DestinationConnectorProperties
+    DestinationConnectorProperties (..),
+    newDestinationConnectorProperties,
+    destinationConnectorProperties_customConnector,
+    destinationConnectorProperties_customerProfiles,
+    destinationConnectorProperties_eventBridge,
+    destinationConnectorProperties_honeycode,
+    destinationConnectorProperties_lookoutMetrics,
+    destinationConnectorProperties_marketo,
+    destinationConnectorProperties_redshift,
+    destinationConnectorProperties_s3,
+    destinationConnectorProperties_sAPOData,
+    destinationConnectorProperties_salesforce,
+    destinationConnectorProperties_snowflake,
+    destinationConnectorProperties_upsolver,
+    destinationConnectorProperties_zendesk,
+
+    -- * DestinationFieldProperties
+    DestinationFieldProperties (..),
+    newDestinationFieldProperties,
+    destinationFieldProperties_isCreatable,
+    destinationFieldProperties_isDefaultedOnCreate,
+    destinationFieldProperties_isNullable,
+    destinationFieldProperties_isUpdatable,
+    destinationFieldProperties_isUpsertable,
+    destinationFieldProperties_supportedWriteOperations,
+
+    -- * DestinationFlowConfig
+    DestinationFlowConfig (..),
+    newDestinationFlowConfig,
+    destinationFlowConfig_apiVersion,
+    destinationFlowConfig_connectorProfileName,
+    destinationFlowConfig_connectorType,
+    destinationFlowConfig_destinationConnectorProperties,
+
+    -- * DynatraceConnectorProfileCredentials
+    DynatraceConnectorProfileCredentials (..),
+    newDynatraceConnectorProfileCredentials,
+    dynatraceConnectorProfileCredentials_apiToken,
+
+    -- * DynatraceConnectorProfileProperties
+    DynatraceConnectorProfileProperties (..),
+    newDynatraceConnectorProfileProperties,
+    dynatraceConnectorProfileProperties_instanceUrl,
+
+    -- * DynatraceMetadata
+    DynatraceMetadata (..),
+    newDynatraceMetadata,
+
+    -- * DynatraceSourceProperties
+    DynatraceSourceProperties (..),
+    newDynatraceSourceProperties,
+    dynatraceSourceProperties_object,
+
+    -- * ErrorHandlingConfig
+    ErrorHandlingConfig (..),
+    newErrorHandlingConfig,
+    errorHandlingConfig_bucketName,
+    errorHandlingConfig_bucketPrefix,
+    errorHandlingConfig_failOnFirstDestinationError,
+
+    -- * ErrorInfo
+    ErrorInfo (..),
+    newErrorInfo,
+    errorInfo_executionMessage,
+    errorInfo_putFailuresCount,
+
+    -- * EventBridgeDestinationProperties
+    EventBridgeDestinationProperties (..),
+    newEventBridgeDestinationProperties,
+    eventBridgeDestinationProperties_errorHandlingConfig,
+    eventBridgeDestinationProperties_object,
+
+    -- * EventBridgeMetadata
+    EventBridgeMetadata (..),
+    newEventBridgeMetadata,
+
+    -- * ExecutionDetails
+    ExecutionDetails (..),
+    newExecutionDetails,
+    executionDetails_mostRecentExecutionMessage,
+    executionDetails_mostRecentExecutionStatus,
+    executionDetails_mostRecentExecutionTime,
+
+    -- * ExecutionRecord
+    ExecutionRecord (..),
+    newExecutionRecord,
+    executionRecord_dataPullEndTime,
+    executionRecord_dataPullStartTime,
+    executionRecord_executionId,
+    executionRecord_executionResult,
+    executionRecord_executionStatus,
+    executionRecord_lastUpdatedAt,
+    executionRecord_metadataCatalogDetails,
+    executionRecord_startedAt,
+
+    -- * ExecutionResult
+    ExecutionResult (..),
+    newExecutionResult,
+    executionResult_bytesProcessed,
+    executionResult_bytesWritten,
+    executionResult_errorInfo,
+    executionResult_recordsProcessed,
+
+    -- * FieldTypeDetails
+    FieldTypeDetails (..),
+    newFieldTypeDetails,
+    fieldTypeDetails_fieldLengthRange,
+    fieldTypeDetails_fieldValueRange,
+    fieldTypeDetails_supportedDateFormat,
+    fieldTypeDetails_supportedValues,
+    fieldTypeDetails_valueRegexPattern,
+    fieldTypeDetails_fieldType,
+    fieldTypeDetails_filterOperators,
+
+    -- * FlowDefinition
+    FlowDefinition (..),
+    newFlowDefinition,
+    flowDefinition_createdAt,
+    flowDefinition_createdBy,
+    flowDefinition_description,
+    flowDefinition_destinationConnectorLabel,
+    flowDefinition_destinationConnectorType,
+    flowDefinition_flowArn,
+    flowDefinition_flowName,
+    flowDefinition_flowStatus,
+    flowDefinition_lastRunExecutionDetails,
+    flowDefinition_lastUpdatedAt,
+    flowDefinition_lastUpdatedBy,
+    flowDefinition_sourceConnectorLabel,
+    flowDefinition_sourceConnectorType,
+    flowDefinition_tags,
+    flowDefinition_triggerType,
+
+    -- * GlueDataCatalogConfig
+    GlueDataCatalogConfig (..),
+    newGlueDataCatalogConfig,
+    glueDataCatalogConfig_roleArn,
+    glueDataCatalogConfig_databaseName,
+    glueDataCatalogConfig_tablePrefix,
+
+    -- * GoogleAnalyticsConnectorProfileCredentials
+    GoogleAnalyticsConnectorProfileCredentials (..),
+    newGoogleAnalyticsConnectorProfileCredentials,
+    googleAnalyticsConnectorProfileCredentials_accessToken,
+    googleAnalyticsConnectorProfileCredentials_oAuthRequest,
+    googleAnalyticsConnectorProfileCredentials_refreshToken,
+    googleAnalyticsConnectorProfileCredentials_clientId,
+    googleAnalyticsConnectorProfileCredentials_clientSecret,
+
+    -- * GoogleAnalyticsConnectorProfileProperties
+    GoogleAnalyticsConnectorProfileProperties (..),
+    newGoogleAnalyticsConnectorProfileProperties,
+
+    -- * GoogleAnalyticsMetadata
+    GoogleAnalyticsMetadata (..),
+    newGoogleAnalyticsMetadata,
+    googleAnalyticsMetadata_oAuthScopes,
+
+    -- * GoogleAnalyticsSourceProperties
+    GoogleAnalyticsSourceProperties (..),
+    newGoogleAnalyticsSourceProperties,
+    googleAnalyticsSourceProperties_object,
+
+    -- * HoneycodeConnectorProfileCredentials
+    HoneycodeConnectorProfileCredentials (..),
+    newHoneycodeConnectorProfileCredentials,
+    honeycodeConnectorProfileCredentials_accessToken,
+    honeycodeConnectorProfileCredentials_oAuthRequest,
+    honeycodeConnectorProfileCredentials_refreshToken,
+
+    -- * HoneycodeConnectorProfileProperties
+    HoneycodeConnectorProfileProperties (..),
+    newHoneycodeConnectorProfileProperties,
+
+    -- * HoneycodeDestinationProperties
+    HoneycodeDestinationProperties (..),
+    newHoneycodeDestinationProperties,
+    honeycodeDestinationProperties_errorHandlingConfig,
+    honeycodeDestinationProperties_object,
+
+    -- * HoneycodeMetadata
+    HoneycodeMetadata (..),
+    newHoneycodeMetadata,
+    honeycodeMetadata_oAuthScopes,
+
+    -- * IncrementalPullConfig
+    IncrementalPullConfig (..),
+    newIncrementalPullConfig,
+    incrementalPullConfig_datetimeTypeFieldName,
+
+    -- * InforNexusConnectorProfileCredentials
+    InforNexusConnectorProfileCredentials (..),
+    newInforNexusConnectorProfileCredentials,
+    inforNexusConnectorProfileCredentials_accessKeyId,
+    inforNexusConnectorProfileCredentials_userId,
+    inforNexusConnectorProfileCredentials_secretAccessKey,
+    inforNexusConnectorProfileCredentials_datakey,
+
+    -- * InforNexusConnectorProfileProperties
+    InforNexusConnectorProfileProperties (..),
+    newInforNexusConnectorProfileProperties,
+    inforNexusConnectorProfileProperties_instanceUrl,
+
+    -- * InforNexusMetadata
+    InforNexusMetadata (..),
+    newInforNexusMetadata,
+
+    -- * InforNexusSourceProperties
+    InforNexusSourceProperties (..),
+    newInforNexusSourceProperties,
+    inforNexusSourceProperties_object,
+
+    -- * LambdaConnectorProvisioningConfig
+    LambdaConnectorProvisioningConfig (..),
+    newLambdaConnectorProvisioningConfig,
+    lambdaConnectorProvisioningConfig_lambdaArn,
+
+    -- * LookoutMetricsDestinationProperties
+    LookoutMetricsDestinationProperties (..),
+    newLookoutMetricsDestinationProperties,
+
+    -- * MarketoConnectorProfileCredentials
+    MarketoConnectorProfileCredentials (..),
+    newMarketoConnectorProfileCredentials,
+    marketoConnectorProfileCredentials_accessToken,
+    marketoConnectorProfileCredentials_oAuthRequest,
+    marketoConnectorProfileCredentials_clientId,
+    marketoConnectorProfileCredentials_clientSecret,
+
+    -- * MarketoConnectorProfileProperties
+    MarketoConnectorProfileProperties (..),
+    newMarketoConnectorProfileProperties,
+    marketoConnectorProfileProperties_instanceUrl,
+
+    -- * MarketoDestinationProperties
+    MarketoDestinationProperties (..),
+    newMarketoDestinationProperties,
+    marketoDestinationProperties_errorHandlingConfig,
+    marketoDestinationProperties_object,
+
+    -- * MarketoMetadata
+    MarketoMetadata (..),
+    newMarketoMetadata,
+
+    -- * MarketoSourceProperties
+    MarketoSourceProperties (..),
+    newMarketoSourceProperties,
+    marketoSourceProperties_object,
+
+    -- * MetadataCatalogConfig
+    MetadataCatalogConfig (..),
+    newMetadataCatalogConfig,
+    metadataCatalogConfig_glueDataCatalog,
+
+    -- * MetadataCatalogDetail
+    MetadataCatalogDetail (..),
+    newMetadataCatalogDetail,
+    metadataCatalogDetail_catalogType,
+    metadataCatalogDetail_partitionRegistrationOutput,
+    metadataCatalogDetail_tableName,
+    metadataCatalogDetail_tableRegistrationOutput,
+
+    -- * OAuth2Credentials
+    OAuth2Credentials (..),
+    newOAuth2Credentials,
+    oAuth2Credentials_accessToken,
+    oAuth2Credentials_clientId,
+    oAuth2Credentials_clientSecret,
+    oAuth2Credentials_oAuthRequest,
+    oAuth2Credentials_refreshToken,
+
+    -- * OAuth2CustomParameter
+    OAuth2CustomParameter (..),
+    newOAuth2CustomParameter,
+    oAuth2CustomParameter_connectorSuppliedValues,
+    oAuth2CustomParameter_description,
+    oAuth2CustomParameter_isRequired,
+    oAuth2CustomParameter_isSensitiveField,
+    oAuth2CustomParameter_key,
+    oAuth2CustomParameter_label,
+    oAuth2CustomParameter_type,
+
+    -- * OAuth2Defaults
+    OAuth2Defaults (..),
+    newOAuth2Defaults,
+    oAuth2Defaults_authCodeUrls,
+    oAuth2Defaults_oauth2CustomProperties,
+    oAuth2Defaults_oauth2GrantTypesSupported,
+    oAuth2Defaults_oauthScopes,
+    oAuth2Defaults_tokenUrls,
+
+    -- * OAuth2Properties
+    OAuth2Properties (..),
+    newOAuth2Properties,
+    oAuth2Properties_tokenUrlCustomProperties,
+    oAuth2Properties_tokenUrl,
+    oAuth2Properties_oAuth2GrantType,
+
+    -- * OAuthCredentials
+    OAuthCredentials (..),
+    newOAuthCredentials,
+    oAuthCredentials_accessToken,
+    oAuthCredentials_oAuthRequest,
+    oAuthCredentials_refreshToken,
+    oAuthCredentials_clientId,
+    oAuthCredentials_clientSecret,
+
+    -- * OAuthProperties
+    OAuthProperties (..),
+    newOAuthProperties,
+    oAuthProperties_tokenUrl,
+    oAuthProperties_authCodeUrl,
+    oAuthProperties_oAuthScopes,
+
+    -- * PrefixConfig
+    PrefixConfig (..),
+    newPrefixConfig,
+    prefixConfig_pathPrefixHierarchy,
+    prefixConfig_prefixFormat,
+    prefixConfig_prefixType,
+
+    -- * PrivateConnectionProvisioningState
+    PrivateConnectionProvisioningState (..),
+    newPrivateConnectionProvisioningState,
+    privateConnectionProvisioningState_failureCause,
+    privateConnectionProvisioningState_failureMessage,
+    privateConnectionProvisioningState_status,
+
+    -- * Range
+    Range (..),
+    newRange,
+    range_maximum,
+    range_minimum,
+
+    -- * RedshiftConnectorProfileCredentials
+    RedshiftConnectorProfileCredentials (..),
+    newRedshiftConnectorProfileCredentials,
+    redshiftConnectorProfileCredentials_password,
+    redshiftConnectorProfileCredentials_username,
+
+    -- * RedshiftConnectorProfileProperties
+    RedshiftConnectorProfileProperties (..),
+    newRedshiftConnectorProfileProperties,
+    redshiftConnectorProfileProperties_bucketPrefix,
+    redshiftConnectorProfileProperties_clusterIdentifier,
+    redshiftConnectorProfileProperties_dataApiRoleArn,
+    redshiftConnectorProfileProperties_databaseName,
+    redshiftConnectorProfileProperties_databaseUrl,
+    redshiftConnectorProfileProperties_isRedshiftServerless,
+    redshiftConnectorProfileProperties_workgroupName,
+    redshiftConnectorProfileProperties_bucketName,
+    redshiftConnectorProfileProperties_roleArn,
+
+    -- * RedshiftDestinationProperties
+    RedshiftDestinationProperties (..),
+    newRedshiftDestinationProperties,
+    redshiftDestinationProperties_bucketPrefix,
+    redshiftDestinationProperties_errorHandlingConfig,
+    redshiftDestinationProperties_object,
+    redshiftDestinationProperties_intermediateBucketName,
+
+    -- * RedshiftMetadata
+    RedshiftMetadata (..),
+    newRedshiftMetadata,
+
+    -- * RegistrationOutput
+    RegistrationOutput (..),
+    newRegistrationOutput,
+    registrationOutput_message,
+    registrationOutput_result,
+    registrationOutput_status,
+
+    -- * S3DestinationProperties
+    S3DestinationProperties (..),
+    newS3DestinationProperties,
+    s3DestinationProperties_bucketPrefix,
+    s3DestinationProperties_s3OutputFormatConfig,
+    s3DestinationProperties_bucketName,
+
+    -- * S3InputFormatConfig
+    S3InputFormatConfig (..),
+    newS3InputFormatConfig,
+    s3InputFormatConfig_s3InputFileType,
+
+    -- * S3Metadata
+    S3Metadata (..),
+    newS3Metadata,
+
+    -- * S3OutputFormatConfig
+    S3OutputFormatConfig (..),
+    newS3OutputFormatConfig,
+    s3OutputFormatConfig_aggregationConfig,
+    s3OutputFormatConfig_fileType,
+    s3OutputFormatConfig_prefixConfig,
+    s3OutputFormatConfig_preserveSourceDataTyping,
+
+    -- * S3SourceProperties
+    S3SourceProperties (..),
+    newS3SourceProperties,
+    s3SourceProperties_bucketPrefix,
+    s3SourceProperties_s3InputFormatConfig,
+    s3SourceProperties_bucketName,
+
+    -- * SAPODataConnectorProfileCredentials
+    SAPODataConnectorProfileCredentials (..),
+    newSAPODataConnectorProfileCredentials,
+    sAPODataConnectorProfileCredentials_basicAuthCredentials,
+    sAPODataConnectorProfileCredentials_oAuthCredentials,
+
+    -- * SAPODataConnectorProfileProperties
+    SAPODataConnectorProfileProperties (..),
+    newSAPODataConnectorProfileProperties,
+    sAPODataConnectorProfileProperties_logonLanguage,
+    sAPODataConnectorProfileProperties_oAuthProperties,
+    sAPODataConnectorProfileProperties_privateLinkServiceName,
+    sAPODataConnectorProfileProperties_applicationHostUrl,
+    sAPODataConnectorProfileProperties_applicationServicePath,
+    sAPODataConnectorProfileProperties_portNumber,
+    sAPODataConnectorProfileProperties_clientNumber,
+
+    -- * SAPODataDestinationProperties
+    SAPODataDestinationProperties (..),
+    newSAPODataDestinationProperties,
+    sAPODataDestinationProperties_errorHandlingConfig,
+    sAPODataDestinationProperties_idFieldNames,
+    sAPODataDestinationProperties_successResponseHandlingConfig,
+    sAPODataDestinationProperties_writeOperationType,
+    sAPODataDestinationProperties_objectPath,
+
+    -- * SAPODataMetadata
+    SAPODataMetadata (..),
+    newSAPODataMetadata,
+
+    -- * SAPODataSourceProperties
+    SAPODataSourceProperties (..),
+    newSAPODataSourceProperties,
+    sAPODataSourceProperties_objectPath,
+
+    -- * SalesforceConnectorProfileCredentials
+    SalesforceConnectorProfileCredentials (..),
+    newSalesforceConnectorProfileCredentials,
+    salesforceConnectorProfileCredentials_accessToken,
+    salesforceConnectorProfileCredentials_clientCredentialsArn,
+    salesforceConnectorProfileCredentials_oAuthRequest,
+    salesforceConnectorProfileCredentials_refreshToken,
+
+    -- * SalesforceConnectorProfileProperties
+    SalesforceConnectorProfileProperties (..),
+    newSalesforceConnectorProfileProperties,
+    salesforceConnectorProfileProperties_instanceUrl,
+    salesforceConnectorProfileProperties_isSandboxEnvironment,
+
+    -- * SalesforceDestinationProperties
+    SalesforceDestinationProperties (..),
+    newSalesforceDestinationProperties,
+    salesforceDestinationProperties_dataTransferApi,
+    salesforceDestinationProperties_errorHandlingConfig,
+    salesforceDestinationProperties_idFieldNames,
+    salesforceDestinationProperties_writeOperationType,
+    salesforceDestinationProperties_object,
+
+    -- * SalesforceMetadata
+    SalesforceMetadata (..),
+    newSalesforceMetadata,
+    salesforceMetadata_dataTransferApis,
+    salesforceMetadata_oAuthScopes,
+
+    -- * SalesforceSourceProperties
+    SalesforceSourceProperties (..),
+    newSalesforceSourceProperties,
+    salesforceSourceProperties_dataTransferApi,
+    salesforceSourceProperties_enableDynamicFieldUpdate,
+    salesforceSourceProperties_includeDeletedRecords,
+    salesforceSourceProperties_object,
+
+    -- * ScheduledTriggerProperties
+    ScheduledTriggerProperties (..),
+    newScheduledTriggerProperties,
+    scheduledTriggerProperties_dataPullMode,
+    scheduledTriggerProperties_firstExecutionFrom,
+    scheduledTriggerProperties_flowErrorDeactivationThreshold,
+    scheduledTriggerProperties_scheduleEndTime,
+    scheduledTriggerProperties_scheduleOffset,
+    scheduledTriggerProperties_scheduleStartTime,
+    scheduledTriggerProperties_timezone,
+    scheduledTriggerProperties_scheduleExpression,
+
+    -- * ServiceNowConnectorProfileCredentials
+    ServiceNowConnectorProfileCredentials (..),
+    newServiceNowConnectorProfileCredentials,
+    serviceNowConnectorProfileCredentials_username,
+    serviceNowConnectorProfileCredentials_password,
+
+    -- * ServiceNowConnectorProfileProperties
+    ServiceNowConnectorProfileProperties (..),
+    newServiceNowConnectorProfileProperties,
+    serviceNowConnectorProfileProperties_instanceUrl,
+
+    -- * ServiceNowMetadata
+    ServiceNowMetadata (..),
+    newServiceNowMetadata,
+
+    -- * ServiceNowSourceProperties
+    ServiceNowSourceProperties (..),
+    newServiceNowSourceProperties,
+    serviceNowSourceProperties_object,
+
+    -- * SingularConnectorProfileCredentials
+    SingularConnectorProfileCredentials (..),
+    newSingularConnectorProfileCredentials,
+    singularConnectorProfileCredentials_apiKey,
+
+    -- * SingularConnectorProfileProperties
+    SingularConnectorProfileProperties (..),
+    newSingularConnectorProfileProperties,
+
+    -- * SingularMetadata
+    SingularMetadata (..),
+    newSingularMetadata,
+
+    -- * SingularSourceProperties
+    SingularSourceProperties (..),
+    newSingularSourceProperties,
+    singularSourceProperties_object,
+
+    -- * SlackConnectorProfileCredentials
+    SlackConnectorProfileCredentials (..),
+    newSlackConnectorProfileCredentials,
+    slackConnectorProfileCredentials_accessToken,
+    slackConnectorProfileCredentials_oAuthRequest,
+    slackConnectorProfileCredentials_clientId,
+    slackConnectorProfileCredentials_clientSecret,
+
+    -- * SlackConnectorProfileProperties
+    SlackConnectorProfileProperties (..),
+    newSlackConnectorProfileProperties,
+    slackConnectorProfileProperties_instanceUrl,
+
+    -- * SlackMetadata
+    SlackMetadata (..),
+    newSlackMetadata,
+    slackMetadata_oAuthScopes,
+
+    -- * SlackSourceProperties
+    SlackSourceProperties (..),
+    newSlackSourceProperties,
+    slackSourceProperties_object,
+
+    -- * SnowflakeConnectorProfileCredentials
+    SnowflakeConnectorProfileCredentials (..),
+    newSnowflakeConnectorProfileCredentials,
+    snowflakeConnectorProfileCredentials_username,
+    snowflakeConnectorProfileCredentials_password,
+
+    -- * SnowflakeConnectorProfileProperties
+    SnowflakeConnectorProfileProperties (..),
+    newSnowflakeConnectorProfileProperties,
+    snowflakeConnectorProfileProperties_accountName,
+    snowflakeConnectorProfileProperties_bucketPrefix,
+    snowflakeConnectorProfileProperties_privateLinkServiceName,
+    snowflakeConnectorProfileProperties_region,
+    snowflakeConnectorProfileProperties_warehouse,
+    snowflakeConnectorProfileProperties_stage,
+    snowflakeConnectorProfileProperties_bucketName,
+
+    -- * SnowflakeDestinationProperties
+    SnowflakeDestinationProperties (..),
+    newSnowflakeDestinationProperties,
+    snowflakeDestinationProperties_bucketPrefix,
+    snowflakeDestinationProperties_errorHandlingConfig,
+    snowflakeDestinationProperties_object,
+    snowflakeDestinationProperties_intermediateBucketName,
+
+    -- * SnowflakeMetadata
+    SnowflakeMetadata (..),
+    newSnowflakeMetadata,
+    snowflakeMetadata_supportedRegions,
+
+    -- * SourceConnectorProperties
+    SourceConnectorProperties (..),
+    newSourceConnectorProperties,
+    sourceConnectorProperties_amplitude,
+    sourceConnectorProperties_customConnector,
+    sourceConnectorProperties_datadog,
+    sourceConnectorProperties_dynatrace,
+    sourceConnectorProperties_googleAnalytics,
+    sourceConnectorProperties_inforNexus,
+    sourceConnectorProperties_marketo,
+    sourceConnectorProperties_s3,
+    sourceConnectorProperties_sAPOData,
+    sourceConnectorProperties_salesforce,
+    sourceConnectorProperties_serviceNow,
+    sourceConnectorProperties_singular,
+    sourceConnectorProperties_slack,
+    sourceConnectorProperties_trendmicro,
+    sourceConnectorProperties_veeva,
+    sourceConnectorProperties_zendesk,
+
+    -- * SourceFieldProperties
+    SourceFieldProperties (..),
+    newSourceFieldProperties,
+    sourceFieldProperties_isQueryable,
+    sourceFieldProperties_isRetrievable,
+    sourceFieldProperties_isTimestampFieldForIncrementalQueries,
+
+    -- * SourceFlowConfig
+    SourceFlowConfig (..),
+    newSourceFlowConfig,
+    sourceFlowConfig_apiVersion,
+    sourceFlowConfig_connectorProfileName,
+    sourceFlowConfig_incrementalPullConfig,
+    sourceFlowConfig_connectorType,
+    sourceFlowConfig_sourceConnectorProperties,
+
+    -- * SuccessResponseHandlingConfig
+    SuccessResponseHandlingConfig (..),
+    newSuccessResponseHandlingConfig,
+    successResponseHandlingConfig_bucketName,
+    successResponseHandlingConfig_bucketPrefix,
+
+    -- * SupportedFieldTypeDetails
+    SupportedFieldTypeDetails (..),
+    newSupportedFieldTypeDetails,
+    supportedFieldTypeDetails_v1,
+
+    -- * Task
+    Task (..),
+    newTask,
+    task_connectorOperator,
+    task_destinationField,
+    task_taskProperties,
+    task_sourceFields,
+    task_taskType,
+
+    -- * TrendmicroConnectorProfileCredentials
+    TrendmicroConnectorProfileCredentials (..),
+    newTrendmicroConnectorProfileCredentials,
+    trendmicroConnectorProfileCredentials_apiSecretKey,
+
+    -- * TrendmicroConnectorProfileProperties
+    TrendmicroConnectorProfileProperties (..),
+    newTrendmicroConnectorProfileProperties,
+
+    -- * TrendmicroMetadata
+    TrendmicroMetadata (..),
+    newTrendmicroMetadata,
+
+    -- * TrendmicroSourceProperties
+    TrendmicroSourceProperties (..),
+    newTrendmicroSourceProperties,
+    trendmicroSourceProperties_object,
+
+    -- * TriggerConfig
+    TriggerConfig (..),
+    newTriggerConfig,
+    triggerConfig_triggerProperties,
+    triggerConfig_triggerType,
+
+    -- * TriggerProperties
+    TriggerProperties (..),
+    newTriggerProperties,
+    triggerProperties_scheduled,
+
+    -- * UpsolverDestinationProperties
+    UpsolverDestinationProperties (..),
+    newUpsolverDestinationProperties,
+    upsolverDestinationProperties_bucketPrefix,
+    upsolverDestinationProperties_bucketName,
+    upsolverDestinationProperties_s3OutputFormatConfig,
+
+    -- * UpsolverMetadata
+    UpsolverMetadata (..),
+    newUpsolverMetadata,
+
+    -- * UpsolverS3OutputFormatConfig
+    UpsolverS3OutputFormatConfig (..),
+    newUpsolverS3OutputFormatConfig,
+    upsolverS3OutputFormatConfig_aggregationConfig,
+    upsolverS3OutputFormatConfig_fileType,
+    upsolverS3OutputFormatConfig_prefixConfig,
+
+    -- * VeevaConnectorProfileCredentials
+    VeevaConnectorProfileCredentials (..),
+    newVeevaConnectorProfileCredentials,
+    veevaConnectorProfileCredentials_username,
+    veevaConnectorProfileCredentials_password,
+
+    -- * VeevaConnectorProfileProperties
+    VeevaConnectorProfileProperties (..),
+    newVeevaConnectorProfileProperties,
+    veevaConnectorProfileProperties_instanceUrl,
+
+    -- * VeevaMetadata
+    VeevaMetadata (..),
+    newVeevaMetadata,
+
+    -- * VeevaSourceProperties
+    VeevaSourceProperties (..),
+    newVeevaSourceProperties,
+    veevaSourceProperties_documentType,
+    veevaSourceProperties_includeAllVersions,
+    veevaSourceProperties_includeRenditions,
+    veevaSourceProperties_includeSourceFiles,
+    veevaSourceProperties_object,
+
+    -- * ZendeskConnectorProfileCredentials
+    ZendeskConnectorProfileCredentials (..),
+    newZendeskConnectorProfileCredentials,
+    zendeskConnectorProfileCredentials_accessToken,
+    zendeskConnectorProfileCredentials_oAuthRequest,
+    zendeskConnectorProfileCredentials_clientId,
+    zendeskConnectorProfileCredentials_clientSecret,
+
+    -- * ZendeskConnectorProfileProperties
+    ZendeskConnectorProfileProperties (..),
+    newZendeskConnectorProfileProperties,
+    zendeskConnectorProfileProperties_instanceUrl,
+
+    -- * ZendeskDestinationProperties
+    ZendeskDestinationProperties (..),
+    newZendeskDestinationProperties,
+    zendeskDestinationProperties_errorHandlingConfig,
+    zendeskDestinationProperties_idFieldNames,
+    zendeskDestinationProperties_writeOperationType,
+    zendeskDestinationProperties_object,
+
+    -- * ZendeskMetadata
+    ZendeskMetadata (..),
+    newZendeskMetadata,
+    zendeskMetadata_oAuthScopes,
+
+    -- * ZendeskSourceProperties
+    ZendeskSourceProperties (..),
+    newZendeskSourceProperties,
+    zendeskSourceProperties_object,
+  )
+where
+
+import Amazonka.AppFlow.Types.AggregationConfig
+import Amazonka.AppFlow.Types.AggregationType
+import Amazonka.AppFlow.Types.AmplitudeConnectorOperator
+import Amazonka.AppFlow.Types.AmplitudeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.AmplitudeConnectorProfileProperties
+import Amazonka.AppFlow.Types.AmplitudeMetadata
+import Amazonka.AppFlow.Types.AmplitudeSourceProperties
+import Amazonka.AppFlow.Types.ApiKeyCredentials
+import Amazonka.AppFlow.Types.AuthParameter
+import Amazonka.AppFlow.Types.AuthenticationConfig
+import Amazonka.AppFlow.Types.AuthenticationType
+import Amazonka.AppFlow.Types.BasicAuthCredentials
+import Amazonka.AppFlow.Types.CatalogType
+import Amazonka.AppFlow.Types.ConnectionMode
+import Amazonka.AppFlow.Types.ConnectorConfiguration
+import Amazonka.AppFlow.Types.ConnectorDetail
+import Amazonka.AppFlow.Types.ConnectorEntity
+import Amazonka.AppFlow.Types.ConnectorEntityField
+import Amazonka.AppFlow.Types.ConnectorMetadata
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import Amazonka.AppFlow.Types.ConnectorOperator
+import Amazonka.AppFlow.Types.ConnectorProfile
+import Amazonka.AppFlow.Types.ConnectorProfileConfig
+import Amazonka.AppFlow.Types.ConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ConnectorProfileProperties
+import Amazonka.AppFlow.Types.ConnectorProvisioningConfig
+import Amazonka.AppFlow.Types.ConnectorProvisioningType
+import Amazonka.AppFlow.Types.ConnectorRuntimeSetting
+import Amazonka.AppFlow.Types.ConnectorType
+import Amazonka.AppFlow.Types.CustomAuthConfig
+import Amazonka.AppFlow.Types.CustomAuthCredentials
+import Amazonka.AppFlow.Types.CustomConnectorDestinationProperties
+import Amazonka.AppFlow.Types.CustomConnectorProfileCredentials
+import Amazonka.AppFlow.Types.CustomConnectorProfileProperties
+import Amazonka.AppFlow.Types.CustomConnectorSourceProperties
+import Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
+import Amazonka.AppFlow.Types.CustomerProfilesMetadata
+import Amazonka.AppFlow.Types.DataPullMode
+import Amazonka.AppFlow.Types.DatadogConnectorOperator
+import Amazonka.AppFlow.Types.DatadogConnectorProfileCredentials
+import Amazonka.AppFlow.Types.DatadogConnectorProfileProperties
+import Amazonka.AppFlow.Types.DatadogMetadata
+import Amazonka.AppFlow.Types.DatadogSourceProperties
+import Amazonka.AppFlow.Types.DestinationConnectorProperties
+import Amazonka.AppFlow.Types.DestinationFieldProperties
+import Amazonka.AppFlow.Types.DestinationFlowConfig
+import Amazonka.AppFlow.Types.DynatraceConnectorOperator
+import Amazonka.AppFlow.Types.DynatraceConnectorProfileCredentials
+import Amazonka.AppFlow.Types.DynatraceConnectorProfileProperties
+import Amazonka.AppFlow.Types.DynatraceMetadata
+import Amazonka.AppFlow.Types.DynatraceSourceProperties
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import Amazonka.AppFlow.Types.ErrorInfo
+import Amazonka.AppFlow.Types.EventBridgeDestinationProperties
+import Amazonka.AppFlow.Types.EventBridgeMetadata
+import Amazonka.AppFlow.Types.ExecutionDetails
+import Amazonka.AppFlow.Types.ExecutionRecord
+import Amazonka.AppFlow.Types.ExecutionResult
+import Amazonka.AppFlow.Types.ExecutionStatus
+import Amazonka.AppFlow.Types.FieldTypeDetails
+import Amazonka.AppFlow.Types.FileType
+import Amazonka.AppFlow.Types.FlowDefinition
+import Amazonka.AppFlow.Types.FlowStatus
+import Amazonka.AppFlow.Types.GlueDataCatalogConfig
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorOperator
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileCredentials
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileProperties
+import Amazonka.AppFlow.Types.GoogleAnalyticsMetadata
+import Amazonka.AppFlow.Types.GoogleAnalyticsSourceProperties
+import Amazonka.AppFlow.Types.HoneycodeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.HoneycodeConnectorProfileProperties
+import Amazonka.AppFlow.Types.HoneycodeDestinationProperties
+import Amazonka.AppFlow.Types.HoneycodeMetadata
+import Amazonka.AppFlow.Types.IncrementalPullConfig
+import Amazonka.AppFlow.Types.InforNexusConnectorOperator
+import Amazonka.AppFlow.Types.InforNexusConnectorProfileCredentials
+import Amazonka.AppFlow.Types.InforNexusConnectorProfileProperties
+import Amazonka.AppFlow.Types.InforNexusMetadata
+import Amazonka.AppFlow.Types.InforNexusSourceProperties
+import Amazonka.AppFlow.Types.LambdaConnectorProvisioningConfig
+import Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
+import Amazonka.AppFlow.Types.MarketoConnectorOperator
+import Amazonka.AppFlow.Types.MarketoConnectorProfileCredentials
+import Amazonka.AppFlow.Types.MarketoConnectorProfileProperties
+import Amazonka.AppFlow.Types.MarketoDestinationProperties
+import Amazonka.AppFlow.Types.MarketoMetadata
+import Amazonka.AppFlow.Types.MarketoSourceProperties
+import Amazonka.AppFlow.Types.MetadataCatalogConfig
+import Amazonka.AppFlow.Types.MetadataCatalogDetail
+import Amazonka.AppFlow.Types.OAuth2Credentials
+import Amazonka.AppFlow.Types.OAuth2CustomParameter
+import Amazonka.AppFlow.Types.OAuth2CustomPropType
+import Amazonka.AppFlow.Types.OAuth2Defaults
+import Amazonka.AppFlow.Types.OAuth2GrantType
+import Amazonka.AppFlow.Types.OAuth2Properties
+import Amazonka.AppFlow.Types.OAuthCredentials
+import Amazonka.AppFlow.Types.OAuthProperties
+import Amazonka.AppFlow.Types.Operator
+import Amazonka.AppFlow.Types.OperatorPropertiesKeys
+import Amazonka.AppFlow.Types.Operators
+import Amazonka.AppFlow.Types.PathPrefix
+import Amazonka.AppFlow.Types.PrefixConfig
+import Amazonka.AppFlow.Types.PrefixFormat
+import Amazonka.AppFlow.Types.PrefixType
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningFailureCause
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningState
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningStatus
+import Amazonka.AppFlow.Types.Range
+import Amazonka.AppFlow.Types.RedshiftConnectorProfileCredentials
+import Amazonka.AppFlow.Types.RedshiftConnectorProfileProperties
+import Amazonka.AppFlow.Types.RedshiftDestinationProperties
+import Amazonka.AppFlow.Types.RedshiftMetadata
+import Amazonka.AppFlow.Types.RegistrationOutput
+import Amazonka.AppFlow.Types.S3ConnectorOperator
+import Amazonka.AppFlow.Types.S3DestinationProperties
+import Amazonka.AppFlow.Types.S3InputFileType
+import Amazonka.AppFlow.Types.S3InputFormatConfig
+import Amazonka.AppFlow.Types.S3Metadata
+import Amazonka.AppFlow.Types.S3OutputFormatConfig
+import Amazonka.AppFlow.Types.S3SourceProperties
+import Amazonka.AppFlow.Types.SAPODataConnectorOperator
+import Amazonka.AppFlow.Types.SAPODataConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SAPODataConnectorProfileProperties
+import Amazonka.AppFlow.Types.SAPODataDestinationProperties
+import Amazonka.AppFlow.Types.SAPODataMetadata
+import Amazonka.AppFlow.Types.SAPODataSourceProperties
+import Amazonka.AppFlow.Types.SalesforceConnectorOperator
+import Amazonka.AppFlow.Types.SalesforceConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SalesforceConnectorProfileProperties
+import Amazonka.AppFlow.Types.SalesforceDataTransferApi
+import Amazonka.AppFlow.Types.SalesforceDestinationProperties
+import Amazonka.AppFlow.Types.SalesforceMetadata
+import Amazonka.AppFlow.Types.SalesforceSourceProperties
+import Amazonka.AppFlow.Types.ScheduleFrequencyType
+import Amazonka.AppFlow.Types.ScheduledTriggerProperties
+import Amazonka.AppFlow.Types.ServiceNowConnectorOperator
+import Amazonka.AppFlow.Types.ServiceNowConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ServiceNowConnectorProfileProperties
+import Amazonka.AppFlow.Types.ServiceNowMetadata
+import Amazonka.AppFlow.Types.ServiceNowSourceProperties
+import Amazonka.AppFlow.Types.SingularConnectorOperator
+import Amazonka.AppFlow.Types.SingularConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SingularConnectorProfileProperties
+import Amazonka.AppFlow.Types.SingularMetadata
+import Amazonka.AppFlow.Types.SingularSourceProperties
+import Amazonka.AppFlow.Types.SlackConnectorOperator
+import Amazonka.AppFlow.Types.SlackConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SlackConnectorProfileProperties
+import Amazonka.AppFlow.Types.SlackMetadata
+import Amazonka.AppFlow.Types.SlackSourceProperties
+import Amazonka.AppFlow.Types.SnowflakeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SnowflakeConnectorProfileProperties
+import Amazonka.AppFlow.Types.SnowflakeDestinationProperties
+import Amazonka.AppFlow.Types.SnowflakeMetadata
+import Amazonka.AppFlow.Types.SourceConnectorProperties
+import Amazonka.AppFlow.Types.SourceFieldProperties
+import Amazonka.AppFlow.Types.SourceFlowConfig
+import Amazonka.AppFlow.Types.SuccessResponseHandlingConfig
+import Amazonka.AppFlow.Types.SupportedFieldTypeDetails
+import Amazonka.AppFlow.Types.Task
+import Amazonka.AppFlow.Types.TaskType
+import Amazonka.AppFlow.Types.TrendmicroConnectorOperator
+import Amazonka.AppFlow.Types.TrendmicroConnectorProfileCredentials
+import Amazonka.AppFlow.Types.TrendmicroConnectorProfileProperties
+import Amazonka.AppFlow.Types.TrendmicroMetadata
+import Amazonka.AppFlow.Types.TrendmicroSourceProperties
+import Amazonka.AppFlow.Types.TriggerConfig
+import Amazonka.AppFlow.Types.TriggerProperties
+import Amazonka.AppFlow.Types.TriggerType
+import Amazonka.AppFlow.Types.UpsolverDestinationProperties
+import Amazonka.AppFlow.Types.UpsolverMetadata
+import Amazonka.AppFlow.Types.UpsolverS3OutputFormatConfig
+import Amazonka.AppFlow.Types.VeevaConnectorOperator
+import Amazonka.AppFlow.Types.VeevaConnectorProfileCredentials
+import Amazonka.AppFlow.Types.VeevaConnectorProfileProperties
+import Amazonka.AppFlow.Types.VeevaMetadata
+import Amazonka.AppFlow.Types.VeevaSourceProperties
+import Amazonka.AppFlow.Types.WriteOperationType
+import Amazonka.AppFlow.Types.ZendeskConnectorOperator
+import Amazonka.AppFlow.Types.ZendeskConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ZendeskConnectorProfileProperties
+import Amazonka.AppFlow.Types.ZendeskDestinationProperties
+import Amazonka.AppFlow.Types.ZendeskMetadata
+import Amazonka.AppFlow.Types.ZendeskSourceProperties
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2020-08-23@ of the Amazon Appflow SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "AppFlow",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "appflow",
+      Core.signingName = "appflow",
+      Core.version = "2020-08-23",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "AppFlow",
+      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
+
+-- | AppFlow\/Requester has invalid or missing permissions.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | There was a conflict when processing the request (for example, a flow
+-- with the given name already exists within the account. Check for
+-- conflicting resource names and try again.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | An error occurred when authenticating with the connector endpoint.
+_ConnectorAuthenticationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConnectorAuthenticationException =
+  Core._MatchServiceError
+    defaultService
+    "ConnectorAuthenticationException"
+    Prelude.. Core.hasStatus 401
+
+-- | An error occurred when retrieving data from the connector endpoint.
+_ConnectorServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConnectorServerException =
+  Core._MatchServiceError
+    defaultService
+    "ConnectorServerException"
+    Prelude.. Core.hasStatus 400
+
+-- | An internal service error occurred during the processing of your
+-- request. Try again later.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The resource specified in the request (such as the source or destination
+-- connector profile) is not found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request would cause a service quota (such as the number of flows) to
+-- be exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | API calls have exceeded the maximum allowed API request rate per account
+-- and per Region.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The requested operation is not supported for the current flow.
+_UnsupportedOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnsupportedOperationException =
+  Core._MatchServiceError
+    defaultService
+    "UnsupportedOperationException"
+    Prelude.. Core.hasStatus 400
+
+-- | The request has invalid or missing parameters.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/AppFlow/Types/AggregationConfig.hs b/gen/Amazonka/AppFlow/Types/AggregationConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AggregationConfig.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.AggregationConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AggregationConfig where
+
+import Amazonka.AppFlow.Types.AggregationType
+import qualified 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 aggregation settings that you can use to customize the output format
+-- of your flow data.
+--
+-- /See:/ 'newAggregationConfig' smart constructor.
+data AggregationConfig = AggregationConfig'
+  { -- | Specifies whether Amazon AppFlow aggregates the flow records into a
+    -- single file, or leave them unaggregated.
+    aggregationType :: Prelude.Maybe AggregationType,
+    -- | The desired file size, in MB, for each output file that Amazon AppFlow
+    -- writes to the flow destination. For each file, Amazon AppFlow attempts
+    -- to achieve the size that you specify. The actual file sizes might differ
+    -- from this target based on the number and size of the records that each
+    -- file contains.
+    targetFileSize :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AggregationConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationType', 'aggregationConfig_aggregationType' - Specifies whether Amazon AppFlow aggregates the flow records into a
+-- single file, or leave them unaggregated.
+--
+-- 'targetFileSize', 'aggregationConfig_targetFileSize' - The desired file size, in MB, for each output file that Amazon AppFlow
+-- writes to the flow destination. For each file, Amazon AppFlow attempts
+-- to achieve the size that you specify. The actual file sizes might differ
+-- from this target based on the number and size of the records that each
+-- file contains.
+newAggregationConfig ::
+  AggregationConfig
+newAggregationConfig =
+  AggregationConfig'
+    { aggregationType =
+        Prelude.Nothing,
+      targetFileSize = Prelude.Nothing
+    }
+
+-- | Specifies whether Amazon AppFlow aggregates the flow records into a
+-- single file, or leave them unaggregated.
+aggregationConfig_aggregationType :: Lens.Lens' AggregationConfig (Prelude.Maybe AggregationType)
+aggregationConfig_aggregationType = Lens.lens (\AggregationConfig' {aggregationType} -> aggregationType) (\s@AggregationConfig' {} a -> s {aggregationType = a} :: AggregationConfig)
+
+-- | The desired file size, in MB, for each output file that Amazon AppFlow
+-- writes to the flow destination. For each file, Amazon AppFlow attempts
+-- to achieve the size that you specify. The actual file sizes might differ
+-- from this target based on the number and size of the records that each
+-- file contains.
+aggregationConfig_targetFileSize :: Lens.Lens' AggregationConfig (Prelude.Maybe Prelude.Integer)
+aggregationConfig_targetFileSize = Lens.lens (\AggregationConfig' {targetFileSize} -> targetFileSize) (\s@AggregationConfig' {} a -> s {targetFileSize = a} :: AggregationConfig)
+
+instance Data.FromJSON AggregationConfig where
+  parseJSON =
+    Data.withObject
+      "AggregationConfig"
+      ( \x ->
+          AggregationConfig'
+            Prelude.<$> (x Data..:? "aggregationType")
+            Prelude.<*> (x Data..:? "targetFileSize")
+      )
+
+instance Prelude.Hashable AggregationConfig where
+  hashWithSalt _salt AggregationConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationType
+      `Prelude.hashWithSalt` targetFileSize
+
+instance Prelude.NFData AggregationConfig where
+  rnf AggregationConfig' {..} =
+    Prelude.rnf aggregationType
+      `Prelude.seq` Prelude.rnf targetFileSize
+
+instance Data.ToJSON AggregationConfig where
+  toJSON AggregationConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("aggregationType" Data..=)
+              Prelude.<$> aggregationType,
+            ("targetFileSize" Data..=)
+              Prelude.<$> targetFileSize
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/AggregationType.hs b/gen/Amazonka/AppFlow/Types/AggregationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AggregationType.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.AppFlow.Types.AggregationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AggregationType
+  ( AggregationType
+      ( ..,
+        AggregationType_None,
+        AggregationType_SingleFile
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AggregationType = AggregationType'
+  { fromAggregationType ::
+      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 AggregationType_None :: AggregationType
+pattern AggregationType_None = AggregationType' "None"
+
+pattern AggregationType_SingleFile :: AggregationType
+pattern AggregationType_SingleFile = AggregationType' "SingleFile"
+
+{-# COMPLETE
+  AggregationType_None,
+  AggregationType_SingleFile,
+  AggregationType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/AmplitudeConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/AmplitudeConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AmplitudeConnectorOperator.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.AppFlow.Types.AmplitudeConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AmplitudeConnectorOperator
+  ( AmplitudeConnectorOperator
+      ( ..,
+        AmplitudeConnectorOperator_BETWEEN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AmplitudeConnectorOperator = AmplitudeConnectorOperator'
+  { fromAmplitudeConnectorOperator ::
+      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 AmplitudeConnectorOperator_BETWEEN :: AmplitudeConnectorOperator
+pattern AmplitudeConnectorOperator_BETWEEN = AmplitudeConnectorOperator' "BETWEEN"
+
+{-# COMPLETE
+  AmplitudeConnectorOperator_BETWEEN,
+  AmplitudeConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/AmplitudeConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/AmplitudeConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AmplitudeConnectorProfileCredentials.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.AppFlow.Types.AmplitudeConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AmplitudeConnectorProfileCredentials where
+
+import qualified 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 connector-specific credentials required when using Amplitude.
+--
+-- /See:/ 'newAmplitudeConnectorProfileCredentials' smart constructor.
+data AmplitudeConnectorProfileCredentials = AmplitudeConnectorProfileCredentials'
+  { -- | A unique alphanumeric identifier used to authenticate a user, developer,
+    -- or calling program to your API.
+    apiKey :: Data.Sensitive Prelude.Text,
+    -- | The Secret Access Key portion of the credentials.
+    secretKey :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AmplitudeConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiKey', 'amplitudeConnectorProfileCredentials_apiKey' - A unique alphanumeric identifier used to authenticate a user, developer,
+-- or calling program to your API.
+--
+-- 'secretKey', 'amplitudeConnectorProfileCredentials_secretKey' - The Secret Access Key portion of the credentials.
+newAmplitudeConnectorProfileCredentials ::
+  -- | 'apiKey'
+  Prelude.Text ->
+  -- | 'secretKey'
+  Prelude.Text ->
+  AmplitudeConnectorProfileCredentials
+newAmplitudeConnectorProfileCredentials
+  pApiKey_
+  pSecretKey_ =
+    AmplitudeConnectorProfileCredentials'
+      { apiKey =
+          Data._Sensitive Lens.# pApiKey_,
+        secretKey =
+          Data._Sensitive Lens.# pSecretKey_
+      }
+
+-- | A unique alphanumeric identifier used to authenticate a user, developer,
+-- or calling program to your API.
+amplitudeConnectorProfileCredentials_apiKey :: Lens.Lens' AmplitudeConnectorProfileCredentials Prelude.Text
+amplitudeConnectorProfileCredentials_apiKey = Lens.lens (\AmplitudeConnectorProfileCredentials' {apiKey} -> apiKey) (\s@AmplitudeConnectorProfileCredentials' {} a -> s {apiKey = a} :: AmplitudeConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+-- | The Secret Access Key portion of the credentials.
+amplitudeConnectorProfileCredentials_secretKey :: Lens.Lens' AmplitudeConnectorProfileCredentials Prelude.Text
+amplitudeConnectorProfileCredentials_secretKey = Lens.lens (\AmplitudeConnectorProfileCredentials' {secretKey} -> secretKey) (\s@AmplitudeConnectorProfileCredentials' {} a -> s {secretKey = a} :: AmplitudeConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    AmplitudeConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    AmplitudeConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` apiKey
+        `Prelude.hashWithSalt` secretKey
+
+instance
+  Prelude.NFData
+    AmplitudeConnectorProfileCredentials
+  where
+  rnf AmplitudeConnectorProfileCredentials' {..} =
+    Prelude.rnf apiKey
+      `Prelude.seq` Prelude.rnf secretKey
+
+instance
+  Data.ToJSON
+    AmplitudeConnectorProfileCredentials
+  where
+  toJSON AmplitudeConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("apiKey" Data..= apiKey),
+            Prelude.Just ("secretKey" Data..= secretKey)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/AmplitudeConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/AmplitudeConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AmplitudeConnectorProfileProperties.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.AppFlow.Types.AmplitudeConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AmplitudeConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Amplitude.
+--
+-- /See:/ 'newAmplitudeConnectorProfileProperties' smart constructor.
+data AmplitudeConnectorProfileProperties = AmplitudeConnectorProfileProperties'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AmplitudeConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newAmplitudeConnectorProfileProperties ::
+  AmplitudeConnectorProfileProperties
+newAmplitudeConnectorProfileProperties =
+  AmplitudeConnectorProfileProperties'
+
+instance
+  Data.FromJSON
+    AmplitudeConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "AmplitudeConnectorProfileProperties"
+      ( \x ->
+          Prelude.pure AmplitudeConnectorProfileProperties'
+      )
+
+instance
+  Prelude.Hashable
+    AmplitudeConnectorProfileProperties
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    AmplitudeConnectorProfileProperties
+  where
+  rnf _ = ()
+
+instance
+  Data.ToJSON
+    AmplitudeConnectorProfileProperties
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AppFlow/Types/AmplitudeMetadata.hs b/gen/Amazonka/AppFlow/Types/AmplitudeMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AmplitudeMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.AmplitudeMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AmplitudeMetadata where
+
+import qualified 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 connector metadata specific to Amplitude.
+--
+-- /See:/ 'newAmplitudeMetadata' smart constructor.
+data AmplitudeMetadata = AmplitudeMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AmplitudeMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newAmplitudeMetadata ::
+  AmplitudeMetadata
+newAmplitudeMetadata = AmplitudeMetadata'
+
+instance Data.FromJSON AmplitudeMetadata where
+  parseJSON =
+    Data.withObject
+      "AmplitudeMetadata"
+      (\x -> Prelude.pure AmplitudeMetadata')
+
+instance Prelude.Hashable AmplitudeMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData AmplitudeMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/AmplitudeSourceProperties.hs b/gen/Amazonka/AppFlow/Types/AmplitudeSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AmplitudeSourceProperties.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.AmplitudeSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AmplitudeSourceProperties where
+
+import qualified 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 properties that are applied when Amplitude is being used as a
+-- source.
+--
+-- /See:/ 'newAmplitudeSourceProperties' smart constructor.
+data AmplitudeSourceProperties = AmplitudeSourceProperties'
+  { -- | The object specified in the Amplitude flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AmplitudeSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'amplitudeSourceProperties_object' - The object specified in the Amplitude flow source.
+newAmplitudeSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  AmplitudeSourceProperties
+newAmplitudeSourceProperties pObject_ =
+  AmplitudeSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Amplitude flow source.
+amplitudeSourceProperties_object :: Lens.Lens' AmplitudeSourceProperties Prelude.Text
+amplitudeSourceProperties_object = Lens.lens (\AmplitudeSourceProperties' {object'} -> object') (\s@AmplitudeSourceProperties' {} a -> s {object' = a} :: AmplitudeSourceProperties)
+
+instance Data.FromJSON AmplitudeSourceProperties where
+  parseJSON =
+    Data.withObject
+      "AmplitudeSourceProperties"
+      ( \x ->
+          AmplitudeSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable AmplitudeSourceProperties where
+  hashWithSalt _salt AmplitudeSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData AmplitudeSourceProperties where
+  rnf AmplitudeSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON AmplitudeSourceProperties where
+  toJSON AmplitudeSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ApiKeyCredentials.hs b/gen/Amazonka/AppFlow/Types/ApiKeyCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ApiKeyCredentials.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.AppFlow.Types.ApiKeyCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ApiKeyCredentials where
+
+import qualified 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 API key credentials required for API key authentication.
+--
+-- /See:/ 'newApiKeyCredentials' smart constructor.
+data ApiKeyCredentials = ApiKeyCredentials'
+  { -- | The API secret key required for API key authentication.
+    apiSecretKey :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The API key required for API key authentication.
+    apiKey :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApiKeyCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiSecretKey', 'apiKeyCredentials_apiSecretKey' - The API secret key required for API key authentication.
+--
+-- 'apiKey', 'apiKeyCredentials_apiKey' - The API key required for API key authentication.
+newApiKeyCredentials ::
+  -- | 'apiKey'
+  Prelude.Text ->
+  ApiKeyCredentials
+newApiKeyCredentials pApiKey_ =
+  ApiKeyCredentials'
+    { apiSecretKey = Prelude.Nothing,
+      apiKey = Data._Sensitive Lens.# pApiKey_
+    }
+
+-- | The API secret key required for API key authentication.
+apiKeyCredentials_apiSecretKey :: Lens.Lens' ApiKeyCredentials (Prelude.Maybe Prelude.Text)
+apiKeyCredentials_apiSecretKey = Lens.lens (\ApiKeyCredentials' {apiSecretKey} -> apiSecretKey) (\s@ApiKeyCredentials' {} a -> s {apiSecretKey = a} :: ApiKeyCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The API key required for API key authentication.
+apiKeyCredentials_apiKey :: Lens.Lens' ApiKeyCredentials Prelude.Text
+apiKeyCredentials_apiKey = Lens.lens (\ApiKeyCredentials' {apiKey} -> apiKey) (\s@ApiKeyCredentials' {} a -> s {apiKey = a} :: ApiKeyCredentials) Prelude.. Data._Sensitive
+
+instance Prelude.Hashable ApiKeyCredentials where
+  hashWithSalt _salt ApiKeyCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiSecretKey
+      `Prelude.hashWithSalt` apiKey
+
+instance Prelude.NFData ApiKeyCredentials where
+  rnf ApiKeyCredentials' {..} =
+    Prelude.rnf apiSecretKey
+      `Prelude.seq` Prelude.rnf apiKey
+
+instance Data.ToJSON ApiKeyCredentials where
+  toJSON ApiKeyCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("apiSecretKey" Data..=) Prelude.<$> apiSecretKey,
+            Prelude.Just ("apiKey" Data..= apiKey)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/AuthParameter.hs b/gen/Amazonka/AppFlow/Types/AuthParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AuthParameter.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.AuthParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AuthParameter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about required authentication parameters.
+--
+-- /See:/ 'newAuthParameter' smart constructor.
+data AuthParameter = AuthParameter'
+  { -- | Contains default values for this authentication parameter that are
+    -- supplied by the connector.
+    connectorSuppliedValues :: Prelude.Maybe [Prelude.Text],
+    -- | A description about the authentication parameter.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether this authentication parameter is required.
+    isRequired :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether this authentication parameter is a sensitive field.
+    isSensitiveField :: Prelude.Maybe Prelude.Bool,
+    -- | The authentication key required to authenticate with the connector.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | Label used for authentication parameter.
+    label :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AuthParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorSuppliedValues', 'authParameter_connectorSuppliedValues' - Contains default values for this authentication parameter that are
+-- supplied by the connector.
+--
+-- 'description', 'authParameter_description' - A description about the authentication parameter.
+--
+-- 'isRequired', 'authParameter_isRequired' - Indicates whether this authentication parameter is required.
+--
+-- 'isSensitiveField', 'authParameter_isSensitiveField' - Indicates whether this authentication parameter is a sensitive field.
+--
+-- 'key', 'authParameter_key' - The authentication key required to authenticate with the connector.
+--
+-- 'label', 'authParameter_label' - Label used for authentication parameter.
+newAuthParameter ::
+  AuthParameter
+newAuthParameter =
+  AuthParameter'
+    { connectorSuppliedValues =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      isRequired = Prelude.Nothing,
+      isSensitiveField = Prelude.Nothing,
+      key = Prelude.Nothing,
+      label = Prelude.Nothing
+    }
+
+-- | Contains default values for this authentication parameter that are
+-- supplied by the connector.
+authParameter_connectorSuppliedValues :: Lens.Lens' AuthParameter (Prelude.Maybe [Prelude.Text])
+authParameter_connectorSuppliedValues = Lens.lens (\AuthParameter' {connectorSuppliedValues} -> connectorSuppliedValues) (\s@AuthParameter' {} a -> s {connectorSuppliedValues = a} :: AuthParameter) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description about the authentication parameter.
+authParameter_description :: Lens.Lens' AuthParameter (Prelude.Maybe Prelude.Text)
+authParameter_description = Lens.lens (\AuthParameter' {description} -> description) (\s@AuthParameter' {} a -> s {description = a} :: AuthParameter)
+
+-- | Indicates whether this authentication parameter is required.
+authParameter_isRequired :: Lens.Lens' AuthParameter (Prelude.Maybe Prelude.Bool)
+authParameter_isRequired = Lens.lens (\AuthParameter' {isRequired} -> isRequired) (\s@AuthParameter' {} a -> s {isRequired = a} :: AuthParameter)
+
+-- | Indicates whether this authentication parameter is a sensitive field.
+authParameter_isSensitiveField :: Lens.Lens' AuthParameter (Prelude.Maybe Prelude.Bool)
+authParameter_isSensitiveField = Lens.lens (\AuthParameter' {isSensitiveField} -> isSensitiveField) (\s@AuthParameter' {} a -> s {isSensitiveField = a} :: AuthParameter)
+
+-- | The authentication key required to authenticate with the connector.
+authParameter_key :: Lens.Lens' AuthParameter (Prelude.Maybe Prelude.Text)
+authParameter_key = Lens.lens (\AuthParameter' {key} -> key) (\s@AuthParameter' {} a -> s {key = a} :: AuthParameter)
+
+-- | Label used for authentication parameter.
+authParameter_label :: Lens.Lens' AuthParameter (Prelude.Maybe Prelude.Text)
+authParameter_label = Lens.lens (\AuthParameter' {label} -> label) (\s@AuthParameter' {} a -> s {label = a} :: AuthParameter)
+
+instance Data.FromJSON AuthParameter where
+  parseJSON =
+    Data.withObject
+      "AuthParameter"
+      ( \x ->
+          AuthParameter'
+            Prelude.<$> ( x
+                            Data..:? "connectorSuppliedValues"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "isRequired")
+            Prelude.<*> (x Data..:? "isSensitiveField")
+            Prelude.<*> (x Data..:? "key")
+            Prelude.<*> (x Data..:? "label")
+      )
+
+instance Prelude.Hashable AuthParameter where
+  hashWithSalt _salt AuthParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorSuppliedValues
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` isRequired
+      `Prelude.hashWithSalt` isSensitiveField
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` label
+
+instance Prelude.NFData AuthParameter where
+  rnf AuthParameter' {..} =
+    Prelude.rnf connectorSuppliedValues
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf isRequired
+      `Prelude.seq` Prelude.rnf isSensitiveField
+      `Prelude.seq` Prelude.rnf key
+      `Prelude.seq` Prelude.rnf label
diff --git a/gen/Amazonka/AppFlow/Types/AuthenticationConfig.hs b/gen/Amazonka/AppFlow/Types/AuthenticationConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AuthenticationConfig.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.AuthenticationConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AuthenticationConfig where
+
+import Amazonka.AppFlow.Types.CustomAuthConfig
+import Amazonka.AppFlow.Types.OAuth2Defaults
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the authentication config that the connector
+-- supports.
+--
+-- /See:/ 'newAuthenticationConfig' smart constructor.
+data AuthenticationConfig = AuthenticationConfig'
+  { -- | Contains information required for custom authentication.
+    customAuthConfigs :: Prelude.Maybe [CustomAuthConfig],
+    -- | Indicates whether API key authentication is supported by the connector
+    isApiKeyAuthSupported :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether basic authentication is supported by the connector.
+    isBasicAuthSupported :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether custom authentication is supported by the connector
+    isCustomAuthSupported :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether OAuth 2.0 authentication is supported by the
+    -- connector.
+    isOAuth2Supported :: Prelude.Maybe Prelude.Bool,
+    -- | Contains the default values required for OAuth 2.0 authentication.
+    oAuth2Defaults :: Prelude.Maybe OAuth2Defaults
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AuthenticationConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customAuthConfigs', 'authenticationConfig_customAuthConfigs' - Contains information required for custom authentication.
+--
+-- 'isApiKeyAuthSupported', 'authenticationConfig_isApiKeyAuthSupported' - Indicates whether API key authentication is supported by the connector
+--
+-- 'isBasicAuthSupported', 'authenticationConfig_isBasicAuthSupported' - Indicates whether basic authentication is supported by the connector.
+--
+-- 'isCustomAuthSupported', 'authenticationConfig_isCustomAuthSupported' - Indicates whether custom authentication is supported by the connector
+--
+-- 'isOAuth2Supported', 'authenticationConfig_isOAuth2Supported' - Indicates whether OAuth 2.0 authentication is supported by the
+-- connector.
+--
+-- 'oAuth2Defaults', 'authenticationConfig_oAuth2Defaults' - Contains the default values required for OAuth 2.0 authentication.
+newAuthenticationConfig ::
+  AuthenticationConfig
+newAuthenticationConfig =
+  AuthenticationConfig'
+    { customAuthConfigs =
+        Prelude.Nothing,
+      isApiKeyAuthSupported = Prelude.Nothing,
+      isBasicAuthSupported = Prelude.Nothing,
+      isCustomAuthSupported = Prelude.Nothing,
+      isOAuth2Supported = Prelude.Nothing,
+      oAuth2Defaults = Prelude.Nothing
+    }
+
+-- | Contains information required for custom authentication.
+authenticationConfig_customAuthConfigs :: Lens.Lens' AuthenticationConfig (Prelude.Maybe [CustomAuthConfig])
+authenticationConfig_customAuthConfigs = Lens.lens (\AuthenticationConfig' {customAuthConfigs} -> customAuthConfigs) (\s@AuthenticationConfig' {} a -> s {customAuthConfigs = a} :: AuthenticationConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates whether API key authentication is supported by the connector
+authenticationConfig_isApiKeyAuthSupported :: Lens.Lens' AuthenticationConfig (Prelude.Maybe Prelude.Bool)
+authenticationConfig_isApiKeyAuthSupported = Lens.lens (\AuthenticationConfig' {isApiKeyAuthSupported} -> isApiKeyAuthSupported) (\s@AuthenticationConfig' {} a -> s {isApiKeyAuthSupported = a} :: AuthenticationConfig)
+
+-- | Indicates whether basic authentication is supported by the connector.
+authenticationConfig_isBasicAuthSupported :: Lens.Lens' AuthenticationConfig (Prelude.Maybe Prelude.Bool)
+authenticationConfig_isBasicAuthSupported = Lens.lens (\AuthenticationConfig' {isBasicAuthSupported} -> isBasicAuthSupported) (\s@AuthenticationConfig' {} a -> s {isBasicAuthSupported = a} :: AuthenticationConfig)
+
+-- | Indicates whether custom authentication is supported by the connector
+authenticationConfig_isCustomAuthSupported :: Lens.Lens' AuthenticationConfig (Prelude.Maybe Prelude.Bool)
+authenticationConfig_isCustomAuthSupported = Lens.lens (\AuthenticationConfig' {isCustomAuthSupported} -> isCustomAuthSupported) (\s@AuthenticationConfig' {} a -> s {isCustomAuthSupported = a} :: AuthenticationConfig)
+
+-- | Indicates whether OAuth 2.0 authentication is supported by the
+-- connector.
+authenticationConfig_isOAuth2Supported :: Lens.Lens' AuthenticationConfig (Prelude.Maybe Prelude.Bool)
+authenticationConfig_isOAuth2Supported = Lens.lens (\AuthenticationConfig' {isOAuth2Supported} -> isOAuth2Supported) (\s@AuthenticationConfig' {} a -> s {isOAuth2Supported = a} :: AuthenticationConfig)
+
+-- | Contains the default values required for OAuth 2.0 authentication.
+authenticationConfig_oAuth2Defaults :: Lens.Lens' AuthenticationConfig (Prelude.Maybe OAuth2Defaults)
+authenticationConfig_oAuth2Defaults = Lens.lens (\AuthenticationConfig' {oAuth2Defaults} -> oAuth2Defaults) (\s@AuthenticationConfig' {} a -> s {oAuth2Defaults = a} :: AuthenticationConfig)
+
+instance Data.FromJSON AuthenticationConfig where
+  parseJSON =
+    Data.withObject
+      "AuthenticationConfig"
+      ( \x ->
+          AuthenticationConfig'
+            Prelude.<$> ( x
+                            Data..:? "customAuthConfigs"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "isApiKeyAuthSupported")
+            Prelude.<*> (x Data..:? "isBasicAuthSupported")
+            Prelude.<*> (x Data..:? "isCustomAuthSupported")
+            Prelude.<*> (x Data..:? "isOAuth2Supported")
+            Prelude.<*> (x Data..:? "oAuth2Defaults")
+      )
+
+instance Prelude.Hashable AuthenticationConfig where
+  hashWithSalt _salt AuthenticationConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` customAuthConfigs
+      `Prelude.hashWithSalt` isApiKeyAuthSupported
+      `Prelude.hashWithSalt` isBasicAuthSupported
+      `Prelude.hashWithSalt` isCustomAuthSupported
+      `Prelude.hashWithSalt` isOAuth2Supported
+      `Prelude.hashWithSalt` oAuth2Defaults
+
+instance Prelude.NFData AuthenticationConfig where
+  rnf AuthenticationConfig' {..} =
+    Prelude.rnf customAuthConfigs
+      `Prelude.seq` Prelude.rnf isApiKeyAuthSupported
+      `Prelude.seq` Prelude.rnf isBasicAuthSupported
+      `Prelude.seq` Prelude.rnf isCustomAuthSupported
+      `Prelude.seq` Prelude.rnf isOAuth2Supported
+      `Prelude.seq` Prelude.rnf oAuth2Defaults
diff --git a/gen/Amazonka/AppFlow/Types/AuthenticationType.hs b/gen/Amazonka/AppFlow/Types/AuthenticationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/AuthenticationType.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.AppFlow.Types.AuthenticationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.AuthenticationType
+  ( AuthenticationType
+      ( ..,
+        AuthenticationType_APIKEY,
+        AuthenticationType_BASIC,
+        AuthenticationType_CUSTOM,
+        AuthenticationType_OAUTH2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AuthenticationType = AuthenticationType'
+  { fromAuthenticationType ::
+      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 AuthenticationType_APIKEY :: AuthenticationType
+pattern AuthenticationType_APIKEY = AuthenticationType' "APIKEY"
+
+pattern AuthenticationType_BASIC :: AuthenticationType
+pattern AuthenticationType_BASIC = AuthenticationType' "BASIC"
+
+pattern AuthenticationType_CUSTOM :: AuthenticationType
+pattern AuthenticationType_CUSTOM = AuthenticationType' "CUSTOM"
+
+pattern AuthenticationType_OAUTH2 :: AuthenticationType
+pattern AuthenticationType_OAUTH2 = AuthenticationType' "OAUTH2"
+
+{-# COMPLETE
+  AuthenticationType_APIKEY,
+  AuthenticationType_BASIC,
+  AuthenticationType_CUSTOM,
+  AuthenticationType_OAUTH2,
+  AuthenticationType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/BasicAuthCredentials.hs b/gen/Amazonka/AppFlow/Types/BasicAuthCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/BasicAuthCredentials.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.BasicAuthCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.BasicAuthCredentials where
+
+import qualified 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 basic auth credentials required for basic authentication.
+--
+-- /See:/ 'newBasicAuthCredentials' smart constructor.
+data BasicAuthCredentials = BasicAuthCredentials'
+  { -- | The username to use to connect to a resource.
+    username :: Prelude.Text,
+    -- | The password to use to connect to a resource.
+    password :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BasicAuthCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'username', 'basicAuthCredentials_username' - The username to use to connect to a resource.
+--
+-- 'password', 'basicAuthCredentials_password' - The password to use to connect to a resource.
+newBasicAuthCredentials ::
+  -- | 'username'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  BasicAuthCredentials
+newBasicAuthCredentials pUsername_ pPassword_ =
+  BasicAuthCredentials'
+    { username = pUsername_,
+      password = Data._Sensitive Lens.# pPassword_
+    }
+
+-- | The username to use to connect to a resource.
+basicAuthCredentials_username :: Lens.Lens' BasicAuthCredentials Prelude.Text
+basicAuthCredentials_username = Lens.lens (\BasicAuthCredentials' {username} -> username) (\s@BasicAuthCredentials' {} a -> s {username = a} :: BasicAuthCredentials)
+
+-- | The password to use to connect to a resource.
+basicAuthCredentials_password :: Lens.Lens' BasicAuthCredentials Prelude.Text
+basicAuthCredentials_password = Lens.lens (\BasicAuthCredentials' {password} -> password) (\s@BasicAuthCredentials' {} a -> s {password = a} :: BasicAuthCredentials) Prelude.. Data._Sensitive
+
+instance Prelude.Hashable BasicAuthCredentials where
+  hashWithSalt _salt BasicAuthCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` username
+      `Prelude.hashWithSalt` password
+
+instance Prelude.NFData BasicAuthCredentials where
+  rnf BasicAuthCredentials' {..} =
+    Prelude.rnf username
+      `Prelude.seq` Prelude.rnf password
+
+instance Data.ToJSON BasicAuthCredentials where
+  toJSON BasicAuthCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("username" Data..= username),
+            Prelude.Just ("password" Data..= password)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CatalogType.hs b/gen/Amazonka/AppFlow/Types/CatalogType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CatalogType.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.AppFlow.Types.CatalogType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CatalogType
+  ( CatalogType
+      ( ..,
+        CatalogType_GLUE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CatalogType = CatalogType'
+  { fromCatalogType ::
+      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 CatalogType_GLUE :: CatalogType
+pattern CatalogType_GLUE = CatalogType' "GLUE"
+
+{-# COMPLETE
+  CatalogType_GLUE,
+  CatalogType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ConnectionMode.hs b/gen/Amazonka/AppFlow/Types/ConnectionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectionMode.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.AppFlow.Types.ConnectionMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectionMode
+  ( ConnectionMode
+      ( ..,
+        ConnectionMode_Private,
+        ConnectionMode_Public
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectionMode = ConnectionMode'
+  { fromConnectionMode ::
+      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 ConnectionMode_Private :: ConnectionMode
+pattern ConnectionMode_Private = ConnectionMode' "Private"
+
+pattern ConnectionMode_Public :: ConnectionMode
+pattern ConnectionMode_Public = ConnectionMode' "Public"
+
+{-# COMPLETE
+  ConnectionMode_Private,
+  ConnectionMode_Public,
+  ConnectionMode'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorConfiguration.hs b/gen/Amazonka/AppFlow/Types/ConnectorConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorConfiguration.hs
@@ -0,0 +1,414 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorConfiguration where
+
+import Amazonka.AppFlow.Types.AuthenticationConfig
+import Amazonka.AppFlow.Types.ConnectorMetadata
+import Amazonka.AppFlow.Types.ConnectorProvisioningConfig
+import Amazonka.AppFlow.Types.ConnectorProvisioningType
+import Amazonka.AppFlow.Types.ConnectorRuntimeSetting
+import Amazonka.AppFlow.Types.ConnectorType
+import Amazonka.AppFlow.Types.Operators
+import Amazonka.AppFlow.Types.ScheduleFrequencyType
+import Amazonka.AppFlow.Types.TriggerType
+import Amazonka.AppFlow.Types.WriteOperationType
+import qualified 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 settings related to a given connector.
+--
+-- /See:/ 'newConnectorConfiguration' smart constructor.
+data ConnectorConfiguration = ConnectorConfiguration'
+  { -- | The authentication config required for the connector.
+    authenticationConfig :: Prelude.Maybe AuthenticationConfig,
+    -- | Specifies whether the connector can be used as a destination.
+    canUseAsDestination :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies whether the connector can be used as a source.
+    canUseAsSource :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) for the registered connector.
+    connectorArn :: Prelude.Maybe Prelude.Text,
+    -- | A description about the connector.
+    connectorDescription :: Prelude.Maybe Prelude.Text,
+    -- | The label used for registering the connector.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | Specifies connector-specific metadata such as @oAuthScopes@,
+    -- @supportedRegions@, @privateLinkServiceUrl@, and so on.
+    connectorMetadata :: Prelude.Maybe ConnectorMetadata,
+    -- | The connection modes that the connector supports.
+    connectorModes :: Prelude.Maybe [Prelude.Text],
+    -- | The connector name.
+    connectorName :: Prelude.Maybe Prelude.Text,
+    -- | The owner who developed the connector.
+    connectorOwner :: Prelude.Maybe Prelude.Text,
+    -- | The configuration required for registering the connector.
+    connectorProvisioningConfig :: Prelude.Maybe ConnectorProvisioningConfig,
+    -- | The provisioning type used to register the connector.
+    connectorProvisioningType :: Prelude.Maybe ConnectorProvisioningType,
+    -- | The required connector runtime settings.
+    connectorRuntimeSettings :: Prelude.Maybe [ConnectorRuntimeSetting],
+    -- | The connector type.
+    connectorType :: Prelude.Maybe ConnectorType,
+    -- | The connector version.
+    connectorVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies if PrivateLink is enabled for that connector.
+    isPrivateLinkEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies if a PrivateLink endpoint URL is required.
+    isPrivateLinkEndpointUrlRequired :: Prelude.Maybe Prelude.Bool,
+    -- | Logo URL of the connector.
+    logoURL :: Prelude.Maybe Prelude.Text,
+    -- | The date on which the connector was registered.
+    registeredAt :: Prelude.Maybe Data.POSIX,
+    -- | Information about who registered the connector.
+    registeredBy :: Prelude.Maybe Prelude.Text,
+    -- | A list of API versions that are supported by the connector.
+    supportedApiVersions :: Prelude.Maybe [Prelude.Text],
+    -- | Lists the connectors that are available for use as destinations.
+    supportedDestinationConnectors :: Prelude.Maybe [ConnectorType],
+    -- | A list of operators supported by the connector.
+    supportedOperators :: Prelude.Maybe [Operators],
+    -- | Specifies the supported flow frequency for that connector.
+    supportedSchedulingFrequencies :: Prelude.Maybe [ScheduleFrequencyType],
+    -- | Specifies the supported trigger types for the flow.
+    supportedTriggerTypes :: Prelude.Maybe [TriggerType],
+    -- | A list of write operations supported by the connector.
+    supportedWriteOperations :: Prelude.Maybe [WriteOperationType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'authenticationConfig', 'connectorConfiguration_authenticationConfig' - The authentication config required for the connector.
+--
+-- 'canUseAsDestination', 'connectorConfiguration_canUseAsDestination' - Specifies whether the connector can be used as a destination.
+--
+-- 'canUseAsSource', 'connectorConfiguration_canUseAsSource' - Specifies whether the connector can be used as a source.
+--
+-- 'connectorArn', 'connectorConfiguration_connectorArn' - The Amazon Resource Name (ARN) for the registered connector.
+--
+-- 'connectorDescription', 'connectorConfiguration_connectorDescription' - A description about the connector.
+--
+-- 'connectorLabel', 'connectorConfiguration_connectorLabel' - The label used for registering the connector.
+--
+-- 'connectorMetadata', 'connectorConfiguration_connectorMetadata' - Specifies connector-specific metadata such as @oAuthScopes@,
+-- @supportedRegions@, @privateLinkServiceUrl@, and so on.
+--
+-- 'connectorModes', 'connectorConfiguration_connectorModes' - The connection modes that the connector supports.
+--
+-- 'connectorName', 'connectorConfiguration_connectorName' - The connector name.
+--
+-- 'connectorOwner', 'connectorConfiguration_connectorOwner' - The owner who developed the connector.
+--
+-- 'connectorProvisioningConfig', 'connectorConfiguration_connectorProvisioningConfig' - The configuration required for registering the connector.
+--
+-- 'connectorProvisioningType', 'connectorConfiguration_connectorProvisioningType' - The provisioning type used to register the connector.
+--
+-- 'connectorRuntimeSettings', 'connectorConfiguration_connectorRuntimeSettings' - The required connector runtime settings.
+--
+-- 'connectorType', 'connectorConfiguration_connectorType' - The connector type.
+--
+-- 'connectorVersion', 'connectorConfiguration_connectorVersion' - The connector version.
+--
+-- 'isPrivateLinkEnabled', 'connectorConfiguration_isPrivateLinkEnabled' - Specifies if PrivateLink is enabled for that connector.
+--
+-- 'isPrivateLinkEndpointUrlRequired', 'connectorConfiguration_isPrivateLinkEndpointUrlRequired' - Specifies if a PrivateLink endpoint URL is required.
+--
+-- 'logoURL', 'connectorConfiguration_logoURL' - Logo URL of the connector.
+--
+-- 'registeredAt', 'connectorConfiguration_registeredAt' - The date on which the connector was registered.
+--
+-- 'registeredBy', 'connectorConfiguration_registeredBy' - Information about who registered the connector.
+--
+-- 'supportedApiVersions', 'connectorConfiguration_supportedApiVersions' - A list of API versions that are supported by the connector.
+--
+-- 'supportedDestinationConnectors', 'connectorConfiguration_supportedDestinationConnectors' - Lists the connectors that are available for use as destinations.
+--
+-- 'supportedOperators', 'connectorConfiguration_supportedOperators' - A list of operators supported by the connector.
+--
+-- 'supportedSchedulingFrequencies', 'connectorConfiguration_supportedSchedulingFrequencies' - Specifies the supported flow frequency for that connector.
+--
+-- 'supportedTriggerTypes', 'connectorConfiguration_supportedTriggerTypes' - Specifies the supported trigger types for the flow.
+--
+-- 'supportedWriteOperations', 'connectorConfiguration_supportedWriteOperations' - A list of write operations supported by the connector.
+newConnectorConfiguration ::
+  ConnectorConfiguration
+newConnectorConfiguration =
+  ConnectorConfiguration'
+    { authenticationConfig =
+        Prelude.Nothing,
+      canUseAsDestination = Prelude.Nothing,
+      canUseAsSource = Prelude.Nothing,
+      connectorArn = Prelude.Nothing,
+      connectorDescription = Prelude.Nothing,
+      connectorLabel = Prelude.Nothing,
+      connectorMetadata = Prelude.Nothing,
+      connectorModes = Prelude.Nothing,
+      connectorName = Prelude.Nothing,
+      connectorOwner = Prelude.Nothing,
+      connectorProvisioningConfig = Prelude.Nothing,
+      connectorProvisioningType = Prelude.Nothing,
+      connectorRuntimeSettings = Prelude.Nothing,
+      connectorType = Prelude.Nothing,
+      connectorVersion = Prelude.Nothing,
+      isPrivateLinkEnabled = Prelude.Nothing,
+      isPrivateLinkEndpointUrlRequired = Prelude.Nothing,
+      logoURL = Prelude.Nothing,
+      registeredAt = Prelude.Nothing,
+      registeredBy = Prelude.Nothing,
+      supportedApiVersions = Prelude.Nothing,
+      supportedDestinationConnectors = Prelude.Nothing,
+      supportedOperators = Prelude.Nothing,
+      supportedSchedulingFrequencies = Prelude.Nothing,
+      supportedTriggerTypes = Prelude.Nothing,
+      supportedWriteOperations = Prelude.Nothing
+    }
+
+-- | The authentication config required for the connector.
+connectorConfiguration_authenticationConfig :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe AuthenticationConfig)
+connectorConfiguration_authenticationConfig = Lens.lens (\ConnectorConfiguration' {authenticationConfig} -> authenticationConfig) (\s@ConnectorConfiguration' {} a -> s {authenticationConfig = a} :: ConnectorConfiguration)
+
+-- | Specifies whether the connector can be used as a destination.
+connectorConfiguration_canUseAsDestination :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Bool)
+connectorConfiguration_canUseAsDestination = Lens.lens (\ConnectorConfiguration' {canUseAsDestination} -> canUseAsDestination) (\s@ConnectorConfiguration' {} a -> s {canUseAsDestination = a} :: ConnectorConfiguration)
+
+-- | Specifies whether the connector can be used as a source.
+connectorConfiguration_canUseAsSource :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Bool)
+connectorConfiguration_canUseAsSource = Lens.lens (\ConnectorConfiguration' {canUseAsSource} -> canUseAsSource) (\s@ConnectorConfiguration' {} a -> s {canUseAsSource = a} :: ConnectorConfiguration)
+
+-- | The Amazon Resource Name (ARN) for the registered connector.
+connectorConfiguration_connectorArn :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_connectorArn = Lens.lens (\ConnectorConfiguration' {connectorArn} -> connectorArn) (\s@ConnectorConfiguration' {} a -> s {connectorArn = a} :: ConnectorConfiguration)
+
+-- | A description about the connector.
+connectorConfiguration_connectorDescription :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_connectorDescription = Lens.lens (\ConnectorConfiguration' {connectorDescription} -> connectorDescription) (\s@ConnectorConfiguration' {} a -> s {connectorDescription = a} :: ConnectorConfiguration)
+
+-- | The label used for registering the connector.
+connectorConfiguration_connectorLabel :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_connectorLabel = Lens.lens (\ConnectorConfiguration' {connectorLabel} -> connectorLabel) (\s@ConnectorConfiguration' {} a -> s {connectorLabel = a} :: ConnectorConfiguration)
+
+-- | Specifies connector-specific metadata such as @oAuthScopes@,
+-- @supportedRegions@, @privateLinkServiceUrl@, and so on.
+connectorConfiguration_connectorMetadata :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe ConnectorMetadata)
+connectorConfiguration_connectorMetadata = Lens.lens (\ConnectorConfiguration' {connectorMetadata} -> connectorMetadata) (\s@ConnectorConfiguration' {} a -> s {connectorMetadata = a} :: ConnectorConfiguration)
+
+-- | The connection modes that the connector supports.
+connectorConfiguration_connectorModes :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [Prelude.Text])
+connectorConfiguration_connectorModes = Lens.lens (\ConnectorConfiguration' {connectorModes} -> connectorModes) (\s@ConnectorConfiguration' {} a -> s {connectorModes = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The connector name.
+connectorConfiguration_connectorName :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_connectorName = Lens.lens (\ConnectorConfiguration' {connectorName} -> connectorName) (\s@ConnectorConfiguration' {} a -> s {connectorName = a} :: ConnectorConfiguration)
+
+-- | The owner who developed the connector.
+connectorConfiguration_connectorOwner :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_connectorOwner = Lens.lens (\ConnectorConfiguration' {connectorOwner} -> connectorOwner) (\s@ConnectorConfiguration' {} a -> s {connectorOwner = a} :: ConnectorConfiguration)
+
+-- | The configuration required for registering the connector.
+connectorConfiguration_connectorProvisioningConfig :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe ConnectorProvisioningConfig)
+connectorConfiguration_connectorProvisioningConfig = Lens.lens (\ConnectorConfiguration' {connectorProvisioningConfig} -> connectorProvisioningConfig) (\s@ConnectorConfiguration' {} a -> s {connectorProvisioningConfig = a} :: ConnectorConfiguration)
+
+-- | The provisioning type used to register the connector.
+connectorConfiguration_connectorProvisioningType :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe ConnectorProvisioningType)
+connectorConfiguration_connectorProvisioningType = Lens.lens (\ConnectorConfiguration' {connectorProvisioningType} -> connectorProvisioningType) (\s@ConnectorConfiguration' {} a -> s {connectorProvisioningType = a} :: ConnectorConfiguration)
+
+-- | The required connector runtime settings.
+connectorConfiguration_connectorRuntimeSettings :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [ConnectorRuntimeSetting])
+connectorConfiguration_connectorRuntimeSettings = Lens.lens (\ConnectorConfiguration' {connectorRuntimeSettings} -> connectorRuntimeSettings) (\s@ConnectorConfiguration' {} a -> s {connectorRuntimeSettings = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The connector type.
+connectorConfiguration_connectorType :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe ConnectorType)
+connectorConfiguration_connectorType = Lens.lens (\ConnectorConfiguration' {connectorType} -> connectorType) (\s@ConnectorConfiguration' {} a -> s {connectorType = a} :: ConnectorConfiguration)
+
+-- | The connector version.
+connectorConfiguration_connectorVersion :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_connectorVersion = Lens.lens (\ConnectorConfiguration' {connectorVersion} -> connectorVersion) (\s@ConnectorConfiguration' {} a -> s {connectorVersion = a} :: ConnectorConfiguration)
+
+-- | Specifies if PrivateLink is enabled for that connector.
+connectorConfiguration_isPrivateLinkEnabled :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Bool)
+connectorConfiguration_isPrivateLinkEnabled = Lens.lens (\ConnectorConfiguration' {isPrivateLinkEnabled} -> isPrivateLinkEnabled) (\s@ConnectorConfiguration' {} a -> s {isPrivateLinkEnabled = a} :: ConnectorConfiguration)
+
+-- | Specifies if a PrivateLink endpoint URL is required.
+connectorConfiguration_isPrivateLinkEndpointUrlRequired :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Bool)
+connectorConfiguration_isPrivateLinkEndpointUrlRequired = Lens.lens (\ConnectorConfiguration' {isPrivateLinkEndpointUrlRequired} -> isPrivateLinkEndpointUrlRequired) (\s@ConnectorConfiguration' {} a -> s {isPrivateLinkEndpointUrlRequired = a} :: ConnectorConfiguration)
+
+-- | Logo URL of the connector.
+connectorConfiguration_logoURL :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_logoURL = Lens.lens (\ConnectorConfiguration' {logoURL} -> logoURL) (\s@ConnectorConfiguration' {} a -> s {logoURL = a} :: ConnectorConfiguration)
+
+-- | The date on which the connector was registered.
+connectorConfiguration_registeredAt :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.UTCTime)
+connectorConfiguration_registeredAt = Lens.lens (\ConnectorConfiguration' {registeredAt} -> registeredAt) (\s@ConnectorConfiguration' {} a -> s {registeredAt = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Data._Time
+
+-- | Information about who registered the connector.
+connectorConfiguration_registeredBy :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe Prelude.Text)
+connectorConfiguration_registeredBy = Lens.lens (\ConnectorConfiguration' {registeredBy} -> registeredBy) (\s@ConnectorConfiguration' {} a -> s {registeredBy = a} :: ConnectorConfiguration)
+
+-- | A list of API versions that are supported by the connector.
+connectorConfiguration_supportedApiVersions :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [Prelude.Text])
+connectorConfiguration_supportedApiVersions = Lens.lens (\ConnectorConfiguration' {supportedApiVersions} -> supportedApiVersions) (\s@ConnectorConfiguration' {} a -> s {supportedApiVersions = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Lists the connectors that are available for use as destinations.
+connectorConfiguration_supportedDestinationConnectors :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [ConnectorType])
+connectorConfiguration_supportedDestinationConnectors = Lens.lens (\ConnectorConfiguration' {supportedDestinationConnectors} -> supportedDestinationConnectors) (\s@ConnectorConfiguration' {} a -> s {supportedDestinationConnectors = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of operators supported by the connector.
+connectorConfiguration_supportedOperators :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [Operators])
+connectorConfiguration_supportedOperators = Lens.lens (\ConnectorConfiguration' {supportedOperators} -> supportedOperators) (\s@ConnectorConfiguration' {} a -> s {supportedOperators = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the supported flow frequency for that connector.
+connectorConfiguration_supportedSchedulingFrequencies :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [ScheduleFrequencyType])
+connectorConfiguration_supportedSchedulingFrequencies = Lens.lens (\ConnectorConfiguration' {supportedSchedulingFrequencies} -> supportedSchedulingFrequencies) (\s@ConnectorConfiguration' {} a -> s {supportedSchedulingFrequencies = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the supported trigger types for the flow.
+connectorConfiguration_supportedTriggerTypes :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [TriggerType])
+connectorConfiguration_supportedTriggerTypes = Lens.lens (\ConnectorConfiguration' {supportedTriggerTypes} -> supportedTriggerTypes) (\s@ConnectorConfiguration' {} a -> s {supportedTriggerTypes = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of write operations supported by the connector.
+connectorConfiguration_supportedWriteOperations :: Lens.Lens' ConnectorConfiguration (Prelude.Maybe [WriteOperationType])
+connectorConfiguration_supportedWriteOperations = Lens.lens (\ConnectorConfiguration' {supportedWriteOperations} -> supportedWriteOperations) (\s@ConnectorConfiguration' {} a -> s {supportedWriteOperations = a} :: ConnectorConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ConnectorConfiguration where
+  parseJSON =
+    Data.withObject
+      "ConnectorConfiguration"
+      ( \x ->
+          ConnectorConfiguration'
+            Prelude.<$> (x Data..:? "authenticationConfig")
+            Prelude.<*> (x Data..:? "canUseAsDestination")
+            Prelude.<*> (x Data..:? "canUseAsSource")
+            Prelude.<*> (x Data..:? "connectorArn")
+            Prelude.<*> (x Data..:? "connectorDescription")
+            Prelude.<*> (x Data..:? "connectorLabel")
+            Prelude.<*> (x Data..:? "connectorMetadata")
+            Prelude.<*> (x Data..:? "connectorModes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "connectorName")
+            Prelude.<*> (x Data..:? "connectorOwner")
+            Prelude.<*> (x Data..:? "connectorProvisioningConfig")
+            Prelude.<*> (x Data..:? "connectorProvisioningType")
+            Prelude.<*> ( x
+                            Data..:? "connectorRuntimeSettings"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "connectorType")
+            Prelude.<*> (x Data..:? "connectorVersion")
+            Prelude.<*> (x Data..:? "isPrivateLinkEnabled")
+            Prelude.<*> (x Data..:? "isPrivateLinkEndpointUrlRequired")
+            Prelude.<*> (x Data..:? "logoURL")
+            Prelude.<*> (x Data..:? "registeredAt")
+            Prelude.<*> (x Data..:? "registeredBy")
+            Prelude.<*> ( x
+                            Data..:? "supportedApiVersions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "supportedDestinationConnectors"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "supportedOperators"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "supportedSchedulingFrequencies"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "supportedTriggerTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "supportedWriteOperations"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ConnectorConfiguration where
+  hashWithSalt _salt ConnectorConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationConfig
+      `Prelude.hashWithSalt` canUseAsDestination
+      `Prelude.hashWithSalt` canUseAsSource
+      `Prelude.hashWithSalt` connectorArn
+      `Prelude.hashWithSalt` connectorDescription
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` connectorMetadata
+      `Prelude.hashWithSalt` connectorModes
+      `Prelude.hashWithSalt` connectorName
+      `Prelude.hashWithSalt` connectorOwner
+      `Prelude.hashWithSalt` connectorProvisioningConfig
+      `Prelude.hashWithSalt` connectorProvisioningType
+      `Prelude.hashWithSalt` connectorRuntimeSettings
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` connectorVersion
+      `Prelude.hashWithSalt` isPrivateLinkEnabled
+      `Prelude.hashWithSalt` isPrivateLinkEndpointUrlRequired
+      `Prelude.hashWithSalt` logoURL
+      `Prelude.hashWithSalt` registeredAt
+      `Prelude.hashWithSalt` registeredBy
+      `Prelude.hashWithSalt` supportedApiVersions
+      `Prelude.hashWithSalt` supportedDestinationConnectors
+      `Prelude.hashWithSalt` supportedOperators
+      `Prelude.hashWithSalt` supportedSchedulingFrequencies
+      `Prelude.hashWithSalt` supportedTriggerTypes
+      `Prelude.hashWithSalt` supportedWriteOperations
+
+instance Prelude.NFData ConnectorConfiguration where
+  rnf ConnectorConfiguration' {..} =
+    Prelude.rnf authenticationConfig
+      `Prelude.seq` Prelude.rnf canUseAsDestination
+      `Prelude.seq` Prelude.rnf canUseAsSource
+      `Prelude.seq` Prelude.rnf connectorArn
+      `Prelude.seq` Prelude.rnf connectorDescription
+      `Prelude.seq` Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf connectorMetadata
+      `Prelude.seq` Prelude.rnf connectorModes
+      `Prelude.seq` Prelude.rnf connectorName
+      `Prelude.seq` Prelude.rnf connectorOwner
+      `Prelude.seq` Prelude.rnf connectorProvisioningConfig
+      `Prelude.seq` Prelude.rnf connectorProvisioningType
+      `Prelude.seq` Prelude.rnf connectorRuntimeSettings
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf connectorVersion
+      `Prelude.seq` Prelude.rnf isPrivateLinkEnabled
+      `Prelude.seq` Prelude.rnf
+        isPrivateLinkEndpointUrlRequired
+      `Prelude.seq` Prelude.rnf logoURL
+      `Prelude.seq` Prelude.rnf registeredAt
+      `Prelude.seq` Prelude.rnf registeredBy
+      `Prelude.seq` Prelude.rnf
+        supportedApiVersions
+      `Prelude.seq` Prelude.rnf
+        supportedDestinationConnectors
+      `Prelude.seq` Prelude.rnf
+        supportedOperators
+      `Prelude.seq` Prelude.rnf
+        supportedSchedulingFrequencies
+      `Prelude.seq` Prelude.rnf
+        supportedTriggerTypes
+      `Prelude.seq` Prelude.rnf
+        supportedWriteOperations
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorDetail.hs b/gen/Amazonka/AppFlow/Types/ConnectorDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorDetail.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorDetail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorDetail where
+
+import Amazonka.AppFlow.Types.ConnectorProvisioningType
+import Amazonka.AppFlow.Types.ConnectorType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the registered connector.
+--
+-- /See:/ 'newConnectorDetail' smart constructor.
+data ConnectorDetail = ConnectorDetail'
+  { -- | The application type of the connector.
+    applicationType :: Prelude.Maybe Prelude.Text,
+    -- | A description about the registered connector.
+    connectorDescription :: Prelude.Maybe Prelude.Text,
+    -- | A label used for the connector.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | The connection mode that the connector supports.
+    connectorModes :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the connector.
+    connectorName :: Prelude.Maybe Prelude.Text,
+    -- | The owner of the connector.
+    connectorOwner :: Prelude.Maybe Prelude.Text,
+    -- | The provisioning type that the connector uses.
+    connectorProvisioningType :: Prelude.Maybe ConnectorProvisioningType,
+    -- | The connector type.
+    connectorType :: Prelude.Maybe ConnectorType,
+    -- | The connector version.
+    connectorVersion :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the connector was registered.
+    registeredAt :: Prelude.Maybe Data.POSIX,
+    -- | The user who registered the connector.
+    registeredBy :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorDetail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationType', 'connectorDetail_applicationType' - The application type of the connector.
+--
+-- 'connectorDescription', 'connectorDetail_connectorDescription' - A description about the registered connector.
+--
+-- 'connectorLabel', 'connectorDetail_connectorLabel' - A label used for the connector.
+--
+-- 'connectorModes', 'connectorDetail_connectorModes' - The connection mode that the connector supports.
+--
+-- 'connectorName', 'connectorDetail_connectorName' - The name of the connector.
+--
+-- 'connectorOwner', 'connectorDetail_connectorOwner' - The owner of the connector.
+--
+-- 'connectorProvisioningType', 'connectorDetail_connectorProvisioningType' - The provisioning type that the connector uses.
+--
+-- 'connectorType', 'connectorDetail_connectorType' - The connector type.
+--
+-- 'connectorVersion', 'connectorDetail_connectorVersion' - The connector version.
+--
+-- 'registeredAt', 'connectorDetail_registeredAt' - The time at which the connector was registered.
+--
+-- 'registeredBy', 'connectorDetail_registeredBy' - The user who registered the connector.
+newConnectorDetail ::
+  ConnectorDetail
+newConnectorDetail =
+  ConnectorDetail'
+    { applicationType = Prelude.Nothing,
+      connectorDescription = Prelude.Nothing,
+      connectorLabel = Prelude.Nothing,
+      connectorModes = Prelude.Nothing,
+      connectorName = Prelude.Nothing,
+      connectorOwner = Prelude.Nothing,
+      connectorProvisioningType = Prelude.Nothing,
+      connectorType = Prelude.Nothing,
+      connectorVersion = Prelude.Nothing,
+      registeredAt = Prelude.Nothing,
+      registeredBy = Prelude.Nothing
+    }
+
+-- | The application type of the connector.
+connectorDetail_applicationType :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_applicationType = Lens.lens (\ConnectorDetail' {applicationType} -> applicationType) (\s@ConnectorDetail' {} a -> s {applicationType = a} :: ConnectorDetail)
+
+-- | A description about the registered connector.
+connectorDetail_connectorDescription :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_connectorDescription = Lens.lens (\ConnectorDetail' {connectorDescription} -> connectorDescription) (\s@ConnectorDetail' {} a -> s {connectorDescription = a} :: ConnectorDetail)
+
+-- | A label used for the connector.
+connectorDetail_connectorLabel :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_connectorLabel = Lens.lens (\ConnectorDetail' {connectorLabel} -> connectorLabel) (\s@ConnectorDetail' {} a -> s {connectorLabel = a} :: ConnectorDetail)
+
+-- | The connection mode that the connector supports.
+connectorDetail_connectorModes :: Lens.Lens' ConnectorDetail (Prelude.Maybe [Prelude.Text])
+connectorDetail_connectorModes = Lens.lens (\ConnectorDetail' {connectorModes} -> connectorModes) (\s@ConnectorDetail' {} a -> s {connectorModes = a} :: ConnectorDetail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the connector.
+connectorDetail_connectorName :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_connectorName = Lens.lens (\ConnectorDetail' {connectorName} -> connectorName) (\s@ConnectorDetail' {} a -> s {connectorName = a} :: ConnectorDetail)
+
+-- | The owner of the connector.
+connectorDetail_connectorOwner :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_connectorOwner = Lens.lens (\ConnectorDetail' {connectorOwner} -> connectorOwner) (\s@ConnectorDetail' {} a -> s {connectorOwner = a} :: ConnectorDetail)
+
+-- | The provisioning type that the connector uses.
+connectorDetail_connectorProvisioningType :: Lens.Lens' ConnectorDetail (Prelude.Maybe ConnectorProvisioningType)
+connectorDetail_connectorProvisioningType = Lens.lens (\ConnectorDetail' {connectorProvisioningType} -> connectorProvisioningType) (\s@ConnectorDetail' {} a -> s {connectorProvisioningType = a} :: ConnectorDetail)
+
+-- | The connector type.
+connectorDetail_connectorType :: Lens.Lens' ConnectorDetail (Prelude.Maybe ConnectorType)
+connectorDetail_connectorType = Lens.lens (\ConnectorDetail' {connectorType} -> connectorType) (\s@ConnectorDetail' {} a -> s {connectorType = a} :: ConnectorDetail)
+
+-- | The connector version.
+connectorDetail_connectorVersion :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_connectorVersion = Lens.lens (\ConnectorDetail' {connectorVersion} -> connectorVersion) (\s@ConnectorDetail' {} a -> s {connectorVersion = a} :: ConnectorDetail)
+
+-- | The time at which the connector was registered.
+connectorDetail_registeredAt :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.UTCTime)
+connectorDetail_registeredAt = Lens.lens (\ConnectorDetail' {registeredAt} -> registeredAt) (\s@ConnectorDetail' {} a -> s {registeredAt = a} :: ConnectorDetail) Prelude.. Lens.mapping Data._Time
+
+-- | The user who registered the connector.
+connectorDetail_registeredBy :: Lens.Lens' ConnectorDetail (Prelude.Maybe Prelude.Text)
+connectorDetail_registeredBy = Lens.lens (\ConnectorDetail' {registeredBy} -> registeredBy) (\s@ConnectorDetail' {} a -> s {registeredBy = a} :: ConnectorDetail)
+
+instance Data.FromJSON ConnectorDetail where
+  parseJSON =
+    Data.withObject
+      "ConnectorDetail"
+      ( \x ->
+          ConnectorDetail'
+            Prelude.<$> (x Data..:? "applicationType")
+            Prelude.<*> (x Data..:? "connectorDescription")
+            Prelude.<*> (x Data..:? "connectorLabel")
+            Prelude.<*> (x Data..:? "connectorModes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "connectorName")
+            Prelude.<*> (x Data..:? "connectorOwner")
+            Prelude.<*> (x Data..:? "connectorProvisioningType")
+            Prelude.<*> (x Data..:? "connectorType")
+            Prelude.<*> (x Data..:? "connectorVersion")
+            Prelude.<*> (x Data..:? "registeredAt")
+            Prelude.<*> (x Data..:? "registeredBy")
+      )
+
+instance Prelude.Hashable ConnectorDetail where
+  hashWithSalt _salt ConnectorDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationType
+      `Prelude.hashWithSalt` connectorDescription
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` connectorModes
+      `Prelude.hashWithSalt` connectorName
+      `Prelude.hashWithSalt` connectorOwner
+      `Prelude.hashWithSalt` connectorProvisioningType
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` connectorVersion
+      `Prelude.hashWithSalt` registeredAt
+      `Prelude.hashWithSalt` registeredBy
+
+instance Prelude.NFData ConnectorDetail where
+  rnf ConnectorDetail' {..} =
+    Prelude.rnf applicationType
+      `Prelude.seq` Prelude.rnf connectorDescription
+      `Prelude.seq` Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf connectorModes
+      `Prelude.seq` Prelude.rnf connectorName
+      `Prelude.seq` Prelude.rnf connectorOwner
+      `Prelude.seq` Prelude.rnf connectorProvisioningType
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf connectorVersion
+      `Prelude.seq` Prelude.rnf registeredAt
+      `Prelude.seq` Prelude.rnf registeredBy
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorEntity.hs b/gen/Amazonka/AppFlow/Types/ConnectorEntity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorEntity.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorEntity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorEntity where
+
+import qualified 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 high-level entity that can be queried in Amazon AppFlow. For
+-- example, a Salesforce entity might be an /Account/ or /Opportunity/,
+-- whereas a ServiceNow entity might be an /Incident/.
+--
+-- /See:/ 'newConnectorEntity' smart constructor.
+data ConnectorEntity = ConnectorEntity'
+  { -- | Specifies whether the connector entity is a parent or a category and has
+    -- more entities nested underneath it. If another call is made with
+    -- @entitiesPath = \"the_current_entity_name_with_hasNestedEntities_true\"@,
+    -- then it returns the nested entities underneath it. This provides a way
+    -- to retrieve all supported entities in a recursive fashion.
+    hasNestedEntities :: Prelude.Maybe Prelude.Bool,
+    -- | The label applied to the connector entity.
+    label :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector entity.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorEntity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'hasNestedEntities', 'connectorEntity_hasNestedEntities' - Specifies whether the connector entity is a parent or a category and has
+-- more entities nested underneath it. If another call is made with
+-- @entitiesPath = \"the_current_entity_name_with_hasNestedEntities_true\"@,
+-- then it returns the nested entities underneath it. This provides a way
+-- to retrieve all supported entities in a recursive fashion.
+--
+-- 'label', 'connectorEntity_label' - The label applied to the connector entity.
+--
+-- 'name', 'connectorEntity_name' - The name of the connector entity.
+newConnectorEntity ::
+  -- | 'name'
+  Prelude.Text ->
+  ConnectorEntity
+newConnectorEntity pName_ =
+  ConnectorEntity'
+    { hasNestedEntities =
+        Prelude.Nothing,
+      label = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | Specifies whether the connector entity is a parent or a category and has
+-- more entities nested underneath it. If another call is made with
+-- @entitiesPath = \"the_current_entity_name_with_hasNestedEntities_true\"@,
+-- then it returns the nested entities underneath it. This provides a way
+-- to retrieve all supported entities in a recursive fashion.
+connectorEntity_hasNestedEntities :: Lens.Lens' ConnectorEntity (Prelude.Maybe Prelude.Bool)
+connectorEntity_hasNestedEntities = Lens.lens (\ConnectorEntity' {hasNestedEntities} -> hasNestedEntities) (\s@ConnectorEntity' {} a -> s {hasNestedEntities = a} :: ConnectorEntity)
+
+-- | The label applied to the connector entity.
+connectorEntity_label :: Lens.Lens' ConnectorEntity (Prelude.Maybe Prelude.Text)
+connectorEntity_label = Lens.lens (\ConnectorEntity' {label} -> label) (\s@ConnectorEntity' {} a -> s {label = a} :: ConnectorEntity)
+
+-- | The name of the connector entity.
+connectorEntity_name :: Lens.Lens' ConnectorEntity Prelude.Text
+connectorEntity_name = Lens.lens (\ConnectorEntity' {name} -> name) (\s@ConnectorEntity' {} a -> s {name = a} :: ConnectorEntity)
+
+instance Data.FromJSON ConnectorEntity where
+  parseJSON =
+    Data.withObject
+      "ConnectorEntity"
+      ( \x ->
+          ConnectorEntity'
+            Prelude.<$> (x Data..:? "hasNestedEntities")
+            Prelude.<*> (x Data..:? "label")
+            Prelude.<*> (x Data..: "name")
+      )
+
+instance Prelude.Hashable ConnectorEntity where
+  hashWithSalt _salt ConnectorEntity' {..} =
+    _salt
+      `Prelude.hashWithSalt` hasNestedEntities
+      `Prelude.hashWithSalt` label
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ConnectorEntity where
+  rnf ConnectorEntity' {..} =
+    Prelude.rnf hasNestedEntities
+      `Prelude.seq` Prelude.rnf label
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorEntityField.hs b/gen/Amazonka/AppFlow/Types/ConnectorEntityField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorEntityField.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorEntityField
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorEntityField where
+
+import Amazonka.AppFlow.Types.DestinationFieldProperties
+import Amazonka.AppFlow.Types.SourceFieldProperties
+import Amazonka.AppFlow.Types.SupportedFieldTypeDetails
+import qualified 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 the data model of a connector field. For example, for an
+-- /account/ entity, the fields would be /account name/, /account ID/, and
+-- so on.
+--
+-- /See:/ 'newConnectorEntityField' smart constructor.
+data ConnectorEntityField = ConnectorEntityField'
+  { -- | A map that has specific properties related to the ConnectorEntityField.
+    customProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Default value that can be assigned to this field.
+    defaultValue :: Prelude.Maybe Prelude.Text,
+    -- | A description of the connector entity field.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The properties applied to a field when the connector is being used as a
+    -- destination.
+    destinationProperties :: Prelude.Maybe DestinationFieldProperties,
+    -- | Booelan value that indicates whether this field is deprecated or not.
+    isDeprecated :: Prelude.Maybe Prelude.Bool,
+    -- | Booelan value that indicates whether this field can be used as a primary
+    -- key.
+    isPrimaryKey :: Prelude.Maybe Prelude.Bool,
+    -- | The label applied to a connector entity field.
+    label :: Prelude.Maybe Prelude.Text,
+    -- | The parent identifier of the connector field.
+    parentIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The properties that can be applied to a field when the connector is
+    -- being used as a source.
+    sourceProperties :: Prelude.Maybe SourceFieldProperties,
+    -- | Contains details regarding the supported @FieldType@, including the
+    -- corresponding @filterOperators@ and @supportedValues@.
+    supportedFieldTypeDetails :: Prelude.Maybe SupportedFieldTypeDetails,
+    -- | The unique identifier of the connector field.
+    identifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorEntityField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customProperties', 'connectorEntityField_customProperties' - A map that has specific properties related to the ConnectorEntityField.
+--
+-- 'defaultValue', 'connectorEntityField_defaultValue' - Default value that can be assigned to this field.
+--
+-- 'description', 'connectorEntityField_description' - A description of the connector entity field.
+--
+-- 'destinationProperties', 'connectorEntityField_destinationProperties' - The properties applied to a field when the connector is being used as a
+-- destination.
+--
+-- 'isDeprecated', 'connectorEntityField_isDeprecated' - Booelan value that indicates whether this field is deprecated or not.
+--
+-- 'isPrimaryKey', 'connectorEntityField_isPrimaryKey' - Booelan value that indicates whether this field can be used as a primary
+-- key.
+--
+-- 'label', 'connectorEntityField_label' - The label applied to a connector entity field.
+--
+-- 'parentIdentifier', 'connectorEntityField_parentIdentifier' - The parent identifier of the connector field.
+--
+-- 'sourceProperties', 'connectorEntityField_sourceProperties' - The properties that can be applied to a field when the connector is
+-- being used as a source.
+--
+-- 'supportedFieldTypeDetails', 'connectorEntityField_supportedFieldTypeDetails' - Contains details regarding the supported @FieldType@, including the
+-- corresponding @filterOperators@ and @supportedValues@.
+--
+-- 'identifier', 'connectorEntityField_identifier' - The unique identifier of the connector field.
+newConnectorEntityField ::
+  -- | 'identifier'
+  Prelude.Text ->
+  ConnectorEntityField
+newConnectorEntityField pIdentifier_ =
+  ConnectorEntityField'
+    { customProperties =
+        Prelude.Nothing,
+      defaultValue = Prelude.Nothing,
+      description = Prelude.Nothing,
+      destinationProperties = Prelude.Nothing,
+      isDeprecated = Prelude.Nothing,
+      isPrimaryKey = Prelude.Nothing,
+      label = Prelude.Nothing,
+      parentIdentifier = Prelude.Nothing,
+      sourceProperties = Prelude.Nothing,
+      supportedFieldTypeDetails = Prelude.Nothing,
+      identifier = pIdentifier_
+    }
+
+-- | A map that has specific properties related to the ConnectorEntityField.
+connectorEntityField_customProperties :: Lens.Lens' ConnectorEntityField (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+connectorEntityField_customProperties = Lens.lens (\ConnectorEntityField' {customProperties} -> customProperties) (\s@ConnectorEntityField' {} a -> s {customProperties = a} :: ConnectorEntityField) Prelude.. Lens.mapping Lens.coerced
+
+-- | Default value that can be assigned to this field.
+connectorEntityField_defaultValue :: Lens.Lens' ConnectorEntityField (Prelude.Maybe Prelude.Text)
+connectorEntityField_defaultValue = Lens.lens (\ConnectorEntityField' {defaultValue} -> defaultValue) (\s@ConnectorEntityField' {} a -> s {defaultValue = a} :: ConnectorEntityField)
+
+-- | A description of the connector entity field.
+connectorEntityField_description :: Lens.Lens' ConnectorEntityField (Prelude.Maybe Prelude.Text)
+connectorEntityField_description = Lens.lens (\ConnectorEntityField' {description} -> description) (\s@ConnectorEntityField' {} a -> s {description = a} :: ConnectorEntityField)
+
+-- | The properties applied to a field when the connector is being used as a
+-- destination.
+connectorEntityField_destinationProperties :: Lens.Lens' ConnectorEntityField (Prelude.Maybe DestinationFieldProperties)
+connectorEntityField_destinationProperties = Lens.lens (\ConnectorEntityField' {destinationProperties} -> destinationProperties) (\s@ConnectorEntityField' {} a -> s {destinationProperties = a} :: ConnectorEntityField)
+
+-- | Booelan value that indicates whether this field is deprecated or not.
+connectorEntityField_isDeprecated :: Lens.Lens' ConnectorEntityField (Prelude.Maybe Prelude.Bool)
+connectorEntityField_isDeprecated = Lens.lens (\ConnectorEntityField' {isDeprecated} -> isDeprecated) (\s@ConnectorEntityField' {} a -> s {isDeprecated = a} :: ConnectorEntityField)
+
+-- | Booelan value that indicates whether this field can be used as a primary
+-- key.
+connectorEntityField_isPrimaryKey :: Lens.Lens' ConnectorEntityField (Prelude.Maybe Prelude.Bool)
+connectorEntityField_isPrimaryKey = Lens.lens (\ConnectorEntityField' {isPrimaryKey} -> isPrimaryKey) (\s@ConnectorEntityField' {} a -> s {isPrimaryKey = a} :: ConnectorEntityField)
+
+-- | The label applied to a connector entity field.
+connectorEntityField_label :: Lens.Lens' ConnectorEntityField (Prelude.Maybe Prelude.Text)
+connectorEntityField_label = Lens.lens (\ConnectorEntityField' {label} -> label) (\s@ConnectorEntityField' {} a -> s {label = a} :: ConnectorEntityField)
+
+-- | The parent identifier of the connector field.
+connectorEntityField_parentIdentifier :: Lens.Lens' ConnectorEntityField (Prelude.Maybe Prelude.Text)
+connectorEntityField_parentIdentifier = Lens.lens (\ConnectorEntityField' {parentIdentifier} -> parentIdentifier) (\s@ConnectorEntityField' {} a -> s {parentIdentifier = a} :: ConnectorEntityField)
+
+-- | The properties that can be applied to a field when the connector is
+-- being used as a source.
+connectorEntityField_sourceProperties :: Lens.Lens' ConnectorEntityField (Prelude.Maybe SourceFieldProperties)
+connectorEntityField_sourceProperties = Lens.lens (\ConnectorEntityField' {sourceProperties} -> sourceProperties) (\s@ConnectorEntityField' {} a -> s {sourceProperties = a} :: ConnectorEntityField)
+
+-- | Contains details regarding the supported @FieldType@, including the
+-- corresponding @filterOperators@ and @supportedValues@.
+connectorEntityField_supportedFieldTypeDetails :: Lens.Lens' ConnectorEntityField (Prelude.Maybe SupportedFieldTypeDetails)
+connectorEntityField_supportedFieldTypeDetails = Lens.lens (\ConnectorEntityField' {supportedFieldTypeDetails} -> supportedFieldTypeDetails) (\s@ConnectorEntityField' {} a -> s {supportedFieldTypeDetails = a} :: ConnectorEntityField)
+
+-- | The unique identifier of the connector field.
+connectorEntityField_identifier :: Lens.Lens' ConnectorEntityField Prelude.Text
+connectorEntityField_identifier = Lens.lens (\ConnectorEntityField' {identifier} -> identifier) (\s@ConnectorEntityField' {} a -> s {identifier = a} :: ConnectorEntityField)
+
+instance Data.FromJSON ConnectorEntityField where
+  parseJSON =
+    Data.withObject
+      "ConnectorEntityField"
+      ( \x ->
+          ConnectorEntityField'
+            Prelude.<$> ( x
+                            Data..:? "customProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "defaultValue")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "destinationProperties")
+            Prelude.<*> (x Data..:? "isDeprecated")
+            Prelude.<*> (x Data..:? "isPrimaryKey")
+            Prelude.<*> (x Data..:? "label")
+            Prelude.<*> (x Data..:? "parentIdentifier")
+            Prelude.<*> (x Data..:? "sourceProperties")
+            Prelude.<*> (x Data..:? "supportedFieldTypeDetails")
+            Prelude.<*> (x Data..: "identifier")
+      )
+
+instance Prelude.Hashable ConnectorEntityField where
+  hashWithSalt _salt ConnectorEntityField' {..} =
+    _salt
+      `Prelude.hashWithSalt` customProperties
+      `Prelude.hashWithSalt` defaultValue
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` destinationProperties
+      `Prelude.hashWithSalt` isDeprecated
+      `Prelude.hashWithSalt` isPrimaryKey
+      `Prelude.hashWithSalt` label
+      `Prelude.hashWithSalt` parentIdentifier
+      `Prelude.hashWithSalt` sourceProperties
+      `Prelude.hashWithSalt` supportedFieldTypeDetails
+      `Prelude.hashWithSalt` identifier
+
+instance Prelude.NFData ConnectorEntityField where
+  rnf ConnectorEntityField' {..} =
+    Prelude.rnf customProperties
+      `Prelude.seq` Prelude.rnf defaultValue
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf destinationProperties
+      `Prelude.seq` Prelude.rnf isDeprecated
+      `Prelude.seq` Prelude.rnf isPrimaryKey
+      `Prelude.seq` Prelude.rnf label
+      `Prelude.seq` Prelude.rnf parentIdentifier
+      `Prelude.seq` Prelude.rnf sourceProperties
+      `Prelude.seq` Prelude.rnf supportedFieldTypeDetails
+      `Prelude.seq` Prelude.rnf identifier
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorMetadata.hs b/gen/Amazonka/AppFlow/Types/ConnectorMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorMetadata.hs
@@ -0,0 +1,333 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorMetadata where
+
+import Amazonka.AppFlow.Types.AmplitudeMetadata
+import Amazonka.AppFlow.Types.CustomerProfilesMetadata
+import Amazonka.AppFlow.Types.DatadogMetadata
+import Amazonka.AppFlow.Types.DynatraceMetadata
+import Amazonka.AppFlow.Types.EventBridgeMetadata
+import Amazonka.AppFlow.Types.GoogleAnalyticsMetadata
+import Amazonka.AppFlow.Types.HoneycodeMetadata
+import Amazonka.AppFlow.Types.InforNexusMetadata
+import Amazonka.AppFlow.Types.MarketoMetadata
+import Amazonka.AppFlow.Types.RedshiftMetadata
+import Amazonka.AppFlow.Types.S3Metadata
+import Amazonka.AppFlow.Types.SAPODataMetadata
+import Amazonka.AppFlow.Types.SalesforceMetadata
+import Amazonka.AppFlow.Types.ServiceNowMetadata
+import Amazonka.AppFlow.Types.SingularMetadata
+import Amazonka.AppFlow.Types.SlackMetadata
+import Amazonka.AppFlow.Types.SnowflakeMetadata
+import Amazonka.AppFlow.Types.TrendmicroMetadata
+import Amazonka.AppFlow.Types.UpsolverMetadata
+import Amazonka.AppFlow.Types.VeevaMetadata
+import Amazonka.AppFlow.Types.ZendeskMetadata
+import qualified 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 to specify connector-specific metadata such as
+-- @oAuthScopes@, @supportedRegions@, @privateLinkServiceUrl@, and so on.
+--
+-- /See:/ 'newConnectorMetadata' smart constructor.
+data ConnectorMetadata = ConnectorMetadata'
+  { -- | The connector metadata specific to Amplitude.
+    amplitude :: Prelude.Maybe AmplitudeMetadata,
+    -- | The connector metadata specific to Amazon Connect Customer Profiles.
+    customerProfiles :: Prelude.Maybe CustomerProfilesMetadata,
+    -- | The connector metadata specific to Datadog.
+    datadog :: Prelude.Maybe DatadogMetadata,
+    -- | The connector metadata specific to Dynatrace.
+    dynatrace :: Prelude.Maybe DynatraceMetadata,
+    -- | The connector metadata specific to Amazon EventBridge.
+    eventBridge :: Prelude.Maybe EventBridgeMetadata,
+    -- | The connector metadata specific to Google Analytics.
+    googleAnalytics :: Prelude.Maybe GoogleAnalyticsMetadata,
+    -- | The connector metadata specific to Amazon Honeycode.
+    honeycode :: Prelude.Maybe HoneycodeMetadata,
+    -- | The connector metadata specific to Infor Nexus.
+    inforNexus :: Prelude.Maybe InforNexusMetadata,
+    -- | The connector metadata specific to Marketo.
+    marketo :: Prelude.Maybe MarketoMetadata,
+    -- | The connector metadata specific to Amazon Redshift.
+    redshift :: Prelude.Maybe RedshiftMetadata,
+    -- | The connector metadata specific to Amazon S3.
+    s3 :: Prelude.Maybe S3Metadata,
+    sAPOData :: Prelude.Maybe SAPODataMetadata,
+    -- | The connector metadata specific to Salesforce.
+    salesforce :: Prelude.Maybe SalesforceMetadata,
+    -- | The connector metadata specific to ServiceNow.
+    serviceNow :: Prelude.Maybe ServiceNowMetadata,
+    -- | The connector metadata specific to Singular.
+    singular :: Prelude.Maybe SingularMetadata,
+    -- | The connector metadata specific to Slack.
+    slack :: Prelude.Maybe SlackMetadata,
+    -- | The connector metadata specific to Snowflake.
+    snowflake :: Prelude.Maybe SnowflakeMetadata,
+    -- | The connector metadata specific to Trend Micro.
+    trendmicro :: Prelude.Maybe TrendmicroMetadata,
+    -- | The connector metadata specific to Upsolver.
+    upsolver :: Prelude.Maybe UpsolverMetadata,
+    -- | The connector metadata specific to Veeva.
+    veeva :: Prelude.Maybe VeevaMetadata,
+    -- | The connector metadata specific to Zendesk.
+    zendesk :: Prelude.Maybe ZendeskMetadata
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amplitude', 'connectorMetadata_amplitude' - The connector metadata specific to Amplitude.
+--
+-- 'customerProfiles', 'connectorMetadata_customerProfiles' - The connector metadata specific to Amazon Connect Customer Profiles.
+--
+-- 'datadog', 'connectorMetadata_datadog' - The connector metadata specific to Datadog.
+--
+-- 'dynatrace', 'connectorMetadata_dynatrace' - The connector metadata specific to Dynatrace.
+--
+-- 'eventBridge', 'connectorMetadata_eventBridge' - The connector metadata specific to Amazon EventBridge.
+--
+-- 'googleAnalytics', 'connectorMetadata_googleAnalytics' - The connector metadata specific to Google Analytics.
+--
+-- 'honeycode', 'connectorMetadata_honeycode' - The connector metadata specific to Amazon Honeycode.
+--
+-- 'inforNexus', 'connectorMetadata_inforNexus' - The connector metadata specific to Infor Nexus.
+--
+-- 'marketo', 'connectorMetadata_marketo' - The connector metadata specific to Marketo.
+--
+-- 'redshift', 'connectorMetadata_redshift' - The connector metadata specific to Amazon Redshift.
+--
+-- 's3', 'connectorMetadata_s3' - The connector metadata specific to Amazon S3.
+--
+-- 'sAPOData', 'connectorMetadata_sAPOData' - Undocumented member.
+--
+-- 'salesforce', 'connectorMetadata_salesforce' - The connector metadata specific to Salesforce.
+--
+-- 'serviceNow', 'connectorMetadata_serviceNow' - The connector metadata specific to ServiceNow.
+--
+-- 'singular', 'connectorMetadata_singular' - The connector metadata specific to Singular.
+--
+-- 'slack', 'connectorMetadata_slack' - The connector metadata specific to Slack.
+--
+-- 'snowflake', 'connectorMetadata_snowflake' - The connector metadata specific to Snowflake.
+--
+-- 'trendmicro', 'connectorMetadata_trendmicro' - The connector metadata specific to Trend Micro.
+--
+-- 'upsolver', 'connectorMetadata_upsolver' - The connector metadata specific to Upsolver.
+--
+-- 'veeva', 'connectorMetadata_veeva' - The connector metadata specific to Veeva.
+--
+-- 'zendesk', 'connectorMetadata_zendesk' - The connector metadata specific to Zendesk.
+newConnectorMetadata ::
+  ConnectorMetadata
+newConnectorMetadata =
+  ConnectorMetadata'
+    { amplitude = Prelude.Nothing,
+      customerProfiles = Prelude.Nothing,
+      datadog = Prelude.Nothing,
+      dynatrace = Prelude.Nothing,
+      eventBridge = Prelude.Nothing,
+      googleAnalytics = Prelude.Nothing,
+      honeycode = Prelude.Nothing,
+      inforNexus = Prelude.Nothing,
+      marketo = Prelude.Nothing,
+      redshift = Prelude.Nothing,
+      s3 = Prelude.Nothing,
+      sAPOData = Prelude.Nothing,
+      salesforce = Prelude.Nothing,
+      serviceNow = Prelude.Nothing,
+      singular = Prelude.Nothing,
+      slack = Prelude.Nothing,
+      snowflake = Prelude.Nothing,
+      trendmicro = Prelude.Nothing,
+      upsolver = Prelude.Nothing,
+      veeva = Prelude.Nothing,
+      zendesk = Prelude.Nothing
+    }
+
+-- | The connector metadata specific to Amplitude.
+connectorMetadata_amplitude :: Lens.Lens' ConnectorMetadata (Prelude.Maybe AmplitudeMetadata)
+connectorMetadata_amplitude = Lens.lens (\ConnectorMetadata' {amplitude} -> amplitude) (\s@ConnectorMetadata' {} a -> s {amplitude = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Amazon Connect Customer Profiles.
+connectorMetadata_customerProfiles :: Lens.Lens' ConnectorMetadata (Prelude.Maybe CustomerProfilesMetadata)
+connectorMetadata_customerProfiles = Lens.lens (\ConnectorMetadata' {customerProfiles} -> customerProfiles) (\s@ConnectorMetadata' {} a -> s {customerProfiles = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Datadog.
+connectorMetadata_datadog :: Lens.Lens' ConnectorMetadata (Prelude.Maybe DatadogMetadata)
+connectorMetadata_datadog = Lens.lens (\ConnectorMetadata' {datadog} -> datadog) (\s@ConnectorMetadata' {} a -> s {datadog = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Dynatrace.
+connectorMetadata_dynatrace :: Lens.Lens' ConnectorMetadata (Prelude.Maybe DynatraceMetadata)
+connectorMetadata_dynatrace = Lens.lens (\ConnectorMetadata' {dynatrace} -> dynatrace) (\s@ConnectorMetadata' {} a -> s {dynatrace = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Amazon EventBridge.
+connectorMetadata_eventBridge :: Lens.Lens' ConnectorMetadata (Prelude.Maybe EventBridgeMetadata)
+connectorMetadata_eventBridge = Lens.lens (\ConnectorMetadata' {eventBridge} -> eventBridge) (\s@ConnectorMetadata' {} a -> s {eventBridge = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Google Analytics.
+connectorMetadata_googleAnalytics :: Lens.Lens' ConnectorMetadata (Prelude.Maybe GoogleAnalyticsMetadata)
+connectorMetadata_googleAnalytics = Lens.lens (\ConnectorMetadata' {googleAnalytics} -> googleAnalytics) (\s@ConnectorMetadata' {} a -> s {googleAnalytics = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Amazon Honeycode.
+connectorMetadata_honeycode :: Lens.Lens' ConnectorMetadata (Prelude.Maybe HoneycodeMetadata)
+connectorMetadata_honeycode = Lens.lens (\ConnectorMetadata' {honeycode} -> honeycode) (\s@ConnectorMetadata' {} a -> s {honeycode = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Infor Nexus.
+connectorMetadata_inforNexus :: Lens.Lens' ConnectorMetadata (Prelude.Maybe InforNexusMetadata)
+connectorMetadata_inforNexus = Lens.lens (\ConnectorMetadata' {inforNexus} -> inforNexus) (\s@ConnectorMetadata' {} a -> s {inforNexus = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Marketo.
+connectorMetadata_marketo :: Lens.Lens' ConnectorMetadata (Prelude.Maybe MarketoMetadata)
+connectorMetadata_marketo = Lens.lens (\ConnectorMetadata' {marketo} -> marketo) (\s@ConnectorMetadata' {} a -> s {marketo = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Amazon Redshift.
+connectorMetadata_redshift :: Lens.Lens' ConnectorMetadata (Prelude.Maybe RedshiftMetadata)
+connectorMetadata_redshift = Lens.lens (\ConnectorMetadata' {redshift} -> redshift) (\s@ConnectorMetadata' {} a -> s {redshift = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Amazon S3.
+connectorMetadata_s3 :: Lens.Lens' ConnectorMetadata (Prelude.Maybe S3Metadata)
+connectorMetadata_s3 = Lens.lens (\ConnectorMetadata' {s3} -> s3) (\s@ConnectorMetadata' {} a -> s {s3 = a} :: ConnectorMetadata)
+
+-- | Undocumented member.
+connectorMetadata_sAPOData :: Lens.Lens' ConnectorMetadata (Prelude.Maybe SAPODataMetadata)
+connectorMetadata_sAPOData = Lens.lens (\ConnectorMetadata' {sAPOData} -> sAPOData) (\s@ConnectorMetadata' {} a -> s {sAPOData = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Salesforce.
+connectorMetadata_salesforce :: Lens.Lens' ConnectorMetadata (Prelude.Maybe SalesforceMetadata)
+connectorMetadata_salesforce = Lens.lens (\ConnectorMetadata' {salesforce} -> salesforce) (\s@ConnectorMetadata' {} a -> s {salesforce = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to ServiceNow.
+connectorMetadata_serviceNow :: Lens.Lens' ConnectorMetadata (Prelude.Maybe ServiceNowMetadata)
+connectorMetadata_serviceNow = Lens.lens (\ConnectorMetadata' {serviceNow} -> serviceNow) (\s@ConnectorMetadata' {} a -> s {serviceNow = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Singular.
+connectorMetadata_singular :: Lens.Lens' ConnectorMetadata (Prelude.Maybe SingularMetadata)
+connectorMetadata_singular = Lens.lens (\ConnectorMetadata' {singular} -> singular) (\s@ConnectorMetadata' {} a -> s {singular = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Slack.
+connectorMetadata_slack :: Lens.Lens' ConnectorMetadata (Prelude.Maybe SlackMetadata)
+connectorMetadata_slack = Lens.lens (\ConnectorMetadata' {slack} -> slack) (\s@ConnectorMetadata' {} a -> s {slack = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Snowflake.
+connectorMetadata_snowflake :: Lens.Lens' ConnectorMetadata (Prelude.Maybe SnowflakeMetadata)
+connectorMetadata_snowflake = Lens.lens (\ConnectorMetadata' {snowflake} -> snowflake) (\s@ConnectorMetadata' {} a -> s {snowflake = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Trend Micro.
+connectorMetadata_trendmicro :: Lens.Lens' ConnectorMetadata (Prelude.Maybe TrendmicroMetadata)
+connectorMetadata_trendmicro = Lens.lens (\ConnectorMetadata' {trendmicro} -> trendmicro) (\s@ConnectorMetadata' {} a -> s {trendmicro = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Upsolver.
+connectorMetadata_upsolver :: Lens.Lens' ConnectorMetadata (Prelude.Maybe UpsolverMetadata)
+connectorMetadata_upsolver = Lens.lens (\ConnectorMetadata' {upsolver} -> upsolver) (\s@ConnectorMetadata' {} a -> s {upsolver = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Veeva.
+connectorMetadata_veeva :: Lens.Lens' ConnectorMetadata (Prelude.Maybe VeevaMetadata)
+connectorMetadata_veeva = Lens.lens (\ConnectorMetadata' {veeva} -> veeva) (\s@ConnectorMetadata' {} a -> s {veeva = a} :: ConnectorMetadata)
+
+-- | The connector metadata specific to Zendesk.
+connectorMetadata_zendesk :: Lens.Lens' ConnectorMetadata (Prelude.Maybe ZendeskMetadata)
+connectorMetadata_zendesk = Lens.lens (\ConnectorMetadata' {zendesk} -> zendesk) (\s@ConnectorMetadata' {} a -> s {zendesk = a} :: ConnectorMetadata)
+
+instance Data.FromJSON ConnectorMetadata where
+  parseJSON =
+    Data.withObject
+      "ConnectorMetadata"
+      ( \x ->
+          ConnectorMetadata'
+            Prelude.<$> (x Data..:? "Amplitude")
+            Prelude.<*> (x Data..:? "CustomerProfiles")
+            Prelude.<*> (x Data..:? "Datadog")
+            Prelude.<*> (x Data..:? "Dynatrace")
+            Prelude.<*> (x Data..:? "EventBridge")
+            Prelude.<*> (x Data..:? "GoogleAnalytics")
+            Prelude.<*> (x Data..:? "Honeycode")
+            Prelude.<*> (x Data..:? "InforNexus")
+            Prelude.<*> (x Data..:? "Marketo")
+            Prelude.<*> (x Data..:? "Redshift")
+            Prelude.<*> (x Data..:? "S3")
+            Prelude.<*> (x Data..:? "SAPOData")
+            Prelude.<*> (x Data..:? "Salesforce")
+            Prelude.<*> (x Data..:? "ServiceNow")
+            Prelude.<*> (x Data..:? "Singular")
+            Prelude.<*> (x Data..:? "Slack")
+            Prelude.<*> (x Data..:? "Snowflake")
+            Prelude.<*> (x Data..:? "Trendmicro")
+            Prelude.<*> (x Data..:? "Upsolver")
+            Prelude.<*> (x Data..:? "Veeva")
+            Prelude.<*> (x Data..:? "Zendesk")
+      )
+
+instance Prelude.Hashable ConnectorMetadata where
+  hashWithSalt _salt ConnectorMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` amplitude
+      `Prelude.hashWithSalt` customerProfiles
+      `Prelude.hashWithSalt` datadog
+      `Prelude.hashWithSalt` dynatrace
+      `Prelude.hashWithSalt` eventBridge
+      `Prelude.hashWithSalt` googleAnalytics
+      `Prelude.hashWithSalt` honeycode
+      `Prelude.hashWithSalt` inforNexus
+      `Prelude.hashWithSalt` marketo
+      `Prelude.hashWithSalt` redshift
+      `Prelude.hashWithSalt` s3
+      `Prelude.hashWithSalt` sAPOData
+      `Prelude.hashWithSalt` salesforce
+      `Prelude.hashWithSalt` serviceNow
+      `Prelude.hashWithSalt` singular
+      `Prelude.hashWithSalt` slack
+      `Prelude.hashWithSalt` snowflake
+      `Prelude.hashWithSalt` trendmicro
+      `Prelude.hashWithSalt` upsolver
+      `Prelude.hashWithSalt` veeva
+      `Prelude.hashWithSalt` zendesk
+
+instance Prelude.NFData ConnectorMetadata where
+  rnf ConnectorMetadata' {..} =
+    Prelude.rnf amplitude
+      `Prelude.seq` Prelude.rnf customerProfiles
+      `Prelude.seq` Prelude.rnf datadog
+      `Prelude.seq` Prelude.rnf dynatrace
+      `Prelude.seq` Prelude.rnf eventBridge
+      `Prelude.seq` Prelude.rnf googleAnalytics
+      `Prelude.seq` Prelude.rnf honeycode
+      `Prelude.seq` Prelude.rnf inforNexus
+      `Prelude.seq` Prelude.rnf marketo
+      `Prelude.seq` Prelude.rnf redshift
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf sAPOData
+      `Prelude.seq` Prelude.rnf salesforce
+      `Prelude.seq` Prelude.rnf serviceNow
+      `Prelude.seq` Prelude.rnf singular
+      `Prelude.seq` Prelude.rnf slack
+      `Prelude.seq` Prelude.rnf snowflake
+      `Prelude.seq` Prelude.rnf trendmicro
+      `Prelude.seq` Prelude.rnf upsolver
+      `Prelude.seq` Prelude.rnf veeva
+      `Prelude.seq` Prelude.rnf zendesk
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorOAuthRequest.hs b/gen/Amazonka/AppFlow/Types/ConnectorOAuthRequest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorOAuthRequest.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorOAuthRequest
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorOAuthRequest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Used by select connectors for which the OAuth workflow is supported,
+-- such as Salesforce, Google Analytics, Marketo, Zendesk, and Slack.
+--
+-- /See:/ 'newConnectorOAuthRequest' smart constructor.
+data ConnectorOAuthRequest = ConnectorOAuthRequest'
+  { -- | The code provided by the connector when it has been authenticated via
+    -- the connected app.
+    authCode :: Prelude.Maybe Prelude.Text,
+    -- | The URL to which the authentication server redirects the browser after
+    -- authorization has been granted.
+    redirectUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorOAuthRequest' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'authCode', 'connectorOAuthRequest_authCode' - The code provided by the connector when it has been authenticated via
+-- the connected app.
+--
+-- 'redirectUri', 'connectorOAuthRequest_redirectUri' - The URL to which the authentication server redirects the browser after
+-- authorization has been granted.
+newConnectorOAuthRequest ::
+  ConnectorOAuthRequest
+newConnectorOAuthRequest =
+  ConnectorOAuthRequest'
+    { authCode = Prelude.Nothing,
+      redirectUri = Prelude.Nothing
+    }
+
+-- | The code provided by the connector when it has been authenticated via
+-- the connected app.
+connectorOAuthRequest_authCode :: Lens.Lens' ConnectorOAuthRequest (Prelude.Maybe Prelude.Text)
+connectorOAuthRequest_authCode = Lens.lens (\ConnectorOAuthRequest' {authCode} -> authCode) (\s@ConnectorOAuthRequest' {} a -> s {authCode = a} :: ConnectorOAuthRequest)
+
+-- | The URL to which the authentication server redirects the browser after
+-- authorization has been granted.
+connectorOAuthRequest_redirectUri :: Lens.Lens' ConnectorOAuthRequest (Prelude.Maybe Prelude.Text)
+connectorOAuthRequest_redirectUri = Lens.lens (\ConnectorOAuthRequest' {redirectUri} -> redirectUri) (\s@ConnectorOAuthRequest' {} a -> s {redirectUri = a} :: ConnectorOAuthRequest)
+
+instance Prelude.Hashable ConnectorOAuthRequest where
+  hashWithSalt _salt ConnectorOAuthRequest' {..} =
+    _salt
+      `Prelude.hashWithSalt` authCode
+      `Prelude.hashWithSalt` redirectUri
+
+instance Prelude.NFData ConnectorOAuthRequest where
+  rnf ConnectorOAuthRequest' {..} =
+    Prelude.rnf authCode
+      `Prelude.seq` Prelude.rnf redirectUri
+
+instance Data.ToJSON ConnectorOAuthRequest where
+  toJSON ConnectorOAuthRequest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("authCode" Data..=) Prelude.<$> authCode,
+            ("redirectUri" Data..=) Prelude.<$> redirectUri
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/ConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorOperator.hs
@@ -0,0 +1,296 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorOperator where
+
+import Amazonka.AppFlow.Types.AmplitudeConnectorOperator
+import Amazonka.AppFlow.Types.DatadogConnectorOperator
+import Amazonka.AppFlow.Types.DynatraceConnectorOperator
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorOperator
+import Amazonka.AppFlow.Types.InforNexusConnectorOperator
+import Amazonka.AppFlow.Types.MarketoConnectorOperator
+import Amazonka.AppFlow.Types.Operator
+import Amazonka.AppFlow.Types.S3ConnectorOperator
+import Amazonka.AppFlow.Types.SAPODataConnectorOperator
+import Amazonka.AppFlow.Types.SalesforceConnectorOperator
+import Amazonka.AppFlow.Types.ServiceNowConnectorOperator
+import Amazonka.AppFlow.Types.SingularConnectorOperator
+import Amazonka.AppFlow.Types.SlackConnectorOperator
+import Amazonka.AppFlow.Types.TrendmicroConnectorOperator
+import Amazonka.AppFlow.Types.VeevaConnectorOperator
+import Amazonka.AppFlow.Types.ZendeskConnectorOperator
+import qualified 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 operation to be performed on the provided source fields.
+--
+-- /See:/ 'newConnectorOperator' smart constructor.
+data ConnectorOperator = ConnectorOperator'
+  { -- | The operation to be performed on the provided Amplitude source fields.
+    amplitude :: Prelude.Maybe AmplitudeConnectorOperator,
+    -- | Operators supported by the custom connector.
+    customConnector :: Prelude.Maybe Operator,
+    -- | The operation to be performed on the provided Datadog source fields.
+    datadog :: Prelude.Maybe DatadogConnectorOperator,
+    -- | The operation to be performed on the provided Dynatrace source fields.
+    dynatrace :: Prelude.Maybe DynatraceConnectorOperator,
+    -- | The operation to be performed on the provided Google Analytics source
+    -- fields.
+    googleAnalytics :: Prelude.Maybe GoogleAnalyticsConnectorOperator,
+    -- | The operation to be performed on the provided Infor Nexus source fields.
+    inforNexus :: Prelude.Maybe InforNexusConnectorOperator,
+    -- | The operation to be performed on the provided Marketo source fields.
+    marketo :: Prelude.Maybe MarketoConnectorOperator,
+    -- | The operation to be performed on the provided Amazon S3 source fields.
+    s3 :: Prelude.Maybe S3ConnectorOperator,
+    -- | The operation to be performed on the provided SAPOData source fields.
+    sAPOData :: Prelude.Maybe SAPODataConnectorOperator,
+    -- | The operation to be performed on the provided Salesforce source fields.
+    salesforce :: Prelude.Maybe SalesforceConnectorOperator,
+    -- | The operation to be performed on the provided ServiceNow source fields.
+    serviceNow :: Prelude.Maybe ServiceNowConnectorOperator,
+    -- | The operation to be performed on the provided Singular source fields.
+    singular :: Prelude.Maybe SingularConnectorOperator,
+    -- | The operation to be performed on the provided Slack source fields.
+    slack :: Prelude.Maybe SlackConnectorOperator,
+    -- | The operation to be performed on the provided Trend Micro source fields.
+    trendmicro :: Prelude.Maybe TrendmicroConnectorOperator,
+    -- | The operation to be performed on the provided Veeva source fields.
+    veeva :: Prelude.Maybe VeevaConnectorOperator,
+    -- | The operation to be performed on the provided Zendesk source fields.
+    zendesk :: Prelude.Maybe ZendeskConnectorOperator
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorOperator' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amplitude', 'connectorOperator_amplitude' - The operation to be performed on the provided Amplitude source fields.
+--
+-- 'customConnector', 'connectorOperator_customConnector' - Operators supported by the custom connector.
+--
+-- 'datadog', 'connectorOperator_datadog' - The operation to be performed on the provided Datadog source fields.
+--
+-- 'dynatrace', 'connectorOperator_dynatrace' - The operation to be performed on the provided Dynatrace source fields.
+--
+-- 'googleAnalytics', 'connectorOperator_googleAnalytics' - The operation to be performed on the provided Google Analytics source
+-- fields.
+--
+-- 'inforNexus', 'connectorOperator_inforNexus' - The operation to be performed on the provided Infor Nexus source fields.
+--
+-- 'marketo', 'connectorOperator_marketo' - The operation to be performed on the provided Marketo source fields.
+--
+-- 's3', 'connectorOperator_s3' - The operation to be performed on the provided Amazon S3 source fields.
+--
+-- 'sAPOData', 'connectorOperator_sAPOData' - The operation to be performed on the provided SAPOData source fields.
+--
+-- 'salesforce', 'connectorOperator_salesforce' - The operation to be performed on the provided Salesforce source fields.
+--
+-- 'serviceNow', 'connectorOperator_serviceNow' - The operation to be performed on the provided ServiceNow source fields.
+--
+-- 'singular', 'connectorOperator_singular' - The operation to be performed on the provided Singular source fields.
+--
+-- 'slack', 'connectorOperator_slack' - The operation to be performed on the provided Slack source fields.
+--
+-- 'trendmicro', 'connectorOperator_trendmicro' - The operation to be performed on the provided Trend Micro source fields.
+--
+-- 'veeva', 'connectorOperator_veeva' - The operation to be performed on the provided Veeva source fields.
+--
+-- 'zendesk', 'connectorOperator_zendesk' - The operation to be performed on the provided Zendesk source fields.
+newConnectorOperator ::
+  ConnectorOperator
+newConnectorOperator =
+  ConnectorOperator'
+    { amplitude = Prelude.Nothing,
+      customConnector = Prelude.Nothing,
+      datadog = Prelude.Nothing,
+      dynatrace = Prelude.Nothing,
+      googleAnalytics = Prelude.Nothing,
+      inforNexus = Prelude.Nothing,
+      marketo = Prelude.Nothing,
+      s3 = Prelude.Nothing,
+      sAPOData = Prelude.Nothing,
+      salesforce = Prelude.Nothing,
+      serviceNow = Prelude.Nothing,
+      singular = Prelude.Nothing,
+      slack = Prelude.Nothing,
+      trendmicro = Prelude.Nothing,
+      veeva = Prelude.Nothing,
+      zendesk = Prelude.Nothing
+    }
+
+-- | The operation to be performed on the provided Amplitude source fields.
+connectorOperator_amplitude :: Lens.Lens' ConnectorOperator (Prelude.Maybe AmplitudeConnectorOperator)
+connectorOperator_amplitude = Lens.lens (\ConnectorOperator' {amplitude} -> amplitude) (\s@ConnectorOperator' {} a -> s {amplitude = a} :: ConnectorOperator)
+
+-- | Operators supported by the custom connector.
+connectorOperator_customConnector :: Lens.Lens' ConnectorOperator (Prelude.Maybe Operator)
+connectorOperator_customConnector = Lens.lens (\ConnectorOperator' {customConnector} -> customConnector) (\s@ConnectorOperator' {} a -> s {customConnector = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Datadog source fields.
+connectorOperator_datadog :: Lens.Lens' ConnectorOperator (Prelude.Maybe DatadogConnectorOperator)
+connectorOperator_datadog = Lens.lens (\ConnectorOperator' {datadog} -> datadog) (\s@ConnectorOperator' {} a -> s {datadog = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Dynatrace source fields.
+connectorOperator_dynatrace :: Lens.Lens' ConnectorOperator (Prelude.Maybe DynatraceConnectorOperator)
+connectorOperator_dynatrace = Lens.lens (\ConnectorOperator' {dynatrace} -> dynatrace) (\s@ConnectorOperator' {} a -> s {dynatrace = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Google Analytics source
+-- fields.
+connectorOperator_googleAnalytics :: Lens.Lens' ConnectorOperator (Prelude.Maybe GoogleAnalyticsConnectorOperator)
+connectorOperator_googleAnalytics = Lens.lens (\ConnectorOperator' {googleAnalytics} -> googleAnalytics) (\s@ConnectorOperator' {} a -> s {googleAnalytics = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Infor Nexus source fields.
+connectorOperator_inforNexus :: Lens.Lens' ConnectorOperator (Prelude.Maybe InforNexusConnectorOperator)
+connectorOperator_inforNexus = Lens.lens (\ConnectorOperator' {inforNexus} -> inforNexus) (\s@ConnectorOperator' {} a -> s {inforNexus = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Marketo source fields.
+connectorOperator_marketo :: Lens.Lens' ConnectorOperator (Prelude.Maybe MarketoConnectorOperator)
+connectorOperator_marketo = Lens.lens (\ConnectorOperator' {marketo} -> marketo) (\s@ConnectorOperator' {} a -> s {marketo = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Amazon S3 source fields.
+connectorOperator_s3 :: Lens.Lens' ConnectorOperator (Prelude.Maybe S3ConnectorOperator)
+connectorOperator_s3 = Lens.lens (\ConnectorOperator' {s3} -> s3) (\s@ConnectorOperator' {} a -> s {s3 = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided SAPOData source fields.
+connectorOperator_sAPOData :: Lens.Lens' ConnectorOperator (Prelude.Maybe SAPODataConnectorOperator)
+connectorOperator_sAPOData = Lens.lens (\ConnectorOperator' {sAPOData} -> sAPOData) (\s@ConnectorOperator' {} a -> s {sAPOData = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Salesforce source fields.
+connectorOperator_salesforce :: Lens.Lens' ConnectorOperator (Prelude.Maybe SalesforceConnectorOperator)
+connectorOperator_salesforce = Lens.lens (\ConnectorOperator' {salesforce} -> salesforce) (\s@ConnectorOperator' {} a -> s {salesforce = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided ServiceNow source fields.
+connectorOperator_serviceNow :: Lens.Lens' ConnectorOperator (Prelude.Maybe ServiceNowConnectorOperator)
+connectorOperator_serviceNow = Lens.lens (\ConnectorOperator' {serviceNow} -> serviceNow) (\s@ConnectorOperator' {} a -> s {serviceNow = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Singular source fields.
+connectorOperator_singular :: Lens.Lens' ConnectorOperator (Prelude.Maybe SingularConnectorOperator)
+connectorOperator_singular = Lens.lens (\ConnectorOperator' {singular} -> singular) (\s@ConnectorOperator' {} a -> s {singular = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Slack source fields.
+connectorOperator_slack :: Lens.Lens' ConnectorOperator (Prelude.Maybe SlackConnectorOperator)
+connectorOperator_slack = Lens.lens (\ConnectorOperator' {slack} -> slack) (\s@ConnectorOperator' {} a -> s {slack = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Trend Micro source fields.
+connectorOperator_trendmicro :: Lens.Lens' ConnectorOperator (Prelude.Maybe TrendmicroConnectorOperator)
+connectorOperator_trendmicro = Lens.lens (\ConnectorOperator' {trendmicro} -> trendmicro) (\s@ConnectorOperator' {} a -> s {trendmicro = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Veeva source fields.
+connectorOperator_veeva :: Lens.Lens' ConnectorOperator (Prelude.Maybe VeevaConnectorOperator)
+connectorOperator_veeva = Lens.lens (\ConnectorOperator' {veeva} -> veeva) (\s@ConnectorOperator' {} a -> s {veeva = a} :: ConnectorOperator)
+
+-- | The operation to be performed on the provided Zendesk source fields.
+connectorOperator_zendesk :: Lens.Lens' ConnectorOperator (Prelude.Maybe ZendeskConnectorOperator)
+connectorOperator_zendesk = Lens.lens (\ConnectorOperator' {zendesk} -> zendesk) (\s@ConnectorOperator' {} a -> s {zendesk = a} :: ConnectorOperator)
+
+instance Data.FromJSON ConnectorOperator where
+  parseJSON =
+    Data.withObject
+      "ConnectorOperator"
+      ( \x ->
+          ConnectorOperator'
+            Prelude.<$> (x Data..:? "Amplitude")
+            Prelude.<*> (x Data..:? "CustomConnector")
+            Prelude.<*> (x Data..:? "Datadog")
+            Prelude.<*> (x Data..:? "Dynatrace")
+            Prelude.<*> (x Data..:? "GoogleAnalytics")
+            Prelude.<*> (x Data..:? "InforNexus")
+            Prelude.<*> (x Data..:? "Marketo")
+            Prelude.<*> (x Data..:? "S3")
+            Prelude.<*> (x Data..:? "SAPOData")
+            Prelude.<*> (x Data..:? "Salesforce")
+            Prelude.<*> (x Data..:? "ServiceNow")
+            Prelude.<*> (x Data..:? "Singular")
+            Prelude.<*> (x Data..:? "Slack")
+            Prelude.<*> (x Data..:? "Trendmicro")
+            Prelude.<*> (x Data..:? "Veeva")
+            Prelude.<*> (x Data..:? "Zendesk")
+      )
+
+instance Prelude.Hashable ConnectorOperator where
+  hashWithSalt _salt ConnectorOperator' {..} =
+    _salt
+      `Prelude.hashWithSalt` amplitude
+      `Prelude.hashWithSalt` customConnector
+      `Prelude.hashWithSalt` datadog
+      `Prelude.hashWithSalt` dynatrace
+      `Prelude.hashWithSalt` googleAnalytics
+      `Prelude.hashWithSalt` inforNexus
+      `Prelude.hashWithSalt` marketo
+      `Prelude.hashWithSalt` s3
+      `Prelude.hashWithSalt` sAPOData
+      `Prelude.hashWithSalt` salesforce
+      `Prelude.hashWithSalt` serviceNow
+      `Prelude.hashWithSalt` singular
+      `Prelude.hashWithSalt` slack
+      `Prelude.hashWithSalt` trendmicro
+      `Prelude.hashWithSalt` veeva
+      `Prelude.hashWithSalt` zendesk
+
+instance Prelude.NFData ConnectorOperator where
+  rnf ConnectorOperator' {..} =
+    Prelude.rnf amplitude
+      `Prelude.seq` Prelude.rnf customConnector
+      `Prelude.seq` Prelude.rnf datadog
+      `Prelude.seq` Prelude.rnf dynatrace
+      `Prelude.seq` Prelude.rnf googleAnalytics
+      `Prelude.seq` Prelude.rnf inforNexus
+      `Prelude.seq` Prelude.rnf marketo
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf sAPOData
+      `Prelude.seq` Prelude.rnf salesforce
+      `Prelude.seq` Prelude.rnf serviceNow
+      `Prelude.seq` Prelude.rnf singular
+      `Prelude.seq` Prelude.rnf slack
+      `Prelude.seq` Prelude.rnf trendmicro
+      `Prelude.seq` Prelude.rnf veeva
+      `Prelude.seq` Prelude.rnf zendesk
+
+instance Data.ToJSON ConnectorOperator where
+  toJSON ConnectorOperator' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Amplitude" Data..=) Prelude.<$> amplitude,
+            ("CustomConnector" Data..=)
+              Prelude.<$> customConnector,
+            ("Datadog" Data..=) Prelude.<$> datadog,
+            ("Dynatrace" Data..=) Prelude.<$> dynatrace,
+            ("GoogleAnalytics" Data..=)
+              Prelude.<$> googleAnalytics,
+            ("InforNexus" Data..=) Prelude.<$> inforNexus,
+            ("Marketo" Data..=) Prelude.<$> marketo,
+            ("S3" Data..=) Prelude.<$> s3,
+            ("SAPOData" Data..=) Prelude.<$> sAPOData,
+            ("Salesforce" Data..=) Prelude.<$> salesforce,
+            ("ServiceNow" Data..=) Prelude.<$> serviceNow,
+            ("Singular" Data..=) Prelude.<$> singular,
+            ("Slack" Data..=) Prelude.<$> slack,
+            ("Trendmicro" Data..=) Prelude.<$> trendmicro,
+            ("Veeva" Data..=) Prelude.<$> veeva,
+            ("Zendesk" Data..=) Prelude.<$> zendesk
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorProfile.hs b/gen/Amazonka/AppFlow/Types/ConnectorProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorProfile.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorProfile where
+
+import Amazonka.AppFlow.Types.ConnectionMode
+import Amazonka.AppFlow.Types.ConnectorProfileProperties
+import Amazonka.AppFlow.Types.ConnectorType
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningState
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes an instance of a connector. This includes the provided name,
+-- credentials ARN, connection-mode, and so on. To keep the API intuitive
+-- and extensible, the fields that are common to all types of connector
+-- profiles are explicitly specified at the top level. The rest of the
+-- connector-specific properties are available via the
+-- @connectorProfileProperties@ field.
+--
+-- /See:/ 'newConnectorProfile' smart constructor.
+data ConnectorProfile = ConnectorProfile'
+  { -- | Indicates the connection mode and if it is public or private.
+    connectionMode :: Prelude.Maybe ConnectionMode,
+    -- | The label for the connector profile being created.
+    connectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the connector profile.
+    connectorProfileArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. The name is unique for each
+    -- @ConnectorProfile@ in the Amazon Web Services account.
+    connectorProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The connector-specific properties of the profile configuration.
+    connectorProfileProperties :: Prelude.Maybe ConnectorProfileProperties,
+    -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorType :: Prelude.Maybe ConnectorType,
+    -- | Specifies when the connector profile was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the connector profile credentials.
+    credentialsArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies when the connector profile was last updated.
+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the private connection provisioning state.
+    privateConnectionProvisioningState :: Prelude.Maybe PrivateConnectionProvisioningState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorProfile' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectionMode', 'connectorProfile_connectionMode' - Indicates the connection mode and if it is public or private.
+--
+-- 'connectorLabel', 'connectorProfile_connectorLabel' - The label for the connector profile being created.
+--
+-- 'connectorProfileArn', 'connectorProfile_connectorProfileArn' - The Amazon Resource Name (ARN) of the connector profile.
+--
+-- 'connectorProfileName', 'connectorProfile_connectorProfileName' - The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+--
+-- 'connectorProfileProperties', 'connectorProfile_connectorProfileProperties' - The connector-specific properties of the profile configuration.
+--
+-- 'connectorType', 'connectorProfile_connectorType' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'createdAt', 'connectorProfile_createdAt' - Specifies when the connector profile was created.
+--
+-- 'credentialsArn', 'connectorProfile_credentialsArn' - The Amazon Resource Name (ARN) of the connector profile credentials.
+--
+-- 'lastUpdatedAt', 'connectorProfile_lastUpdatedAt' - Specifies when the connector profile was last updated.
+--
+-- 'privateConnectionProvisioningState', 'connectorProfile_privateConnectionProvisioningState' - Specifies the private connection provisioning state.
+newConnectorProfile ::
+  ConnectorProfile
+newConnectorProfile =
+  ConnectorProfile'
+    { connectionMode = Prelude.Nothing,
+      connectorLabel = Prelude.Nothing,
+      connectorProfileArn = Prelude.Nothing,
+      connectorProfileName = Prelude.Nothing,
+      connectorProfileProperties = Prelude.Nothing,
+      connectorType = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      credentialsArn = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      privateConnectionProvisioningState = Prelude.Nothing
+    }
+
+-- | Indicates the connection mode and if it is public or private.
+connectorProfile_connectionMode :: Lens.Lens' ConnectorProfile (Prelude.Maybe ConnectionMode)
+connectorProfile_connectionMode = Lens.lens (\ConnectorProfile' {connectionMode} -> connectionMode) (\s@ConnectorProfile' {} a -> s {connectionMode = a} :: ConnectorProfile)
+
+-- | The label for the connector profile being created.
+connectorProfile_connectorLabel :: Lens.Lens' ConnectorProfile (Prelude.Maybe Prelude.Text)
+connectorProfile_connectorLabel = Lens.lens (\ConnectorProfile' {connectorLabel} -> connectorLabel) (\s@ConnectorProfile' {} a -> s {connectorLabel = a} :: ConnectorProfile)
+
+-- | The Amazon Resource Name (ARN) of the connector profile.
+connectorProfile_connectorProfileArn :: Lens.Lens' ConnectorProfile (Prelude.Maybe Prelude.Text)
+connectorProfile_connectorProfileArn = Lens.lens (\ConnectorProfile' {connectorProfileArn} -> connectorProfileArn) (\s@ConnectorProfile' {} a -> s {connectorProfileArn = a} :: ConnectorProfile)
+
+-- | The name of the connector profile. The name is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+connectorProfile_connectorProfileName :: Lens.Lens' ConnectorProfile (Prelude.Maybe Prelude.Text)
+connectorProfile_connectorProfileName = Lens.lens (\ConnectorProfile' {connectorProfileName} -> connectorProfileName) (\s@ConnectorProfile' {} a -> s {connectorProfileName = a} :: ConnectorProfile)
+
+-- | The connector-specific properties of the profile configuration.
+connectorProfile_connectorProfileProperties :: Lens.Lens' ConnectorProfile (Prelude.Maybe ConnectorProfileProperties)
+connectorProfile_connectorProfileProperties = Lens.lens (\ConnectorProfile' {connectorProfileProperties} -> connectorProfileProperties) (\s@ConnectorProfile' {} a -> s {connectorProfileProperties = a} :: ConnectorProfile)
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+connectorProfile_connectorType :: Lens.Lens' ConnectorProfile (Prelude.Maybe ConnectorType)
+connectorProfile_connectorType = Lens.lens (\ConnectorProfile' {connectorType} -> connectorType) (\s@ConnectorProfile' {} a -> s {connectorType = a} :: ConnectorProfile)
+
+-- | Specifies when the connector profile was created.
+connectorProfile_createdAt :: Lens.Lens' ConnectorProfile (Prelude.Maybe Prelude.UTCTime)
+connectorProfile_createdAt = Lens.lens (\ConnectorProfile' {createdAt} -> createdAt) (\s@ConnectorProfile' {} a -> s {createdAt = a} :: ConnectorProfile) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the connector profile credentials.
+connectorProfile_credentialsArn :: Lens.Lens' ConnectorProfile (Prelude.Maybe Prelude.Text)
+connectorProfile_credentialsArn = Lens.lens (\ConnectorProfile' {credentialsArn} -> credentialsArn) (\s@ConnectorProfile' {} a -> s {credentialsArn = a} :: ConnectorProfile)
+
+-- | Specifies when the connector profile was last updated.
+connectorProfile_lastUpdatedAt :: Lens.Lens' ConnectorProfile (Prelude.Maybe Prelude.UTCTime)
+connectorProfile_lastUpdatedAt = Lens.lens (\ConnectorProfile' {lastUpdatedAt} -> lastUpdatedAt) (\s@ConnectorProfile' {} a -> s {lastUpdatedAt = a} :: ConnectorProfile) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the private connection provisioning state.
+connectorProfile_privateConnectionProvisioningState :: Lens.Lens' ConnectorProfile (Prelude.Maybe PrivateConnectionProvisioningState)
+connectorProfile_privateConnectionProvisioningState = Lens.lens (\ConnectorProfile' {privateConnectionProvisioningState} -> privateConnectionProvisioningState) (\s@ConnectorProfile' {} a -> s {privateConnectionProvisioningState = a} :: ConnectorProfile)
+
+instance Data.FromJSON ConnectorProfile where
+  parseJSON =
+    Data.withObject
+      "ConnectorProfile"
+      ( \x ->
+          ConnectorProfile'
+            Prelude.<$> (x Data..:? "connectionMode")
+            Prelude.<*> (x Data..:? "connectorLabel")
+            Prelude.<*> (x Data..:? "connectorProfileArn")
+            Prelude.<*> (x Data..:? "connectorProfileName")
+            Prelude.<*> (x Data..:? "connectorProfileProperties")
+            Prelude.<*> (x Data..:? "connectorType")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "credentialsArn")
+            Prelude.<*> (x Data..:? "lastUpdatedAt")
+            Prelude.<*> (x Data..:? "privateConnectionProvisioningState")
+      )
+
+instance Prelude.Hashable ConnectorProfile where
+  hashWithSalt _salt ConnectorProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectionMode
+      `Prelude.hashWithSalt` connectorLabel
+      `Prelude.hashWithSalt` connectorProfileArn
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` connectorProfileProperties
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` credentialsArn
+      `Prelude.hashWithSalt` lastUpdatedAt
+      `Prelude.hashWithSalt` privateConnectionProvisioningState
+
+instance Prelude.NFData ConnectorProfile where
+  rnf ConnectorProfile' {..} =
+    Prelude.rnf connectionMode
+      `Prelude.seq` Prelude.rnf connectorLabel
+      `Prelude.seq` Prelude.rnf connectorProfileArn
+      `Prelude.seq` Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf connectorProfileProperties
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf credentialsArn
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf privateConnectionProvisioningState
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorProfileConfig.hs b/gen/Amazonka/AppFlow/Types/ConnectorProfileConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorProfileConfig.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.AppFlow.Types.ConnectorProfileConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorProfileConfig where
+
+import Amazonka.AppFlow.Types.ConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ConnectorProfileProperties
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Defines the connector-specific configuration and credentials for the
+-- connector profile.
+--
+-- /See:/ 'newConnectorProfileConfig' smart constructor.
+data ConnectorProfileConfig = ConnectorProfileConfig'
+  { -- | The connector-specific credentials required by each connector.
+    connectorProfileCredentials :: Prelude.Maybe ConnectorProfileCredentials,
+    -- | The connector-specific properties of the profile configuration.
+    connectorProfileProperties :: ConnectorProfileProperties
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorProfileConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorProfileCredentials', 'connectorProfileConfig_connectorProfileCredentials' - The connector-specific credentials required by each connector.
+--
+-- 'connectorProfileProperties', 'connectorProfileConfig_connectorProfileProperties' - The connector-specific properties of the profile configuration.
+newConnectorProfileConfig ::
+  -- | 'connectorProfileProperties'
+  ConnectorProfileProperties ->
+  ConnectorProfileConfig
+newConnectorProfileConfig
+  pConnectorProfileProperties_ =
+    ConnectorProfileConfig'
+      { connectorProfileCredentials =
+          Prelude.Nothing,
+        connectorProfileProperties =
+          pConnectorProfileProperties_
+      }
+
+-- | The connector-specific credentials required by each connector.
+connectorProfileConfig_connectorProfileCredentials :: Lens.Lens' ConnectorProfileConfig (Prelude.Maybe ConnectorProfileCredentials)
+connectorProfileConfig_connectorProfileCredentials = Lens.lens (\ConnectorProfileConfig' {connectorProfileCredentials} -> connectorProfileCredentials) (\s@ConnectorProfileConfig' {} a -> s {connectorProfileCredentials = a} :: ConnectorProfileConfig)
+
+-- | The connector-specific properties of the profile configuration.
+connectorProfileConfig_connectorProfileProperties :: Lens.Lens' ConnectorProfileConfig ConnectorProfileProperties
+connectorProfileConfig_connectorProfileProperties = Lens.lens (\ConnectorProfileConfig' {connectorProfileProperties} -> connectorProfileProperties) (\s@ConnectorProfileConfig' {} a -> s {connectorProfileProperties = a} :: ConnectorProfileConfig)
+
+instance Prelude.Hashable ConnectorProfileConfig where
+  hashWithSalt _salt ConnectorProfileConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorProfileCredentials
+      `Prelude.hashWithSalt` connectorProfileProperties
+
+instance Prelude.NFData ConnectorProfileConfig where
+  rnf ConnectorProfileConfig' {..} =
+    Prelude.rnf connectorProfileCredentials
+      `Prelude.seq` Prelude.rnf connectorProfileProperties
+
+instance Data.ToJSON ConnectorProfileConfig where
+  toJSON ConnectorProfileConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorProfileCredentials" Data..=)
+              Prelude.<$> connectorProfileCredentials,
+            Prelude.Just
+              ( "connectorProfileProperties"
+                  Data..= connectorProfileProperties
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/ConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorProfileCredentials.hs
@@ -0,0 +1,294 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.AmplitudeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.CustomConnectorProfileCredentials
+import Amazonka.AppFlow.Types.DatadogConnectorProfileCredentials
+import Amazonka.AppFlow.Types.DynatraceConnectorProfileCredentials
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileCredentials
+import Amazonka.AppFlow.Types.HoneycodeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.InforNexusConnectorProfileCredentials
+import Amazonka.AppFlow.Types.MarketoConnectorProfileCredentials
+import Amazonka.AppFlow.Types.RedshiftConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SAPODataConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SalesforceConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ServiceNowConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SingularConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SlackConnectorProfileCredentials
+import Amazonka.AppFlow.Types.SnowflakeConnectorProfileCredentials
+import Amazonka.AppFlow.Types.TrendmicroConnectorProfileCredentials
+import Amazonka.AppFlow.Types.VeevaConnectorProfileCredentials
+import Amazonka.AppFlow.Types.ZendeskConnectorProfileCredentials
+import qualified 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 connector-specific credentials required by a connector.
+--
+-- /See:/ 'newConnectorProfileCredentials' smart constructor.
+data ConnectorProfileCredentials = ConnectorProfileCredentials'
+  { -- | The connector-specific credentials required when using Amplitude.
+    amplitude :: Prelude.Maybe AmplitudeConnectorProfileCredentials,
+    customConnector :: Prelude.Maybe CustomConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Datadog.
+    datadog :: Prelude.Maybe DatadogConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Dynatrace.
+    dynatrace :: Prelude.Maybe DynatraceConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Google Analytics.
+    googleAnalytics :: Prelude.Maybe GoogleAnalyticsConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Amazon Honeycode.
+    honeycode :: Prelude.Maybe HoneycodeConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Infor Nexus.
+    inforNexus :: Prelude.Maybe InforNexusConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Marketo.
+    marketo :: Prelude.Maybe MarketoConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Amazon Redshift.
+    redshift :: Prelude.Maybe RedshiftConnectorProfileCredentials,
+    sAPOData :: Prelude.Maybe SAPODataConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Salesforce.
+    salesforce :: Prelude.Maybe SalesforceConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using ServiceNow.
+    serviceNow :: Prelude.Maybe ServiceNowConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Singular.
+    singular :: Prelude.Maybe SingularConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Slack.
+    slack :: Prelude.Maybe SlackConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Snowflake.
+    snowflake :: Prelude.Maybe SnowflakeConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Trend Micro.
+    trendmicro :: Prelude.Maybe TrendmicroConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Veeva.
+    veeva :: Prelude.Maybe VeevaConnectorProfileCredentials,
+    -- | The connector-specific credentials required when using Zendesk.
+    zendesk :: Prelude.Maybe ZendeskConnectorProfileCredentials
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amplitude', 'connectorProfileCredentials_amplitude' - The connector-specific credentials required when using Amplitude.
+--
+-- 'customConnector', 'connectorProfileCredentials_customConnector' - Undocumented member.
+--
+-- 'datadog', 'connectorProfileCredentials_datadog' - The connector-specific credentials required when using Datadog.
+--
+-- 'dynatrace', 'connectorProfileCredentials_dynatrace' - The connector-specific credentials required when using Dynatrace.
+--
+-- 'googleAnalytics', 'connectorProfileCredentials_googleAnalytics' - The connector-specific credentials required when using Google Analytics.
+--
+-- 'honeycode', 'connectorProfileCredentials_honeycode' - The connector-specific credentials required when using Amazon Honeycode.
+--
+-- 'inforNexus', 'connectorProfileCredentials_inforNexus' - The connector-specific credentials required when using Infor Nexus.
+--
+-- 'marketo', 'connectorProfileCredentials_marketo' - The connector-specific credentials required when using Marketo.
+--
+-- 'redshift', 'connectorProfileCredentials_redshift' - The connector-specific credentials required when using Amazon Redshift.
+--
+-- 'sAPOData', 'connectorProfileCredentials_sAPOData' - Undocumented member.
+--
+-- 'salesforce', 'connectorProfileCredentials_salesforce' - The connector-specific credentials required when using Salesforce.
+--
+-- 'serviceNow', 'connectorProfileCredentials_serviceNow' - The connector-specific credentials required when using ServiceNow.
+--
+-- 'singular', 'connectorProfileCredentials_singular' - The connector-specific credentials required when using Singular.
+--
+-- 'slack', 'connectorProfileCredentials_slack' - The connector-specific credentials required when using Slack.
+--
+-- 'snowflake', 'connectorProfileCredentials_snowflake' - The connector-specific credentials required when using Snowflake.
+--
+-- 'trendmicro', 'connectorProfileCredentials_trendmicro' - The connector-specific credentials required when using Trend Micro.
+--
+-- 'veeva', 'connectorProfileCredentials_veeva' - The connector-specific credentials required when using Veeva.
+--
+-- 'zendesk', 'connectorProfileCredentials_zendesk' - The connector-specific credentials required when using Zendesk.
+newConnectorProfileCredentials ::
+  ConnectorProfileCredentials
+newConnectorProfileCredentials =
+  ConnectorProfileCredentials'
+    { amplitude =
+        Prelude.Nothing,
+      customConnector = Prelude.Nothing,
+      datadog = Prelude.Nothing,
+      dynatrace = Prelude.Nothing,
+      googleAnalytics = Prelude.Nothing,
+      honeycode = Prelude.Nothing,
+      inforNexus = Prelude.Nothing,
+      marketo = Prelude.Nothing,
+      redshift = Prelude.Nothing,
+      sAPOData = Prelude.Nothing,
+      salesforce = Prelude.Nothing,
+      serviceNow = Prelude.Nothing,
+      singular = Prelude.Nothing,
+      slack = Prelude.Nothing,
+      snowflake = Prelude.Nothing,
+      trendmicro = Prelude.Nothing,
+      veeva = Prelude.Nothing,
+      zendesk = Prelude.Nothing
+    }
+
+-- | The connector-specific credentials required when using Amplitude.
+connectorProfileCredentials_amplitude :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe AmplitudeConnectorProfileCredentials)
+connectorProfileCredentials_amplitude = Lens.lens (\ConnectorProfileCredentials' {amplitude} -> amplitude) (\s@ConnectorProfileCredentials' {} a -> s {amplitude = a} :: ConnectorProfileCredentials)
+
+-- | Undocumented member.
+connectorProfileCredentials_customConnector :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe CustomConnectorProfileCredentials)
+connectorProfileCredentials_customConnector = Lens.lens (\ConnectorProfileCredentials' {customConnector} -> customConnector) (\s@ConnectorProfileCredentials' {} a -> s {customConnector = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Datadog.
+connectorProfileCredentials_datadog :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe DatadogConnectorProfileCredentials)
+connectorProfileCredentials_datadog = Lens.lens (\ConnectorProfileCredentials' {datadog} -> datadog) (\s@ConnectorProfileCredentials' {} a -> s {datadog = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Dynatrace.
+connectorProfileCredentials_dynatrace :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe DynatraceConnectorProfileCredentials)
+connectorProfileCredentials_dynatrace = Lens.lens (\ConnectorProfileCredentials' {dynatrace} -> dynatrace) (\s@ConnectorProfileCredentials' {} a -> s {dynatrace = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Google Analytics.
+connectorProfileCredentials_googleAnalytics :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe GoogleAnalyticsConnectorProfileCredentials)
+connectorProfileCredentials_googleAnalytics = Lens.lens (\ConnectorProfileCredentials' {googleAnalytics} -> googleAnalytics) (\s@ConnectorProfileCredentials' {} a -> s {googleAnalytics = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Amazon Honeycode.
+connectorProfileCredentials_honeycode :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe HoneycodeConnectorProfileCredentials)
+connectorProfileCredentials_honeycode = Lens.lens (\ConnectorProfileCredentials' {honeycode} -> honeycode) (\s@ConnectorProfileCredentials' {} a -> s {honeycode = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Infor Nexus.
+connectorProfileCredentials_inforNexus :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe InforNexusConnectorProfileCredentials)
+connectorProfileCredentials_inforNexus = Lens.lens (\ConnectorProfileCredentials' {inforNexus} -> inforNexus) (\s@ConnectorProfileCredentials' {} a -> s {inforNexus = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Marketo.
+connectorProfileCredentials_marketo :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe MarketoConnectorProfileCredentials)
+connectorProfileCredentials_marketo = Lens.lens (\ConnectorProfileCredentials' {marketo} -> marketo) (\s@ConnectorProfileCredentials' {} a -> s {marketo = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Amazon Redshift.
+connectorProfileCredentials_redshift :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe RedshiftConnectorProfileCredentials)
+connectorProfileCredentials_redshift = Lens.lens (\ConnectorProfileCredentials' {redshift} -> redshift) (\s@ConnectorProfileCredentials' {} a -> s {redshift = a} :: ConnectorProfileCredentials)
+
+-- | Undocumented member.
+connectorProfileCredentials_sAPOData :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe SAPODataConnectorProfileCredentials)
+connectorProfileCredentials_sAPOData = Lens.lens (\ConnectorProfileCredentials' {sAPOData} -> sAPOData) (\s@ConnectorProfileCredentials' {} a -> s {sAPOData = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Salesforce.
+connectorProfileCredentials_salesforce :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe SalesforceConnectorProfileCredentials)
+connectorProfileCredentials_salesforce = Lens.lens (\ConnectorProfileCredentials' {salesforce} -> salesforce) (\s@ConnectorProfileCredentials' {} a -> s {salesforce = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using ServiceNow.
+connectorProfileCredentials_serviceNow :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe ServiceNowConnectorProfileCredentials)
+connectorProfileCredentials_serviceNow = Lens.lens (\ConnectorProfileCredentials' {serviceNow} -> serviceNow) (\s@ConnectorProfileCredentials' {} a -> s {serviceNow = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Singular.
+connectorProfileCredentials_singular :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe SingularConnectorProfileCredentials)
+connectorProfileCredentials_singular = Lens.lens (\ConnectorProfileCredentials' {singular} -> singular) (\s@ConnectorProfileCredentials' {} a -> s {singular = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Slack.
+connectorProfileCredentials_slack :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe SlackConnectorProfileCredentials)
+connectorProfileCredentials_slack = Lens.lens (\ConnectorProfileCredentials' {slack} -> slack) (\s@ConnectorProfileCredentials' {} a -> s {slack = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Snowflake.
+connectorProfileCredentials_snowflake :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe SnowflakeConnectorProfileCredentials)
+connectorProfileCredentials_snowflake = Lens.lens (\ConnectorProfileCredentials' {snowflake} -> snowflake) (\s@ConnectorProfileCredentials' {} a -> s {snowflake = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Trend Micro.
+connectorProfileCredentials_trendmicro :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe TrendmicroConnectorProfileCredentials)
+connectorProfileCredentials_trendmicro = Lens.lens (\ConnectorProfileCredentials' {trendmicro} -> trendmicro) (\s@ConnectorProfileCredentials' {} a -> s {trendmicro = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Veeva.
+connectorProfileCredentials_veeva :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe VeevaConnectorProfileCredentials)
+connectorProfileCredentials_veeva = Lens.lens (\ConnectorProfileCredentials' {veeva} -> veeva) (\s@ConnectorProfileCredentials' {} a -> s {veeva = a} :: ConnectorProfileCredentials)
+
+-- | The connector-specific credentials required when using Zendesk.
+connectorProfileCredentials_zendesk :: Lens.Lens' ConnectorProfileCredentials (Prelude.Maybe ZendeskConnectorProfileCredentials)
+connectorProfileCredentials_zendesk = Lens.lens (\ConnectorProfileCredentials' {zendesk} -> zendesk) (\s@ConnectorProfileCredentials' {} a -> s {zendesk = a} :: ConnectorProfileCredentials)
+
+instance Prelude.Hashable ConnectorProfileCredentials where
+  hashWithSalt _salt ConnectorProfileCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` amplitude
+      `Prelude.hashWithSalt` customConnector
+      `Prelude.hashWithSalt` datadog
+      `Prelude.hashWithSalt` dynatrace
+      `Prelude.hashWithSalt` googleAnalytics
+      `Prelude.hashWithSalt` honeycode
+      `Prelude.hashWithSalt` inforNexus
+      `Prelude.hashWithSalt` marketo
+      `Prelude.hashWithSalt` redshift
+      `Prelude.hashWithSalt` sAPOData
+      `Prelude.hashWithSalt` salesforce
+      `Prelude.hashWithSalt` serviceNow
+      `Prelude.hashWithSalt` singular
+      `Prelude.hashWithSalt` slack
+      `Prelude.hashWithSalt` snowflake
+      `Prelude.hashWithSalt` trendmicro
+      `Prelude.hashWithSalt` veeva
+      `Prelude.hashWithSalt` zendesk
+
+instance Prelude.NFData ConnectorProfileCredentials where
+  rnf ConnectorProfileCredentials' {..} =
+    Prelude.rnf amplitude
+      `Prelude.seq` Prelude.rnf customConnector
+      `Prelude.seq` Prelude.rnf datadog
+      `Prelude.seq` Prelude.rnf dynatrace
+      `Prelude.seq` Prelude.rnf googleAnalytics
+      `Prelude.seq` Prelude.rnf honeycode
+      `Prelude.seq` Prelude.rnf inforNexus
+      `Prelude.seq` Prelude.rnf marketo
+      `Prelude.seq` Prelude.rnf redshift
+      `Prelude.seq` Prelude.rnf sAPOData
+      `Prelude.seq` Prelude.rnf salesforce
+      `Prelude.seq` Prelude.rnf serviceNow
+      `Prelude.seq` Prelude.rnf singular
+      `Prelude.seq` Prelude.rnf slack
+      `Prelude.seq` Prelude.rnf snowflake
+      `Prelude.seq` Prelude.rnf trendmicro
+      `Prelude.seq` Prelude.rnf veeva
+      `Prelude.seq` Prelude.rnf zendesk
+
+instance Data.ToJSON ConnectorProfileCredentials where
+  toJSON ConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Amplitude" Data..=) Prelude.<$> amplitude,
+            ("CustomConnector" Data..=)
+              Prelude.<$> customConnector,
+            ("Datadog" Data..=) Prelude.<$> datadog,
+            ("Dynatrace" Data..=) Prelude.<$> dynatrace,
+            ("GoogleAnalytics" Data..=)
+              Prelude.<$> googleAnalytics,
+            ("Honeycode" Data..=) Prelude.<$> honeycode,
+            ("InforNexus" Data..=) Prelude.<$> inforNexus,
+            ("Marketo" Data..=) Prelude.<$> marketo,
+            ("Redshift" Data..=) Prelude.<$> redshift,
+            ("SAPOData" Data..=) Prelude.<$> sAPOData,
+            ("Salesforce" Data..=) Prelude.<$> salesforce,
+            ("ServiceNow" Data..=) Prelude.<$> serviceNow,
+            ("Singular" Data..=) Prelude.<$> singular,
+            ("Slack" Data..=) Prelude.<$> slack,
+            ("Snowflake" Data..=) Prelude.<$> snowflake,
+            ("Trendmicro" Data..=) Prelude.<$> trendmicro,
+            ("Veeva" Data..=) Prelude.<$> veeva,
+            ("Zendesk" Data..=) Prelude.<$> zendesk
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/ConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorProfileProperties.hs
@@ -0,0 +1,321 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorProfileProperties where
+
+import Amazonka.AppFlow.Types.AmplitudeConnectorProfileProperties
+import Amazonka.AppFlow.Types.CustomConnectorProfileProperties
+import Amazonka.AppFlow.Types.DatadogConnectorProfileProperties
+import Amazonka.AppFlow.Types.DynatraceConnectorProfileProperties
+import Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileProperties
+import Amazonka.AppFlow.Types.HoneycodeConnectorProfileProperties
+import Amazonka.AppFlow.Types.InforNexusConnectorProfileProperties
+import Amazonka.AppFlow.Types.MarketoConnectorProfileProperties
+import Amazonka.AppFlow.Types.RedshiftConnectorProfileProperties
+import Amazonka.AppFlow.Types.SAPODataConnectorProfileProperties
+import Amazonka.AppFlow.Types.SalesforceConnectorProfileProperties
+import Amazonka.AppFlow.Types.ServiceNowConnectorProfileProperties
+import Amazonka.AppFlow.Types.SingularConnectorProfileProperties
+import Amazonka.AppFlow.Types.SlackConnectorProfileProperties
+import Amazonka.AppFlow.Types.SnowflakeConnectorProfileProperties
+import Amazonka.AppFlow.Types.TrendmicroConnectorProfileProperties
+import Amazonka.AppFlow.Types.VeevaConnectorProfileProperties
+import Amazonka.AppFlow.Types.ZendeskConnectorProfileProperties
+import qualified 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 connector-specific profile properties required by each connector.
+--
+-- /See:/ 'newConnectorProfileProperties' smart constructor.
+data ConnectorProfileProperties = ConnectorProfileProperties'
+  { -- | The connector-specific properties required by Amplitude.
+    amplitude :: Prelude.Maybe AmplitudeConnectorProfileProperties,
+    -- | The properties required by the custom connector.
+    customConnector :: Prelude.Maybe CustomConnectorProfileProperties,
+    -- | The connector-specific properties required by Datadog.
+    datadog :: Prelude.Maybe DatadogConnectorProfileProperties,
+    -- | The connector-specific properties required by Dynatrace.
+    dynatrace :: Prelude.Maybe DynatraceConnectorProfileProperties,
+    -- | The connector-specific properties required Google Analytics.
+    googleAnalytics :: Prelude.Maybe GoogleAnalyticsConnectorProfileProperties,
+    -- | The connector-specific properties required by Amazon Honeycode.
+    honeycode :: Prelude.Maybe HoneycodeConnectorProfileProperties,
+    -- | The connector-specific properties required by Infor Nexus.
+    inforNexus :: Prelude.Maybe InforNexusConnectorProfileProperties,
+    -- | The connector-specific properties required by Marketo.
+    marketo :: Prelude.Maybe MarketoConnectorProfileProperties,
+    -- | The connector-specific properties required by Amazon Redshift.
+    redshift :: Prelude.Maybe RedshiftConnectorProfileProperties,
+    sAPOData :: Prelude.Maybe SAPODataConnectorProfileProperties,
+    -- | The connector-specific properties required by Salesforce.
+    salesforce :: Prelude.Maybe SalesforceConnectorProfileProperties,
+    -- | The connector-specific properties required by serviceNow.
+    serviceNow :: Prelude.Maybe ServiceNowConnectorProfileProperties,
+    -- | The connector-specific properties required by Singular.
+    singular :: Prelude.Maybe SingularConnectorProfileProperties,
+    -- | The connector-specific properties required by Slack.
+    slack :: Prelude.Maybe SlackConnectorProfileProperties,
+    -- | The connector-specific properties required by Snowflake.
+    snowflake :: Prelude.Maybe SnowflakeConnectorProfileProperties,
+    -- | The connector-specific properties required by Trend Micro.
+    trendmicro :: Prelude.Maybe TrendmicroConnectorProfileProperties,
+    -- | The connector-specific properties required by Veeva.
+    veeva :: Prelude.Maybe VeevaConnectorProfileProperties,
+    -- | The connector-specific properties required by Zendesk.
+    zendesk :: Prelude.Maybe ZendeskConnectorProfileProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amplitude', 'connectorProfileProperties_amplitude' - The connector-specific properties required by Amplitude.
+--
+-- 'customConnector', 'connectorProfileProperties_customConnector' - The properties required by the custom connector.
+--
+-- 'datadog', 'connectorProfileProperties_datadog' - The connector-specific properties required by Datadog.
+--
+-- 'dynatrace', 'connectorProfileProperties_dynatrace' - The connector-specific properties required by Dynatrace.
+--
+-- 'googleAnalytics', 'connectorProfileProperties_googleAnalytics' - The connector-specific properties required Google Analytics.
+--
+-- 'honeycode', 'connectorProfileProperties_honeycode' - The connector-specific properties required by Amazon Honeycode.
+--
+-- 'inforNexus', 'connectorProfileProperties_inforNexus' - The connector-specific properties required by Infor Nexus.
+--
+-- 'marketo', 'connectorProfileProperties_marketo' - The connector-specific properties required by Marketo.
+--
+-- 'redshift', 'connectorProfileProperties_redshift' - The connector-specific properties required by Amazon Redshift.
+--
+-- 'sAPOData', 'connectorProfileProperties_sAPOData' - Undocumented member.
+--
+-- 'salesforce', 'connectorProfileProperties_salesforce' - The connector-specific properties required by Salesforce.
+--
+-- 'serviceNow', 'connectorProfileProperties_serviceNow' - The connector-specific properties required by serviceNow.
+--
+-- 'singular', 'connectorProfileProperties_singular' - The connector-specific properties required by Singular.
+--
+-- 'slack', 'connectorProfileProperties_slack' - The connector-specific properties required by Slack.
+--
+-- 'snowflake', 'connectorProfileProperties_snowflake' - The connector-specific properties required by Snowflake.
+--
+-- 'trendmicro', 'connectorProfileProperties_trendmicro' - The connector-specific properties required by Trend Micro.
+--
+-- 'veeva', 'connectorProfileProperties_veeva' - The connector-specific properties required by Veeva.
+--
+-- 'zendesk', 'connectorProfileProperties_zendesk' - The connector-specific properties required by Zendesk.
+newConnectorProfileProperties ::
+  ConnectorProfileProperties
+newConnectorProfileProperties =
+  ConnectorProfileProperties'
+    { amplitude =
+        Prelude.Nothing,
+      customConnector = Prelude.Nothing,
+      datadog = Prelude.Nothing,
+      dynatrace = Prelude.Nothing,
+      googleAnalytics = Prelude.Nothing,
+      honeycode = Prelude.Nothing,
+      inforNexus = Prelude.Nothing,
+      marketo = Prelude.Nothing,
+      redshift = Prelude.Nothing,
+      sAPOData = Prelude.Nothing,
+      salesforce = Prelude.Nothing,
+      serviceNow = Prelude.Nothing,
+      singular = Prelude.Nothing,
+      slack = Prelude.Nothing,
+      snowflake = Prelude.Nothing,
+      trendmicro = Prelude.Nothing,
+      veeva = Prelude.Nothing,
+      zendesk = Prelude.Nothing
+    }
+
+-- | The connector-specific properties required by Amplitude.
+connectorProfileProperties_amplitude :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe AmplitudeConnectorProfileProperties)
+connectorProfileProperties_amplitude = Lens.lens (\ConnectorProfileProperties' {amplitude} -> amplitude) (\s@ConnectorProfileProperties' {} a -> s {amplitude = a} :: ConnectorProfileProperties)
+
+-- | The properties required by the custom connector.
+connectorProfileProperties_customConnector :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe CustomConnectorProfileProperties)
+connectorProfileProperties_customConnector = Lens.lens (\ConnectorProfileProperties' {customConnector} -> customConnector) (\s@ConnectorProfileProperties' {} a -> s {customConnector = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Datadog.
+connectorProfileProperties_datadog :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe DatadogConnectorProfileProperties)
+connectorProfileProperties_datadog = Lens.lens (\ConnectorProfileProperties' {datadog} -> datadog) (\s@ConnectorProfileProperties' {} a -> s {datadog = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Dynatrace.
+connectorProfileProperties_dynatrace :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe DynatraceConnectorProfileProperties)
+connectorProfileProperties_dynatrace = Lens.lens (\ConnectorProfileProperties' {dynatrace} -> dynatrace) (\s@ConnectorProfileProperties' {} a -> s {dynatrace = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required Google Analytics.
+connectorProfileProperties_googleAnalytics :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe GoogleAnalyticsConnectorProfileProperties)
+connectorProfileProperties_googleAnalytics = Lens.lens (\ConnectorProfileProperties' {googleAnalytics} -> googleAnalytics) (\s@ConnectorProfileProperties' {} a -> s {googleAnalytics = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Amazon Honeycode.
+connectorProfileProperties_honeycode :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe HoneycodeConnectorProfileProperties)
+connectorProfileProperties_honeycode = Lens.lens (\ConnectorProfileProperties' {honeycode} -> honeycode) (\s@ConnectorProfileProperties' {} a -> s {honeycode = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Infor Nexus.
+connectorProfileProperties_inforNexus :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe InforNexusConnectorProfileProperties)
+connectorProfileProperties_inforNexus = Lens.lens (\ConnectorProfileProperties' {inforNexus} -> inforNexus) (\s@ConnectorProfileProperties' {} a -> s {inforNexus = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Marketo.
+connectorProfileProperties_marketo :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe MarketoConnectorProfileProperties)
+connectorProfileProperties_marketo = Lens.lens (\ConnectorProfileProperties' {marketo} -> marketo) (\s@ConnectorProfileProperties' {} a -> s {marketo = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Amazon Redshift.
+connectorProfileProperties_redshift :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe RedshiftConnectorProfileProperties)
+connectorProfileProperties_redshift = Lens.lens (\ConnectorProfileProperties' {redshift} -> redshift) (\s@ConnectorProfileProperties' {} a -> s {redshift = a} :: ConnectorProfileProperties)
+
+-- | Undocumented member.
+connectorProfileProperties_sAPOData :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe SAPODataConnectorProfileProperties)
+connectorProfileProperties_sAPOData = Lens.lens (\ConnectorProfileProperties' {sAPOData} -> sAPOData) (\s@ConnectorProfileProperties' {} a -> s {sAPOData = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Salesforce.
+connectorProfileProperties_salesforce :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe SalesforceConnectorProfileProperties)
+connectorProfileProperties_salesforce = Lens.lens (\ConnectorProfileProperties' {salesforce} -> salesforce) (\s@ConnectorProfileProperties' {} a -> s {salesforce = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by serviceNow.
+connectorProfileProperties_serviceNow :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe ServiceNowConnectorProfileProperties)
+connectorProfileProperties_serviceNow = Lens.lens (\ConnectorProfileProperties' {serviceNow} -> serviceNow) (\s@ConnectorProfileProperties' {} a -> s {serviceNow = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Singular.
+connectorProfileProperties_singular :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe SingularConnectorProfileProperties)
+connectorProfileProperties_singular = Lens.lens (\ConnectorProfileProperties' {singular} -> singular) (\s@ConnectorProfileProperties' {} a -> s {singular = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Slack.
+connectorProfileProperties_slack :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe SlackConnectorProfileProperties)
+connectorProfileProperties_slack = Lens.lens (\ConnectorProfileProperties' {slack} -> slack) (\s@ConnectorProfileProperties' {} a -> s {slack = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Snowflake.
+connectorProfileProperties_snowflake :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe SnowflakeConnectorProfileProperties)
+connectorProfileProperties_snowflake = Lens.lens (\ConnectorProfileProperties' {snowflake} -> snowflake) (\s@ConnectorProfileProperties' {} a -> s {snowflake = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Trend Micro.
+connectorProfileProperties_trendmicro :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe TrendmicroConnectorProfileProperties)
+connectorProfileProperties_trendmicro = Lens.lens (\ConnectorProfileProperties' {trendmicro} -> trendmicro) (\s@ConnectorProfileProperties' {} a -> s {trendmicro = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Veeva.
+connectorProfileProperties_veeva :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe VeevaConnectorProfileProperties)
+connectorProfileProperties_veeva = Lens.lens (\ConnectorProfileProperties' {veeva} -> veeva) (\s@ConnectorProfileProperties' {} a -> s {veeva = a} :: ConnectorProfileProperties)
+
+-- | The connector-specific properties required by Zendesk.
+connectorProfileProperties_zendesk :: Lens.Lens' ConnectorProfileProperties (Prelude.Maybe ZendeskConnectorProfileProperties)
+connectorProfileProperties_zendesk = Lens.lens (\ConnectorProfileProperties' {zendesk} -> zendesk) (\s@ConnectorProfileProperties' {} a -> s {zendesk = a} :: ConnectorProfileProperties)
+
+instance Data.FromJSON ConnectorProfileProperties where
+  parseJSON =
+    Data.withObject
+      "ConnectorProfileProperties"
+      ( \x ->
+          ConnectorProfileProperties'
+            Prelude.<$> (x Data..:? "Amplitude")
+            Prelude.<*> (x Data..:? "CustomConnector")
+            Prelude.<*> (x Data..:? "Datadog")
+            Prelude.<*> (x Data..:? "Dynatrace")
+            Prelude.<*> (x Data..:? "GoogleAnalytics")
+            Prelude.<*> (x Data..:? "Honeycode")
+            Prelude.<*> (x Data..:? "InforNexus")
+            Prelude.<*> (x Data..:? "Marketo")
+            Prelude.<*> (x Data..:? "Redshift")
+            Prelude.<*> (x Data..:? "SAPOData")
+            Prelude.<*> (x Data..:? "Salesforce")
+            Prelude.<*> (x Data..:? "ServiceNow")
+            Prelude.<*> (x Data..:? "Singular")
+            Prelude.<*> (x Data..:? "Slack")
+            Prelude.<*> (x Data..:? "Snowflake")
+            Prelude.<*> (x Data..:? "Trendmicro")
+            Prelude.<*> (x Data..:? "Veeva")
+            Prelude.<*> (x Data..:? "Zendesk")
+      )
+
+instance Prelude.Hashable ConnectorProfileProperties where
+  hashWithSalt _salt ConnectorProfileProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` amplitude
+      `Prelude.hashWithSalt` customConnector
+      `Prelude.hashWithSalt` datadog
+      `Prelude.hashWithSalt` dynatrace
+      `Prelude.hashWithSalt` googleAnalytics
+      `Prelude.hashWithSalt` honeycode
+      `Prelude.hashWithSalt` inforNexus
+      `Prelude.hashWithSalt` marketo
+      `Prelude.hashWithSalt` redshift
+      `Prelude.hashWithSalt` sAPOData
+      `Prelude.hashWithSalt` salesforce
+      `Prelude.hashWithSalt` serviceNow
+      `Prelude.hashWithSalt` singular
+      `Prelude.hashWithSalt` slack
+      `Prelude.hashWithSalt` snowflake
+      `Prelude.hashWithSalt` trendmicro
+      `Prelude.hashWithSalt` veeva
+      `Prelude.hashWithSalt` zendesk
+
+instance Prelude.NFData ConnectorProfileProperties where
+  rnf ConnectorProfileProperties' {..} =
+    Prelude.rnf amplitude
+      `Prelude.seq` Prelude.rnf customConnector
+      `Prelude.seq` Prelude.rnf datadog
+      `Prelude.seq` Prelude.rnf dynatrace
+      `Prelude.seq` Prelude.rnf googleAnalytics
+      `Prelude.seq` Prelude.rnf honeycode
+      `Prelude.seq` Prelude.rnf inforNexus
+      `Prelude.seq` Prelude.rnf marketo
+      `Prelude.seq` Prelude.rnf redshift
+      `Prelude.seq` Prelude.rnf sAPOData
+      `Prelude.seq` Prelude.rnf salesforce
+      `Prelude.seq` Prelude.rnf serviceNow
+      `Prelude.seq` Prelude.rnf singular
+      `Prelude.seq` Prelude.rnf slack
+      `Prelude.seq` Prelude.rnf snowflake
+      `Prelude.seq` Prelude.rnf trendmicro
+      `Prelude.seq` Prelude.rnf veeva
+      `Prelude.seq` Prelude.rnf zendesk
+
+instance Data.ToJSON ConnectorProfileProperties where
+  toJSON ConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Amplitude" Data..=) Prelude.<$> amplitude,
+            ("CustomConnector" Data..=)
+              Prelude.<$> customConnector,
+            ("Datadog" Data..=) Prelude.<$> datadog,
+            ("Dynatrace" Data..=) Prelude.<$> dynatrace,
+            ("GoogleAnalytics" Data..=)
+              Prelude.<$> googleAnalytics,
+            ("Honeycode" Data..=) Prelude.<$> honeycode,
+            ("InforNexus" Data..=) Prelude.<$> inforNexus,
+            ("Marketo" Data..=) Prelude.<$> marketo,
+            ("Redshift" Data..=) Prelude.<$> redshift,
+            ("SAPOData" Data..=) Prelude.<$> sAPOData,
+            ("Salesforce" Data..=) Prelude.<$> salesforce,
+            ("ServiceNow" Data..=) Prelude.<$> serviceNow,
+            ("Singular" Data..=) Prelude.<$> singular,
+            ("Slack" Data..=) Prelude.<$> slack,
+            ("Snowflake" Data..=) Prelude.<$> snowflake,
+            ("Trendmicro" Data..=) Prelude.<$> trendmicro,
+            ("Veeva" Data..=) Prelude.<$> veeva,
+            ("Zendesk" Data..=) Prelude.<$> zendesk
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorProvisioningConfig.hs b/gen/Amazonka/AppFlow/Types/ConnectorProvisioningConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorProvisioningConfig.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorProvisioningConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorProvisioningConfig where
+
+import Amazonka.AppFlow.Types.LambdaConnectorProvisioningConfig
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the configuration of the connector being
+-- registered.
+--
+-- /See:/ 'newConnectorProvisioningConfig' smart constructor.
+data ConnectorProvisioningConfig = ConnectorProvisioningConfig'
+  { -- | Contains information about the configuration of the lambda which is
+    -- being registered as the connector.
+    lambda :: Prelude.Maybe LambdaConnectorProvisioningConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorProvisioningConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lambda', 'connectorProvisioningConfig_lambda' - Contains information about the configuration of the lambda which is
+-- being registered as the connector.
+newConnectorProvisioningConfig ::
+  ConnectorProvisioningConfig
+newConnectorProvisioningConfig =
+  ConnectorProvisioningConfig'
+    { lambda =
+        Prelude.Nothing
+    }
+
+-- | Contains information about the configuration of the lambda which is
+-- being registered as the connector.
+connectorProvisioningConfig_lambda :: Lens.Lens' ConnectorProvisioningConfig (Prelude.Maybe LambdaConnectorProvisioningConfig)
+connectorProvisioningConfig_lambda = Lens.lens (\ConnectorProvisioningConfig' {lambda} -> lambda) (\s@ConnectorProvisioningConfig' {} a -> s {lambda = a} :: ConnectorProvisioningConfig)
+
+instance Data.FromJSON ConnectorProvisioningConfig where
+  parseJSON =
+    Data.withObject
+      "ConnectorProvisioningConfig"
+      ( \x ->
+          ConnectorProvisioningConfig'
+            Prelude.<$> (x Data..:? "lambda")
+      )
+
+instance Prelude.Hashable ConnectorProvisioningConfig where
+  hashWithSalt _salt ConnectorProvisioningConfig' {..} =
+    _salt `Prelude.hashWithSalt` lambda
+
+instance Prelude.NFData ConnectorProvisioningConfig where
+  rnf ConnectorProvisioningConfig' {..} =
+    Prelude.rnf lambda
+
+instance Data.ToJSON ConnectorProvisioningConfig where
+  toJSON ConnectorProvisioningConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("lambda" Data..=) Prelude.<$> lambda]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorProvisioningType.hs b/gen/Amazonka/AppFlow/Types/ConnectorProvisioningType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorProvisioningType.hs
@@ -0,0 +1,67 @@
+{-# 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.AppFlow.Types.ConnectorProvisioningType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorProvisioningType
+  ( ConnectorProvisioningType
+      ( ..,
+        ConnectorProvisioningType_LAMBDA
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type of provisioning that the connector supports, such as Lambda.
+newtype ConnectorProvisioningType = ConnectorProvisioningType'
+  { fromConnectorProvisioningType ::
+      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 ConnectorProvisioningType_LAMBDA :: ConnectorProvisioningType
+pattern ConnectorProvisioningType_LAMBDA = ConnectorProvisioningType' "LAMBDA"
+
+{-# COMPLETE
+  ConnectorProvisioningType_LAMBDA,
+  ConnectorProvisioningType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorRuntimeSetting.hs b/gen/Amazonka/AppFlow/Types/ConnectorRuntimeSetting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorRuntimeSetting.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ConnectorRuntimeSetting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorRuntimeSetting where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the connector runtime settings that are
+-- required for flow execution.
+--
+-- /See:/ 'newConnectorRuntimeSetting' smart constructor.
+data ConnectorRuntimeSetting = ConnectorRuntimeSetting'
+  { -- | Contains default values for the connector runtime setting that are
+    -- supplied by the connector.
+    connectorSuppliedValueOptions :: Prelude.Maybe [Prelude.Text],
+    -- | Data type of the connector runtime setting.
+    dataType :: Prelude.Maybe Prelude.Text,
+    -- | A description about the connector runtime setting.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether this connector runtime setting is required.
+    isRequired :: Prelude.Maybe Prelude.Bool,
+    -- | Contains value information about the connector runtime setting.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | A label used for connector runtime setting.
+    label :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the scope of the connector runtime setting.
+    scope :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectorRuntimeSetting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorSuppliedValueOptions', 'connectorRuntimeSetting_connectorSuppliedValueOptions' - Contains default values for the connector runtime setting that are
+-- supplied by the connector.
+--
+-- 'dataType', 'connectorRuntimeSetting_dataType' - Data type of the connector runtime setting.
+--
+-- 'description', 'connectorRuntimeSetting_description' - A description about the connector runtime setting.
+--
+-- 'isRequired', 'connectorRuntimeSetting_isRequired' - Indicates whether this connector runtime setting is required.
+--
+-- 'key', 'connectorRuntimeSetting_key' - Contains value information about the connector runtime setting.
+--
+-- 'label', 'connectorRuntimeSetting_label' - A label used for connector runtime setting.
+--
+-- 'scope', 'connectorRuntimeSetting_scope' - Indicates the scope of the connector runtime setting.
+newConnectorRuntimeSetting ::
+  ConnectorRuntimeSetting
+newConnectorRuntimeSetting =
+  ConnectorRuntimeSetting'
+    { connectorSuppliedValueOptions =
+        Prelude.Nothing,
+      dataType = Prelude.Nothing,
+      description = Prelude.Nothing,
+      isRequired = Prelude.Nothing,
+      key = Prelude.Nothing,
+      label = Prelude.Nothing,
+      scope = Prelude.Nothing
+    }
+
+-- | Contains default values for the connector runtime setting that are
+-- supplied by the connector.
+connectorRuntimeSetting_connectorSuppliedValueOptions :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe [Prelude.Text])
+connectorRuntimeSetting_connectorSuppliedValueOptions = Lens.lens (\ConnectorRuntimeSetting' {connectorSuppliedValueOptions} -> connectorSuppliedValueOptions) (\s@ConnectorRuntimeSetting' {} a -> s {connectorSuppliedValueOptions = a} :: ConnectorRuntimeSetting) Prelude.. Lens.mapping Lens.coerced
+
+-- | Data type of the connector runtime setting.
+connectorRuntimeSetting_dataType :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe Prelude.Text)
+connectorRuntimeSetting_dataType = Lens.lens (\ConnectorRuntimeSetting' {dataType} -> dataType) (\s@ConnectorRuntimeSetting' {} a -> s {dataType = a} :: ConnectorRuntimeSetting)
+
+-- | A description about the connector runtime setting.
+connectorRuntimeSetting_description :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe Prelude.Text)
+connectorRuntimeSetting_description = Lens.lens (\ConnectorRuntimeSetting' {description} -> description) (\s@ConnectorRuntimeSetting' {} a -> s {description = a} :: ConnectorRuntimeSetting)
+
+-- | Indicates whether this connector runtime setting is required.
+connectorRuntimeSetting_isRequired :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe Prelude.Bool)
+connectorRuntimeSetting_isRequired = Lens.lens (\ConnectorRuntimeSetting' {isRequired} -> isRequired) (\s@ConnectorRuntimeSetting' {} a -> s {isRequired = a} :: ConnectorRuntimeSetting)
+
+-- | Contains value information about the connector runtime setting.
+connectorRuntimeSetting_key :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe Prelude.Text)
+connectorRuntimeSetting_key = Lens.lens (\ConnectorRuntimeSetting' {key} -> key) (\s@ConnectorRuntimeSetting' {} a -> s {key = a} :: ConnectorRuntimeSetting)
+
+-- | A label used for connector runtime setting.
+connectorRuntimeSetting_label :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe Prelude.Text)
+connectorRuntimeSetting_label = Lens.lens (\ConnectorRuntimeSetting' {label} -> label) (\s@ConnectorRuntimeSetting' {} a -> s {label = a} :: ConnectorRuntimeSetting)
+
+-- | Indicates the scope of the connector runtime setting.
+connectorRuntimeSetting_scope :: Lens.Lens' ConnectorRuntimeSetting (Prelude.Maybe Prelude.Text)
+connectorRuntimeSetting_scope = Lens.lens (\ConnectorRuntimeSetting' {scope} -> scope) (\s@ConnectorRuntimeSetting' {} a -> s {scope = a} :: ConnectorRuntimeSetting)
+
+instance Data.FromJSON ConnectorRuntimeSetting where
+  parseJSON =
+    Data.withObject
+      "ConnectorRuntimeSetting"
+      ( \x ->
+          ConnectorRuntimeSetting'
+            Prelude.<$> ( x
+                            Data..:? "connectorSuppliedValueOptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "dataType")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "isRequired")
+            Prelude.<*> (x Data..:? "key")
+            Prelude.<*> (x Data..:? "label")
+            Prelude.<*> (x Data..:? "scope")
+      )
+
+instance Prelude.Hashable ConnectorRuntimeSetting where
+  hashWithSalt _salt ConnectorRuntimeSetting' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorSuppliedValueOptions
+      `Prelude.hashWithSalt` dataType
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` isRequired
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` label
+      `Prelude.hashWithSalt` scope
+
+instance Prelude.NFData ConnectorRuntimeSetting where
+  rnf ConnectorRuntimeSetting' {..} =
+    Prelude.rnf connectorSuppliedValueOptions
+      `Prelude.seq` Prelude.rnf dataType
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf isRequired
+      `Prelude.seq` Prelude.rnf key
+      `Prelude.seq` Prelude.rnf label
+      `Prelude.seq` Prelude.rnf scope
diff --git a/gen/Amazonka/AppFlow/Types/ConnectorType.hs b/gen/Amazonka/AppFlow/Types/ConnectorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ConnectorType.hs
@@ -0,0 +1,176 @@
+{-# 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.AppFlow.Types.ConnectorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ConnectorType
+  ( ConnectorType
+      ( ..,
+        ConnectorType_Amplitude,
+        ConnectorType_CustomConnector,
+        ConnectorType_CustomerProfiles,
+        ConnectorType_Datadog,
+        ConnectorType_Dynatrace,
+        ConnectorType_EventBridge,
+        ConnectorType_Googleanalytics,
+        ConnectorType_Honeycode,
+        ConnectorType_Infornexus,
+        ConnectorType_LookoutMetrics,
+        ConnectorType_Marketo,
+        ConnectorType_Redshift,
+        ConnectorType_S3,
+        ConnectorType_SAPOData,
+        ConnectorType_Salesforce,
+        ConnectorType_Servicenow,
+        ConnectorType_Singular,
+        ConnectorType_Slack,
+        ConnectorType_Snowflake,
+        ConnectorType_Trendmicro,
+        ConnectorType_Upsolver,
+        ConnectorType_Veeva,
+        ConnectorType_Zendesk
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectorType = ConnectorType'
+  { fromConnectorType ::
+      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 ConnectorType_Amplitude :: ConnectorType
+pattern ConnectorType_Amplitude = ConnectorType' "Amplitude"
+
+pattern ConnectorType_CustomConnector :: ConnectorType
+pattern ConnectorType_CustomConnector = ConnectorType' "CustomConnector"
+
+pattern ConnectorType_CustomerProfiles :: ConnectorType
+pattern ConnectorType_CustomerProfiles = ConnectorType' "CustomerProfiles"
+
+pattern ConnectorType_Datadog :: ConnectorType
+pattern ConnectorType_Datadog = ConnectorType' "Datadog"
+
+pattern ConnectorType_Dynatrace :: ConnectorType
+pattern ConnectorType_Dynatrace = ConnectorType' "Dynatrace"
+
+pattern ConnectorType_EventBridge :: ConnectorType
+pattern ConnectorType_EventBridge = ConnectorType' "EventBridge"
+
+pattern ConnectorType_Googleanalytics :: ConnectorType
+pattern ConnectorType_Googleanalytics = ConnectorType' "Googleanalytics"
+
+pattern ConnectorType_Honeycode :: ConnectorType
+pattern ConnectorType_Honeycode = ConnectorType' "Honeycode"
+
+pattern ConnectorType_Infornexus :: ConnectorType
+pattern ConnectorType_Infornexus = ConnectorType' "Infornexus"
+
+pattern ConnectorType_LookoutMetrics :: ConnectorType
+pattern ConnectorType_LookoutMetrics = ConnectorType' "LookoutMetrics"
+
+pattern ConnectorType_Marketo :: ConnectorType
+pattern ConnectorType_Marketo = ConnectorType' "Marketo"
+
+pattern ConnectorType_Redshift :: ConnectorType
+pattern ConnectorType_Redshift = ConnectorType' "Redshift"
+
+pattern ConnectorType_S3 :: ConnectorType
+pattern ConnectorType_S3 = ConnectorType' "S3"
+
+pattern ConnectorType_SAPOData :: ConnectorType
+pattern ConnectorType_SAPOData = ConnectorType' "SAPOData"
+
+pattern ConnectorType_Salesforce :: ConnectorType
+pattern ConnectorType_Salesforce = ConnectorType' "Salesforce"
+
+pattern ConnectorType_Servicenow :: ConnectorType
+pattern ConnectorType_Servicenow = ConnectorType' "Servicenow"
+
+pattern ConnectorType_Singular :: ConnectorType
+pattern ConnectorType_Singular = ConnectorType' "Singular"
+
+pattern ConnectorType_Slack :: ConnectorType
+pattern ConnectorType_Slack = ConnectorType' "Slack"
+
+pattern ConnectorType_Snowflake :: ConnectorType
+pattern ConnectorType_Snowflake = ConnectorType' "Snowflake"
+
+pattern ConnectorType_Trendmicro :: ConnectorType
+pattern ConnectorType_Trendmicro = ConnectorType' "Trendmicro"
+
+pattern ConnectorType_Upsolver :: ConnectorType
+pattern ConnectorType_Upsolver = ConnectorType' "Upsolver"
+
+pattern ConnectorType_Veeva :: ConnectorType
+pattern ConnectorType_Veeva = ConnectorType' "Veeva"
+
+pattern ConnectorType_Zendesk :: ConnectorType
+pattern ConnectorType_Zendesk = ConnectorType' "Zendesk"
+
+{-# COMPLETE
+  ConnectorType_Amplitude,
+  ConnectorType_CustomConnector,
+  ConnectorType_CustomerProfiles,
+  ConnectorType_Datadog,
+  ConnectorType_Dynatrace,
+  ConnectorType_EventBridge,
+  ConnectorType_Googleanalytics,
+  ConnectorType_Honeycode,
+  ConnectorType_Infornexus,
+  ConnectorType_LookoutMetrics,
+  ConnectorType_Marketo,
+  ConnectorType_Redshift,
+  ConnectorType_S3,
+  ConnectorType_SAPOData,
+  ConnectorType_Salesforce,
+  ConnectorType_Servicenow,
+  ConnectorType_Singular,
+  ConnectorType_Slack,
+  ConnectorType_Snowflake,
+  ConnectorType_Trendmicro,
+  ConnectorType_Upsolver,
+  ConnectorType_Veeva,
+  ConnectorType_Zendesk,
+  ConnectorType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/CustomAuthConfig.hs b/gen/Amazonka/AppFlow/Types/CustomAuthConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomAuthConfig.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.AppFlow.Types.CustomAuthConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomAuthConfig where
+
+import Amazonka.AppFlow.Types.AuthParameter
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Configuration information required for custom authentication.
+--
+-- /See:/ 'newCustomAuthConfig' smart constructor.
+data CustomAuthConfig = CustomAuthConfig'
+  { -- | Information about authentication parameters required for authentication.
+    authParameters :: Prelude.Maybe [AuthParameter],
+    -- | The authentication type that the custom connector uses.
+    customAuthenticationType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomAuthConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'authParameters', 'customAuthConfig_authParameters' - Information about authentication parameters required for authentication.
+--
+-- 'customAuthenticationType', 'customAuthConfig_customAuthenticationType' - The authentication type that the custom connector uses.
+newCustomAuthConfig ::
+  CustomAuthConfig
+newCustomAuthConfig =
+  CustomAuthConfig'
+    { authParameters = Prelude.Nothing,
+      customAuthenticationType = Prelude.Nothing
+    }
+
+-- | Information about authentication parameters required for authentication.
+customAuthConfig_authParameters :: Lens.Lens' CustomAuthConfig (Prelude.Maybe [AuthParameter])
+customAuthConfig_authParameters = Lens.lens (\CustomAuthConfig' {authParameters} -> authParameters) (\s@CustomAuthConfig' {} a -> s {authParameters = a} :: CustomAuthConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The authentication type that the custom connector uses.
+customAuthConfig_customAuthenticationType :: Lens.Lens' CustomAuthConfig (Prelude.Maybe Prelude.Text)
+customAuthConfig_customAuthenticationType = Lens.lens (\CustomAuthConfig' {customAuthenticationType} -> customAuthenticationType) (\s@CustomAuthConfig' {} a -> s {customAuthenticationType = a} :: CustomAuthConfig)
+
+instance Data.FromJSON CustomAuthConfig where
+  parseJSON =
+    Data.withObject
+      "CustomAuthConfig"
+      ( \x ->
+          CustomAuthConfig'
+            Prelude.<$> (x Data..:? "authParameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "customAuthenticationType")
+      )
+
+instance Prelude.Hashable CustomAuthConfig where
+  hashWithSalt _salt CustomAuthConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` authParameters
+      `Prelude.hashWithSalt` customAuthenticationType
+
+instance Prelude.NFData CustomAuthConfig where
+  rnf CustomAuthConfig' {..} =
+    Prelude.rnf authParameters
+      `Prelude.seq` Prelude.rnf customAuthenticationType
diff --git a/gen/Amazonka/AppFlow/Types/CustomAuthCredentials.hs b/gen/Amazonka/AppFlow/Types/CustomAuthCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomAuthCredentials.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.AppFlow.Types.CustomAuthCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomAuthCredentials where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The custom credentials required for custom authentication.
+--
+-- /See:/ 'newCustomAuthCredentials' smart constructor.
+data CustomAuthCredentials = CustomAuthCredentials'
+  { -- | A map that holds custom authentication credentials.
+    credentialsMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The custom authentication type that the connector uses.
+    customAuthenticationType :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomAuthCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'credentialsMap', 'customAuthCredentials_credentialsMap' - A map that holds custom authentication credentials.
+--
+-- 'customAuthenticationType', 'customAuthCredentials_customAuthenticationType' - The custom authentication type that the connector uses.
+newCustomAuthCredentials ::
+  -- | 'customAuthenticationType'
+  Prelude.Text ->
+  CustomAuthCredentials
+newCustomAuthCredentials pCustomAuthenticationType_ =
+  CustomAuthCredentials'
+    { credentialsMap =
+        Prelude.Nothing,
+      customAuthenticationType =
+        pCustomAuthenticationType_
+    }
+
+-- | A map that holds custom authentication credentials.
+customAuthCredentials_credentialsMap :: Lens.Lens' CustomAuthCredentials (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+customAuthCredentials_credentialsMap = Lens.lens (\CustomAuthCredentials' {credentialsMap} -> credentialsMap) (\s@CustomAuthCredentials' {} a -> s {credentialsMap = a} :: CustomAuthCredentials) Prelude.. Lens.mapping Lens.coerced
+
+-- | The custom authentication type that the connector uses.
+customAuthCredentials_customAuthenticationType :: Lens.Lens' CustomAuthCredentials Prelude.Text
+customAuthCredentials_customAuthenticationType = Lens.lens (\CustomAuthCredentials' {customAuthenticationType} -> customAuthenticationType) (\s@CustomAuthCredentials' {} a -> s {customAuthenticationType = a} :: CustomAuthCredentials)
+
+instance Prelude.Hashable CustomAuthCredentials where
+  hashWithSalt _salt CustomAuthCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` credentialsMap
+      `Prelude.hashWithSalt` customAuthenticationType
+
+instance Prelude.NFData CustomAuthCredentials where
+  rnf CustomAuthCredentials' {..} =
+    Prelude.rnf credentialsMap
+      `Prelude.seq` Prelude.rnf customAuthenticationType
+
+instance Data.ToJSON CustomAuthCredentials where
+  toJSON CustomAuthCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("credentialsMap" Data..=)
+              Prelude.<$> credentialsMap,
+            Prelude.Just
+              ( "customAuthenticationType"
+                  Data..= customAuthenticationType
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CustomConnectorDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/CustomConnectorDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomConnectorDestinationProperties.hs
@@ -0,0 +1,173 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.CustomConnectorDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomConnectorDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import Amazonka.AppFlow.Types.WriteOperationType
+import qualified 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 properties that are applied when the custom connector is being used
+-- as a destination.
+--
+-- /See:/ 'newCustomConnectorDestinationProperties' smart constructor.
+data CustomConnectorDestinationProperties = CustomConnectorDestinationProperties'
+  { -- | The custom properties that are specific to the connector when it\'s used
+    -- as a destination in the flow.
+    customProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The settings that determine how Amazon AppFlow handles an error when
+    -- placing data in the custom connector as destination.
+    errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The name of the field that Amazon AppFlow uses as an ID when performing
+    -- a write operation such as update, delete, or upsert.
+    idFieldNames :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies the type of write operation to be performed in the custom
+    -- connector when it\'s used as destination.
+    writeOperationType :: Prelude.Maybe WriteOperationType,
+    -- | The entity specified in the custom connector as a destination in the
+    -- flow.
+    entityName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomConnectorDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customProperties', 'customConnectorDestinationProperties_customProperties' - The custom properties that are specific to the connector when it\'s used
+-- as a destination in the flow.
+--
+-- 'errorHandlingConfig', 'customConnectorDestinationProperties_errorHandlingConfig' - The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the custom connector as destination.
+--
+-- 'idFieldNames', 'customConnectorDestinationProperties_idFieldNames' - The name of the field that Amazon AppFlow uses as an ID when performing
+-- a write operation such as update, delete, or upsert.
+--
+-- 'writeOperationType', 'customConnectorDestinationProperties_writeOperationType' - Specifies the type of write operation to be performed in the custom
+-- connector when it\'s used as destination.
+--
+-- 'entityName', 'customConnectorDestinationProperties_entityName' - The entity specified in the custom connector as a destination in the
+-- flow.
+newCustomConnectorDestinationProperties ::
+  -- | 'entityName'
+  Prelude.Text ->
+  CustomConnectorDestinationProperties
+newCustomConnectorDestinationProperties pEntityName_ =
+  CustomConnectorDestinationProperties'
+    { customProperties =
+        Prelude.Nothing,
+      errorHandlingConfig = Prelude.Nothing,
+      idFieldNames = Prelude.Nothing,
+      writeOperationType = Prelude.Nothing,
+      entityName = pEntityName_
+    }
+
+-- | The custom properties that are specific to the connector when it\'s used
+-- as a destination in the flow.
+customConnectorDestinationProperties_customProperties :: Lens.Lens' CustomConnectorDestinationProperties (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+customConnectorDestinationProperties_customProperties = Lens.lens (\CustomConnectorDestinationProperties' {customProperties} -> customProperties) (\s@CustomConnectorDestinationProperties' {} a -> s {customProperties = a} :: CustomConnectorDestinationProperties) Prelude.. Lens.mapping Lens.coerced
+
+-- | The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the custom connector as destination.
+customConnectorDestinationProperties_errorHandlingConfig :: Lens.Lens' CustomConnectorDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+customConnectorDestinationProperties_errorHandlingConfig = Lens.lens (\CustomConnectorDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@CustomConnectorDestinationProperties' {} a -> s {errorHandlingConfig = a} :: CustomConnectorDestinationProperties)
+
+-- | The name of the field that Amazon AppFlow uses as an ID when performing
+-- a write operation such as update, delete, or upsert.
+customConnectorDestinationProperties_idFieldNames :: Lens.Lens' CustomConnectorDestinationProperties (Prelude.Maybe [Prelude.Text])
+customConnectorDestinationProperties_idFieldNames = Lens.lens (\CustomConnectorDestinationProperties' {idFieldNames} -> idFieldNames) (\s@CustomConnectorDestinationProperties' {} a -> s {idFieldNames = a} :: CustomConnectorDestinationProperties) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the type of write operation to be performed in the custom
+-- connector when it\'s used as destination.
+customConnectorDestinationProperties_writeOperationType :: Lens.Lens' CustomConnectorDestinationProperties (Prelude.Maybe WriteOperationType)
+customConnectorDestinationProperties_writeOperationType = Lens.lens (\CustomConnectorDestinationProperties' {writeOperationType} -> writeOperationType) (\s@CustomConnectorDestinationProperties' {} a -> s {writeOperationType = a} :: CustomConnectorDestinationProperties)
+
+-- | The entity specified in the custom connector as a destination in the
+-- flow.
+customConnectorDestinationProperties_entityName :: Lens.Lens' CustomConnectorDestinationProperties Prelude.Text
+customConnectorDestinationProperties_entityName = Lens.lens (\CustomConnectorDestinationProperties' {entityName} -> entityName) (\s@CustomConnectorDestinationProperties' {} a -> s {entityName = a} :: CustomConnectorDestinationProperties)
+
+instance
+  Data.FromJSON
+    CustomConnectorDestinationProperties
+  where
+  parseJSON =
+    Data.withObject
+      "CustomConnectorDestinationProperties"
+      ( \x ->
+          CustomConnectorDestinationProperties'
+            Prelude.<$> ( x
+                            Data..:? "customProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..:? "idFieldNames" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "writeOperationType")
+            Prelude.<*> (x Data..: "entityName")
+      )
+
+instance
+  Prelude.Hashable
+    CustomConnectorDestinationProperties
+  where
+  hashWithSalt
+    _salt
+    CustomConnectorDestinationProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` customProperties
+        `Prelude.hashWithSalt` errorHandlingConfig
+        `Prelude.hashWithSalt` idFieldNames
+        `Prelude.hashWithSalt` writeOperationType
+        `Prelude.hashWithSalt` entityName
+
+instance
+  Prelude.NFData
+    CustomConnectorDestinationProperties
+  where
+  rnf CustomConnectorDestinationProperties' {..} =
+    Prelude.rnf customProperties
+      `Prelude.seq` Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf idFieldNames
+      `Prelude.seq` Prelude.rnf writeOperationType
+      `Prelude.seq` Prelude.rnf entityName
+
+instance
+  Data.ToJSON
+    CustomConnectorDestinationProperties
+  where
+  toJSON CustomConnectorDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("customProperties" Data..=)
+              Prelude.<$> customProperties,
+            ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            ("idFieldNames" Data..=) Prelude.<$> idFieldNames,
+            ("writeOperationType" Data..=)
+              Prelude.<$> writeOperationType,
+            Prelude.Just ("entityName" Data..= entityName)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CustomConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/CustomConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomConnectorProfileCredentials.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.AppFlow.Types.CustomConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ApiKeyCredentials
+import Amazonka.AppFlow.Types.AuthenticationType
+import Amazonka.AppFlow.Types.BasicAuthCredentials
+import Amazonka.AppFlow.Types.CustomAuthCredentials
+import Amazonka.AppFlow.Types.OAuth2Credentials
+import qualified 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 connector-specific profile credentials that are required when using
+-- the custom connector.
+--
+-- /See:/ 'newCustomConnectorProfileCredentials' smart constructor.
+data CustomConnectorProfileCredentials = CustomConnectorProfileCredentials'
+  { -- | The API keys required for the authentication of the user.
+    apiKey :: Prelude.Maybe ApiKeyCredentials,
+    -- | The basic credentials that are required for the authentication of the
+    -- user.
+    basic :: Prelude.Maybe BasicAuthCredentials,
+    -- | If the connector uses the custom authentication mechanism, this holds
+    -- the required credentials.
+    custom :: Prelude.Maybe CustomAuthCredentials,
+    -- | The OAuth 2.0 credentials required for the authentication of the user.
+    oauth2 :: Prelude.Maybe OAuth2Credentials,
+    -- | The authentication type that the custom connector uses for
+    -- authenticating while creating a connector profile.
+    authenticationType :: AuthenticationType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiKey', 'customConnectorProfileCredentials_apiKey' - The API keys required for the authentication of the user.
+--
+-- 'basic', 'customConnectorProfileCredentials_basic' - The basic credentials that are required for the authentication of the
+-- user.
+--
+-- 'custom', 'customConnectorProfileCredentials_custom' - If the connector uses the custom authentication mechanism, this holds
+-- the required credentials.
+--
+-- 'oauth2', 'customConnectorProfileCredentials_oauth2' - The OAuth 2.0 credentials required for the authentication of the user.
+--
+-- 'authenticationType', 'customConnectorProfileCredentials_authenticationType' - The authentication type that the custom connector uses for
+-- authenticating while creating a connector profile.
+newCustomConnectorProfileCredentials ::
+  -- | 'authenticationType'
+  AuthenticationType ->
+  CustomConnectorProfileCredentials
+newCustomConnectorProfileCredentials
+  pAuthenticationType_ =
+    CustomConnectorProfileCredentials'
+      { apiKey =
+          Prelude.Nothing,
+        basic = Prelude.Nothing,
+        custom = Prelude.Nothing,
+        oauth2 = Prelude.Nothing,
+        authenticationType =
+          pAuthenticationType_
+      }
+
+-- | The API keys required for the authentication of the user.
+customConnectorProfileCredentials_apiKey :: Lens.Lens' CustomConnectorProfileCredentials (Prelude.Maybe ApiKeyCredentials)
+customConnectorProfileCredentials_apiKey = Lens.lens (\CustomConnectorProfileCredentials' {apiKey} -> apiKey) (\s@CustomConnectorProfileCredentials' {} a -> s {apiKey = a} :: CustomConnectorProfileCredentials)
+
+-- | The basic credentials that are required for the authentication of the
+-- user.
+customConnectorProfileCredentials_basic :: Lens.Lens' CustomConnectorProfileCredentials (Prelude.Maybe BasicAuthCredentials)
+customConnectorProfileCredentials_basic = Lens.lens (\CustomConnectorProfileCredentials' {basic} -> basic) (\s@CustomConnectorProfileCredentials' {} a -> s {basic = a} :: CustomConnectorProfileCredentials)
+
+-- | If the connector uses the custom authentication mechanism, this holds
+-- the required credentials.
+customConnectorProfileCredentials_custom :: Lens.Lens' CustomConnectorProfileCredentials (Prelude.Maybe CustomAuthCredentials)
+customConnectorProfileCredentials_custom = Lens.lens (\CustomConnectorProfileCredentials' {custom} -> custom) (\s@CustomConnectorProfileCredentials' {} a -> s {custom = a} :: CustomConnectorProfileCredentials)
+
+-- | The OAuth 2.0 credentials required for the authentication of the user.
+customConnectorProfileCredentials_oauth2 :: Lens.Lens' CustomConnectorProfileCredentials (Prelude.Maybe OAuth2Credentials)
+customConnectorProfileCredentials_oauth2 = Lens.lens (\CustomConnectorProfileCredentials' {oauth2} -> oauth2) (\s@CustomConnectorProfileCredentials' {} a -> s {oauth2 = a} :: CustomConnectorProfileCredentials)
+
+-- | The authentication type that the custom connector uses for
+-- authenticating while creating a connector profile.
+customConnectorProfileCredentials_authenticationType :: Lens.Lens' CustomConnectorProfileCredentials AuthenticationType
+customConnectorProfileCredentials_authenticationType = Lens.lens (\CustomConnectorProfileCredentials' {authenticationType} -> authenticationType) (\s@CustomConnectorProfileCredentials' {} a -> s {authenticationType = a} :: CustomConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    CustomConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    CustomConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` apiKey
+        `Prelude.hashWithSalt` basic
+        `Prelude.hashWithSalt` custom
+        `Prelude.hashWithSalt` oauth2
+        `Prelude.hashWithSalt` authenticationType
+
+instance
+  Prelude.NFData
+    CustomConnectorProfileCredentials
+  where
+  rnf CustomConnectorProfileCredentials' {..} =
+    Prelude.rnf apiKey
+      `Prelude.seq` Prelude.rnf basic
+      `Prelude.seq` Prelude.rnf custom
+      `Prelude.seq` Prelude.rnf oauth2
+      `Prelude.seq` Prelude.rnf authenticationType
+
+instance
+  Data.ToJSON
+    CustomConnectorProfileCredentials
+  where
+  toJSON CustomConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("apiKey" Data..=) Prelude.<$> apiKey,
+            ("basic" Data..=) Prelude.<$> basic,
+            ("custom" Data..=) Prelude.<$> custom,
+            ("oauth2" Data..=) Prelude.<$> oauth2,
+            Prelude.Just
+              ("authenticationType" Data..= authenticationType)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CustomConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/CustomConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomConnectorProfileProperties.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.CustomConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomConnectorProfileProperties where
+
+import Amazonka.AppFlow.Types.OAuth2Properties
+import qualified 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 profile properties required by the custom connector.
+--
+-- /See:/ 'newCustomConnectorProfileProperties' smart constructor.
+data CustomConnectorProfileProperties = CustomConnectorProfileProperties'
+  { oAuth2Properties :: Prelude.Maybe OAuth2Properties,
+    -- | A map of properties that are required to create a profile for the custom
+    -- connector.
+    profileProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'oAuth2Properties', 'customConnectorProfileProperties_oAuth2Properties' - Undocumented member.
+--
+-- 'profileProperties', 'customConnectorProfileProperties_profileProperties' - A map of properties that are required to create a profile for the custom
+-- connector.
+newCustomConnectorProfileProperties ::
+  CustomConnectorProfileProperties
+newCustomConnectorProfileProperties =
+  CustomConnectorProfileProperties'
+    { oAuth2Properties =
+        Prelude.Nothing,
+      profileProperties = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+customConnectorProfileProperties_oAuth2Properties :: Lens.Lens' CustomConnectorProfileProperties (Prelude.Maybe OAuth2Properties)
+customConnectorProfileProperties_oAuth2Properties = Lens.lens (\CustomConnectorProfileProperties' {oAuth2Properties} -> oAuth2Properties) (\s@CustomConnectorProfileProperties' {} a -> s {oAuth2Properties = a} :: CustomConnectorProfileProperties)
+
+-- | A map of properties that are required to create a profile for the custom
+-- connector.
+customConnectorProfileProperties_profileProperties :: Lens.Lens' CustomConnectorProfileProperties (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+customConnectorProfileProperties_profileProperties = Lens.lens (\CustomConnectorProfileProperties' {profileProperties} -> profileProperties) (\s@CustomConnectorProfileProperties' {} a -> s {profileProperties = a} :: CustomConnectorProfileProperties) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    CustomConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "CustomConnectorProfileProperties"
+      ( \x ->
+          CustomConnectorProfileProperties'
+            Prelude.<$> (x Data..:? "oAuth2Properties")
+            Prelude.<*> ( x
+                            Data..:? "profileProperties"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    CustomConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    CustomConnectorProfileProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` oAuth2Properties
+        `Prelude.hashWithSalt` profileProperties
+
+instance
+  Prelude.NFData
+    CustomConnectorProfileProperties
+  where
+  rnf CustomConnectorProfileProperties' {..} =
+    Prelude.rnf oAuth2Properties
+      `Prelude.seq` Prelude.rnf profileProperties
+
+instance Data.ToJSON CustomConnectorProfileProperties where
+  toJSON CustomConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("oAuth2Properties" Data..=)
+              Prelude.<$> oAuth2Properties,
+            ("profileProperties" Data..=)
+              Prelude.<$> profileProperties
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CustomConnectorSourceProperties.hs b/gen/Amazonka/AppFlow/Types/CustomConnectorSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomConnectorSourceProperties.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.CustomConnectorSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomConnectorSourceProperties where
+
+import qualified 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 properties that are applied when the custom connector is being used
+-- as a source.
+--
+-- /See:/ 'newCustomConnectorSourceProperties' smart constructor.
+data CustomConnectorSourceProperties = CustomConnectorSourceProperties'
+  { -- | Custom properties that are required to use the custom connector as a
+    -- source.
+    customProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The entity specified in the custom connector as a source in the flow.
+    entityName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomConnectorSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customProperties', 'customConnectorSourceProperties_customProperties' - Custom properties that are required to use the custom connector as a
+-- source.
+--
+-- 'entityName', 'customConnectorSourceProperties_entityName' - The entity specified in the custom connector as a source in the flow.
+newCustomConnectorSourceProperties ::
+  -- | 'entityName'
+  Prelude.Text ->
+  CustomConnectorSourceProperties
+newCustomConnectorSourceProperties pEntityName_ =
+  CustomConnectorSourceProperties'
+    { customProperties =
+        Prelude.Nothing,
+      entityName = pEntityName_
+    }
+
+-- | Custom properties that are required to use the custom connector as a
+-- source.
+customConnectorSourceProperties_customProperties :: Lens.Lens' CustomConnectorSourceProperties (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+customConnectorSourceProperties_customProperties = Lens.lens (\CustomConnectorSourceProperties' {customProperties} -> customProperties) (\s@CustomConnectorSourceProperties' {} a -> s {customProperties = a} :: CustomConnectorSourceProperties) Prelude.. Lens.mapping Lens.coerced
+
+-- | The entity specified in the custom connector as a source in the flow.
+customConnectorSourceProperties_entityName :: Lens.Lens' CustomConnectorSourceProperties Prelude.Text
+customConnectorSourceProperties_entityName = Lens.lens (\CustomConnectorSourceProperties' {entityName} -> entityName) (\s@CustomConnectorSourceProperties' {} a -> s {entityName = a} :: CustomConnectorSourceProperties)
+
+instance
+  Data.FromJSON
+    CustomConnectorSourceProperties
+  where
+  parseJSON =
+    Data.withObject
+      "CustomConnectorSourceProperties"
+      ( \x ->
+          CustomConnectorSourceProperties'
+            Prelude.<$> ( x
+                            Data..:? "customProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "entityName")
+      )
+
+instance
+  Prelude.Hashable
+    CustomConnectorSourceProperties
+  where
+  hashWithSalt
+    _salt
+    CustomConnectorSourceProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` customProperties
+        `Prelude.hashWithSalt` entityName
+
+instance
+  Prelude.NFData
+    CustomConnectorSourceProperties
+  where
+  rnf CustomConnectorSourceProperties' {..} =
+    Prelude.rnf customProperties
+      `Prelude.seq` Prelude.rnf entityName
+
+instance Data.ToJSON CustomConnectorSourceProperties where
+  toJSON CustomConnectorSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("customProperties" Data..=)
+              Prelude.<$> customProperties,
+            Prelude.Just ("entityName" Data..= entityName)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CustomerProfilesDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/CustomerProfilesDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomerProfilesDestinationProperties.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties where
+
+import qualified 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 properties that are applied when Amazon Connect Customer Profiles is
+-- used as a destination.
+--
+-- /See:/ 'newCustomerProfilesDestinationProperties' smart constructor.
+data CustomerProfilesDestinationProperties = CustomerProfilesDestinationProperties'
+  { -- | The object specified in the Amazon Connect Customer Profiles flow
+    -- destination.
+    objectTypeName :: Prelude.Maybe Prelude.Text,
+    -- | The unique name of the Amazon Connect Customer Profiles domain.
+    domainName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerProfilesDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'objectTypeName', 'customerProfilesDestinationProperties_objectTypeName' - The object specified in the Amazon Connect Customer Profiles flow
+-- destination.
+--
+-- 'domainName', 'customerProfilesDestinationProperties_domainName' - The unique name of the Amazon Connect Customer Profiles domain.
+newCustomerProfilesDestinationProperties ::
+  -- | 'domainName'
+  Prelude.Text ->
+  CustomerProfilesDestinationProperties
+newCustomerProfilesDestinationProperties pDomainName_ =
+  CustomerProfilesDestinationProperties'
+    { objectTypeName =
+        Prelude.Nothing,
+      domainName = pDomainName_
+    }
+
+-- | The object specified in the Amazon Connect Customer Profiles flow
+-- destination.
+customerProfilesDestinationProperties_objectTypeName :: Lens.Lens' CustomerProfilesDestinationProperties (Prelude.Maybe Prelude.Text)
+customerProfilesDestinationProperties_objectTypeName = Lens.lens (\CustomerProfilesDestinationProperties' {objectTypeName} -> objectTypeName) (\s@CustomerProfilesDestinationProperties' {} a -> s {objectTypeName = a} :: CustomerProfilesDestinationProperties)
+
+-- | The unique name of the Amazon Connect Customer Profiles domain.
+customerProfilesDestinationProperties_domainName :: Lens.Lens' CustomerProfilesDestinationProperties Prelude.Text
+customerProfilesDestinationProperties_domainName = Lens.lens (\CustomerProfilesDestinationProperties' {domainName} -> domainName) (\s@CustomerProfilesDestinationProperties' {} a -> s {domainName = a} :: CustomerProfilesDestinationProperties)
+
+instance
+  Data.FromJSON
+    CustomerProfilesDestinationProperties
+  where
+  parseJSON =
+    Data.withObject
+      "CustomerProfilesDestinationProperties"
+      ( \x ->
+          CustomerProfilesDestinationProperties'
+            Prelude.<$> (x Data..:? "objectTypeName")
+            Prelude.<*> (x Data..: "domainName")
+      )
+
+instance
+  Prelude.Hashable
+    CustomerProfilesDestinationProperties
+  where
+  hashWithSalt
+    _salt
+    CustomerProfilesDestinationProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` objectTypeName
+        `Prelude.hashWithSalt` domainName
+
+instance
+  Prelude.NFData
+    CustomerProfilesDestinationProperties
+  where
+  rnf CustomerProfilesDestinationProperties' {..} =
+    Prelude.rnf objectTypeName
+      `Prelude.seq` Prelude.rnf domainName
+
+instance
+  Data.ToJSON
+    CustomerProfilesDestinationProperties
+  where
+  toJSON CustomerProfilesDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("objectTypeName" Data..=)
+              Prelude.<$> objectTypeName,
+            Prelude.Just ("domainName" Data..= domainName)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/CustomerProfilesMetadata.hs b/gen/Amazonka/AppFlow/Types/CustomerProfilesMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/CustomerProfilesMetadata.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.CustomerProfilesMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.CustomerProfilesMetadata where
+
+import qualified 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 connector metadata specific to Amazon Connect Customer Profiles.
+--
+-- /See:/ 'newCustomerProfilesMetadata' smart constructor.
+data CustomerProfilesMetadata = CustomerProfilesMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerProfilesMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newCustomerProfilesMetadata ::
+  CustomerProfilesMetadata
+newCustomerProfilesMetadata =
+  CustomerProfilesMetadata'
+
+instance Data.FromJSON CustomerProfilesMetadata where
+  parseJSON =
+    Data.withObject
+      "CustomerProfilesMetadata"
+      (\x -> Prelude.pure CustomerProfilesMetadata')
+
+instance Prelude.Hashable CustomerProfilesMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData CustomerProfilesMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/DataPullMode.hs b/gen/Amazonka/AppFlow/Types/DataPullMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DataPullMode.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.AppFlow.Types.DataPullMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DataPullMode
+  ( DataPullMode
+      ( ..,
+        DataPullMode_Complete,
+        DataPullMode_Incremental
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataPullMode = DataPullMode'
+  { fromDataPullMode ::
+      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 DataPullMode_Complete :: DataPullMode
+pattern DataPullMode_Complete = DataPullMode' "Complete"
+
+pattern DataPullMode_Incremental :: DataPullMode
+pattern DataPullMode_Incremental = DataPullMode' "Incremental"
+
+{-# COMPLETE
+  DataPullMode_Complete,
+  DataPullMode_Incremental,
+  DataPullMode'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/DatadogConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/DatadogConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DatadogConnectorOperator.hs
@@ -0,0 +1,136 @@
+{-# 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.AppFlow.Types.DatadogConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DatadogConnectorOperator
+  ( DatadogConnectorOperator
+      ( ..,
+        DatadogConnectorOperator_ADDITION,
+        DatadogConnectorOperator_BETWEEN,
+        DatadogConnectorOperator_DIVISION,
+        DatadogConnectorOperator_EQUAL_TO,
+        DatadogConnectorOperator_MASK_ALL,
+        DatadogConnectorOperator_MASK_FIRST_N,
+        DatadogConnectorOperator_MASK_LAST_N,
+        DatadogConnectorOperator_MULTIPLICATION,
+        DatadogConnectorOperator_NO_OP,
+        DatadogConnectorOperator_PROJECTION,
+        DatadogConnectorOperator_SUBTRACTION,
+        DatadogConnectorOperator_VALIDATE_NON_NEGATIVE,
+        DatadogConnectorOperator_VALIDATE_NON_NULL,
+        DatadogConnectorOperator_VALIDATE_NON_ZERO,
+        DatadogConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DatadogConnectorOperator = DatadogConnectorOperator'
+  { fromDatadogConnectorOperator ::
+      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 DatadogConnectorOperator_ADDITION :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_ADDITION = DatadogConnectorOperator' "ADDITION"
+
+pattern DatadogConnectorOperator_BETWEEN :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_BETWEEN = DatadogConnectorOperator' "BETWEEN"
+
+pattern DatadogConnectorOperator_DIVISION :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_DIVISION = DatadogConnectorOperator' "DIVISION"
+
+pattern DatadogConnectorOperator_EQUAL_TO :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_EQUAL_TO = DatadogConnectorOperator' "EQUAL_TO"
+
+pattern DatadogConnectorOperator_MASK_ALL :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_MASK_ALL = DatadogConnectorOperator' "MASK_ALL"
+
+pattern DatadogConnectorOperator_MASK_FIRST_N :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_MASK_FIRST_N = DatadogConnectorOperator' "MASK_FIRST_N"
+
+pattern DatadogConnectorOperator_MASK_LAST_N :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_MASK_LAST_N = DatadogConnectorOperator' "MASK_LAST_N"
+
+pattern DatadogConnectorOperator_MULTIPLICATION :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_MULTIPLICATION = DatadogConnectorOperator' "MULTIPLICATION"
+
+pattern DatadogConnectorOperator_NO_OP :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_NO_OP = DatadogConnectorOperator' "NO_OP"
+
+pattern DatadogConnectorOperator_PROJECTION :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_PROJECTION = DatadogConnectorOperator' "PROJECTION"
+
+pattern DatadogConnectorOperator_SUBTRACTION :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_SUBTRACTION = DatadogConnectorOperator' "SUBTRACTION"
+
+pattern DatadogConnectorOperator_VALIDATE_NON_NEGATIVE :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_VALIDATE_NON_NEGATIVE = DatadogConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern DatadogConnectorOperator_VALIDATE_NON_NULL :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_VALIDATE_NON_NULL = DatadogConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern DatadogConnectorOperator_VALIDATE_NON_ZERO :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_VALIDATE_NON_ZERO = DatadogConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern DatadogConnectorOperator_VALIDATE_NUMERIC :: DatadogConnectorOperator
+pattern DatadogConnectorOperator_VALIDATE_NUMERIC = DatadogConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  DatadogConnectorOperator_ADDITION,
+  DatadogConnectorOperator_BETWEEN,
+  DatadogConnectorOperator_DIVISION,
+  DatadogConnectorOperator_EQUAL_TO,
+  DatadogConnectorOperator_MASK_ALL,
+  DatadogConnectorOperator_MASK_FIRST_N,
+  DatadogConnectorOperator_MASK_LAST_N,
+  DatadogConnectorOperator_MULTIPLICATION,
+  DatadogConnectorOperator_NO_OP,
+  DatadogConnectorOperator_PROJECTION,
+  DatadogConnectorOperator_SUBTRACTION,
+  DatadogConnectorOperator_VALIDATE_NON_NEGATIVE,
+  DatadogConnectorOperator_VALIDATE_NON_NULL,
+  DatadogConnectorOperator_VALIDATE_NON_ZERO,
+  DatadogConnectorOperator_VALIDATE_NUMERIC,
+  DatadogConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/DatadogConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/DatadogConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DatadogConnectorProfileCredentials.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.AppFlow.Types.DatadogConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DatadogConnectorProfileCredentials where
+
+import qualified 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 connector-specific credentials required by Datadog.
+--
+-- /See:/ 'newDatadogConnectorProfileCredentials' smart constructor.
+data DatadogConnectorProfileCredentials = DatadogConnectorProfileCredentials'
+  { -- | A unique alphanumeric identifier used to authenticate a user, developer,
+    -- or calling program to your API.
+    apiKey :: Data.Sensitive Prelude.Text,
+    -- | Application keys, in conjunction with your API key, give you full access
+    -- to Datadog’s programmatic API. Application keys are associated with the
+    -- user account that created them. The application key is used to log all
+    -- requests made to the API.
+    applicationKey :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatadogConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiKey', 'datadogConnectorProfileCredentials_apiKey' - A unique alphanumeric identifier used to authenticate a user, developer,
+-- or calling program to your API.
+--
+-- 'applicationKey', 'datadogConnectorProfileCredentials_applicationKey' - Application keys, in conjunction with your API key, give you full access
+-- to Datadog’s programmatic API. Application keys are associated with the
+-- user account that created them. The application key is used to log all
+-- requests made to the API.
+newDatadogConnectorProfileCredentials ::
+  -- | 'apiKey'
+  Prelude.Text ->
+  -- | 'applicationKey'
+  Prelude.Text ->
+  DatadogConnectorProfileCredentials
+newDatadogConnectorProfileCredentials
+  pApiKey_
+  pApplicationKey_ =
+    DatadogConnectorProfileCredentials'
+      { apiKey =
+          Data._Sensitive Lens.# pApiKey_,
+        applicationKey = pApplicationKey_
+      }
+
+-- | A unique alphanumeric identifier used to authenticate a user, developer,
+-- or calling program to your API.
+datadogConnectorProfileCredentials_apiKey :: Lens.Lens' DatadogConnectorProfileCredentials Prelude.Text
+datadogConnectorProfileCredentials_apiKey = Lens.lens (\DatadogConnectorProfileCredentials' {apiKey} -> apiKey) (\s@DatadogConnectorProfileCredentials' {} a -> s {apiKey = a} :: DatadogConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+-- | Application keys, in conjunction with your API key, give you full access
+-- to Datadog’s programmatic API. Application keys are associated with the
+-- user account that created them. The application key is used to log all
+-- requests made to the API.
+datadogConnectorProfileCredentials_applicationKey :: Lens.Lens' DatadogConnectorProfileCredentials Prelude.Text
+datadogConnectorProfileCredentials_applicationKey = Lens.lens (\DatadogConnectorProfileCredentials' {applicationKey} -> applicationKey) (\s@DatadogConnectorProfileCredentials' {} a -> s {applicationKey = a} :: DatadogConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    DatadogConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    DatadogConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` apiKey
+        `Prelude.hashWithSalt` applicationKey
+
+instance
+  Prelude.NFData
+    DatadogConnectorProfileCredentials
+  where
+  rnf DatadogConnectorProfileCredentials' {..} =
+    Prelude.rnf apiKey
+      `Prelude.seq` Prelude.rnf applicationKey
+
+instance
+  Data.ToJSON
+    DatadogConnectorProfileCredentials
+  where
+  toJSON DatadogConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("apiKey" Data..= apiKey),
+            Prelude.Just
+              ("applicationKey" Data..= applicationKey)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DatadogConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/DatadogConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DatadogConnectorProfileProperties.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.AppFlow.Types.DatadogConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DatadogConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required by Datadog.
+--
+-- /See:/ 'newDatadogConnectorProfileProperties' smart constructor.
+data DatadogConnectorProfileProperties = DatadogConnectorProfileProperties'
+  { -- | The location of the Datadog resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatadogConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'datadogConnectorProfileProperties_instanceUrl' - The location of the Datadog resource.
+newDatadogConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  DatadogConnectorProfileProperties
+newDatadogConnectorProfileProperties pInstanceUrl_ =
+  DatadogConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Datadog resource.
+datadogConnectorProfileProperties_instanceUrl :: Lens.Lens' DatadogConnectorProfileProperties Prelude.Text
+datadogConnectorProfileProperties_instanceUrl = Lens.lens (\DatadogConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@DatadogConnectorProfileProperties' {} a -> s {instanceUrl = a} :: DatadogConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    DatadogConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "DatadogConnectorProfileProperties"
+      ( \x ->
+          DatadogConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    DatadogConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    DatadogConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    DatadogConnectorProfileProperties
+  where
+  rnf DatadogConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance
+  Data.ToJSON
+    DatadogConnectorProfileProperties
+  where
+  toJSON DatadogConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DatadogMetadata.hs b/gen/Amazonka/AppFlow/Types/DatadogMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DatadogMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.DatadogMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DatadogMetadata where
+
+import qualified 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 connector metadata specific to Datadog.
+--
+-- /See:/ 'newDatadogMetadata' smart constructor.
+data DatadogMetadata = DatadogMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatadogMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDatadogMetadata ::
+  DatadogMetadata
+newDatadogMetadata = DatadogMetadata'
+
+instance Data.FromJSON DatadogMetadata where
+  parseJSON =
+    Data.withObject
+      "DatadogMetadata"
+      (\x -> Prelude.pure DatadogMetadata')
+
+instance Prelude.Hashable DatadogMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData DatadogMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/DatadogSourceProperties.hs b/gen/Amazonka/AppFlow/Types/DatadogSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DatadogSourceProperties.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.DatadogSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DatadogSourceProperties where
+
+import qualified 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 properties that are applied when Datadog is being used as a source.
+--
+-- /See:/ 'newDatadogSourceProperties' smart constructor.
+data DatadogSourceProperties = DatadogSourceProperties'
+  { -- | The object specified in the Datadog flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatadogSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'datadogSourceProperties_object' - The object specified in the Datadog flow source.
+newDatadogSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  DatadogSourceProperties
+newDatadogSourceProperties pObject_ =
+  DatadogSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Datadog flow source.
+datadogSourceProperties_object :: Lens.Lens' DatadogSourceProperties Prelude.Text
+datadogSourceProperties_object = Lens.lens (\DatadogSourceProperties' {object'} -> object') (\s@DatadogSourceProperties' {} a -> s {object' = a} :: DatadogSourceProperties)
+
+instance Data.FromJSON DatadogSourceProperties where
+  parseJSON =
+    Data.withObject
+      "DatadogSourceProperties"
+      ( \x ->
+          DatadogSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable DatadogSourceProperties where
+  hashWithSalt _salt DatadogSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData DatadogSourceProperties where
+  rnf DatadogSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON DatadogSourceProperties where
+  toJSON DatadogSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DestinationConnectorProperties.hs b/gen/Amazonka/AppFlow/Types/DestinationConnectorProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DestinationConnectorProperties.hs
@@ -0,0 +1,262 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.DestinationConnectorProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DestinationConnectorProperties where
+
+import Amazonka.AppFlow.Types.CustomConnectorDestinationProperties
+import Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
+import Amazonka.AppFlow.Types.EventBridgeDestinationProperties
+import Amazonka.AppFlow.Types.HoneycodeDestinationProperties
+import Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
+import Amazonka.AppFlow.Types.MarketoDestinationProperties
+import Amazonka.AppFlow.Types.RedshiftDestinationProperties
+import Amazonka.AppFlow.Types.S3DestinationProperties
+import Amazonka.AppFlow.Types.SAPODataDestinationProperties
+import Amazonka.AppFlow.Types.SalesforceDestinationProperties
+import Amazonka.AppFlow.Types.SnowflakeDestinationProperties
+import Amazonka.AppFlow.Types.UpsolverDestinationProperties
+import Amazonka.AppFlow.Types.ZendeskDestinationProperties
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This stores the information that is required to query a particular
+-- connector.
+--
+-- /See:/ 'newDestinationConnectorProperties' smart constructor.
+data DestinationConnectorProperties = DestinationConnectorProperties'
+  { -- | The properties that are required to query the custom Connector.
+    customConnector :: Prelude.Maybe CustomConnectorDestinationProperties,
+    -- | The properties required to query Amazon Connect Customer Profiles.
+    customerProfiles :: Prelude.Maybe CustomerProfilesDestinationProperties,
+    -- | The properties required to query Amazon EventBridge.
+    eventBridge :: Prelude.Maybe EventBridgeDestinationProperties,
+    -- | The properties required to query Amazon Honeycode.
+    honeycode :: Prelude.Maybe HoneycodeDestinationProperties,
+    -- | The properties required to query Amazon Lookout for Metrics.
+    lookoutMetrics :: Prelude.Maybe LookoutMetricsDestinationProperties,
+    -- | The properties required to query Marketo.
+    marketo :: Prelude.Maybe MarketoDestinationProperties,
+    -- | The properties required to query Amazon Redshift.
+    redshift :: Prelude.Maybe RedshiftDestinationProperties,
+    -- | The properties required to query Amazon S3.
+    s3 :: Prelude.Maybe S3DestinationProperties,
+    -- | The properties required to query SAPOData.
+    sAPOData :: Prelude.Maybe SAPODataDestinationProperties,
+    -- | The properties required to query Salesforce.
+    salesforce :: Prelude.Maybe SalesforceDestinationProperties,
+    -- | The properties required to query Snowflake.
+    snowflake :: Prelude.Maybe SnowflakeDestinationProperties,
+    -- | The properties required to query Upsolver.
+    upsolver :: Prelude.Maybe UpsolverDestinationProperties,
+    -- | The properties required to query Zendesk.
+    zendesk :: Prelude.Maybe ZendeskDestinationProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DestinationConnectorProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customConnector', 'destinationConnectorProperties_customConnector' - The properties that are required to query the custom Connector.
+--
+-- 'customerProfiles', 'destinationConnectorProperties_customerProfiles' - The properties required to query Amazon Connect Customer Profiles.
+--
+-- 'eventBridge', 'destinationConnectorProperties_eventBridge' - The properties required to query Amazon EventBridge.
+--
+-- 'honeycode', 'destinationConnectorProperties_honeycode' - The properties required to query Amazon Honeycode.
+--
+-- 'lookoutMetrics', 'destinationConnectorProperties_lookoutMetrics' - The properties required to query Amazon Lookout for Metrics.
+--
+-- 'marketo', 'destinationConnectorProperties_marketo' - The properties required to query Marketo.
+--
+-- 'redshift', 'destinationConnectorProperties_redshift' - The properties required to query Amazon Redshift.
+--
+-- 's3', 'destinationConnectorProperties_s3' - The properties required to query Amazon S3.
+--
+-- 'sAPOData', 'destinationConnectorProperties_sAPOData' - The properties required to query SAPOData.
+--
+-- 'salesforce', 'destinationConnectorProperties_salesforce' - The properties required to query Salesforce.
+--
+-- 'snowflake', 'destinationConnectorProperties_snowflake' - The properties required to query Snowflake.
+--
+-- 'upsolver', 'destinationConnectorProperties_upsolver' - The properties required to query Upsolver.
+--
+-- 'zendesk', 'destinationConnectorProperties_zendesk' - The properties required to query Zendesk.
+newDestinationConnectorProperties ::
+  DestinationConnectorProperties
+newDestinationConnectorProperties =
+  DestinationConnectorProperties'
+    { customConnector =
+        Prelude.Nothing,
+      customerProfiles = Prelude.Nothing,
+      eventBridge = Prelude.Nothing,
+      honeycode = Prelude.Nothing,
+      lookoutMetrics = Prelude.Nothing,
+      marketo = Prelude.Nothing,
+      redshift = Prelude.Nothing,
+      s3 = Prelude.Nothing,
+      sAPOData = Prelude.Nothing,
+      salesforce = Prelude.Nothing,
+      snowflake = Prelude.Nothing,
+      upsolver = Prelude.Nothing,
+      zendesk = Prelude.Nothing
+    }
+
+-- | The properties that are required to query the custom Connector.
+destinationConnectorProperties_customConnector :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe CustomConnectorDestinationProperties)
+destinationConnectorProperties_customConnector = Lens.lens (\DestinationConnectorProperties' {customConnector} -> customConnector) (\s@DestinationConnectorProperties' {} a -> s {customConnector = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Amazon Connect Customer Profiles.
+destinationConnectorProperties_customerProfiles :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe CustomerProfilesDestinationProperties)
+destinationConnectorProperties_customerProfiles = Lens.lens (\DestinationConnectorProperties' {customerProfiles} -> customerProfiles) (\s@DestinationConnectorProperties' {} a -> s {customerProfiles = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Amazon EventBridge.
+destinationConnectorProperties_eventBridge :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe EventBridgeDestinationProperties)
+destinationConnectorProperties_eventBridge = Lens.lens (\DestinationConnectorProperties' {eventBridge} -> eventBridge) (\s@DestinationConnectorProperties' {} a -> s {eventBridge = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Amazon Honeycode.
+destinationConnectorProperties_honeycode :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe HoneycodeDestinationProperties)
+destinationConnectorProperties_honeycode = Lens.lens (\DestinationConnectorProperties' {honeycode} -> honeycode) (\s@DestinationConnectorProperties' {} a -> s {honeycode = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Amazon Lookout for Metrics.
+destinationConnectorProperties_lookoutMetrics :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe LookoutMetricsDestinationProperties)
+destinationConnectorProperties_lookoutMetrics = Lens.lens (\DestinationConnectorProperties' {lookoutMetrics} -> lookoutMetrics) (\s@DestinationConnectorProperties' {} a -> s {lookoutMetrics = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Marketo.
+destinationConnectorProperties_marketo :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe MarketoDestinationProperties)
+destinationConnectorProperties_marketo = Lens.lens (\DestinationConnectorProperties' {marketo} -> marketo) (\s@DestinationConnectorProperties' {} a -> s {marketo = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Amazon Redshift.
+destinationConnectorProperties_redshift :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe RedshiftDestinationProperties)
+destinationConnectorProperties_redshift = Lens.lens (\DestinationConnectorProperties' {redshift} -> redshift) (\s@DestinationConnectorProperties' {} a -> s {redshift = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Amazon S3.
+destinationConnectorProperties_s3 :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe S3DestinationProperties)
+destinationConnectorProperties_s3 = Lens.lens (\DestinationConnectorProperties' {s3} -> s3) (\s@DestinationConnectorProperties' {} a -> s {s3 = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query SAPOData.
+destinationConnectorProperties_sAPOData :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SAPODataDestinationProperties)
+destinationConnectorProperties_sAPOData = Lens.lens (\DestinationConnectorProperties' {sAPOData} -> sAPOData) (\s@DestinationConnectorProperties' {} a -> s {sAPOData = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Salesforce.
+destinationConnectorProperties_salesforce :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SalesforceDestinationProperties)
+destinationConnectorProperties_salesforce = Lens.lens (\DestinationConnectorProperties' {salesforce} -> salesforce) (\s@DestinationConnectorProperties' {} a -> s {salesforce = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Snowflake.
+destinationConnectorProperties_snowflake :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SnowflakeDestinationProperties)
+destinationConnectorProperties_snowflake = Lens.lens (\DestinationConnectorProperties' {snowflake} -> snowflake) (\s@DestinationConnectorProperties' {} a -> s {snowflake = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Upsolver.
+destinationConnectorProperties_upsolver :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe UpsolverDestinationProperties)
+destinationConnectorProperties_upsolver = Lens.lens (\DestinationConnectorProperties' {upsolver} -> upsolver) (\s@DestinationConnectorProperties' {} a -> s {upsolver = a} :: DestinationConnectorProperties)
+
+-- | The properties required to query Zendesk.
+destinationConnectorProperties_zendesk :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe ZendeskDestinationProperties)
+destinationConnectorProperties_zendesk = Lens.lens (\DestinationConnectorProperties' {zendesk} -> zendesk) (\s@DestinationConnectorProperties' {} a -> s {zendesk = a} :: DestinationConnectorProperties)
+
+instance Data.FromJSON DestinationConnectorProperties where
+  parseJSON =
+    Data.withObject
+      "DestinationConnectorProperties"
+      ( \x ->
+          DestinationConnectorProperties'
+            Prelude.<$> (x Data..:? "CustomConnector")
+            Prelude.<*> (x Data..:? "CustomerProfiles")
+            Prelude.<*> (x Data..:? "EventBridge")
+            Prelude.<*> (x Data..:? "Honeycode")
+            Prelude.<*> (x Data..:? "LookoutMetrics")
+            Prelude.<*> (x Data..:? "Marketo")
+            Prelude.<*> (x Data..:? "Redshift")
+            Prelude.<*> (x Data..:? "S3")
+            Prelude.<*> (x Data..:? "SAPOData")
+            Prelude.<*> (x Data..:? "Salesforce")
+            Prelude.<*> (x Data..:? "Snowflake")
+            Prelude.<*> (x Data..:? "Upsolver")
+            Prelude.<*> (x Data..:? "Zendesk")
+      )
+
+instance
+  Prelude.Hashable
+    DestinationConnectorProperties
+  where
+  hashWithSalt
+    _salt
+    DestinationConnectorProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` customConnector
+        `Prelude.hashWithSalt` customerProfiles
+        `Prelude.hashWithSalt` eventBridge
+        `Prelude.hashWithSalt` honeycode
+        `Prelude.hashWithSalt` lookoutMetrics
+        `Prelude.hashWithSalt` marketo
+        `Prelude.hashWithSalt` redshift
+        `Prelude.hashWithSalt` s3
+        `Prelude.hashWithSalt` sAPOData
+        `Prelude.hashWithSalt` salesforce
+        `Prelude.hashWithSalt` snowflake
+        `Prelude.hashWithSalt` upsolver
+        `Prelude.hashWithSalt` zendesk
+
+instance
+  Prelude.NFData
+    DestinationConnectorProperties
+  where
+  rnf DestinationConnectorProperties' {..} =
+    Prelude.rnf customConnector
+      `Prelude.seq` Prelude.rnf customerProfiles
+      `Prelude.seq` Prelude.rnf eventBridge
+      `Prelude.seq` Prelude.rnf honeycode
+      `Prelude.seq` Prelude.rnf lookoutMetrics
+      `Prelude.seq` Prelude.rnf marketo
+      `Prelude.seq` Prelude.rnf redshift
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf sAPOData
+      `Prelude.seq` Prelude.rnf salesforce
+      `Prelude.seq` Prelude.rnf snowflake
+      `Prelude.seq` Prelude.rnf upsolver
+      `Prelude.seq` Prelude.rnf zendesk
+
+instance Data.ToJSON DestinationConnectorProperties where
+  toJSON DestinationConnectorProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomConnector" Data..=)
+              Prelude.<$> customConnector,
+            ("CustomerProfiles" Data..=)
+              Prelude.<$> customerProfiles,
+            ("EventBridge" Data..=) Prelude.<$> eventBridge,
+            ("Honeycode" Data..=) Prelude.<$> honeycode,
+            ("LookoutMetrics" Data..=)
+              Prelude.<$> lookoutMetrics,
+            ("Marketo" Data..=) Prelude.<$> marketo,
+            ("Redshift" Data..=) Prelude.<$> redshift,
+            ("S3" Data..=) Prelude.<$> s3,
+            ("SAPOData" Data..=) Prelude.<$> sAPOData,
+            ("Salesforce" Data..=) Prelude.<$> salesforce,
+            ("Snowflake" Data..=) Prelude.<$> snowflake,
+            ("Upsolver" Data..=) Prelude.<$> upsolver,
+            ("Zendesk" Data..=) Prelude.<$> zendesk
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DestinationFieldProperties.hs b/gen/Amazonka/AppFlow/Types/DestinationFieldProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DestinationFieldProperties.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.DestinationFieldProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DestinationFieldProperties where
+
+import Amazonka.AppFlow.Types.WriteOperationType
+import qualified 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 properties that can be applied to a field when connector is being
+-- used as a destination.
+--
+-- /See:/ 'newDestinationFieldProperties' smart constructor.
+data DestinationFieldProperties = DestinationFieldProperties'
+  { -- | Specifies if the destination field can be created by the current user.
+    isCreatable :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies whether the field can use the default value during a Create
+    -- operation.
+    isDefaultedOnCreate :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies if the destination field can have a null value.
+    isNullable :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies whether the field can be updated during an @UPDATE@ or
+    -- @UPSERT@ write operation.
+    isUpdatable :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies if the flow run can either insert new rows in the destination
+    -- field if they do not already exist, or update them if they do.
+    isUpsertable :: Prelude.Maybe Prelude.Bool,
+    -- | A list of supported write operations. For each write operation listed,
+    -- this field can be used in @idFieldNames@ when that write operation is
+    -- present as a destination option.
+    supportedWriteOperations :: Prelude.Maybe [WriteOperationType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DestinationFieldProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'isCreatable', 'destinationFieldProperties_isCreatable' - Specifies if the destination field can be created by the current user.
+--
+-- 'isDefaultedOnCreate', 'destinationFieldProperties_isDefaultedOnCreate' - Specifies whether the field can use the default value during a Create
+-- operation.
+--
+-- 'isNullable', 'destinationFieldProperties_isNullable' - Specifies if the destination field can have a null value.
+--
+-- 'isUpdatable', 'destinationFieldProperties_isUpdatable' - Specifies whether the field can be updated during an @UPDATE@ or
+-- @UPSERT@ write operation.
+--
+-- 'isUpsertable', 'destinationFieldProperties_isUpsertable' - Specifies if the flow run can either insert new rows in the destination
+-- field if they do not already exist, or update them if they do.
+--
+-- 'supportedWriteOperations', 'destinationFieldProperties_supportedWriteOperations' - A list of supported write operations. For each write operation listed,
+-- this field can be used in @idFieldNames@ when that write operation is
+-- present as a destination option.
+newDestinationFieldProperties ::
+  DestinationFieldProperties
+newDestinationFieldProperties =
+  DestinationFieldProperties'
+    { isCreatable =
+        Prelude.Nothing,
+      isDefaultedOnCreate = Prelude.Nothing,
+      isNullable = Prelude.Nothing,
+      isUpdatable = Prelude.Nothing,
+      isUpsertable = Prelude.Nothing,
+      supportedWriteOperations = Prelude.Nothing
+    }
+
+-- | Specifies if the destination field can be created by the current user.
+destinationFieldProperties_isCreatable :: Lens.Lens' DestinationFieldProperties (Prelude.Maybe Prelude.Bool)
+destinationFieldProperties_isCreatable = Lens.lens (\DestinationFieldProperties' {isCreatable} -> isCreatable) (\s@DestinationFieldProperties' {} a -> s {isCreatable = a} :: DestinationFieldProperties)
+
+-- | Specifies whether the field can use the default value during a Create
+-- operation.
+destinationFieldProperties_isDefaultedOnCreate :: Lens.Lens' DestinationFieldProperties (Prelude.Maybe Prelude.Bool)
+destinationFieldProperties_isDefaultedOnCreate = Lens.lens (\DestinationFieldProperties' {isDefaultedOnCreate} -> isDefaultedOnCreate) (\s@DestinationFieldProperties' {} a -> s {isDefaultedOnCreate = a} :: DestinationFieldProperties)
+
+-- | Specifies if the destination field can have a null value.
+destinationFieldProperties_isNullable :: Lens.Lens' DestinationFieldProperties (Prelude.Maybe Prelude.Bool)
+destinationFieldProperties_isNullable = Lens.lens (\DestinationFieldProperties' {isNullable} -> isNullable) (\s@DestinationFieldProperties' {} a -> s {isNullable = a} :: DestinationFieldProperties)
+
+-- | Specifies whether the field can be updated during an @UPDATE@ or
+-- @UPSERT@ write operation.
+destinationFieldProperties_isUpdatable :: Lens.Lens' DestinationFieldProperties (Prelude.Maybe Prelude.Bool)
+destinationFieldProperties_isUpdatable = Lens.lens (\DestinationFieldProperties' {isUpdatable} -> isUpdatable) (\s@DestinationFieldProperties' {} a -> s {isUpdatable = a} :: DestinationFieldProperties)
+
+-- | Specifies if the flow run can either insert new rows in the destination
+-- field if they do not already exist, or update them if they do.
+destinationFieldProperties_isUpsertable :: Lens.Lens' DestinationFieldProperties (Prelude.Maybe Prelude.Bool)
+destinationFieldProperties_isUpsertable = Lens.lens (\DestinationFieldProperties' {isUpsertable} -> isUpsertable) (\s@DestinationFieldProperties' {} a -> s {isUpsertable = a} :: DestinationFieldProperties)
+
+-- | A list of supported write operations. For each write operation listed,
+-- this field can be used in @idFieldNames@ when that write operation is
+-- present as a destination option.
+destinationFieldProperties_supportedWriteOperations :: Lens.Lens' DestinationFieldProperties (Prelude.Maybe [WriteOperationType])
+destinationFieldProperties_supportedWriteOperations = Lens.lens (\DestinationFieldProperties' {supportedWriteOperations} -> supportedWriteOperations) (\s@DestinationFieldProperties' {} a -> s {supportedWriteOperations = a} :: DestinationFieldProperties) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DestinationFieldProperties where
+  parseJSON =
+    Data.withObject
+      "DestinationFieldProperties"
+      ( \x ->
+          DestinationFieldProperties'
+            Prelude.<$> (x Data..:? "isCreatable")
+            Prelude.<*> (x Data..:? "isDefaultedOnCreate")
+            Prelude.<*> (x Data..:? "isNullable")
+            Prelude.<*> (x Data..:? "isUpdatable")
+            Prelude.<*> (x Data..:? "isUpsertable")
+            Prelude.<*> ( x
+                            Data..:? "supportedWriteOperations"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DestinationFieldProperties where
+  hashWithSalt _salt DestinationFieldProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` isCreatable
+      `Prelude.hashWithSalt` isDefaultedOnCreate
+      `Prelude.hashWithSalt` isNullable
+      `Prelude.hashWithSalt` isUpdatable
+      `Prelude.hashWithSalt` isUpsertable
+      `Prelude.hashWithSalt` supportedWriteOperations
+
+instance Prelude.NFData DestinationFieldProperties where
+  rnf DestinationFieldProperties' {..} =
+    Prelude.rnf isCreatable
+      `Prelude.seq` Prelude.rnf isDefaultedOnCreate
+      `Prelude.seq` Prelude.rnf isNullable
+      `Prelude.seq` Prelude.rnf isUpdatable
+      `Prelude.seq` Prelude.rnf isUpsertable
+      `Prelude.seq` Prelude.rnf supportedWriteOperations
diff --git a/gen/Amazonka/AppFlow/Types/DestinationFlowConfig.hs b/gen/Amazonka/AppFlow/Types/DestinationFlowConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DestinationFlowConfig.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.AppFlow.Types.DestinationFlowConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DestinationFlowConfig where
+
+import Amazonka.AppFlow.Types.ConnectorType
+import Amazonka.AppFlow.Types.DestinationConnectorProperties
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the configuration of destination connectors
+-- present in the flow.
+--
+-- /See:/ 'newDestinationFlowConfig' smart constructor.
+data DestinationFlowConfig = DestinationFlowConfig'
+  { -- | The API version that the destination connector uses.
+    apiVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. This name must be unique for each
+    -- connector profile in the Amazon Web Services account.
+    connectorProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorType :: ConnectorType,
+    -- | This stores the information that is required to query a particular
+    -- connector.
+    destinationConnectorProperties :: DestinationConnectorProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DestinationFlowConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiVersion', 'destinationFlowConfig_apiVersion' - The API version that the destination connector uses.
+--
+-- 'connectorProfileName', 'destinationFlowConfig_connectorProfileName' - The name of the connector profile. This name must be unique for each
+-- connector profile in the Amazon Web Services account.
+--
+-- 'connectorType', 'destinationFlowConfig_connectorType' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'destinationConnectorProperties', 'destinationFlowConfig_destinationConnectorProperties' - This stores the information that is required to query a particular
+-- connector.
+newDestinationFlowConfig ::
+  -- | 'connectorType'
+  ConnectorType ->
+  -- | 'destinationConnectorProperties'
+  DestinationConnectorProperties ->
+  DestinationFlowConfig
+newDestinationFlowConfig
+  pConnectorType_
+  pDestinationConnectorProperties_ =
+    DestinationFlowConfig'
+      { apiVersion =
+          Prelude.Nothing,
+        connectorProfileName = Prelude.Nothing,
+        connectorType = pConnectorType_,
+        destinationConnectorProperties =
+          pDestinationConnectorProperties_
+      }
+
+-- | The API version that the destination connector uses.
+destinationFlowConfig_apiVersion :: Lens.Lens' DestinationFlowConfig (Prelude.Maybe Prelude.Text)
+destinationFlowConfig_apiVersion = Lens.lens (\DestinationFlowConfig' {apiVersion} -> apiVersion) (\s@DestinationFlowConfig' {} a -> s {apiVersion = a} :: DestinationFlowConfig)
+
+-- | The name of the connector profile. This name must be unique for each
+-- connector profile in the Amazon Web Services account.
+destinationFlowConfig_connectorProfileName :: Lens.Lens' DestinationFlowConfig (Prelude.Maybe Prelude.Text)
+destinationFlowConfig_connectorProfileName = Lens.lens (\DestinationFlowConfig' {connectorProfileName} -> connectorProfileName) (\s@DestinationFlowConfig' {} a -> s {connectorProfileName = a} :: DestinationFlowConfig)
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+destinationFlowConfig_connectorType :: Lens.Lens' DestinationFlowConfig ConnectorType
+destinationFlowConfig_connectorType = Lens.lens (\DestinationFlowConfig' {connectorType} -> connectorType) (\s@DestinationFlowConfig' {} a -> s {connectorType = a} :: DestinationFlowConfig)
+
+-- | This stores the information that is required to query a particular
+-- connector.
+destinationFlowConfig_destinationConnectorProperties :: Lens.Lens' DestinationFlowConfig DestinationConnectorProperties
+destinationFlowConfig_destinationConnectorProperties = Lens.lens (\DestinationFlowConfig' {destinationConnectorProperties} -> destinationConnectorProperties) (\s@DestinationFlowConfig' {} a -> s {destinationConnectorProperties = a} :: DestinationFlowConfig)
+
+instance Data.FromJSON DestinationFlowConfig where
+  parseJSON =
+    Data.withObject
+      "DestinationFlowConfig"
+      ( \x ->
+          DestinationFlowConfig'
+            Prelude.<$> (x Data..:? "apiVersion")
+            Prelude.<*> (x Data..:? "connectorProfileName")
+            Prelude.<*> (x Data..: "connectorType")
+            Prelude.<*> (x Data..: "destinationConnectorProperties")
+      )
+
+instance Prelude.Hashable DestinationFlowConfig where
+  hashWithSalt _salt DestinationFlowConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiVersion
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` destinationConnectorProperties
+
+instance Prelude.NFData DestinationFlowConfig where
+  rnf DestinationFlowConfig' {..} =
+    Prelude.rnf apiVersion
+      `Prelude.seq` Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf destinationConnectorProperties
+
+instance Data.ToJSON DestinationFlowConfig where
+  toJSON DestinationFlowConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("apiVersion" Data..=) Prelude.<$> apiVersion,
+            ("connectorProfileName" Data..=)
+              Prelude.<$> connectorProfileName,
+            Prelude.Just ("connectorType" Data..= connectorType),
+            Prelude.Just
+              ( "destinationConnectorProperties"
+                  Data..= destinationConnectorProperties
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DynatraceConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/DynatraceConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DynatraceConnectorOperator.hs
@@ -0,0 +1,136 @@
+{-# 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.AppFlow.Types.DynatraceConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DynatraceConnectorOperator
+  ( DynatraceConnectorOperator
+      ( ..,
+        DynatraceConnectorOperator_ADDITION,
+        DynatraceConnectorOperator_BETWEEN,
+        DynatraceConnectorOperator_DIVISION,
+        DynatraceConnectorOperator_EQUAL_TO,
+        DynatraceConnectorOperator_MASK_ALL,
+        DynatraceConnectorOperator_MASK_FIRST_N,
+        DynatraceConnectorOperator_MASK_LAST_N,
+        DynatraceConnectorOperator_MULTIPLICATION,
+        DynatraceConnectorOperator_NO_OP,
+        DynatraceConnectorOperator_PROJECTION,
+        DynatraceConnectorOperator_SUBTRACTION,
+        DynatraceConnectorOperator_VALIDATE_NON_NEGATIVE,
+        DynatraceConnectorOperator_VALIDATE_NON_NULL,
+        DynatraceConnectorOperator_VALIDATE_NON_ZERO,
+        DynatraceConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DynatraceConnectorOperator = DynatraceConnectorOperator'
+  { fromDynatraceConnectorOperator ::
+      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 DynatraceConnectorOperator_ADDITION :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_ADDITION = DynatraceConnectorOperator' "ADDITION"
+
+pattern DynatraceConnectorOperator_BETWEEN :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_BETWEEN = DynatraceConnectorOperator' "BETWEEN"
+
+pattern DynatraceConnectorOperator_DIVISION :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_DIVISION = DynatraceConnectorOperator' "DIVISION"
+
+pattern DynatraceConnectorOperator_EQUAL_TO :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_EQUAL_TO = DynatraceConnectorOperator' "EQUAL_TO"
+
+pattern DynatraceConnectorOperator_MASK_ALL :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_MASK_ALL = DynatraceConnectorOperator' "MASK_ALL"
+
+pattern DynatraceConnectorOperator_MASK_FIRST_N :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_MASK_FIRST_N = DynatraceConnectorOperator' "MASK_FIRST_N"
+
+pattern DynatraceConnectorOperator_MASK_LAST_N :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_MASK_LAST_N = DynatraceConnectorOperator' "MASK_LAST_N"
+
+pattern DynatraceConnectorOperator_MULTIPLICATION :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_MULTIPLICATION = DynatraceConnectorOperator' "MULTIPLICATION"
+
+pattern DynatraceConnectorOperator_NO_OP :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_NO_OP = DynatraceConnectorOperator' "NO_OP"
+
+pattern DynatraceConnectorOperator_PROJECTION :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_PROJECTION = DynatraceConnectorOperator' "PROJECTION"
+
+pattern DynatraceConnectorOperator_SUBTRACTION :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_SUBTRACTION = DynatraceConnectorOperator' "SUBTRACTION"
+
+pattern DynatraceConnectorOperator_VALIDATE_NON_NEGATIVE :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_VALIDATE_NON_NEGATIVE = DynatraceConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern DynatraceConnectorOperator_VALIDATE_NON_NULL :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_VALIDATE_NON_NULL = DynatraceConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern DynatraceConnectorOperator_VALIDATE_NON_ZERO :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_VALIDATE_NON_ZERO = DynatraceConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern DynatraceConnectorOperator_VALIDATE_NUMERIC :: DynatraceConnectorOperator
+pattern DynatraceConnectorOperator_VALIDATE_NUMERIC = DynatraceConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  DynatraceConnectorOperator_ADDITION,
+  DynatraceConnectorOperator_BETWEEN,
+  DynatraceConnectorOperator_DIVISION,
+  DynatraceConnectorOperator_EQUAL_TO,
+  DynatraceConnectorOperator_MASK_ALL,
+  DynatraceConnectorOperator_MASK_FIRST_N,
+  DynatraceConnectorOperator_MASK_LAST_N,
+  DynatraceConnectorOperator_MULTIPLICATION,
+  DynatraceConnectorOperator_NO_OP,
+  DynatraceConnectorOperator_PROJECTION,
+  DynatraceConnectorOperator_SUBTRACTION,
+  DynatraceConnectorOperator_VALIDATE_NON_NEGATIVE,
+  DynatraceConnectorOperator_VALIDATE_NON_NULL,
+  DynatraceConnectorOperator_VALIDATE_NON_ZERO,
+  DynatraceConnectorOperator_VALIDATE_NUMERIC,
+  DynatraceConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/DynatraceConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/DynatraceConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DynatraceConnectorProfileCredentials.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.AppFlow.Types.DynatraceConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DynatraceConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required by Dynatrace.
+--
+-- /See:/ 'newDynatraceConnectorProfileCredentials' smart constructor.
+data DynatraceConnectorProfileCredentials = DynatraceConnectorProfileCredentials'
+  { -- | The API tokens used by Dynatrace API to authenticate various API calls.
+    apiToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DynatraceConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiToken', 'dynatraceConnectorProfileCredentials_apiToken' - The API tokens used by Dynatrace API to authenticate various API calls.
+newDynatraceConnectorProfileCredentials ::
+  -- | 'apiToken'
+  Prelude.Text ->
+  DynatraceConnectorProfileCredentials
+newDynatraceConnectorProfileCredentials pApiToken_ =
+  DynatraceConnectorProfileCredentials'
+    { apiToken =
+        pApiToken_
+    }
+
+-- | The API tokens used by Dynatrace API to authenticate various API calls.
+dynatraceConnectorProfileCredentials_apiToken :: Lens.Lens' DynatraceConnectorProfileCredentials Prelude.Text
+dynatraceConnectorProfileCredentials_apiToken = Lens.lens (\DynatraceConnectorProfileCredentials' {apiToken} -> apiToken) (\s@DynatraceConnectorProfileCredentials' {} a -> s {apiToken = a} :: DynatraceConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    DynatraceConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    DynatraceConnectorProfileCredentials' {..} =
+      _salt `Prelude.hashWithSalt` apiToken
+
+instance
+  Prelude.NFData
+    DynatraceConnectorProfileCredentials
+  where
+  rnf DynatraceConnectorProfileCredentials' {..} =
+    Prelude.rnf apiToken
+
+instance
+  Data.ToJSON
+    DynatraceConnectorProfileCredentials
+  where
+  toJSON DynatraceConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("apiToken" Data..= apiToken)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DynatraceConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/DynatraceConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DynatraceConnectorProfileProperties.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.AppFlow.Types.DynatraceConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DynatraceConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required by Dynatrace.
+--
+-- /See:/ 'newDynatraceConnectorProfileProperties' smart constructor.
+data DynatraceConnectorProfileProperties = DynatraceConnectorProfileProperties'
+  { -- | The location of the Dynatrace resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DynatraceConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'dynatraceConnectorProfileProperties_instanceUrl' - The location of the Dynatrace resource.
+newDynatraceConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  DynatraceConnectorProfileProperties
+newDynatraceConnectorProfileProperties pInstanceUrl_ =
+  DynatraceConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Dynatrace resource.
+dynatraceConnectorProfileProperties_instanceUrl :: Lens.Lens' DynatraceConnectorProfileProperties Prelude.Text
+dynatraceConnectorProfileProperties_instanceUrl = Lens.lens (\DynatraceConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@DynatraceConnectorProfileProperties' {} a -> s {instanceUrl = a} :: DynatraceConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    DynatraceConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "DynatraceConnectorProfileProperties"
+      ( \x ->
+          DynatraceConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    DynatraceConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    DynatraceConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    DynatraceConnectorProfileProperties
+  where
+  rnf DynatraceConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance
+  Data.ToJSON
+    DynatraceConnectorProfileProperties
+  where
+  toJSON DynatraceConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/DynatraceMetadata.hs b/gen/Amazonka/AppFlow/Types/DynatraceMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DynatraceMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.DynatraceMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DynatraceMetadata where
+
+import qualified 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 connector metadata specific to Dynatrace.
+--
+-- /See:/ 'newDynatraceMetadata' smart constructor.
+data DynatraceMetadata = DynatraceMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DynatraceMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDynatraceMetadata ::
+  DynatraceMetadata
+newDynatraceMetadata = DynatraceMetadata'
+
+instance Data.FromJSON DynatraceMetadata where
+  parseJSON =
+    Data.withObject
+      "DynatraceMetadata"
+      (\x -> Prelude.pure DynatraceMetadata')
+
+instance Prelude.Hashable DynatraceMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData DynatraceMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/DynatraceSourceProperties.hs b/gen/Amazonka/AppFlow/Types/DynatraceSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/DynatraceSourceProperties.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.DynatraceSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.DynatraceSourceProperties where
+
+import qualified 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 properties that are applied when Dynatrace is being used as a
+-- source.
+--
+-- /See:/ 'newDynatraceSourceProperties' smart constructor.
+data DynatraceSourceProperties = DynatraceSourceProperties'
+  { -- | The object specified in the Dynatrace flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DynatraceSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'dynatraceSourceProperties_object' - The object specified in the Dynatrace flow source.
+newDynatraceSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  DynatraceSourceProperties
+newDynatraceSourceProperties pObject_ =
+  DynatraceSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Dynatrace flow source.
+dynatraceSourceProperties_object :: Lens.Lens' DynatraceSourceProperties Prelude.Text
+dynatraceSourceProperties_object = Lens.lens (\DynatraceSourceProperties' {object'} -> object') (\s@DynatraceSourceProperties' {} a -> s {object' = a} :: DynatraceSourceProperties)
+
+instance Data.FromJSON DynatraceSourceProperties where
+  parseJSON =
+    Data.withObject
+      "DynatraceSourceProperties"
+      ( \x ->
+          DynatraceSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable DynatraceSourceProperties where
+  hashWithSalt _salt DynatraceSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData DynatraceSourceProperties where
+  rnf DynatraceSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON DynatraceSourceProperties where
+  toJSON DynatraceSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ErrorHandlingConfig.hs b/gen/Amazonka/AppFlow/Types/ErrorHandlingConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ErrorHandlingConfig.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.AppFlow.Types.ErrorHandlingConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ErrorHandlingConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the destination. For example, this setting would
+-- determine if the flow should fail after one insertion error, or continue
+-- and attempt to insert every record regardless of the initial failure.
+-- @ErrorHandlingConfig@ is a part of the destination connector details.
+--
+-- /See:/ 'newErrorHandlingConfig' smart constructor.
+data ErrorHandlingConfig = ErrorHandlingConfig'
+  { -- | Specifies the name of the Amazon S3 bucket.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the Amazon S3 bucket prefix.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    -- | Specifies if the flow should fail after the first instance of a failure
+    -- when attempting to place data in the destination.
+    failOnFirstDestinationError :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ErrorHandlingConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 'errorHandlingConfig_bucketName' - Specifies the name of the Amazon S3 bucket.
+--
+-- 'bucketPrefix', 'errorHandlingConfig_bucketPrefix' - Specifies the Amazon S3 bucket prefix.
+--
+-- 'failOnFirstDestinationError', 'errorHandlingConfig_failOnFirstDestinationError' - Specifies if the flow should fail after the first instance of a failure
+-- when attempting to place data in the destination.
+newErrorHandlingConfig ::
+  ErrorHandlingConfig
+newErrorHandlingConfig =
+  ErrorHandlingConfig'
+    { bucketName = Prelude.Nothing,
+      bucketPrefix = Prelude.Nothing,
+      failOnFirstDestinationError = Prelude.Nothing
+    }
+
+-- | Specifies the name of the Amazon S3 bucket.
+errorHandlingConfig_bucketName :: Lens.Lens' ErrorHandlingConfig (Prelude.Maybe Prelude.Text)
+errorHandlingConfig_bucketName = Lens.lens (\ErrorHandlingConfig' {bucketName} -> bucketName) (\s@ErrorHandlingConfig' {} a -> s {bucketName = a} :: ErrorHandlingConfig)
+
+-- | Specifies the Amazon S3 bucket prefix.
+errorHandlingConfig_bucketPrefix :: Lens.Lens' ErrorHandlingConfig (Prelude.Maybe Prelude.Text)
+errorHandlingConfig_bucketPrefix = Lens.lens (\ErrorHandlingConfig' {bucketPrefix} -> bucketPrefix) (\s@ErrorHandlingConfig' {} a -> s {bucketPrefix = a} :: ErrorHandlingConfig)
+
+-- | Specifies if the flow should fail after the first instance of a failure
+-- when attempting to place data in the destination.
+errorHandlingConfig_failOnFirstDestinationError :: Lens.Lens' ErrorHandlingConfig (Prelude.Maybe Prelude.Bool)
+errorHandlingConfig_failOnFirstDestinationError = Lens.lens (\ErrorHandlingConfig' {failOnFirstDestinationError} -> failOnFirstDestinationError) (\s@ErrorHandlingConfig' {} a -> s {failOnFirstDestinationError = a} :: ErrorHandlingConfig)
+
+instance Data.FromJSON ErrorHandlingConfig where
+  parseJSON =
+    Data.withObject
+      "ErrorHandlingConfig"
+      ( \x ->
+          ErrorHandlingConfig'
+            Prelude.<$> (x Data..:? "bucketName")
+            Prelude.<*> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "failOnFirstDestinationError")
+      )
+
+instance Prelude.Hashable ErrorHandlingConfig where
+  hashWithSalt _salt ErrorHandlingConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` bucketPrefix
+      `Prelude.hashWithSalt` failOnFirstDestinationError
+
+instance Prelude.NFData ErrorHandlingConfig where
+  rnf ErrorHandlingConfig' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf failOnFirstDestinationError
+
+instance Data.ToJSON ErrorHandlingConfig where
+  toJSON ErrorHandlingConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketName" Data..=) Prelude.<$> bucketName,
+            ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("failOnFirstDestinationError" Data..=)
+              Prelude.<$> failOnFirstDestinationError
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ErrorInfo.hs b/gen/Amazonka/AppFlow/Types/ErrorInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ErrorInfo.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.AppFlow.Types.ErrorInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ErrorInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides details in the event of a failed flow, including the failure
+-- count and the related error messages.
+--
+-- /See:/ 'newErrorInfo' smart constructor.
+data ErrorInfo = ErrorInfo'
+  { -- | Specifies the error message that appears if a flow fails.
+    executionMessage :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the failure count for the attempted flow.
+    putFailuresCount :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ErrorInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'executionMessage', 'errorInfo_executionMessage' - Specifies the error message that appears if a flow fails.
+--
+-- 'putFailuresCount', 'errorInfo_putFailuresCount' - Specifies the failure count for the attempted flow.
+newErrorInfo ::
+  ErrorInfo
+newErrorInfo =
+  ErrorInfo'
+    { executionMessage = Prelude.Nothing,
+      putFailuresCount = Prelude.Nothing
+    }
+
+-- | Specifies the error message that appears if a flow fails.
+errorInfo_executionMessage :: Lens.Lens' ErrorInfo (Prelude.Maybe Prelude.Text)
+errorInfo_executionMessage = Lens.lens (\ErrorInfo' {executionMessage} -> executionMessage) (\s@ErrorInfo' {} a -> s {executionMessage = a} :: ErrorInfo)
+
+-- | Specifies the failure count for the attempted flow.
+errorInfo_putFailuresCount :: Lens.Lens' ErrorInfo (Prelude.Maybe Prelude.Integer)
+errorInfo_putFailuresCount = Lens.lens (\ErrorInfo' {putFailuresCount} -> putFailuresCount) (\s@ErrorInfo' {} a -> s {putFailuresCount = a} :: ErrorInfo)
+
+instance Data.FromJSON ErrorInfo where
+  parseJSON =
+    Data.withObject
+      "ErrorInfo"
+      ( \x ->
+          ErrorInfo'
+            Prelude.<$> (x Data..:? "executionMessage")
+            Prelude.<*> (x Data..:? "putFailuresCount")
+      )
+
+instance Prelude.Hashable ErrorInfo where
+  hashWithSalt _salt ErrorInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` executionMessage
+      `Prelude.hashWithSalt` putFailuresCount
+
+instance Prelude.NFData ErrorInfo where
+  rnf ErrorInfo' {..} =
+    Prelude.rnf executionMessage
+      `Prelude.seq` Prelude.rnf putFailuresCount
diff --git a/gen/Amazonka/AppFlow/Types/EventBridgeDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/EventBridgeDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/EventBridgeDestinationProperties.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.EventBridgeDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.EventBridgeDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import qualified 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 properties that are applied when Amazon EventBridge is being used as
+-- a destination.
+--
+-- /See:/ 'newEventBridgeDestinationProperties' smart constructor.
+data EventBridgeDestinationProperties = EventBridgeDestinationProperties'
+  { errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The object specified in the Amazon EventBridge flow destination.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventBridgeDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorHandlingConfig', 'eventBridgeDestinationProperties_errorHandlingConfig' - Undocumented member.
+--
+-- 'object'', 'eventBridgeDestinationProperties_object' - The object specified in the Amazon EventBridge flow destination.
+newEventBridgeDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  EventBridgeDestinationProperties
+newEventBridgeDestinationProperties pObject_ =
+  EventBridgeDestinationProperties'
+    { errorHandlingConfig =
+        Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | Undocumented member.
+eventBridgeDestinationProperties_errorHandlingConfig :: Lens.Lens' EventBridgeDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+eventBridgeDestinationProperties_errorHandlingConfig = Lens.lens (\EventBridgeDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@EventBridgeDestinationProperties' {} a -> s {errorHandlingConfig = a} :: EventBridgeDestinationProperties)
+
+-- | The object specified in the Amazon EventBridge flow destination.
+eventBridgeDestinationProperties_object :: Lens.Lens' EventBridgeDestinationProperties Prelude.Text
+eventBridgeDestinationProperties_object = Lens.lens (\EventBridgeDestinationProperties' {object'} -> object') (\s@EventBridgeDestinationProperties' {} a -> s {object' = a} :: EventBridgeDestinationProperties)
+
+instance
+  Data.FromJSON
+    EventBridgeDestinationProperties
+  where
+  parseJSON =
+    Data.withObject
+      "EventBridgeDestinationProperties"
+      ( \x ->
+          EventBridgeDestinationProperties'
+            Prelude.<$> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance
+  Prelude.Hashable
+    EventBridgeDestinationProperties
+  where
+  hashWithSalt
+    _salt
+    EventBridgeDestinationProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` errorHandlingConfig
+        `Prelude.hashWithSalt` object'
+
+instance
+  Prelude.NFData
+    EventBridgeDestinationProperties
+  where
+  rnf EventBridgeDestinationProperties' {..} =
+    Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON EventBridgeDestinationProperties where
+  toJSON EventBridgeDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/EventBridgeMetadata.hs b/gen/Amazonka/AppFlow/Types/EventBridgeMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/EventBridgeMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.EventBridgeMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.EventBridgeMetadata where
+
+import qualified 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 connector metadata specific to Amazon EventBridge.
+--
+-- /See:/ 'newEventBridgeMetadata' smart constructor.
+data EventBridgeMetadata = EventBridgeMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventBridgeMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newEventBridgeMetadata ::
+  EventBridgeMetadata
+newEventBridgeMetadata = EventBridgeMetadata'
+
+instance Data.FromJSON EventBridgeMetadata where
+  parseJSON =
+    Data.withObject
+      "EventBridgeMetadata"
+      (\x -> Prelude.pure EventBridgeMetadata')
+
+instance Prelude.Hashable EventBridgeMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData EventBridgeMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/ExecutionDetails.hs b/gen/Amazonka/AppFlow/Types/ExecutionDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ExecutionDetails.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ExecutionDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ExecutionDetails where
+
+import Amazonka.AppFlow.Types.ExecutionStatus
+import qualified 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 the details of the flow run, including the timestamp, status,
+-- and message.
+--
+-- /See:/ 'newExecutionDetails' smart constructor.
+data ExecutionDetails = ExecutionDetails'
+  { -- | Describes the details of the most recent flow run.
+    mostRecentExecutionMessage :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the status of the most recent flow run.
+    mostRecentExecutionStatus :: Prelude.Maybe ExecutionStatus,
+    -- | Specifies the time of the most recent flow run.
+    mostRecentExecutionTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExecutionDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mostRecentExecutionMessage', 'executionDetails_mostRecentExecutionMessage' - Describes the details of the most recent flow run.
+--
+-- 'mostRecentExecutionStatus', 'executionDetails_mostRecentExecutionStatus' - Specifies the status of the most recent flow run.
+--
+-- 'mostRecentExecutionTime', 'executionDetails_mostRecentExecutionTime' - Specifies the time of the most recent flow run.
+newExecutionDetails ::
+  ExecutionDetails
+newExecutionDetails =
+  ExecutionDetails'
+    { mostRecentExecutionMessage =
+        Prelude.Nothing,
+      mostRecentExecutionStatus = Prelude.Nothing,
+      mostRecentExecutionTime = Prelude.Nothing
+    }
+
+-- | Describes the details of the most recent flow run.
+executionDetails_mostRecentExecutionMessage :: Lens.Lens' ExecutionDetails (Prelude.Maybe Prelude.Text)
+executionDetails_mostRecentExecutionMessage = Lens.lens (\ExecutionDetails' {mostRecentExecutionMessage} -> mostRecentExecutionMessage) (\s@ExecutionDetails' {} a -> s {mostRecentExecutionMessage = a} :: ExecutionDetails)
+
+-- | Specifies the status of the most recent flow run.
+executionDetails_mostRecentExecutionStatus :: Lens.Lens' ExecutionDetails (Prelude.Maybe ExecutionStatus)
+executionDetails_mostRecentExecutionStatus = Lens.lens (\ExecutionDetails' {mostRecentExecutionStatus} -> mostRecentExecutionStatus) (\s@ExecutionDetails' {} a -> s {mostRecentExecutionStatus = a} :: ExecutionDetails)
+
+-- | Specifies the time of the most recent flow run.
+executionDetails_mostRecentExecutionTime :: Lens.Lens' ExecutionDetails (Prelude.Maybe Prelude.UTCTime)
+executionDetails_mostRecentExecutionTime = Lens.lens (\ExecutionDetails' {mostRecentExecutionTime} -> mostRecentExecutionTime) (\s@ExecutionDetails' {} a -> s {mostRecentExecutionTime = a} :: ExecutionDetails) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON ExecutionDetails where
+  parseJSON =
+    Data.withObject
+      "ExecutionDetails"
+      ( \x ->
+          ExecutionDetails'
+            Prelude.<$> (x Data..:? "mostRecentExecutionMessage")
+            Prelude.<*> (x Data..:? "mostRecentExecutionStatus")
+            Prelude.<*> (x Data..:? "mostRecentExecutionTime")
+      )
+
+instance Prelude.Hashable ExecutionDetails where
+  hashWithSalt _salt ExecutionDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` mostRecentExecutionMessage
+      `Prelude.hashWithSalt` mostRecentExecutionStatus
+      `Prelude.hashWithSalt` mostRecentExecutionTime
+
+instance Prelude.NFData ExecutionDetails where
+  rnf ExecutionDetails' {..} =
+    Prelude.rnf mostRecentExecutionMessage
+      `Prelude.seq` Prelude.rnf mostRecentExecutionStatus
+      `Prelude.seq` Prelude.rnf mostRecentExecutionTime
diff --git a/gen/Amazonka/AppFlow/Types/ExecutionRecord.hs b/gen/Amazonka/AppFlow/Types/ExecutionRecord.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ExecutionRecord.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ExecutionRecord
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ExecutionRecord where
+
+import Amazonka.AppFlow.Types.ExecutionResult
+import Amazonka.AppFlow.Types.ExecutionStatus
+import Amazonka.AppFlow.Types.MetadataCatalogDetail
+import qualified 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 information about the past flow run instances for a given
+-- flow.
+--
+-- /See:/ 'newExecutionRecord' smart constructor.
+data ExecutionRecord = ExecutionRecord'
+  { -- | The timestamp that indicates the last new or updated record to be
+    -- transferred in the flow run.
+    dataPullEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp that determines the first new or updated record to be
+    -- transferred in the flow run.
+    dataPullStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the identifier of the given flow run.
+    executionId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the result of the given flow run.
+    executionResult :: Prelude.Maybe ExecutionResult,
+    -- | Specifies the flow run status and whether it is in progress, has
+    -- completed successfully, or has failed.
+    executionStatus :: Prelude.Maybe ExecutionStatus,
+    -- | Specifies the time of the most recent update.
+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,
+    -- | Describes the metadata catalog, metadata table, and data partitions that
+    -- Amazon AppFlow used for the associated flow run.
+    metadataCatalogDetails :: Prelude.Maybe [MetadataCatalogDetail],
+    -- | Specifies the start time of the flow run.
+    startedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExecutionRecord' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataPullEndTime', 'executionRecord_dataPullEndTime' - The timestamp that indicates the last new or updated record to be
+-- transferred in the flow run.
+--
+-- 'dataPullStartTime', 'executionRecord_dataPullStartTime' - The timestamp that determines the first new or updated record to be
+-- transferred in the flow run.
+--
+-- 'executionId', 'executionRecord_executionId' - Specifies the identifier of the given flow run.
+--
+-- 'executionResult', 'executionRecord_executionResult' - Describes the result of the given flow run.
+--
+-- 'executionStatus', 'executionRecord_executionStatus' - Specifies the flow run status and whether it is in progress, has
+-- completed successfully, or has failed.
+--
+-- 'lastUpdatedAt', 'executionRecord_lastUpdatedAt' - Specifies the time of the most recent update.
+--
+-- 'metadataCatalogDetails', 'executionRecord_metadataCatalogDetails' - Describes the metadata catalog, metadata table, and data partitions that
+-- Amazon AppFlow used for the associated flow run.
+--
+-- 'startedAt', 'executionRecord_startedAt' - Specifies the start time of the flow run.
+newExecutionRecord ::
+  ExecutionRecord
+newExecutionRecord =
+  ExecutionRecord'
+    { dataPullEndTime = Prelude.Nothing,
+      dataPullStartTime = Prelude.Nothing,
+      executionId = Prelude.Nothing,
+      executionResult = Prelude.Nothing,
+      executionStatus = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      metadataCatalogDetails = Prelude.Nothing,
+      startedAt = Prelude.Nothing
+    }
+
+-- | The timestamp that indicates the last new or updated record to be
+-- transferred in the flow run.
+executionRecord_dataPullEndTime :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
+executionRecord_dataPullEndTime = Lens.lens (\ExecutionRecord' {dataPullEndTime} -> dataPullEndTime) (\s@ExecutionRecord' {} a -> s {dataPullEndTime = a} :: ExecutionRecord) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp that determines the first new or updated record to be
+-- transferred in the flow run.
+executionRecord_dataPullStartTime :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
+executionRecord_dataPullStartTime = Lens.lens (\ExecutionRecord' {dataPullStartTime} -> dataPullStartTime) (\s@ExecutionRecord' {} a -> s {dataPullStartTime = a} :: ExecutionRecord) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the identifier of the given flow run.
+executionRecord_executionId :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.Text)
+executionRecord_executionId = Lens.lens (\ExecutionRecord' {executionId} -> executionId) (\s@ExecutionRecord' {} a -> s {executionId = a} :: ExecutionRecord)
+
+-- | Describes the result of the given flow run.
+executionRecord_executionResult :: Lens.Lens' ExecutionRecord (Prelude.Maybe ExecutionResult)
+executionRecord_executionResult = Lens.lens (\ExecutionRecord' {executionResult} -> executionResult) (\s@ExecutionRecord' {} a -> s {executionResult = a} :: ExecutionRecord)
+
+-- | Specifies the flow run status and whether it is in progress, has
+-- completed successfully, or has failed.
+executionRecord_executionStatus :: Lens.Lens' ExecutionRecord (Prelude.Maybe ExecutionStatus)
+executionRecord_executionStatus = Lens.lens (\ExecutionRecord' {executionStatus} -> executionStatus) (\s@ExecutionRecord' {} a -> s {executionStatus = a} :: ExecutionRecord)
+
+-- | Specifies the time of the most recent update.
+executionRecord_lastUpdatedAt :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
+executionRecord_lastUpdatedAt = Lens.lens (\ExecutionRecord' {lastUpdatedAt} -> lastUpdatedAt) (\s@ExecutionRecord' {} a -> s {lastUpdatedAt = a} :: ExecutionRecord) Prelude.. Lens.mapping Data._Time
+
+-- | Describes the metadata catalog, metadata table, and data partitions that
+-- Amazon AppFlow used for the associated flow run.
+executionRecord_metadataCatalogDetails :: Lens.Lens' ExecutionRecord (Prelude.Maybe [MetadataCatalogDetail])
+executionRecord_metadataCatalogDetails = Lens.lens (\ExecutionRecord' {metadataCatalogDetails} -> metadataCatalogDetails) (\s@ExecutionRecord' {} a -> s {metadataCatalogDetails = a} :: ExecutionRecord) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the start time of the flow run.
+executionRecord_startedAt :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
+executionRecord_startedAt = Lens.lens (\ExecutionRecord' {startedAt} -> startedAt) (\s@ExecutionRecord' {} a -> s {startedAt = a} :: ExecutionRecord) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON ExecutionRecord where
+  parseJSON =
+    Data.withObject
+      "ExecutionRecord"
+      ( \x ->
+          ExecutionRecord'
+            Prelude.<$> (x Data..:? "dataPullEndTime")
+            Prelude.<*> (x Data..:? "dataPullStartTime")
+            Prelude.<*> (x Data..:? "executionId")
+            Prelude.<*> (x Data..:? "executionResult")
+            Prelude.<*> (x Data..:? "executionStatus")
+            Prelude.<*> (x Data..:? "lastUpdatedAt")
+            Prelude.<*> ( x
+                            Data..:? "metadataCatalogDetails"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "startedAt")
+      )
+
+instance Prelude.Hashable ExecutionRecord where
+  hashWithSalt _salt ExecutionRecord' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataPullEndTime
+      `Prelude.hashWithSalt` dataPullStartTime
+      `Prelude.hashWithSalt` executionId
+      `Prelude.hashWithSalt` executionResult
+      `Prelude.hashWithSalt` executionStatus
+      `Prelude.hashWithSalt` lastUpdatedAt
+      `Prelude.hashWithSalt` metadataCatalogDetails
+      `Prelude.hashWithSalt` startedAt
+
+instance Prelude.NFData ExecutionRecord where
+  rnf ExecutionRecord' {..} =
+    Prelude.rnf dataPullEndTime
+      `Prelude.seq` Prelude.rnf dataPullStartTime
+      `Prelude.seq` Prelude.rnf executionId
+      `Prelude.seq` Prelude.rnf executionResult
+      `Prelude.seq` Prelude.rnf executionStatus
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf metadataCatalogDetails
+      `Prelude.seq` Prelude.rnf startedAt
diff --git a/gen/Amazonka/AppFlow/Types/ExecutionResult.hs b/gen/Amazonka/AppFlow/Types/ExecutionResult.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ExecutionResult.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ExecutionResult
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ExecutionResult where
+
+import Amazonka.AppFlow.Types.ErrorInfo
+import qualified 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 the end result of the flow run.
+--
+-- /See:/ 'newExecutionResult' smart constructor.
+data ExecutionResult = ExecutionResult'
+  { -- | The total number of bytes processed by the flow run.
+    bytesProcessed :: Prelude.Maybe Prelude.Integer,
+    -- | The total number of bytes written as a result of the flow run.
+    bytesWritten :: Prelude.Maybe Prelude.Integer,
+    -- | Provides any error message information related to the flow run.
+    errorInfo :: Prelude.Maybe ErrorInfo,
+    -- | The number of records processed in the flow run.
+    recordsProcessed :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExecutionResult' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bytesProcessed', 'executionResult_bytesProcessed' - The total number of bytes processed by the flow run.
+--
+-- 'bytesWritten', 'executionResult_bytesWritten' - The total number of bytes written as a result of the flow run.
+--
+-- 'errorInfo', 'executionResult_errorInfo' - Provides any error message information related to the flow run.
+--
+-- 'recordsProcessed', 'executionResult_recordsProcessed' - The number of records processed in the flow run.
+newExecutionResult ::
+  ExecutionResult
+newExecutionResult =
+  ExecutionResult'
+    { bytesProcessed = Prelude.Nothing,
+      bytesWritten = Prelude.Nothing,
+      errorInfo = Prelude.Nothing,
+      recordsProcessed = Prelude.Nothing
+    }
+
+-- | The total number of bytes processed by the flow run.
+executionResult_bytesProcessed :: Lens.Lens' ExecutionResult (Prelude.Maybe Prelude.Integer)
+executionResult_bytesProcessed = Lens.lens (\ExecutionResult' {bytesProcessed} -> bytesProcessed) (\s@ExecutionResult' {} a -> s {bytesProcessed = a} :: ExecutionResult)
+
+-- | The total number of bytes written as a result of the flow run.
+executionResult_bytesWritten :: Lens.Lens' ExecutionResult (Prelude.Maybe Prelude.Integer)
+executionResult_bytesWritten = Lens.lens (\ExecutionResult' {bytesWritten} -> bytesWritten) (\s@ExecutionResult' {} a -> s {bytesWritten = a} :: ExecutionResult)
+
+-- | Provides any error message information related to the flow run.
+executionResult_errorInfo :: Lens.Lens' ExecutionResult (Prelude.Maybe ErrorInfo)
+executionResult_errorInfo = Lens.lens (\ExecutionResult' {errorInfo} -> errorInfo) (\s@ExecutionResult' {} a -> s {errorInfo = a} :: ExecutionResult)
+
+-- | The number of records processed in the flow run.
+executionResult_recordsProcessed :: Lens.Lens' ExecutionResult (Prelude.Maybe Prelude.Integer)
+executionResult_recordsProcessed = Lens.lens (\ExecutionResult' {recordsProcessed} -> recordsProcessed) (\s@ExecutionResult' {} a -> s {recordsProcessed = a} :: ExecutionResult)
+
+instance Data.FromJSON ExecutionResult where
+  parseJSON =
+    Data.withObject
+      "ExecutionResult"
+      ( \x ->
+          ExecutionResult'
+            Prelude.<$> (x Data..:? "bytesProcessed")
+            Prelude.<*> (x Data..:? "bytesWritten")
+            Prelude.<*> (x Data..:? "errorInfo")
+            Prelude.<*> (x Data..:? "recordsProcessed")
+      )
+
+instance Prelude.Hashable ExecutionResult where
+  hashWithSalt _salt ExecutionResult' {..} =
+    _salt
+      `Prelude.hashWithSalt` bytesProcessed
+      `Prelude.hashWithSalt` bytesWritten
+      `Prelude.hashWithSalt` errorInfo
+      `Prelude.hashWithSalt` recordsProcessed
+
+instance Prelude.NFData ExecutionResult where
+  rnf ExecutionResult' {..} =
+    Prelude.rnf bytesProcessed
+      `Prelude.seq` Prelude.rnf bytesWritten
+      `Prelude.seq` Prelude.rnf errorInfo
+      `Prelude.seq` Prelude.rnf recordsProcessed
diff --git a/gen/Amazonka/AppFlow/Types/ExecutionStatus.hs b/gen/Amazonka/AppFlow/Types/ExecutionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ExecutionStatus.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.AppFlow.Types.ExecutionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ExecutionStatus
+  ( ExecutionStatus
+      ( ..,
+        ExecutionStatus_Error,
+        ExecutionStatus_InProgress,
+        ExecutionStatus_Successful
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ExecutionStatus = ExecutionStatus'
+  { fromExecutionStatus ::
+      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 ExecutionStatus_Error :: ExecutionStatus
+pattern ExecutionStatus_Error = ExecutionStatus' "Error"
+
+pattern ExecutionStatus_InProgress :: ExecutionStatus
+pattern ExecutionStatus_InProgress = ExecutionStatus' "InProgress"
+
+pattern ExecutionStatus_Successful :: ExecutionStatus
+pattern ExecutionStatus_Successful = ExecutionStatus' "Successful"
+
+{-# COMPLETE
+  ExecutionStatus_Error,
+  ExecutionStatus_InProgress,
+  ExecutionStatus_Successful,
+  ExecutionStatus'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/FieldTypeDetails.hs b/gen/Amazonka/AppFlow/Types/FieldTypeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/FieldTypeDetails.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.FieldTypeDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.FieldTypeDetails where
+
+import Amazonka.AppFlow.Types.Operator
+import Amazonka.AppFlow.Types.Range
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains details regarding the supported field type and the operators
+-- that can be applied for filtering.
+--
+-- /See:/ 'newFieldTypeDetails' smart constructor.
+data FieldTypeDetails = FieldTypeDetails'
+  { -- | This is the allowable length range for this field\'s value.
+    fieldLengthRange :: Prelude.Maybe Range,
+    -- | The range of values this field can hold.
+    fieldValueRange :: Prelude.Maybe Range,
+    -- | The date format that the field supports.
+    supportedDateFormat :: Prelude.Maybe Prelude.Text,
+    -- | The list of values that a field can contain. For example, a Boolean
+    -- @fieldType@ can have two values: \"true\" and \"false\".
+    supportedValues :: Prelude.Maybe [Prelude.Text],
+    -- | The regular expression pattern for the field name.
+    valueRegexPattern :: Prelude.Maybe Prelude.Text,
+    -- | The type of field, such as string, integer, date, and so on.
+    fieldType :: Prelude.Text,
+    -- | The list of operators supported by a field.
+    filterOperators :: [Operator]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FieldTypeDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fieldLengthRange', 'fieldTypeDetails_fieldLengthRange' - This is the allowable length range for this field\'s value.
+--
+-- 'fieldValueRange', 'fieldTypeDetails_fieldValueRange' - The range of values this field can hold.
+--
+-- 'supportedDateFormat', 'fieldTypeDetails_supportedDateFormat' - The date format that the field supports.
+--
+-- 'supportedValues', 'fieldTypeDetails_supportedValues' - The list of values that a field can contain. For example, a Boolean
+-- @fieldType@ can have two values: \"true\" and \"false\".
+--
+-- 'valueRegexPattern', 'fieldTypeDetails_valueRegexPattern' - The regular expression pattern for the field name.
+--
+-- 'fieldType', 'fieldTypeDetails_fieldType' - The type of field, such as string, integer, date, and so on.
+--
+-- 'filterOperators', 'fieldTypeDetails_filterOperators' - The list of operators supported by a field.
+newFieldTypeDetails ::
+  -- | 'fieldType'
+  Prelude.Text ->
+  FieldTypeDetails
+newFieldTypeDetails pFieldType_ =
+  FieldTypeDetails'
+    { fieldLengthRange =
+        Prelude.Nothing,
+      fieldValueRange = Prelude.Nothing,
+      supportedDateFormat = Prelude.Nothing,
+      supportedValues = Prelude.Nothing,
+      valueRegexPattern = Prelude.Nothing,
+      fieldType = pFieldType_,
+      filterOperators = Prelude.mempty
+    }
+
+-- | This is the allowable length range for this field\'s value.
+fieldTypeDetails_fieldLengthRange :: Lens.Lens' FieldTypeDetails (Prelude.Maybe Range)
+fieldTypeDetails_fieldLengthRange = Lens.lens (\FieldTypeDetails' {fieldLengthRange} -> fieldLengthRange) (\s@FieldTypeDetails' {} a -> s {fieldLengthRange = a} :: FieldTypeDetails)
+
+-- | The range of values this field can hold.
+fieldTypeDetails_fieldValueRange :: Lens.Lens' FieldTypeDetails (Prelude.Maybe Range)
+fieldTypeDetails_fieldValueRange = Lens.lens (\FieldTypeDetails' {fieldValueRange} -> fieldValueRange) (\s@FieldTypeDetails' {} a -> s {fieldValueRange = a} :: FieldTypeDetails)
+
+-- | The date format that the field supports.
+fieldTypeDetails_supportedDateFormat :: Lens.Lens' FieldTypeDetails (Prelude.Maybe Prelude.Text)
+fieldTypeDetails_supportedDateFormat = Lens.lens (\FieldTypeDetails' {supportedDateFormat} -> supportedDateFormat) (\s@FieldTypeDetails' {} a -> s {supportedDateFormat = a} :: FieldTypeDetails)
+
+-- | The list of values that a field can contain. For example, a Boolean
+-- @fieldType@ can have two values: \"true\" and \"false\".
+fieldTypeDetails_supportedValues :: Lens.Lens' FieldTypeDetails (Prelude.Maybe [Prelude.Text])
+fieldTypeDetails_supportedValues = Lens.lens (\FieldTypeDetails' {supportedValues} -> supportedValues) (\s@FieldTypeDetails' {} a -> s {supportedValues = a} :: FieldTypeDetails) Prelude.. Lens.mapping Lens.coerced
+
+-- | The regular expression pattern for the field name.
+fieldTypeDetails_valueRegexPattern :: Lens.Lens' FieldTypeDetails (Prelude.Maybe Prelude.Text)
+fieldTypeDetails_valueRegexPattern = Lens.lens (\FieldTypeDetails' {valueRegexPattern} -> valueRegexPattern) (\s@FieldTypeDetails' {} a -> s {valueRegexPattern = a} :: FieldTypeDetails)
+
+-- | The type of field, such as string, integer, date, and so on.
+fieldTypeDetails_fieldType :: Lens.Lens' FieldTypeDetails Prelude.Text
+fieldTypeDetails_fieldType = Lens.lens (\FieldTypeDetails' {fieldType} -> fieldType) (\s@FieldTypeDetails' {} a -> s {fieldType = a} :: FieldTypeDetails)
+
+-- | The list of operators supported by a field.
+fieldTypeDetails_filterOperators :: Lens.Lens' FieldTypeDetails [Operator]
+fieldTypeDetails_filterOperators = Lens.lens (\FieldTypeDetails' {filterOperators} -> filterOperators) (\s@FieldTypeDetails' {} a -> s {filterOperators = a} :: FieldTypeDetails) Prelude.. Lens.coerced
+
+instance Data.FromJSON FieldTypeDetails where
+  parseJSON =
+    Data.withObject
+      "FieldTypeDetails"
+      ( \x ->
+          FieldTypeDetails'
+            Prelude.<$> (x Data..:? "fieldLengthRange")
+            Prelude.<*> (x Data..:? "fieldValueRange")
+            Prelude.<*> (x Data..:? "supportedDateFormat")
+            Prelude.<*> ( x
+                            Data..:? "supportedValues"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "valueRegexPattern")
+            Prelude.<*> (x Data..: "fieldType")
+            Prelude.<*> ( x
+                            Data..:? "filterOperators"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable FieldTypeDetails where
+  hashWithSalt _salt FieldTypeDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` fieldLengthRange
+      `Prelude.hashWithSalt` fieldValueRange
+      `Prelude.hashWithSalt` supportedDateFormat
+      `Prelude.hashWithSalt` supportedValues
+      `Prelude.hashWithSalt` valueRegexPattern
+      `Prelude.hashWithSalt` fieldType
+      `Prelude.hashWithSalt` filterOperators
+
+instance Prelude.NFData FieldTypeDetails where
+  rnf FieldTypeDetails' {..} =
+    Prelude.rnf fieldLengthRange
+      `Prelude.seq` Prelude.rnf fieldValueRange
+      `Prelude.seq` Prelude.rnf supportedDateFormat
+      `Prelude.seq` Prelude.rnf supportedValues
+      `Prelude.seq` Prelude.rnf valueRegexPattern
+      `Prelude.seq` Prelude.rnf fieldType
+      `Prelude.seq` Prelude.rnf filterOperators
diff --git a/gen/Amazonka/AppFlow/Types/FileType.hs b/gen/Amazonka/AppFlow/Types/FileType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/FileType.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.AppFlow.Types.FileType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.FileType
+  ( FileType
+      ( ..,
+        FileType_CSV,
+        FileType_JSON,
+        FileType_PARQUET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileType = FileType'
+  { fromFileType ::
+      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 FileType_CSV :: FileType
+pattern FileType_CSV = FileType' "CSV"
+
+pattern FileType_JSON :: FileType
+pattern FileType_JSON = FileType' "JSON"
+
+pattern FileType_PARQUET :: FileType
+pattern FileType_PARQUET = FileType' "PARQUET"
+
+{-# COMPLETE
+  FileType_CSV,
+  FileType_JSON,
+  FileType_PARQUET,
+  FileType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/FlowDefinition.hs b/gen/Amazonka/AppFlow/Types/FlowDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/FlowDefinition.hs
@@ -0,0 +1,257 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.FlowDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.FlowDefinition where
+
+import Amazonka.AppFlow.Types.ConnectorType
+import Amazonka.AppFlow.Types.ExecutionDetails
+import Amazonka.AppFlow.Types.FlowStatus
+import Amazonka.AppFlow.Types.TriggerType
+import qualified 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 properties of the flow, such as its source, destination, trigger
+-- type, and so on.
+--
+-- /See:/ 'newFlowDefinition' smart constructor.
+data FlowDefinition = FlowDefinition'
+  { -- | Specifies when the flow was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the user who created the flow.
+    createdBy :: Prelude.Maybe Prelude.Text,
+    -- | A user-entered description of the flow.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The label of the destination connector in the flow.
+    destinationConnectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the destination connector type, such as Salesforce, Amazon S3,
+    -- Amplitude, and so on.
+    destinationConnectorType :: Prelude.Maybe ConnectorType,
+    -- | The flow\'s Amazon Resource Name (ARN).
+    flowArn :: Prelude.Maybe Prelude.Text,
+    -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the current status of the flow.
+    flowStatus :: Prelude.Maybe FlowStatus,
+    -- | Describes the details of the most recent flow run.
+    lastRunExecutionDetails :: Prelude.Maybe ExecutionDetails,
+    -- | Specifies when the flow was last updated.
+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the account user name that most recently updated the flow.
+    lastUpdatedBy :: Prelude.Maybe Prelude.Text,
+    -- | The label of the source connector in the flow.
+    sourceConnectorLabel :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the source connector type, such as Salesforce, Amazon S3,
+    -- Amplitude, and so on.
+    sourceConnectorType :: Prelude.Maybe ConnectorType,
+    -- | The tags used to organize, track, or control access for your flow.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Specifies the type of flow trigger. This can be @OnDemand@, @Scheduled@,
+    -- or @Event@.
+    triggerType :: Prelude.Maybe TriggerType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FlowDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'flowDefinition_createdAt' - Specifies when the flow was created.
+--
+-- 'createdBy', 'flowDefinition_createdBy' - The ARN of the user who created the flow.
+--
+-- 'description', 'flowDefinition_description' - A user-entered description of the flow.
+--
+-- 'destinationConnectorLabel', 'flowDefinition_destinationConnectorLabel' - The label of the destination connector in the flow.
+--
+-- 'destinationConnectorType', 'flowDefinition_destinationConnectorType' - Specifies the destination connector type, such as Salesforce, Amazon S3,
+-- Amplitude, and so on.
+--
+-- 'flowArn', 'flowDefinition_flowArn' - The flow\'s Amazon Resource Name (ARN).
+--
+-- 'flowName', 'flowDefinition_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+--
+-- 'flowStatus', 'flowDefinition_flowStatus' - Indicates the current status of the flow.
+--
+-- 'lastRunExecutionDetails', 'flowDefinition_lastRunExecutionDetails' - Describes the details of the most recent flow run.
+--
+-- 'lastUpdatedAt', 'flowDefinition_lastUpdatedAt' - Specifies when the flow was last updated.
+--
+-- 'lastUpdatedBy', 'flowDefinition_lastUpdatedBy' - Specifies the account user name that most recently updated the flow.
+--
+-- 'sourceConnectorLabel', 'flowDefinition_sourceConnectorLabel' - The label of the source connector in the flow.
+--
+-- 'sourceConnectorType', 'flowDefinition_sourceConnectorType' - Specifies the source connector type, such as Salesforce, Amazon S3,
+-- Amplitude, and so on.
+--
+-- 'tags', 'flowDefinition_tags' - The tags used to organize, track, or control access for your flow.
+--
+-- 'triggerType', 'flowDefinition_triggerType' - Specifies the type of flow trigger. This can be @OnDemand@, @Scheduled@,
+-- or @Event@.
+newFlowDefinition ::
+  FlowDefinition
+newFlowDefinition =
+  FlowDefinition'
+    { createdAt = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      description = Prelude.Nothing,
+      destinationConnectorLabel = Prelude.Nothing,
+      destinationConnectorType = Prelude.Nothing,
+      flowArn = Prelude.Nothing,
+      flowName = Prelude.Nothing,
+      flowStatus = Prelude.Nothing,
+      lastRunExecutionDetails = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      lastUpdatedBy = Prelude.Nothing,
+      sourceConnectorLabel = Prelude.Nothing,
+      sourceConnectorType = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      triggerType = Prelude.Nothing
+    }
+
+-- | Specifies when the flow was created.
+flowDefinition_createdAt :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.UTCTime)
+flowDefinition_createdAt = Lens.lens (\FlowDefinition' {createdAt} -> createdAt) (\s@FlowDefinition' {} a -> s {createdAt = a} :: FlowDefinition) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the user who created the flow.
+flowDefinition_createdBy :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_createdBy = Lens.lens (\FlowDefinition' {createdBy} -> createdBy) (\s@FlowDefinition' {} a -> s {createdBy = a} :: FlowDefinition)
+
+-- | A user-entered description of the flow.
+flowDefinition_description :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_description = Lens.lens (\FlowDefinition' {description} -> description) (\s@FlowDefinition' {} a -> s {description = a} :: FlowDefinition)
+
+-- | The label of the destination connector in the flow.
+flowDefinition_destinationConnectorLabel :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_destinationConnectorLabel = Lens.lens (\FlowDefinition' {destinationConnectorLabel} -> destinationConnectorLabel) (\s@FlowDefinition' {} a -> s {destinationConnectorLabel = a} :: FlowDefinition)
+
+-- | Specifies the destination connector type, such as Salesforce, Amazon S3,
+-- Amplitude, and so on.
+flowDefinition_destinationConnectorType :: Lens.Lens' FlowDefinition (Prelude.Maybe ConnectorType)
+flowDefinition_destinationConnectorType = Lens.lens (\FlowDefinition' {destinationConnectorType} -> destinationConnectorType) (\s@FlowDefinition' {} a -> s {destinationConnectorType = a} :: FlowDefinition)
+
+-- | The flow\'s Amazon Resource Name (ARN).
+flowDefinition_flowArn :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_flowArn = Lens.lens (\FlowDefinition' {flowArn} -> flowArn) (\s@FlowDefinition' {} a -> s {flowArn = a} :: FlowDefinition)
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+flowDefinition_flowName :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_flowName = Lens.lens (\FlowDefinition' {flowName} -> flowName) (\s@FlowDefinition' {} a -> s {flowName = a} :: FlowDefinition)
+
+-- | Indicates the current status of the flow.
+flowDefinition_flowStatus :: Lens.Lens' FlowDefinition (Prelude.Maybe FlowStatus)
+flowDefinition_flowStatus = Lens.lens (\FlowDefinition' {flowStatus} -> flowStatus) (\s@FlowDefinition' {} a -> s {flowStatus = a} :: FlowDefinition)
+
+-- | Describes the details of the most recent flow run.
+flowDefinition_lastRunExecutionDetails :: Lens.Lens' FlowDefinition (Prelude.Maybe ExecutionDetails)
+flowDefinition_lastRunExecutionDetails = Lens.lens (\FlowDefinition' {lastRunExecutionDetails} -> lastRunExecutionDetails) (\s@FlowDefinition' {} a -> s {lastRunExecutionDetails = a} :: FlowDefinition)
+
+-- | Specifies when the flow was last updated.
+flowDefinition_lastUpdatedAt :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.UTCTime)
+flowDefinition_lastUpdatedAt = Lens.lens (\FlowDefinition' {lastUpdatedAt} -> lastUpdatedAt) (\s@FlowDefinition' {} a -> s {lastUpdatedAt = a} :: FlowDefinition) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the account user name that most recently updated the flow.
+flowDefinition_lastUpdatedBy :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_lastUpdatedBy = Lens.lens (\FlowDefinition' {lastUpdatedBy} -> lastUpdatedBy) (\s@FlowDefinition' {} a -> s {lastUpdatedBy = a} :: FlowDefinition)
+
+-- | The label of the source connector in the flow.
+flowDefinition_sourceConnectorLabel :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)
+flowDefinition_sourceConnectorLabel = Lens.lens (\FlowDefinition' {sourceConnectorLabel} -> sourceConnectorLabel) (\s@FlowDefinition' {} a -> s {sourceConnectorLabel = a} :: FlowDefinition)
+
+-- | Specifies the source connector type, such as Salesforce, Amazon S3,
+-- Amplitude, and so on.
+flowDefinition_sourceConnectorType :: Lens.Lens' FlowDefinition (Prelude.Maybe ConnectorType)
+flowDefinition_sourceConnectorType = Lens.lens (\FlowDefinition' {sourceConnectorType} -> sourceConnectorType) (\s@FlowDefinition' {} a -> s {sourceConnectorType = a} :: FlowDefinition)
+
+-- | The tags used to organize, track, or control access for your flow.
+flowDefinition_tags :: Lens.Lens' FlowDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+flowDefinition_tags = Lens.lens (\FlowDefinition' {tags} -> tags) (\s@FlowDefinition' {} a -> s {tags = a} :: FlowDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the type of flow trigger. This can be @OnDemand@, @Scheduled@,
+-- or @Event@.
+flowDefinition_triggerType :: Lens.Lens' FlowDefinition (Prelude.Maybe TriggerType)
+flowDefinition_triggerType = Lens.lens (\FlowDefinition' {triggerType} -> triggerType) (\s@FlowDefinition' {} a -> s {triggerType = a} :: FlowDefinition)
+
+instance Data.FromJSON FlowDefinition where
+  parseJSON =
+    Data.withObject
+      "FlowDefinition"
+      ( \x ->
+          FlowDefinition'
+            Prelude.<$> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "createdBy")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "destinationConnectorLabel")
+            Prelude.<*> (x Data..:? "destinationConnectorType")
+            Prelude.<*> (x Data..:? "flowArn")
+            Prelude.<*> (x Data..:? "flowName")
+            Prelude.<*> (x Data..:? "flowStatus")
+            Prelude.<*> (x Data..:? "lastRunExecutionDetails")
+            Prelude.<*> (x Data..:? "lastUpdatedAt")
+            Prelude.<*> (x Data..:? "lastUpdatedBy")
+            Prelude.<*> (x Data..:? "sourceConnectorLabel")
+            Prelude.<*> (x Data..:? "sourceConnectorType")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "triggerType")
+      )
+
+instance Prelude.Hashable FlowDefinition where
+  hashWithSalt _salt FlowDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` destinationConnectorLabel
+      `Prelude.hashWithSalt` destinationConnectorType
+      `Prelude.hashWithSalt` flowArn
+      `Prelude.hashWithSalt` flowName
+      `Prelude.hashWithSalt` flowStatus
+      `Prelude.hashWithSalt` lastRunExecutionDetails
+      `Prelude.hashWithSalt` lastUpdatedAt
+      `Prelude.hashWithSalt` lastUpdatedBy
+      `Prelude.hashWithSalt` sourceConnectorLabel
+      `Prelude.hashWithSalt` sourceConnectorType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` triggerType
+
+instance Prelude.NFData FlowDefinition where
+  rnf FlowDefinition' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf destinationConnectorLabel
+      `Prelude.seq` Prelude.rnf destinationConnectorType
+      `Prelude.seq` Prelude.rnf flowArn
+      `Prelude.seq` Prelude.rnf flowName
+      `Prelude.seq` Prelude.rnf flowStatus
+      `Prelude.seq` Prelude.rnf lastRunExecutionDetails
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf lastUpdatedBy
+      `Prelude.seq` Prelude.rnf sourceConnectorLabel
+      `Prelude.seq` Prelude.rnf sourceConnectorType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf triggerType
diff --git a/gen/Amazonka/AppFlow/Types/FlowStatus.hs b/gen/Amazonka/AppFlow/Types/FlowStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/FlowStatus.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.AppFlow.Types.FlowStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.FlowStatus
+  ( FlowStatus
+      ( ..,
+        FlowStatus_Active,
+        FlowStatus_Deleted,
+        FlowStatus_Deprecated,
+        FlowStatus_Draft,
+        FlowStatus_Errored,
+        FlowStatus_Suspended
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FlowStatus = FlowStatus'
+  { fromFlowStatus ::
+      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 FlowStatus_Active :: FlowStatus
+pattern FlowStatus_Active = FlowStatus' "Active"
+
+pattern FlowStatus_Deleted :: FlowStatus
+pattern FlowStatus_Deleted = FlowStatus' "Deleted"
+
+pattern FlowStatus_Deprecated :: FlowStatus
+pattern FlowStatus_Deprecated = FlowStatus' "Deprecated"
+
+pattern FlowStatus_Draft :: FlowStatus
+pattern FlowStatus_Draft = FlowStatus' "Draft"
+
+pattern FlowStatus_Errored :: FlowStatus
+pattern FlowStatus_Errored = FlowStatus' "Errored"
+
+pattern FlowStatus_Suspended :: FlowStatus
+pattern FlowStatus_Suspended = FlowStatus' "Suspended"
+
+{-# COMPLETE
+  FlowStatus_Active,
+  FlowStatus_Deleted,
+  FlowStatus_Deprecated,
+  FlowStatus_Draft,
+  FlowStatus_Errored,
+  FlowStatus_Suspended,
+  FlowStatus'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/GlueDataCatalogConfig.hs b/gen/Amazonka/AppFlow/Types/GlueDataCatalogConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/GlueDataCatalogConfig.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.GlueDataCatalogConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.GlueDataCatalogConfig where
+
+import qualified 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 the configuration that Amazon AppFlow uses when it catalogs
+-- your data with the Glue Data Catalog. When Amazon AppFlow catalogs your
+-- data, it stores metadata in Data Catalog tables. This metadata
+-- represents the data that\'s transferred by the flow that you configure
+-- with these settings.
+--
+-- You can configure a flow with these settings only when the flow
+-- destination is Amazon S3.
+--
+-- /See:/ 'newGlueDataCatalogConfig' smart constructor.
+data GlueDataCatalogConfig = GlueDataCatalogConfig'
+  { -- | The Amazon Resource Name (ARN) of an IAM role that grants Amazon AppFlow
+    -- the permissions it needs to create Data Catalog tables, databases, and
+    -- partitions.
+    --
+    -- For an example IAM policy that has the required permissions, see
+    -- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_id-based-policy-examples.html Identity-based policy examples for Amazon AppFlow>.
+    roleArn :: Prelude.Text,
+    -- | The name of the Data Catalog database that stores the metadata tables
+    -- that Amazon AppFlow creates in your Amazon Web Services account. These
+    -- tables contain metadata for the data that\'s transferred by the flow
+    -- that you configure with this parameter.
+    --
+    -- When you configure a new flow with this parameter, you must specify an
+    -- existing database.
+    databaseName :: Prelude.Text,
+    -- | A naming prefix for each Data Catalog table that Amazon AppFlow creates
+    -- for the flow that you configure with this setting. Amazon AppFlow adds
+    -- the prefix to the beginning of the each table name.
+    tablePrefix :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GlueDataCatalogConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'roleArn', 'glueDataCatalogConfig_roleArn' - The Amazon Resource Name (ARN) of an IAM role that grants Amazon AppFlow
+-- the permissions it needs to create Data Catalog tables, databases, and
+-- partitions.
+--
+-- For an example IAM policy that has the required permissions, see
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_id-based-policy-examples.html Identity-based policy examples for Amazon AppFlow>.
+--
+-- 'databaseName', 'glueDataCatalogConfig_databaseName' - The name of the Data Catalog database that stores the metadata tables
+-- that Amazon AppFlow creates in your Amazon Web Services account. These
+-- tables contain metadata for the data that\'s transferred by the flow
+-- that you configure with this parameter.
+--
+-- When you configure a new flow with this parameter, you must specify an
+-- existing database.
+--
+-- 'tablePrefix', 'glueDataCatalogConfig_tablePrefix' - A naming prefix for each Data Catalog table that Amazon AppFlow creates
+-- for the flow that you configure with this setting. Amazon AppFlow adds
+-- the prefix to the beginning of the each table name.
+newGlueDataCatalogConfig ::
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'databaseName'
+  Prelude.Text ->
+  -- | 'tablePrefix'
+  Prelude.Text ->
+  GlueDataCatalogConfig
+newGlueDataCatalogConfig
+  pRoleArn_
+  pDatabaseName_
+  pTablePrefix_ =
+    GlueDataCatalogConfig'
+      { roleArn = pRoleArn_,
+        databaseName = pDatabaseName_,
+        tablePrefix = pTablePrefix_
+      }
+
+-- | The Amazon Resource Name (ARN) of an IAM role that grants Amazon AppFlow
+-- the permissions it needs to create Data Catalog tables, databases, and
+-- partitions.
+--
+-- For an example IAM policy that has the required permissions, see
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_id-based-policy-examples.html Identity-based policy examples for Amazon AppFlow>.
+glueDataCatalogConfig_roleArn :: Lens.Lens' GlueDataCatalogConfig Prelude.Text
+glueDataCatalogConfig_roleArn = Lens.lens (\GlueDataCatalogConfig' {roleArn} -> roleArn) (\s@GlueDataCatalogConfig' {} a -> s {roleArn = a} :: GlueDataCatalogConfig)
+
+-- | The name of the Data Catalog database that stores the metadata tables
+-- that Amazon AppFlow creates in your Amazon Web Services account. These
+-- tables contain metadata for the data that\'s transferred by the flow
+-- that you configure with this parameter.
+--
+-- When you configure a new flow with this parameter, you must specify an
+-- existing database.
+glueDataCatalogConfig_databaseName :: Lens.Lens' GlueDataCatalogConfig Prelude.Text
+glueDataCatalogConfig_databaseName = Lens.lens (\GlueDataCatalogConfig' {databaseName} -> databaseName) (\s@GlueDataCatalogConfig' {} a -> s {databaseName = a} :: GlueDataCatalogConfig)
+
+-- | A naming prefix for each Data Catalog table that Amazon AppFlow creates
+-- for the flow that you configure with this setting. Amazon AppFlow adds
+-- the prefix to the beginning of the each table name.
+glueDataCatalogConfig_tablePrefix :: Lens.Lens' GlueDataCatalogConfig Prelude.Text
+glueDataCatalogConfig_tablePrefix = Lens.lens (\GlueDataCatalogConfig' {tablePrefix} -> tablePrefix) (\s@GlueDataCatalogConfig' {} a -> s {tablePrefix = a} :: GlueDataCatalogConfig)
+
+instance Data.FromJSON GlueDataCatalogConfig where
+  parseJSON =
+    Data.withObject
+      "GlueDataCatalogConfig"
+      ( \x ->
+          GlueDataCatalogConfig'
+            Prelude.<$> (x Data..: "roleArn")
+            Prelude.<*> (x Data..: "databaseName")
+            Prelude.<*> (x Data..: "tablePrefix")
+      )
+
+instance Prelude.Hashable GlueDataCatalogConfig where
+  hashWithSalt _salt GlueDataCatalogConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` databaseName
+      `Prelude.hashWithSalt` tablePrefix
+
+instance Prelude.NFData GlueDataCatalogConfig where
+  rnf GlueDataCatalogConfig' {..} =
+    Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf databaseName
+      `Prelude.seq` Prelude.rnf tablePrefix
+
+instance Data.ToJSON GlueDataCatalogConfig where
+  toJSON GlueDataCatalogConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("roleArn" Data..= roleArn),
+            Prelude.Just ("databaseName" Data..= databaseName),
+            Prelude.Just ("tablePrefix" Data..= tablePrefix)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorOperator.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.AppFlow.Types.GoogleAnalyticsConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.GoogleAnalyticsConnectorOperator
+  ( GoogleAnalyticsConnectorOperator
+      ( ..,
+        GoogleAnalyticsConnectorOperator_BETWEEN,
+        GoogleAnalyticsConnectorOperator_PROJECTION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GoogleAnalyticsConnectorOperator = GoogleAnalyticsConnectorOperator'
+  { fromGoogleAnalyticsConnectorOperator ::
+      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 GoogleAnalyticsConnectorOperator_BETWEEN :: GoogleAnalyticsConnectorOperator
+pattern GoogleAnalyticsConnectorOperator_BETWEEN = GoogleAnalyticsConnectorOperator' "BETWEEN"
+
+pattern GoogleAnalyticsConnectorOperator_PROJECTION :: GoogleAnalyticsConnectorOperator
+pattern GoogleAnalyticsConnectorOperator_PROJECTION = GoogleAnalyticsConnectorOperator' "PROJECTION"
+
+{-# COMPLETE
+  GoogleAnalyticsConnectorOperator_BETWEEN,
+  GoogleAnalyticsConnectorOperator_PROJECTION,
+  GoogleAnalyticsConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorProfileCredentials.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 connector-specific profile credentials required by Google Analytics.
+--
+-- /See:/ 'newGoogleAnalyticsConnectorProfileCredentials' smart constructor.
+data GoogleAnalyticsConnectorProfileCredentials = GoogleAnalyticsConnectorProfileCredentials'
+  { -- | The credentials used to access protected Google Analytics resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The OAuth requirement needed to request security tokens from the
+    -- connector endpoint.
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The credentials used to acquire new access tokens. This is required only
+    -- for OAuth2 access tokens, and is not required for OAuth1 access tokens.
+    refreshToken :: Prelude.Maybe Prelude.Text,
+    -- | The identifier for the desired client.
+    clientId :: Prelude.Text,
+    -- | The client secret used by the OAuth client to authenticate to the
+    -- authorization server.
+    clientSecret :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GoogleAnalyticsConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'googleAnalyticsConnectorProfileCredentials_accessToken' - The credentials used to access protected Google Analytics resources.
+--
+-- 'oAuthRequest', 'googleAnalyticsConnectorProfileCredentials_oAuthRequest' - The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+--
+-- 'refreshToken', 'googleAnalyticsConnectorProfileCredentials_refreshToken' - The credentials used to acquire new access tokens. This is required only
+-- for OAuth2 access tokens, and is not required for OAuth1 access tokens.
+--
+-- 'clientId', 'googleAnalyticsConnectorProfileCredentials_clientId' - The identifier for the desired client.
+--
+-- 'clientSecret', 'googleAnalyticsConnectorProfileCredentials_clientSecret' - The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+newGoogleAnalyticsConnectorProfileCredentials ::
+  -- | 'clientId'
+  Prelude.Text ->
+  -- | 'clientSecret'
+  Prelude.Text ->
+  GoogleAnalyticsConnectorProfileCredentials
+newGoogleAnalyticsConnectorProfileCredentials
+  pClientId_
+  pClientSecret_ =
+    GoogleAnalyticsConnectorProfileCredentials'
+      { accessToken =
+          Prelude.Nothing,
+        oAuthRequest = Prelude.Nothing,
+        refreshToken = Prelude.Nothing,
+        clientId = pClientId_,
+        clientSecret =
+          Data._Sensitive
+            Lens.# pClientSecret_
+      }
+
+-- | The credentials used to access protected Google Analytics resources.
+googleAnalyticsConnectorProfileCredentials_accessToken :: Lens.Lens' GoogleAnalyticsConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+googleAnalyticsConnectorProfileCredentials_accessToken = Lens.lens (\GoogleAnalyticsConnectorProfileCredentials' {accessToken} -> accessToken) (\s@GoogleAnalyticsConnectorProfileCredentials' {} a -> s {accessToken = a} :: GoogleAnalyticsConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+googleAnalyticsConnectorProfileCredentials_oAuthRequest :: Lens.Lens' GoogleAnalyticsConnectorProfileCredentials (Prelude.Maybe ConnectorOAuthRequest)
+googleAnalyticsConnectorProfileCredentials_oAuthRequest = Lens.lens (\GoogleAnalyticsConnectorProfileCredentials' {oAuthRequest} -> oAuthRequest) (\s@GoogleAnalyticsConnectorProfileCredentials' {} a -> s {oAuthRequest = a} :: GoogleAnalyticsConnectorProfileCredentials)
+
+-- | The credentials used to acquire new access tokens. This is required only
+-- for OAuth2 access tokens, and is not required for OAuth1 access tokens.
+googleAnalyticsConnectorProfileCredentials_refreshToken :: Lens.Lens' GoogleAnalyticsConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+googleAnalyticsConnectorProfileCredentials_refreshToken = Lens.lens (\GoogleAnalyticsConnectorProfileCredentials' {refreshToken} -> refreshToken) (\s@GoogleAnalyticsConnectorProfileCredentials' {} a -> s {refreshToken = a} :: GoogleAnalyticsConnectorProfileCredentials)
+
+-- | The identifier for the desired client.
+googleAnalyticsConnectorProfileCredentials_clientId :: Lens.Lens' GoogleAnalyticsConnectorProfileCredentials Prelude.Text
+googleAnalyticsConnectorProfileCredentials_clientId = Lens.lens (\GoogleAnalyticsConnectorProfileCredentials' {clientId} -> clientId) (\s@GoogleAnalyticsConnectorProfileCredentials' {} a -> s {clientId = a} :: GoogleAnalyticsConnectorProfileCredentials)
+
+-- | The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+googleAnalyticsConnectorProfileCredentials_clientSecret :: Lens.Lens' GoogleAnalyticsConnectorProfileCredentials Prelude.Text
+googleAnalyticsConnectorProfileCredentials_clientSecret = Lens.lens (\GoogleAnalyticsConnectorProfileCredentials' {clientSecret} -> clientSecret) (\s@GoogleAnalyticsConnectorProfileCredentials' {} a -> s {clientSecret = a} :: GoogleAnalyticsConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    GoogleAnalyticsConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    GoogleAnalyticsConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessToken
+        `Prelude.hashWithSalt` oAuthRequest
+        `Prelude.hashWithSalt` refreshToken
+        `Prelude.hashWithSalt` clientId
+        `Prelude.hashWithSalt` clientSecret
+
+instance
+  Prelude.NFData
+    GoogleAnalyticsConnectorProfileCredentials
+  where
+  rnf GoogleAnalyticsConnectorProfileCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf refreshToken
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+
+instance
+  Data.ToJSON
+    GoogleAnalyticsConnectorProfileCredentials
+  where
+  toJSON
+    GoogleAnalyticsConnectorProfileCredentials' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("accessToken" Data..=) Prelude.<$> accessToken,
+              ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+              ("refreshToken" Data..=) Prelude.<$> refreshToken,
+              Prelude.Just ("clientId" Data..= clientId),
+              Prelude.Just ("clientSecret" Data..= clientSecret)
+            ]
+        )
diff --git a/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsConnectorProfileProperties.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.GoogleAnalyticsConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required by Google Analytics.
+--
+-- /See:/ 'newGoogleAnalyticsConnectorProfileProperties' smart constructor.
+data GoogleAnalyticsConnectorProfileProperties = GoogleAnalyticsConnectorProfileProperties'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GoogleAnalyticsConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGoogleAnalyticsConnectorProfileProperties ::
+  GoogleAnalyticsConnectorProfileProperties
+newGoogleAnalyticsConnectorProfileProperties =
+  GoogleAnalyticsConnectorProfileProperties'
+
+instance
+  Data.FromJSON
+    GoogleAnalyticsConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "GoogleAnalyticsConnectorProfileProperties"
+      ( \x ->
+          Prelude.pure
+            GoogleAnalyticsConnectorProfileProperties'
+      )
+
+instance
+  Prelude.Hashable
+    GoogleAnalyticsConnectorProfileProperties
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    GoogleAnalyticsConnectorProfileProperties
+  where
+  rnf _ = ()
+
+instance
+  Data.ToJSON
+    GoogleAnalyticsConnectorProfileProperties
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AppFlow/Types/GoogleAnalyticsMetadata.hs b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsMetadata.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.AppFlow.Types.GoogleAnalyticsMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.GoogleAnalyticsMetadata where
+
+import qualified 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 connector metadata specific to Google Analytics.
+--
+-- /See:/ 'newGoogleAnalyticsMetadata' smart constructor.
+data GoogleAnalyticsMetadata = GoogleAnalyticsMetadata'
+  { -- | The desired authorization scope for the Google Analytics account.
+    oAuthScopes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GoogleAnalyticsMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'oAuthScopes', 'googleAnalyticsMetadata_oAuthScopes' - The desired authorization scope for the Google Analytics account.
+newGoogleAnalyticsMetadata ::
+  GoogleAnalyticsMetadata
+newGoogleAnalyticsMetadata =
+  GoogleAnalyticsMetadata'
+    { oAuthScopes =
+        Prelude.Nothing
+    }
+
+-- | The desired authorization scope for the Google Analytics account.
+googleAnalyticsMetadata_oAuthScopes :: Lens.Lens' GoogleAnalyticsMetadata (Prelude.Maybe [Prelude.Text])
+googleAnalyticsMetadata_oAuthScopes = Lens.lens (\GoogleAnalyticsMetadata' {oAuthScopes} -> oAuthScopes) (\s@GoogleAnalyticsMetadata' {} a -> s {oAuthScopes = a} :: GoogleAnalyticsMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON GoogleAnalyticsMetadata where
+  parseJSON =
+    Data.withObject
+      "GoogleAnalyticsMetadata"
+      ( \x ->
+          GoogleAnalyticsMetadata'
+            Prelude.<$> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable GoogleAnalyticsMetadata where
+  hashWithSalt _salt GoogleAnalyticsMetadata' {..} =
+    _salt `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData GoogleAnalyticsMetadata where
+  rnf GoogleAnalyticsMetadata' {..} =
+    Prelude.rnf oAuthScopes
diff --git a/gen/Amazonka/AppFlow/Types/GoogleAnalyticsSourceProperties.hs b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/GoogleAnalyticsSourceProperties.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.GoogleAnalyticsSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.GoogleAnalyticsSourceProperties where
+
+import qualified 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 properties that are applied when Google Analytics is being used as a
+-- source.
+--
+-- /See:/ 'newGoogleAnalyticsSourceProperties' smart constructor.
+data GoogleAnalyticsSourceProperties = GoogleAnalyticsSourceProperties'
+  { -- | The object specified in the Google Analytics flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GoogleAnalyticsSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'googleAnalyticsSourceProperties_object' - The object specified in the Google Analytics flow source.
+newGoogleAnalyticsSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  GoogleAnalyticsSourceProperties
+newGoogleAnalyticsSourceProperties pObject_ =
+  GoogleAnalyticsSourceProperties'
+    { object' =
+        pObject_
+    }
+
+-- | The object specified in the Google Analytics flow source.
+googleAnalyticsSourceProperties_object :: Lens.Lens' GoogleAnalyticsSourceProperties Prelude.Text
+googleAnalyticsSourceProperties_object = Lens.lens (\GoogleAnalyticsSourceProperties' {object'} -> object') (\s@GoogleAnalyticsSourceProperties' {} a -> s {object' = a} :: GoogleAnalyticsSourceProperties)
+
+instance
+  Data.FromJSON
+    GoogleAnalyticsSourceProperties
+  where
+  parseJSON =
+    Data.withObject
+      "GoogleAnalyticsSourceProperties"
+      ( \x ->
+          GoogleAnalyticsSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance
+  Prelude.Hashable
+    GoogleAnalyticsSourceProperties
+  where
+  hashWithSalt
+    _salt
+    GoogleAnalyticsSourceProperties' {..} =
+      _salt `Prelude.hashWithSalt` object'
+
+instance
+  Prelude.NFData
+    GoogleAnalyticsSourceProperties
+  where
+  rnf GoogleAnalyticsSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON GoogleAnalyticsSourceProperties where
+  toJSON GoogleAnalyticsSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/HoneycodeConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/HoneycodeConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/HoneycodeConnectorProfileCredentials.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.HoneycodeConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.HoneycodeConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 connector-specific credentials required when using Amazon Honeycode.
+--
+-- /See:/ 'newHoneycodeConnectorProfileCredentials' smart constructor.
+data HoneycodeConnectorProfileCredentials = HoneycodeConnectorProfileCredentials'
+  { -- | The credentials used to access protected Amazon Honeycode resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The credentials used to acquire new access tokens.
+    refreshToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HoneycodeConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'honeycodeConnectorProfileCredentials_accessToken' - The credentials used to access protected Amazon Honeycode resources.
+--
+-- 'oAuthRequest', 'honeycodeConnectorProfileCredentials_oAuthRequest' - Undocumented member.
+--
+-- 'refreshToken', 'honeycodeConnectorProfileCredentials_refreshToken' - The credentials used to acquire new access tokens.
+newHoneycodeConnectorProfileCredentials ::
+  HoneycodeConnectorProfileCredentials
+newHoneycodeConnectorProfileCredentials =
+  HoneycodeConnectorProfileCredentials'
+    { accessToken =
+        Prelude.Nothing,
+      oAuthRequest = Prelude.Nothing,
+      refreshToken = Prelude.Nothing
+    }
+
+-- | The credentials used to access protected Amazon Honeycode resources.
+honeycodeConnectorProfileCredentials_accessToken :: Lens.Lens' HoneycodeConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+honeycodeConnectorProfileCredentials_accessToken = Lens.lens (\HoneycodeConnectorProfileCredentials' {accessToken} -> accessToken) (\s@HoneycodeConnectorProfileCredentials' {} a -> s {accessToken = a} :: HoneycodeConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Undocumented member.
+honeycodeConnectorProfileCredentials_oAuthRequest :: Lens.Lens' HoneycodeConnectorProfileCredentials (Prelude.Maybe ConnectorOAuthRequest)
+honeycodeConnectorProfileCredentials_oAuthRequest = Lens.lens (\HoneycodeConnectorProfileCredentials' {oAuthRequest} -> oAuthRequest) (\s@HoneycodeConnectorProfileCredentials' {} a -> s {oAuthRequest = a} :: HoneycodeConnectorProfileCredentials)
+
+-- | The credentials used to acquire new access tokens.
+honeycodeConnectorProfileCredentials_refreshToken :: Lens.Lens' HoneycodeConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+honeycodeConnectorProfileCredentials_refreshToken = Lens.lens (\HoneycodeConnectorProfileCredentials' {refreshToken} -> refreshToken) (\s@HoneycodeConnectorProfileCredentials' {} a -> s {refreshToken = a} :: HoneycodeConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    HoneycodeConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    HoneycodeConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessToken
+        `Prelude.hashWithSalt` oAuthRequest
+        `Prelude.hashWithSalt` refreshToken
+
+instance
+  Prelude.NFData
+    HoneycodeConnectorProfileCredentials
+  where
+  rnf HoneycodeConnectorProfileCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf refreshToken
+
+instance
+  Data.ToJSON
+    HoneycodeConnectorProfileCredentials
+  where
+  toJSON HoneycodeConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            ("refreshToken" Data..=) Prelude.<$> refreshToken
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/HoneycodeConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/HoneycodeConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/HoneycodeConnectorProfileProperties.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.AppFlow.Types.HoneycodeConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.HoneycodeConnectorProfileProperties where
+
+import qualified 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 connector-specific properties required when using Amazon Honeycode.
+--
+-- /See:/ 'newHoneycodeConnectorProfileProperties' smart constructor.
+data HoneycodeConnectorProfileProperties = HoneycodeConnectorProfileProperties'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HoneycodeConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newHoneycodeConnectorProfileProperties ::
+  HoneycodeConnectorProfileProperties
+newHoneycodeConnectorProfileProperties =
+  HoneycodeConnectorProfileProperties'
+
+instance
+  Data.FromJSON
+    HoneycodeConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "HoneycodeConnectorProfileProperties"
+      ( \x ->
+          Prelude.pure HoneycodeConnectorProfileProperties'
+      )
+
+instance
+  Prelude.Hashable
+    HoneycodeConnectorProfileProperties
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    HoneycodeConnectorProfileProperties
+  where
+  rnf _ = ()
+
+instance
+  Data.ToJSON
+    HoneycodeConnectorProfileProperties
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AppFlow/Types/HoneycodeDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/HoneycodeDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/HoneycodeDestinationProperties.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.AppFlow.Types.HoneycodeDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.HoneycodeDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import qualified 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 properties that are applied when Amazon Honeycode is used as a
+-- destination.
+--
+-- /See:/ 'newHoneycodeDestinationProperties' smart constructor.
+data HoneycodeDestinationProperties = HoneycodeDestinationProperties'
+  { errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The object specified in the Amazon Honeycode flow destination.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HoneycodeDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorHandlingConfig', 'honeycodeDestinationProperties_errorHandlingConfig' - Undocumented member.
+--
+-- 'object'', 'honeycodeDestinationProperties_object' - The object specified in the Amazon Honeycode flow destination.
+newHoneycodeDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  HoneycodeDestinationProperties
+newHoneycodeDestinationProperties pObject_ =
+  HoneycodeDestinationProperties'
+    { errorHandlingConfig =
+        Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | Undocumented member.
+honeycodeDestinationProperties_errorHandlingConfig :: Lens.Lens' HoneycodeDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+honeycodeDestinationProperties_errorHandlingConfig = Lens.lens (\HoneycodeDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@HoneycodeDestinationProperties' {} a -> s {errorHandlingConfig = a} :: HoneycodeDestinationProperties)
+
+-- | The object specified in the Amazon Honeycode flow destination.
+honeycodeDestinationProperties_object :: Lens.Lens' HoneycodeDestinationProperties Prelude.Text
+honeycodeDestinationProperties_object = Lens.lens (\HoneycodeDestinationProperties' {object'} -> object') (\s@HoneycodeDestinationProperties' {} a -> s {object' = a} :: HoneycodeDestinationProperties)
+
+instance Data.FromJSON HoneycodeDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "HoneycodeDestinationProperties"
+      ( \x ->
+          HoneycodeDestinationProperties'
+            Prelude.<$> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance
+  Prelude.Hashable
+    HoneycodeDestinationProperties
+  where
+  hashWithSalt
+    _salt
+    HoneycodeDestinationProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` errorHandlingConfig
+        `Prelude.hashWithSalt` object'
+
+instance
+  Prelude.NFData
+    HoneycodeDestinationProperties
+  where
+  rnf HoneycodeDestinationProperties' {..} =
+    Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON HoneycodeDestinationProperties where
+  toJSON HoneycodeDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/HoneycodeMetadata.hs b/gen/Amazonka/AppFlow/Types/HoneycodeMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/HoneycodeMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.HoneycodeMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.HoneycodeMetadata where
+
+import qualified 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 connector metadata specific to Amazon Honeycode.
+--
+-- /See:/ 'newHoneycodeMetadata' smart constructor.
+data HoneycodeMetadata = HoneycodeMetadata'
+  { -- | The desired authorization scope for the Amazon Honeycode account.
+    oAuthScopes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HoneycodeMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'oAuthScopes', 'honeycodeMetadata_oAuthScopes' - The desired authorization scope for the Amazon Honeycode account.
+newHoneycodeMetadata ::
+  HoneycodeMetadata
+newHoneycodeMetadata =
+  HoneycodeMetadata' {oAuthScopes = Prelude.Nothing}
+
+-- | The desired authorization scope for the Amazon Honeycode account.
+honeycodeMetadata_oAuthScopes :: Lens.Lens' HoneycodeMetadata (Prelude.Maybe [Prelude.Text])
+honeycodeMetadata_oAuthScopes = Lens.lens (\HoneycodeMetadata' {oAuthScopes} -> oAuthScopes) (\s@HoneycodeMetadata' {} a -> s {oAuthScopes = a} :: HoneycodeMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON HoneycodeMetadata where
+  parseJSON =
+    Data.withObject
+      "HoneycodeMetadata"
+      ( \x ->
+          HoneycodeMetadata'
+            Prelude.<$> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable HoneycodeMetadata where
+  hashWithSalt _salt HoneycodeMetadata' {..} =
+    _salt `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData HoneycodeMetadata where
+  rnf HoneycodeMetadata' {..} = Prelude.rnf oAuthScopes
diff --git a/gen/Amazonka/AppFlow/Types/IncrementalPullConfig.hs b/gen/Amazonka/AppFlow/Types/IncrementalPullConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/IncrementalPullConfig.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.AppFlow.Types.IncrementalPullConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.IncrementalPullConfig where
+
+import qualified 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 the configuration used when importing incremental records from
+-- the source.
+--
+-- /See:/ 'newIncrementalPullConfig' smart constructor.
+data IncrementalPullConfig = IncrementalPullConfig'
+  { -- | A field that specifies the date time or timestamp field as the criteria
+    -- to use when importing incremental records from the source.
+    datetimeTypeFieldName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IncrementalPullConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datetimeTypeFieldName', 'incrementalPullConfig_datetimeTypeFieldName' - A field that specifies the date time or timestamp field as the criteria
+-- to use when importing incremental records from the source.
+newIncrementalPullConfig ::
+  IncrementalPullConfig
+newIncrementalPullConfig =
+  IncrementalPullConfig'
+    { datetimeTypeFieldName =
+        Prelude.Nothing
+    }
+
+-- | A field that specifies the date time or timestamp field as the criteria
+-- to use when importing incremental records from the source.
+incrementalPullConfig_datetimeTypeFieldName :: Lens.Lens' IncrementalPullConfig (Prelude.Maybe Prelude.Text)
+incrementalPullConfig_datetimeTypeFieldName = Lens.lens (\IncrementalPullConfig' {datetimeTypeFieldName} -> datetimeTypeFieldName) (\s@IncrementalPullConfig' {} a -> s {datetimeTypeFieldName = a} :: IncrementalPullConfig)
+
+instance Data.FromJSON IncrementalPullConfig where
+  parseJSON =
+    Data.withObject
+      "IncrementalPullConfig"
+      ( \x ->
+          IncrementalPullConfig'
+            Prelude.<$> (x Data..:? "datetimeTypeFieldName")
+      )
+
+instance Prelude.Hashable IncrementalPullConfig where
+  hashWithSalt _salt IncrementalPullConfig' {..} =
+    _salt `Prelude.hashWithSalt` datetimeTypeFieldName
+
+instance Prelude.NFData IncrementalPullConfig where
+  rnf IncrementalPullConfig' {..} =
+    Prelude.rnf datetimeTypeFieldName
+
+instance Data.ToJSON IncrementalPullConfig where
+  toJSON IncrementalPullConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("datetimeTypeFieldName" Data..=)
+              Prelude.<$> datetimeTypeFieldName
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/InforNexusConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/InforNexusConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/InforNexusConnectorOperator.hs
@@ -0,0 +1,136 @@
+{-# 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.AppFlow.Types.InforNexusConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.InforNexusConnectorOperator
+  ( InforNexusConnectorOperator
+      ( ..,
+        InforNexusConnectorOperator_ADDITION,
+        InforNexusConnectorOperator_BETWEEN,
+        InforNexusConnectorOperator_DIVISION,
+        InforNexusConnectorOperator_EQUAL_TO,
+        InforNexusConnectorOperator_MASK_ALL,
+        InforNexusConnectorOperator_MASK_FIRST_N,
+        InforNexusConnectorOperator_MASK_LAST_N,
+        InforNexusConnectorOperator_MULTIPLICATION,
+        InforNexusConnectorOperator_NO_OP,
+        InforNexusConnectorOperator_PROJECTION,
+        InforNexusConnectorOperator_SUBTRACTION,
+        InforNexusConnectorOperator_VALIDATE_NON_NEGATIVE,
+        InforNexusConnectorOperator_VALIDATE_NON_NULL,
+        InforNexusConnectorOperator_VALIDATE_NON_ZERO,
+        InforNexusConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InforNexusConnectorOperator = InforNexusConnectorOperator'
+  { fromInforNexusConnectorOperator ::
+      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 InforNexusConnectorOperator_ADDITION :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_ADDITION = InforNexusConnectorOperator' "ADDITION"
+
+pattern InforNexusConnectorOperator_BETWEEN :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_BETWEEN = InforNexusConnectorOperator' "BETWEEN"
+
+pattern InforNexusConnectorOperator_DIVISION :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_DIVISION = InforNexusConnectorOperator' "DIVISION"
+
+pattern InforNexusConnectorOperator_EQUAL_TO :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_EQUAL_TO = InforNexusConnectorOperator' "EQUAL_TO"
+
+pattern InforNexusConnectorOperator_MASK_ALL :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_MASK_ALL = InforNexusConnectorOperator' "MASK_ALL"
+
+pattern InforNexusConnectorOperator_MASK_FIRST_N :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_MASK_FIRST_N = InforNexusConnectorOperator' "MASK_FIRST_N"
+
+pattern InforNexusConnectorOperator_MASK_LAST_N :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_MASK_LAST_N = InforNexusConnectorOperator' "MASK_LAST_N"
+
+pattern InforNexusConnectorOperator_MULTIPLICATION :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_MULTIPLICATION = InforNexusConnectorOperator' "MULTIPLICATION"
+
+pattern InforNexusConnectorOperator_NO_OP :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_NO_OP = InforNexusConnectorOperator' "NO_OP"
+
+pattern InforNexusConnectorOperator_PROJECTION :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_PROJECTION = InforNexusConnectorOperator' "PROJECTION"
+
+pattern InforNexusConnectorOperator_SUBTRACTION :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_SUBTRACTION = InforNexusConnectorOperator' "SUBTRACTION"
+
+pattern InforNexusConnectorOperator_VALIDATE_NON_NEGATIVE :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_VALIDATE_NON_NEGATIVE = InforNexusConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern InforNexusConnectorOperator_VALIDATE_NON_NULL :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_VALIDATE_NON_NULL = InforNexusConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern InforNexusConnectorOperator_VALIDATE_NON_ZERO :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_VALIDATE_NON_ZERO = InforNexusConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern InforNexusConnectorOperator_VALIDATE_NUMERIC :: InforNexusConnectorOperator
+pattern InforNexusConnectorOperator_VALIDATE_NUMERIC = InforNexusConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  InforNexusConnectorOperator_ADDITION,
+  InforNexusConnectorOperator_BETWEEN,
+  InforNexusConnectorOperator_DIVISION,
+  InforNexusConnectorOperator_EQUAL_TO,
+  InforNexusConnectorOperator_MASK_ALL,
+  InforNexusConnectorOperator_MASK_FIRST_N,
+  InforNexusConnectorOperator_MASK_LAST_N,
+  InforNexusConnectorOperator_MULTIPLICATION,
+  InforNexusConnectorOperator_NO_OP,
+  InforNexusConnectorOperator_PROJECTION,
+  InforNexusConnectorOperator_SUBTRACTION,
+  InforNexusConnectorOperator_VALIDATE_NON_NEGATIVE,
+  InforNexusConnectorOperator_VALIDATE_NON_NULL,
+  InforNexusConnectorOperator_VALIDATE_NON_ZERO,
+  InforNexusConnectorOperator_VALIDATE_NUMERIC,
+  InforNexusConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/InforNexusConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/InforNexusConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/InforNexusConnectorProfileCredentials.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.AppFlow.Types.InforNexusConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.InforNexusConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required by Infor Nexus.
+--
+-- /See:/ 'newInforNexusConnectorProfileCredentials' smart constructor.
+data InforNexusConnectorProfileCredentials = InforNexusConnectorProfileCredentials'
+  { -- | The Access Key portion of the credentials.
+    accessKeyId :: Data.Sensitive Prelude.Text,
+    -- | The identifier for the user.
+    userId :: Prelude.Text,
+    -- | The secret key used to sign requests.
+    secretAccessKey :: Prelude.Text,
+    -- | The encryption keys used to encrypt data.
+    datakey :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InforNexusConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessKeyId', 'inforNexusConnectorProfileCredentials_accessKeyId' - The Access Key portion of the credentials.
+--
+-- 'userId', 'inforNexusConnectorProfileCredentials_userId' - The identifier for the user.
+--
+-- 'secretAccessKey', 'inforNexusConnectorProfileCredentials_secretAccessKey' - The secret key used to sign requests.
+--
+-- 'datakey', 'inforNexusConnectorProfileCredentials_datakey' - The encryption keys used to encrypt data.
+newInforNexusConnectorProfileCredentials ::
+  -- | 'accessKeyId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  -- | 'secretAccessKey'
+  Prelude.Text ->
+  -- | 'datakey'
+  Prelude.Text ->
+  InforNexusConnectorProfileCredentials
+newInforNexusConnectorProfileCredentials
+  pAccessKeyId_
+  pUserId_
+  pSecretAccessKey_
+  pDatakey_ =
+    InforNexusConnectorProfileCredentials'
+      { accessKeyId =
+          Data._Sensitive
+            Lens.# pAccessKeyId_,
+        userId = pUserId_,
+        secretAccessKey = pSecretAccessKey_,
+        datakey = pDatakey_
+      }
+
+-- | The Access Key portion of the credentials.
+inforNexusConnectorProfileCredentials_accessKeyId :: Lens.Lens' InforNexusConnectorProfileCredentials Prelude.Text
+inforNexusConnectorProfileCredentials_accessKeyId = Lens.lens (\InforNexusConnectorProfileCredentials' {accessKeyId} -> accessKeyId) (\s@InforNexusConnectorProfileCredentials' {} a -> s {accessKeyId = a} :: InforNexusConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+-- | The identifier for the user.
+inforNexusConnectorProfileCredentials_userId :: Lens.Lens' InforNexusConnectorProfileCredentials Prelude.Text
+inforNexusConnectorProfileCredentials_userId = Lens.lens (\InforNexusConnectorProfileCredentials' {userId} -> userId) (\s@InforNexusConnectorProfileCredentials' {} a -> s {userId = a} :: InforNexusConnectorProfileCredentials)
+
+-- | The secret key used to sign requests.
+inforNexusConnectorProfileCredentials_secretAccessKey :: Lens.Lens' InforNexusConnectorProfileCredentials Prelude.Text
+inforNexusConnectorProfileCredentials_secretAccessKey = Lens.lens (\InforNexusConnectorProfileCredentials' {secretAccessKey} -> secretAccessKey) (\s@InforNexusConnectorProfileCredentials' {} a -> s {secretAccessKey = a} :: InforNexusConnectorProfileCredentials)
+
+-- | The encryption keys used to encrypt data.
+inforNexusConnectorProfileCredentials_datakey :: Lens.Lens' InforNexusConnectorProfileCredentials Prelude.Text
+inforNexusConnectorProfileCredentials_datakey = Lens.lens (\InforNexusConnectorProfileCredentials' {datakey} -> datakey) (\s@InforNexusConnectorProfileCredentials' {} a -> s {datakey = a} :: InforNexusConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    InforNexusConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    InforNexusConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessKeyId
+        `Prelude.hashWithSalt` userId
+        `Prelude.hashWithSalt` secretAccessKey
+        `Prelude.hashWithSalt` datakey
+
+instance
+  Prelude.NFData
+    InforNexusConnectorProfileCredentials
+  where
+  rnf InforNexusConnectorProfileCredentials' {..} =
+    Prelude.rnf accessKeyId
+      `Prelude.seq` Prelude.rnf userId
+      `Prelude.seq` Prelude.rnf secretAccessKey
+      `Prelude.seq` Prelude.rnf datakey
+
+instance
+  Data.ToJSON
+    InforNexusConnectorProfileCredentials
+  where
+  toJSON InforNexusConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("accessKeyId" Data..= accessKeyId),
+            Prelude.Just ("userId" Data..= userId),
+            Prelude.Just
+              ("secretAccessKey" Data..= secretAccessKey),
+            Prelude.Just ("datakey" Data..= datakey)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/InforNexusConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/InforNexusConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/InforNexusConnectorProfileProperties.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.AppFlow.Types.InforNexusConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.InforNexusConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required by Infor Nexus.
+--
+-- /See:/ 'newInforNexusConnectorProfileProperties' smart constructor.
+data InforNexusConnectorProfileProperties = InforNexusConnectorProfileProperties'
+  { -- | The location of the Infor Nexus resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InforNexusConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'inforNexusConnectorProfileProperties_instanceUrl' - The location of the Infor Nexus resource.
+newInforNexusConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  InforNexusConnectorProfileProperties
+newInforNexusConnectorProfileProperties pInstanceUrl_ =
+  InforNexusConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Infor Nexus resource.
+inforNexusConnectorProfileProperties_instanceUrl :: Lens.Lens' InforNexusConnectorProfileProperties Prelude.Text
+inforNexusConnectorProfileProperties_instanceUrl = Lens.lens (\InforNexusConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@InforNexusConnectorProfileProperties' {} a -> s {instanceUrl = a} :: InforNexusConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    InforNexusConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "InforNexusConnectorProfileProperties"
+      ( \x ->
+          InforNexusConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    InforNexusConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    InforNexusConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    InforNexusConnectorProfileProperties
+  where
+  rnf InforNexusConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance
+  Data.ToJSON
+    InforNexusConnectorProfileProperties
+  where
+  toJSON InforNexusConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/InforNexusMetadata.hs b/gen/Amazonka/AppFlow/Types/InforNexusMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/InforNexusMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.InforNexusMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.InforNexusMetadata where
+
+import qualified 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 connector metadata specific to Infor Nexus.
+--
+-- /See:/ 'newInforNexusMetadata' smart constructor.
+data InforNexusMetadata = InforNexusMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InforNexusMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newInforNexusMetadata ::
+  InforNexusMetadata
+newInforNexusMetadata = InforNexusMetadata'
+
+instance Data.FromJSON InforNexusMetadata where
+  parseJSON =
+    Data.withObject
+      "InforNexusMetadata"
+      (\x -> Prelude.pure InforNexusMetadata')
+
+instance Prelude.Hashable InforNexusMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData InforNexusMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/InforNexusSourceProperties.hs b/gen/Amazonka/AppFlow/Types/InforNexusSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/InforNexusSourceProperties.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.InforNexusSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.InforNexusSourceProperties where
+
+import qualified 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 properties that are applied when Infor Nexus is being used as a
+-- source.
+--
+-- /See:/ 'newInforNexusSourceProperties' smart constructor.
+data InforNexusSourceProperties = InforNexusSourceProperties'
+  { -- | The object specified in the Infor Nexus flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InforNexusSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'inforNexusSourceProperties_object' - The object specified in the Infor Nexus flow source.
+newInforNexusSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  InforNexusSourceProperties
+newInforNexusSourceProperties pObject_ =
+  InforNexusSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Infor Nexus flow source.
+inforNexusSourceProperties_object :: Lens.Lens' InforNexusSourceProperties Prelude.Text
+inforNexusSourceProperties_object = Lens.lens (\InforNexusSourceProperties' {object'} -> object') (\s@InforNexusSourceProperties' {} a -> s {object' = a} :: InforNexusSourceProperties)
+
+instance Data.FromJSON InforNexusSourceProperties where
+  parseJSON =
+    Data.withObject
+      "InforNexusSourceProperties"
+      ( \x ->
+          InforNexusSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable InforNexusSourceProperties where
+  hashWithSalt _salt InforNexusSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData InforNexusSourceProperties where
+  rnf InforNexusSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON InforNexusSourceProperties where
+  toJSON InforNexusSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/LambdaConnectorProvisioningConfig.hs b/gen/Amazonka/AppFlow/Types/LambdaConnectorProvisioningConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/LambdaConnectorProvisioningConfig.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.AppFlow.Types.LambdaConnectorProvisioningConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.LambdaConnectorProvisioningConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the configuration of the lambda which is
+-- being registered as the connector.
+--
+-- /See:/ 'newLambdaConnectorProvisioningConfig' smart constructor.
+data LambdaConnectorProvisioningConfig = LambdaConnectorProvisioningConfig'
+  { -- | Lambda ARN of the connector being registered.
+    lambdaArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaConnectorProvisioningConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lambdaArn', 'lambdaConnectorProvisioningConfig_lambdaArn' - Lambda ARN of the connector being registered.
+newLambdaConnectorProvisioningConfig ::
+  -- | 'lambdaArn'
+  Prelude.Text ->
+  LambdaConnectorProvisioningConfig
+newLambdaConnectorProvisioningConfig pLambdaArn_ =
+  LambdaConnectorProvisioningConfig'
+    { lambdaArn =
+        pLambdaArn_
+    }
+
+-- | Lambda ARN of the connector being registered.
+lambdaConnectorProvisioningConfig_lambdaArn :: Lens.Lens' LambdaConnectorProvisioningConfig Prelude.Text
+lambdaConnectorProvisioningConfig_lambdaArn = Lens.lens (\LambdaConnectorProvisioningConfig' {lambdaArn} -> lambdaArn) (\s@LambdaConnectorProvisioningConfig' {} a -> s {lambdaArn = a} :: LambdaConnectorProvisioningConfig)
+
+instance
+  Data.FromJSON
+    LambdaConnectorProvisioningConfig
+  where
+  parseJSON =
+    Data.withObject
+      "LambdaConnectorProvisioningConfig"
+      ( \x ->
+          LambdaConnectorProvisioningConfig'
+            Prelude.<$> (x Data..: "lambdaArn")
+      )
+
+instance
+  Prelude.Hashable
+    LambdaConnectorProvisioningConfig
+  where
+  hashWithSalt
+    _salt
+    LambdaConnectorProvisioningConfig' {..} =
+      _salt `Prelude.hashWithSalt` lambdaArn
+
+instance
+  Prelude.NFData
+    LambdaConnectorProvisioningConfig
+  where
+  rnf LambdaConnectorProvisioningConfig' {..} =
+    Prelude.rnf lambdaArn
+
+instance
+  Data.ToJSON
+    LambdaConnectorProvisioningConfig
+  where
+  toJSON LambdaConnectorProvisioningConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("lambdaArn" Data..= lambdaArn)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/LookoutMetricsDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/LookoutMetricsDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/LookoutMetricsDestinationProperties.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties where
+
+import qualified 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 properties that are applied when Amazon Lookout for Metrics is used
+-- as a destination.
+--
+-- /See:/ 'newLookoutMetricsDestinationProperties' smart constructor.
+data LookoutMetricsDestinationProperties = LookoutMetricsDestinationProperties'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LookoutMetricsDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newLookoutMetricsDestinationProperties ::
+  LookoutMetricsDestinationProperties
+newLookoutMetricsDestinationProperties =
+  LookoutMetricsDestinationProperties'
+
+instance
+  Data.FromJSON
+    LookoutMetricsDestinationProperties
+  where
+  parseJSON =
+    Data.withObject
+      "LookoutMetricsDestinationProperties"
+      ( \x ->
+          Prelude.pure LookoutMetricsDestinationProperties'
+      )
+
+instance
+  Prelude.Hashable
+    LookoutMetricsDestinationProperties
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    LookoutMetricsDestinationProperties
+  where
+  rnf _ = ()
+
+instance
+  Data.ToJSON
+    LookoutMetricsDestinationProperties
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AppFlow/Types/MarketoConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/MarketoConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MarketoConnectorOperator.hs
@@ -0,0 +1,141 @@
+{-# 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.AppFlow.Types.MarketoConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MarketoConnectorOperator
+  ( MarketoConnectorOperator
+      ( ..,
+        MarketoConnectorOperator_ADDITION,
+        MarketoConnectorOperator_BETWEEN,
+        MarketoConnectorOperator_DIVISION,
+        MarketoConnectorOperator_GREATER_THAN,
+        MarketoConnectorOperator_LESS_THAN,
+        MarketoConnectorOperator_MASK_ALL,
+        MarketoConnectorOperator_MASK_FIRST_N,
+        MarketoConnectorOperator_MASK_LAST_N,
+        MarketoConnectorOperator_MULTIPLICATION,
+        MarketoConnectorOperator_NO_OP,
+        MarketoConnectorOperator_PROJECTION,
+        MarketoConnectorOperator_SUBTRACTION,
+        MarketoConnectorOperator_VALIDATE_NON_NEGATIVE,
+        MarketoConnectorOperator_VALIDATE_NON_NULL,
+        MarketoConnectorOperator_VALIDATE_NON_ZERO,
+        MarketoConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MarketoConnectorOperator = MarketoConnectorOperator'
+  { fromMarketoConnectorOperator ::
+      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 MarketoConnectorOperator_ADDITION :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_ADDITION = MarketoConnectorOperator' "ADDITION"
+
+pattern MarketoConnectorOperator_BETWEEN :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_BETWEEN = MarketoConnectorOperator' "BETWEEN"
+
+pattern MarketoConnectorOperator_DIVISION :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_DIVISION = MarketoConnectorOperator' "DIVISION"
+
+pattern MarketoConnectorOperator_GREATER_THAN :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_GREATER_THAN = MarketoConnectorOperator' "GREATER_THAN"
+
+pattern MarketoConnectorOperator_LESS_THAN :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_LESS_THAN = MarketoConnectorOperator' "LESS_THAN"
+
+pattern MarketoConnectorOperator_MASK_ALL :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_MASK_ALL = MarketoConnectorOperator' "MASK_ALL"
+
+pattern MarketoConnectorOperator_MASK_FIRST_N :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_MASK_FIRST_N = MarketoConnectorOperator' "MASK_FIRST_N"
+
+pattern MarketoConnectorOperator_MASK_LAST_N :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_MASK_LAST_N = MarketoConnectorOperator' "MASK_LAST_N"
+
+pattern MarketoConnectorOperator_MULTIPLICATION :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_MULTIPLICATION = MarketoConnectorOperator' "MULTIPLICATION"
+
+pattern MarketoConnectorOperator_NO_OP :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_NO_OP = MarketoConnectorOperator' "NO_OP"
+
+pattern MarketoConnectorOperator_PROJECTION :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_PROJECTION = MarketoConnectorOperator' "PROJECTION"
+
+pattern MarketoConnectorOperator_SUBTRACTION :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_SUBTRACTION = MarketoConnectorOperator' "SUBTRACTION"
+
+pattern MarketoConnectorOperator_VALIDATE_NON_NEGATIVE :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_VALIDATE_NON_NEGATIVE = MarketoConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern MarketoConnectorOperator_VALIDATE_NON_NULL :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_VALIDATE_NON_NULL = MarketoConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern MarketoConnectorOperator_VALIDATE_NON_ZERO :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_VALIDATE_NON_ZERO = MarketoConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern MarketoConnectorOperator_VALIDATE_NUMERIC :: MarketoConnectorOperator
+pattern MarketoConnectorOperator_VALIDATE_NUMERIC = MarketoConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  MarketoConnectorOperator_ADDITION,
+  MarketoConnectorOperator_BETWEEN,
+  MarketoConnectorOperator_DIVISION,
+  MarketoConnectorOperator_GREATER_THAN,
+  MarketoConnectorOperator_LESS_THAN,
+  MarketoConnectorOperator_MASK_ALL,
+  MarketoConnectorOperator_MASK_FIRST_N,
+  MarketoConnectorOperator_MASK_LAST_N,
+  MarketoConnectorOperator_MULTIPLICATION,
+  MarketoConnectorOperator_NO_OP,
+  MarketoConnectorOperator_PROJECTION,
+  MarketoConnectorOperator_SUBTRACTION,
+  MarketoConnectorOperator_VALIDATE_NON_NEGATIVE,
+  MarketoConnectorOperator_VALIDATE_NON_NULL,
+  MarketoConnectorOperator_VALIDATE_NON_ZERO,
+  MarketoConnectorOperator_VALIDATE_NUMERIC,
+  MarketoConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/MarketoConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/MarketoConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MarketoConnectorProfileCredentials.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.AppFlow.Types.MarketoConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MarketoConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 connector-specific profile credentials required by Marketo.
+--
+-- /See:/ 'newMarketoConnectorProfileCredentials' smart constructor.
+data MarketoConnectorProfileCredentials = MarketoConnectorProfileCredentials'
+  { -- | The credentials used to access protected Marketo resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The OAuth requirement needed to request security tokens from the
+    -- connector endpoint.
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The identifier for the desired client.
+    clientId :: Prelude.Text,
+    -- | The client secret used by the OAuth client to authenticate to the
+    -- authorization server.
+    clientSecret :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MarketoConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'marketoConnectorProfileCredentials_accessToken' - The credentials used to access protected Marketo resources.
+--
+-- 'oAuthRequest', 'marketoConnectorProfileCredentials_oAuthRequest' - The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+--
+-- 'clientId', 'marketoConnectorProfileCredentials_clientId' - The identifier for the desired client.
+--
+-- 'clientSecret', 'marketoConnectorProfileCredentials_clientSecret' - The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+newMarketoConnectorProfileCredentials ::
+  -- | 'clientId'
+  Prelude.Text ->
+  -- | 'clientSecret'
+  Prelude.Text ->
+  MarketoConnectorProfileCredentials
+newMarketoConnectorProfileCredentials
+  pClientId_
+  pClientSecret_ =
+    MarketoConnectorProfileCredentials'
+      { accessToken =
+          Prelude.Nothing,
+        oAuthRequest = Prelude.Nothing,
+        clientId = pClientId_,
+        clientSecret =
+          Data._Sensitive Lens.# pClientSecret_
+      }
+
+-- | The credentials used to access protected Marketo resources.
+marketoConnectorProfileCredentials_accessToken :: Lens.Lens' MarketoConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+marketoConnectorProfileCredentials_accessToken = Lens.lens (\MarketoConnectorProfileCredentials' {accessToken} -> accessToken) (\s@MarketoConnectorProfileCredentials' {} a -> s {accessToken = a} :: MarketoConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+marketoConnectorProfileCredentials_oAuthRequest :: Lens.Lens' MarketoConnectorProfileCredentials (Prelude.Maybe ConnectorOAuthRequest)
+marketoConnectorProfileCredentials_oAuthRequest = Lens.lens (\MarketoConnectorProfileCredentials' {oAuthRequest} -> oAuthRequest) (\s@MarketoConnectorProfileCredentials' {} a -> s {oAuthRequest = a} :: MarketoConnectorProfileCredentials)
+
+-- | The identifier for the desired client.
+marketoConnectorProfileCredentials_clientId :: Lens.Lens' MarketoConnectorProfileCredentials Prelude.Text
+marketoConnectorProfileCredentials_clientId = Lens.lens (\MarketoConnectorProfileCredentials' {clientId} -> clientId) (\s@MarketoConnectorProfileCredentials' {} a -> s {clientId = a} :: MarketoConnectorProfileCredentials)
+
+-- | The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+marketoConnectorProfileCredentials_clientSecret :: Lens.Lens' MarketoConnectorProfileCredentials Prelude.Text
+marketoConnectorProfileCredentials_clientSecret = Lens.lens (\MarketoConnectorProfileCredentials' {clientSecret} -> clientSecret) (\s@MarketoConnectorProfileCredentials' {} a -> s {clientSecret = a} :: MarketoConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    MarketoConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    MarketoConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessToken
+        `Prelude.hashWithSalt` oAuthRequest
+        `Prelude.hashWithSalt` clientId
+        `Prelude.hashWithSalt` clientSecret
+
+instance
+  Prelude.NFData
+    MarketoConnectorProfileCredentials
+  where
+  rnf MarketoConnectorProfileCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+
+instance
+  Data.ToJSON
+    MarketoConnectorProfileCredentials
+  where
+  toJSON MarketoConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            Prelude.Just ("clientId" Data..= clientId),
+            Prelude.Just ("clientSecret" Data..= clientSecret)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/MarketoConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/MarketoConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MarketoConnectorProfileProperties.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.AppFlow.Types.MarketoConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MarketoConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Marketo.
+--
+-- /See:/ 'newMarketoConnectorProfileProperties' smart constructor.
+data MarketoConnectorProfileProperties = MarketoConnectorProfileProperties'
+  { -- | The location of the Marketo resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MarketoConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'marketoConnectorProfileProperties_instanceUrl' - The location of the Marketo resource.
+newMarketoConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  MarketoConnectorProfileProperties
+newMarketoConnectorProfileProperties pInstanceUrl_ =
+  MarketoConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Marketo resource.
+marketoConnectorProfileProperties_instanceUrl :: Lens.Lens' MarketoConnectorProfileProperties Prelude.Text
+marketoConnectorProfileProperties_instanceUrl = Lens.lens (\MarketoConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@MarketoConnectorProfileProperties' {} a -> s {instanceUrl = a} :: MarketoConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    MarketoConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "MarketoConnectorProfileProperties"
+      ( \x ->
+          MarketoConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    MarketoConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    MarketoConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    MarketoConnectorProfileProperties
+  where
+  rnf MarketoConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance
+  Data.ToJSON
+    MarketoConnectorProfileProperties
+  where
+  toJSON MarketoConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/MarketoDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/MarketoDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MarketoDestinationProperties.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.MarketoDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MarketoDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import qualified 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 properties that Amazon AppFlow applies when you use Marketo as a
+-- flow destination.
+--
+-- /See:/ 'newMarketoDestinationProperties' smart constructor.
+data MarketoDestinationProperties = MarketoDestinationProperties'
+  { errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The object specified in the Marketo flow destination.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MarketoDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorHandlingConfig', 'marketoDestinationProperties_errorHandlingConfig' - Undocumented member.
+--
+-- 'object'', 'marketoDestinationProperties_object' - The object specified in the Marketo flow destination.
+newMarketoDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  MarketoDestinationProperties
+newMarketoDestinationProperties pObject_ =
+  MarketoDestinationProperties'
+    { errorHandlingConfig =
+        Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | Undocumented member.
+marketoDestinationProperties_errorHandlingConfig :: Lens.Lens' MarketoDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+marketoDestinationProperties_errorHandlingConfig = Lens.lens (\MarketoDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@MarketoDestinationProperties' {} a -> s {errorHandlingConfig = a} :: MarketoDestinationProperties)
+
+-- | The object specified in the Marketo flow destination.
+marketoDestinationProperties_object :: Lens.Lens' MarketoDestinationProperties Prelude.Text
+marketoDestinationProperties_object = Lens.lens (\MarketoDestinationProperties' {object'} -> object') (\s@MarketoDestinationProperties' {} a -> s {object' = a} :: MarketoDestinationProperties)
+
+instance Data.FromJSON MarketoDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "MarketoDestinationProperties"
+      ( \x ->
+          MarketoDestinationProperties'
+            Prelude.<$> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance
+  Prelude.Hashable
+    MarketoDestinationProperties
+  where
+  hashWithSalt _salt MarketoDestinationProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorHandlingConfig
+      `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData MarketoDestinationProperties where
+  rnf MarketoDestinationProperties' {..} =
+    Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON MarketoDestinationProperties where
+  toJSON MarketoDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/MarketoMetadata.hs b/gen/Amazonka/AppFlow/Types/MarketoMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MarketoMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.MarketoMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MarketoMetadata where
+
+import qualified 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 connector metadata specific to Marketo.
+--
+-- /See:/ 'newMarketoMetadata' smart constructor.
+data MarketoMetadata = MarketoMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MarketoMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newMarketoMetadata ::
+  MarketoMetadata
+newMarketoMetadata = MarketoMetadata'
+
+instance Data.FromJSON MarketoMetadata where
+  parseJSON =
+    Data.withObject
+      "MarketoMetadata"
+      (\x -> Prelude.pure MarketoMetadata')
+
+instance Prelude.Hashable MarketoMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData MarketoMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/MarketoSourceProperties.hs b/gen/Amazonka/AppFlow/Types/MarketoSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MarketoSourceProperties.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.MarketoSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MarketoSourceProperties where
+
+import qualified 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 properties that are applied when Marketo is being used as a source.
+--
+-- /See:/ 'newMarketoSourceProperties' smart constructor.
+data MarketoSourceProperties = MarketoSourceProperties'
+  { -- | The object specified in the Marketo flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MarketoSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'marketoSourceProperties_object' - The object specified in the Marketo flow source.
+newMarketoSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  MarketoSourceProperties
+newMarketoSourceProperties pObject_ =
+  MarketoSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Marketo flow source.
+marketoSourceProperties_object :: Lens.Lens' MarketoSourceProperties Prelude.Text
+marketoSourceProperties_object = Lens.lens (\MarketoSourceProperties' {object'} -> object') (\s@MarketoSourceProperties' {} a -> s {object' = a} :: MarketoSourceProperties)
+
+instance Data.FromJSON MarketoSourceProperties where
+  parseJSON =
+    Data.withObject
+      "MarketoSourceProperties"
+      ( \x ->
+          MarketoSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable MarketoSourceProperties where
+  hashWithSalt _salt MarketoSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData MarketoSourceProperties where
+  rnf MarketoSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON MarketoSourceProperties where
+  toJSON MarketoSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/MetadataCatalogConfig.hs b/gen/Amazonka/AppFlow/Types/MetadataCatalogConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MetadataCatalogConfig.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.MetadataCatalogConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MetadataCatalogConfig where
+
+import Amazonka.AppFlow.Types.GlueDataCatalogConfig
+import qualified 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 the configuration that Amazon AppFlow uses when it catalogs
+-- your data. When Amazon AppFlow catalogs your data, it stores metadata in
+-- a data catalog.
+--
+-- /See:/ 'newMetadataCatalogConfig' smart constructor.
+data MetadataCatalogConfig = MetadataCatalogConfig'
+  { -- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+    -- your data with the Glue Data Catalog.
+    glueDataCatalog :: Prelude.Maybe GlueDataCatalogConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetadataCatalogConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'glueDataCatalog', 'metadataCatalogConfig_glueDataCatalog' - Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- your data with the Glue Data Catalog.
+newMetadataCatalogConfig ::
+  MetadataCatalogConfig
+newMetadataCatalogConfig =
+  MetadataCatalogConfig'
+    { glueDataCatalog =
+        Prelude.Nothing
+    }
+
+-- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- your data with the Glue Data Catalog.
+metadataCatalogConfig_glueDataCatalog :: Lens.Lens' MetadataCatalogConfig (Prelude.Maybe GlueDataCatalogConfig)
+metadataCatalogConfig_glueDataCatalog = Lens.lens (\MetadataCatalogConfig' {glueDataCatalog} -> glueDataCatalog) (\s@MetadataCatalogConfig' {} a -> s {glueDataCatalog = a} :: MetadataCatalogConfig)
+
+instance Data.FromJSON MetadataCatalogConfig where
+  parseJSON =
+    Data.withObject
+      "MetadataCatalogConfig"
+      ( \x ->
+          MetadataCatalogConfig'
+            Prelude.<$> (x Data..:? "glueDataCatalog")
+      )
+
+instance Prelude.Hashable MetadataCatalogConfig where
+  hashWithSalt _salt MetadataCatalogConfig' {..} =
+    _salt `Prelude.hashWithSalt` glueDataCatalog
+
+instance Prelude.NFData MetadataCatalogConfig where
+  rnf MetadataCatalogConfig' {..} =
+    Prelude.rnf glueDataCatalog
+
+instance Data.ToJSON MetadataCatalogConfig where
+  toJSON MetadataCatalogConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("glueDataCatalog" Data..=)
+              Prelude.<$> glueDataCatalog
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/MetadataCatalogDetail.hs b/gen/Amazonka/AppFlow/Types/MetadataCatalogDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/MetadataCatalogDetail.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.AppFlow.Types.MetadataCatalogDetail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.MetadataCatalogDetail where
+
+import Amazonka.AppFlow.Types.CatalogType
+import Amazonka.AppFlow.Types.RegistrationOutput
+import qualified 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 the metadata catalog, metadata table, and data partitions that
+-- Amazon AppFlow used for the associated flow run.
+--
+-- /See:/ 'newMetadataCatalogDetail' smart constructor.
+data MetadataCatalogDetail = MetadataCatalogDetail'
+  { -- | The type of metadata catalog that Amazon AppFlow used for the associated
+    -- flow run. This parameter returns the following value:
+    --
+    -- [GLUE]
+    --     The metadata catalog is provided by the Glue Data Catalog. Glue
+    --     includes the Glue Data Catalog as a component.
+    catalogType :: Prelude.Maybe CatalogType,
+    -- | Describes the status of the attempt from Amazon AppFlow to register the
+    -- data partitions with the metadata catalog. The data partitions organize
+    -- the flow output into a hierarchical path, such as a folder path in an S3
+    -- bucket. Amazon AppFlow creates the partitions (if they don\'t already
+    -- exist) based on your flow configuration.
+    partitionRegistrationOutput :: Prelude.Maybe RegistrationOutput,
+    -- | The name of the table that stores the metadata for the associated flow
+    -- run. The table stores metadata that represents the data that the flow
+    -- transferred. Amazon AppFlow stores the table in the metadata catalog.
+    tableName :: Prelude.Maybe Prelude.Text,
+    -- | Describes the status of the attempt from Amazon AppFlow to register the
+    -- metadata table with the metadata catalog. Amazon AppFlow creates or
+    -- updates this table for the associated flow run.
+    tableRegistrationOutput :: Prelude.Maybe RegistrationOutput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetadataCatalogDetail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalogType', 'metadataCatalogDetail_catalogType' - The type of metadata catalog that Amazon AppFlow used for the associated
+-- flow run. This parameter returns the following value:
+--
+-- [GLUE]
+--     The metadata catalog is provided by the Glue Data Catalog. Glue
+--     includes the Glue Data Catalog as a component.
+--
+-- 'partitionRegistrationOutput', 'metadataCatalogDetail_partitionRegistrationOutput' - Describes the status of the attempt from Amazon AppFlow to register the
+-- data partitions with the metadata catalog. The data partitions organize
+-- the flow output into a hierarchical path, such as a folder path in an S3
+-- bucket. Amazon AppFlow creates the partitions (if they don\'t already
+-- exist) based on your flow configuration.
+--
+-- 'tableName', 'metadataCatalogDetail_tableName' - The name of the table that stores the metadata for the associated flow
+-- run. The table stores metadata that represents the data that the flow
+-- transferred. Amazon AppFlow stores the table in the metadata catalog.
+--
+-- 'tableRegistrationOutput', 'metadataCatalogDetail_tableRegistrationOutput' - Describes the status of the attempt from Amazon AppFlow to register the
+-- metadata table with the metadata catalog. Amazon AppFlow creates or
+-- updates this table for the associated flow run.
+newMetadataCatalogDetail ::
+  MetadataCatalogDetail
+newMetadataCatalogDetail =
+  MetadataCatalogDetail'
+    { catalogType =
+        Prelude.Nothing,
+      partitionRegistrationOutput = Prelude.Nothing,
+      tableName = Prelude.Nothing,
+      tableRegistrationOutput = Prelude.Nothing
+    }
+
+-- | The type of metadata catalog that Amazon AppFlow used for the associated
+-- flow run. This parameter returns the following value:
+--
+-- [GLUE]
+--     The metadata catalog is provided by the Glue Data Catalog. Glue
+--     includes the Glue Data Catalog as a component.
+metadataCatalogDetail_catalogType :: Lens.Lens' MetadataCatalogDetail (Prelude.Maybe CatalogType)
+metadataCatalogDetail_catalogType = Lens.lens (\MetadataCatalogDetail' {catalogType} -> catalogType) (\s@MetadataCatalogDetail' {} a -> s {catalogType = a} :: MetadataCatalogDetail)
+
+-- | Describes the status of the attempt from Amazon AppFlow to register the
+-- data partitions with the metadata catalog. The data partitions organize
+-- the flow output into a hierarchical path, such as a folder path in an S3
+-- bucket. Amazon AppFlow creates the partitions (if they don\'t already
+-- exist) based on your flow configuration.
+metadataCatalogDetail_partitionRegistrationOutput :: Lens.Lens' MetadataCatalogDetail (Prelude.Maybe RegistrationOutput)
+metadataCatalogDetail_partitionRegistrationOutput = Lens.lens (\MetadataCatalogDetail' {partitionRegistrationOutput} -> partitionRegistrationOutput) (\s@MetadataCatalogDetail' {} a -> s {partitionRegistrationOutput = a} :: MetadataCatalogDetail)
+
+-- | The name of the table that stores the metadata for the associated flow
+-- run. The table stores metadata that represents the data that the flow
+-- transferred. Amazon AppFlow stores the table in the metadata catalog.
+metadataCatalogDetail_tableName :: Lens.Lens' MetadataCatalogDetail (Prelude.Maybe Prelude.Text)
+metadataCatalogDetail_tableName = Lens.lens (\MetadataCatalogDetail' {tableName} -> tableName) (\s@MetadataCatalogDetail' {} a -> s {tableName = a} :: MetadataCatalogDetail)
+
+-- | Describes the status of the attempt from Amazon AppFlow to register the
+-- metadata table with the metadata catalog. Amazon AppFlow creates or
+-- updates this table for the associated flow run.
+metadataCatalogDetail_tableRegistrationOutput :: Lens.Lens' MetadataCatalogDetail (Prelude.Maybe RegistrationOutput)
+metadataCatalogDetail_tableRegistrationOutput = Lens.lens (\MetadataCatalogDetail' {tableRegistrationOutput} -> tableRegistrationOutput) (\s@MetadataCatalogDetail' {} a -> s {tableRegistrationOutput = a} :: MetadataCatalogDetail)
+
+instance Data.FromJSON MetadataCatalogDetail where
+  parseJSON =
+    Data.withObject
+      "MetadataCatalogDetail"
+      ( \x ->
+          MetadataCatalogDetail'
+            Prelude.<$> (x Data..:? "catalogType")
+            Prelude.<*> (x Data..:? "partitionRegistrationOutput")
+            Prelude.<*> (x Data..:? "tableName")
+            Prelude.<*> (x Data..:? "tableRegistrationOutput")
+      )
+
+instance Prelude.Hashable MetadataCatalogDetail where
+  hashWithSalt _salt MetadataCatalogDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` catalogType
+      `Prelude.hashWithSalt` partitionRegistrationOutput
+      `Prelude.hashWithSalt` tableName
+      `Prelude.hashWithSalt` tableRegistrationOutput
+
+instance Prelude.NFData MetadataCatalogDetail where
+  rnf MetadataCatalogDetail' {..} =
+    Prelude.rnf catalogType
+      `Prelude.seq` Prelude.rnf partitionRegistrationOutput
+      `Prelude.seq` Prelude.rnf tableName
+      `Prelude.seq` Prelude.rnf tableRegistrationOutput
diff --git a/gen/Amazonka/AppFlow/Types/OAuth2Credentials.hs b/gen/Amazonka/AppFlow/Types/OAuth2Credentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuth2Credentials.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.OAuth2Credentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuth2Credentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 OAuth 2.0 credentials required for OAuth 2.0 authentication.
+--
+-- /See:/ 'newOAuth2Credentials' smart constructor.
+data OAuth2Credentials = OAuth2Credentials'
+  { -- | The access token used to access the connector on your behalf.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The identifier for the desired client.
+    clientId :: Prelude.Maybe Prelude.Text,
+    -- | The client secret used by the OAuth client to authenticate to the
+    -- authorization server.
+    clientSecret :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The refresh token used to refresh an expired access token.
+    refreshToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OAuth2Credentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'oAuth2Credentials_accessToken' - The access token used to access the connector on your behalf.
+--
+-- 'clientId', 'oAuth2Credentials_clientId' - The identifier for the desired client.
+--
+-- 'clientSecret', 'oAuth2Credentials_clientSecret' - The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+--
+-- 'oAuthRequest', 'oAuth2Credentials_oAuthRequest' - Undocumented member.
+--
+-- 'refreshToken', 'oAuth2Credentials_refreshToken' - The refresh token used to refresh an expired access token.
+newOAuth2Credentials ::
+  OAuth2Credentials
+newOAuth2Credentials =
+  OAuth2Credentials'
+    { accessToken = Prelude.Nothing,
+      clientId = Prelude.Nothing,
+      clientSecret = Prelude.Nothing,
+      oAuthRequest = Prelude.Nothing,
+      refreshToken = Prelude.Nothing
+    }
+
+-- | The access token used to access the connector on your behalf.
+oAuth2Credentials_accessToken :: Lens.Lens' OAuth2Credentials (Prelude.Maybe Prelude.Text)
+oAuth2Credentials_accessToken = Lens.lens (\OAuth2Credentials' {accessToken} -> accessToken) (\s@OAuth2Credentials' {} a -> s {accessToken = a} :: OAuth2Credentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The identifier for the desired client.
+oAuth2Credentials_clientId :: Lens.Lens' OAuth2Credentials (Prelude.Maybe Prelude.Text)
+oAuth2Credentials_clientId = Lens.lens (\OAuth2Credentials' {clientId} -> clientId) (\s@OAuth2Credentials' {} a -> s {clientId = a} :: OAuth2Credentials)
+
+-- | The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+oAuth2Credentials_clientSecret :: Lens.Lens' OAuth2Credentials (Prelude.Maybe Prelude.Text)
+oAuth2Credentials_clientSecret = Lens.lens (\OAuth2Credentials' {clientSecret} -> clientSecret) (\s@OAuth2Credentials' {} a -> s {clientSecret = a} :: OAuth2Credentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Undocumented member.
+oAuth2Credentials_oAuthRequest :: Lens.Lens' OAuth2Credentials (Prelude.Maybe ConnectorOAuthRequest)
+oAuth2Credentials_oAuthRequest = Lens.lens (\OAuth2Credentials' {oAuthRequest} -> oAuthRequest) (\s@OAuth2Credentials' {} a -> s {oAuthRequest = a} :: OAuth2Credentials)
+
+-- | The refresh token used to refresh an expired access token.
+oAuth2Credentials_refreshToken :: Lens.Lens' OAuth2Credentials (Prelude.Maybe Prelude.Text)
+oAuth2Credentials_refreshToken = Lens.lens (\OAuth2Credentials' {refreshToken} -> refreshToken) (\s@OAuth2Credentials' {} a -> s {refreshToken = a} :: OAuth2Credentials)
+
+instance Prelude.Hashable OAuth2Credentials where
+  hashWithSalt _salt OAuth2Credentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessToken
+      `Prelude.hashWithSalt` clientId
+      `Prelude.hashWithSalt` clientSecret
+      `Prelude.hashWithSalt` oAuthRequest
+      `Prelude.hashWithSalt` refreshToken
+
+instance Prelude.NFData OAuth2Credentials where
+  rnf OAuth2Credentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf refreshToken
+
+instance Data.ToJSON OAuth2Credentials where
+  toJSON OAuth2Credentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("clientId" Data..=) Prelude.<$> clientId,
+            ("clientSecret" Data..=) Prelude.<$> clientSecret,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            ("refreshToken" Data..=) Prelude.<$> refreshToken
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/OAuth2CustomParameter.hs b/gen/Amazonka/AppFlow/Types/OAuth2CustomParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuth2CustomParameter.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.OAuth2CustomParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuth2CustomParameter where
+
+import Amazonka.AppFlow.Types.OAuth2CustomPropType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Custom parameter required for OAuth 2.0 authentication.
+--
+-- /See:/ 'newOAuth2CustomParameter' smart constructor.
+data OAuth2CustomParameter = OAuth2CustomParameter'
+  { -- | Contains default values for this authentication parameter that are
+    -- supplied by the connector.
+    connectorSuppliedValues :: Prelude.Maybe [Prelude.Text],
+    -- | A description about the custom parameter used for OAuth 2.0
+    -- authentication.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the custom parameter for OAuth 2.0 authentication is
+    -- required.
+    isRequired :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether this authentication custom parameter is a sensitive
+    -- field.
+    isSensitiveField :: Prelude.Maybe Prelude.Bool,
+    -- | The key of the custom parameter required for OAuth 2.0 authentication.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The label of the custom parameter used for OAuth 2.0 authentication.
+    label :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether custom parameter is used with TokenUrl or AuthUrl.
+    type' :: Prelude.Maybe OAuth2CustomPropType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OAuth2CustomParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorSuppliedValues', 'oAuth2CustomParameter_connectorSuppliedValues' - Contains default values for this authentication parameter that are
+-- supplied by the connector.
+--
+-- 'description', 'oAuth2CustomParameter_description' - A description about the custom parameter used for OAuth 2.0
+-- authentication.
+--
+-- 'isRequired', 'oAuth2CustomParameter_isRequired' - Indicates whether the custom parameter for OAuth 2.0 authentication is
+-- required.
+--
+-- 'isSensitiveField', 'oAuth2CustomParameter_isSensitiveField' - Indicates whether this authentication custom parameter is a sensitive
+-- field.
+--
+-- 'key', 'oAuth2CustomParameter_key' - The key of the custom parameter required for OAuth 2.0 authentication.
+--
+-- 'label', 'oAuth2CustomParameter_label' - The label of the custom parameter used for OAuth 2.0 authentication.
+--
+-- 'type'', 'oAuth2CustomParameter_type' - Indicates whether custom parameter is used with TokenUrl or AuthUrl.
+newOAuth2CustomParameter ::
+  OAuth2CustomParameter
+newOAuth2CustomParameter =
+  OAuth2CustomParameter'
+    { connectorSuppliedValues =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      isRequired = Prelude.Nothing,
+      isSensitiveField = Prelude.Nothing,
+      key = Prelude.Nothing,
+      label = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Contains default values for this authentication parameter that are
+-- supplied by the connector.
+oAuth2CustomParameter_connectorSuppliedValues :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe [Prelude.Text])
+oAuth2CustomParameter_connectorSuppliedValues = Lens.lens (\OAuth2CustomParameter' {connectorSuppliedValues} -> connectorSuppliedValues) (\s@OAuth2CustomParameter' {} a -> s {connectorSuppliedValues = a} :: OAuth2CustomParameter) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description about the custom parameter used for OAuth 2.0
+-- authentication.
+oAuth2CustomParameter_description :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe Prelude.Text)
+oAuth2CustomParameter_description = Lens.lens (\OAuth2CustomParameter' {description} -> description) (\s@OAuth2CustomParameter' {} a -> s {description = a} :: OAuth2CustomParameter)
+
+-- | Indicates whether the custom parameter for OAuth 2.0 authentication is
+-- required.
+oAuth2CustomParameter_isRequired :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe Prelude.Bool)
+oAuth2CustomParameter_isRequired = Lens.lens (\OAuth2CustomParameter' {isRequired} -> isRequired) (\s@OAuth2CustomParameter' {} a -> s {isRequired = a} :: OAuth2CustomParameter)
+
+-- | Indicates whether this authentication custom parameter is a sensitive
+-- field.
+oAuth2CustomParameter_isSensitiveField :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe Prelude.Bool)
+oAuth2CustomParameter_isSensitiveField = Lens.lens (\OAuth2CustomParameter' {isSensitiveField} -> isSensitiveField) (\s@OAuth2CustomParameter' {} a -> s {isSensitiveField = a} :: OAuth2CustomParameter)
+
+-- | The key of the custom parameter required for OAuth 2.0 authentication.
+oAuth2CustomParameter_key :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe Prelude.Text)
+oAuth2CustomParameter_key = Lens.lens (\OAuth2CustomParameter' {key} -> key) (\s@OAuth2CustomParameter' {} a -> s {key = a} :: OAuth2CustomParameter)
+
+-- | The label of the custom parameter used for OAuth 2.0 authentication.
+oAuth2CustomParameter_label :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe Prelude.Text)
+oAuth2CustomParameter_label = Lens.lens (\OAuth2CustomParameter' {label} -> label) (\s@OAuth2CustomParameter' {} a -> s {label = a} :: OAuth2CustomParameter)
+
+-- | Indicates whether custom parameter is used with TokenUrl or AuthUrl.
+oAuth2CustomParameter_type :: Lens.Lens' OAuth2CustomParameter (Prelude.Maybe OAuth2CustomPropType)
+oAuth2CustomParameter_type = Lens.lens (\OAuth2CustomParameter' {type'} -> type') (\s@OAuth2CustomParameter' {} a -> s {type' = a} :: OAuth2CustomParameter)
+
+instance Data.FromJSON OAuth2CustomParameter where
+  parseJSON =
+    Data.withObject
+      "OAuth2CustomParameter"
+      ( \x ->
+          OAuth2CustomParameter'
+            Prelude.<$> ( x
+                            Data..:? "connectorSuppliedValues"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "isRequired")
+            Prelude.<*> (x Data..:? "isSensitiveField")
+            Prelude.<*> (x Data..:? "key")
+            Prelude.<*> (x Data..:? "label")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable OAuth2CustomParameter where
+  hashWithSalt _salt OAuth2CustomParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorSuppliedValues
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` isRequired
+      `Prelude.hashWithSalt` isSensitiveField
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` label
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData OAuth2CustomParameter where
+  rnf OAuth2CustomParameter' {..} =
+    Prelude.rnf connectorSuppliedValues
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf isRequired
+      `Prelude.seq` Prelude.rnf isSensitiveField
+      `Prelude.seq` Prelude.rnf key
+      `Prelude.seq` Prelude.rnf label
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/AppFlow/Types/OAuth2CustomPropType.hs b/gen/Amazonka/AppFlow/Types/OAuth2CustomPropType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuth2CustomPropType.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.AppFlow.Types.OAuth2CustomPropType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuth2CustomPropType
+  ( OAuth2CustomPropType
+      ( ..,
+        OAuth2CustomPropType_AUTH_URL,
+        OAuth2CustomPropType_TOKEN_URL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OAuth2CustomPropType = OAuth2CustomPropType'
+  { fromOAuth2CustomPropType ::
+      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 OAuth2CustomPropType_AUTH_URL :: OAuth2CustomPropType
+pattern OAuth2CustomPropType_AUTH_URL = OAuth2CustomPropType' "AUTH_URL"
+
+pattern OAuth2CustomPropType_TOKEN_URL :: OAuth2CustomPropType
+pattern OAuth2CustomPropType_TOKEN_URL = OAuth2CustomPropType' "TOKEN_URL"
+
+{-# COMPLETE
+  OAuth2CustomPropType_AUTH_URL,
+  OAuth2CustomPropType_TOKEN_URL,
+  OAuth2CustomPropType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/OAuth2Defaults.hs b/gen/Amazonka/AppFlow/Types/OAuth2Defaults.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuth2Defaults.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.AppFlow.Types.OAuth2Defaults
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuth2Defaults where
+
+import Amazonka.AppFlow.Types.OAuth2CustomParameter
+import Amazonka.AppFlow.Types.OAuth2GrantType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains the default values required for OAuth 2.0 authentication.
+--
+-- /See:/ 'newOAuth2Defaults' smart constructor.
+data OAuth2Defaults = OAuth2Defaults'
+  { -- | Auth code URLs that can be used for OAuth 2.0 authentication.
+    authCodeUrls :: Prelude.Maybe [Prelude.Text],
+    -- | List of custom parameters required for OAuth 2.0 authentication.
+    oauth2CustomProperties :: Prelude.Maybe [OAuth2CustomParameter],
+    -- | OAuth 2.0 grant types supported by the connector.
+    oauth2GrantTypesSupported :: Prelude.Maybe [OAuth2GrantType],
+    -- | OAuth 2.0 scopes that the connector supports.
+    oauthScopes :: Prelude.Maybe [Prelude.Text],
+    -- | Token URLs that can be used for OAuth 2.0 authentication.
+    tokenUrls :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OAuth2Defaults' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'authCodeUrls', 'oAuth2Defaults_authCodeUrls' - Auth code URLs that can be used for OAuth 2.0 authentication.
+--
+-- 'oauth2CustomProperties', 'oAuth2Defaults_oauth2CustomProperties' - List of custom parameters required for OAuth 2.0 authentication.
+--
+-- 'oauth2GrantTypesSupported', 'oAuth2Defaults_oauth2GrantTypesSupported' - OAuth 2.0 grant types supported by the connector.
+--
+-- 'oauthScopes', 'oAuth2Defaults_oauthScopes' - OAuth 2.0 scopes that the connector supports.
+--
+-- 'tokenUrls', 'oAuth2Defaults_tokenUrls' - Token URLs that can be used for OAuth 2.0 authentication.
+newOAuth2Defaults ::
+  OAuth2Defaults
+newOAuth2Defaults =
+  OAuth2Defaults'
+    { authCodeUrls = Prelude.Nothing,
+      oauth2CustomProperties = Prelude.Nothing,
+      oauth2GrantTypesSupported = Prelude.Nothing,
+      oauthScopes = Prelude.Nothing,
+      tokenUrls = Prelude.Nothing
+    }
+
+-- | Auth code URLs that can be used for OAuth 2.0 authentication.
+oAuth2Defaults_authCodeUrls :: Lens.Lens' OAuth2Defaults (Prelude.Maybe [Prelude.Text])
+oAuth2Defaults_authCodeUrls = Lens.lens (\OAuth2Defaults' {authCodeUrls} -> authCodeUrls) (\s@OAuth2Defaults' {} a -> s {authCodeUrls = a} :: OAuth2Defaults) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of custom parameters required for OAuth 2.0 authentication.
+oAuth2Defaults_oauth2CustomProperties :: Lens.Lens' OAuth2Defaults (Prelude.Maybe [OAuth2CustomParameter])
+oAuth2Defaults_oauth2CustomProperties = Lens.lens (\OAuth2Defaults' {oauth2CustomProperties} -> oauth2CustomProperties) (\s@OAuth2Defaults' {} a -> s {oauth2CustomProperties = a} :: OAuth2Defaults) Prelude.. Lens.mapping Lens.coerced
+
+-- | OAuth 2.0 grant types supported by the connector.
+oAuth2Defaults_oauth2GrantTypesSupported :: Lens.Lens' OAuth2Defaults (Prelude.Maybe [OAuth2GrantType])
+oAuth2Defaults_oauth2GrantTypesSupported = Lens.lens (\OAuth2Defaults' {oauth2GrantTypesSupported} -> oauth2GrantTypesSupported) (\s@OAuth2Defaults' {} a -> s {oauth2GrantTypesSupported = a} :: OAuth2Defaults) Prelude.. Lens.mapping Lens.coerced
+
+-- | OAuth 2.0 scopes that the connector supports.
+oAuth2Defaults_oauthScopes :: Lens.Lens' OAuth2Defaults (Prelude.Maybe [Prelude.Text])
+oAuth2Defaults_oauthScopes = Lens.lens (\OAuth2Defaults' {oauthScopes} -> oauthScopes) (\s@OAuth2Defaults' {} a -> s {oauthScopes = a} :: OAuth2Defaults) Prelude.. Lens.mapping Lens.coerced
+
+-- | Token URLs that can be used for OAuth 2.0 authentication.
+oAuth2Defaults_tokenUrls :: Lens.Lens' OAuth2Defaults (Prelude.Maybe [Prelude.Text])
+oAuth2Defaults_tokenUrls = Lens.lens (\OAuth2Defaults' {tokenUrls} -> tokenUrls) (\s@OAuth2Defaults' {} a -> s {tokenUrls = a} :: OAuth2Defaults) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON OAuth2Defaults where
+  parseJSON =
+    Data.withObject
+      "OAuth2Defaults"
+      ( \x ->
+          OAuth2Defaults'
+            Prelude.<$> (x Data..:? "authCodeUrls" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "oauth2CustomProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "oauth2GrantTypesSupported"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "oauthScopes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "tokenUrls" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable OAuth2Defaults where
+  hashWithSalt _salt OAuth2Defaults' {..} =
+    _salt
+      `Prelude.hashWithSalt` authCodeUrls
+      `Prelude.hashWithSalt` oauth2CustomProperties
+      `Prelude.hashWithSalt` oauth2GrantTypesSupported
+      `Prelude.hashWithSalt` oauthScopes
+      `Prelude.hashWithSalt` tokenUrls
+
+instance Prelude.NFData OAuth2Defaults where
+  rnf OAuth2Defaults' {..} =
+    Prelude.rnf authCodeUrls
+      `Prelude.seq` Prelude.rnf oauth2CustomProperties
+      `Prelude.seq` Prelude.rnf oauth2GrantTypesSupported
+      `Prelude.seq` Prelude.rnf oauthScopes
+      `Prelude.seq` Prelude.rnf tokenUrls
diff --git a/gen/Amazonka/AppFlow/Types/OAuth2GrantType.hs b/gen/Amazonka/AppFlow/Types/OAuth2GrantType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuth2GrantType.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.AppFlow.Types.OAuth2GrantType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuth2GrantType
+  ( OAuth2GrantType
+      ( ..,
+        OAuth2GrantType_AUTHORIZATION_CODE,
+        OAuth2GrantType_CLIENT_CREDENTIALS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OAuth2GrantType = OAuth2GrantType'
+  { fromOAuth2GrantType ::
+      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 OAuth2GrantType_AUTHORIZATION_CODE :: OAuth2GrantType
+pattern OAuth2GrantType_AUTHORIZATION_CODE = OAuth2GrantType' "AUTHORIZATION_CODE"
+
+pattern OAuth2GrantType_CLIENT_CREDENTIALS :: OAuth2GrantType
+pattern OAuth2GrantType_CLIENT_CREDENTIALS = OAuth2GrantType' "CLIENT_CREDENTIALS"
+
+{-# COMPLETE
+  OAuth2GrantType_AUTHORIZATION_CODE,
+  OAuth2GrantType_CLIENT_CREDENTIALS,
+  OAuth2GrantType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/OAuth2Properties.hs b/gen/Amazonka/AppFlow/Types/OAuth2Properties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuth2Properties.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.OAuth2Properties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuth2Properties where
+
+import Amazonka.AppFlow.Types.OAuth2GrantType
+import qualified 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 OAuth 2.0 properties required for OAuth 2.0 authentication.
+--
+-- /See:/ 'newOAuth2Properties' smart constructor.
+data OAuth2Properties = OAuth2Properties'
+  { -- | Associates your token URL with a map of properties that you define. Use
+    -- this parameter to provide any additional details that the connector
+    -- requires to authenticate your request.
+    tokenUrlCustomProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The token URL required for OAuth 2.0 authentication.
+    tokenUrl :: Prelude.Text,
+    -- | The OAuth 2.0 grant type used by connector for OAuth 2.0 authentication.
+    oAuth2GrantType :: OAuth2GrantType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OAuth2Properties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tokenUrlCustomProperties', 'oAuth2Properties_tokenUrlCustomProperties' - Associates your token URL with a map of properties that you define. Use
+-- this parameter to provide any additional details that the connector
+-- requires to authenticate your request.
+--
+-- 'tokenUrl', 'oAuth2Properties_tokenUrl' - The token URL required for OAuth 2.0 authentication.
+--
+-- 'oAuth2GrantType', 'oAuth2Properties_oAuth2GrantType' - The OAuth 2.0 grant type used by connector for OAuth 2.0 authentication.
+newOAuth2Properties ::
+  -- | 'tokenUrl'
+  Prelude.Text ->
+  -- | 'oAuth2GrantType'
+  OAuth2GrantType ->
+  OAuth2Properties
+newOAuth2Properties pTokenUrl_ pOAuth2GrantType_ =
+  OAuth2Properties'
+    { tokenUrlCustomProperties =
+        Prelude.Nothing,
+      tokenUrl = pTokenUrl_,
+      oAuth2GrantType = pOAuth2GrantType_
+    }
+
+-- | Associates your token URL with a map of properties that you define. Use
+-- this parameter to provide any additional details that the connector
+-- requires to authenticate your request.
+oAuth2Properties_tokenUrlCustomProperties :: Lens.Lens' OAuth2Properties (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+oAuth2Properties_tokenUrlCustomProperties = Lens.lens (\OAuth2Properties' {tokenUrlCustomProperties} -> tokenUrlCustomProperties) (\s@OAuth2Properties' {} a -> s {tokenUrlCustomProperties = a} :: OAuth2Properties) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token URL required for OAuth 2.0 authentication.
+oAuth2Properties_tokenUrl :: Lens.Lens' OAuth2Properties Prelude.Text
+oAuth2Properties_tokenUrl = Lens.lens (\OAuth2Properties' {tokenUrl} -> tokenUrl) (\s@OAuth2Properties' {} a -> s {tokenUrl = a} :: OAuth2Properties)
+
+-- | The OAuth 2.0 grant type used by connector for OAuth 2.0 authentication.
+oAuth2Properties_oAuth2GrantType :: Lens.Lens' OAuth2Properties OAuth2GrantType
+oAuth2Properties_oAuth2GrantType = Lens.lens (\OAuth2Properties' {oAuth2GrantType} -> oAuth2GrantType) (\s@OAuth2Properties' {} a -> s {oAuth2GrantType = a} :: OAuth2Properties)
+
+instance Data.FromJSON OAuth2Properties where
+  parseJSON =
+    Data.withObject
+      "OAuth2Properties"
+      ( \x ->
+          OAuth2Properties'
+            Prelude.<$> ( x
+                            Data..:? "tokenUrlCustomProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "tokenUrl")
+            Prelude.<*> (x Data..: "oAuth2GrantType")
+      )
+
+instance Prelude.Hashable OAuth2Properties where
+  hashWithSalt _salt OAuth2Properties' {..} =
+    _salt
+      `Prelude.hashWithSalt` tokenUrlCustomProperties
+      `Prelude.hashWithSalt` tokenUrl
+      `Prelude.hashWithSalt` oAuth2GrantType
+
+instance Prelude.NFData OAuth2Properties where
+  rnf OAuth2Properties' {..} =
+    Prelude.rnf tokenUrlCustomProperties
+      `Prelude.seq` Prelude.rnf tokenUrl
+      `Prelude.seq` Prelude.rnf oAuth2GrantType
+
+instance Data.ToJSON OAuth2Properties where
+  toJSON OAuth2Properties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("tokenUrlCustomProperties" Data..=)
+              Prelude.<$> tokenUrlCustomProperties,
+            Prelude.Just ("tokenUrl" Data..= tokenUrl),
+            Prelude.Just
+              ("oAuth2GrantType" Data..= oAuth2GrantType)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/OAuthCredentials.hs b/gen/Amazonka/AppFlow/Types/OAuthCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuthCredentials.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.OAuthCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuthCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 OAuth credentials required for OAuth type authentication.
+--
+-- /See:/ 'newOAuthCredentials' smart constructor.
+data OAuthCredentials = OAuthCredentials'
+  { -- | The access token used to access protected SAPOData resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The OAuth requirement needed to request security tokens from the
+    -- connector endpoint.
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The refresh token used to refresh expired access token.
+    refreshToken :: Prelude.Maybe Prelude.Text,
+    -- | The identifier for the desired client.
+    clientId :: Prelude.Text,
+    -- | The client secret used by the OAuth client to authenticate to the
+    -- authorization server.
+    clientSecret :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OAuthCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'oAuthCredentials_accessToken' - The access token used to access protected SAPOData resources.
+--
+-- 'oAuthRequest', 'oAuthCredentials_oAuthRequest' - The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+--
+-- 'refreshToken', 'oAuthCredentials_refreshToken' - The refresh token used to refresh expired access token.
+--
+-- 'clientId', 'oAuthCredentials_clientId' - The identifier for the desired client.
+--
+-- 'clientSecret', 'oAuthCredentials_clientSecret' - The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+newOAuthCredentials ::
+  -- | 'clientId'
+  Prelude.Text ->
+  -- | 'clientSecret'
+  Prelude.Text ->
+  OAuthCredentials
+newOAuthCredentials pClientId_ pClientSecret_ =
+  OAuthCredentials'
+    { accessToken = Prelude.Nothing,
+      oAuthRequest = Prelude.Nothing,
+      refreshToken = Prelude.Nothing,
+      clientId = pClientId_,
+      clientSecret = Data._Sensitive Lens.# pClientSecret_
+    }
+
+-- | The access token used to access protected SAPOData resources.
+oAuthCredentials_accessToken :: Lens.Lens' OAuthCredentials (Prelude.Maybe Prelude.Text)
+oAuthCredentials_accessToken = Lens.lens (\OAuthCredentials' {accessToken} -> accessToken) (\s@OAuthCredentials' {} a -> s {accessToken = a} :: OAuthCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+oAuthCredentials_oAuthRequest :: Lens.Lens' OAuthCredentials (Prelude.Maybe ConnectorOAuthRequest)
+oAuthCredentials_oAuthRequest = Lens.lens (\OAuthCredentials' {oAuthRequest} -> oAuthRequest) (\s@OAuthCredentials' {} a -> s {oAuthRequest = a} :: OAuthCredentials)
+
+-- | The refresh token used to refresh expired access token.
+oAuthCredentials_refreshToken :: Lens.Lens' OAuthCredentials (Prelude.Maybe Prelude.Text)
+oAuthCredentials_refreshToken = Lens.lens (\OAuthCredentials' {refreshToken} -> refreshToken) (\s@OAuthCredentials' {} a -> s {refreshToken = a} :: OAuthCredentials)
+
+-- | The identifier for the desired client.
+oAuthCredentials_clientId :: Lens.Lens' OAuthCredentials Prelude.Text
+oAuthCredentials_clientId = Lens.lens (\OAuthCredentials' {clientId} -> clientId) (\s@OAuthCredentials' {} a -> s {clientId = a} :: OAuthCredentials)
+
+-- | The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+oAuthCredentials_clientSecret :: Lens.Lens' OAuthCredentials Prelude.Text
+oAuthCredentials_clientSecret = Lens.lens (\OAuthCredentials' {clientSecret} -> clientSecret) (\s@OAuthCredentials' {} a -> s {clientSecret = a} :: OAuthCredentials) Prelude.. Data._Sensitive
+
+instance Prelude.Hashable OAuthCredentials where
+  hashWithSalt _salt OAuthCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessToken
+      `Prelude.hashWithSalt` oAuthRequest
+      `Prelude.hashWithSalt` refreshToken
+      `Prelude.hashWithSalt` clientId
+      `Prelude.hashWithSalt` clientSecret
+
+instance Prelude.NFData OAuthCredentials where
+  rnf OAuthCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf refreshToken
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+
+instance Data.ToJSON OAuthCredentials where
+  toJSON OAuthCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            ("refreshToken" Data..=) Prelude.<$> refreshToken,
+            Prelude.Just ("clientId" Data..= clientId),
+            Prelude.Just ("clientSecret" Data..= clientSecret)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/OAuthProperties.hs b/gen/Amazonka/AppFlow/Types/OAuthProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OAuthProperties.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.OAuthProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OAuthProperties where
+
+import qualified 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 OAuth properties required for OAuth type authentication.
+--
+-- /See:/ 'newOAuthProperties' smart constructor.
+data OAuthProperties = OAuthProperties'
+  { -- | The token url required to fetch access\/refresh tokens using
+    -- authorization code and also to refresh expired access token using
+    -- refresh token.
+    tokenUrl :: Prelude.Text,
+    -- | The authorization code url required to redirect to SAP Login Page to
+    -- fetch authorization code for OAuth type authentication.
+    authCodeUrl :: Prelude.Text,
+    -- | The OAuth scopes required for OAuth type authentication.
+    oAuthScopes :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OAuthProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tokenUrl', 'oAuthProperties_tokenUrl' - The token url required to fetch access\/refresh tokens using
+-- authorization code and also to refresh expired access token using
+-- refresh token.
+--
+-- 'authCodeUrl', 'oAuthProperties_authCodeUrl' - The authorization code url required to redirect to SAP Login Page to
+-- fetch authorization code for OAuth type authentication.
+--
+-- 'oAuthScopes', 'oAuthProperties_oAuthScopes' - The OAuth scopes required for OAuth type authentication.
+newOAuthProperties ::
+  -- | 'tokenUrl'
+  Prelude.Text ->
+  -- | 'authCodeUrl'
+  Prelude.Text ->
+  OAuthProperties
+newOAuthProperties pTokenUrl_ pAuthCodeUrl_ =
+  OAuthProperties'
+    { tokenUrl = pTokenUrl_,
+      authCodeUrl = pAuthCodeUrl_,
+      oAuthScopes = Prelude.mempty
+    }
+
+-- | The token url required to fetch access\/refresh tokens using
+-- authorization code and also to refresh expired access token using
+-- refresh token.
+oAuthProperties_tokenUrl :: Lens.Lens' OAuthProperties Prelude.Text
+oAuthProperties_tokenUrl = Lens.lens (\OAuthProperties' {tokenUrl} -> tokenUrl) (\s@OAuthProperties' {} a -> s {tokenUrl = a} :: OAuthProperties)
+
+-- | The authorization code url required to redirect to SAP Login Page to
+-- fetch authorization code for OAuth type authentication.
+oAuthProperties_authCodeUrl :: Lens.Lens' OAuthProperties Prelude.Text
+oAuthProperties_authCodeUrl = Lens.lens (\OAuthProperties' {authCodeUrl} -> authCodeUrl) (\s@OAuthProperties' {} a -> s {authCodeUrl = a} :: OAuthProperties)
+
+-- | The OAuth scopes required for OAuth type authentication.
+oAuthProperties_oAuthScopes :: Lens.Lens' OAuthProperties [Prelude.Text]
+oAuthProperties_oAuthScopes = Lens.lens (\OAuthProperties' {oAuthScopes} -> oAuthScopes) (\s@OAuthProperties' {} a -> s {oAuthScopes = a} :: OAuthProperties) Prelude.. Lens.coerced
+
+instance Data.FromJSON OAuthProperties where
+  parseJSON =
+    Data.withObject
+      "OAuthProperties"
+      ( \x ->
+          OAuthProperties'
+            Prelude.<$> (x Data..: "tokenUrl")
+            Prelude.<*> (x Data..: "authCodeUrl")
+            Prelude.<*> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable OAuthProperties where
+  hashWithSalt _salt OAuthProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` tokenUrl
+      `Prelude.hashWithSalt` authCodeUrl
+      `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData OAuthProperties where
+  rnf OAuthProperties' {..} =
+    Prelude.rnf tokenUrl
+      `Prelude.seq` Prelude.rnf authCodeUrl
+      `Prelude.seq` Prelude.rnf oAuthScopes
+
+instance Data.ToJSON OAuthProperties where
+  toJSON OAuthProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("tokenUrl" Data..= tokenUrl),
+            Prelude.Just ("authCodeUrl" Data..= authCodeUrl),
+            Prelude.Just ("oAuthScopes" Data..= oAuthScopes)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/Operator.hs b/gen/Amazonka/AppFlow/Types/Operator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/Operator.hs
@@ -0,0 +1,166 @@
+{-# 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.AppFlow.Types.Operator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.Operator
+  ( Operator
+      ( ..,
+        Operator_ADDITION,
+        Operator_BETWEEN,
+        Operator_CONTAINS,
+        Operator_DIVISION,
+        Operator_EQUAL_TO,
+        Operator_GREATER_THAN,
+        Operator_GREATER_THAN_OR_EQUAL_TO,
+        Operator_LESS_THAN,
+        Operator_LESS_THAN_OR_EQUAL_TO,
+        Operator_MASK_ALL,
+        Operator_MASK_FIRST_N,
+        Operator_MASK_LAST_N,
+        Operator_MULTIPLICATION,
+        Operator_NOT_EQUAL_TO,
+        Operator_NO_OP,
+        Operator_PROJECTION,
+        Operator_SUBTRACTION,
+        Operator_VALIDATE_NON_NEGATIVE,
+        Operator_VALIDATE_NON_NULL,
+        Operator_VALIDATE_NON_ZERO,
+        Operator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Operator = Operator'
+  { fromOperator ::
+      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 Operator_ADDITION :: Operator
+pattern Operator_ADDITION = Operator' "ADDITION"
+
+pattern Operator_BETWEEN :: Operator
+pattern Operator_BETWEEN = Operator' "BETWEEN"
+
+pattern Operator_CONTAINS :: Operator
+pattern Operator_CONTAINS = Operator' "CONTAINS"
+
+pattern Operator_DIVISION :: Operator
+pattern Operator_DIVISION = Operator' "DIVISION"
+
+pattern Operator_EQUAL_TO :: Operator
+pattern Operator_EQUAL_TO = Operator' "EQUAL_TO"
+
+pattern Operator_GREATER_THAN :: Operator
+pattern Operator_GREATER_THAN = Operator' "GREATER_THAN"
+
+pattern Operator_GREATER_THAN_OR_EQUAL_TO :: Operator
+pattern Operator_GREATER_THAN_OR_EQUAL_TO = Operator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern Operator_LESS_THAN :: Operator
+pattern Operator_LESS_THAN = Operator' "LESS_THAN"
+
+pattern Operator_LESS_THAN_OR_EQUAL_TO :: Operator
+pattern Operator_LESS_THAN_OR_EQUAL_TO = Operator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern Operator_MASK_ALL :: Operator
+pattern Operator_MASK_ALL = Operator' "MASK_ALL"
+
+pattern Operator_MASK_FIRST_N :: Operator
+pattern Operator_MASK_FIRST_N = Operator' "MASK_FIRST_N"
+
+pattern Operator_MASK_LAST_N :: Operator
+pattern Operator_MASK_LAST_N = Operator' "MASK_LAST_N"
+
+pattern Operator_MULTIPLICATION :: Operator
+pattern Operator_MULTIPLICATION = Operator' "MULTIPLICATION"
+
+pattern Operator_NOT_EQUAL_TO :: Operator
+pattern Operator_NOT_EQUAL_TO = Operator' "NOT_EQUAL_TO"
+
+pattern Operator_NO_OP :: Operator
+pattern Operator_NO_OP = Operator' "NO_OP"
+
+pattern Operator_PROJECTION :: Operator
+pattern Operator_PROJECTION = Operator' "PROJECTION"
+
+pattern Operator_SUBTRACTION :: Operator
+pattern Operator_SUBTRACTION = Operator' "SUBTRACTION"
+
+pattern Operator_VALIDATE_NON_NEGATIVE :: Operator
+pattern Operator_VALIDATE_NON_NEGATIVE = Operator' "VALIDATE_NON_NEGATIVE"
+
+pattern Operator_VALIDATE_NON_NULL :: Operator
+pattern Operator_VALIDATE_NON_NULL = Operator' "VALIDATE_NON_NULL"
+
+pattern Operator_VALIDATE_NON_ZERO :: Operator
+pattern Operator_VALIDATE_NON_ZERO = Operator' "VALIDATE_NON_ZERO"
+
+pattern Operator_VALIDATE_NUMERIC :: Operator
+pattern Operator_VALIDATE_NUMERIC = Operator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  Operator_ADDITION,
+  Operator_BETWEEN,
+  Operator_CONTAINS,
+  Operator_DIVISION,
+  Operator_EQUAL_TO,
+  Operator_GREATER_THAN,
+  Operator_GREATER_THAN_OR_EQUAL_TO,
+  Operator_LESS_THAN,
+  Operator_LESS_THAN_OR_EQUAL_TO,
+  Operator_MASK_ALL,
+  Operator_MASK_FIRST_N,
+  Operator_MASK_LAST_N,
+  Operator_MULTIPLICATION,
+  Operator_NOT_EQUAL_TO,
+  Operator_NO_OP,
+  Operator_PROJECTION,
+  Operator_SUBTRACTION,
+  Operator_VALIDATE_NON_NEGATIVE,
+  Operator_VALIDATE_NON_NULL,
+  Operator_VALIDATE_NON_ZERO,
+  Operator_VALIDATE_NUMERIC,
+  Operator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/OperatorPropertiesKeys.hs b/gen/Amazonka/AppFlow/Types/OperatorPropertiesKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/OperatorPropertiesKeys.hs
@@ -0,0 +1,146 @@
+{-# 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.AppFlow.Types.OperatorPropertiesKeys
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.OperatorPropertiesKeys
+  ( OperatorPropertiesKeys
+      ( ..,
+        OperatorPropertiesKeys_CONCAT_FORMAT,
+        OperatorPropertiesKeys_DATA_TYPE,
+        OperatorPropertiesKeys_DESTINATION_DATA_TYPE,
+        OperatorPropertiesKeys_EXCLUDE_SOURCE_FIELDS_LIST,
+        OperatorPropertiesKeys_INCLUDE_NEW_FIELDS,
+        OperatorPropertiesKeys_LOWER_BOUND,
+        OperatorPropertiesKeys_MASK_LENGTH,
+        OperatorPropertiesKeys_MASK_VALUE,
+        OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER,
+        OperatorPropertiesKeys_ORDERED_PARTITION_KEYS_LIST,
+        OperatorPropertiesKeys_SOURCE_DATA_TYPE,
+        OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP,
+        OperatorPropertiesKeys_TRUNCATE_LENGTH,
+        OperatorPropertiesKeys_UPPER_BOUND,
+        OperatorPropertiesKeys_VALIDATION_ACTION,
+        OperatorPropertiesKeys_VALUE,
+        OperatorPropertiesKeys_VALUES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OperatorPropertiesKeys = OperatorPropertiesKeys'
+  { fromOperatorPropertiesKeys ::
+      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 OperatorPropertiesKeys_CONCAT_FORMAT :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_CONCAT_FORMAT = OperatorPropertiesKeys' "CONCAT_FORMAT"
+
+pattern OperatorPropertiesKeys_DATA_TYPE :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_DATA_TYPE = OperatorPropertiesKeys' "DATA_TYPE"
+
+pattern OperatorPropertiesKeys_DESTINATION_DATA_TYPE :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_DESTINATION_DATA_TYPE = OperatorPropertiesKeys' "DESTINATION_DATA_TYPE"
+
+pattern OperatorPropertiesKeys_EXCLUDE_SOURCE_FIELDS_LIST :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_EXCLUDE_SOURCE_FIELDS_LIST = OperatorPropertiesKeys' "EXCLUDE_SOURCE_FIELDS_LIST"
+
+pattern OperatorPropertiesKeys_INCLUDE_NEW_FIELDS :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_INCLUDE_NEW_FIELDS = OperatorPropertiesKeys' "INCLUDE_NEW_FIELDS"
+
+pattern OperatorPropertiesKeys_LOWER_BOUND :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_LOWER_BOUND = OperatorPropertiesKeys' "LOWER_BOUND"
+
+pattern OperatorPropertiesKeys_MASK_LENGTH :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_MASK_LENGTH = OperatorPropertiesKeys' "MASK_LENGTH"
+
+pattern OperatorPropertiesKeys_MASK_VALUE :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_MASK_VALUE = OperatorPropertiesKeys' "MASK_VALUE"
+
+pattern OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER = OperatorPropertiesKeys' "MATH_OPERATION_FIELDS_ORDER"
+
+pattern OperatorPropertiesKeys_ORDERED_PARTITION_KEYS_LIST :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_ORDERED_PARTITION_KEYS_LIST = OperatorPropertiesKeys' "ORDERED_PARTITION_KEYS_LIST"
+
+pattern OperatorPropertiesKeys_SOURCE_DATA_TYPE :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_SOURCE_DATA_TYPE = OperatorPropertiesKeys' "SOURCE_DATA_TYPE"
+
+pattern OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP = OperatorPropertiesKeys' "SUBFIELD_CATEGORY_MAP"
+
+pattern OperatorPropertiesKeys_TRUNCATE_LENGTH :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_TRUNCATE_LENGTH = OperatorPropertiesKeys' "TRUNCATE_LENGTH"
+
+pattern OperatorPropertiesKeys_UPPER_BOUND :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_UPPER_BOUND = OperatorPropertiesKeys' "UPPER_BOUND"
+
+pattern OperatorPropertiesKeys_VALIDATION_ACTION :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_VALIDATION_ACTION = OperatorPropertiesKeys' "VALIDATION_ACTION"
+
+pattern OperatorPropertiesKeys_VALUE :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_VALUE = OperatorPropertiesKeys' "VALUE"
+
+pattern OperatorPropertiesKeys_VALUES :: OperatorPropertiesKeys
+pattern OperatorPropertiesKeys_VALUES = OperatorPropertiesKeys' "VALUES"
+
+{-# COMPLETE
+  OperatorPropertiesKeys_CONCAT_FORMAT,
+  OperatorPropertiesKeys_DATA_TYPE,
+  OperatorPropertiesKeys_DESTINATION_DATA_TYPE,
+  OperatorPropertiesKeys_EXCLUDE_SOURCE_FIELDS_LIST,
+  OperatorPropertiesKeys_INCLUDE_NEW_FIELDS,
+  OperatorPropertiesKeys_LOWER_BOUND,
+  OperatorPropertiesKeys_MASK_LENGTH,
+  OperatorPropertiesKeys_MASK_VALUE,
+  OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER,
+  OperatorPropertiesKeys_ORDERED_PARTITION_KEYS_LIST,
+  OperatorPropertiesKeys_SOURCE_DATA_TYPE,
+  OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP,
+  OperatorPropertiesKeys_TRUNCATE_LENGTH,
+  OperatorPropertiesKeys_UPPER_BOUND,
+  OperatorPropertiesKeys_VALIDATION_ACTION,
+  OperatorPropertiesKeys_VALUE,
+  OperatorPropertiesKeys_VALUES,
+  OperatorPropertiesKeys'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/Operators.hs b/gen/Amazonka/AppFlow/Types/Operators.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/Operators.hs
@@ -0,0 +1,166 @@
+{-# 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.AppFlow.Types.Operators
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.Operators
+  ( Operators
+      ( ..,
+        Operators_ADDITION,
+        Operators_BETWEEN,
+        Operators_CONTAINS,
+        Operators_DIVISION,
+        Operators_EQUAL_TO,
+        Operators_GREATER_THAN,
+        Operators_GREATER_THAN_OR_EQUAL_TO,
+        Operators_LESS_THAN,
+        Operators_LESS_THAN_OR_EQUAL_TO,
+        Operators_MASK_ALL,
+        Operators_MASK_FIRST_N,
+        Operators_MASK_LAST_N,
+        Operators_MULTIPLICATION,
+        Operators_NOT_EQUAL_TO,
+        Operators_NO_OP,
+        Operators_PROJECTION,
+        Operators_SUBTRACTION,
+        Operators_VALIDATE_NON_NEGATIVE,
+        Operators_VALIDATE_NON_NULL,
+        Operators_VALIDATE_NON_ZERO,
+        Operators_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Operators = Operators'
+  { fromOperators ::
+      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 Operators_ADDITION :: Operators
+pattern Operators_ADDITION = Operators' "ADDITION"
+
+pattern Operators_BETWEEN :: Operators
+pattern Operators_BETWEEN = Operators' "BETWEEN"
+
+pattern Operators_CONTAINS :: Operators
+pattern Operators_CONTAINS = Operators' "CONTAINS"
+
+pattern Operators_DIVISION :: Operators
+pattern Operators_DIVISION = Operators' "DIVISION"
+
+pattern Operators_EQUAL_TO :: Operators
+pattern Operators_EQUAL_TO = Operators' "EQUAL_TO"
+
+pattern Operators_GREATER_THAN :: Operators
+pattern Operators_GREATER_THAN = Operators' "GREATER_THAN"
+
+pattern Operators_GREATER_THAN_OR_EQUAL_TO :: Operators
+pattern Operators_GREATER_THAN_OR_EQUAL_TO = Operators' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern Operators_LESS_THAN :: Operators
+pattern Operators_LESS_THAN = Operators' "LESS_THAN"
+
+pattern Operators_LESS_THAN_OR_EQUAL_TO :: Operators
+pattern Operators_LESS_THAN_OR_EQUAL_TO = Operators' "LESS_THAN_OR_EQUAL_TO"
+
+pattern Operators_MASK_ALL :: Operators
+pattern Operators_MASK_ALL = Operators' "MASK_ALL"
+
+pattern Operators_MASK_FIRST_N :: Operators
+pattern Operators_MASK_FIRST_N = Operators' "MASK_FIRST_N"
+
+pattern Operators_MASK_LAST_N :: Operators
+pattern Operators_MASK_LAST_N = Operators' "MASK_LAST_N"
+
+pattern Operators_MULTIPLICATION :: Operators
+pattern Operators_MULTIPLICATION = Operators' "MULTIPLICATION"
+
+pattern Operators_NOT_EQUAL_TO :: Operators
+pattern Operators_NOT_EQUAL_TO = Operators' "NOT_EQUAL_TO"
+
+pattern Operators_NO_OP :: Operators
+pattern Operators_NO_OP = Operators' "NO_OP"
+
+pattern Operators_PROJECTION :: Operators
+pattern Operators_PROJECTION = Operators' "PROJECTION"
+
+pattern Operators_SUBTRACTION :: Operators
+pattern Operators_SUBTRACTION = Operators' "SUBTRACTION"
+
+pattern Operators_VALIDATE_NON_NEGATIVE :: Operators
+pattern Operators_VALIDATE_NON_NEGATIVE = Operators' "VALIDATE_NON_NEGATIVE"
+
+pattern Operators_VALIDATE_NON_NULL :: Operators
+pattern Operators_VALIDATE_NON_NULL = Operators' "VALIDATE_NON_NULL"
+
+pattern Operators_VALIDATE_NON_ZERO :: Operators
+pattern Operators_VALIDATE_NON_ZERO = Operators' "VALIDATE_NON_ZERO"
+
+pattern Operators_VALIDATE_NUMERIC :: Operators
+pattern Operators_VALIDATE_NUMERIC = Operators' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  Operators_ADDITION,
+  Operators_BETWEEN,
+  Operators_CONTAINS,
+  Operators_DIVISION,
+  Operators_EQUAL_TO,
+  Operators_GREATER_THAN,
+  Operators_GREATER_THAN_OR_EQUAL_TO,
+  Operators_LESS_THAN,
+  Operators_LESS_THAN_OR_EQUAL_TO,
+  Operators_MASK_ALL,
+  Operators_MASK_FIRST_N,
+  Operators_MASK_LAST_N,
+  Operators_MULTIPLICATION,
+  Operators_NOT_EQUAL_TO,
+  Operators_NO_OP,
+  Operators_PROJECTION,
+  Operators_SUBTRACTION,
+  Operators_VALIDATE_NON_NEGATIVE,
+  Operators_VALIDATE_NON_NULL,
+  Operators_VALIDATE_NON_ZERO,
+  Operators_VALIDATE_NUMERIC,
+  Operators'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/PathPrefix.hs b/gen/Amazonka/AppFlow/Types/PathPrefix.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PathPrefix.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.AppFlow.Types.PathPrefix
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PathPrefix
+  ( PathPrefix
+      ( ..,
+        PathPrefix_EXECUTION_ID,
+        PathPrefix_SCHEMA_VERSION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PathPrefix = PathPrefix'
+  { fromPathPrefix ::
+      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 PathPrefix_EXECUTION_ID :: PathPrefix
+pattern PathPrefix_EXECUTION_ID = PathPrefix' "EXECUTION_ID"
+
+pattern PathPrefix_SCHEMA_VERSION :: PathPrefix
+pattern PathPrefix_SCHEMA_VERSION = PathPrefix' "SCHEMA_VERSION"
+
+{-# COMPLETE
+  PathPrefix_EXECUTION_ID,
+  PathPrefix_SCHEMA_VERSION,
+  PathPrefix'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/PrefixConfig.hs b/gen/Amazonka/AppFlow/Types/PrefixConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PrefixConfig.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.PrefixConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PrefixConfig where
+
+import Amazonka.AppFlow.Types.PathPrefix
+import Amazonka.AppFlow.Types.PrefixFormat
+import Amazonka.AppFlow.Types.PrefixType
+import qualified 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 elements that Amazon AppFlow includes in the file and folder
+-- names in the flow destination.
+--
+-- /See:/ 'newPrefixConfig' smart constructor.
+data PrefixConfig = PrefixConfig'
+  { -- | Specifies whether the destination file path includes either or both of
+    -- the following elements:
+    --
+    -- [EXECUTION_ID]
+    --     The ID that Amazon AppFlow assigns to the flow run.
+    --
+    -- [SCHEMA_VERSION]
+    --     The version number of your data schema. Amazon AppFlow assigns this
+    --     version number. The version number increases by one when you change
+    --     any of the following settings in your flow configuration:
+    --
+    --     -   Source-to-destination field mappings
+    --
+    --     -   Field data types
+    --
+    --     -   Partition keys
+    pathPrefixHierarchy :: Prelude.Maybe [PathPrefix],
+    -- | Determines the level of granularity for the date and time that\'s
+    -- included in the prefix.
+    prefixFormat :: Prelude.Maybe PrefixFormat,
+    -- | Determines the format of the prefix, and whether it applies to the file
+    -- name, file path, or both.
+    prefixType :: Prelude.Maybe PrefixType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PrefixConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pathPrefixHierarchy', 'prefixConfig_pathPrefixHierarchy' - Specifies whether the destination file path includes either or both of
+-- the following elements:
+--
+-- [EXECUTION_ID]
+--     The ID that Amazon AppFlow assigns to the flow run.
+--
+-- [SCHEMA_VERSION]
+--     The version number of your data schema. Amazon AppFlow assigns this
+--     version number. The version number increases by one when you change
+--     any of the following settings in your flow configuration:
+--
+--     -   Source-to-destination field mappings
+--
+--     -   Field data types
+--
+--     -   Partition keys
+--
+-- 'prefixFormat', 'prefixConfig_prefixFormat' - Determines the level of granularity for the date and time that\'s
+-- included in the prefix.
+--
+-- 'prefixType', 'prefixConfig_prefixType' - Determines the format of the prefix, and whether it applies to the file
+-- name, file path, or both.
+newPrefixConfig ::
+  PrefixConfig
+newPrefixConfig =
+  PrefixConfig'
+    { pathPrefixHierarchy =
+        Prelude.Nothing,
+      prefixFormat = Prelude.Nothing,
+      prefixType = Prelude.Nothing
+    }
+
+-- | Specifies whether the destination file path includes either or both of
+-- the following elements:
+--
+-- [EXECUTION_ID]
+--     The ID that Amazon AppFlow assigns to the flow run.
+--
+-- [SCHEMA_VERSION]
+--     The version number of your data schema. Amazon AppFlow assigns this
+--     version number. The version number increases by one when you change
+--     any of the following settings in your flow configuration:
+--
+--     -   Source-to-destination field mappings
+--
+--     -   Field data types
+--
+--     -   Partition keys
+prefixConfig_pathPrefixHierarchy :: Lens.Lens' PrefixConfig (Prelude.Maybe [PathPrefix])
+prefixConfig_pathPrefixHierarchy = Lens.lens (\PrefixConfig' {pathPrefixHierarchy} -> pathPrefixHierarchy) (\s@PrefixConfig' {} a -> s {pathPrefixHierarchy = a} :: PrefixConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Determines the level of granularity for the date and time that\'s
+-- included in the prefix.
+prefixConfig_prefixFormat :: Lens.Lens' PrefixConfig (Prelude.Maybe PrefixFormat)
+prefixConfig_prefixFormat = Lens.lens (\PrefixConfig' {prefixFormat} -> prefixFormat) (\s@PrefixConfig' {} a -> s {prefixFormat = a} :: PrefixConfig)
+
+-- | Determines the format of the prefix, and whether it applies to the file
+-- name, file path, or both.
+prefixConfig_prefixType :: Lens.Lens' PrefixConfig (Prelude.Maybe PrefixType)
+prefixConfig_prefixType = Lens.lens (\PrefixConfig' {prefixType} -> prefixType) (\s@PrefixConfig' {} a -> s {prefixType = a} :: PrefixConfig)
+
+instance Data.FromJSON PrefixConfig where
+  parseJSON =
+    Data.withObject
+      "PrefixConfig"
+      ( \x ->
+          PrefixConfig'
+            Prelude.<$> ( x
+                            Data..:? "pathPrefixHierarchy"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "prefixFormat")
+            Prelude.<*> (x Data..:? "prefixType")
+      )
+
+instance Prelude.Hashable PrefixConfig where
+  hashWithSalt _salt PrefixConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` pathPrefixHierarchy
+      `Prelude.hashWithSalt` prefixFormat
+      `Prelude.hashWithSalt` prefixType
+
+instance Prelude.NFData PrefixConfig where
+  rnf PrefixConfig' {..} =
+    Prelude.rnf pathPrefixHierarchy
+      `Prelude.seq` Prelude.rnf prefixFormat
+      `Prelude.seq` Prelude.rnf prefixType
+
+instance Data.ToJSON PrefixConfig where
+  toJSON PrefixConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("pathPrefixHierarchy" Data..=)
+              Prelude.<$> pathPrefixHierarchy,
+            ("prefixFormat" Data..=) Prelude.<$> prefixFormat,
+            ("prefixType" Data..=) Prelude.<$> prefixType
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/PrefixFormat.hs b/gen/Amazonka/AppFlow/Types/PrefixFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PrefixFormat.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.AppFlow.Types.PrefixFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PrefixFormat
+  ( PrefixFormat
+      ( ..,
+        PrefixFormat_DAY,
+        PrefixFormat_HOUR,
+        PrefixFormat_MINUTE,
+        PrefixFormat_MONTH,
+        PrefixFormat_YEAR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PrefixFormat = PrefixFormat'
+  { fromPrefixFormat ::
+      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 PrefixFormat_DAY :: PrefixFormat
+pattern PrefixFormat_DAY = PrefixFormat' "DAY"
+
+pattern PrefixFormat_HOUR :: PrefixFormat
+pattern PrefixFormat_HOUR = PrefixFormat' "HOUR"
+
+pattern PrefixFormat_MINUTE :: PrefixFormat
+pattern PrefixFormat_MINUTE = PrefixFormat' "MINUTE"
+
+pattern PrefixFormat_MONTH :: PrefixFormat
+pattern PrefixFormat_MONTH = PrefixFormat' "MONTH"
+
+pattern PrefixFormat_YEAR :: PrefixFormat
+pattern PrefixFormat_YEAR = PrefixFormat' "YEAR"
+
+{-# COMPLETE
+  PrefixFormat_DAY,
+  PrefixFormat_HOUR,
+  PrefixFormat_MINUTE,
+  PrefixFormat_MONTH,
+  PrefixFormat_YEAR,
+  PrefixFormat'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/PrefixType.hs b/gen/Amazonka/AppFlow/Types/PrefixType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PrefixType.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.AppFlow.Types.PrefixType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PrefixType
+  ( PrefixType
+      ( ..,
+        PrefixType_FILENAME,
+        PrefixType_PATH,
+        PrefixType_PATH_AND_FILENAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PrefixType = PrefixType'
+  { fromPrefixType ::
+      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 PrefixType_FILENAME :: PrefixType
+pattern PrefixType_FILENAME = PrefixType' "FILENAME"
+
+pattern PrefixType_PATH :: PrefixType
+pattern PrefixType_PATH = PrefixType' "PATH"
+
+pattern PrefixType_PATH_AND_FILENAME :: PrefixType
+pattern PrefixType_PATH_AND_FILENAME = PrefixType' "PATH_AND_FILENAME"
+
+{-# COMPLETE
+  PrefixType_FILENAME,
+  PrefixType_PATH,
+  PrefixType_PATH_AND_FILENAME,
+  PrefixType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningFailureCause.hs b/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningFailureCause.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningFailureCause.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.AppFlow.Types.PrivateConnectionProvisioningFailureCause
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PrivateConnectionProvisioningFailureCause
+  ( PrivateConnectionProvisioningFailureCause
+      ( ..,
+        PrivateConnectionProvisioningFailureCause_ACCESS_DENIED,
+        PrivateConnectionProvisioningFailureCause_CONNECTOR_AUTHENTICATION,
+        PrivateConnectionProvisioningFailureCause_CONNECTOR_SERVER,
+        PrivateConnectionProvisioningFailureCause_INTERNAL_SERVER,
+        PrivateConnectionProvisioningFailureCause_VALIDATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PrivateConnectionProvisioningFailureCause = PrivateConnectionProvisioningFailureCause'
+  { fromPrivateConnectionProvisioningFailureCause ::
+      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 PrivateConnectionProvisioningFailureCause_ACCESS_DENIED :: PrivateConnectionProvisioningFailureCause
+pattern PrivateConnectionProvisioningFailureCause_ACCESS_DENIED = PrivateConnectionProvisioningFailureCause' "ACCESS_DENIED"
+
+pattern PrivateConnectionProvisioningFailureCause_CONNECTOR_AUTHENTICATION :: PrivateConnectionProvisioningFailureCause
+pattern PrivateConnectionProvisioningFailureCause_CONNECTOR_AUTHENTICATION = PrivateConnectionProvisioningFailureCause' "CONNECTOR_AUTHENTICATION"
+
+pattern PrivateConnectionProvisioningFailureCause_CONNECTOR_SERVER :: PrivateConnectionProvisioningFailureCause
+pattern PrivateConnectionProvisioningFailureCause_CONNECTOR_SERVER = PrivateConnectionProvisioningFailureCause' "CONNECTOR_SERVER"
+
+pattern PrivateConnectionProvisioningFailureCause_INTERNAL_SERVER :: PrivateConnectionProvisioningFailureCause
+pattern PrivateConnectionProvisioningFailureCause_INTERNAL_SERVER = PrivateConnectionProvisioningFailureCause' "INTERNAL_SERVER"
+
+pattern PrivateConnectionProvisioningFailureCause_VALIDATION :: PrivateConnectionProvisioningFailureCause
+pattern PrivateConnectionProvisioningFailureCause_VALIDATION = PrivateConnectionProvisioningFailureCause' "VALIDATION"
+
+{-# COMPLETE
+  PrivateConnectionProvisioningFailureCause_ACCESS_DENIED,
+  PrivateConnectionProvisioningFailureCause_CONNECTOR_AUTHENTICATION,
+  PrivateConnectionProvisioningFailureCause_CONNECTOR_SERVER,
+  PrivateConnectionProvisioningFailureCause_INTERNAL_SERVER,
+  PrivateConnectionProvisioningFailureCause_VALIDATION,
+  PrivateConnectionProvisioningFailureCause'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningState.hs b/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningState.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.PrivateConnectionProvisioningState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PrivateConnectionProvisioningState where
+
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningFailureCause
+import Amazonka.AppFlow.Types.PrivateConnectionProvisioningStatus
+import qualified 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 the private connection provisioning state.
+--
+-- /See:/ 'newPrivateConnectionProvisioningState' smart constructor.
+data PrivateConnectionProvisioningState = PrivateConnectionProvisioningState'
+  { -- | Specifies the private connection provisioning failure cause.
+    failureCause :: Prelude.Maybe PrivateConnectionProvisioningFailureCause,
+    -- | Specifies the private connection provisioning failure reason.
+    failureMessage :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the private connection provisioning status.
+    status :: Prelude.Maybe PrivateConnectionProvisioningStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PrivateConnectionProvisioningState' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'failureCause', 'privateConnectionProvisioningState_failureCause' - Specifies the private connection provisioning failure cause.
+--
+-- 'failureMessage', 'privateConnectionProvisioningState_failureMessage' - Specifies the private connection provisioning failure reason.
+--
+-- 'status', 'privateConnectionProvisioningState_status' - Specifies the private connection provisioning status.
+newPrivateConnectionProvisioningState ::
+  PrivateConnectionProvisioningState
+newPrivateConnectionProvisioningState =
+  PrivateConnectionProvisioningState'
+    { failureCause =
+        Prelude.Nothing,
+      failureMessage = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Specifies the private connection provisioning failure cause.
+privateConnectionProvisioningState_failureCause :: Lens.Lens' PrivateConnectionProvisioningState (Prelude.Maybe PrivateConnectionProvisioningFailureCause)
+privateConnectionProvisioningState_failureCause = Lens.lens (\PrivateConnectionProvisioningState' {failureCause} -> failureCause) (\s@PrivateConnectionProvisioningState' {} a -> s {failureCause = a} :: PrivateConnectionProvisioningState)
+
+-- | Specifies the private connection provisioning failure reason.
+privateConnectionProvisioningState_failureMessage :: Lens.Lens' PrivateConnectionProvisioningState (Prelude.Maybe Prelude.Text)
+privateConnectionProvisioningState_failureMessage = Lens.lens (\PrivateConnectionProvisioningState' {failureMessage} -> failureMessage) (\s@PrivateConnectionProvisioningState' {} a -> s {failureMessage = a} :: PrivateConnectionProvisioningState)
+
+-- | Specifies the private connection provisioning status.
+privateConnectionProvisioningState_status :: Lens.Lens' PrivateConnectionProvisioningState (Prelude.Maybe PrivateConnectionProvisioningStatus)
+privateConnectionProvisioningState_status = Lens.lens (\PrivateConnectionProvisioningState' {status} -> status) (\s@PrivateConnectionProvisioningState' {} a -> s {status = a} :: PrivateConnectionProvisioningState)
+
+instance
+  Data.FromJSON
+    PrivateConnectionProvisioningState
+  where
+  parseJSON =
+    Data.withObject
+      "PrivateConnectionProvisioningState"
+      ( \x ->
+          PrivateConnectionProvisioningState'
+            Prelude.<$> (x Data..:? "failureCause")
+            Prelude.<*> (x Data..:? "failureMessage")
+            Prelude.<*> (x Data..:? "status")
+      )
+
+instance
+  Prelude.Hashable
+    PrivateConnectionProvisioningState
+  where
+  hashWithSalt
+    _salt
+    PrivateConnectionProvisioningState' {..} =
+      _salt
+        `Prelude.hashWithSalt` failureCause
+        `Prelude.hashWithSalt` failureMessage
+        `Prelude.hashWithSalt` status
+
+instance
+  Prelude.NFData
+    PrivateConnectionProvisioningState
+  where
+  rnf PrivateConnectionProvisioningState' {..} =
+    Prelude.rnf failureCause
+      `Prelude.seq` Prelude.rnf failureMessage
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningStatus.hs b/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/PrivateConnectionProvisioningStatus.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.AppFlow.Types.PrivateConnectionProvisioningStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.PrivateConnectionProvisioningStatus
+  ( PrivateConnectionProvisioningStatus
+      ( ..,
+        PrivateConnectionProvisioningStatus_CREATED,
+        PrivateConnectionProvisioningStatus_FAILED,
+        PrivateConnectionProvisioningStatus_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PrivateConnectionProvisioningStatus = PrivateConnectionProvisioningStatus'
+  { fromPrivateConnectionProvisioningStatus ::
+      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 PrivateConnectionProvisioningStatus_CREATED :: PrivateConnectionProvisioningStatus
+pattern PrivateConnectionProvisioningStatus_CREATED = PrivateConnectionProvisioningStatus' "CREATED"
+
+pattern PrivateConnectionProvisioningStatus_FAILED :: PrivateConnectionProvisioningStatus
+pattern PrivateConnectionProvisioningStatus_FAILED = PrivateConnectionProvisioningStatus' "FAILED"
+
+pattern PrivateConnectionProvisioningStatus_PENDING :: PrivateConnectionProvisioningStatus
+pattern PrivateConnectionProvisioningStatus_PENDING = PrivateConnectionProvisioningStatus' "PENDING"
+
+{-# COMPLETE
+  PrivateConnectionProvisioningStatus_CREATED,
+  PrivateConnectionProvisioningStatus_FAILED,
+  PrivateConnectionProvisioningStatus_PENDING,
+  PrivateConnectionProvisioningStatus'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/Range.hs b/gen/Amazonka/AppFlow/Types/Range.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/Range.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.Range
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.Range where
+
+import qualified 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 range of values that the property supports.
+--
+-- /See:/ 'newRange' smart constructor.
+data Range = Range'
+  { -- | Maximum value supported by the field.
+    maximum :: Prelude.Maybe Prelude.Double,
+    -- | Minimum value supported by the field.
+    minimum :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Range' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maximum', 'range_maximum' - Maximum value supported by the field.
+--
+-- 'minimum', 'range_minimum' - Minimum value supported by the field.
+newRange ::
+  Range
+newRange =
+  Range'
+    { maximum = Prelude.Nothing,
+      minimum = Prelude.Nothing
+    }
+
+-- | Maximum value supported by the field.
+range_maximum :: Lens.Lens' Range (Prelude.Maybe Prelude.Double)
+range_maximum = Lens.lens (\Range' {maximum} -> maximum) (\s@Range' {} a -> s {maximum = a} :: Range)
+
+-- | Minimum value supported by the field.
+range_minimum :: Lens.Lens' Range (Prelude.Maybe Prelude.Double)
+range_minimum = Lens.lens (\Range' {minimum} -> minimum) (\s@Range' {} a -> s {minimum = a} :: Range)
+
+instance Data.FromJSON Range where
+  parseJSON =
+    Data.withObject
+      "Range"
+      ( \x ->
+          Range'
+            Prelude.<$> (x Data..:? "maximum")
+            Prelude.<*> (x Data..:? "minimum")
+      )
+
+instance Prelude.Hashable Range where
+  hashWithSalt _salt Range' {..} =
+    _salt
+      `Prelude.hashWithSalt` maximum
+      `Prelude.hashWithSalt` minimum
+
+instance Prelude.NFData Range where
+  rnf Range' {..} =
+    Prelude.rnf maximum
+      `Prelude.seq` Prelude.rnf minimum
diff --git a/gen/Amazonka/AppFlow/Types/RedshiftConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/RedshiftConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/RedshiftConnectorProfileCredentials.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.AppFlow.Types.RedshiftConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.RedshiftConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required when using Amazon
+-- Redshift.
+--
+-- /See:/ 'newRedshiftConnectorProfileCredentials' smart constructor.
+data RedshiftConnectorProfileCredentials = RedshiftConnectorProfileCredentials'
+  { -- | The password that corresponds to the user name.
+    password :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the user.
+    username :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedshiftConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'password', 'redshiftConnectorProfileCredentials_password' - The password that corresponds to the user name.
+--
+-- 'username', 'redshiftConnectorProfileCredentials_username' - The name of the user.
+newRedshiftConnectorProfileCredentials ::
+  RedshiftConnectorProfileCredentials
+newRedshiftConnectorProfileCredentials =
+  RedshiftConnectorProfileCredentials'
+    { password =
+        Prelude.Nothing,
+      username = Prelude.Nothing
+    }
+
+-- | The password that corresponds to the user name.
+redshiftConnectorProfileCredentials_password :: Lens.Lens' RedshiftConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileCredentials_password = Lens.lens (\RedshiftConnectorProfileCredentials' {password} -> password) (\s@RedshiftConnectorProfileCredentials' {} a -> s {password = a} :: RedshiftConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the user.
+redshiftConnectorProfileCredentials_username :: Lens.Lens' RedshiftConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileCredentials_username = Lens.lens (\RedshiftConnectorProfileCredentials' {username} -> username) (\s@RedshiftConnectorProfileCredentials' {} a -> s {username = a} :: RedshiftConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    RedshiftConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    RedshiftConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` password
+        `Prelude.hashWithSalt` username
+
+instance
+  Prelude.NFData
+    RedshiftConnectorProfileCredentials
+  where
+  rnf RedshiftConnectorProfileCredentials' {..} =
+    Prelude.rnf password
+      `Prelude.seq` Prelude.rnf username
+
+instance
+  Data.ToJSON
+    RedshiftConnectorProfileCredentials
+  where
+  toJSON RedshiftConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("password" Data..=) Prelude.<$> password,
+            ("username" Data..=) Prelude.<$> username
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/RedshiftConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/RedshiftConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/RedshiftConnectorProfileProperties.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.RedshiftConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.RedshiftConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties when using Amazon Redshift.
+--
+-- /See:/ 'newRedshiftConnectorProfileProperties' smart constructor.
+data RedshiftConnectorProfileProperties = RedshiftConnectorProfileProperties'
+  { -- | The object key for the destination bucket in which Amazon AppFlow places
+    -- the files.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The unique ID that\'s assigned to an Amazon Redshift cluster.
+    clusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an IAM role that permits Amazon
+    -- AppFlow to access your Amazon Redshift database through the Data API.
+    -- For more information, and for the polices that you attach to this role,
+    -- see
+    -- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_service-role-policies.html#access-redshift Allow Amazon AppFlow to access Amazon Redshift databases with the Data API>.
+    dataApiRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of an Amazon Redshift database.
+    databaseName :: Prelude.Maybe Prelude.Text,
+    -- | The JDBC URL of the Amazon Redshift cluster.
+    databaseUrl :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the connector profile defines a connection to an
+    -- Amazon Redshift Serverless data warehouse.
+    isRedshiftServerless :: Prelude.Maybe Prelude.Bool,
+    -- | The name of an Amazon Redshift workgroup.
+    workgroupName :: Prelude.Maybe Prelude.Text,
+    -- | A name for the associated Amazon S3 bucket.
+    bucketName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of IAM role that grants Amazon Redshift
+    -- read-only access to Amazon S3. For more information, and for the polices
+    -- that you attach to this role, see
+    -- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_service-role-policies.html#redshift-access-s3 Allow Amazon Redshift to access your Amazon AppFlow data in Amazon S3>.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedshiftConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketPrefix', 'redshiftConnectorProfileProperties_bucketPrefix' - The object key for the destination bucket in which Amazon AppFlow places
+-- the files.
+--
+-- 'clusterIdentifier', 'redshiftConnectorProfileProperties_clusterIdentifier' - The unique ID that\'s assigned to an Amazon Redshift cluster.
+--
+-- 'dataApiRoleArn', 'redshiftConnectorProfileProperties_dataApiRoleArn' - The Amazon Resource Name (ARN) of an IAM role that permits Amazon
+-- AppFlow to access your Amazon Redshift database through the Data API.
+-- For more information, and for the polices that you attach to this role,
+-- see
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_service-role-policies.html#access-redshift Allow Amazon AppFlow to access Amazon Redshift databases with the Data API>.
+--
+-- 'databaseName', 'redshiftConnectorProfileProperties_databaseName' - The name of an Amazon Redshift database.
+--
+-- 'databaseUrl', 'redshiftConnectorProfileProperties_databaseUrl' - The JDBC URL of the Amazon Redshift cluster.
+--
+-- 'isRedshiftServerless', 'redshiftConnectorProfileProperties_isRedshiftServerless' - Indicates whether the connector profile defines a connection to an
+-- Amazon Redshift Serverless data warehouse.
+--
+-- 'workgroupName', 'redshiftConnectorProfileProperties_workgroupName' - The name of an Amazon Redshift workgroup.
+--
+-- 'bucketName', 'redshiftConnectorProfileProperties_bucketName' - A name for the associated Amazon S3 bucket.
+--
+-- 'roleArn', 'redshiftConnectorProfileProperties_roleArn' - The Amazon Resource Name (ARN) of IAM role that grants Amazon Redshift
+-- read-only access to Amazon S3. For more information, and for the polices
+-- that you attach to this role, see
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_service-role-policies.html#redshift-access-s3 Allow Amazon Redshift to access your Amazon AppFlow data in Amazon S3>.
+newRedshiftConnectorProfileProperties ::
+  -- | 'bucketName'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  RedshiftConnectorProfileProperties
+newRedshiftConnectorProfileProperties
+  pBucketName_
+  pRoleArn_ =
+    RedshiftConnectorProfileProperties'
+      { bucketPrefix =
+          Prelude.Nothing,
+        clusterIdentifier = Prelude.Nothing,
+        dataApiRoleArn = Prelude.Nothing,
+        databaseName = Prelude.Nothing,
+        databaseUrl = Prelude.Nothing,
+        isRedshiftServerless = Prelude.Nothing,
+        workgroupName = Prelude.Nothing,
+        bucketName = pBucketName_,
+        roleArn = pRoleArn_
+      }
+
+-- | The object key for the destination bucket in which Amazon AppFlow places
+-- the files.
+redshiftConnectorProfileProperties_bucketPrefix :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileProperties_bucketPrefix = Lens.lens (\RedshiftConnectorProfileProperties' {bucketPrefix} -> bucketPrefix) (\s@RedshiftConnectorProfileProperties' {} a -> s {bucketPrefix = a} :: RedshiftConnectorProfileProperties)
+
+-- | The unique ID that\'s assigned to an Amazon Redshift cluster.
+redshiftConnectorProfileProperties_clusterIdentifier :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileProperties_clusterIdentifier = Lens.lens (\RedshiftConnectorProfileProperties' {clusterIdentifier} -> clusterIdentifier) (\s@RedshiftConnectorProfileProperties' {} a -> s {clusterIdentifier = a} :: RedshiftConnectorProfileProperties)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that permits Amazon
+-- AppFlow to access your Amazon Redshift database through the Data API.
+-- For more information, and for the polices that you attach to this role,
+-- see
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_service-role-policies.html#access-redshift Allow Amazon AppFlow to access Amazon Redshift databases with the Data API>.
+redshiftConnectorProfileProperties_dataApiRoleArn :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileProperties_dataApiRoleArn = Lens.lens (\RedshiftConnectorProfileProperties' {dataApiRoleArn} -> dataApiRoleArn) (\s@RedshiftConnectorProfileProperties' {} a -> s {dataApiRoleArn = a} :: RedshiftConnectorProfileProperties)
+
+-- | The name of an Amazon Redshift database.
+redshiftConnectorProfileProperties_databaseName :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileProperties_databaseName = Lens.lens (\RedshiftConnectorProfileProperties' {databaseName} -> databaseName) (\s@RedshiftConnectorProfileProperties' {} a -> s {databaseName = a} :: RedshiftConnectorProfileProperties)
+
+-- | The JDBC URL of the Amazon Redshift cluster.
+redshiftConnectorProfileProperties_databaseUrl :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileProperties_databaseUrl = Lens.lens (\RedshiftConnectorProfileProperties' {databaseUrl} -> databaseUrl) (\s@RedshiftConnectorProfileProperties' {} a -> s {databaseUrl = a} :: RedshiftConnectorProfileProperties)
+
+-- | Indicates whether the connector profile defines a connection to an
+-- Amazon Redshift Serverless data warehouse.
+redshiftConnectorProfileProperties_isRedshiftServerless :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Bool)
+redshiftConnectorProfileProperties_isRedshiftServerless = Lens.lens (\RedshiftConnectorProfileProperties' {isRedshiftServerless} -> isRedshiftServerless) (\s@RedshiftConnectorProfileProperties' {} a -> s {isRedshiftServerless = a} :: RedshiftConnectorProfileProperties)
+
+-- | The name of an Amazon Redshift workgroup.
+redshiftConnectorProfileProperties_workgroupName :: Lens.Lens' RedshiftConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+redshiftConnectorProfileProperties_workgroupName = Lens.lens (\RedshiftConnectorProfileProperties' {workgroupName} -> workgroupName) (\s@RedshiftConnectorProfileProperties' {} a -> s {workgroupName = a} :: RedshiftConnectorProfileProperties)
+
+-- | A name for the associated Amazon S3 bucket.
+redshiftConnectorProfileProperties_bucketName :: Lens.Lens' RedshiftConnectorProfileProperties Prelude.Text
+redshiftConnectorProfileProperties_bucketName = Lens.lens (\RedshiftConnectorProfileProperties' {bucketName} -> bucketName) (\s@RedshiftConnectorProfileProperties' {} a -> s {bucketName = a} :: RedshiftConnectorProfileProperties)
+
+-- | The Amazon Resource Name (ARN) of IAM role that grants Amazon Redshift
+-- read-only access to Amazon S3. For more information, and for the polices
+-- that you attach to this role, see
+-- <https://docs.aws.amazon.com/appflow/latest/userguide/security_iam_service-role-policies.html#redshift-access-s3 Allow Amazon Redshift to access your Amazon AppFlow data in Amazon S3>.
+redshiftConnectorProfileProperties_roleArn :: Lens.Lens' RedshiftConnectorProfileProperties Prelude.Text
+redshiftConnectorProfileProperties_roleArn = Lens.lens (\RedshiftConnectorProfileProperties' {roleArn} -> roleArn) (\s@RedshiftConnectorProfileProperties' {} a -> s {roleArn = a} :: RedshiftConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    RedshiftConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "RedshiftConnectorProfileProperties"
+      ( \x ->
+          RedshiftConnectorProfileProperties'
+            Prelude.<$> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "clusterIdentifier")
+            Prelude.<*> (x Data..:? "dataApiRoleArn")
+            Prelude.<*> (x Data..:? "databaseName")
+            Prelude.<*> (x Data..:? "databaseUrl")
+            Prelude.<*> (x Data..:? "isRedshiftServerless")
+            Prelude.<*> (x Data..:? "workgroupName")
+            Prelude.<*> (x Data..: "bucketName")
+            Prelude.<*> (x Data..: "roleArn")
+      )
+
+instance
+  Prelude.Hashable
+    RedshiftConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    RedshiftConnectorProfileProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` bucketPrefix
+        `Prelude.hashWithSalt` clusterIdentifier
+        `Prelude.hashWithSalt` dataApiRoleArn
+        `Prelude.hashWithSalt` databaseName
+        `Prelude.hashWithSalt` databaseUrl
+        `Prelude.hashWithSalt` isRedshiftServerless
+        `Prelude.hashWithSalt` workgroupName
+        `Prelude.hashWithSalt` bucketName
+        `Prelude.hashWithSalt` roleArn
+
+instance
+  Prelude.NFData
+    RedshiftConnectorProfileProperties
+  where
+  rnf RedshiftConnectorProfileProperties' {..} =
+    Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf clusterIdentifier
+      `Prelude.seq` Prelude.rnf dataApiRoleArn
+      `Prelude.seq` Prelude.rnf databaseName
+      `Prelude.seq` Prelude.rnf databaseUrl
+      `Prelude.seq` Prelude.rnf isRedshiftServerless
+      `Prelude.seq` Prelude.rnf workgroupName
+      `Prelude.seq` Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance
+  Data.ToJSON
+    RedshiftConnectorProfileProperties
+  where
+  toJSON RedshiftConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("clusterIdentifier" Data..=)
+              Prelude.<$> clusterIdentifier,
+            ("dataApiRoleArn" Data..=)
+              Prelude.<$> dataApiRoleArn,
+            ("databaseName" Data..=) Prelude.<$> databaseName,
+            ("databaseUrl" Data..=) Prelude.<$> databaseUrl,
+            ("isRedshiftServerless" Data..=)
+              Prelude.<$> isRedshiftServerless,
+            ("workgroupName" Data..=) Prelude.<$> workgroupName,
+            Prelude.Just ("bucketName" Data..= bucketName),
+            Prelude.Just ("roleArn" Data..= roleArn)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/RedshiftDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/RedshiftDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/RedshiftDestinationProperties.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.RedshiftDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.RedshiftDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import qualified 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 properties that are applied when Amazon Redshift is being used as a
+-- destination.
+--
+-- /See:/ 'newRedshiftDestinationProperties' smart constructor.
+data RedshiftDestinationProperties = RedshiftDestinationProperties'
+  { -- | The object key for the bucket in which Amazon AppFlow places the
+    -- destination files.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The settings that determine how Amazon AppFlow handles an error when
+    -- placing data in the Amazon Redshift destination. For example, this
+    -- setting would determine if the flow should fail after one insertion
+    -- error, or continue and attempt to insert every record regardless of the
+    -- initial failure. @ErrorHandlingConfig@ is a part of the destination
+    -- connector details.
+    errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The object specified in the Amazon Redshift flow destination.
+    object' :: Prelude.Text,
+    -- | The intermediate bucket that Amazon AppFlow uses when moving data into
+    -- Amazon Redshift.
+    intermediateBucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedshiftDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketPrefix', 'redshiftDestinationProperties_bucketPrefix' - The object key for the bucket in which Amazon AppFlow places the
+-- destination files.
+--
+-- 'errorHandlingConfig', 'redshiftDestinationProperties_errorHandlingConfig' - The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the Amazon Redshift destination. For example, this
+-- setting would determine if the flow should fail after one insertion
+-- error, or continue and attempt to insert every record regardless of the
+-- initial failure. @ErrorHandlingConfig@ is a part of the destination
+-- connector details.
+--
+-- 'object'', 'redshiftDestinationProperties_object' - The object specified in the Amazon Redshift flow destination.
+--
+-- 'intermediateBucketName', 'redshiftDestinationProperties_intermediateBucketName' - The intermediate bucket that Amazon AppFlow uses when moving data into
+-- Amazon Redshift.
+newRedshiftDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  -- | 'intermediateBucketName'
+  Prelude.Text ->
+  RedshiftDestinationProperties
+newRedshiftDestinationProperties
+  pObject_
+  pIntermediateBucketName_ =
+    RedshiftDestinationProperties'
+      { bucketPrefix =
+          Prelude.Nothing,
+        errorHandlingConfig = Prelude.Nothing,
+        object' = pObject_,
+        intermediateBucketName =
+          pIntermediateBucketName_
+      }
+
+-- | The object key for the bucket in which Amazon AppFlow places the
+-- destination files.
+redshiftDestinationProperties_bucketPrefix :: Lens.Lens' RedshiftDestinationProperties (Prelude.Maybe Prelude.Text)
+redshiftDestinationProperties_bucketPrefix = Lens.lens (\RedshiftDestinationProperties' {bucketPrefix} -> bucketPrefix) (\s@RedshiftDestinationProperties' {} a -> s {bucketPrefix = a} :: RedshiftDestinationProperties)
+
+-- | The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the Amazon Redshift destination. For example, this
+-- setting would determine if the flow should fail after one insertion
+-- error, or continue and attempt to insert every record regardless of the
+-- initial failure. @ErrorHandlingConfig@ is a part of the destination
+-- connector details.
+redshiftDestinationProperties_errorHandlingConfig :: Lens.Lens' RedshiftDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+redshiftDestinationProperties_errorHandlingConfig = Lens.lens (\RedshiftDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@RedshiftDestinationProperties' {} a -> s {errorHandlingConfig = a} :: RedshiftDestinationProperties)
+
+-- | The object specified in the Amazon Redshift flow destination.
+redshiftDestinationProperties_object :: Lens.Lens' RedshiftDestinationProperties Prelude.Text
+redshiftDestinationProperties_object = Lens.lens (\RedshiftDestinationProperties' {object'} -> object') (\s@RedshiftDestinationProperties' {} a -> s {object' = a} :: RedshiftDestinationProperties)
+
+-- | The intermediate bucket that Amazon AppFlow uses when moving data into
+-- Amazon Redshift.
+redshiftDestinationProperties_intermediateBucketName :: Lens.Lens' RedshiftDestinationProperties Prelude.Text
+redshiftDestinationProperties_intermediateBucketName = Lens.lens (\RedshiftDestinationProperties' {intermediateBucketName} -> intermediateBucketName) (\s@RedshiftDestinationProperties' {} a -> s {intermediateBucketName = a} :: RedshiftDestinationProperties)
+
+instance Data.FromJSON RedshiftDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "RedshiftDestinationProperties"
+      ( \x ->
+          RedshiftDestinationProperties'
+            Prelude.<$> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..: "object")
+            Prelude.<*> (x Data..: "intermediateBucketName")
+      )
+
+instance
+  Prelude.Hashable
+    RedshiftDestinationProperties
+  where
+  hashWithSalt _salt RedshiftDestinationProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketPrefix
+      `Prelude.hashWithSalt` errorHandlingConfig
+      `Prelude.hashWithSalt` object'
+      `Prelude.hashWithSalt` intermediateBucketName
+
+instance Prelude.NFData RedshiftDestinationProperties where
+  rnf RedshiftDestinationProperties' {..} =
+    Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf object'
+      `Prelude.seq` Prelude.rnf intermediateBucketName
+
+instance Data.ToJSON RedshiftDestinationProperties where
+  toJSON RedshiftDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            Prelude.Just ("object" Data..= object'),
+            Prelude.Just
+              ( "intermediateBucketName"
+                  Data..= intermediateBucketName
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/RedshiftMetadata.hs b/gen/Amazonka/AppFlow/Types/RedshiftMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/RedshiftMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.RedshiftMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.RedshiftMetadata where
+
+import qualified 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 connector metadata specific to Amazon Redshift.
+--
+-- /See:/ 'newRedshiftMetadata' smart constructor.
+data RedshiftMetadata = RedshiftMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedshiftMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newRedshiftMetadata ::
+  RedshiftMetadata
+newRedshiftMetadata = RedshiftMetadata'
+
+instance Data.FromJSON RedshiftMetadata where
+  parseJSON =
+    Data.withObject
+      "RedshiftMetadata"
+      (\x -> Prelude.pure RedshiftMetadata')
+
+instance Prelude.Hashable RedshiftMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData RedshiftMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/RegistrationOutput.hs b/gen/Amazonka/AppFlow/Types/RegistrationOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/RegistrationOutput.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.RegistrationOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.RegistrationOutput where
+
+import Amazonka.AppFlow.Types.ExecutionStatus
+import qualified 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 the status of an attempt from Amazon AppFlow to register a
+-- resource.
+--
+-- When you run a flow that you\'ve configured to use a metadata catalog,
+-- Amazon AppFlow registers a metadata table and data partitions with that
+-- catalog. This operation provides the status of that registration
+-- attempt. The operation also indicates how many related resources Amazon
+-- AppFlow created or updated.
+--
+-- /See:/ 'newRegistrationOutput' smart constructor.
+data RegistrationOutput = RegistrationOutput'
+  { -- | Explains the status of the registration attempt from Amazon AppFlow. If
+    -- the attempt fails, the message explains why.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the number of resources that Amazon AppFlow created or
+    -- updated. Possible resources include metadata tables and data partitions.
+    result :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the registration attempt from Amazon AppFlow.
+    status :: Prelude.Maybe ExecutionStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegistrationOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'registrationOutput_message' - Explains the status of the registration attempt from Amazon AppFlow. If
+-- the attempt fails, the message explains why.
+--
+-- 'result', 'registrationOutput_result' - Indicates the number of resources that Amazon AppFlow created or
+-- updated. Possible resources include metadata tables and data partitions.
+--
+-- 'status', 'registrationOutput_status' - Indicates the status of the registration attempt from Amazon AppFlow.
+newRegistrationOutput ::
+  RegistrationOutput
+newRegistrationOutput =
+  RegistrationOutput'
+    { message = Prelude.Nothing,
+      result = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Explains the status of the registration attempt from Amazon AppFlow. If
+-- the attempt fails, the message explains why.
+registrationOutput_message :: Lens.Lens' RegistrationOutput (Prelude.Maybe Prelude.Text)
+registrationOutput_message = Lens.lens (\RegistrationOutput' {message} -> message) (\s@RegistrationOutput' {} a -> s {message = a} :: RegistrationOutput)
+
+-- | Indicates the number of resources that Amazon AppFlow created or
+-- updated. Possible resources include metadata tables and data partitions.
+registrationOutput_result :: Lens.Lens' RegistrationOutput (Prelude.Maybe Prelude.Text)
+registrationOutput_result = Lens.lens (\RegistrationOutput' {result} -> result) (\s@RegistrationOutput' {} a -> s {result = a} :: RegistrationOutput)
+
+-- | Indicates the status of the registration attempt from Amazon AppFlow.
+registrationOutput_status :: Lens.Lens' RegistrationOutput (Prelude.Maybe ExecutionStatus)
+registrationOutput_status = Lens.lens (\RegistrationOutput' {status} -> status) (\s@RegistrationOutput' {} a -> s {status = a} :: RegistrationOutput)
+
+instance Data.FromJSON RegistrationOutput where
+  parseJSON =
+    Data.withObject
+      "RegistrationOutput"
+      ( \x ->
+          RegistrationOutput'
+            Prelude.<$> (x Data..:? "message")
+            Prelude.<*> (x Data..:? "result")
+            Prelude.<*> (x Data..:? "status")
+      )
+
+instance Prelude.Hashable RegistrationOutput where
+  hashWithSalt _salt RegistrationOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` result
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData RegistrationOutput where
+  rnf RegistrationOutput' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf result
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/AppFlow/Types/S3ConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/S3ConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3ConnectorOperator.hs
@@ -0,0 +1,161 @@
+{-# 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.AppFlow.Types.S3ConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3ConnectorOperator
+  ( S3ConnectorOperator
+      ( ..,
+        S3ConnectorOperator_ADDITION,
+        S3ConnectorOperator_BETWEEN,
+        S3ConnectorOperator_DIVISION,
+        S3ConnectorOperator_EQUAL_TO,
+        S3ConnectorOperator_GREATER_THAN,
+        S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+        S3ConnectorOperator_LESS_THAN,
+        S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+        S3ConnectorOperator_MASK_ALL,
+        S3ConnectorOperator_MASK_FIRST_N,
+        S3ConnectorOperator_MASK_LAST_N,
+        S3ConnectorOperator_MULTIPLICATION,
+        S3ConnectorOperator_NOT_EQUAL_TO,
+        S3ConnectorOperator_NO_OP,
+        S3ConnectorOperator_PROJECTION,
+        S3ConnectorOperator_SUBTRACTION,
+        S3ConnectorOperator_VALIDATE_NON_NEGATIVE,
+        S3ConnectorOperator_VALIDATE_NON_NULL,
+        S3ConnectorOperator_VALIDATE_NON_ZERO,
+        S3ConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype S3ConnectorOperator = S3ConnectorOperator'
+  { fromS3ConnectorOperator ::
+      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 S3ConnectorOperator_ADDITION :: S3ConnectorOperator
+pattern S3ConnectorOperator_ADDITION = S3ConnectorOperator' "ADDITION"
+
+pattern S3ConnectorOperator_BETWEEN :: S3ConnectorOperator
+pattern S3ConnectorOperator_BETWEEN = S3ConnectorOperator' "BETWEEN"
+
+pattern S3ConnectorOperator_DIVISION :: S3ConnectorOperator
+pattern S3ConnectorOperator_DIVISION = S3ConnectorOperator' "DIVISION"
+
+pattern S3ConnectorOperator_EQUAL_TO :: S3ConnectorOperator
+pattern S3ConnectorOperator_EQUAL_TO = S3ConnectorOperator' "EQUAL_TO"
+
+pattern S3ConnectorOperator_GREATER_THAN :: S3ConnectorOperator
+pattern S3ConnectorOperator_GREATER_THAN = S3ConnectorOperator' "GREATER_THAN"
+
+pattern S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: S3ConnectorOperator
+pattern S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO = S3ConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern S3ConnectorOperator_LESS_THAN :: S3ConnectorOperator
+pattern S3ConnectorOperator_LESS_THAN = S3ConnectorOperator' "LESS_THAN"
+
+pattern S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO :: S3ConnectorOperator
+pattern S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO = S3ConnectorOperator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern S3ConnectorOperator_MASK_ALL :: S3ConnectorOperator
+pattern S3ConnectorOperator_MASK_ALL = S3ConnectorOperator' "MASK_ALL"
+
+pattern S3ConnectorOperator_MASK_FIRST_N :: S3ConnectorOperator
+pattern S3ConnectorOperator_MASK_FIRST_N = S3ConnectorOperator' "MASK_FIRST_N"
+
+pattern S3ConnectorOperator_MASK_LAST_N :: S3ConnectorOperator
+pattern S3ConnectorOperator_MASK_LAST_N = S3ConnectorOperator' "MASK_LAST_N"
+
+pattern S3ConnectorOperator_MULTIPLICATION :: S3ConnectorOperator
+pattern S3ConnectorOperator_MULTIPLICATION = S3ConnectorOperator' "MULTIPLICATION"
+
+pattern S3ConnectorOperator_NOT_EQUAL_TO :: S3ConnectorOperator
+pattern S3ConnectorOperator_NOT_EQUAL_TO = S3ConnectorOperator' "NOT_EQUAL_TO"
+
+pattern S3ConnectorOperator_NO_OP :: S3ConnectorOperator
+pattern S3ConnectorOperator_NO_OP = S3ConnectorOperator' "NO_OP"
+
+pattern S3ConnectorOperator_PROJECTION :: S3ConnectorOperator
+pattern S3ConnectorOperator_PROJECTION = S3ConnectorOperator' "PROJECTION"
+
+pattern S3ConnectorOperator_SUBTRACTION :: S3ConnectorOperator
+pattern S3ConnectorOperator_SUBTRACTION = S3ConnectorOperator' "SUBTRACTION"
+
+pattern S3ConnectorOperator_VALIDATE_NON_NEGATIVE :: S3ConnectorOperator
+pattern S3ConnectorOperator_VALIDATE_NON_NEGATIVE = S3ConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern S3ConnectorOperator_VALIDATE_NON_NULL :: S3ConnectorOperator
+pattern S3ConnectorOperator_VALIDATE_NON_NULL = S3ConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern S3ConnectorOperator_VALIDATE_NON_ZERO :: S3ConnectorOperator
+pattern S3ConnectorOperator_VALIDATE_NON_ZERO = S3ConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern S3ConnectorOperator_VALIDATE_NUMERIC :: S3ConnectorOperator
+pattern S3ConnectorOperator_VALIDATE_NUMERIC = S3ConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  S3ConnectorOperator_ADDITION,
+  S3ConnectorOperator_BETWEEN,
+  S3ConnectorOperator_DIVISION,
+  S3ConnectorOperator_EQUAL_TO,
+  S3ConnectorOperator_GREATER_THAN,
+  S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+  S3ConnectorOperator_LESS_THAN,
+  S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+  S3ConnectorOperator_MASK_ALL,
+  S3ConnectorOperator_MASK_FIRST_N,
+  S3ConnectorOperator_MASK_LAST_N,
+  S3ConnectorOperator_MULTIPLICATION,
+  S3ConnectorOperator_NOT_EQUAL_TO,
+  S3ConnectorOperator_NO_OP,
+  S3ConnectorOperator_PROJECTION,
+  S3ConnectorOperator_SUBTRACTION,
+  S3ConnectorOperator_VALIDATE_NON_NEGATIVE,
+  S3ConnectorOperator_VALIDATE_NON_NULL,
+  S3ConnectorOperator_VALIDATE_NON_ZERO,
+  S3ConnectorOperator_VALIDATE_NUMERIC,
+  S3ConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/S3DestinationProperties.hs b/gen/Amazonka/AppFlow/Types/S3DestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3DestinationProperties.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.S3DestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3DestinationProperties where
+
+import Amazonka.AppFlow.Types.S3OutputFormatConfig
+import qualified 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 properties that are applied when Amazon S3 is used as a destination.
+--
+-- /See:/ 'newS3DestinationProperties' smart constructor.
+data S3DestinationProperties = S3DestinationProperties'
+  { -- | The object key for the destination bucket in which Amazon AppFlow places
+    -- the files.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    s3OutputFormatConfig :: Prelude.Maybe S3OutputFormatConfig,
+    -- | The Amazon S3 bucket name in which Amazon AppFlow places the transferred
+    -- data.
+    bucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketPrefix', 's3DestinationProperties_bucketPrefix' - The object key for the destination bucket in which Amazon AppFlow places
+-- the files.
+--
+-- 's3OutputFormatConfig', 's3DestinationProperties_s3OutputFormatConfig' - Undocumented member.
+--
+-- 'bucketName', 's3DestinationProperties_bucketName' - The Amazon S3 bucket name in which Amazon AppFlow places the transferred
+-- data.
+newS3DestinationProperties ::
+  -- | 'bucketName'
+  Prelude.Text ->
+  S3DestinationProperties
+newS3DestinationProperties pBucketName_ =
+  S3DestinationProperties'
+    { bucketPrefix =
+        Prelude.Nothing,
+      s3OutputFormatConfig = Prelude.Nothing,
+      bucketName = pBucketName_
+    }
+
+-- | The object key for the destination bucket in which Amazon AppFlow places
+-- the files.
+s3DestinationProperties_bucketPrefix :: Lens.Lens' S3DestinationProperties (Prelude.Maybe Prelude.Text)
+s3DestinationProperties_bucketPrefix = Lens.lens (\S3DestinationProperties' {bucketPrefix} -> bucketPrefix) (\s@S3DestinationProperties' {} a -> s {bucketPrefix = a} :: S3DestinationProperties)
+
+-- | Undocumented member.
+s3DestinationProperties_s3OutputFormatConfig :: Lens.Lens' S3DestinationProperties (Prelude.Maybe S3OutputFormatConfig)
+s3DestinationProperties_s3OutputFormatConfig = Lens.lens (\S3DestinationProperties' {s3OutputFormatConfig} -> s3OutputFormatConfig) (\s@S3DestinationProperties' {} a -> s {s3OutputFormatConfig = a} :: S3DestinationProperties)
+
+-- | The Amazon S3 bucket name in which Amazon AppFlow places the transferred
+-- data.
+s3DestinationProperties_bucketName :: Lens.Lens' S3DestinationProperties Prelude.Text
+s3DestinationProperties_bucketName = Lens.lens (\S3DestinationProperties' {bucketName} -> bucketName) (\s@S3DestinationProperties' {} a -> s {bucketName = a} :: S3DestinationProperties)
+
+instance Data.FromJSON S3DestinationProperties where
+  parseJSON =
+    Data.withObject
+      "S3DestinationProperties"
+      ( \x ->
+          S3DestinationProperties'
+            Prelude.<$> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "s3OutputFormatConfig")
+            Prelude.<*> (x Data..: "bucketName")
+      )
+
+instance Prelude.Hashable S3DestinationProperties where
+  hashWithSalt _salt S3DestinationProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketPrefix
+      `Prelude.hashWithSalt` s3OutputFormatConfig
+      `Prelude.hashWithSalt` bucketName
+
+instance Prelude.NFData S3DestinationProperties where
+  rnf S3DestinationProperties' {..} =
+    Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf s3OutputFormatConfig
+      `Prelude.seq` Prelude.rnf bucketName
+
+instance Data.ToJSON S3DestinationProperties where
+  toJSON S3DestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("s3OutputFormatConfig" Data..=)
+              Prelude.<$> s3OutputFormatConfig,
+            Prelude.Just ("bucketName" Data..= bucketName)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/S3InputFileType.hs b/gen/Amazonka/AppFlow/Types/S3InputFileType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3InputFileType.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.AppFlow.Types.S3InputFileType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3InputFileType
+  ( S3InputFileType
+      ( ..,
+        S3InputFileType_CSV,
+        S3InputFileType_JSON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype S3InputFileType = S3InputFileType'
+  { fromS3InputFileType ::
+      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 S3InputFileType_CSV :: S3InputFileType
+pattern S3InputFileType_CSV = S3InputFileType' "CSV"
+
+pattern S3InputFileType_JSON :: S3InputFileType
+pattern S3InputFileType_JSON = S3InputFileType' "JSON"
+
+{-# COMPLETE
+  S3InputFileType_CSV,
+  S3InputFileType_JSON,
+  S3InputFileType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/S3InputFormatConfig.hs b/gen/Amazonka/AppFlow/Types/S3InputFormatConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3InputFormatConfig.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.AppFlow.Types.S3InputFormatConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3InputFormatConfig where
+
+import Amazonka.AppFlow.Types.S3InputFileType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you use Amazon S3 as the source, the configuration format that you
+-- provide the flow input data.
+--
+-- /See:/ 'newS3InputFormatConfig' smart constructor.
+data S3InputFormatConfig = S3InputFormatConfig'
+  { -- | The file type that Amazon AppFlow gets from your Amazon S3 bucket.
+    s3InputFileType :: Prelude.Maybe S3InputFileType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3InputFormatConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3InputFileType', 's3InputFormatConfig_s3InputFileType' - The file type that Amazon AppFlow gets from your Amazon S3 bucket.
+newS3InputFormatConfig ::
+  S3InputFormatConfig
+newS3InputFormatConfig =
+  S3InputFormatConfig'
+    { s3InputFileType =
+        Prelude.Nothing
+    }
+
+-- | The file type that Amazon AppFlow gets from your Amazon S3 bucket.
+s3InputFormatConfig_s3InputFileType :: Lens.Lens' S3InputFormatConfig (Prelude.Maybe S3InputFileType)
+s3InputFormatConfig_s3InputFileType = Lens.lens (\S3InputFormatConfig' {s3InputFileType} -> s3InputFileType) (\s@S3InputFormatConfig' {} a -> s {s3InputFileType = a} :: S3InputFormatConfig)
+
+instance Data.FromJSON S3InputFormatConfig where
+  parseJSON =
+    Data.withObject
+      "S3InputFormatConfig"
+      ( \x ->
+          S3InputFormatConfig'
+            Prelude.<$> (x Data..:? "s3InputFileType")
+      )
+
+instance Prelude.Hashable S3InputFormatConfig where
+  hashWithSalt _salt S3InputFormatConfig' {..} =
+    _salt `Prelude.hashWithSalt` s3InputFileType
+
+instance Prelude.NFData S3InputFormatConfig where
+  rnf S3InputFormatConfig' {..} =
+    Prelude.rnf s3InputFileType
+
+instance Data.ToJSON S3InputFormatConfig where
+  toJSON S3InputFormatConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("s3InputFileType" Data..=)
+              Prelude.<$> s3InputFileType
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/S3Metadata.hs b/gen/Amazonka/AppFlow/Types/S3Metadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3Metadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.S3Metadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3Metadata where
+
+import qualified 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 connector metadata specific to Amazon S3.
+--
+-- /See:/ 'newS3Metadata' smart constructor.
+data S3Metadata = S3Metadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Metadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newS3Metadata ::
+  S3Metadata
+newS3Metadata = S3Metadata'
+
+instance Data.FromJSON S3Metadata where
+  parseJSON =
+    Data.withObject
+      "S3Metadata"
+      (\x -> Prelude.pure S3Metadata')
+
+instance Prelude.Hashable S3Metadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData S3Metadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/S3OutputFormatConfig.hs b/gen/Amazonka/AppFlow/Types/S3OutputFormatConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3OutputFormatConfig.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.S3OutputFormatConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3OutputFormatConfig where
+
+import Amazonka.AppFlow.Types.AggregationConfig
+import Amazonka.AppFlow.Types.FileType
+import Amazonka.AppFlow.Types.PrefixConfig
+import qualified 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 determines how Amazon AppFlow should format the
+-- flow output data when Amazon S3 is used as the destination.
+--
+-- /See:/ 'newS3OutputFormatConfig' smart constructor.
+data S3OutputFormatConfig = S3OutputFormatConfig'
+  { aggregationConfig :: Prelude.Maybe AggregationConfig,
+    -- | Indicates the file type that Amazon AppFlow places in the Amazon S3
+    -- bucket.
+    fileType :: Prelude.Maybe FileType,
+    -- | Determines the prefix that Amazon AppFlow applies to the folder name in
+    -- the Amazon S3 bucket. You can name folders according to the flow
+    -- frequency and date.
+    prefixConfig :: Prelude.Maybe PrefixConfig,
+    -- | If your file output format is Parquet, use this parameter to set whether
+    -- Amazon AppFlow preserves the data types in your source data when it
+    -- writes the output to Amazon S3.
+    --
+    -- -   @true@: Amazon AppFlow preserves the data types when it writes to
+    --     Amazon S3. For example, an integer or @1@ in your source data is
+    --     still an integer in your output.
+    --
+    -- -   @false@: Amazon AppFlow converts all of the source data into strings
+    --     when it writes to Amazon S3. For example, an integer of @1@ in your
+    --     source data becomes the string @\"1\"@ in the output.
+    preserveSourceDataTyping :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3OutputFormatConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationConfig', 's3OutputFormatConfig_aggregationConfig' - Undocumented member.
+--
+-- 'fileType', 's3OutputFormatConfig_fileType' - Indicates the file type that Amazon AppFlow places in the Amazon S3
+-- bucket.
+--
+-- 'prefixConfig', 's3OutputFormatConfig_prefixConfig' - Determines the prefix that Amazon AppFlow applies to the folder name in
+-- the Amazon S3 bucket. You can name folders according to the flow
+-- frequency and date.
+--
+-- 'preserveSourceDataTyping', 's3OutputFormatConfig_preserveSourceDataTyping' - If your file output format is Parquet, use this parameter to set whether
+-- Amazon AppFlow preserves the data types in your source data when it
+-- writes the output to Amazon S3.
+--
+-- -   @true@: Amazon AppFlow preserves the data types when it writes to
+--     Amazon S3. For example, an integer or @1@ in your source data is
+--     still an integer in your output.
+--
+-- -   @false@: Amazon AppFlow converts all of the source data into strings
+--     when it writes to Amazon S3. For example, an integer of @1@ in your
+--     source data becomes the string @\"1\"@ in the output.
+newS3OutputFormatConfig ::
+  S3OutputFormatConfig
+newS3OutputFormatConfig =
+  S3OutputFormatConfig'
+    { aggregationConfig =
+        Prelude.Nothing,
+      fileType = Prelude.Nothing,
+      prefixConfig = Prelude.Nothing,
+      preserveSourceDataTyping = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+s3OutputFormatConfig_aggregationConfig :: Lens.Lens' S3OutputFormatConfig (Prelude.Maybe AggregationConfig)
+s3OutputFormatConfig_aggregationConfig = Lens.lens (\S3OutputFormatConfig' {aggregationConfig} -> aggregationConfig) (\s@S3OutputFormatConfig' {} a -> s {aggregationConfig = a} :: S3OutputFormatConfig)
+
+-- | Indicates the file type that Amazon AppFlow places in the Amazon S3
+-- bucket.
+s3OutputFormatConfig_fileType :: Lens.Lens' S3OutputFormatConfig (Prelude.Maybe FileType)
+s3OutputFormatConfig_fileType = Lens.lens (\S3OutputFormatConfig' {fileType} -> fileType) (\s@S3OutputFormatConfig' {} a -> s {fileType = a} :: S3OutputFormatConfig)
+
+-- | Determines the prefix that Amazon AppFlow applies to the folder name in
+-- the Amazon S3 bucket. You can name folders according to the flow
+-- frequency and date.
+s3OutputFormatConfig_prefixConfig :: Lens.Lens' S3OutputFormatConfig (Prelude.Maybe PrefixConfig)
+s3OutputFormatConfig_prefixConfig = Lens.lens (\S3OutputFormatConfig' {prefixConfig} -> prefixConfig) (\s@S3OutputFormatConfig' {} a -> s {prefixConfig = a} :: S3OutputFormatConfig)
+
+-- | If your file output format is Parquet, use this parameter to set whether
+-- Amazon AppFlow preserves the data types in your source data when it
+-- writes the output to Amazon S3.
+--
+-- -   @true@: Amazon AppFlow preserves the data types when it writes to
+--     Amazon S3. For example, an integer or @1@ in your source data is
+--     still an integer in your output.
+--
+-- -   @false@: Amazon AppFlow converts all of the source data into strings
+--     when it writes to Amazon S3. For example, an integer of @1@ in your
+--     source data becomes the string @\"1\"@ in the output.
+s3OutputFormatConfig_preserveSourceDataTyping :: Lens.Lens' S3OutputFormatConfig (Prelude.Maybe Prelude.Bool)
+s3OutputFormatConfig_preserveSourceDataTyping = Lens.lens (\S3OutputFormatConfig' {preserveSourceDataTyping} -> preserveSourceDataTyping) (\s@S3OutputFormatConfig' {} a -> s {preserveSourceDataTyping = a} :: S3OutputFormatConfig)
+
+instance Data.FromJSON S3OutputFormatConfig where
+  parseJSON =
+    Data.withObject
+      "S3OutputFormatConfig"
+      ( \x ->
+          S3OutputFormatConfig'
+            Prelude.<$> (x Data..:? "aggregationConfig")
+            Prelude.<*> (x Data..:? "fileType")
+            Prelude.<*> (x Data..:? "prefixConfig")
+            Prelude.<*> (x Data..:? "preserveSourceDataTyping")
+      )
+
+instance Prelude.Hashable S3OutputFormatConfig where
+  hashWithSalt _salt S3OutputFormatConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationConfig
+      `Prelude.hashWithSalt` fileType
+      `Prelude.hashWithSalt` prefixConfig
+      `Prelude.hashWithSalt` preserveSourceDataTyping
+
+instance Prelude.NFData S3OutputFormatConfig where
+  rnf S3OutputFormatConfig' {..} =
+    Prelude.rnf aggregationConfig
+      `Prelude.seq` Prelude.rnf fileType
+      `Prelude.seq` Prelude.rnf prefixConfig
+      `Prelude.seq` Prelude.rnf preserveSourceDataTyping
+
+instance Data.ToJSON S3OutputFormatConfig where
+  toJSON S3OutputFormatConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("aggregationConfig" Data..=)
+              Prelude.<$> aggregationConfig,
+            ("fileType" Data..=) Prelude.<$> fileType,
+            ("prefixConfig" Data..=) Prelude.<$> prefixConfig,
+            ("preserveSourceDataTyping" Data..=)
+              Prelude.<$> preserveSourceDataTyping
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/S3SourceProperties.hs b/gen/Amazonka/AppFlow/Types/S3SourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/S3SourceProperties.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.S3SourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.S3SourceProperties where
+
+import Amazonka.AppFlow.Types.S3InputFormatConfig
+import qualified 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 properties that are applied when Amazon S3 is being used as the flow
+-- source.
+--
+-- /See:/ 'newS3SourceProperties' smart constructor.
+data S3SourceProperties = S3SourceProperties'
+  { -- | The object key for the Amazon S3 bucket in which the source files are
+    -- stored.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    s3InputFormatConfig :: Prelude.Maybe S3InputFormatConfig,
+    -- | The Amazon S3 bucket name where the source files are stored.
+    bucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3SourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketPrefix', 's3SourceProperties_bucketPrefix' - The object key for the Amazon S3 bucket in which the source files are
+-- stored.
+--
+-- 's3InputFormatConfig', 's3SourceProperties_s3InputFormatConfig' - Undocumented member.
+--
+-- 'bucketName', 's3SourceProperties_bucketName' - The Amazon S3 bucket name where the source files are stored.
+newS3SourceProperties ::
+  -- | 'bucketName'
+  Prelude.Text ->
+  S3SourceProperties
+newS3SourceProperties pBucketName_ =
+  S3SourceProperties'
+    { bucketPrefix = Prelude.Nothing,
+      s3InputFormatConfig = Prelude.Nothing,
+      bucketName = pBucketName_
+    }
+
+-- | The object key for the Amazon S3 bucket in which the source files are
+-- stored.
+s3SourceProperties_bucketPrefix :: Lens.Lens' S3SourceProperties (Prelude.Maybe Prelude.Text)
+s3SourceProperties_bucketPrefix = Lens.lens (\S3SourceProperties' {bucketPrefix} -> bucketPrefix) (\s@S3SourceProperties' {} a -> s {bucketPrefix = a} :: S3SourceProperties)
+
+-- | Undocumented member.
+s3SourceProperties_s3InputFormatConfig :: Lens.Lens' S3SourceProperties (Prelude.Maybe S3InputFormatConfig)
+s3SourceProperties_s3InputFormatConfig = Lens.lens (\S3SourceProperties' {s3InputFormatConfig} -> s3InputFormatConfig) (\s@S3SourceProperties' {} a -> s {s3InputFormatConfig = a} :: S3SourceProperties)
+
+-- | The Amazon S3 bucket name where the source files are stored.
+s3SourceProperties_bucketName :: Lens.Lens' S3SourceProperties Prelude.Text
+s3SourceProperties_bucketName = Lens.lens (\S3SourceProperties' {bucketName} -> bucketName) (\s@S3SourceProperties' {} a -> s {bucketName = a} :: S3SourceProperties)
+
+instance Data.FromJSON S3SourceProperties where
+  parseJSON =
+    Data.withObject
+      "S3SourceProperties"
+      ( \x ->
+          S3SourceProperties'
+            Prelude.<$> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "s3InputFormatConfig")
+            Prelude.<*> (x Data..: "bucketName")
+      )
+
+instance Prelude.Hashable S3SourceProperties where
+  hashWithSalt _salt S3SourceProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketPrefix
+      `Prelude.hashWithSalt` s3InputFormatConfig
+      `Prelude.hashWithSalt` bucketName
+
+instance Prelude.NFData S3SourceProperties where
+  rnf S3SourceProperties' {..} =
+    Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf s3InputFormatConfig
+      `Prelude.seq` Prelude.rnf bucketName
+
+instance Data.ToJSON S3SourceProperties where
+  toJSON S3SourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("s3InputFormatConfig" Data..=)
+              Prelude.<$> s3InputFormatConfig,
+            Prelude.Just ("bucketName" Data..= bucketName)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SAPODataConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/SAPODataConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SAPODataConnectorOperator.hs
@@ -0,0 +1,166 @@
+{-# 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.AppFlow.Types.SAPODataConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SAPODataConnectorOperator
+  ( SAPODataConnectorOperator
+      ( ..,
+        SAPODataConnectorOperator_ADDITION,
+        SAPODataConnectorOperator_BETWEEN,
+        SAPODataConnectorOperator_CONTAINS,
+        SAPODataConnectorOperator_DIVISION,
+        SAPODataConnectorOperator_EQUAL_TO,
+        SAPODataConnectorOperator_GREATER_THAN,
+        SAPODataConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+        SAPODataConnectorOperator_LESS_THAN,
+        SAPODataConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+        SAPODataConnectorOperator_MASK_ALL,
+        SAPODataConnectorOperator_MASK_FIRST_N,
+        SAPODataConnectorOperator_MASK_LAST_N,
+        SAPODataConnectorOperator_MULTIPLICATION,
+        SAPODataConnectorOperator_NOT_EQUAL_TO,
+        SAPODataConnectorOperator_NO_OP,
+        SAPODataConnectorOperator_PROJECTION,
+        SAPODataConnectorOperator_SUBTRACTION,
+        SAPODataConnectorOperator_VALIDATE_NON_NEGATIVE,
+        SAPODataConnectorOperator_VALIDATE_NON_NULL,
+        SAPODataConnectorOperator_VALIDATE_NON_ZERO,
+        SAPODataConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SAPODataConnectorOperator = SAPODataConnectorOperator'
+  { fromSAPODataConnectorOperator ::
+      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 SAPODataConnectorOperator_ADDITION :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_ADDITION = SAPODataConnectorOperator' "ADDITION"
+
+pattern SAPODataConnectorOperator_BETWEEN :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_BETWEEN = SAPODataConnectorOperator' "BETWEEN"
+
+pattern SAPODataConnectorOperator_CONTAINS :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_CONTAINS = SAPODataConnectorOperator' "CONTAINS"
+
+pattern SAPODataConnectorOperator_DIVISION :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_DIVISION = SAPODataConnectorOperator' "DIVISION"
+
+pattern SAPODataConnectorOperator_EQUAL_TO :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_EQUAL_TO = SAPODataConnectorOperator' "EQUAL_TO"
+
+pattern SAPODataConnectorOperator_GREATER_THAN :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_GREATER_THAN = SAPODataConnectorOperator' "GREATER_THAN"
+
+pattern SAPODataConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_GREATER_THAN_OR_EQUAL_TO = SAPODataConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern SAPODataConnectorOperator_LESS_THAN :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_LESS_THAN = SAPODataConnectorOperator' "LESS_THAN"
+
+pattern SAPODataConnectorOperator_LESS_THAN_OR_EQUAL_TO :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_LESS_THAN_OR_EQUAL_TO = SAPODataConnectorOperator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern SAPODataConnectorOperator_MASK_ALL :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_MASK_ALL = SAPODataConnectorOperator' "MASK_ALL"
+
+pattern SAPODataConnectorOperator_MASK_FIRST_N :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_MASK_FIRST_N = SAPODataConnectorOperator' "MASK_FIRST_N"
+
+pattern SAPODataConnectorOperator_MASK_LAST_N :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_MASK_LAST_N = SAPODataConnectorOperator' "MASK_LAST_N"
+
+pattern SAPODataConnectorOperator_MULTIPLICATION :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_MULTIPLICATION = SAPODataConnectorOperator' "MULTIPLICATION"
+
+pattern SAPODataConnectorOperator_NOT_EQUAL_TO :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_NOT_EQUAL_TO = SAPODataConnectorOperator' "NOT_EQUAL_TO"
+
+pattern SAPODataConnectorOperator_NO_OP :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_NO_OP = SAPODataConnectorOperator' "NO_OP"
+
+pattern SAPODataConnectorOperator_PROJECTION :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_PROJECTION = SAPODataConnectorOperator' "PROJECTION"
+
+pattern SAPODataConnectorOperator_SUBTRACTION :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_SUBTRACTION = SAPODataConnectorOperator' "SUBTRACTION"
+
+pattern SAPODataConnectorOperator_VALIDATE_NON_NEGATIVE :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_VALIDATE_NON_NEGATIVE = SAPODataConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern SAPODataConnectorOperator_VALIDATE_NON_NULL :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_VALIDATE_NON_NULL = SAPODataConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern SAPODataConnectorOperator_VALIDATE_NON_ZERO :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_VALIDATE_NON_ZERO = SAPODataConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern SAPODataConnectorOperator_VALIDATE_NUMERIC :: SAPODataConnectorOperator
+pattern SAPODataConnectorOperator_VALIDATE_NUMERIC = SAPODataConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  SAPODataConnectorOperator_ADDITION,
+  SAPODataConnectorOperator_BETWEEN,
+  SAPODataConnectorOperator_CONTAINS,
+  SAPODataConnectorOperator_DIVISION,
+  SAPODataConnectorOperator_EQUAL_TO,
+  SAPODataConnectorOperator_GREATER_THAN,
+  SAPODataConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+  SAPODataConnectorOperator_LESS_THAN,
+  SAPODataConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+  SAPODataConnectorOperator_MASK_ALL,
+  SAPODataConnectorOperator_MASK_FIRST_N,
+  SAPODataConnectorOperator_MASK_LAST_N,
+  SAPODataConnectorOperator_MULTIPLICATION,
+  SAPODataConnectorOperator_NOT_EQUAL_TO,
+  SAPODataConnectorOperator_NO_OP,
+  SAPODataConnectorOperator_PROJECTION,
+  SAPODataConnectorOperator_SUBTRACTION,
+  SAPODataConnectorOperator_VALIDATE_NON_NEGATIVE,
+  SAPODataConnectorOperator_VALIDATE_NON_NULL,
+  SAPODataConnectorOperator_VALIDATE_NON_ZERO,
+  SAPODataConnectorOperator_VALIDATE_NUMERIC,
+  SAPODataConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/SAPODataConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/SAPODataConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SAPODataConnectorProfileCredentials.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SAPODataConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SAPODataConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.BasicAuthCredentials
+import Amazonka.AppFlow.Types.OAuthCredentials
+import qualified 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 connector-specific profile credentials required when using SAPOData.
+--
+-- /See:/ 'newSAPODataConnectorProfileCredentials' smart constructor.
+data SAPODataConnectorProfileCredentials = SAPODataConnectorProfileCredentials'
+  { -- | The SAPOData basic authentication credentials.
+    basicAuthCredentials :: Prelude.Maybe BasicAuthCredentials,
+    -- | The SAPOData OAuth type authentication credentials.
+    oAuthCredentials :: Prelude.Maybe OAuthCredentials
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SAPODataConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'basicAuthCredentials', 'sAPODataConnectorProfileCredentials_basicAuthCredentials' - The SAPOData basic authentication credentials.
+--
+-- 'oAuthCredentials', 'sAPODataConnectorProfileCredentials_oAuthCredentials' - The SAPOData OAuth type authentication credentials.
+newSAPODataConnectorProfileCredentials ::
+  SAPODataConnectorProfileCredentials
+newSAPODataConnectorProfileCredentials =
+  SAPODataConnectorProfileCredentials'
+    { basicAuthCredentials =
+        Prelude.Nothing,
+      oAuthCredentials = Prelude.Nothing
+    }
+
+-- | The SAPOData basic authentication credentials.
+sAPODataConnectorProfileCredentials_basicAuthCredentials :: Lens.Lens' SAPODataConnectorProfileCredentials (Prelude.Maybe BasicAuthCredentials)
+sAPODataConnectorProfileCredentials_basicAuthCredentials = Lens.lens (\SAPODataConnectorProfileCredentials' {basicAuthCredentials} -> basicAuthCredentials) (\s@SAPODataConnectorProfileCredentials' {} a -> s {basicAuthCredentials = a} :: SAPODataConnectorProfileCredentials)
+
+-- | The SAPOData OAuth type authentication credentials.
+sAPODataConnectorProfileCredentials_oAuthCredentials :: Lens.Lens' SAPODataConnectorProfileCredentials (Prelude.Maybe OAuthCredentials)
+sAPODataConnectorProfileCredentials_oAuthCredentials = Lens.lens (\SAPODataConnectorProfileCredentials' {oAuthCredentials} -> oAuthCredentials) (\s@SAPODataConnectorProfileCredentials' {} a -> s {oAuthCredentials = a} :: SAPODataConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    SAPODataConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    SAPODataConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` basicAuthCredentials
+        `Prelude.hashWithSalt` oAuthCredentials
+
+instance
+  Prelude.NFData
+    SAPODataConnectorProfileCredentials
+  where
+  rnf SAPODataConnectorProfileCredentials' {..} =
+    Prelude.rnf basicAuthCredentials
+      `Prelude.seq` Prelude.rnf oAuthCredentials
+
+instance
+  Data.ToJSON
+    SAPODataConnectorProfileCredentials
+  where
+  toJSON SAPODataConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("basicAuthCredentials" Data..=)
+              Prelude.<$> basicAuthCredentials,
+            ("oAuthCredentials" Data..=)
+              Prelude.<$> oAuthCredentials
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SAPODataConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/SAPODataConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SAPODataConnectorProfileProperties.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SAPODataConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SAPODataConnectorProfileProperties where
+
+import Amazonka.AppFlow.Types.OAuthProperties
+import qualified 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 connector-specific profile properties required when using SAPOData.
+--
+-- /See:/ 'newSAPODataConnectorProfileProperties' smart constructor.
+data SAPODataConnectorProfileProperties = SAPODataConnectorProfileProperties'
+  { -- | The logon language of SAPOData instance.
+    logonLanguage :: Prelude.Maybe Prelude.Text,
+    -- | The SAPOData OAuth properties required for OAuth type authentication.
+    oAuthProperties :: Prelude.Maybe OAuthProperties,
+    -- | The SAPOData Private Link service name to be used for private data
+    -- transfers.
+    privateLinkServiceName :: Prelude.Maybe Prelude.Text,
+    -- | The location of the SAPOData resource.
+    applicationHostUrl :: Prelude.Text,
+    -- | The application path to catalog service.
+    applicationServicePath :: Prelude.Text,
+    -- | The port number of the SAPOData instance.
+    portNumber :: Prelude.Natural,
+    -- | The client number for the client creating the connection.
+    clientNumber :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SAPODataConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logonLanguage', 'sAPODataConnectorProfileProperties_logonLanguage' - The logon language of SAPOData instance.
+--
+-- 'oAuthProperties', 'sAPODataConnectorProfileProperties_oAuthProperties' - The SAPOData OAuth properties required for OAuth type authentication.
+--
+-- 'privateLinkServiceName', 'sAPODataConnectorProfileProperties_privateLinkServiceName' - The SAPOData Private Link service name to be used for private data
+-- transfers.
+--
+-- 'applicationHostUrl', 'sAPODataConnectorProfileProperties_applicationHostUrl' - The location of the SAPOData resource.
+--
+-- 'applicationServicePath', 'sAPODataConnectorProfileProperties_applicationServicePath' - The application path to catalog service.
+--
+-- 'portNumber', 'sAPODataConnectorProfileProperties_portNumber' - The port number of the SAPOData instance.
+--
+-- 'clientNumber', 'sAPODataConnectorProfileProperties_clientNumber' - The client number for the client creating the connection.
+newSAPODataConnectorProfileProperties ::
+  -- | 'applicationHostUrl'
+  Prelude.Text ->
+  -- | 'applicationServicePath'
+  Prelude.Text ->
+  -- | 'portNumber'
+  Prelude.Natural ->
+  -- | 'clientNumber'
+  Prelude.Text ->
+  SAPODataConnectorProfileProperties
+newSAPODataConnectorProfileProperties
+  pApplicationHostUrl_
+  pApplicationServicePath_
+  pPortNumber_
+  pClientNumber_ =
+    SAPODataConnectorProfileProperties'
+      { logonLanguage =
+          Prelude.Nothing,
+        oAuthProperties = Prelude.Nothing,
+        privateLinkServiceName =
+          Prelude.Nothing,
+        applicationHostUrl =
+          pApplicationHostUrl_,
+        applicationServicePath =
+          pApplicationServicePath_,
+        portNumber = pPortNumber_,
+        clientNumber = pClientNumber_
+      }
+
+-- | The logon language of SAPOData instance.
+sAPODataConnectorProfileProperties_logonLanguage :: Lens.Lens' SAPODataConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+sAPODataConnectorProfileProperties_logonLanguage = Lens.lens (\SAPODataConnectorProfileProperties' {logonLanguage} -> logonLanguage) (\s@SAPODataConnectorProfileProperties' {} a -> s {logonLanguage = a} :: SAPODataConnectorProfileProperties)
+
+-- | The SAPOData OAuth properties required for OAuth type authentication.
+sAPODataConnectorProfileProperties_oAuthProperties :: Lens.Lens' SAPODataConnectorProfileProperties (Prelude.Maybe OAuthProperties)
+sAPODataConnectorProfileProperties_oAuthProperties = Lens.lens (\SAPODataConnectorProfileProperties' {oAuthProperties} -> oAuthProperties) (\s@SAPODataConnectorProfileProperties' {} a -> s {oAuthProperties = a} :: SAPODataConnectorProfileProperties)
+
+-- | The SAPOData Private Link service name to be used for private data
+-- transfers.
+sAPODataConnectorProfileProperties_privateLinkServiceName :: Lens.Lens' SAPODataConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+sAPODataConnectorProfileProperties_privateLinkServiceName = Lens.lens (\SAPODataConnectorProfileProperties' {privateLinkServiceName} -> privateLinkServiceName) (\s@SAPODataConnectorProfileProperties' {} a -> s {privateLinkServiceName = a} :: SAPODataConnectorProfileProperties)
+
+-- | The location of the SAPOData resource.
+sAPODataConnectorProfileProperties_applicationHostUrl :: Lens.Lens' SAPODataConnectorProfileProperties Prelude.Text
+sAPODataConnectorProfileProperties_applicationHostUrl = Lens.lens (\SAPODataConnectorProfileProperties' {applicationHostUrl} -> applicationHostUrl) (\s@SAPODataConnectorProfileProperties' {} a -> s {applicationHostUrl = a} :: SAPODataConnectorProfileProperties)
+
+-- | The application path to catalog service.
+sAPODataConnectorProfileProperties_applicationServicePath :: Lens.Lens' SAPODataConnectorProfileProperties Prelude.Text
+sAPODataConnectorProfileProperties_applicationServicePath = Lens.lens (\SAPODataConnectorProfileProperties' {applicationServicePath} -> applicationServicePath) (\s@SAPODataConnectorProfileProperties' {} a -> s {applicationServicePath = a} :: SAPODataConnectorProfileProperties)
+
+-- | The port number of the SAPOData instance.
+sAPODataConnectorProfileProperties_portNumber :: Lens.Lens' SAPODataConnectorProfileProperties Prelude.Natural
+sAPODataConnectorProfileProperties_portNumber = Lens.lens (\SAPODataConnectorProfileProperties' {portNumber} -> portNumber) (\s@SAPODataConnectorProfileProperties' {} a -> s {portNumber = a} :: SAPODataConnectorProfileProperties)
+
+-- | The client number for the client creating the connection.
+sAPODataConnectorProfileProperties_clientNumber :: Lens.Lens' SAPODataConnectorProfileProperties Prelude.Text
+sAPODataConnectorProfileProperties_clientNumber = Lens.lens (\SAPODataConnectorProfileProperties' {clientNumber} -> clientNumber) (\s@SAPODataConnectorProfileProperties' {} a -> s {clientNumber = a} :: SAPODataConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    SAPODataConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "SAPODataConnectorProfileProperties"
+      ( \x ->
+          SAPODataConnectorProfileProperties'
+            Prelude.<$> (x Data..:? "logonLanguage")
+            Prelude.<*> (x Data..:? "oAuthProperties")
+            Prelude.<*> (x Data..:? "privateLinkServiceName")
+            Prelude.<*> (x Data..: "applicationHostUrl")
+            Prelude.<*> (x Data..: "applicationServicePath")
+            Prelude.<*> (x Data..: "portNumber")
+            Prelude.<*> (x Data..: "clientNumber")
+      )
+
+instance
+  Prelude.Hashable
+    SAPODataConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    SAPODataConnectorProfileProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` logonLanguage
+        `Prelude.hashWithSalt` oAuthProperties
+        `Prelude.hashWithSalt` privateLinkServiceName
+        `Prelude.hashWithSalt` applicationHostUrl
+        `Prelude.hashWithSalt` applicationServicePath
+        `Prelude.hashWithSalt` portNumber
+        `Prelude.hashWithSalt` clientNumber
+
+instance
+  Prelude.NFData
+    SAPODataConnectorProfileProperties
+  where
+  rnf SAPODataConnectorProfileProperties' {..} =
+    Prelude.rnf logonLanguage
+      `Prelude.seq` Prelude.rnf oAuthProperties
+      `Prelude.seq` Prelude.rnf privateLinkServiceName
+      `Prelude.seq` Prelude.rnf applicationHostUrl
+      `Prelude.seq` Prelude.rnf applicationServicePath
+      `Prelude.seq` Prelude.rnf portNumber
+      `Prelude.seq` Prelude.rnf clientNumber
+
+instance
+  Data.ToJSON
+    SAPODataConnectorProfileProperties
+  where
+  toJSON SAPODataConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("logonLanguage" Data..=) Prelude.<$> logonLanguage,
+            ("oAuthProperties" Data..=)
+              Prelude.<$> oAuthProperties,
+            ("privateLinkServiceName" Data..=)
+              Prelude.<$> privateLinkServiceName,
+            Prelude.Just
+              ("applicationHostUrl" Data..= applicationHostUrl),
+            Prelude.Just
+              ( "applicationServicePath"
+                  Data..= applicationServicePath
+              ),
+            Prelude.Just ("portNumber" Data..= portNumber),
+            Prelude.Just ("clientNumber" Data..= clientNumber)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SAPODataDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/SAPODataDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SAPODataDestinationProperties.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SAPODataDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SAPODataDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import Amazonka.AppFlow.Types.SuccessResponseHandlingConfig
+import Amazonka.AppFlow.Types.WriteOperationType
+import qualified 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 properties that are applied when using SAPOData as a flow
+-- destination
+--
+-- /See:/ 'newSAPODataDestinationProperties' smart constructor.
+data SAPODataDestinationProperties = SAPODataDestinationProperties'
+  { errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    idFieldNames :: Prelude.Maybe [Prelude.Text],
+    -- | Determines how Amazon AppFlow handles the success response that it gets
+    -- from the connector after placing data.
+    --
+    -- For example, this setting would determine where to write the response
+    -- from a destination connector upon a successful insert operation.
+    successResponseHandlingConfig :: Prelude.Maybe SuccessResponseHandlingConfig,
+    writeOperationType :: Prelude.Maybe WriteOperationType,
+    -- | The object path specified in the SAPOData flow destination.
+    objectPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SAPODataDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorHandlingConfig', 'sAPODataDestinationProperties_errorHandlingConfig' - Undocumented member.
+--
+-- 'idFieldNames', 'sAPODataDestinationProperties_idFieldNames' - Undocumented member.
+--
+-- 'successResponseHandlingConfig', 'sAPODataDestinationProperties_successResponseHandlingConfig' - Determines how Amazon AppFlow handles the success response that it gets
+-- from the connector after placing data.
+--
+-- For example, this setting would determine where to write the response
+-- from a destination connector upon a successful insert operation.
+--
+-- 'writeOperationType', 'sAPODataDestinationProperties_writeOperationType' - Undocumented member.
+--
+-- 'objectPath', 'sAPODataDestinationProperties_objectPath' - The object path specified in the SAPOData flow destination.
+newSAPODataDestinationProperties ::
+  -- | 'objectPath'
+  Prelude.Text ->
+  SAPODataDestinationProperties
+newSAPODataDestinationProperties pObjectPath_ =
+  SAPODataDestinationProperties'
+    { errorHandlingConfig =
+        Prelude.Nothing,
+      idFieldNames = Prelude.Nothing,
+      successResponseHandlingConfig =
+        Prelude.Nothing,
+      writeOperationType = Prelude.Nothing,
+      objectPath = pObjectPath_
+    }
+
+-- | Undocumented member.
+sAPODataDestinationProperties_errorHandlingConfig :: Lens.Lens' SAPODataDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+sAPODataDestinationProperties_errorHandlingConfig = Lens.lens (\SAPODataDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@SAPODataDestinationProperties' {} a -> s {errorHandlingConfig = a} :: SAPODataDestinationProperties)
+
+-- | Undocumented member.
+sAPODataDestinationProperties_idFieldNames :: Lens.Lens' SAPODataDestinationProperties (Prelude.Maybe [Prelude.Text])
+sAPODataDestinationProperties_idFieldNames = Lens.lens (\SAPODataDestinationProperties' {idFieldNames} -> idFieldNames) (\s@SAPODataDestinationProperties' {} a -> s {idFieldNames = a} :: SAPODataDestinationProperties) Prelude.. Lens.mapping Lens.coerced
+
+-- | Determines how Amazon AppFlow handles the success response that it gets
+-- from the connector after placing data.
+--
+-- For example, this setting would determine where to write the response
+-- from a destination connector upon a successful insert operation.
+sAPODataDestinationProperties_successResponseHandlingConfig :: Lens.Lens' SAPODataDestinationProperties (Prelude.Maybe SuccessResponseHandlingConfig)
+sAPODataDestinationProperties_successResponseHandlingConfig = Lens.lens (\SAPODataDestinationProperties' {successResponseHandlingConfig} -> successResponseHandlingConfig) (\s@SAPODataDestinationProperties' {} a -> s {successResponseHandlingConfig = a} :: SAPODataDestinationProperties)
+
+-- | Undocumented member.
+sAPODataDestinationProperties_writeOperationType :: Lens.Lens' SAPODataDestinationProperties (Prelude.Maybe WriteOperationType)
+sAPODataDestinationProperties_writeOperationType = Lens.lens (\SAPODataDestinationProperties' {writeOperationType} -> writeOperationType) (\s@SAPODataDestinationProperties' {} a -> s {writeOperationType = a} :: SAPODataDestinationProperties)
+
+-- | The object path specified in the SAPOData flow destination.
+sAPODataDestinationProperties_objectPath :: Lens.Lens' SAPODataDestinationProperties Prelude.Text
+sAPODataDestinationProperties_objectPath = Lens.lens (\SAPODataDestinationProperties' {objectPath} -> objectPath) (\s@SAPODataDestinationProperties' {} a -> s {objectPath = a} :: SAPODataDestinationProperties)
+
+instance Data.FromJSON SAPODataDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "SAPODataDestinationProperties"
+      ( \x ->
+          SAPODataDestinationProperties'
+            Prelude.<$> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..:? "idFieldNames" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "successResponseHandlingConfig")
+            Prelude.<*> (x Data..:? "writeOperationType")
+            Prelude.<*> (x Data..: "objectPath")
+      )
+
+instance
+  Prelude.Hashable
+    SAPODataDestinationProperties
+  where
+  hashWithSalt _salt SAPODataDestinationProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorHandlingConfig
+      `Prelude.hashWithSalt` idFieldNames
+      `Prelude.hashWithSalt` successResponseHandlingConfig
+      `Prelude.hashWithSalt` writeOperationType
+      `Prelude.hashWithSalt` objectPath
+
+instance Prelude.NFData SAPODataDestinationProperties where
+  rnf SAPODataDestinationProperties' {..} =
+    Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf idFieldNames
+      `Prelude.seq` Prelude.rnf successResponseHandlingConfig
+      `Prelude.seq` Prelude.rnf writeOperationType
+      `Prelude.seq` Prelude.rnf objectPath
+
+instance Data.ToJSON SAPODataDestinationProperties where
+  toJSON SAPODataDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            ("idFieldNames" Data..=) Prelude.<$> idFieldNames,
+            ("successResponseHandlingConfig" Data..=)
+              Prelude.<$> successResponseHandlingConfig,
+            ("writeOperationType" Data..=)
+              Prelude.<$> writeOperationType,
+            Prelude.Just ("objectPath" Data..= objectPath)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SAPODataMetadata.hs b/gen/Amazonka/AppFlow/Types/SAPODataMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SAPODataMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SAPODataMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SAPODataMetadata where
+
+import qualified 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 connector metadata specific to SAPOData.
+--
+-- /See:/ 'newSAPODataMetadata' smart constructor.
+data SAPODataMetadata = SAPODataMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SAPODataMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newSAPODataMetadata ::
+  SAPODataMetadata
+newSAPODataMetadata = SAPODataMetadata'
+
+instance Data.FromJSON SAPODataMetadata where
+  parseJSON =
+    Data.withObject
+      "SAPODataMetadata"
+      (\x -> Prelude.pure SAPODataMetadata')
+
+instance Prelude.Hashable SAPODataMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData SAPODataMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/SAPODataSourceProperties.hs b/gen/Amazonka/AppFlow/Types/SAPODataSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SAPODataSourceProperties.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SAPODataSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SAPODataSourceProperties where
+
+import qualified 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 properties that are applied when using SAPOData as a flow source.
+--
+-- /See:/ 'newSAPODataSourceProperties' smart constructor.
+data SAPODataSourceProperties = SAPODataSourceProperties'
+  { -- | The object path specified in the SAPOData flow source.
+    objectPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SAPODataSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'objectPath', 'sAPODataSourceProperties_objectPath' - The object path specified in the SAPOData flow source.
+newSAPODataSourceProperties ::
+  SAPODataSourceProperties
+newSAPODataSourceProperties =
+  SAPODataSourceProperties'
+    { objectPath =
+        Prelude.Nothing
+    }
+
+-- | The object path specified in the SAPOData flow source.
+sAPODataSourceProperties_objectPath :: Lens.Lens' SAPODataSourceProperties (Prelude.Maybe Prelude.Text)
+sAPODataSourceProperties_objectPath = Lens.lens (\SAPODataSourceProperties' {objectPath} -> objectPath) (\s@SAPODataSourceProperties' {} a -> s {objectPath = a} :: SAPODataSourceProperties)
+
+instance Data.FromJSON SAPODataSourceProperties where
+  parseJSON =
+    Data.withObject
+      "SAPODataSourceProperties"
+      ( \x ->
+          SAPODataSourceProperties'
+            Prelude.<$> (x Data..:? "objectPath")
+      )
+
+instance Prelude.Hashable SAPODataSourceProperties where
+  hashWithSalt _salt SAPODataSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` objectPath
+
+instance Prelude.NFData SAPODataSourceProperties where
+  rnf SAPODataSourceProperties' {..} =
+    Prelude.rnf objectPath
+
+instance Data.ToJSON SAPODataSourceProperties where
+  toJSON SAPODataSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("objectPath" Data..=) Prelude.<$> objectPath]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/SalesforceConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceConnectorOperator.hs
@@ -0,0 +1,166 @@
+{-# 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.AppFlow.Types.SalesforceConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceConnectorOperator
+  ( SalesforceConnectorOperator
+      ( ..,
+        SalesforceConnectorOperator_ADDITION,
+        SalesforceConnectorOperator_BETWEEN,
+        SalesforceConnectorOperator_CONTAINS,
+        SalesforceConnectorOperator_DIVISION,
+        SalesforceConnectorOperator_EQUAL_TO,
+        SalesforceConnectorOperator_GREATER_THAN,
+        SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+        SalesforceConnectorOperator_LESS_THAN,
+        SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+        SalesforceConnectorOperator_MASK_ALL,
+        SalesforceConnectorOperator_MASK_FIRST_N,
+        SalesforceConnectorOperator_MASK_LAST_N,
+        SalesforceConnectorOperator_MULTIPLICATION,
+        SalesforceConnectorOperator_NOT_EQUAL_TO,
+        SalesforceConnectorOperator_NO_OP,
+        SalesforceConnectorOperator_PROJECTION,
+        SalesforceConnectorOperator_SUBTRACTION,
+        SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE,
+        SalesforceConnectorOperator_VALIDATE_NON_NULL,
+        SalesforceConnectorOperator_VALIDATE_NON_ZERO,
+        SalesforceConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SalesforceConnectorOperator = SalesforceConnectorOperator'
+  { fromSalesforceConnectorOperator ::
+      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 SalesforceConnectorOperator_ADDITION :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_ADDITION = SalesforceConnectorOperator' "ADDITION"
+
+pattern SalesforceConnectorOperator_BETWEEN :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_BETWEEN = SalesforceConnectorOperator' "BETWEEN"
+
+pattern SalesforceConnectorOperator_CONTAINS :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_CONTAINS = SalesforceConnectorOperator' "CONTAINS"
+
+pattern SalesforceConnectorOperator_DIVISION :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_DIVISION = SalesforceConnectorOperator' "DIVISION"
+
+pattern SalesforceConnectorOperator_EQUAL_TO :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_EQUAL_TO = SalesforceConnectorOperator' "EQUAL_TO"
+
+pattern SalesforceConnectorOperator_GREATER_THAN :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_GREATER_THAN = SalesforceConnectorOperator' "GREATER_THAN"
+
+pattern SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO = SalesforceConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern SalesforceConnectorOperator_LESS_THAN :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_LESS_THAN = SalesforceConnectorOperator' "LESS_THAN"
+
+pattern SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO = SalesforceConnectorOperator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern SalesforceConnectorOperator_MASK_ALL :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_MASK_ALL = SalesforceConnectorOperator' "MASK_ALL"
+
+pattern SalesforceConnectorOperator_MASK_FIRST_N :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_MASK_FIRST_N = SalesforceConnectorOperator' "MASK_FIRST_N"
+
+pattern SalesforceConnectorOperator_MASK_LAST_N :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_MASK_LAST_N = SalesforceConnectorOperator' "MASK_LAST_N"
+
+pattern SalesforceConnectorOperator_MULTIPLICATION :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_MULTIPLICATION = SalesforceConnectorOperator' "MULTIPLICATION"
+
+pattern SalesforceConnectorOperator_NOT_EQUAL_TO :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_NOT_EQUAL_TO = SalesforceConnectorOperator' "NOT_EQUAL_TO"
+
+pattern SalesforceConnectorOperator_NO_OP :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_NO_OP = SalesforceConnectorOperator' "NO_OP"
+
+pattern SalesforceConnectorOperator_PROJECTION :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_PROJECTION = SalesforceConnectorOperator' "PROJECTION"
+
+pattern SalesforceConnectorOperator_SUBTRACTION :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_SUBTRACTION = SalesforceConnectorOperator' "SUBTRACTION"
+
+pattern SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE = SalesforceConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern SalesforceConnectorOperator_VALIDATE_NON_NULL :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_VALIDATE_NON_NULL = SalesforceConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern SalesforceConnectorOperator_VALIDATE_NON_ZERO :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_VALIDATE_NON_ZERO = SalesforceConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern SalesforceConnectorOperator_VALIDATE_NUMERIC :: SalesforceConnectorOperator
+pattern SalesforceConnectorOperator_VALIDATE_NUMERIC = SalesforceConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  SalesforceConnectorOperator_ADDITION,
+  SalesforceConnectorOperator_BETWEEN,
+  SalesforceConnectorOperator_CONTAINS,
+  SalesforceConnectorOperator_DIVISION,
+  SalesforceConnectorOperator_EQUAL_TO,
+  SalesforceConnectorOperator_GREATER_THAN,
+  SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+  SalesforceConnectorOperator_LESS_THAN,
+  SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+  SalesforceConnectorOperator_MASK_ALL,
+  SalesforceConnectorOperator_MASK_FIRST_N,
+  SalesforceConnectorOperator_MASK_LAST_N,
+  SalesforceConnectorOperator_MULTIPLICATION,
+  SalesforceConnectorOperator_NOT_EQUAL_TO,
+  SalesforceConnectorOperator_NO_OP,
+  SalesforceConnectorOperator_PROJECTION,
+  SalesforceConnectorOperator_SUBTRACTION,
+  SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE,
+  SalesforceConnectorOperator_VALIDATE_NON_NULL,
+  SalesforceConnectorOperator_VALIDATE_NON_ZERO,
+  SalesforceConnectorOperator_VALIDATE_NUMERIC,
+  SalesforceConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/SalesforceConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceConnectorProfileCredentials.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SalesforceConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 connector-specific profile credentials required when using
+-- Salesforce.
+--
+-- /See:/ 'newSalesforceConnectorProfileCredentials' smart constructor.
+data SalesforceConnectorProfileCredentials = SalesforceConnectorProfileCredentials'
+  { -- | The credentials used to access protected Salesforce resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The secret manager ARN, which contains the client ID and client secret
+    -- of the connected app.
+    clientCredentialsArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The OAuth requirement needed to request security tokens from the
+    -- connector endpoint.
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The credentials used to acquire new access tokens.
+    refreshToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SalesforceConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'salesforceConnectorProfileCredentials_accessToken' - The credentials used to access protected Salesforce resources.
+--
+-- 'clientCredentialsArn', 'salesforceConnectorProfileCredentials_clientCredentialsArn' - The secret manager ARN, which contains the client ID and client secret
+-- of the connected app.
+--
+-- 'oAuthRequest', 'salesforceConnectorProfileCredentials_oAuthRequest' - The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+--
+-- 'refreshToken', 'salesforceConnectorProfileCredentials_refreshToken' - The credentials used to acquire new access tokens.
+newSalesforceConnectorProfileCredentials ::
+  SalesforceConnectorProfileCredentials
+newSalesforceConnectorProfileCredentials =
+  SalesforceConnectorProfileCredentials'
+    { accessToken =
+        Prelude.Nothing,
+      clientCredentialsArn =
+        Prelude.Nothing,
+      oAuthRequest = Prelude.Nothing,
+      refreshToken = Prelude.Nothing
+    }
+
+-- | The credentials used to access protected Salesforce resources.
+salesforceConnectorProfileCredentials_accessToken :: Lens.Lens' SalesforceConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+salesforceConnectorProfileCredentials_accessToken = Lens.lens (\SalesforceConnectorProfileCredentials' {accessToken} -> accessToken) (\s@SalesforceConnectorProfileCredentials' {} a -> s {accessToken = a} :: SalesforceConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The secret manager ARN, which contains the client ID and client secret
+-- of the connected app.
+salesforceConnectorProfileCredentials_clientCredentialsArn :: Lens.Lens' SalesforceConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+salesforceConnectorProfileCredentials_clientCredentialsArn = Lens.lens (\SalesforceConnectorProfileCredentials' {clientCredentialsArn} -> clientCredentialsArn) (\s@SalesforceConnectorProfileCredentials' {} a -> s {clientCredentialsArn = a} :: SalesforceConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+salesforceConnectorProfileCredentials_oAuthRequest :: Lens.Lens' SalesforceConnectorProfileCredentials (Prelude.Maybe ConnectorOAuthRequest)
+salesforceConnectorProfileCredentials_oAuthRequest = Lens.lens (\SalesforceConnectorProfileCredentials' {oAuthRequest} -> oAuthRequest) (\s@SalesforceConnectorProfileCredentials' {} a -> s {oAuthRequest = a} :: SalesforceConnectorProfileCredentials)
+
+-- | The credentials used to acquire new access tokens.
+salesforceConnectorProfileCredentials_refreshToken :: Lens.Lens' SalesforceConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+salesforceConnectorProfileCredentials_refreshToken = Lens.lens (\SalesforceConnectorProfileCredentials' {refreshToken} -> refreshToken) (\s@SalesforceConnectorProfileCredentials' {} a -> s {refreshToken = a} :: SalesforceConnectorProfileCredentials)
+
+instance
+  Prelude.Hashable
+    SalesforceConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    SalesforceConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessToken
+        `Prelude.hashWithSalt` clientCredentialsArn
+        `Prelude.hashWithSalt` oAuthRequest
+        `Prelude.hashWithSalt` refreshToken
+
+instance
+  Prelude.NFData
+    SalesforceConnectorProfileCredentials
+  where
+  rnf SalesforceConnectorProfileCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf clientCredentialsArn
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf refreshToken
+
+instance
+  Data.ToJSON
+    SalesforceConnectorProfileCredentials
+  where
+  toJSON SalesforceConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("clientCredentialsArn" Data..=)
+              Prelude.<$> clientCredentialsArn,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            ("refreshToken" Data..=) Prelude.<$> refreshToken
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/SalesforceConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceConnectorProfileProperties.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.AppFlow.Types.SalesforceConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using
+-- Salesforce.
+--
+-- /See:/ 'newSalesforceConnectorProfileProperties' smart constructor.
+data SalesforceConnectorProfileProperties = SalesforceConnectorProfileProperties'
+  { -- | The location of the Salesforce resource.
+    instanceUrl :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the connector profile applies to a sandbox or
+    -- production environment.
+    isSandboxEnvironment :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SalesforceConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'salesforceConnectorProfileProperties_instanceUrl' - The location of the Salesforce resource.
+--
+-- 'isSandboxEnvironment', 'salesforceConnectorProfileProperties_isSandboxEnvironment' - Indicates whether the connector profile applies to a sandbox or
+-- production environment.
+newSalesforceConnectorProfileProperties ::
+  SalesforceConnectorProfileProperties
+newSalesforceConnectorProfileProperties =
+  SalesforceConnectorProfileProperties'
+    { instanceUrl =
+        Prelude.Nothing,
+      isSandboxEnvironment =
+        Prelude.Nothing
+    }
+
+-- | The location of the Salesforce resource.
+salesforceConnectorProfileProperties_instanceUrl :: Lens.Lens' SalesforceConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+salesforceConnectorProfileProperties_instanceUrl = Lens.lens (\SalesforceConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@SalesforceConnectorProfileProperties' {} a -> s {instanceUrl = a} :: SalesforceConnectorProfileProperties)
+
+-- | Indicates whether the connector profile applies to a sandbox or
+-- production environment.
+salesforceConnectorProfileProperties_isSandboxEnvironment :: Lens.Lens' SalesforceConnectorProfileProperties (Prelude.Maybe Prelude.Bool)
+salesforceConnectorProfileProperties_isSandboxEnvironment = Lens.lens (\SalesforceConnectorProfileProperties' {isSandboxEnvironment} -> isSandboxEnvironment) (\s@SalesforceConnectorProfileProperties' {} a -> s {isSandboxEnvironment = a} :: SalesforceConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    SalesforceConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "SalesforceConnectorProfileProperties"
+      ( \x ->
+          SalesforceConnectorProfileProperties'
+            Prelude.<$> (x Data..:? "instanceUrl")
+            Prelude.<*> (x Data..:? "isSandboxEnvironment")
+      )
+
+instance
+  Prelude.Hashable
+    SalesforceConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    SalesforceConnectorProfileProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` instanceUrl
+        `Prelude.hashWithSalt` isSandboxEnvironment
+
+instance
+  Prelude.NFData
+    SalesforceConnectorProfileProperties
+  where
+  rnf SalesforceConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+      `Prelude.seq` Prelude.rnf isSandboxEnvironment
+
+instance
+  Data.ToJSON
+    SalesforceConnectorProfileProperties
+  where
+  toJSON SalesforceConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("instanceUrl" Data..=) Prelude.<$> instanceUrl,
+            ("isSandboxEnvironment" Data..=)
+              Prelude.<$> isSandboxEnvironment
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceDataTransferApi.hs b/gen/Amazonka/AppFlow/Types/SalesforceDataTransferApi.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceDataTransferApi.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.AppFlow.Types.SalesforceDataTransferApi
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceDataTransferApi
+  ( SalesforceDataTransferApi
+      ( ..,
+        SalesforceDataTransferApi_AUTOMATIC,
+        SalesforceDataTransferApi_BULKV2,
+        SalesforceDataTransferApi_REST_SYNC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SalesforceDataTransferApi = SalesforceDataTransferApi'
+  { fromSalesforceDataTransferApi ::
+      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 SalesforceDataTransferApi_AUTOMATIC :: SalesforceDataTransferApi
+pattern SalesforceDataTransferApi_AUTOMATIC = SalesforceDataTransferApi' "AUTOMATIC"
+
+pattern SalesforceDataTransferApi_BULKV2 :: SalesforceDataTransferApi
+pattern SalesforceDataTransferApi_BULKV2 = SalesforceDataTransferApi' "BULKV2"
+
+pattern SalesforceDataTransferApi_REST_SYNC :: SalesforceDataTransferApi
+pattern SalesforceDataTransferApi_REST_SYNC = SalesforceDataTransferApi' "REST_SYNC"
+
+{-# COMPLETE
+  SalesforceDataTransferApi_AUTOMATIC,
+  SalesforceDataTransferApi_BULKV2,
+  SalesforceDataTransferApi_REST_SYNC,
+  SalesforceDataTransferApi'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/SalesforceDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceDestinationProperties.hs
@@ -0,0 +1,291 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SalesforceDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import Amazonka.AppFlow.Types.SalesforceDataTransferApi
+import Amazonka.AppFlow.Types.WriteOperationType
+import qualified 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 properties that are applied when Salesforce is being used as a
+-- destination.
+--
+-- /See:/ 'newSalesforceDestinationProperties' smart constructor.
+data SalesforceDestinationProperties = SalesforceDestinationProperties'
+  { -- | Specifies which Salesforce API is used by Amazon AppFlow when your flow
+    -- transfers data to Salesforce.
+    --
+    -- [AUTOMATIC]
+    --     The default. Amazon AppFlow selects which API to use based on the
+    --     number of records that your flow transfers to Salesforce. If your
+    --     flow transfers fewer than 1,000 records, Amazon AppFlow uses
+    --     Salesforce REST API. If your flow transfers 1,000 records or more,
+    --     Amazon AppFlow uses Salesforce Bulk API 2.0.
+    --
+    --     Each of these Salesforce APIs structures data differently. If Amazon
+    --     AppFlow selects the API automatically, be aware that, for recurring
+    --     flows, the data output might vary from one flow run to the next. For
+    --     example, if a flow runs daily, it might use REST API on one day to
+    --     transfer 900 records, and it might use Bulk API 2.0 on the next day
+    --     to transfer 1,100 records. For each of these flow runs, the
+    --     respective Salesforce API formats the data differently. Some of the
+    --     differences include how dates are formatted and null values are
+    --     represented. Also, Bulk API 2.0 doesn\'t transfer Salesforce
+    --     compound fields.
+    --
+    --     By choosing this option, you optimize flow performance for both
+    --     small and large data transfers, but the tradeoff is inconsistent
+    --     formatting in the output.
+    --
+    -- [BULKV2]
+    --     Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs
+    --     asynchronous data transfers, and it\'s optimal for large sets of
+    --     data. By choosing this option, you ensure that your flow writes
+    --     consistent output, but you optimize performance only for large data
+    --     transfers.
+    --
+    --     Note that Bulk API 2.0 does not transfer Salesforce compound fields.
+    --
+    -- [REST_SYNC]
+    --     Amazon AppFlow uses only Salesforce REST API. By choosing this
+    --     option, you ensure that your flow writes consistent output, but you
+    --     decrease performance for large data transfers that are better suited
+    --     for Bulk API 2.0. In some cases, if your flow attempts to transfer a
+    --     vary large set of data, it might fail with a timed out error.
+    dataTransferApi :: Prelude.Maybe SalesforceDataTransferApi,
+    -- | The settings that determine how Amazon AppFlow handles an error when
+    -- placing data in the Salesforce destination. For example, this setting
+    -- would determine if the flow should fail after one insertion error, or
+    -- continue and attempt to insert every record regardless of the initial
+    -- failure. @ErrorHandlingConfig@ is a part of the destination connector
+    -- details.
+    errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The name of the field that Amazon AppFlow uses as an ID when performing
+    -- a write operation such as update or delete.
+    idFieldNames :: Prelude.Maybe [Prelude.Text],
+    -- | This specifies the type of write operation to be performed in
+    -- Salesforce. When the value is @UPSERT@, then @idFieldNames@ is required.
+    writeOperationType :: Prelude.Maybe WriteOperationType,
+    -- | The object specified in the Salesforce flow destination.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SalesforceDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataTransferApi', 'salesforceDestinationProperties_dataTransferApi' - Specifies which Salesforce API is used by Amazon AppFlow when your flow
+-- transfers data to Salesforce.
+--
+-- [AUTOMATIC]
+--     The default. Amazon AppFlow selects which API to use based on the
+--     number of records that your flow transfers to Salesforce. If your
+--     flow transfers fewer than 1,000 records, Amazon AppFlow uses
+--     Salesforce REST API. If your flow transfers 1,000 records or more,
+--     Amazon AppFlow uses Salesforce Bulk API 2.0.
+--
+--     Each of these Salesforce APIs structures data differently. If Amazon
+--     AppFlow selects the API automatically, be aware that, for recurring
+--     flows, the data output might vary from one flow run to the next. For
+--     example, if a flow runs daily, it might use REST API on one day to
+--     transfer 900 records, and it might use Bulk API 2.0 on the next day
+--     to transfer 1,100 records. For each of these flow runs, the
+--     respective Salesforce API formats the data differently. Some of the
+--     differences include how dates are formatted and null values are
+--     represented. Also, Bulk API 2.0 doesn\'t transfer Salesforce
+--     compound fields.
+--
+--     By choosing this option, you optimize flow performance for both
+--     small and large data transfers, but the tradeoff is inconsistent
+--     formatting in the output.
+--
+-- [BULKV2]
+--     Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs
+--     asynchronous data transfers, and it\'s optimal for large sets of
+--     data. By choosing this option, you ensure that your flow writes
+--     consistent output, but you optimize performance only for large data
+--     transfers.
+--
+--     Note that Bulk API 2.0 does not transfer Salesforce compound fields.
+--
+-- [REST_SYNC]
+--     Amazon AppFlow uses only Salesforce REST API. By choosing this
+--     option, you ensure that your flow writes consistent output, but you
+--     decrease performance for large data transfers that are better suited
+--     for Bulk API 2.0. In some cases, if your flow attempts to transfer a
+--     vary large set of data, it might fail with a timed out error.
+--
+-- 'errorHandlingConfig', 'salesforceDestinationProperties_errorHandlingConfig' - The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the Salesforce destination. For example, this setting
+-- would determine if the flow should fail after one insertion error, or
+-- continue and attempt to insert every record regardless of the initial
+-- failure. @ErrorHandlingConfig@ is a part of the destination connector
+-- details.
+--
+-- 'idFieldNames', 'salesforceDestinationProperties_idFieldNames' - The name of the field that Amazon AppFlow uses as an ID when performing
+-- a write operation such as update or delete.
+--
+-- 'writeOperationType', 'salesforceDestinationProperties_writeOperationType' - This specifies the type of write operation to be performed in
+-- Salesforce. When the value is @UPSERT@, then @idFieldNames@ is required.
+--
+-- 'object'', 'salesforceDestinationProperties_object' - The object specified in the Salesforce flow destination.
+newSalesforceDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  SalesforceDestinationProperties
+newSalesforceDestinationProperties pObject_ =
+  SalesforceDestinationProperties'
+    { dataTransferApi =
+        Prelude.Nothing,
+      errorHandlingConfig = Prelude.Nothing,
+      idFieldNames = Prelude.Nothing,
+      writeOperationType = Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | Specifies which Salesforce API is used by Amazon AppFlow when your flow
+-- transfers data to Salesforce.
+--
+-- [AUTOMATIC]
+--     The default. Amazon AppFlow selects which API to use based on the
+--     number of records that your flow transfers to Salesforce. If your
+--     flow transfers fewer than 1,000 records, Amazon AppFlow uses
+--     Salesforce REST API. If your flow transfers 1,000 records or more,
+--     Amazon AppFlow uses Salesforce Bulk API 2.0.
+--
+--     Each of these Salesforce APIs structures data differently. If Amazon
+--     AppFlow selects the API automatically, be aware that, for recurring
+--     flows, the data output might vary from one flow run to the next. For
+--     example, if a flow runs daily, it might use REST API on one day to
+--     transfer 900 records, and it might use Bulk API 2.0 on the next day
+--     to transfer 1,100 records. For each of these flow runs, the
+--     respective Salesforce API formats the data differently. Some of the
+--     differences include how dates are formatted and null values are
+--     represented. Also, Bulk API 2.0 doesn\'t transfer Salesforce
+--     compound fields.
+--
+--     By choosing this option, you optimize flow performance for both
+--     small and large data transfers, but the tradeoff is inconsistent
+--     formatting in the output.
+--
+-- [BULKV2]
+--     Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs
+--     asynchronous data transfers, and it\'s optimal for large sets of
+--     data. By choosing this option, you ensure that your flow writes
+--     consistent output, but you optimize performance only for large data
+--     transfers.
+--
+--     Note that Bulk API 2.0 does not transfer Salesforce compound fields.
+--
+-- [REST_SYNC]
+--     Amazon AppFlow uses only Salesforce REST API. By choosing this
+--     option, you ensure that your flow writes consistent output, but you
+--     decrease performance for large data transfers that are better suited
+--     for Bulk API 2.0. In some cases, if your flow attempts to transfer a
+--     vary large set of data, it might fail with a timed out error.
+salesforceDestinationProperties_dataTransferApi :: Lens.Lens' SalesforceDestinationProperties (Prelude.Maybe SalesforceDataTransferApi)
+salesforceDestinationProperties_dataTransferApi = Lens.lens (\SalesforceDestinationProperties' {dataTransferApi} -> dataTransferApi) (\s@SalesforceDestinationProperties' {} a -> s {dataTransferApi = a} :: SalesforceDestinationProperties)
+
+-- | The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the Salesforce destination. For example, this setting
+-- would determine if the flow should fail after one insertion error, or
+-- continue and attempt to insert every record regardless of the initial
+-- failure. @ErrorHandlingConfig@ is a part of the destination connector
+-- details.
+salesforceDestinationProperties_errorHandlingConfig :: Lens.Lens' SalesforceDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+salesforceDestinationProperties_errorHandlingConfig = Lens.lens (\SalesforceDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@SalesforceDestinationProperties' {} a -> s {errorHandlingConfig = a} :: SalesforceDestinationProperties)
+
+-- | The name of the field that Amazon AppFlow uses as an ID when performing
+-- a write operation such as update or delete.
+salesforceDestinationProperties_idFieldNames :: Lens.Lens' SalesforceDestinationProperties (Prelude.Maybe [Prelude.Text])
+salesforceDestinationProperties_idFieldNames = Lens.lens (\SalesforceDestinationProperties' {idFieldNames} -> idFieldNames) (\s@SalesforceDestinationProperties' {} a -> s {idFieldNames = a} :: SalesforceDestinationProperties) Prelude.. Lens.mapping Lens.coerced
+
+-- | This specifies the type of write operation to be performed in
+-- Salesforce. When the value is @UPSERT@, then @idFieldNames@ is required.
+salesforceDestinationProperties_writeOperationType :: Lens.Lens' SalesforceDestinationProperties (Prelude.Maybe WriteOperationType)
+salesforceDestinationProperties_writeOperationType = Lens.lens (\SalesforceDestinationProperties' {writeOperationType} -> writeOperationType) (\s@SalesforceDestinationProperties' {} a -> s {writeOperationType = a} :: SalesforceDestinationProperties)
+
+-- | The object specified in the Salesforce flow destination.
+salesforceDestinationProperties_object :: Lens.Lens' SalesforceDestinationProperties Prelude.Text
+salesforceDestinationProperties_object = Lens.lens (\SalesforceDestinationProperties' {object'} -> object') (\s@SalesforceDestinationProperties' {} a -> s {object' = a} :: SalesforceDestinationProperties)
+
+instance
+  Data.FromJSON
+    SalesforceDestinationProperties
+  where
+  parseJSON =
+    Data.withObject
+      "SalesforceDestinationProperties"
+      ( \x ->
+          SalesforceDestinationProperties'
+            Prelude.<$> (x Data..:? "dataTransferApi")
+            Prelude.<*> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..:? "idFieldNames" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "writeOperationType")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance
+  Prelude.Hashable
+    SalesforceDestinationProperties
+  where
+  hashWithSalt
+    _salt
+    SalesforceDestinationProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` dataTransferApi
+        `Prelude.hashWithSalt` errorHandlingConfig
+        `Prelude.hashWithSalt` idFieldNames
+        `Prelude.hashWithSalt` writeOperationType
+        `Prelude.hashWithSalt` object'
+
+instance
+  Prelude.NFData
+    SalesforceDestinationProperties
+  where
+  rnf SalesforceDestinationProperties' {..} =
+    Prelude.rnf dataTransferApi
+      `Prelude.seq` Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf idFieldNames
+      `Prelude.seq` Prelude.rnf writeOperationType
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON SalesforceDestinationProperties where
+  toJSON SalesforceDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("dataTransferApi" Data..=)
+              Prelude.<$> dataTransferApi,
+            ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            ("idFieldNames" Data..=) Prelude.<$> idFieldNames,
+            ("writeOperationType" Data..=)
+              Prelude.<$> writeOperationType,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceMetadata.hs b/gen/Amazonka/AppFlow/Types/SalesforceMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceMetadata.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SalesforceMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceMetadata where
+
+import Amazonka.AppFlow.Types.SalesforceDataTransferApi
+import qualified 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 connector metadata specific to Salesforce.
+--
+-- /See:/ 'newSalesforceMetadata' smart constructor.
+data SalesforceMetadata = SalesforceMetadata'
+  { -- | The Salesforce APIs that you can have Amazon AppFlow use when your flows
+    -- transfers data to or from Salesforce.
+    dataTransferApis :: Prelude.Maybe [SalesforceDataTransferApi],
+    -- | The desired authorization scope for the Salesforce account.
+    oAuthScopes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SalesforceMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataTransferApis', 'salesforceMetadata_dataTransferApis' - The Salesforce APIs that you can have Amazon AppFlow use when your flows
+-- transfers data to or from Salesforce.
+--
+-- 'oAuthScopes', 'salesforceMetadata_oAuthScopes' - The desired authorization scope for the Salesforce account.
+newSalesforceMetadata ::
+  SalesforceMetadata
+newSalesforceMetadata =
+  SalesforceMetadata'
+    { dataTransferApis =
+        Prelude.Nothing,
+      oAuthScopes = Prelude.Nothing
+    }
+
+-- | The Salesforce APIs that you can have Amazon AppFlow use when your flows
+-- transfers data to or from Salesforce.
+salesforceMetadata_dataTransferApis :: Lens.Lens' SalesforceMetadata (Prelude.Maybe [SalesforceDataTransferApi])
+salesforceMetadata_dataTransferApis = Lens.lens (\SalesforceMetadata' {dataTransferApis} -> dataTransferApis) (\s@SalesforceMetadata' {} a -> s {dataTransferApis = a} :: SalesforceMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The desired authorization scope for the Salesforce account.
+salesforceMetadata_oAuthScopes :: Lens.Lens' SalesforceMetadata (Prelude.Maybe [Prelude.Text])
+salesforceMetadata_oAuthScopes = Lens.lens (\SalesforceMetadata' {oAuthScopes} -> oAuthScopes) (\s@SalesforceMetadata' {} a -> s {oAuthScopes = a} :: SalesforceMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SalesforceMetadata where
+  parseJSON =
+    Data.withObject
+      "SalesforceMetadata"
+      ( \x ->
+          SalesforceMetadata'
+            Prelude.<$> ( x
+                            Data..:? "dataTransferApis"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable SalesforceMetadata where
+  hashWithSalt _salt SalesforceMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataTransferApis
+      `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData SalesforceMetadata where
+  rnf SalesforceMetadata' {..} =
+    Prelude.rnf dataTransferApis
+      `Prelude.seq` Prelude.rnf oAuthScopes
diff --git a/gen/Amazonka/AppFlow/Types/SalesforceSourceProperties.hs b/gen/Amazonka/AppFlow/Types/SalesforceSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SalesforceSourceProperties.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SalesforceSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SalesforceSourceProperties where
+
+import Amazonka.AppFlow.Types.SalesforceDataTransferApi
+import qualified 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 properties that are applied when Salesforce is being used as a
+-- source.
+--
+-- /See:/ 'newSalesforceSourceProperties' smart constructor.
+data SalesforceSourceProperties = SalesforceSourceProperties'
+  { -- | Specifies which Salesforce API is used by Amazon AppFlow when your flow
+    -- transfers data from Salesforce.
+    --
+    -- [AUTOMATIC]
+    --     The default. Amazon AppFlow selects which API to use based on the
+    --     number of records that your flow transfers from Salesforce. If your
+    --     flow transfers fewer than 1,000,000 records, Amazon AppFlow uses
+    --     Salesforce REST API. If your flow transfers 1,000,000 records or
+    --     more, Amazon AppFlow uses Salesforce Bulk API 2.0.
+    --
+    --     Each of these Salesforce APIs structures data differently. If Amazon
+    --     AppFlow selects the API automatically, be aware that, for recurring
+    --     flows, the data output might vary from one flow run to the next. For
+    --     example, if a flow runs daily, it might use REST API on one day to
+    --     transfer 900,000 records, and it might use Bulk API 2.0 on the next
+    --     day to transfer 1,100,000 records. For each of these flow runs, the
+    --     respective Salesforce API formats the data differently. Some of the
+    --     differences include how dates are formatted and null values are
+    --     represented. Also, Bulk API 2.0 doesn\'t transfer Salesforce
+    --     compound fields.
+    --
+    --     By choosing this option, you optimize flow performance for both
+    --     small and large data transfers, but the tradeoff is inconsistent
+    --     formatting in the output.
+    --
+    -- [BULKV2]
+    --     Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs
+    --     asynchronous data transfers, and it\'s optimal for large sets of
+    --     data. By choosing this option, you ensure that your flow writes
+    --     consistent output, but you optimize performance only for large data
+    --     transfers.
+    --
+    --     Note that Bulk API 2.0 does not transfer Salesforce compound fields.
+    --
+    -- [REST_SYNC]
+    --     Amazon AppFlow uses only Salesforce REST API. By choosing this
+    --     option, you ensure that your flow writes consistent output, but you
+    --     decrease performance for large data transfers that are better suited
+    --     for Bulk API 2.0. In some cases, if your flow attempts to transfer a
+    --     vary large set of data, it might fail wituh a timed out error.
+    dataTransferApi :: Prelude.Maybe SalesforceDataTransferApi,
+    -- | The flag that enables dynamic fetching of new (recently added) fields in
+    -- the Salesforce objects while running a flow.
+    enableDynamicFieldUpdate :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether Amazon AppFlow includes deleted files in the flow run.
+    includeDeletedRecords :: Prelude.Maybe Prelude.Bool,
+    -- | The object specified in the Salesforce flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SalesforceSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataTransferApi', 'salesforceSourceProperties_dataTransferApi' - Specifies which Salesforce API is used by Amazon AppFlow when your flow
+-- transfers data from Salesforce.
+--
+-- [AUTOMATIC]
+--     The default. Amazon AppFlow selects which API to use based on the
+--     number of records that your flow transfers from Salesforce. If your
+--     flow transfers fewer than 1,000,000 records, Amazon AppFlow uses
+--     Salesforce REST API. If your flow transfers 1,000,000 records or
+--     more, Amazon AppFlow uses Salesforce Bulk API 2.0.
+--
+--     Each of these Salesforce APIs structures data differently. If Amazon
+--     AppFlow selects the API automatically, be aware that, for recurring
+--     flows, the data output might vary from one flow run to the next. For
+--     example, if a flow runs daily, it might use REST API on one day to
+--     transfer 900,000 records, and it might use Bulk API 2.0 on the next
+--     day to transfer 1,100,000 records. For each of these flow runs, the
+--     respective Salesforce API formats the data differently. Some of the
+--     differences include how dates are formatted and null values are
+--     represented. Also, Bulk API 2.0 doesn\'t transfer Salesforce
+--     compound fields.
+--
+--     By choosing this option, you optimize flow performance for both
+--     small and large data transfers, but the tradeoff is inconsistent
+--     formatting in the output.
+--
+-- [BULKV2]
+--     Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs
+--     asynchronous data transfers, and it\'s optimal for large sets of
+--     data. By choosing this option, you ensure that your flow writes
+--     consistent output, but you optimize performance only for large data
+--     transfers.
+--
+--     Note that Bulk API 2.0 does not transfer Salesforce compound fields.
+--
+-- [REST_SYNC]
+--     Amazon AppFlow uses only Salesforce REST API. By choosing this
+--     option, you ensure that your flow writes consistent output, but you
+--     decrease performance for large data transfers that are better suited
+--     for Bulk API 2.0. In some cases, if your flow attempts to transfer a
+--     vary large set of data, it might fail wituh a timed out error.
+--
+-- 'enableDynamicFieldUpdate', 'salesforceSourceProperties_enableDynamicFieldUpdate' - The flag that enables dynamic fetching of new (recently added) fields in
+-- the Salesforce objects while running a flow.
+--
+-- 'includeDeletedRecords', 'salesforceSourceProperties_includeDeletedRecords' - Indicates whether Amazon AppFlow includes deleted files in the flow run.
+--
+-- 'object'', 'salesforceSourceProperties_object' - The object specified in the Salesforce flow source.
+newSalesforceSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  SalesforceSourceProperties
+newSalesforceSourceProperties pObject_ =
+  SalesforceSourceProperties'
+    { dataTransferApi =
+        Prelude.Nothing,
+      enableDynamicFieldUpdate = Prelude.Nothing,
+      includeDeletedRecords = Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | Specifies which Salesforce API is used by Amazon AppFlow when your flow
+-- transfers data from Salesforce.
+--
+-- [AUTOMATIC]
+--     The default. Amazon AppFlow selects which API to use based on the
+--     number of records that your flow transfers from Salesforce. If your
+--     flow transfers fewer than 1,000,000 records, Amazon AppFlow uses
+--     Salesforce REST API. If your flow transfers 1,000,000 records or
+--     more, Amazon AppFlow uses Salesforce Bulk API 2.0.
+--
+--     Each of these Salesforce APIs structures data differently. If Amazon
+--     AppFlow selects the API automatically, be aware that, for recurring
+--     flows, the data output might vary from one flow run to the next. For
+--     example, if a flow runs daily, it might use REST API on one day to
+--     transfer 900,000 records, and it might use Bulk API 2.0 on the next
+--     day to transfer 1,100,000 records. For each of these flow runs, the
+--     respective Salesforce API formats the data differently. Some of the
+--     differences include how dates are formatted and null values are
+--     represented. Also, Bulk API 2.0 doesn\'t transfer Salesforce
+--     compound fields.
+--
+--     By choosing this option, you optimize flow performance for both
+--     small and large data transfers, but the tradeoff is inconsistent
+--     formatting in the output.
+--
+-- [BULKV2]
+--     Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs
+--     asynchronous data transfers, and it\'s optimal for large sets of
+--     data. By choosing this option, you ensure that your flow writes
+--     consistent output, but you optimize performance only for large data
+--     transfers.
+--
+--     Note that Bulk API 2.0 does not transfer Salesforce compound fields.
+--
+-- [REST_SYNC]
+--     Amazon AppFlow uses only Salesforce REST API. By choosing this
+--     option, you ensure that your flow writes consistent output, but you
+--     decrease performance for large data transfers that are better suited
+--     for Bulk API 2.0. In some cases, if your flow attempts to transfer a
+--     vary large set of data, it might fail wituh a timed out error.
+salesforceSourceProperties_dataTransferApi :: Lens.Lens' SalesforceSourceProperties (Prelude.Maybe SalesforceDataTransferApi)
+salesforceSourceProperties_dataTransferApi = Lens.lens (\SalesforceSourceProperties' {dataTransferApi} -> dataTransferApi) (\s@SalesforceSourceProperties' {} a -> s {dataTransferApi = a} :: SalesforceSourceProperties)
+
+-- | The flag that enables dynamic fetching of new (recently added) fields in
+-- the Salesforce objects while running a flow.
+salesforceSourceProperties_enableDynamicFieldUpdate :: Lens.Lens' SalesforceSourceProperties (Prelude.Maybe Prelude.Bool)
+salesforceSourceProperties_enableDynamicFieldUpdate = Lens.lens (\SalesforceSourceProperties' {enableDynamicFieldUpdate} -> enableDynamicFieldUpdate) (\s@SalesforceSourceProperties' {} a -> s {enableDynamicFieldUpdate = a} :: SalesforceSourceProperties)
+
+-- | Indicates whether Amazon AppFlow includes deleted files in the flow run.
+salesforceSourceProperties_includeDeletedRecords :: Lens.Lens' SalesforceSourceProperties (Prelude.Maybe Prelude.Bool)
+salesforceSourceProperties_includeDeletedRecords = Lens.lens (\SalesforceSourceProperties' {includeDeletedRecords} -> includeDeletedRecords) (\s@SalesforceSourceProperties' {} a -> s {includeDeletedRecords = a} :: SalesforceSourceProperties)
+
+-- | The object specified in the Salesforce flow source.
+salesforceSourceProperties_object :: Lens.Lens' SalesforceSourceProperties Prelude.Text
+salesforceSourceProperties_object = Lens.lens (\SalesforceSourceProperties' {object'} -> object') (\s@SalesforceSourceProperties' {} a -> s {object' = a} :: SalesforceSourceProperties)
+
+instance Data.FromJSON SalesforceSourceProperties where
+  parseJSON =
+    Data.withObject
+      "SalesforceSourceProperties"
+      ( \x ->
+          SalesforceSourceProperties'
+            Prelude.<$> (x Data..:? "dataTransferApi")
+            Prelude.<*> (x Data..:? "enableDynamicFieldUpdate")
+            Prelude.<*> (x Data..:? "includeDeletedRecords")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance Prelude.Hashable SalesforceSourceProperties where
+  hashWithSalt _salt SalesforceSourceProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataTransferApi
+      `Prelude.hashWithSalt` enableDynamicFieldUpdate
+      `Prelude.hashWithSalt` includeDeletedRecords
+      `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData SalesforceSourceProperties where
+  rnf SalesforceSourceProperties' {..} =
+    Prelude.rnf dataTransferApi
+      `Prelude.seq` Prelude.rnf enableDynamicFieldUpdate
+      `Prelude.seq` Prelude.rnf includeDeletedRecords
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON SalesforceSourceProperties where
+  toJSON SalesforceSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("dataTransferApi" Data..=)
+              Prelude.<$> dataTransferApi,
+            ("enableDynamicFieldUpdate" Data..=)
+              Prelude.<$> enableDynamicFieldUpdate,
+            ("includeDeletedRecords" Data..=)
+              Prelude.<$> includeDeletedRecords,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ScheduleFrequencyType.hs b/gen/Amazonka/AppFlow/Types/ScheduleFrequencyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ScheduleFrequencyType.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.AppFlow.Types.ScheduleFrequencyType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ScheduleFrequencyType
+  ( ScheduleFrequencyType
+      ( ..,
+        ScheduleFrequencyType_BYMINUTE,
+        ScheduleFrequencyType_DAILY,
+        ScheduleFrequencyType_HOURLY,
+        ScheduleFrequencyType_MONTHLY,
+        ScheduleFrequencyType_ONCE,
+        ScheduleFrequencyType_WEEKLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ScheduleFrequencyType = ScheduleFrequencyType'
+  { fromScheduleFrequencyType ::
+      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 ScheduleFrequencyType_BYMINUTE :: ScheduleFrequencyType
+pattern ScheduleFrequencyType_BYMINUTE = ScheduleFrequencyType' "BYMINUTE"
+
+pattern ScheduleFrequencyType_DAILY :: ScheduleFrequencyType
+pattern ScheduleFrequencyType_DAILY = ScheduleFrequencyType' "DAILY"
+
+pattern ScheduleFrequencyType_HOURLY :: ScheduleFrequencyType
+pattern ScheduleFrequencyType_HOURLY = ScheduleFrequencyType' "HOURLY"
+
+pattern ScheduleFrequencyType_MONTHLY :: ScheduleFrequencyType
+pattern ScheduleFrequencyType_MONTHLY = ScheduleFrequencyType' "MONTHLY"
+
+pattern ScheduleFrequencyType_ONCE :: ScheduleFrequencyType
+pattern ScheduleFrequencyType_ONCE = ScheduleFrequencyType' "ONCE"
+
+pattern ScheduleFrequencyType_WEEKLY :: ScheduleFrequencyType
+pattern ScheduleFrequencyType_WEEKLY = ScheduleFrequencyType' "WEEKLY"
+
+{-# COMPLETE
+  ScheduleFrequencyType_BYMINUTE,
+  ScheduleFrequencyType_DAILY,
+  ScheduleFrequencyType_HOURLY,
+  ScheduleFrequencyType_MONTHLY,
+  ScheduleFrequencyType_ONCE,
+  ScheduleFrequencyType_WEEKLY,
+  ScheduleFrequencyType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ScheduledTriggerProperties.hs b/gen/Amazonka/AppFlow/Types/ScheduledTriggerProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ScheduledTriggerProperties.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ScheduledTriggerProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ScheduledTriggerProperties where
+
+import Amazonka.AppFlow.Types.DataPullMode
+import qualified 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 the configuration details of a schedule-triggered flow as
+-- defined by the user. Currently, these settings only apply to the
+-- @Scheduled@ trigger type.
+--
+-- /See:/ 'newScheduledTriggerProperties' smart constructor.
+data ScheduledTriggerProperties = ScheduledTriggerProperties'
+  { -- | Specifies whether a scheduled flow has an incremental data transfer or a
+    -- complete data transfer for each flow run.
+    dataPullMode :: Prelude.Maybe DataPullMode,
+    -- | Specifies the date range for the records to import from the connector in
+    -- the first flow run.
+    firstExecutionFrom :: Prelude.Maybe Data.POSIX,
+    -- | Defines how many times a scheduled flow fails consecutively before
+    -- Amazon AppFlow deactivates it.
+    flowErrorDeactivationThreshold :: Prelude.Maybe Prelude.Natural,
+    -- | The time at which the scheduled flow ends. The time is formatted as a
+    -- timestamp that follows the ISO 8601 standard, such as
+    -- @2022-04-27T13:00:00-07:00@.
+    scheduleEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the optional offset that is added to the time interval for a
+    -- schedule-triggered flow.
+    scheduleOffset :: Prelude.Maybe Prelude.Natural,
+    -- | The time at which the scheduled flow starts. The time is formatted as a
+    -- timestamp that follows the ISO 8601 standard, such as
+    -- @2022-04-26T13:00:00-07:00@.
+    scheduleStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the time zone used when referring to the dates and times of a
+    -- scheduled flow, such as @America\/New_York@. This time zone is only a
+    -- descriptive label. It doesn\'t affect how Amazon AppFlow interprets the
+    -- timestamps that you specify to schedule the flow.
+    --
+    -- If you want to schedule a flow by using times in a particular time zone,
+    -- indicate the time zone as a UTC offset in your timestamps. For example,
+    -- the UTC offsets for the @America\/New_York@ timezone are @-04:00@ EDT
+    -- and @-05:00 EST@.
+    timezone :: Prelude.Maybe Prelude.Text,
+    -- | The scheduling expression that determines the rate at which the schedule
+    -- will run, for example @rate(5minutes)@.
+    scheduleExpression :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScheduledTriggerProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataPullMode', 'scheduledTriggerProperties_dataPullMode' - Specifies whether a scheduled flow has an incremental data transfer or a
+-- complete data transfer for each flow run.
+--
+-- 'firstExecutionFrom', 'scheduledTriggerProperties_firstExecutionFrom' - Specifies the date range for the records to import from the connector in
+-- the first flow run.
+--
+-- 'flowErrorDeactivationThreshold', 'scheduledTriggerProperties_flowErrorDeactivationThreshold' - Defines how many times a scheduled flow fails consecutively before
+-- Amazon AppFlow deactivates it.
+--
+-- 'scheduleEndTime', 'scheduledTriggerProperties_scheduleEndTime' - The time at which the scheduled flow ends. The time is formatted as a
+-- timestamp that follows the ISO 8601 standard, such as
+-- @2022-04-27T13:00:00-07:00@.
+--
+-- 'scheduleOffset', 'scheduledTriggerProperties_scheduleOffset' - Specifies the optional offset that is added to the time interval for a
+-- schedule-triggered flow.
+--
+-- 'scheduleStartTime', 'scheduledTriggerProperties_scheduleStartTime' - The time at which the scheduled flow starts. The time is formatted as a
+-- timestamp that follows the ISO 8601 standard, such as
+-- @2022-04-26T13:00:00-07:00@.
+--
+-- 'timezone', 'scheduledTriggerProperties_timezone' - Specifies the time zone used when referring to the dates and times of a
+-- scheduled flow, such as @America\/New_York@. This time zone is only a
+-- descriptive label. It doesn\'t affect how Amazon AppFlow interprets the
+-- timestamps that you specify to schedule the flow.
+--
+-- If you want to schedule a flow by using times in a particular time zone,
+-- indicate the time zone as a UTC offset in your timestamps. For example,
+-- the UTC offsets for the @America\/New_York@ timezone are @-04:00@ EDT
+-- and @-05:00 EST@.
+--
+-- 'scheduleExpression', 'scheduledTriggerProperties_scheduleExpression' - The scheduling expression that determines the rate at which the schedule
+-- will run, for example @rate(5minutes)@.
+newScheduledTriggerProperties ::
+  -- | 'scheduleExpression'
+  Prelude.Text ->
+  ScheduledTriggerProperties
+newScheduledTriggerProperties pScheduleExpression_ =
+  ScheduledTriggerProperties'
+    { dataPullMode =
+        Prelude.Nothing,
+      firstExecutionFrom = Prelude.Nothing,
+      flowErrorDeactivationThreshold =
+        Prelude.Nothing,
+      scheduleEndTime = Prelude.Nothing,
+      scheduleOffset = Prelude.Nothing,
+      scheduleStartTime = Prelude.Nothing,
+      timezone = Prelude.Nothing,
+      scheduleExpression = pScheduleExpression_
+    }
+
+-- | Specifies whether a scheduled flow has an incremental data transfer or a
+-- complete data transfer for each flow run.
+scheduledTriggerProperties_dataPullMode :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe DataPullMode)
+scheduledTriggerProperties_dataPullMode = Lens.lens (\ScheduledTriggerProperties' {dataPullMode} -> dataPullMode) (\s@ScheduledTriggerProperties' {} a -> s {dataPullMode = a} :: ScheduledTriggerProperties)
+
+-- | Specifies the date range for the records to import from the connector in
+-- the first flow run.
+scheduledTriggerProperties_firstExecutionFrom :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)
+scheduledTriggerProperties_firstExecutionFrom = Lens.lens (\ScheduledTriggerProperties' {firstExecutionFrom} -> firstExecutionFrom) (\s@ScheduledTriggerProperties' {} a -> s {firstExecutionFrom = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time
+
+-- | Defines how many times a scheduled flow fails consecutively before
+-- Amazon AppFlow deactivates it.
+scheduledTriggerProperties_flowErrorDeactivationThreshold :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Natural)
+scheduledTriggerProperties_flowErrorDeactivationThreshold = Lens.lens (\ScheduledTriggerProperties' {flowErrorDeactivationThreshold} -> flowErrorDeactivationThreshold) (\s@ScheduledTriggerProperties' {} a -> s {flowErrorDeactivationThreshold = a} :: ScheduledTriggerProperties)
+
+-- | The time at which the scheduled flow ends. The time is formatted as a
+-- timestamp that follows the ISO 8601 standard, such as
+-- @2022-04-27T13:00:00-07:00@.
+scheduledTriggerProperties_scheduleEndTime :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)
+scheduledTriggerProperties_scheduleEndTime = Lens.lens (\ScheduledTriggerProperties' {scheduleEndTime} -> scheduleEndTime) (\s@ScheduledTriggerProperties' {} a -> s {scheduleEndTime = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the optional offset that is added to the time interval for a
+-- schedule-triggered flow.
+scheduledTriggerProperties_scheduleOffset :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Natural)
+scheduledTriggerProperties_scheduleOffset = Lens.lens (\ScheduledTriggerProperties' {scheduleOffset} -> scheduleOffset) (\s@ScheduledTriggerProperties' {} a -> s {scheduleOffset = a} :: ScheduledTriggerProperties)
+
+-- | The time at which the scheduled flow starts. The time is formatted as a
+-- timestamp that follows the ISO 8601 standard, such as
+-- @2022-04-26T13:00:00-07:00@.
+scheduledTriggerProperties_scheduleStartTime :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)
+scheduledTriggerProperties_scheduleStartTime = Lens.lens (\ScheduledTriggerProperties' {scheduleStartTime} -> scheduleStartTime) (\s@ScheduledTriggerProperties' {} a -> s {scheduleStartTime = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the time zone used when referring to the dates and times of a
+-- scheduled flow, such as @America\/New_York@. This time zone is only a
+-- descriptive label. It doesn\'t affect how Amazon AppFlow interprets the
+-- timestamps that you specify to schedule the flow.
+--
+-- If you want to schedule a flow by using times in a particular time zone,
+-- indicate the time zone as a UTC offset in your timestamps. For example,
+-- the UTC offsets for the @America\/New_York@ timezone are @-04:00@ EDT
+-- and @-05:00 EST@.
+scheduledTriggerProperties_timezone :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Text)
+scheduledTriggerProperties_timezone = Lens.lens (\ScheduledTriggerProperties' {timezone} -> timezone) (\s@ScheduledTriggerProperties' {} a -> s {timezone = a} :: ScheduledTriggerProperties)
+
+-- | The scheduling expression that determines the rate at which the schedule
+-- will run, for example @rate(5minutes)@.
+scheduledTriggerProperties_scheduleExpression :: Lens.Lens' ScheduledTriggerProperties Prelude.Text
+scheduledTriggerProperties_scheduleExpression = Lens.lens (\ScheduledTriggerProperties' {scheduleExpression} -> scheduleExpression) (\s@ScheduledTriggerProperties' {} a -> s {scheduleExpression = a} :: ScheduledTriggerProperties)
+
+instance Data.FromJSON ScheduledTriggerProperties where
+  parseJSON =
+    Data.withObject
+      "ScheduledTriggerProperties"
+      ( \x ->
+          ScheduledTriggerProperties'
+            Prelude.<$> (x Data..:? "dataPullMode")
+            Prelude.<*> (x Data..:? "firstExecutionFrom")
+            Prelude.<*> (x Data..:? "flowErrorDeactivationThreshold")
+            Prelude.<*> (x Data..:? "scheduleEndTime")
+            Prelude.<*> (x Data..:? "scheduleOffset")
+            Prelude.<*> (x Data..:? "scheduleStartTime")
+            Prelude.<*> (x Data..:? "timezone")
+            Prelude.<*> (x Data..: "scheduleExpression")
+      )
+
+instance Prelude.Hashable ScheduledTriggerProperties where
+  hashWithSalt _salt ScheduledTriggerProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataPullMode
+      `Prelude.hashWithSalt` firstExecutionFrom
+      `Prelude.hashWithSalt` flowErrorDeactivationThreshold
+      `Prelude.hashWithSalt` scheduleEndTime
+      `Prelude.hashWithSalt` scheduleOffset
+      `Prelude.hashWithSalt` scheduleStartTime
+      `Prelude.hashWithSalt` timezone
+      `Prelude.hashWithSalt` scheduleExpression
+
+instance Prelude.NFData ScheduledTriggerProperties where
+  rnf ScheduledTriggerProperties' {..} =
+    Prelude.rnf dataPullMode
+      `Prelude.seq` Prelude.rnf firstExecutionFrom
+      `Prelude.seq` Prelude.rnf flowErrorDeactivationThreshold
+      `Prelude.seq` Prelude.rnf scheduleEndTime
+      `Prelude.seq` Prelude.rnf scheduleOffset
+      `Prelude.seq` Prelude.rnf scheduleStartTime
+      `Prelude.seq` Prelude.rnf timezone
+      `Prelude.seq` Prelude.rnf scheduleExpression
+
+instance Data.ToJSON ScheduledTriggerProperties where
+  toJSON ScheduledTriggerProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("dataPullMode" Data..=) Prelude.<$> dataPullMode,
+            ("firstExecutionFrom" Data..=)
+              Prelude.<$> firstExecutionFrom,
+            ("flowErrorDeactivationThreshold" Data..=)
+              Prelude.<$> flowErrorDeactivationThreshold,
+            ("scheduleEndTime" Data..=)
+              Prelude.<$> scheduleEndTime,
+            ("scheduleOffset" Data..=)
+              Prelude.<$> scheduleOffset,
+            ("scheduleStartTime" Data..=)
+              Prelude.<$> scheduleStartTime,
+            ("timezone" Data..=) Prelude.<$> timezone,
+            Prelude.Just
+              ("scheduleExpression" Data..= scheduleExpression)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ServiceNowConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/ServiceNowConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ServiceNowConnectorOperator.hs
@@ -0,0 +1,166 @@
+{-# 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.AppFlow.Types.ServiceNowConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ServiceNowConnectorOperator
+  ( ServiceNowConnectorOperator
+      ( ..,
+        ServiceNowConnectorOperator_ADDITION,
+        ServiceNowConnectorOperator_BETWEEN,
+        ServiceNowConnectorOperator_CONTAINS,
+        ServiceNowConnectorOperator_DIVISION,
+        ServiceNowConnectorOperator_EQUAL_TO,
+        ServiceNowConnectorOperator_GREATER_THAN,
+        ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+        ServiceNowConnectorOperator_LESS_THAN,
+        ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+        ServiceNowConnectorOperator_MASK_ALL,
+        ServiceNowConnectorOperator_MASK_FIRST_N,
+        ServiceNowConnectorOperator_MASK_LAST_N,
+        ServiceNowConnectorOperator_MULTIPLICATION,
+        ServiceNowConnectorOperator_NOT_EQUAL_TO,
+        ServiceNowConnectorOperator_NO_OP,
+        ServiceNowConnectorOperator_PROJECTION,
+        ServiceNowConnectorOperator_SUBTRACTION,
+        ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE,
+        ServiceNowConnectorOperator_VALIDATE_NON_NULL,
+        ServiceNowConnectorOperator_VALIDATE_NON_ZERO,
+        ServiceNowConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ServiceNowConnectorOperator = ServiceNowConnectorOperator'
+  { fromServiceNowConnectorOperator ::
+      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 ServiceNowConnectorOperator_ADDITION :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_ADDITION = ServiceNowConnectorOperator' "ADDITION"
+
+pattern ServiceNowConnectorOperator_BETWEEN :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_BETWEEN = ServiceNowConnectorOperator' "BETWEEN"
+
+pattern ServiceNowConnectorOperator_CONTAINS :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_CONTAINS = ServiceNowConnectorOperator' "CONTAINS"
+
+pattern ServiceNowConnectorOperator_DIVISION :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_DIVISION = ServiceNowConnectorOperator' "DIVISION"
+
+pattern ServiceNowConnectorOperator_EQUAL_TO :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_EQUAL_TO = ServiceNowConnectorOperator' "EQUAL_TO"
+
+pattern ServiceNowConnectorOperator_GREATER_THAN :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_GREATER_THAN = ServiceNowConnectorOperator' "GREATER_THAN"
+
+pattern ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO = ServiceNowConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern ServiceNowConnectorOperator_LESS_THAN :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_LESS_THAN = ServiceNowConnectorOperator' "LESS_THAN"
+
+pattern ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO = ServiceNowConnectorOperator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern ServiceNowConnectorOperator_MASK_ALL :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_MASK_ALL = ServiceNowConnectorOperator' "MASK_ALL"
+
+pattern ServiceNowConnectorOperator_MASK_FIRST_N :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_MASK_FIRST_N = ServiceNowConnectorOperator' "MASK_FIRST_N"
+
+pattern ServiceNowConnectorOperator_MASK_LAST_N :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_MASK_LAST_N = ServiceNowConnectorOperator' "MASK_LAST_N"
+
+pattern ServiceNowConnectorOperator_MULTIPLICATION :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_MULTIPLICATION = ServiceNowConnectorOperator' "MULTIPLICATION"
+
+pattern ServiceNowConnectorOperator_NOT_EQUAL_TO :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_NOT_EQUAL_TO = ServiceNowConnectorOperator' "NOT_EQUAL_TO"
+
+pattern ServiceNowConnectorOperator_NO_OP :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_NO_OP = ServiceNowConnectorOperator' "NO_OP"
+
+pattern ServiceNowConnectorOperator_PROJECTION :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_PROJECTION = ServiceNowConnectorOperator' "PROJECTION"
+
+pattern ServiceNowConnectorOperator_SUBTRACTION :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_SUBTRACTION = ServiceNowConnectorOperator' "SUBTRACTION"
+
+pattern ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE = ServiceNowConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern ServiceNowConnectorOperator_VALIDATE_NON_NULL :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_VALIDATE_NON_NULL = ServiceNowConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern ServiceNowConnectorOperator_VALIDATE_NON_ZERO :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_VALIDATE_NON_ZERO = ServiceNowConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern ServiceNowConnectorOperator_VALIDATE_NUMERIC :: ServiceNowConnectorOperator
+pattern ServiceNowConnectorOperator_VALIDATE_NUMERIC = ServiceNowConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  ServiceNowConnectorOperator_ADDITION,
+  ServiceNowConnectorOperator_BETWEEN,
+  ServiceNowConnectorOperator_CONTAINS,
+  ServiceNowConnectorOperator_DIVISION,
+  ServiceNowConnectorOperator_EQUAL_TO,
+  ServiceNowConnectorOperator_GREATER_THAN,
+  ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+  ServiceNowConnectorOperator_LESS_THAN,
+  ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+  ServiceNowConnectorOperator_MASK_ALL,
+  ServiceNowConnectorOperator_MASK_FIRST_N,
+  ServiceNowConnectorOperator_MASK_LAST_N,
+  ServiceNowConnectorOperator_MULTIPLICATION,
+  ServiceNowConnectorOperator_NOT_EQUAL_TO,
+  ServiceNowConnectorOperator_NO_OP,
+  ServiceNowConnectorOperator_PROJECTION,
+  ServiceNowConnectorOperator_SUBTRACTION,
+  ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE,
+  ServiceNowConnectorOperator_VALIDATE_NON_NULL,
+  ServiceNowConnectorOperator_VALIDATE_NON_ZERO,
+  ServiceNowConnectorOperator_VALIDATE_NUMERIC,
+  ServiceNowConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ServiceNowConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/ServiceNowConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ServiceNowConnectorProfileCredentials.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.AppFlow.Types.ServiceNowConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ServiceNowConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required when using
+-- ServiceNow.
+--
+-- /See:/ 'newServiceNowConnectorProfileCredentials' smart constructor.
+data ServiceNowConnectorProfileCredentials = ServiceNowConnectorProfileCredentials'
+  { -- | The name of the user.
+    username :: Prelude.Text,
+    -- | The password that corresponds to the user name.
+    password :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceNowConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'username', 'serviceNowConnectorProfileCredentials_username' - The name of the user.
+--
+-- 'password', 'serviceNowConnectorProfileCredentials_password' - The password that corresponds to the user name.
+newServiceNowConnectorProfileCredentials ::
+  -- | 'username'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  ServiceNowConnectorProfileCredentials
+newServiceNowConnectorProfileCredentials
+  pUsername_
+  pPassword_ =
+    ServiceNowConnectorProfileCredentials'
+      { username =
+          pUsername_,
+        password =
+          Data._Sensitive Lens.# pPassword_
+      }
+
+-- | The name of the user.
+serviceNowConnectorProfileCredentials_username :: Lens.Lens' ServiceNowConnectorProfileCredentials Prelude.Text
+serviceNowConnectorProfileCredentials_username = Lens.lens (\ServiceNowConnectorProfileCredentials' {username} -> username) (\s@ServiceNowConnectorProfileCredentials' {} a -> s {username = a} :: ServiceNowConnectorProfileCredentials)
+
+-- | The password that corresponds to the user name.
+serviceNowConnectorProfileCredentials_password :: Lens.Lens' ServiceNowConnectorProfileCredentials Prelude.Text
+serviceNowConnectorProfileCredentials_password = Lens.lens (\ServiceNowConnectorProfileCredentials' {password} -> password) (\s@ServiceNowConnectorProfileCredentials' {} a -> s {password = a} :: ServiceNowConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    ServiceNowConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    ServiceNowConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` username
+        `Prelude.hashWithSalt` password
+
+instance
+  Prelude.NFData
+    ServiceNowConnectorProfileCredentials
+  where
+  rnf ServiceNowConnectorProfileCredentials' {..} =
+    Prelude.rnf username
+      `Prelude.seq` Prelude.rnf password
+
+instance
+  Data.ToJSON
+    ServiceNowConnectorProfileCredentials
+  where
+  toJSON ServiceNowConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("username" Data..= username),
+            Prelude.Just ("password" Data..= password)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ServiceNowConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/ServiceNowConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ServiceNowConnectorProfileProperties.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.AppFlow.Types.ServiceNowConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ServiceNowConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using
+-- ServiceNow.
+--
+-- /See:/ 'newServiceNowConnectorProfileProperties' smart constructor.
+data ServiceNowConnectorProfileProperties = ServiceNowConnectorProfileProperties'
+  { -- | The location of the ServiceNow resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceNowConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'serviceNowConnectorProfileProperties_instanceUrl' - The location of the ServiceNow resource.
+newServiceNowConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  ServiceNowConnectorProfileProperties
+newServiceNowConnectorProfileProperties pInstanceUrl_ =
+  ServiceNowConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the ServiceNow resource.
+serviceNowConnectorProfileProperties_instanceUrl :: Lens.Lens' ServiceNowConnectorProfileProperties Prelude.Text
+serviceNowConnectorProfileProperties_instanceUrl = Lens.lens (\ServiceNowConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@ServiceNowConnectorProfileProperties' {} a -> s {instanceUrl = a} :: ServiceNowConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    ServiceNowConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "ServiceNowConnectorProfileProperties"
+      ( \x ->
+          ServiceNowConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    ServiceNowConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    ServiceNowConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    ServiceNowConnectorProfileProperties
+  where
+  rnf ServiceNowConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance
+  Data.ToJSON
+    ServiceNowConnectorProfileProperties
+  where
+  toJSON ServiceNowConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ServiceNowMetadata.hs b/gen/Amazonka/AppFlow/Types/ServiceNowMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ServiceNowMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ServiceNowMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ServiceNowMetadata where
+
+import qualified 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 connector metadata specific to ServiceNow.
+--
+-- /See:/ 'newServiceNowMetadata' smart constructor.
+data ServiceNowMetadata = ServiceNowMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceNowMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newServiceNowMetadata ::
+  ServiceNowMetadata
+newServiceNowMetadata = ServiceNowMetadata'
+
+instance Data.FromJSON ServiceNowMetadata where
+  parseJSON =
+    Data.withObject
+      "ServiceNowMetadata"
+      (\x -> Prelude.pure ServiceNowMetadata')
+
+instance Prelude.Hashable ServiceNowMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData ServiceNowMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/ServiceNowSourceProperties.hs b/gen/Amazonka/AppFlow/Types/ServiceNowSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ServiceNowSourceProperties.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ServiceNowSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ServiceNowSourceProperties where
+
+import qualified 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 properties that are applied when ServiceNow is being used as a
+-- source.
+--
+-- /See:/ 'newServiceNowSourceProperties' smart constructor.
+data ServiceNowSourceProperties = ServiceNowSourceProperties'
+  { -- | The object specified in the ServiceNow flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceNowSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'serviceNowSourceProperties_object' - The object specified in the ServiceNow flow source.
+newServiceNowSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  ServiceNowSourceProperties
+newServiceNowSourceProperties pObject_ =
+  ServiceNowSourceProperties' {object' = pObject_}
+
+-- | The object specified in the ServiceNow flow source.
+serviceNowSourceProperties_object :: Lens.Lens' ServiceNowSourceProperties Prelude.Text
+serviceNowSourceProperties_object = Lens.lens (\ServiceNowSourceProperties' {object'} -> object') (\s@ServiceNowSourceProperties' {} a -> s {object' = a} :: ServiceNowSourceProperties)
+
+instance Data.FromJSON ServiceNowSourceProperties where
+  parseJSON =
+    Data.withObject
+      "ServiceNowSourceProperties"
+      ( \x ->
+          ServiceNowSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable ServiceNowSourceProperties where
+  hashWithSalt _salt ServiceNowSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData ServiceNowSourceProperties where
+  rnf ServiceNowSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON ServiceNowSourceProperties where
+  toJSON ServiceNowSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SingularConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/SingularConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SingularConnectorOperator.hs
@@ -0,0 +1,131 @@
+{-# 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.AppFlow.Types.SingularConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SingularConnectorOperator
+  ( SingularConnectorOperator
+      ( ..,
+        SingularConnectorOperator_ADDITION,
+        SingularConnectorOperator_DIVISION,
+        SingularConnectorOperator_EQUAL_TO,
+        SingularConnectorOperator_MASK_ALL,
+        SingularConnectorOperator_MASK_FIRST_N,
+        SingularConnectorOperator_MASK_LAST_N,
+        SingularConnectorOperator_MULTIPLICATION,
+        SingularConnectorOperator_NO_OP,
+        SingularConnectorOperator_PROJECTION,
+        SingularConnectorOperator_SUBTRACTION,
+        SingularConnectorOperator_VALIDATE_NON_NEGATIVE,
+        SingularConnectorOperator_VALIDATE_NON_NULL,
+        SingularConnectorOperator_VALIDATE_NON_ZERO,
+        SingularConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SingularConnectorOperator = SingularConnectorOperator'
+  { fromSingularConnectorOperator ::
+      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 SingularConnectorOperator_ADDITION :: SingularConnectorOperator
+pattern SingularConnectorOperator_ADDITION = SingularConnectorOperator' "ADDITION"
+
+pattern SingularConnectorOperator_DIVISION :: SingularConnectorOperator
+pattern SingularConnectorOperator_DIVISION = SingularConnectorOperator' "DIVISION"
+
+pattern SingularConnectorOperator_EQUAL_TO :: SingularConnectorOperator
+pattern SingularConnectorOperator_EQUAL_TO = SingularConnectorOperator' "EQUAL_TO"
+
+pattern SingularConnectorOperator_MASK_ALL :: SingularConnectorOperator
+pattern SingularConnectorOperator_MASK_ALL = SingularConnectorOperator' "MASK_ALL"
+
+pattern SingularConnectorOperator_MASK_FIRST_N :: SingularConnectorOperator
+pattern SingularConnectorOperator_MASK_FIRST_N = SingularConnectorOperator' "MASK_FIRST_N"
+
+pattern SingularConnectorOperator_MASK_LAST_N :: SingularConnectorOperator
+pattern SingularConnectorOperator_MASK_LAST_N = SingularConnectorOperator' "MASK_LAST_N"
+
+pattern SingularConnectorOperator_MULTIPLICATION :: SingularConnectorOperator
+pattern SingularConnectorOperator_MULTIPLICATION = SingularConnectorOperator' "MULTIPLICATION"
+
+pattern SingularConnectorOperator_NO_OP :: SingularConnectorOperator
+pattern SingularConnectorOperator_NO_OP = SingularConnectorOperator' "NO_OP"
+
+pattern SingularConnectorOperator_PROJECTION :: SingularConnectorOperator
+pattern SingularConnectorOperator_PROJECTION = SingularConnectorOperator' "PROJECTION"
+
+pattern SingularConnectorOperator_SUBTRACTION :: SingularConnectorOperator
+pattern SingularConnectorOperator_SUBTRACTION = SingularConnectorOperator' "SUBTRACTION"
+
+pattern SingularConnectorOperator_VALIDATE_NON_NEGATIVE :: SingularConnectorOperator
+pattern SingularConnectorOperator_VALIDATE_NON_NEGATIVE = SingularConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern SingularConnectorOperator_VALIDATE_NON_NULL :: SingularConnectorOperator
+pattern SingularConnectorOperator_VALIDATE_NON_NULL = SingularConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern SingularConnectorOperator_VALIDATE_NON_ZERO :: SingularConnectorOperator
+pattern SingularConnectorOperator_VALIDATE_NON_ZERO = SingularConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern SingularConnectorOperator_VALIDATE_NUMERIC :: SingularConnectorOperator
+pattern SingularConnectorOperator_VALIDATE_NUMERIC = SingularConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  SingularConnectorOperator_ADDITION,
+  SingularConnectorOperator_DIVISION,
+  SingularConnectorOperator_EQUAL_TO,
+  SingularConnectorOperator_MASK_ALL,
+  SingularConnectorOperator_MASK_FIRST_N,
+  SingularConnectorOperator_MASK_LAST_N,
+  SingularConnectorOperator_MULTIPLICATION,
+  SingularConnectorOperator_NO_OP,
+  SingularConnectorOperator_PROJECTION,
+  SingularConnectorOperator_SUBTRACTION,
+  SingularConnectorOperator_VALIDATE_NON_NEGATIVE,
+  SingularConnectorOperator_VALIDATE_NON_NULL,
+  SingularConnectorOperator_VALIDATE_NON_ZERO,
+  SingularConnectorOperator_VALIDATE_NUMERIC,
+  SingularConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/SingularConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/SingularConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SingularConnectorProfileCredentials.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.AppFlow.Types.SingularConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SingularConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required when using Singular.
+--
+-- /See:/ 'newSingularConnectorProfileCredentials' smart constructor.
+data SingularConnectorProfileCredentials = SingularConnectorProfileCredentials'
+  { -- | A unique alphanumeric identifier used to authenticate a user, developer,
+    -- or calling program to your API.
+    apiKey :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SingularConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiKey', 'singularConnectorProfileCredentials_apiKey' - A unique alphanumeric identifier used to authenticate a user, developer,
+-- or calling program to your API.
+newSingularConnectorProfileCredentials ::
+  -- | 'apiKey'
+  Prelude.Text ->
+  SingularConnectorProfileCredentials
+newSingularConnectorProfileCredentials pApiKey_ =
+  SingularConnectorProfileCredentials'
+    { apiKey =
+        Data._Sensitive Lens.# pApiKey_
+    }
+
+-- | A unique alphanumeric identifier used to authenticate a user, developer,
+-- or calling program to your API.
+singularConnectorProfileCredentials_apiKey :: Lens.Lens' SingularConnectorProfileCredentials Prelude.Text
+singularConnectorProfileCredentials_apiKey = Lens.lens (\SingularConnectorProfileCredentials' {apiKey} -> apiKey) (\s@SingularConnectorProfileCredentials' {} a -> s {apiKey = a} :: SingularConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    SingularConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    SingularConnectorProfileCredentials' {..} =
+      _salt `Prelude.hashWithSalt` apiKey
+
+instance
+  Prelude.NFData
+    SingularConnectorProfileCredentials
+  where
+  rnf SingularConnectorProfileCredentials' {..} =
+    Prelude.rnf apiKey
+
+instance
+  Data.ToJSON
+    SingularConnectorProfileCredentials
+  where
+  toJSON SingularConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("apiKey" Data..= apiKey)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SingularConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/SingularConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SingularConnectorProfileProperties.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.AppFlow.Types.SingularConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SingularConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Singular.
+--
+-- /See:/ 'newSingularConnectorProfileProperties' smart constructor.
+data SingularConnectorProfileProperties = SingularConnectorProfileProperties'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SingularConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newSingularConnectorProfileProperties ::
+  SingularConnectorProfileProperties
+newSingularConnectorProfileProperties =
+  SingularConnectorProfileProperties'
+
+instance
+  Data.FromJSON
+    SingularConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "SingularConnectorProfileProperties"
+      ( \x ->
+          Prelude.pure SingularConnectorProfileProperties'
+      )
+
+instance
+  Prelude.Hashable
+    SingularConnectorProfileProperties
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    SingularConnectorProfileProperties
+  where
+  rnf _ = ()
+
+instance
+  Data.ToJSON
+    SingularConnectorProfileProperties
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AppFlow/Types/SingularMetadata.hs b/gen/Amazonka/AppFlow/Types/SingularMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SingularMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SingularMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SingularMetadata where
+
+import qualified 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 connector metadata specific to Singular.
+--
+-- /See:/ 'newSingularMetadata' smart constructor.
+data SingularMetadata = SingularMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SingularMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newSingularMetadata ::
+  SingularMetadata
+newSingularMetadata = SingularMetadata'
+
+instance Data.FromJSON SingularMetadata where
+  parseJSON =
+    Data.withObject
+      "SingularMetadata"
+      (\x -> Prelude.pure SingularMetadata')
+
+instance Prelude.Hashable SingularMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData SingularMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/SingularSourceProperties.hs b/gen/Amazonka/AppFlow/Types/SingularSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SingularSourceProperties.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SingularSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SingularSourceProperties where
+
+import qualified 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 properties that are applied when Singular is being used as a source.
+--
+-- /See:/ 'newSingularSourceProperties' smart constructor.
+data SingularSourceProperties = SingularSourceProperties'
+  { -- | The object specified in the Singular flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SingularSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'singularSourceProperties_object' - The object specified in the Singular flow source.
+newSingularSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  SingularSourceProperties
+newSingularSourceProperties pObject_ =
+  SingularSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Singular flow source.
+singularSourceProperties_object :: Lens.Lens' SingularSourceProperties Prelude.Text
+singularSourceProperties_object = Lens.lens (\SingularSourceProperties' {object'} -> object') (\s@SingularSourceProperties' {} a -> s {object' = a} :: SingularSourceProperties)
+
+instance Data.FromJSON SingularSourceProperties where
+  parseJSON =
+    Data.withObject
+      "SingularSourceProperties"
+      ( \x ->
+          SingularSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable SingularSourceProperties where
+  hashWithSalt _salt SingularSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData SingularSourceProperties where
+  rnf SingularSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON SingularSourceProperties where
+  toJSON SingularSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SlackConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/SlackConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SlackConnectorOperator.hs
@@ -0,0 +1,156 @@
+{-# 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.AppFlow.Types.SlackConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SlackConnectorOperator
+  ( SlackConnectorOperator
+      ( ..,
+        SlackConnectorOperator_ADDITION,
+        SlackConnectorOperator_BETWEEN,
+        SlackConnectorOperator_DIVISION,
+        SlackConnectorOperator_EQUAL_TO,
+        SlackConnectorOperator_GREATER_THAN,
+        SlackConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+        SlackConnectorOperator_LESS_THAN,
+        SlackConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+        SlackConnectorOperator_MASK_ALL,
+        SlackConnectorOperator_MASK_FIRST_N,
+        SlackConnectorOperator_MASK_LAST_N,
+        SlackConnectorOperator_MULTIPLICATION,
+        SlackConnectorOperator_NO_OP,
+        SlackConnectorOperator_PROJECTION,
+        SlackConnectorOperator_SUBTRACTION,
+        SlackConnectorOperator_VALIDATE_NON_NEGATIVE,
+        SlackConnectorOperator_VALIDATE_NON_NULL,
+        SlackConnectorOperator_VALIDATE_NON_ZERO,
+        SlackConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SlackConnectorOperator = SlackConnectorOperator'
+  { fromSlackConnectorOperator ::
+      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 SlackConnectorOperator_ADDITION :: SlackConnectorOperator
+pattern SlackConnectorOperator_ADDITION = SlackConnectorOperator' "ADDITION"
+
+pattern SlackConnectorOperator_BETWEEN :: SlackConnectorOperator
+pattern SlackConnectorOperator_BETWEEN = SlackConnectorOperator' "BETWEEN"
+
+pattern SlackConnectorOperator_DIVISION :: SlackConnectorOperator
+pattern SlackConnectorOperator_DIVISION = SlackConnectorOperator' "DIVISION"
+
+pattern SlackConnectorOperator_EQUAL_TO :: SlackConnectorOperator
+pattern SlackConnectorOperator_EQUAL_TO = SlackConnectorOperator' "EQUAL_TO"
+
+pattern SlackConnectorOperator_GREATER_THAN :: SlackConnectorOperator
+pattern SlackConnectorOperator_GREATER_THAN = SlackConnectorOperator' "GREATER_THAN"
+
+pattern SlackConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: SlackConnectorOperator
+pattern SlackConnectorOperator_GREATER_THAN_OR_EQUAL_TO = SlackConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern SlackConnectorOperator_LESS_THAN :: SlackConnectorOperator
+pattern SlackConnectorOperator_LESS_THAN = SlackConnectorOperator' "LESS_THAN"
+
+pattern SlackConnectorOperator_LESS_THAN_OR_EQUAL_TO :: SlackConnectorOperator
+pattern SlackConnectorOperator_LESS_THAN_OR_EQUAL_TO = SlackConnectorOperator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern SlackConnectorOperator_MASK_ALL :: SlackConnectorOperator
+pattern SlackConnectorOperator_MASK_ALL = SlackConnectorOperator' "MASK_ALL"
+
+pattern SlackConnectorOperator_MASK_FIRST_N :: SlackConnectorOperator
+pattern SlackConnectorOperator_MASK_FIRST_N = SlackConnectorOperator' "MASK_FIRST_N"
+
+pattern SlackConnectorOperator_MASK_LAST_N :: SlackConnectorOperator
+pattern SlackConnectorOperator_MASK_LAST_N = SlackConnectorOperator' "MASK_LAST_N"
+
+pattern SlackConnectorOperator_MULTIPLICATION :: SlackConnectorOperator
+pattern SlackConnectorOperator_MULTIPLICATION = SlackConnectorOperator' "MULTIPLICATION"
+
+pattern SlackConnectorOperator_NO_OP :: SlackConnectorOperator
+pattern SlackConnectorOperator_NO_OP = SlackConnectorOperator' "NO_OP"
+
+pattern SlackConnectorOperator_PROJECTION :: SlackConnectorOperator
+pattern SlackConnectorOperator_PROJECTION = SlackConnectorOperator' "PROJECTION"
+
+pattern SlackConnectorOperator_SUBTRACTION :: SlackConnectorOperator
+pattern SlackConnectorOperator_SUBTRACTION = SlackConnectorOperator' "SUBTRACTION"
+
+pattern SlackConnectorOperator_VALIDATE_NON_NEGATIVE :: SlackConnectorOperator
+pattern SlackConnectorOperator_VALIDATE_NON_NEGATIVE = SlackConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern SlackConnectorOperator_VALIDATE_NON_NULL :: SlackConnectorOperator
+pattern SlackConnectorOperator_VALIDATE_NON_NULL = SlackConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern SlackConnectorOperator_VALIDATE_NON_ZERO :: SlackConnectorOperator
+pattern SlackConnectorOperator_VALIDATE_NON_ZERO = SlackConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern SlackConnectorOperator_VALIDATE_NUMERIC :: SlackConnectorOperator
+pattern SlackConnectorOperator_VALIDATE_NUMERIC = SlackConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  SlackConnectorOperator_ADDITION,
+  SlackConnectorOperator_BETWEEN,
+  SlackConnectorOperator_DIVISION,
+  SlackConnectorOperator_EQUAL_TO,
+  SlackConnectorOperator_GREATER_THAN,
+  SlackConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+  SlackConnectorOperator_LESS_THAN,
+  SlackConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+  SlackConnectorOperator_MASK_ALL,
+  SlackConnectorOperator_MASK_FIRST_N,
+  SlackConnectorOperator_MASK_LAST_N,
+  SlackConnectorOperator_MULTIPLICATION,
+  SlackConnectorOperator_NO_OP,
+  SlackConnectorOperator_PROJECTION,
+  SlackConnectorOperator_SUBTRACTION,
+  SlackConnectorOperator_VALIDATE_NON_NEGATIVE,
+  SlackConnectorOperator_VALIDATE_NON_NULL,
+  SlackConnectorOperator_VALIDATE_NON_ZERO,
+  SlackConnectorOperator_VALIDATE_NUMERIC,
+  SlackConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/SlackConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/SlackConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SlackConnectorProfileCredentials.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SlackConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SlackConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 connector-specific profile credentials required when using Slack.
+--
+-- /See:/ 'newSlackConnectorProfileCredentials' smart constructor.
+data SlackConnectorProfileCredentials = SlackConnectorProfileCredentials'
+  { -- | The credentials used to access protected Slack resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The OAuth requirement needed to request security tokens from the
+    -- connector endpoint.
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The identifier for the client.
+    clientId :: Prelude.Text,
+    -- | The client secret used by the OAuth client to authenticate to the
+    -- authorization server.
+    clientSecret :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SlackConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'slackConnectorProfileCredentials_accessToken' - The credentials used to access protected Slack resources.
+--
+-- 'oAuthRequest', 'slackConnectorProfileCredentials_oAuthRequest' - The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+--
+-- 'clientId', 'slackConnectorProfileCredentials_clientId' - The identifier for the client.
+--
+-- 'clientSecret', 'slackConnectorProfileCredentials_clientSecret' - The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+newSlackConnectorProfileCredentials ::
+  -- | 'clientId'
+  Prelude.Text ->
+  -- | 'clientSecret'
+  Prelude.Text ->
+  SlackConnectorProfileCredentials
+newSlackConnectorProfileCredentials
+  pClientId_
+  pClientSecret_ =
+    SlackConnectorProfileCredentials'
+      { accessToken =
+          Prelude.Nothing,
+        oAuthRequest = Prelude.Nothing,
+        clientId = pClientId_,
+        clientSecret =
+          Data._Sensitive Lens.# pClientSecret_
+      }
+
+-- | The credentials used to access protected Slack resources.
+slackConnectorProfileCredentials_accessToken :: Lens.Lens' SlackConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+slackConnectorProfileCredentials_accessToken = Lens.lens (\SlackConnectorProfileCredentials' {accessToken} -> accessToken) (\s@SlackConnectorProfileCredentials' {} a -> s {accessToken = a} :: SlackConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+slackConnectorProfileCredentials_oAuthRequest :: Lens.Lens' SlackConnectorProfileCredentials (Prelude.Maybe ConnectorOAuthRequest)
+slackConnectorProfileCredentials_oAuthRequest = Lens.lens (\SlackConnectorProfileCredentials' {oAuthRequest} -> oAuthRequest) (\s@SlackConnectorProfileCredentials' {} a -> s {oAuthRequest = a} :: SlackConnectorProfileCredentials)
+
+-- | The identifier for the client.
+slackConnectorProfileCredentials_clientId :: Lens.Lens' SlackConnectorProfileCredentials Prelude.Text
+slackConnectorProfileCredentials_clientId = Lens.lens (\SlackConnectorProfileCredentials' {clientId} -> clientId) (\s@SlackConnectorProfileCredentials' {} a -> s {clientId = a} :: SlackConnectorProfileCredentials)
+
+-- | The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+slackConnectorProfileCredentials_clientSecret :: Lens.Lens' SlackConnectorProfileCredentials Prelude.Text
+slackConnectorProfileCredentials_clientSecret = Lens.lens (\SlackConnectorProfileCredentials' {clientSecret} -> clientSecret) (\s@SlackConnectorProfileCredentials' {} a -> s {clientSecret = a} :: SlackConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    SlackConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    SlackConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessToken
+        `Prelude.hashWithSalt` oAuthRequest
+        `Prelude.hashWithSalt` clientId
+        `Prelude.hashWithSalt` clientSecret
+
+instance
+  Prelude.NFData
+    SlackConnectorProfileCredentials
+  where
+  rnf SlackConnectorProfileCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+
+instance Data.ToJSON SlackConnectorProfileCredentials where
+  toJSON SlackConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            Prelude.Just ("clientId" Data..= clientId),
+            Prelude.Just ("clientSecret" Data..= clientSecret)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SlackConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/SlackConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SlackConnectorProfileProperties.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SlackConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SlackConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Slack.
+--
+-- /See:/ 'newSlackConnectorProfileProperties' smart constructor.
+data SlackConnectorProfileProperties = SlackConnectorProfileProperties'
+  { -- | The location of the Slack resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SlackConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'slackConnectorProfileProperties_instanceUrl' - The location of the Slack resource.
+newSlackConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  SlackConnectorProfileProperties
+newSlackConnectorProfileProperties pInstanceUrl_ =
+  SlackConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Slack resource.
+slackConnectorProfileProperties_instanceUrl :: Lens.Lens' SlackConnectorProfileProperties Prelude.Text
+slackConnectorProfileProperties_instanceUrl = Lens.lens (\SlackConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@SlackConnectorProfileProperties' {} a -> s {instanceUrl = a} :: SlackConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    SlackConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "SlackConnectorProfileProperties"
+      ( \x ->
+          SlackConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    SlackConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    SlackConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    SlackConnectorProfileProperties
+  where
+  rnf SlackConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance Data.ToJSON SlackConnectorProfileProperties where
+  toJSON SlackConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SlackMetadata.hs b/gen/Amazonka/AppFlow/Types/SlackMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SlackMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SlackMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SlackMetadata where
+
+import qualified 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 connector metadata specific to Slack.
+--
+-- /See:/ 'newSlackMetadata' smart constructor.
+data SlackMetadata = SlackMetadata'
+  { -- | The desired authorization scope for the Slack account.
+    oAuthScopes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SlackMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'oAuthScopes', 'slackMetadata_oAuthScopes' - The desired authorization scope for the Slack account.
+newSlackMetadata ::
+  SlackMetadata
+newSlackMetadata =
+  SlackMetadata' {oAuthScopes = Prelude.Nothing}
+
+-- | The desired authorization scope for the Slack account.
+slackMetadata_oAuthScopes :: Lens.Lens' SlackMetadata (Prelude.Maybe [Prelude.Text])
+slackMetadata_oAuthScopes = Lens.lens (\SlackMetadata' {oAuthScopes} -> oAuthScopes) (\s@SlackMetadata' {} a -> s {oAuthScopes = a} :: SlackMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SlackMetadata where
+  parseJSON =
+    Data.withObject
+      "SlackMetadata"
+      ( \x ->
+          SlackMetadata'
+            Prelude.<$> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable SlackMetadata where
+  hashWithSalt _salt SlackMetadata' {..} =
+    _salt `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData SlackMetadata where
+  rnf SlackMetadata' {..} = Prelude.rnf oAuthScopes
diff --git a/gen/Amazonka/AppFlow/Types/SlackSourceProperties.hs b/gen/Amazonka/AppFlow/Types/SlackSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SlackSourceProperties.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SlackSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SlackSourceProperties where
+
+import qualified 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 properties that are applied when Slack is being used as a source.
+--
+-- /See:/ 'newSlackSourceProperties' smart constructor.
+data SlackSourceProperties = SlackSourceProperties'
+  { -- | The object specified in the Slack flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SlackSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'slackSourceProperties_object' - The object specified in the Slack flow source.
+newSlackSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  SlackSourceProperties
+newSlackSourceProperties pObject_ =
+  SlackSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Slack flow source.
+slackSourceProperties_object :: Lens.Lens' SlackSourceProperties Prelude.Text
+slackSourceProperties_object = Lens.lens (\SlackSourceProperties' {object'} -> object') (\s@SlackSourceProperties' {} a -> s {object' = a} :: SlackSourceProperties)
+
+instance Data.FromJSON SlackSourceProperties where
+  parseJSON =
+    Data.withObject
+      "SlackSourceProperties"
+      ( \x ->
+          SlackSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable SlackSourceProperties where
+  hashWithSalt _salt SlackSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData SlackSourceProperties where
+  rnf SlackSourceProperties' {..} = Prelude.rnf object'
+
+instance Data.ToJSON SlackSourceProperties where
+  toJSON SlackSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SnowflakeConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/SnowflakeConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SnowflakeConnectorProfileCredentials.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.AppFlow.Types.SnowflakeConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SnowflakeConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required when using
+-- Snowflake.
+--
+-- /See:/ 'newSnowflakeConnectorProfileCredentials' smart constructor.
+data SnowflakeConnectorProfileCredentials = SnowflakeConnectorProfileCredentials'
+  { -- | The name of the user.
+    username :: Prelude.Text,
+    -- | The password that corresponds to the user name.
+    password :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SnowflakeConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'username', 'snowflakeConnectorProfileCredentials_username' - The name of the user.
+--
+-- 'password', 'snowflakeConnectorProfileCredentials_password' - The password that corresponds to the user name.
+newSnowflakeConnectorProfileCredentials ::
+  -- | 'username'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  SnowflakeConnectorProfileCredentials
+newSnowflakeConnectorProfileCredentials
+  pUsername_
+  pPassword_ =
+    SnowflakeConnectorProfileCredentials'
+      { username =
+          pUsername_,
+        password =
+          Data._Sensitive Lens.# pPassword_
+      }
+
+-- | The name of the user.
+snowflakeConnectorProfileCredentials_username :: Lens.Lens' SnowflakeConnectorProfileCredentials Prelude.Text
+snowflakeConnectorProfileCredentials_username = Lens.lens (\SnowflakeConnectorProfileCredentials' {username} -> username) (\s@SnowflakeConnectorProfileCredentials' {} a -> s {username = a} :: SnowflakeConnectorProfileCredentials)
+
+-- | The password that corresponds to the user name.
+snowflakeConnectorProfileCredentials_password :: Lens.Lens' SnowflakeConnectorProfileCredentials Prelude.Text
+snowflakeConnectorProfileCredentials_password = Lens.lens (\SnowflakeConnectorProfileCredentials' {password} -> password) (\s@SnowflakeConnectorProfileCredentials' {} a -> s {password = a} :: SnowflakeConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    SnowflakeConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    SnowflakeConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` username
+        `Prelude.hashWithSalt` password
+
+instance
+  Prelude.NFData
+    SnowflakeConnectorProfileCredentials
+  where
+  rnf SnowflakeConnectorProfileCredentials' {..} =
+    Prelude.rnf username
+      `Prelude.seq` Prelude.rnf password
+
+instance
+  Data.ToJSON
+    SnowflakeConnectorProfileCredentials
+  where
+  toJSON SnowflakeConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("username" Data..= username),
+            Prelude.Just ("password" Data..= password)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SnowflakeConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/SnowflakeConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SnowflakeConnectorProfileProperties.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SnowflakeConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SnowflakeConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Snowflake.
+--
+-- /See:/ 'newSnowflakeConnectorProfileProperties' smart constructor.
+data SnowflakeConnectorProfileProperties = SnowflakeConnectorProfileProperties'
+  { -- | The name of the account.
+    accountName :: Prelude.Maybe Prelude.Text,
+    -- | The bucket path that refers to the Amazon S3 bucket associated with
+    -- Snowflake.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The Snowflake Private Link service name to be used for private data
+    -- transfers.
+    privateLinkServiceName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region of the Snowflake account.
+    region :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Snowflake warehouse.
+    warehouse :: Prelude.Text,
+    -- | The name of the Amazon S3 stage that was created while setting up an
+    -- Amazon S3 stage in the Snowflake account. This is written in the
+    -- following format: \< Database>\< Schema>\<Stage Name>.
+    stage :: Prelude.Text,
+    -- | The name of the Amazon S3 bucket associated with Snowflake.
+    bucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SnowflakeConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountName', 'snowflakeConnectorProfileProperties_accountName' - The name of the account.
+--
+-- 'bucketPrefix', 'snowflakeConnectorProfileProperties_bucketPrefix' - The bucket path that refers to the Amazon S3 bucket associated with
+-- Snowflake.
+--
+-- 'privateLinkServiceName', 'snowflakeConnectorProfileProperties_privateLinkServiceName' - The Snowflake Private Link service name to be used for private data
+-- transfers.
+--
+-- 'region', 'snowflakeConnectorProfileProperties_region' - The Amazon Web Services Region of the Snowflake account.
+--
+-- 'warehouse', 'snowflakeConnectorProfileProperties_warehouse' - The name of the Snowflake warehouse.
+--
+-- 'stage', 'snowflakeConnectorProfileProperties_stage' - The name of the Amazon S3 stage that was created while setting up an
+-- Amazon S3 stage in the Snowflake account. This is written in the
+-- following format: \< Database>\< Schema>\<Stage Name>.
+--
+-- 'bucketName', 'snowflakeConnectorProfileProperties_bucketName' - The name of the Amazon S3 bucket associated with Snowflake.
+newSnowflakeConnectorProfileProperties ::
+  -- | 'warehouse'
+  Prelude.Text ->
+  -- | 'stage'
+  Prelude.Text ->
+  -- | 'bucketName'
+  Prelude.Text ->
+  SnowflakeConnectorProfileProperties
+newSnowflakeConnectorProfileProperties
+  pWarehouse_
+  pStage_
+  pBucketName_ =
+    SnowflakeConnectorProfileProperties'
+      { accountName =
+          Prelude.Nothing,
+        bucketPrefix = Prelude.Nothing,
+        privateLinkServiceName =
+          Prelude.Nothing,
+        region = Prelude.Nothing,
+        warehouse = pWarehouse_,
+        stage = pStage_,
+        bucketName = pBucketName_
+      }
+
+-- | The name of the account.
+snowflakeConnectorProfileProperties_accountName :: Lens.Lens' SnowflakeConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+snowflakeConnectorProfileProperties_accountName = Lens.lens (\SnowflakeConnectorProfileProperties' {accountName} -> accountName) (\s@SnowflakeConnectorProfileProperties' {} a -> s {accountName = a} :: SnowflakeConnectorProfileProperties)
+
+-- | The bucket path that refers to the Amazon S3 bucket associated with
+-- Snowflake.
+snowflakeConnectorProfileProperties_bucketPrefix :: Lens.Lens' SnowflakeConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+snowflakeConnectorProfileProperties_bucketPrefix = Lens.lens (\SnowflakeConnectorProfileProperties' {bucketPrefix} -> bucketPrefix) (\s@SnowflakeConnectorProfileProperties' {} a -> s {bucketPrefix = a} :: SnowflakeConnectorProfileProperties)
+
+-- | The Snowflake Private Link service name to be used for private data
+-- transfers.
+snowflakeConnectorProfileProperties_privateLinkServiceName :: Lens.Lens' SnowflakeConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+snowflakeConnectorProfileProperties_privateLinkServiceName = Lens.lens (\SnowflakeConnectorProfileProperties' {privateLinkServiceName} -> privateLinkServiceName) (\s@SnowflakeConnectorProfileProperties' {} a -> s {privateLinkServiceName = a} :: SnowflakeConnectorProfileProperties)
+
+-- | The Amazon Web Services Region of the Snowflake account.
+snowflakeConnectorProfileProperties_region :: Lens.Lens' SnowflakeConnectorProfileProperties (Prelude.Maybe Prelude.Text)
+snowflakeConnectorProfileProperties_region = Lens.lens (\SnowflakeConnectorProfileProperties' {region} -> region) (\s@SnowflakeConnectorProfileProperties' {} a -> s {region = a} :: SnowflakeConnectorProfileProperties)
+
+-- | The name of the Snowflake warehouse.
+snowflakeConnectorProfileProperties_warehouse :: Lens.Lens' SnowflakeConnectorProfileProperties Prelude.Text
+snowflakeConnectorProfileProperties_warehouse = Lens.lens (\SnowflakeConnectorProfileProperties' {warehouse} -> warehouse) (\s@SnowflakeConnectorProfileProperties' {} a -> s {warehouse = a} :: SnowflakeConnectorProfileProperties)
+
+-- | The name of the Amazon S3 stage that was created while setting up an
+-- Amazon S3 stage in the Snowflake account. This is written in the
+-- following format: \< Database>\< Schema>\<Stage Name>.
+snowflakeConnectorProfileProperties_stage :: Lens.Lens' SnowflakeConnectorProfileProperties Prelude.Text
+snowflakeConnectorProfileProperties_stage = Lens.lens (\SnowflakeConnectorProfileProperties' {stage} -> stage) (\s@SnowflakeConnectorProfileProperties' {} a -> s {stage = a} :: SnowflakeConnectorProfileProperties)
+
+-- | The name of the Amazon S3 bucket associated with Snowflake.
+snowflakeConnectorProfileProperties_bucketName :: Lens.Lens' SnowflakeConnectorProfileProperties Prelude.Text
+snowflakeConnectorProfileProperties_bucketName = Lens.lens (\SnowflakeConnectorProfileProperties' {bucketName} -> bucketName) (\s@SnowflakeConnectorProfileProperties' {} a -> s {bucketName = a} :: SnowflakeConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    SnowflakeConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "SnowflakeConnectorProfileProperties"
+      ( \x ->
+          SnowflakeConnectorProfileProperties'
+            Prelude.<$> (x Data..:? "accountName")
+            Prelude.<*> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "privateLinkServiceName")
+            Prelude.<*> (x Data..:? "region")
+            Prelude.<*> (x Data..: "warehouse")
+            Prelude.<*> (x Data..: "stage")
+            Prelude.<*> (x Data..: "bucketName")
+      )
+
+instance
+  Prelude.Hashable
+    SnowflakeConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    SnowflakeConnectorProfileProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` accountName
+        `Prelude.hashWithSalt` bucketPrefix
+        `Prelude.hashWithSalt` privateLinkServiceName
+        `Prelude.hashWithSalt` region
+        `Prelude.hashWithSalt` warehouse
+        `Prelude.hashWithSalt` stage
+        `Prelude.hashWithSalt` bucketName
+
+instance
+  Prelude.NFData
+    SnowflakeConnectorProfileProperties
+  where
+  rnf SnowflakeConnectorProfileProperties' {..} =
+    Prelude.rnf accountName
+      `Prelude.seq` Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf privateLinkServiceName
+      `Prelude.seq` Prelude.rnf region
+      `Prelude.seq` Prelude.rnf warehouse
+      `Prelude.seq` Prelude.rnf stage
+      `Prelude.seq` Prelude.rnf bucketName
+
+instance
+  Data.ToJSON
+    SnowflakeConnectorProfileProperties
+  where
+  toJSON SnowflakeConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accountName" Data..=) Prelude.<$> accountName,
+            ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("privateLinkServiceName" Data..=)
+              Prelude.<$> privateLinkServiceName,
+            ("region" Data..=) Prelude.<$> region,
+            Prelude.Just ("warehouse" Data..= warehouse),
+            Prelude.Just ("stage" Data..= stage),
+            Prelude.Just ("bucketName" Data..= bucketName)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SnowflakeDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/SnowflakeDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SnowflakeDestinationProperties.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.AppFlow.Types.SnowflakeDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SnowflakeDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import qualified 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 properties that are applied when Snowflake is being used as a
+-- destination.
+--
+-- /See:/ 'newSnowflakeDestinationProperties' smart constructor.
+data SnowflakeDestinationProperties = SnowflakeDestinationProperties'
+  { -- | The object key for the destination bucket in which Amazon AppFlow places
+    -- the files.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The settings that determine how Amazon AppFlow handles an error when
+    -- placing data in the Snowflake destination. For example, this setting
+    -- would determine if the flow should fail after one insertion error, or
+    -- continue and attempt to insert every record regardless of the initial
+    -- failure. @ErrorHandlingConfig@ is a part of the destination connector
+    -- details.
+    errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    -- | The object specified in the Snowflake flow destination.
+    object' :: Prelude.Text,
+    -- | The intermediate bucket that Amazon AppFlow uses when moving data into
+    -- Snowflake.
+    intermediateBucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SnowflakeDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketPrefix', 'snowflakeDestinationProperties_bucketPrefix' - The object key for the destination bucket in which Amazon AppFlow places
+-- the files.
+--
+-- 'errorHandlingConfig', 'snowflakeDestinationProperties_errorHandlingConfig' - The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the Snowflake destination. For example, this setting
+-- would determine if the flow should fail after one insertion error, or
+-- continue and attempt to insert every record regardless of the initial
+-- failure. @ErrorHandlingConfig@ is a part of the destination connector
+-- details.
+--
+-- 'object'', 'snowflakeDestinationProperties_object' - The object specified in the Snowflake flow destination.
+--
+-- 'intermediateBucketName', 'snowflakeDestinationProperties_intermediateBucketName' - The intermediate bucket that Amazon AppFlow uses when moving data into
+-- Snowflake.
+newSnowflakeDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  -- | 'intermediateBucketName'
+  Prelude.Text ->
+  SnowflakeDestinationProperties
+newSnowflakeDestinationProperties
+  pObject_
+  pIntermediateBucketName_ =
+    SnowflakeDestinationProperties'
+      { bucketPrefix =
+          Prelude.Nothing,
+        errorHandlingConfig = Prelude.Nothing,
+        object' = pObject_,
+        intermediateBucketName =
+          pIntermediateBucketName_
+      }
+
+-- | The object key for the destination bucket in which Amazon AppFlow places
+-- the files.
+snowflakeDestinationProperties_bucketPrefix :: Lens.Lens' SnowflakeDestinationProperties (Prelude.Maybe Prelude.Text)
+snowflakeDestinationProperties_bucketPrefix = Lens.lens (\SnowflakeDestinationProperties' {bucketPrefix} -> bucketPrefix) (\s@SnowflakeDestinationProperties' {} a -> s {bucketPrefix = a} :: SnowflakeDestinationProperties)
+
+-- | The settings that determine how Amazon AppFlow handles an error when
+-- placing data in the Snowflake destination. For example, this setting
+-- would determine if the flow should fail after one insertion error, or
+-- continue and attempt to insert every record regardless of the initial
+-- failure. @ErrorHandlingConfig@ is a part of the destination connector
+-- details.
+snowflakeDestinationProperties_errorHandlingConfig :: Lens.Lens' SnowflakeDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+snowflakeDestinationProperties_errorHandlingConfig = Lens.lens (\SnowflakeDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@SnowflakeDestinationProperties' {} a -> s {errorHandlingConfig = a} :: SnowflakeDestinationProperties)
+
+-- | The object specified in the Snowflake flow destination.
+snowflakeDestinationProperties_object :: Lens.Lens' SnowflakeDestinationProperties Prelude.Text
+snowflakeDestinationProperties_object = Lens.lens (\SnowflakeDestinationProperties' {object'} -> object') (\s@SnowflakeDestinationProperties' {} a -> s {object' = a} :: SnowflakeDestinationProperties)
+
+-- | The intermediate bucket that Amazon AppFlow uses when moving data into
+-- Snowflake.
+snowflakeDestinationProperties_intermediateBucketName :: Lens.Lens' SnowflakeDestinationProperties Prelude.Text
+snowflakeDestinationProperties_intermediateBucketName = Lens.lens (\SnowflakeDestinationProperties' {intermediateBucketName} -> intermediateBucketName) (\s@SnowflakeDestinationProperties' {} a -> s {intermediateBucketName = a} :: SnowflakeDestinationProperties)
+
+instance Data.FromJSON SnowflakeDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "SnowflakeDestinationProperties"
+      ( \x ->
+          SnowflakeDestinationProperties'
+            Prelude.<$> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..: "object")
+            Prelude.<*> (x Data..: "intermediateBucketName")
+      )
+
+instance
+  Prelude.Hashable
+    SnowflakeDestinationProperties
+  where
+  hashWithSalt
+    _salt
+    SnowflakeDestinationProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` bucketPrefix
+        `Prelude.hashWithSalt` errorHandlingConfig
+        `Prelude.hashWithSalt` object'
+        `Prelude.hashWithSalt` intermediateBucketName
+
+instance
+  Prelude.NFData
+    SnowflakeDestinationProperties
+  where
+  rnf SnowflakeDestinationProperties' {..} =
+    Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf object'
+      `Prelude.seq` Prelude.rnf intermediateBucketName
+
+instance Data.ToJSON SnowflakeDestinationProperties where
+  toJSON SnowflakeDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            Prelude.Just ("object" Data..= object'),
+            Prelude.Just
+              ( "intermediateBucketName"
+                  Data..= intermediateBucketName
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SnowflakeMetadata.hs b/gen/Amazonka/AppFlow/Types/SnowflakeMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SnowflakeMetadata.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SnowflakeMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SnowflakeMetadata where
+
+import qualified 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 connector metadata specific to Snowflake.
+--
+-- /See:/ 'newSnowflakeMetadata' smart constructor.
+data SnowflakeMetadata = SnowflakeMetadata'
+  { -- | Specifies the supported Amazon Web Services Regions when using
+    -- Snowflake.
+    supportedRegions :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SnowflakeMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'supportedRegions', 'snowflakeMetadata_supportedRegions' - Specifies the supported Amazon Web Services Regions when using
+-- Snowflake.
+newSnowflakeMetadata ::
+  SnowflakeMetadata
+newSnowflakeMetadata =
+  SnowflakeMetadata'
+    { supportedRegions =
+        Prelude.Nothing
+    }
+
+-- | Specifies the supported Amazon Web Services Regions when using
+-- Snowflake.
+snowflakeMetadata_supportedRegions :: Lens.Lens' SnowflakeMetadata (Prelude.Maybe [Prelude.Text])
+snowflakeMetadata_supportedRegions = Lens.lens (\SnowflakeMetadata' {supportedRegions} -> supportedRegions) (\s@SnowflakeMetadata' {} a -> s {supportedRegions = a} :: SnowflakeMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SnowflakeMetadata where
+  parseJSON =
+    Data.withObject
+      "SnowflakeMetadata"
+      ( \x ->
+          SnowflakeMetadata'
+            Prelude.<$> ( x
+                            Data..:? "supportedRegions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable SnowflakeMetadata where
+  hashWithSalt _salt SnowflakeMetadata' {..} =
+    _salt `Prelude.hashWithSalt` supportedRegions
+
+instance Prelude.NFData SnowflakeMetadata where
+  rnf SnowflakeMetadata' {..} =
+    Prelude.rnf supportedRegions
diff --git a/gen/Amazonka/AppFlow/Types/SourceConnectorProperties.hs b/gen/Amazonka/AppFlow/Types/SourceConnectorProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SourceConnectorProperties.hs
@@ -0,0 +1,296 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SourceConnectorProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SourceConnectorProperties where
+
+import Amazonka.AppFlow.Types.AmplitudeSourceProperties
+import Amazonka.AppFlow.Types.CustomConnectorSourceProperties
+import Amazonka.AppFlow.Types.DatadogSourceProperties
+import Amazonka.AppFlow.Types.DynatraceSourceProperties
+import Amazonka.AppFlow.Types.GoogleAnalyticsSourceProperties
+import Amazonka.AppFlow.Types.InforNexusSourceProperties
+import Amazonka.AppFlow.Types.MarketoSourceProperties
+import Amazonka.AppFlow.Types.S3SourceProperties
+import Amazonka.AppFlow.Types.SAPODataSourceProperties
+import Amazonka.AppFlow.Types.SalesforceSourceProperties
+import Amazonka.AppFlow.Types.ServiceNowSourceProperties
+import Amazonka.AppFlow.Types.SingularSourceProperties
+import Amazonka.AppFlow.Types.SlackSourceProperties
+import Amazonka.AppFlow.Types.TrendmicroSourceProperties
+import Amazonka.AppFlow.Types.VeevaSourceProperties
+import Amazonka.AppFlow.Types.ZendeskSourceProperties
+import qualified 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 the information that is required to query a particular
+-- connector.
+--
+-- /See:/ 'newSourceConnectorProperties' smart constructor.
+data SourceConnectorProperties = SourceConnectorProperties'
+  { -- | Specifies the information that is required for querying Amplitude.
+    amplitude :: Prelude.Maybe AmplitudeSourceProperties,
+    customConnector :: Prelude.Maybe CustomConnectorSourceProperties,
+    -- | Specifies the information that is required for querying Datadog.
+    datadog :: Prelude.Maybe DatadogSourceProperties,
+    -- | Specifies the information that is required for querying Dynatrace.
+    dynatrace :: Prelude.Maybe DynatraceSourceProperties,
+    -- | Specifies the information that is required for querying Google
+    -- Analytics.
+    googleAnalytics :: Prelude.Maybe GoogleAnalyticsSourceProperties,
+    -- | Specifies the information that is required for querying Infor Nexus.
+    inforNexus :: Prelude.Maybe InforNexusSourceProperties,
+    -- | Specifies the information that is required for querying Marketo.
+    marketo :: Prelude.Maybe MarketoSourceProperties,
+    -- | Specifies the information that is required for querying Amazon S3.
+    s3 :: Prelude.Maybe S3SourceProperties,
+    sAPOData :: Prelude.Maybe SAPODataSourceProperties,
+    -- | Specifies the information that is required for querying Salesforce.
+    salesforce :: Prelude.Maybe SalesforceSourceProperties,
+    -- | Specifies the information that is required for querying ServiceNow.
+    serviceNow :: Prelude.Maybe ServiceNowSourceProperties,
+    -- | Specifies the information that is required for querying Singular.
+    singular :: Prelude.Maybe SingularSourceProperties,
+    -- | Specifies the information that is required for querying Slack.
+    slack :: Prelude.Maybe SlackSourceProperties,
+    -- | Specifies the information that is required for querying Trend Micro.
+    trendmicro :: Prelude.Maybe TrendmicroSourceProperties,
+    -- | Specifies the information that is required for querying Veeva.
+    veeva :: Prelude.Maybe VeevaSourceProperties,
+    -- | Specifies the information that is required for querying Zendesk.
+    zendesk :: Prelude.Maybe ZendeskSourceProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceConnectorProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amplitude', 'sourceConnectorProperties_amplitude' - Specifies the information that is required for querying Amplitude.
+--
+-- 'customConnector', 'sourceConnectorProperties_customConnector' - Undocumented member.
+--
+-- 'datadog', 'sourceConnectorProperties_datadog' - Specifies the information that is required for querying Datadog.
+--
+-- 'dynatrace', 'sourceConnectorProperties_dynatrace' - Specifies the information that is required for querying Dynatrace.
+--
+-- 'googleAnalytics', 'sourceConnectorProperties_googleAnalytics' - Specifies the information that is required for querying Google
+-- Analytics.
+--
+-- 'inforNexus', 'sourceConnectorProperties_inforNexus' - Specifies the information that is required for querying Infor Nexus.
+--
+-- 'marketo', 'sourceConnectorProperties_marketo' - Specifies the information that is required for querying Marketo.
+--
+-- 's3', 'sourceConnectorProperties_s3' - Specifies the information that is required for querying Amazon S3.
+--
+-- 'sAPOData', 'sourceConnectorProperties_sAPOData' - Undocumented member.
+--
+-- 'salesforce', 'sourceConnectorProperties_salesforce' - Specifies the information that is required for querying Salesforce.
+--
+-- 'serviceNow', 'sourceConnectorProperties_serviceNow' - Specifies the information that is required for querying ServiceNow.
+--
+-- 'singular', 'sourceConnectorProperties_singular' - Specifies the information that is required for querying Singular.
+--
+-- 'slack', 'sourceConnectorProperties_slack' - Specifies the information that is required for querying Slack.
+--
+-- 'trendmicro', 'sourceConnectorProperties_trendmicro' - Specifies the information that is required for querying Trend Micro.
+--
+-- 'veeva', 'sourceConnectorProperties_veeva' - Specifies the information that is required for querying Veeva.
+--
+-- 'zendesk', 'sourceConnectorProperties_zendesk' - Specifies the information that is required for querying Zendesk.
+newSourceConnectorProperties ::
+  SourceConnectorProperties
+newSourceConnectorProperties =
+  SourceConnectorProperties'
+    { amplitude =
+        Prelude.Nothing,
+      customConnector = Prelude.Nothing,
+      datadog = Prelude.Nothing,
+      dynatrace = Prelude.Nothing,
+      googleAnalytics = Prelude.Nothing,
+      inforNexus = Prelude.Nothing,
+      marketo = Prelude.Nothing,
+      s3 = Prelude.Nothing,
+      sAPOData = Prelude.Nothing,
+      salesforce = Prelude.Nothing,
+      serviceNow = Prelude.Nothing,
+      singular = Prelude.Nothing,
+      slack = Prelude.Nothing,
+      trendmicro = Prelude.Nothing,
+      veeva = Prelude.Nothing,
+      zendesk = Prelude.Nothing
+    }
+
+-- | Specifies the information that is required for querying Amplitude.
+sourceConnectorProperties_amplitude :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe AmplitudeSourceProperties)
+sourceConnectorProperties_amplitude = Lens.lens (\SourceConnectorProperties' {amplitude} -> amplitude) (\s@SourceConnectorProperties' {} a -> s {amplitude = a} :: SourceConnectorProperties)
+
+-- | Undocumented member.
+sourceConnectorProperties_customConnector :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe CustomConnectorSourceProperties)
+sourceConnectorProperties_customConnector = Lens.lens (\SourceConnectorProperties' {customConnector} -> customConnector) (\s@SourceConnectorProperties' {} a -> s {customConnector = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Datadog.
+sourceConnectorProperties_datadog :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe DatadogSourceProperties)
+sourceConnectorProperties_datadog = Lens.lens (\SourceConnectorProperties' {datadog} -> datadog) (\s@SourceConnectorProperties' {} a -> s {datadog = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Dynatrace.
+sourceConnectorProperties_dynatrace :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe DynatraceSourceProperties)
+sourceConnectorProperties_dynatrace = Lens.lens (\SourceConnectorProperties' {dynatrace} -> dynatrace) (\s@SourceConnectorProperties' {} a -> s {dynatrace = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Google
+-- Analytics.
+sourceConnectorProperties_googleAnalytics :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe GoogleAnalyticsSourceProperties)
+sourceConnectorProperties_googleAnalytics = Lens.lens (\SourceConnectorProperties' {googleAnalytics} -> googleAnalytics) (\s@SourceConnectorProperties' {} a -> s {googleAnalytics = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Infor Nexus.
+sourceConnectorProperties_inforNexus :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe InforNexusSourceProperties)
+sourceConnectorProperties_inforNexus = Lens.lens (\SourceConnectorProperties' {inforNexus} -> inforNexus) (\s@SourceConnectorProperties' {} a -> s {inforNexus = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Marketo.
+sourceConnectorProperties_marketo :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe MarketoSourceProperties)
+sourceConnectorProperties_marketo = Lens.lens (\SourceConnectorProperties' {marketo} -> marketo) (\s@SourceConnectorProperties' {} a -> s {marketo = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Amazon S3.
+sourceConnectorProperties_s3 :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe S3SourceProperties)
+sourceConnectorProperties_s3 = Lens.lens (\SourceConnectorProperties' {s3} -> s3) (\s@SourceConnectorProperties' {} a -> s {s3 = a} :: SourceConnectorProperties)
+
+-- | Undocumented member.
+sourceConnectorProperties_sAPOData :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe SAPODataSourceProperties)
+sourceConnectorProperties_sAPOData = Lens.lens (\SourceConnectorProperties' {sAPOData} -> sAPOData) (\s@SourceConnectorProperties' {} a -> s {sAPOData = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Salesforce.
+sourceConnectorProperties_salesforce :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe SalesforceSourceProperties)
+sourceConnectorProperties_salesforce = Lens.lens (\SourceConnectorProperties' {salesforce} -> salesforce) (\s@SourceConnectorProperties' {} a -> s {salesforce = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying ServiceNow.
+sourceConnectorProperties_serviceNow :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe ServiceNowSourceProperties)
+sourceConnectorProperties_serviceNow = Lens.lens (\SourceConnectorProperties' {serviceNow} -> serviceNow) (\s@SourceConnectorProperties' {} a -> s {serviceNow = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Singular.
+sourceConnectorProperties_singular :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe SingularSourceProperties)
+sourceConnectorProperties_singular = Lens.lens (\SourceConnectorProperties' {singular} -> singular) (\s@SourceConnectorProperties' {} a -> s {singular = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Slack.
+sourceConnectorProperties_slack :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe SlackSourceProperties)
+sourceConnectorProperties_slack = Lens.lens (\SourceConnectorProperties' {slack} -> slack) (\s@SourceConnectorProperties' {} a -> s {slack = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Trend Micro.
+sourceConnectorProperties_trendmicro :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe TrendmicroSourceProperties)
+sourceConnectorProperties_trendmicro = Lens.lens (\SourceConnectorProperties' {trendmicro} -> trendmicro) (\s@SourceConnectorProperties' {} a -> s {trendmicro = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Veeva.
+sourceConnectorProperties_veeva :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe VeevaSourceProperties)
+sourceConnectorProperties_veeva = Lens.lens (\SourceConnectorProperties' {veeva} -> veeva) (\s@SourceConnectorProperties' {} a -> s {veeva = a} :: SourceConnectorProperties)
+
+-- | Specifies the information that is required for querying Zendesk.
+sourceConnectorProperties_zendesk :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe ZendeskSourceProperties)
+sourceConnectorProperties_zendesk = Lens.lens (\SourceConnectorProperties' {zendesk} -> zendesk) (\s@SourceConnectorProperties' {} a -> s {zendesk = a} :: SourceConnectorProperties)
+
+instance Data.FromJSON SourceConnectorProperties where
+  parseJSON =
+    Data.withObject
+      "SourceConnectorProperties"
+      ( \x ->
+          SourceConnectorProperties'
+            Prelude.<$> (x Data..:? "Amplitude")
+            Prelude.<*> (x Data..:? "CustomConnector")
+            Prelude.<*> (x Data..:? "Datadog")
+            Prelude.<*> (x Data..:? "Dynatrace")
+            Prelude.<*> (x Data..:? "GoogleAnalytics")
+            Prelude.<*> (x Data..:? "InforNexus")
+            Prelude.<*> (x Data..:? "Marketo")
+            Prelude.<*> (x Data..:? "S3")
+            Prelude.<*> (x Data..:? "SAPOData")
+            Prelude.<*> (x Data..:? "Salesforce")
+            Prelude.<*> (x Data..:? "ServiceNow")
+            Prelude.<*> (x Data..:? "Singular")
+            Prelude.<*> (x Data..:? "Slack")
+            Prelude.<*> (x Data..:? "Trendmicro")
+            Prelude.<*> (x Data..:? "Veeva")
+            Prelude.<*> (x Data..:? "Zendesk")
+      )
+
+instance Prelude.Hashable SourceConnectorProperties where
+  hashWithSalt _salt SourceConnectorProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` amplitude
+      `Prelude.hashWithSalt` customConnector
+      `Prelude.hashWithSalt` datadog
+      `Prelude.hashWithSalt` dynatrace
+      `Prelude.hashWithSalt` googleAnalytics
+      `Prelude.hashWithSalt` inforNexus
+      `Prelude.hashWithSalt` marketo
+      `Prelude.hashWithSalt` s3
+      `Prelude.hashWithSalt` sAPOData
+      `Prelude.hashWithSalt` salesforce
+      `Prelude.hashWithSalt` serviceNow
+      `Prelude.hashWithSalt` singular
+      `Prelude.hashWithSalt` slack
+      `Prelude.hashWithSalt` trendmicro
+      `Prelude.hashWithSalt` veeva
+      `Prelude.hashWithSalt` zendesk
+
+instance Prelude.NFData SourceConnectorProperties where
+  rnf SourceConnectorProperties' {..} =
+    Prelude.rnf amplitude
+      `Prelude.seq` Prelude.rnf customConnector
+      `Prelude.seq` Prelude.rnf datadog
+      `Prelude.seq` Prelude.rnf dynatrace
+      `Prelude.seq` Prelude.rnf googleAnalytics
+      `Prelude.seq` Prelude.rnf inforNexus
+      `Prelude.seq` Prelude.rnf marketo
+      `Prelude.seq` Prelude.rnf s3
+      `Prelude.seq` Prelude.rnf sAPOData
+      `Prelude.seq` Prelude.rnf salesforce
+      `Prelude.seq` Prelude.rnf serviceNow
+      `Prelude.seq` Prelude.rnf singular
+      `Prelude.seq` Prelude.rnf slack
+      `Prelude.seq` Prelude.rnf trendmicro
+      `Prelude.seq` Prelude.rnf veeva
+      `Prelude.seq` Prelude.rnf zendesk
+
+instance Data.ToJSON SourceConnectorProperties where
+  toJSON SourceConnectorProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Amplitude" Data..=) Prelude.<$> amplitude,
+            ("CustomConnector" Data..=)
+              Prelude.<$> customConnector,
+            ("Datadog" Data..=) Prelude.<$> datadog,
+            ("Dynatrace" Data..=) Prelude.<$> dynatrace,
+            ("GoogleAnalytics" Data..=)
+              Prelude.<$> googleAnalytics,
+            ("InforNexus" Data..=) Prelude.<$> inforNexus,
+            ("Marketo" Data..=) Prelude.<$> marketo,
+            ("S3" Data..=) Prelude.<$> s3,
+            ("SAPOData" Data..=) Prelude.<$> sAPOData,
+            ("Salesforce" Data..=) Prelude.<$> salesforce,
+            ("ServiceNow" Data..=) Prelude.<$> serviceNow,
+            ("Singular" Data..=) Prelude.<$> singular,
+            ("Slack" Data..=) Prelude.<$> slack,
+            ("Trendmicro" Data..=) Prelude.<$> trendmicro,
+            ("Veeva" Data..=) Prelude.<$> veeva,
+            ("Zendesk" Data..=) Prelude.<$> zendesk
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SourceFieldProperties.hs b/gen/Amazonka/AppFlow/Types/SourceFieldProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SourceFieldProperties.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SourceFieldProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SourceFieldProperties where
+
+import qualified 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 properties that can be applied to a field when the connector is
+-- being used as a source.
+--
+-- /See:/ 'newSourceFieldProperties' smart constructor.
+data SourceFieldProperties = SourceFieldProperties'
+  { -- | Indicates if the field can be queried.
+    isQueryable :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether the field can be returned in a search result.
+    isRetrievable :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates if this timestamp field can be used for incremental queries.
+    isTimestampFieldForIncrementalQueries :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceFieldProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'isQueryable', 'sourceFieldProperties_isQueryable' - Indicates if the field can be queried.
+--
+-- 'isRetrievable', 'sourceFieldProperties_isRetrievable' - Indicates whether the field can be returned in a search result.
+--
+-- 'isTimestampFieldForIncrementalQueries', 'sourceFieldProperties_isTimestampFieldForIncrementalQueries' - Indicates if this timestamp field can be used for incremental queries.
+newSourceFieldProperties ::
+  SourceFieldProperties
+newSourceFieldProperties =
+  SourceFieldProperties'
+    { isQueryable =
+        Prelude.Nothing,
+      isRetrievable = Prelude.Nothing,
+      isTimestampFieldForIncrementalQueries =
+        Prelude.Nothing
+    }
+
+-- | Indicates if the field can be queried.
+sourceFieldProperties_isQueryable :: Lens.Lens' SourceFieldProperties (Prelude.Maybe Prelude.Bool)
+sourceFieldProperties_isQueryable = Lens.lens (\SourceFieldProperties' {isQueryable} -> isQueryable) (\s@SourceFieldProperties' {} a -> s {isQueryable = a} :: SourceFieldProperties)
+
+-- | Indicates whether the field can be returned in a search result.
+sourceFieldProperties_isRetrievable :: Lens.Lens' SourceFieldProperties (Prelude.Maybe Prelude.Bool)
+sourceFieldProperties_isRetrievable = Lens.lens (\SourceFieldProperties' {isRetrievable} -> isRetrievable) (\s@SourceFieldProperties' {} a -> s {isRetrievable = a} :: SourceFieldProperties)
+
+-- | Indicates if this timestamp field can be used for incremental queries.
+sourceFieldProperties_isTimestampFieldForIncrementalQueries :: Lens.Lens' SourceFieldProperties (Prelude.Maybe Prelude.Bool)
+sourceFieldProperties_isTimestampFieldForIncrementalQueries = Lens.lens (\SourceFieldProperties' {isTimestampFieldForIncrementalQueries} -> isTimestampFieldForIncrementalQueries) (\s@SourceFieldProperties' {} a -> s {isTimestampFieldForIncrementalQueries = a} :: SourceFieldProperties)
+
+instance Data.FromJSON SourceFieldProperties where
+  parseJSON =
+    Data.withObject
+      "SourceFieldProperties"
+      ( \x ->
+          SourceFieldProperties'
+            Prelude.<$> (x Data..:? "isQueryable")
+            Prelude.<*> (x Data..:? "isRetrievable")
+            Prelude.<*> (x Data..:? "isTimestampFieldForIncrementalQueries")
+      )
+
+instance Prelude.Hashable SourceFieldProperties where
+  hashWithSalt _salt SourceFieldProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` isQueryable
+      `Prelude.hashWithSalt` isRetrievable
+      `Prelude.hashWithSalt` isTimestampFieldForIncrementalQueries
+
+instance Prelude.NFData SourceFieldProperties where
+  rnf SourceFieldProperties' {..} =
+    Prelude.rnf isQueryable
+      `Prelude.seq` Prelude.rnf isRetrievable
+      `Prelude.seq` Prelude.rnf isTimestampFieldForIncrementalQueries
diff --git a/gen/Amazonka/AppFlow/Types/SourceFlowConfig.hs b/gen/Amazonka/AppFlow/Types/SourceFlowConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SourceFlowConfig.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SourceFlowConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SourceFlowConfig where
+
+import Amazonka.AppFlow.Types.ConnectorType
+import Amazonka.AppFlow.Types.IncrementalPullConfig
+import Amazonka.AppFlow.Types.SourceConnectorProperties
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the configuration of the source connector
+-- used in the flow.
+--
+-- /See:/ 'newSourceFlowConfig' smart constructor.
+data SourceFlowConfig = SourceFlowConfig'
+  { -- | The API version of the connector when it\'s used as a source in the
+    -- flow.
+    apiVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector profile. This name must be unique for each
+    -- connector profile in the Amazon Web Services account.
+    connectorProfileName :: Prelude.Maybe Prelude.Text,
+    -- | Defines the configuration for a scheduled incremental data pull. If a
+    -- valid configuration is provided, the fields specified in the
+    -- configuration are used when querying for the incremental data pull.
+    incrementalPullConfig :: Prelude.Maybe IncrementalPullConfig,
+    -- | The type of connector, such as Salesforce, Amplitude, and so on.
+    connectorType :: ConnectorType,
+    -- | Specifies the information that is required to query a particular source
+    -- connector.
+    sourceConnectorProperties :: SourceConnectorProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceFlowConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiVersion', 'sourceFlowConfig_apiVersion' - The API version of the connector when it\'s used as a source in the
+-- flow.
+--
+-- 'connectorProfileName', 'sourceFlowConfig_connectorProfileName' - The name of the connector profile. This name must be unique for each
+-- connector profile in the Amazon Web Services account.
+--
+-- 'incrementalPullConfig', 'sourceFlowConfig_incrementalPullConfig' - Defines the configuration for a scheduled incremental data pull. If a
+-- valid configuration is provided, the fields specified in the
+-- configuration are used when querying for the incremental data pull.
+--
+-- 'connectorType', 'sourceFlowConfig_connectorType' - The type of connector, such as Salesforce, Amplitude, and so on.
+--
+-- 'sourceConnectorProperties', 'sourceFlowConfig_sourceConnectorProperties' - Specifies the information that is required to query a particular source
+-- connector.
+newSourceFlowConfig ::
+  -- | 'connectorType'
+  ConnectorType ->
+  -- | 'sourceConnectorProperties'
+  SourceConnectorProperties ->
+  SourceFlowConfig
+newSourceFlowConfig
+  pConnectorType_
+  pSourceConnectorProperties_ =
+    SourceFlowConfig'
+      { apiVersion = Prelude.Nothing,
+        connectorProfileName = Prelude.Nothing,
+        incrementalPullConfig = Prelude.Nothing,
+        connectorType = pConnectorType_,
+        sourceConnectorProperties =
+          pSourceConnectorProperties_
+      }
+
+-- | The API version of the connector when it\'s used as a source in the
+-- flow.
+sourceFlowConfig_apiVersion :: Lens.Lens' SourceFlowConfig (Prelude.Maybe Prelude.Text)
+sourceFlowConfig_apiVersion = Lens.lens (\SourceFlowConfig' {apiVersion} -> apiVersion) (\s@SourceFlowConfig' {} a -> s {apiVersion = a} :: SourceFlowConfig)
+
+-- | The name of the connector profile. This name must be unique for each
+-- connector profile in the Amazon Web Services account.
+sourceFlowConfig_connectorProfileName :: Lens.Lens' SourceFlowConfig (Prelude.Maybe Prelude.Text)
+sourceFlowConfig_connectorProfileName = Lens.lens (\SourceFlowConfig' {connectorProfileName} -> connectorProfileName) (\s@SourceFlowConfig' {} a -> s {connectorProfileName = a} :: SourceFlowConfig)
+
+-- | Defines the configuration for a scheduled incremental data pull. If a
+-- valid configuration is provided, the fields specified in the
+-- configuration are used when querying for the incremental data pull.
+sourceFlowConfig_incrementalPullConfig :: Lens.Lens' SourceFlowConfig (Prelude.Maybe IncrementalPullConfig)
+sourceFlowConfig_incrementalPullConfig = Lens.lens (\SourceFlowConfig' {incrementalPullConfig} -> incrementalPullConfig) (\s@SourceFlowConfig' {} a -> s {incrementalPullConfig = a} :: SourceFlowConfig)
+
+-- | The type of connector, such as Salesforce, Amplitude, and so on.
+sourceFlowConfig_connectorType :: Lens.Lens' SourceFlowConfig ConnectorType
+sourceFlowConfig_connectorType = Lens.lens (\SourceFlowConfig' {connectorType} -> connectorType) (\s@SourceFlowConfig' {} a -> s {connectorType = a} :: SourceFlowConfig)
+
+-- | Specifies the information that is required to query a particular source
+-- connector.
+sourceFlowConfig_sourceConnectorProperties :: Lens.Lens' SourceFlowConfig SourceConnectorProperties
+sourceFlowConfig_sourceConnectorProperties = Lens.lens (\SourceFlowConfig' {sourceConnectorProperties} -> sourceConnectorProperties) (\s@SourceFlowConfig' {} a -> s {sourceConnectorProperties = a} :: SourceFlowConfig)
+
+instance Data.FromJSON SourceFlowConfig where
+  parseJSON =
+    Data.withObject
+      "SourceFlowConfig"
+      ( \x ->
+          SourceFlowConfig'
+            Prelude.<$> (x Data..:? "apiVersion")
+            Prelude.<*> (x Data..:? "connectorProfileName")
+            Prelude.<*> (x Data..:? "incrementalPullConfig")
+            Prelude.<*> (x Data..: "connectorType")
+            Prelude.<*> (x Data..: "sourceConnectorProperties")
+      )
+
+instance Prelude.Hashable SourceFlowConfig where
+  hashWithSalt _salt SourceFlowConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiVersion
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` incrementalPullConfig
+      `Prelude.hashWithSalt` connectorType
+      `Prelude.hashWithSalt` sourceConnectorProperties
+
+instance Prelude.NFData SourceFlowConfig where
+  rnf SourceFlowConfig' {..} =
+    Prelude.rnf apiVersion
+      `Prelude.seq` Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf incrementalPullConfig
+      `Prelude.seq` Prelude.rnf connectorType
+      `Prelude.seq` Prelude.rnf sourceConnectorProperties
+
+instance Data.ToJSON SourceFlowConfig where
+  toJSON SourceFlowConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("apiVersion" Data..=) Prelude.<$> apiVersion,
+            ("connectorProfileName" Data..=)
+              Prelude.<$> connectorProfileName,
+            ("incrementalPullConfig" Data..=)
+              Prelude.<$> incrementalPullConfig,
+            Prelude.Just ("connectorType" Data..= connectorType),
+            Prelude.Just
+              ( "sourceConnectorProperties"
+                  Data..= sourceConnectorProperties
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SuccessResponseHandlingConfig.hs b/gen/Amazonka/AppFlow/Types/SuccessResponseHandlingConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SuccessResponseHandlingConfig.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.SuccessResponseHandlingConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SuccessResponseHandlingConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Determines how Amazon AppFlow handles the success response that it gets
+-- from the connector after placing data.
+--
+-- For example, this setting would determine where to write the response
+-- from the destination connector upon a successful insert operation.
+--
+-- /See:/ 'newSuccessResponseHandlingConfig' smart constructor.
+data SuccessResponseHandlingConfig = SuccessResponseHandlingConfig'
+  { -- | The name of the Amazon S3 bucket.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 bucket prefix.
+    bucketPrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SuccessResponseHandlingConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 'successResponseHandlingConfig_bucketName' - The name of the Amazon S3 bucket.
+--
+-- 'bucketPrefix', 'successResponseHandlingConfig_bucketPrefix' - The Amazon S3 bucket prefix.
+newSuccessResponseHandlingConfig ::
+  SuccessResponseHandlingConfig
+newSuccessResponseHandlingConfig =
+  SuccessResponseHandlingConfig'
+    { bucketName =
+        Prelude.Nothing,
+      bucketPrefix = Prelude.Nothing
+    }
+
+-- | The name of the Amazon S3 bucket.
+successResponseHandlingConfig_bucketName :: Lens.Lens' SuccessResponseHandlingConfig (Prelude.Maybe Prelude.Text)
+successResponseHandlingConfig_bucketName = Lens.lens (\SuccessResponseHandlingConfig' {bucketName} -> bucketName) (\s@SuccessResponseHandlingConfig' {} a -> s {bucketName = a} :: SuccessResponseHandlingConfig)
+
+-- | The Amazon S3 bucket prefix.
+successResponseHandlingConfig_bucketPrefix :: Lens.Lens' SuccessResponseHandlingConfig (Prelude.Maybe Prelude.Text)
+successResponseHandlingConfig_bucketPrefix = Lens.lens (\SuccessResponseHandlingConfig' {bucketPrefix} -> bucketPrefix) (\s@SuccessResponseHandlingConfig' {} a -> s {bucketPrefix = a} :: SuccessResponseHandlingConfig)
+
+instance Data.FromJSON SuccessResponseHandlingConfig where
+  parseJSON =
+    Data.withObject
+      "SuccessResponseHandlingConfig"
+      ( \x ->
+          SuccessResponseHandlingConfig'
+            Prelude.<$> (x Data..:? "bucketName")
+            Prelude.<*> (x Data..:? "bucketPrefix")
+      )
+
+instance
+  Prelude.Hashable
+    SuccessResponseHandlingConfig
+  where
+  hashWithSalt _salt SuccessResponseHandlingConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` bucketPrefix
+
+instance Prelude.NFData SuccessResponseHandlingConfig where
+  rnf SuccessResponseHandlingConfig' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf bucketPrefix
+
+instance Data.ToJSON SuccessResponseHandlingConfig where
+  toJSON SuccessResponseHandlingConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketName" Data..=) Prelude.<$> bucketName,
+            ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/SupportedFieldTypeDetails.hs b/gen/Amazonka/AppFlow/Types/SupportedFieldTypeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/SupportedFieldTypeDetails.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.AppFlow.Types.SupportedFieldTypeDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.SupportedFieldTypeDetails where
+
+import Amazonka.AppFlow.Types.FieldTypeDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains details regarding all the supported @FieldTypes@ and their
+-- corresponding @filterOperators@ and @supportedValues@.
+--
+-- /See:/ 'newSupportedFieldTypeDetails' smart constructor.
+data SupportedFieldTypeDetails = SupportedFieldTypeDetails'
+  { -- | The initial supported version for @fieldType@. If this is later changed
+    -- to a different version, v2 will be introduced.
+    v1 :: FieldTypeDetails
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SupportedFieldTypeDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'v1', 'supportedFieldTypeDetails_v1' - The initial supported version for @fieldType@. If this is later changed
+-- to a different version, v2 will be introduced.
+newSupportedFieldTypeDetails ::
+  -- | 'v1'
+  FieldTypeDetails ->
+  SupportedFieldTypeDetails
+newSupportedFieldTypeDetails pV1_ =
+  SupportedFieldTypeDetails' {v1 = pV1_}
+
+-- | The initial supported version for @fieldType@. If this is later changed
+-- to a different version, v2 will be introduced.
+supportedFieldTypeDetails_v1 :: Lens.Lens' SupportedFieldTypeDetails FieldTypeDetails
+supportedFieldTypeDetails_v1 = Lens.lens (\SupportedFieldTypeDetails' {v1} -> v1) (\s@SupportedFieldTypeDetails' {} a -> s {v1 = a} :: SupportedFieldTypeDetails)
+
+instance Data.FromJSON SupportedFieldTypeDetails where
+  parseJSON =
+    Data.withObject
+      "SupportedFieldTypeDetails"
+      ( \x ->
+          SupportedFieldTypeDetails'
+            Prelude.<$> (x Data..: "v1")
+      )
+
+instance Prelude.Hashable SupportedFieldTypeDetails where
+  hashWithSalt _salt SupportedFieldTypeDetails' {..} =
+    _salt `Prelude.hashWithSalt` v1
+
+instance Prelude.NFData SupportedFieldTypeDetails where
+  rnf SupportedFieldTypeDetails' {..} = Prelude.rnf v1
diff --git a/gen/Amazonka/AppFlow/Types/Task.hs b/gen/Amazonka/AppFlow/Types/Task.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/Task.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.Task
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.Task where
+
+import Amazonka.AppFlow.Types.ConnectorOperator
+import Amazonka.AppFlow.Types.OperatorPropertiesKeys
+import Amazonka.AppFlow.Types.TaskType
+import qualified 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 class for modeling different type of tasks. Task implementation varies
+-- based on the @TaskType@.
+--
+-- /See:/ 'newTask' smart constructor.
+data Task = Task'
+  { -- | The operation to be performed on the provided source fields.
+    connectorOperator :: Prelude.Maybe ConnectorOperator,
+    -- | A field in a destination connector, or a field value against which
+    -- Amazon AppFlow validates a source field.
+    destinationField :: Prelude.Maybe Prelude.Text,
+    -- | A map used to store task-related information. The execution service
+    -- looks for particular information based on the @TaskType@.
+    taskProperties :: Prelude.Maybe (Prelude.HashMap OperatorPropertiesKeys Prelude.Text),
+    -- | The source fields to which a particular task is applied.
+    sourceFields :: [Prelude.Text],
+    -- | Specifies the particular task implementation that Amazon AppFlow
+    -- performs.
+    taskType :: TaskType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Task' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorOperator', 'task_connectorOperator' - The operation to be performed on the provided source fields.
+--
+-- 'destinationField', 'task_destinationField' - A field in a destination connector, or a field value against which
+-- Amazon AppFlow validates a source field.
+--
+-- 'taskProperties', 'task_taskProperties' - A map used to store task-related information. The execution service
+-- looks for particular information based on the @TaskType@.
+--
+-- 'sourceFields', 'task_sourceFields' - The source fields to which a particular task is applied.
+--
+-- 'taskType', 'task_taskType' - Specifies the particular task implementation that Amazon AppFlow
+-- performs.
+newTask ::
+  -- | 'taskType'
+  TaskType ->
+  Task
+newTask pTaskType_ =
+  Task'
+    { connectorOperator = Prelude.Nothing,
+      destinationField = Prelude.Nothing,
+      taskProperties = Prelude.Nothing,
+      sourceFields = Prelude.mempty,
+      taskType = pTaskType_
+    }
+
+-- | The operation to be performed on the provided source fields.
+task_connectorOperator :: Lens.Lens' Task (Prelude.Maybe ConnectorOperator)
+task_connectorOperator = Lens.lens (\Task' {connectorOperator} -> connectorOperator) (\s@Task' {} a -> s {connectorOperator = a} :: Task)
+
+-- | A field in a destination connector, or a field value against which
+-- Amazon AppFlow validates a source field.
+task_destinationField :: Lens.Lens' Task (Prelude.Maybe Prelude.Text)
+task_destinationField = Lens.lens (\Task' {destinationField} -> destinationField) (\s@Task' {} a -> s {destinationField = a} :: Task)
+
+-- | A map used to store task-related information. The execution service
+-- looks for particular information based on the @TaskType@.
+task_taskProperties :: Lens.Lens' Task (Prelude.Maybe (Prelude.HashMap OperatorPropertiesKeys Prelude.Text))
+task_taskProperties = Lens.lens (\Task' {taskProperties} -> taskProperties) (\s@Task' {} a -> s {taskProperties = a} :: Task) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source fields to which a particular task is applied.
+task_sourceFields :: Lens.Lens' Task [Prelude.Text]
+task_sourceFields = Lens.lens (\Task' {sourceFields} -> sourceFields) (\s@Task' {} a -> s {sourceFields = a} :: Task) Prelude.. Lens.coerced
+
+-- | Specifies the particular task implementation that Amazon AppFlow
+-- performs.
+task_taskType :: Lens.Lens' Task TaskType
+task_taskType = Lens.lens (\Task' {taskType} -> taskType) (\s@Task' {} a -> s {taskType = a} :: Task)
+
+instance Data.FromJSON Task where
+  parseJSON =
+    Data.withObject
+      "Task"
+      ( \x ->
+          Task'
+            Prelude.<$> (x Data..:? "connectorOperator")
+            Prelude.<*> (x Data..:? "destinationField")
+            Prelude.<*> (x Data..:? "taskProperties" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "sourceFields" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "taskType")
+      )
+
+instance Prelude.Hashable Task where
+  hashWithSalt _salt Task' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorOperator
+      `Prelude.hashWithSalt` destinationField
+      `Prelude.hashWithSalt` taskProperties
+      `Prelude.hashWithSalt` sourceFields
+      `Prelude.hashWithSalt` taskType
+
+instance Prelude.NFData Task where
+  rnf Task' {..} =
+    Prelude.rnf connectorOperator
+      `Prelude.seq` Prelude.rnf destinationField
+      `Prelude.seq` Prelude.rnf taskProperties
+      `Prelude.seq` Prelude.rnf sourceFields
+      `Prelude.seq` Prelude.rnf taskType
+
+instance Data.ToJSON Task where
+  toJSON Task' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorOperator" Data..=)
+              Prelude.<$> connectorOperator,
+            ("destinationField" Data..=)
+              Prelude.<$> destinationField,
+            ("taskProperties" Data..=)
+              Prelude.<$> taskProperties,
+            Prelude.Just ("sourceFields" Data..= sourceFields),
+            Prelude.Just ("taskType" Data..= taskType)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/TaskType.hs b/gen/Amazonka/AppFlow/Types/TaskType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TaskType.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.TaskType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TaskType
+  ( TaskType
+      ( ..,
+        TaskType_Arithmetic,
+        TaskType_Filter,
+        TaskType_Map,
+        TaskType_Map_all,
+        TaskType_Mask,
+        TaskType_Merge,
+        TaskType_Partition,
+        TaskType_Passthrough,
+        TaskType_Truncate,
+        TaskType_Validate
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TaskType = TaskType'
+  { fromTaskType ::
+      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 TaskType_Arithmetic :: TaskType
+pattern TaskType_Arithmetic = TaskType' "Arithmetic"
+
+pattern TaskType_Filter :: TaskType
+pattern TaskType_Filter = TaskType' "Filter"
+
+pattern TaskType_Map :: TaskType
+pattern TaskType_Map = TaskType' "Map"
+
+pattern TaskType_Map_all :: TaskType
+pattern TaskType_Map_all = TaskType' "Map_all"
+
+pattern TaskType_Mask :: TaskType
+pattern TaskType_Mask = TaskType' "Mask"
+
+pattern TaskType_Merge :: TaskType
+pattern TaskType_Merge = TaskType' "Merge"
+
+pattern TaskType_Partition :: TaskType
+pattern TaskType_Partition = TaskType' "Partition"
+
+pattern TaskType_Passthrough :: TaskType
+pattern TaskType_Passthrough = TaskType' "Passthrough"
+
+pattern TaskType_Truncate :: TaskType
+pattern TaskType_Truncate = TaskType' "Truncate"
+
+pattern TaskType_Validate :: TaskType
+pattern TaskType_Validate = TaskType' "Validate"
+
+{-# COMPLETE
+  TaskType_Arithmetic,
+  TaskType_Filter,
+  TaskType_Map,
+  TaskType_Map_all,
+  TaskType_Mask,
+  TaskType_Merge,
+  TaskType_Partition,
+  TaskType_Passthrough,
+  TaskType_Truncate,
+  TaskType_Validate,
+  TaskType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/TrendmicroConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/TrendmicroConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TrendmicroConnectorOperator.hs
@@ -0,0 +1,131 @@
+{-# 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.AppFlow.Types.TrendmicroConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TrendmicroConnectorOperator
+  ( TrendmicroConnectorOperator
+      ( ..,
+        TrendmicroConnectorOperator_ADDITION,
+        TrendmicroConnectorOperator_DIVISION,
+        TrendmicroConnectorOperator_EQUAL_TO,
+        TrendmicroConnectorOperator_MASK_ALL,
+        TrendmicroConnectorOperator_MASK_FIRST_N,
+        TrendmicroConnectorOperator_MASK_LAST_N,
+        TrendmicroConnectorOperator_MULTIPLICATION,
+        TrendmicroConnectorOperator_NO_OP,
+        TrendmicroConnectorOperator_PROJECTION,
+        TrendmicroConnectorOperator_SUBTRACTION,
+        TrendmicroConnectorOperator_VALIDATE_NON_NEGATIVE,
+        TrendmicroConnectorOperator_VALIDATE_NON_NULL,
+        TrendmicroConnectorOperator_VALIDATE_NON_ZERO,
+        TrendmicroConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrendmicroConnectorOperator = TrendmicroConnectorOperator'
+  { fromTrendmicroConnectorOperator ::
+      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 TrendmicroConnectorOperator_ADDITION :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_ADDITION = TrendmicroConnectorOperator' "ADDITION"
+
+pattern TrendmicroConnectorOperator_DIVISION :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_DIVISION = TrendmicroConnectorOperator' "DIVISION"
+
+pattern TrendmicroConnectorOperator_EQUAL_TO :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_EQUAL_TO = TrendmicroConnectorOperator' "EQUAL_TO"
+
+pattern TrendmicroConnectorOperator_MASK_ALL :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_MASK_ALL = TrendmicroConnectorOperator' "MASK_ALL"
+
+pattern TrendmicroConnectorOperator_MASK_FIRST_N :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_MASK_FIRST_N = TrendmicroConnectorOperator' "MASK_FIRST_N"
+
+pattern TrendmicroConnectorOperator_MASK_LAST_N :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_MASK_LAST_N = TrendmicroConnectorOperator' "MASK_LAST_N"
+
+pattern TrendmicroConnectorOperator_MULTIPLICATION :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_MULTIPLICATION = TrendmicroConnectorOperator' "MULTIPLICATION"
+
+pattern TrendmicroConnectorOperator_NO_OP :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_NO_OP = TrendmicroConnectorOperator' "NO_OP"
+
+pattern TrendmicroConnectorOperator_PROJECTION :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_PROJECTION = TrendmicroConnectorOperator' "PROJECTION"
+
+pattern TrendmicroConnectorOperator_SUBTRACTION :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_SUBTRACTION = TrendmicroConnectorOperator' "SUBTRACTION"
+
+pattern TrendmicroConnectorOperator_VALIDATE_NON_NEGATIVE :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_VALIDATE_NON_NEGATIVE = TrendmicroConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern TrendmicroConnectorOperator_VALIDATE_NON_NULL :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_VALIDATE_NON_NULL = TrendmicroConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern TrendmicroConnectorOperator_VALIDATE_NON_ZERO :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_VALIDATE_NON_ZERO = TrendmicroConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern TrendmicroConnectorOperator_VALIDATE_NUMERIC :: TrendmicroConnectorOperator
+pattern TrendmicroConnectorOperator_VALIDATE_NUMERIC = TrendmicroConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  TrendmicroConnectorOperator_ADDITION,
+  TrendmicroConnectorOperator_DIVISION,
+  TrendmicroConnectorOperator_EQUAL_TO,
+  TrendmicroConnectorOperator_MASK_ALL,
+  TrendmicroConnectorOperator_MASK_FIRST_N,
+  TrendmicroConnectorOperator_MASK_LAST_N,
+  TrendmicroConnectorOperator_MULTIPLICATION,
+  TrendmicroConnectorOperator_NO_OP,
+  TrendmicroConnectorOperator_PROJECTION,
+  TrendmicroConnectorOperator_SUBTRACTION,
+  TrendmicroConnectorOperator_VALIDATE_NON_NEGATIVE,
+  TrendmicroConnectorOperator_VALIDATE_NON_NULL,
+  TrendmicroConnectorOperator_VALIDATE_NON_ZERO,
+  TrendmicroConnectorOperator_VALIDATE_NUMERIC,
+  TrendmicroConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/TrendmicroConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/TrendmicroConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TrendmicroConnectorProfileCredentials.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.AppFlow.Types.TrendmicroConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TrendmicroConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required when using Trend
+-- Micro.
+--
+-- /See:/ 'newTrendmicroConnectorProfileCredentials' smart constructor.
+data TrendmicroConnectorProfileCredentials = TrendmicroConnectorProfileCredentials'
+  { -- | The Secret Access Key portion of the credentials.
+    apiSecretKey :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrendmicroConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiSecretKey', 'trendmicroConnectorProfileCredentials_apiSecretKey' - The Secret Access Key portion of the credentials.
+newTrendmicroConnectorProfileCredentials ::
+  -- | 'apiSecretKey'
+  Prelude.Text ->
+  TrendmicroConnectorProfileCredentials
+newTrendmicroConnectorProfileCredentials
+  pApiSecretKey_ =
+    TrendmicroConnectorProfileCredentials'
+      { apiSecretKey =
+          Data._Sensitive
+            Lens.# pApiSecretKey_
+      }
+
+-- | The Secret Access Key portion of the credentials.
+trendmicroConnectorProfileCredentials_apiSecretKey :: Lens.Lens' TrendmicroConnectorProfileCredentials Prelude.Text
+trendmicroConnectorProfileCredentials_apiSecretKey = Lens.lens (\TrendmicroConnectorProfileCredentials' {apiSecretKey} -> apiSecretKey) (\s@TrendmicroConnectorProfileCredentials' {} a -> s {apiSecretKey = a} :: TrendmicroConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    TrendmicroConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    TrendmicroConnectorProfileCredentials' {..} =
+      _salt `Prelude.hashWithSalt` apiSecretKey
+
+instance
+  Prelude.NFData
+    TrendmicroConnectorProfileCredentials
+  where
+  rnf TrendmicroConnectorProfileCredentials' {..} =
+    Prelude.rnf apiSecretKey
+
+instance
+  Data.ToJSON
+    TrendmicroConnectorProfileCredentials
+  where
+  toJSON TrendmicroConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("apiSecretKey" Data..= apiSecretKey)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/TrendmicroConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/TrendmicroConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TrendmicroConnectorProfileProperties.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.TrendmicroConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TrendmicroConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Trend
+-- Micro.
+--
+-- /See:/ 'newTrendmicroConnectorProfileProperties' smart constructor.
+data TrendmicroConnectorProfileProperties = TrendmicroConnectorProfileProperties'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrendmicroConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newTrendmicroConnectorProfileProperties ::
+  TrendmicroConnectorProfileProperties
+newTrendmicroConnectorProfileProperties =
+  TrendmicroConnectorProfileProperties'
+
+instance
+  Data.FromJSON
+    TrendmicroConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "TrendmicroConnectorProfileProperties"
+      ( \x ->
+          Prelude.pure TrendmicroConnectorProfileProperties'
+      )
+
+instance
+  Prelude.Hashable
+    TrendmicroConnectorProfileProperties
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    TrendmicroConnectorProfileProperties
+  where
+  rnf _ = ()
+
+instance
+  Data.ToJSON
+    TrendmicroConnectorProfileProperties
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AppFlow/Types/TrendmicroMetadata.hs b/gen/Amazonka/AppFlow/Types/TrendmicroMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TrendmicroMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.TrendmicroMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TrendmicroMetadata where
+
+import qualified 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 connector metadata specific to Trend Micro.
+--
+-- /See:/ 'newTrendmicroMetadata' smart constructor.
+data TrendmicroMetadata = TrendmicroMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrendmicroMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newTrendmicroMetadata ::
+  TrendmicroMetadata
+newTrendmicroMetadata = TrendmicroMetadata'
+
+instance Data.FromJSON TrendmicroMetadata where
+  parseJSON =
+    Data.withObject
+      "TrendmicroMetadata"
+      (\x -> Prelude.pure TrendmicroMetadata')
+
+instance Prelude.Hashable TrendmicroMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData TrendmicroMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/TrendmicroSourceProperties.hs b/gen/Amazonka/AppFlow/Types/TrendmicroSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TrendmicroSourceProperties.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.TrendmicroSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TrendmicroSourceProperties where
+
+import qualified 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 properties that are applied when using Trend Micro as a flow source.
+--
+-- /See:/ 'newTrendmicroSourceProperties' smart constructor.
+data TrendmicroSourceProperties = TrendmicroSourceProperties'
+  { -- | The object specified in the Trend Micro flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrendmicroSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'trendmicroSourceProperties_object' - The object specified in the Trend Micro flow source.
+newTrendmicroSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  TrendmicroSourceProperties
+newTrendmicroSourceProperties pObject_ =
+  TrendmicroSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Trend Micro flow source.
+trendmicroSourceProperties_object :: Lens.Lens' TrendmicroSourceProperties Prelude.Text
+trendmicroSourceProperties_object = Lens.lens (\TrendmicroSourceProperties' {object'} -> object') (\s@TrendmicroSourceProperties' {} a -> s {object' = a} :: TrendmicroSourceProperties)
+
+instance Data.FromJSON TrendmicroSourceProperties where
+  parseJSON =
+    Data.withObject
+      "TrendmicroSourceProperties"
+      ( \x ->
+          TrendmicroSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable TrendmicroSourceProperties where
+  hashWithSalt _salt TrendmicroSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData TrendmicroSourceProperties where
+  rnf TrendmicroSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON TrendmicroSourceProperties where
+  toJSON TrendmicroSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/TriggerConfig.hs b/gen/Amazonka/AppFlow/Types/TriggerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TriggerConfig.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.AppFlow.Types.TriggerConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TriggerConfig where
+
+import Amazonka.AppFlow.Types.TriggerProperties
+import Amazonka.AppFlow.Types.TriggerType
+import qualified 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 trigger settings that determine how and when Amazon AppFlow runs the
+-- specified flow.
+--
+-- /See:/ 'newTriggerConfig' smart constructor.
+data TriggerConfig = TriggerConfig'
+  { -- | Specifies the configuration details of a schedule-triggered flow as
+    -- defined by the user. Currently, these settings only apply to the
+    -- @Scheduled@ trigger type.
+    triggerProperties :: Prelude.Maybe TriggerProperties,
+    -- | Specifies the type of flow trigger. This can be @OnDemand@, @Scheduled@,
+    -- or @Event@.
+    triggerType :: TriggerType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TriggerConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'triggerProperties', 'triggerConfig_triggerProperties' - Specifies the configuration details of a schedule-triggered flow as
+-- defined by the user. Currently, these settings only apply to the
+-- @Scheduled@ trigger type.
+--
+-- 'triggerType', 'triggerConfig_triggerType' - Specifies the type of flow trigger. This can be @OnDemand@, @Scheduled@,
+-- or @Event@.
+newTriggerConfig ::
+  -- | 'triggerType'
+  TriggerType ->
+  TriggerConfig
+newTriggerConfig pTriggerType_ =
+  TriggerConfig'
+    { triggerProperties = Prelude.Nothing,
+      triggerType = pTriggerType_
+    }
+
+-- | Specifies the configuration details of a schedule-triggered flow as
+-- defined by the user. Currently, these settings only apply to the
+-- @Scheduled@ trigger type.
+triggerConfig_triggerProperties :: Lens.Lens' TriggerConfig (Prelude.Maybe TriggerProperties)
+triggerConfig_triggerProperties = Lens.lens (\TriggerConfig' {triggerProperties} -> triggerProperties) (\s@TriggerConfig' {} a -> s {triggerProperties = a} :: TriggerConfig)
+
+-- | Specifies the type of flow trigger. This can be @OnDemand@, @Scheduled@,
+-- or @Event@.
+triggerConfig_triggerType :: Lens.Lens' TriggerConfig TriggerType
+triggerConfig_triggerType = Lens.lens (\TriggerConfig' {triggerType} -> triggerType) (\s@TriggerConfig' {} a -> s {triggerType = a} :: TriggerConfig)
+
+instance Data.FromJSON TriggerConfig where
+  parseJSON =
+    Data.withObject
+      "TriggerConfig"
+      ( \x ->
+          TriggerConfig'
+            Prelude.<$> (x Data..:? "triggerProperties")
+            Prelude.<*> (x Data..: "triggerType")
+      )
+
+instance Prelude.Hashable TriggerConfig where
+  hashWithSalt _salt TriggerConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` triggerProperties
+      `Prelude.hashWithSalt` triggerType
+
+instance Prelude.NFData TriggerConfig where
+  rnf TriggerConfig' {..} =
+    Prelude.rnf triggerProperties
+      `Prelude.seq` Prelude.rnf triggerType
+
+instance Data.ToJSON TriggerConfig where
+  toJSON TriggerConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("triggerProperties" Data..=)
+              Prelude.<$> triggerProperties,
+            Prelude.Just ("triggerType" Data..= triggerType)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/TriggerProperties.hs b/gen/Amazonka/AppFlow/Types/TriggerProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TriggerProperties.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.TriggerProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TriggerProperties where
+
+import Amazonka.AppFlow.Types.ScheduledTriggerProperties
+import qualified 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 the configuration details that control the trigger for a flow.
+-- Currently, these settings only apply to the @Scheduled@ trigger type.
+--
+-- /See:/ 'newTriggerProperties' smart constructor.
+data TriggerProperties = TriggerProperties'
+  { -- | Specifies the configuration details of a schedule-triggered flow as
+    -- defined by the user.
+    scheduled :: Prelude.Maybe ScheduledTriggerProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TriggerProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'scheduled', 'triggerProperties_scheduled' - Specifies the configuration details of a schedule-triggered flow as
+-- defined by the user.
+newTriggerProperties ::
+  TriggerProperties
+newTriggerProperties =
+  TriggerProperties' {scheduled = Prelude.Nothing}
+
+-- | Specifies the configuration details of a schedule-triggered flow as
+-- defined by the user.
+triggerProperties_scheduled :: Lens.Lens' TriggerProperties (Prelude.Maybe ScheduledTriggerProperties)
+triggerProperties_scheduled = Lens.lens (\TriggerProperties' {scheduled} -> scheduled) (\s@TriggerProperties' {} a -> s {scheduled = a} :: TriggerProperties)
+
+instance Data.FromJSON TriggerProperties where
+  parseJSON =
+    Data.withObject
+      "TriggerProperties"
+      ( \x ->
+          TriggerProperties'
+            Prelude.<$> (x Data..:? "Scheduled")
+      )
+
+instance Prelude.Hashable TriggerProperties where
+  hashWithSalt _salt TriggerProperties' {..} =
+    _salt `Prelude.hashWithSalt` scheduled
+
+instance Prelude.NFData TriggerProperties where
+  rnf TriggerProperties' {..} = Prelude.rnf scheduled
+
+instance Data.ToJSON TriggerProperties where
+  toJSON TriggerProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Scheduled" Data..=) Prelude.<$> scheduled]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/TriggerType.hs b/gen/Amazonka/AppFlow/Types/TriggerType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/TriggerType.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.AppFlow.Types.TriggerType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.TriggerType
+  ( TriggerType
+      ( ..,
+        TriggerType_Event,
+        TriggerType_OnDemand,
+        TriggerType_Scheduled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TriggerType = TriggerType'
+  { fromTriggerType ::
+      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 TriggerType_Event :: TriggerType
+pattern TriggerType_Event = TriggerType' "Event"
+
+pattern TriggerType_OnDemand :: TriggerType
+pattern TriggerType_OnDemand = TriggerType' "OnDemand"
+
+pattern TriggerType_Scheduled :: TriggerType
+pattern TriggerType_Scheduled = TriggerType' "Scheduled"
+
+{-# COMPLETE
+  TriggerType_Event,
+  TriggerType_OnDemand,
+  TriggerType_Scheduled,
+  TriggerType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/UpsolverDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/UpsolverDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/UpsolverDestinationProperties.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.UpsolverDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.UpsolverDestinationProperties where
+
+import Amazonka.AppFlow.Types.UpsolverS3OutputFormatConfig
+import qualified 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 properties that are applied when Upsolver is used as a destination.
+--
+-- /See:/ 'newUpsolverDestinationProperties' smart constructor.
+data UpsolverDestinationProperties = UpsolverDestinationProperties'
+  { -- | The object key for the destination Upsolver Amazon S3 bucket in which
+    -- Amazon AppFlow places the files.
+    bucketPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The Upsolver Amazon S3 bucket name in which Amazon AppFlow places the
+    -- transferred data.
+    bucketName :: Prelude.Text,
+    -- | The configuration that determines how data is formatted when Upsolver is
+    -- used as the flow destination.
+    s3OutputFormatConfig :: UpsolverS3OutputFormatConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpsolverDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketPrefix', 'upsolverDestinationProperties_bucketPrefix' - The object key for the destination Upsolver Amazon S3 bucket in which
+-- Amazon AppFlow places the files.
+--
+-- 'bucketName', 'upsolverDestinationProperties_bucketName' - The Upsolver Amazon S3 bucket name in which Amazon AppFlow places the
+-- transferred data.
+--
+-- 's3OutputFormatConfig', 'upsolverDestinationProperties_s3OutputFormatConfig' - The configuration that determines how data is formatted when Upsolver is
+-- used as the flow destination.
+newUpsolverDestinationProperties ::
+  -- | 'bucketName'
+  Prelude.Text ->
+  -- | 's3OutputFormatConfig'
+  UpsolverS3OutputFormatConfig ->
+  UpsolverDestinationProperties
+newUpsolverDestinationProperties
+  pBucketName_
+  pS3OutputFormatConfig_ =
+    UpsolverDestinationProperties'
+      { bucketPrefix =
+          Prelude.Nothing,
+        bucketName = pBucketName_,
+        s3OutputFormatConfig =
+          pS3OutputFormatConfig_
+      }
+
+-- | The object key for the destination Upsolver Amazon S3 bucket in which
+-- Amazon AppFlow places the files.
+upsolverDestinationProperties_bucketPrefix :: Lens.Lens' UpsolverDestinationProperties (Prelude.Maybe Prelude.Text)
+upsolverDestinationProperties_bucketPrefix = Lens.lens (\UpsolverDestinationProperties' {bucketPrefix} -> bucketPrefix) (\s@UpsolverDestinationProperties' {} a -> s {bucketPrefix = a} :: UpsolverDestinationProperties)
+
+-- | The Upsolver Amazon S3 bucket name in which Amazon AppFlow places the
+-- transferred data.
+upsolverDestinationProperties_bucketName :: Lens.Lens' UpsolverDestinationProperties Prelude.Text
+upsolverDestinationProperties_bucketName = Lens.lens (\UpsolverDestinationProperties' {bucketName} -> bucketName) (\s@UpsolverDestinationProperties' {} a -> s {bucketName = a} :: UpsolverDestinationProperties)
+
+-- | The configuration that determines how data is formatted when Upsolver is
+-- used as the flow destination.
+upsolverDestinationProperties_s3OutputFormatConfig :: Lens.Lens' UpsolverDestinationProperties UpsolverS3OutputFormatConfig
+upsolverDestinationProperties_s3OutputFormatConfig = Lens.lens (\UpsolverDestinationProperties' {s3OutputFormatConfig} -> s3OutputFormatConfig) (\s@UpsolverDestinationProperties' {} a -> s {s3OutputFormatConfig = a} :: UpsolverDestinationProperties)
+
+instance Data.FromJSON UpsolverDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "UpsolverDestinationProperties"
+      ( \x ->
+          UpsolverDestinationProperties'
+            Prelude.<$> (x Data..:? "bucketPrefix")
+            Prelude.<*> (x Data..: "bucketName")
+            Prelude.<*> (x Data..: "s3OutputFormatConfig")
+      )
+
+instance
+  Prelude.Hashable
+    UpsolverDestinationProperties
+  where
+  hashWithSalt _salt UpsolverDestinationProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketPrefix
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` s3OutputFormatConfig
+
+instance Prelude.NFData UpsolverDestinationProperties where
+  rnf UpsolverDestinationProperties' {..} =
+    Prelude.rnf bucketPrefix
+      `Prelude.seq` Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf s3OutputFormatConfig
+
+instance Data.ToJSON UpsolverDestinationProperties where
+  toJSON UpsolverDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketPrefix" Data..=) Prelude.<$> bucketPrefix,
+            Prelude.Just ("bucketName" Data..= bucketName),
+            Prelude.Just
+              ( "s3OutputFormatConfig"
+                  Data..= s3OutputFormatConfig
+              )
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/UpsolverMetadata.hs b/gen/Amazonka/AppFlow/Types/UpsolverMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/UpsolverMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.UpsolverMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.UpsolverMetadata where
+
+import qualified 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 connector metadata specific to Upsolver.
+--
+-- /See:/ 'newUpsolverMetadata' smart constructor.
+data UpsolverMetadata = UpsolverMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpsolverMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpsolverMetadata ::
+  UpsolverMetadata
+newUpsolverMetadata = UpsolverMetadata'
+
+instance Data.FromJSON UpsolverMetadata where
+  parseJSON =
+    Data.withObject
+      "UpsolverMetadata"
+      (\x -> Prelude.pure UpsolverMetadata')
+
+instance Prelude.Hashable UpsolverMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData UpsolverMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/UpsolverS3OutputFormatConfig.hs b/gen/Amazonka/AppFlow/Types/UpsolverS3OutputFormatConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/UpsolverS3OutputFormatConfig.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.AppFlow.Types.UpsolverS3OutputFormatConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.UpsolverS3OutputFormatConfig where
+
+import Amazonka.AppFlow.Types.AggregationConfig
+import Amazonka.AppFlow.Types.FileType
+import Amazonka.AppFlow.Types.PrefixConfig
+import qualified 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 determines how Amazon AppFlow formats the flow
+-- output data when Upsolver is used as the destination.
+--
+-- /See:/ 'newUpsolverS3OutputFormatConfig' smart constructor.
+data UpsolverS3OutputFormatConfig = UpsolverS3OutputFormatConfig'
+  { aggregationConfig :: Prelude.Maybe AggregationConfig,
+    -- | Indicates the file type that Amazon AppFlow places in the Upsolver
+    -- Amazon S3 bucket.
+    fileType :: Prelude.Maybe FileType,
+    prefixConfig :: PrefixConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpsolverS3OutputFormatConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aggregationConfig', 'upsolverS3OutputFormatConfig_aggregationConfig' - Undocumented member.
+--
+-- 'fileType', 'upsolverS3OutputFormatConfig_fileType' - Indicates the file type that Amazon AppFlow places in the Upsolver
+-- Amazon S3 bucket.
+--
+-- 'prefixConfig', 'upsolverS3OutputFormatConfig_prefixConfig' - Undocumented member.
+newUpsolverS3OutputFormatConfig ::
+  -- | 'prefixConfig'
+  PrefixConfig ->
+  UpsolverS3OutputFormatConfig
+newUpsolverS3OutputFormatConfig pPrefixConfig_ =
+  UpsolverS3OutputFormatConfig'
+    { aggregationConfig =
+        Prelude.Nothing,
+      fileType = Prelude.Nothing,
+      prefixConfig = pPrefixConfig_
+    }
+
+-- | Undocumented member.
+upsolverS3OutputFormatConfig_aggregationConfig :: Lens.Lens' UpsolverS3OutputFormatConfig (Prelude.Maybe AggregationConfig)
+upsolverS3OutputFormatConfig_aggregationConfig = Lens.lens (\UpsolverS3OutputFormatConfig' {aggregationConfig} -> aggregationConfig) (\s@UpsolverS3OutputFormatConfig' {} a -> s {aggregationConfig = a} :: UpsolverS3OutputFormatConfig)
+
+-- | Indicates the file type that Amazon AppFlow places in the Upsolver
+-- Amazon S3 bucket.
+upsolverS3OutputFormatConfig_fileType :: Lens.Lens' UpsolverS3OutputFormatConfig (Prelude.Maybe FileType)
+upsolverS3OutputFormatConfig_fileType = Lens.lens (\UpsolverS3OutputFormatConfig' {fileType} -> fileType) (\s@UpsolverS3OutputFormatConfig' {} a -> s {fileType = a} :: UpsolverS3OutputFormatConfig)
+
+-- | Undocumented member.
+upsolverS3OutputFormatConfig_prefixConfig :: Lens.Lens' UpsolverS3OutputFormatConfig PrefixConfig
+upsolverS3OutputFormatConfig_prefixConfig = Lens.lens (\UpsolverS3OutputFormatConfig' {prefixConfig} -> prefixConfig) (\s@UpsolverS3OutputFormatConfig' {} a -> s {prefixConfig = a} :: UpsolverS3OutputFormatConfig)
+
+instance Data.FromJSON UpsolverS3OutputFormatConfig where
+  parseJSON =
+    Data.withObject
+      "UpsolverS3OutputFormatConfig"
+      ( \x ->
+          UpsolverS3OutputFormatConfig'
+            Prelude.<$> (x Data..:? "aggregationConfig")
+            Prelude.<*> (x Data..:? "fileType")
+            Prelude.<*> (x Data..: "prefixConfig")
+      )
+
+instance
+  Prelude.Hashable
+    UpsolverS3OutputFormatConfig
+  where
+  hashWithSalt _salt UpsolverS3OutputFormatConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` aggregationConfig
+      `Prelude.hashWithSalt` fileType
+      `Prelude.hashWithSalt` prefixConfig
+
+instance Prelude.NFData UpsolverS3OutputFormatConfig where
+  rnf UpsolverS3OutputFormatConfig' {..} =
+    Prelude.rnf aggregationConfig
+      `Prelude.seq` Prelude.rnf fileType
+      `Prelude.seq` Prelude.rnf prefixConfig
+
+instance Data.ToJSON UpsolverS3OutputFormatConfig where
+  toJSON UpsolverS3OutputFormatConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("aggregationConfig" Data..=)
+              Prelude.<$> aggregationConfig,
+            ("fileType" Data..=) Prelude.<$> fileType,
+            Prelude.Just ("prefixConfig" Data..= prefixConfig)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/VeevaConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/VeevaConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/VeevaConnectorOperator.hs
@@ -0,0 +1,166 @@
+{-# 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.AppFlow.Types.VeevaConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.VeevaConnectorOperator
+  ( VeevaConnectorOperator
+      ( ..,
+        VeevaConnectorOperator_ADDITION,
+        VeevaConnectorOperator_BETWEEN,
+        VeevaConnectorOperator_CONTAINS,
+        VeevaConnectorOperator_DIVISION,
+        VeevaConnectorOperator_EQUAL_TO,
+        VeevaConnectorOperator_GREATER_THAN,
+        VeevaConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+        VeevaConnectorOperator_LESS_THAN,
+        VeevaConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+        VeevaConnectorOperator_MASK_ALL,
+        VeevaConnectorOperator_MASK_FIRST_N,
+        VeevaConnectorOperator_MASK_LAST_N,
+        VeevaConnectorOperator_MULTIPLICATION,
+        VeevaConnectorOperator_NOT_EQUAL_TO,
+        VeevaConnectorOperator_NO_OP,
+        VeevaConnectorOperator_PROJECTION,
+        VeevaConnectorOperator_SUBTRACTION,
+        VeevaConnectorOperator_VALIDATE_NON_NEGATIVE,
+        VeevaConnectorOperator_VALIDATE_NON_NULL,
+        VeevaConnectorOperator_VALIDATE_NON_ZERO,
+        VeevaConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VeevaConnectorOperator = VeevaConnectorOperator'
+  { fromVeevaConnectorOperator ::
+      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 VeevaConnectorOperator_ADDITION :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_ADDITION = VeevaConnectorOperator' "ADDITION"
+
+pattern VeevaConnectorOperator_BETWEEN :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_BETWEEN = VeevaConnectorOperator' "BETWEEN"
+
+pattern VeevaConnectorOperator_CONTAINS :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_CONTAINS = VeevaConnectorOperator' "CONTAINS"
+
+pattern VeevaConnectorOperator_DIVISION :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_DIVISION = VeevaConnectorOperator' "DIVISION"
+
+pattern VeevaConnectorOperator_EQUAL_TO :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_EQUAL_TO = VeevaConnectorOperator' "EQUAL_TO"
+
+pattern VeevaConnectorOperator_GREATER_THAN :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_GREATER_THAN = VeevaConnectorOperator' "GREATER_THAN"
+
+pattern VeevaConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_GREATER_THAN_OR_EQUAL_TO = VeevaConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"
+
+pattern VeevaConnectorOperator_LESS_THAN :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_LESS_THAN = VeevaConnectorOperator' "LESS_THAN"
+
+pattern VeevaConnectorOperator_LESS_THAN_OR_EQUAL_TO :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_LESS_THAN_OR_EQUAL_TO = VeevaConnectorOperator' "LESS_THAN_OR_EQUAL_TO"
+
+pattern VeevaConnectorOperator_MASK_ALL :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_MASK_ALL = VeevaConnectorOperator' "MASK_ALL"
+
+pattern VeevaConnectorOperator_MASK_FIRST_N :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_MASK_FIRST_N = VeevaConnectorOperator' "MASK_FIRST_N"
+
+pattern VeevaConnectorOperator_MASK_LAST_N :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_MASK_LAST_N = VeevaConnectorOperator' "MASK_LAST_N"
+
+pattern VeevaConnectorOperator_MULTIPLICATION :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_MULTIPLICATION = VeevaConnectorOperator' "MULTIPLICATION"
+
+pattern VeevaConnectorOperator_NOT_EQUAL_TO :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_NOT_EQUAL_TO = VeevaConnectorOperator' "NOT_EQUAL_TO"
+
+pattern VeevaConnectorOperator_NO_OP :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_NO_OP = VeevaConnectorOperator' "NO_OP"
+
+pattern VeevaConnectorOperator_PROJECTION :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_PROJECTION = VeevaConnectorOperator' "PROJECTION"
+
+pattern VeevaConnectorOperator_SUBTRACTION :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_SUBTRACTION = VeevaConnectorOperator' "SUBTRACTION"
+
+pattern VeevaConnectorOperator_VALIDATE_NON_NEGATIVE :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_VALIDATE_NON_NEGATIVE = VeevaConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern VeevaConnectorOperator_VALIDATE_NON_NULL :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_VALIDATE_NON_NULL = VeevaConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern VeevaConnectorOperator_VALIDATE_NON_ZERO :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_VALIDATE_NON_ZERO = VeevaConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern VeevaConnectorOperator_VALIDATE_NUMERIC :: VeevaConnectorOperator
+pattern VeevaConnectorOperator_VALIDATE_NUMERIC = VeevaConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  VeevaConnectorOperator_ADDITION,
+  VeevaConnectorOperator_BETWEEN,
+  VeevaConnectorOperator_CONTAINS,
+  VeevaConnectorOperator_DIVISION,
+  VeevaConnectorOperator_EQUAL_TO,
+  VeevaConnectorOperator_GREATER_THAN,
+  VeevaConnectorOperator_GREATER_THAN_OR_EQUAL_TO,
+  VeevaConnectorOperator_LESS_THAN,
+  VeevaConnectorOperator_LESS_THAN_OR_EQUAL_TO,
+  VeevaConnectorOperator_MASK_ALL,
+  VeevaConnectorOperator_MASK_FIRST_N,
+  VeevaConnectorOperator_MASK_LAST_N,
+  VeevaConnectorOperator_MULTIPLICATION,
+  VeevaConnectorOperator_NOT_EQUAL_TO,
+  VeevaConnectorOperator_NO_OP,
+  VeevaConnectorOperator_PROJECTION,
+  VeevaConnectorOperator_SUBTRACTION,
+  VeevaConnectorOperator_VALIDATE_NON_NEGATIVE,
+  VeevaConnectorOperator_VALIDATE_NON_NULL,
+  VeevaConnectorOperator_VALIDATE_NON_ZERO,
+  VeevaConnectorOperator_VALIDATE_NUMERIC,
+  VeevaConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/VeevaConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/VeevaConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/VeevaConnectorProfileCredentials.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.VeevaConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.VeevaConnectorProfileCredentials where
+
+import qualified 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 connector-specific profile credentials required when using Veeva.
+--
+-- /See:/ 'newVeevaConnectorProfileCredentials' smart constructor.
+data VeevaConnectorProfileCredentials = VeevaConnectorProfileCredentials'
+  { -- | The name of the user.
+    username :: Prelude.Text,
+    -- | The password that corresponds to the user name.
+    password :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VeevaConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'username', 'veevaConnectorProfileCredentials_username' - The name of the user.
+--
+-- 'password', 'veevaConnectorProfileCredentials_password' - The password that corresponds to the user name.
+newVeevaConnectorProfileCredentials ::
+  -- | 'username'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  VeevaConnectorProfileCredentials
+newVeevaConnectorProfileCredentials
+  pUsername_
+  pPassword_ =
+    VeevaConnectorProfileCredentials'
+      { username =
+          pUsername_,
+        password =
+          Data._Sensitive Lens.# pPassword_
+      }
+
+-- | The name of the user.
+veevaConnectorProfileCredentials_username :: Lens.Lens' VeevaConnectorProfileCredentials Prelude.Text
+veevaConnectorProfileCredentials_username = Lens.lens (\VeevaConnectorProfileCredentials' {username} -> username) (\s@VeevaConnectorProfileCredentials' {} a -> s {username = a} :: VeevaConnectorProfileCredentials)
+
+-- | The password that corresponds to the user name.
+veevaConnectorProfileCredentials_password :: Lens.Lens' VeevaConnectorProfileCredentials Prelude.Text
+veevaConnectorProfileCredentials_password = Lens.lens (\VeevaConnectorProfileCredentials' {password} -> password) (\s@VeevaConnectorProfileCredentials' {} a -> s {password = a} :: VeevaConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    VeevaConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    VeevaConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` username
+        `Prelude.hashWithSalt` password
+
+instance
+  Prelude.NFData
+    VeevaConnectorProfileCredentials
+  where
+  rnf VeevaConnectorProfileCredentials' {..} =
+    Prelude.rnf username
+      `Prelude.seq` Prelude.rnf password
+
+instance Data.ToJSON VeevaConnectorProfileCredentials where
+  toJSON VeevaConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("username" Data..= username),
+            Prelude.Just ("password" Data..= password)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/VeevaConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/VeevaConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/VeevaConnectorProfileProperties.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.VeevaConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.VeevaConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Veeva.
+--
+-- /See:/ 'newVeevaConnectorProfileProperties' smart constructor.
+data VeevaConnectorProfileProperties = VeevaConnectorProfileProperties'
+  { -- | The location of the Veeva resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VeevaConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'veevaConnectorProfileProperties_instanceUrl' - The location of the Veeva resource.
+newVeevaConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  VeevaConnectorProfileProperties
+newVeevaConnectorProfileProperties pInstanceUrl_ =
+  VeevaConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Veeva resource.
+veevaConnectorProfileProperties_instanceUrl :: Lens.Lens' VeevaConnectorProfileProperties Prelude.Text
+veevaConnectorProfileProperties_instanceUrl = Lens.lens (\VeevaConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@VeevaConnectorProfileProperties' {} a -> s {instanceUrl = a} :: VeevaConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    VeevaConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "VeevaConnectorProfileProperties"
+      ( \x ->
+          VeevaConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    VeevaConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    VeevaConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    VeevaConnectorProfileProperties
+  where
+  rnf VeevaConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance Data.ToJSON VeevaConnectorProfileProperties where
+  toJSON VeevaConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/VeevaMetadata.hs b/gen/Amazonka/AppFlow/Types/VeevaMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/VeevaMetadata.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.VeevaMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.VeevaMetadata where
+
+import qualified 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 connector metadata specific to Veeva.
+--
+-- /See:/ 'newVeevaMetadata' smart constructor.
+data VeevaMetadata = VeevaMetadata'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VeevaMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newVeevaMetadata ::
+  VeevaMetadata
+newVeevaMetadata = VeevaMetadata'
+
+instance Data.FromJSON VeevaMetadata where
+  parseJSON =
+    Data.withObject
+      "VeevaMetadata"
+      (\x -> Prelude.pure VeevaMetadata')
+
+instance Prelude.Hashable VeevaMetadata where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData VeevaMetadata where
+  rnf _ = ()
diff --git a/gen/Amazonka/AppFlow/Types/VeevaSourceProperties.hs b/gen/Amazonka/AppFlow/Types/VeevaSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/VeevaSourceProperties.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.VeevaSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.VeevaSourceProperties where
+
+import qualified 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 properties that are applied when using Veeva as a flow source.
+--
+-- /See:/ 'newVeevaSourceProperties' smart constructor.
+data VeevaSourceProperties = VeevaSourceProperties'
+  { -- | The document type specified in the Veeva document extract flow.
+    documentType :: Prelude.Maybe Prelude.Text,
+    -- | Boolean value to include All Versions of files in Veeva document extract
+    -- flow.
+    includeAllVersions :: Prelude.Maybe Prelude.Bool,
+    -- | Boolean value to include file renditions in Veeva document extract flow.
+    includeRenditions :: Prelude.Maybe Prelude.Bool,
+    -- | Boolean value to include source files in Veeva document extract flow.
+    includeSourceFiles :: Prelude.Maybe Prelude.Bool,
+    -- | The object specified in the Veeva flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VeevaSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'documentType', 'veevaSourceProperties_documentType' - The document type specified in the Veeva document extract flow.
+--
+-- 'includeAllVersions', 'veevaSourceProperties_includeAllVersions' - Boolean value to include All Versions of files in Veeva document extract
+-- flow.
+--
+-- 'includeRenditions', 'veevaSourceProperties_includeRenditions' - Boolean value to include file renditions in Veeva document extract flow.
+--
+-- 'includeSourceFiles', 'veevaSourceProperties_includeSourceFiles' - Boolean value to include source files in Veeva document extract flow.
+--
+-- 'object'', 'veevaSourceProperties_object' - The object specified in the Veeva flow source.
+newVeevaSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  VeevaSourceProperties
+newVeevaSourceProperties pObject_ =
+  VeevaSourceProperties'
+    { documentType =
+        Prelude.Nothing,
+      includeAllVersions = Prelude.Nothing,
+      includeRenditions = Prelude.Nothing,
+      includeSourceFiles = Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | The document type specified in the Veeva document extract flow.
+veevaSourceProperties_documentType :: Lens.Lens' VeevaSourceProperties (Prelude.Maybe Prelude.Text)
+veevaSourceProperties_documentType = Lens.lens (\VeevaSourceProperties' {documentType} -> documentType) (\s@VeevaSourceProperties' {} a -> s {documentType = a} :: VeevaSourceProperties)
+
+-- | Boolean value to include All Versions of files in Veeva document extract
+-- flow.
+veevaSourceProperties_includeAllVersions :: Lens.Lens' VeevaSourceProperties (Prelude.Maybe Prelude.Bool)
+veevaSourceProperties_includeAllVersions = Lens.lens (\VeevaSourceProperties' {includeAllVersions} -> includeAllVersions) (\s@VeevaSourceProperties' {} a -> s {includeAllVersions = a} :: VeevaSourceProperties)
+
+-- | Boolean value to include file renditions in Veeva document extract flow.
+veevaSourceProperties_includeRenditions :: Lens.Lens' VeevaSourceProperties (Prelude.Maybe Prelude.Bool)
+veevaSourceProperties_includeRenditions = Lens.lens (\VeevaSourceProperties' {includeRenditions} -> includeRenditions) (\s@VeevaSourceProperties' {} a -> s {includeRenditions = a} :: VeevaSourceProperties)
+
+-- | Boolean value to include source files in Veeva document extract flow.
+veevaSourceProperties_includeSourceFiles :: Lens.Lens' VeevaSourceProperties (Prelude.Maybe Prelude.Bool)
+veevaSourceProperties_includeSourceFiles = Lens.lens (\VeevaSourceProperties' {includeSourceFiles} -> includeSourceFiles) (\s@VeevaSourceProperties' {} a -> s {includeSourceFiles = a} :: VeevaSourceProperties)
+
+-- | The object specified in the Veeva flow source.
+veevaSourceProperties_object :: Lens.Lens' VeevaSourceProperties Prelude.Text
+veevaSourceProperties_object = Lens.lens (\VeevaSourceProperties' {object'} -> object') (\s@VeevaSourceProperties' {} a -> s {object' = a} :: VeevaSourceProperties)
+
+instance Data.FromJSON VeevaSourceProperties where
+  parseJSON =
+    Data.withObject
+      "VeevaSourceProperties"
+      ( \x ->
+          VeevaSourceProperties'
+            Prelude.<$> (x Data..:? "documentType")
+            Prelude.<*> (x Data..:? "includeAllVersions")
+            Prelude.<*> (x Data..:? "includeRenditions")
+            Prelude.<*> (x Data..:? "includeSourceFiles")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance Prelude.Hashable VeevaSourceProperties where
+  hashWithSalt _salt VeevaSourceProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` documentType
+      `Prelude.hashWithSalt` includeAllVersions
+      `Prelude.hashWithSalt` includeRenditions
+      `Prelude.hashWithSalt` includeSourceFiles
+      `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData VeevaSourceProperties where
+  rnf VeevaSourceProperties' {..} =
+    Prelude.rnf documentType
+      `Prelude.seq` Prelude.rnf includeAllVersions
+      `Prelude.seq` Prelude.rnf includeRenditions
+      `Prelude.seq` Prelude.rnf includeSourceFiles
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON VeevaSourceProperties where
+  toJSON VeevaSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("documentType" Data..=) Prelude.<$> documentType,
+            ("includeAllVersions" Data..=)
+              Prelude.<$> includeAllVersions,
+            ("includeRenditions" Data..=)
+              Prelude.<$> includeRenditions,
+            ("includeSourceFiles" Data..=)
+              Prelude.<$> includeSourceFiles,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/WriteOperationType.hs b/gen/Amazonka/AppFlow/Types/WriteOperationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/WriteOperationType.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.AppFlow.Types.WriteOperationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.WriteOperationType
+  ( WriteOperationType
+      ( ..,
+        WriteOperationType_DELETE,
+        WriteOperationType_INSERT,
+        WriteOperationType_UPDATE,
+        WriteOperationType_UPSERT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The possible write operations in the destination connector. When this
+-- value is not provided, this defaults to the @INSERT@ operation.
+newtype WriteOperationType = WriteOperationType'
+  { fromWriteOperationType ::
+      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 WriteOperationType_DELETE :: WriteOperationType
+pattern WriteOperationType_DELETE = WriteOperationType' "DELETE"
+
+pattern WriteOperationType_INSERT :: WriteOperationType
+pattern WriteOperationType_INSERT = WriteOperationType' "INSERT"
+
+pattern WriteOperationType_UPDATE :: WriteOperationType
+pattern WriteOperationType_UPDATE = WriteOperationType' "UPDATE"
+
+pattern WriteOperationType_UPSERT :: WriteOperationType
+pattern WriteOperationType_UPSERT = WriteOperationType' "UPSERT"
+
+{-# COMPLETE
+  WriteOperationType_DELETE,
+  WriteOperationType_INSERT,
+  WriteOperationType_UPDATE,
+  WriteOperationType_UPSERT,
+  WriteOperationType'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ZendeskConnectorOperator.hs b/gen/Amazonka/AppFlow/Types/ZendeskConnectorOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ZendeskConnectorOperator.hs
@@ -0,0 +1,131 @@
+{-# 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.AppFlow.Types.ZendeskConnectorOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ZendeskConnectorOperator
+  ( ZendeskConnectorOperator
+      ( ..,
+        ZendeskConnectorOperator_ADDITION,
+        ZendeskConnectorOperator_DIVISION,
+        ZendeskConnectorOperator_GREATER_THAN,
+        ZendeskConnectorOperator_MASK_ALL,
+        ZendeskConnectorOperator_MASK_FIRST_N,
+        ZendeskConnectorOperator_MASK_LAST_N,
+        ZendeskConnectorOperator_MULTIPLICATION,
+        ZendeskConnectorOperator_NO_OP,
+        ZendeskConnectorOperator_PROJECTION,
+        ZendeskConnectorOperator_SUBTRACTION,
+        ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE,
+        ZendeskConnectorOperator_VALIDATE_NON_NULL,
+        ZendeskConnectorOperator_VALIDATE_NON_ZERO,
+        ZendeskConnectorOperator_VALIDATE_NUMERIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ZendeskConnectorOperator = ZendeskConnectorOperator'
+  { fromZendeskConnectorOperator ::
+      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 ZendeskConnectorOperator_ADDITION :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_ADDITION = ZendeskConnectorOperator' "ADDITION"
+
+pattern ZendeskConnectorOperator_DIVISION :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_DIVISION = ZendeskConnectorOperator' "DIVISION"
+
+pattern ZendeskConnectorOperator_GREATER_THAN :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_GREATER_THAN = ZendeskConnectorOperator' "GREATER_THAN"
+
+pattern ZendeskConnectorOperator_MASK_ALL :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_MASK_ALL = ZendeskConnectorOperator' "MASK_ALL"
+
+pattern ZendeskConnectorOperator_MASK_FIRST_N :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_MASK_FIRST_N = ZendeskConnectorOperator' "MASK_FIRST_N"
+
+pattern ZendeskConnectorOperator_MASK_LAST_N :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_MASK_LAST_N = ZendeskConnectorOperator' "MASK_LAST_N"
+
+pattern ZendeskConnectorOperator_MULTIPLICATION :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_MULTIPLICATION = ZendeskConnectorOperator' "MULTIPLICATION"
+
+pattern ZendeskConnectorOperator_NO_OP :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_NO_OP = ZendeskConnectorOperator' "NO_OP"
+
+pattern ZendeskConnectorOperator_PROJECTION :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_PROJECTION = ZendeskConnectorOperator' "PROJECTION"
+
+pattern ZendeskConnectorOperator_SUBTRACTION :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_SUBTRACTION = ZendeskConnectorOperator' "SUBTRACTION"
+
+pattern ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE = ZendeskConnectorOperator' "VALIDATE_NON_NEGATIVE"
+
+pattern ZendeskConnectorOperator_VALIDATE_NON_NULL :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_VALIDATE_NON_NULL = ZendeskConnectorOperator' "VALIDATE_NON_NULL"
+
+pattern ZendeskConnectorOperator_VALIDATE_NON_ZERO :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_VALIDATE_NON_ZERO = ZendeskConnectorOperator' "VALIDATE_NON_ZERO"
+
+pattern ZendeskConnectorOperator_VALIDATE_NUMERIC :: ZendeskConnectorOperator
+pattern ZendeskConnectorOperator_VALIDATE_NUMERIC = ZendeskConnectorOperator' "VALIDATE_NUMERIC"
+
+{-# COMPLETE
+  ZendeskConnectorOperator_ADDITION,
+  ZendeskConnectorOperator_DIVISION,
+  ZendeskConnectorOperator_GREATER_THAN,
+  ZendeskConnectorOperator_MASK_ALL,
+  ZendeskConnectorOperator_MASK_FIRST_N,
+  ZendeskConnectorOperator_MASK_LAST_N,
+  ZendeskConnectorOperator_MULTIPLICATION,
+  ZendeskConnectorOperator_NO_OP,
+  ZendeskConnectorOperator_PROJECTION,
+  ZendeskConnectorOperator_SUBTRACTION,
+  ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE,
+  ZendeskConnectorOperator_VALIDATE_NON_NULL,
+  ZendeskConnectorOperator_VALIDATE_NON_ZERO,
+  ZendeskConnectorOperator_VALIDATE_NUMERIC,
+  ZendeskConnectorOperator'
+  #-}
diff --git a/gen/Amazonka/AppFlow/Types/ZendeskConnectorProfileCredentials.hs b/gen/Amazonka/AppFlow/Types/ZendeskConnectorProfileCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ZendeskConnectorProfileCredentials.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.AppFlow.Types.ZendeskConnectorProfileCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ZendeskConnectorProfileCredentials where
+
+import Amazonka.AppFlow.Types.ConnectorOAuthRequest
+import qualified 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 connector-specific profile credentials required when using Zendesk.
+--
+-- /See:/ 'newZendeskConnectorProfileCredentials' smart constructor.
+data ZendeskConnectorProfileCredentials = ZendeskConnectorProfileCredentials'
+  { -- | The credentials used to access protected Zendesk resources.
+    accessToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The OAuth requirement needed to request security tokens from the
+    -- connector endpoint.
+    oAuthRequest :: Prelude.Maybe ConnectorOAuthRequest,
+    -- | The identifier for the desired client.
+    clientId :: Prelude.Text,
+    -- | The client secret used by the OAuth client to authenticate to the
+    -- authorization server.
+    clientSecret :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ZendeskConnectorProfileCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accessToken', 'zendeskConnectorProfileCredentials_accessToken' - The credentials used to access protected Zendesk resources.
+--
+-- 'oAuthRequest', 'zendeskConnectorProfileCredentials_oAuthRequest' - The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+--
+-- 'clientId', 'zendeskConnectorProfileCredentials_clientId' - The identifier for the desired client.
+--
+-- 'clientSecret', 'zendeskConnectorProfileCredentials_clientSecret' - The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+newZendeskConnectorProfileCredentials ::
+  -- | 'clientId'
+  Prelude.Text ->
+  -- | 'clientSecret'
+  Prelude.Text ->
+  ZendeskConnectorProfileCredentials
+newZendeskConnectorProfileCredentials
+  pClientId_
+  pClientSecret_ =
+    ZendeskConnectorProfileCredentials'
+      { accessToken =
+          Prelude.Nothing,
+        oAuthRequest = Prelude.Nothing,
+        clientId = pClientId_,
+        clientSecret =
+          Data._Sensitive Lens.# pClientSecret_
+      }
+
+-- | The credentials used to access protected Zendesk resources.
+zendeskConnectorProfileCredentials_accessToken :: Lens.Lens' ZendeskConnectorProfileCredentials (Prelude.Maybe Prelude.Text)
+zendeskConnectorProfileCredentials_accessToken = Lens.lens (\ZendeskConnectorProfileCredentials' {accessToken} -> accessToken) (\s@ZendeskConnectorProfileCredentials' {} a -> s {accessToken = a} :: ZendeskConnectorProfileCredentials) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The OAuth requirement needed to request security tokens from the
+-- connector endpoint.
+zendeskConnectorProfileCredentials_oAuthRequest :: Lens.Lens' ZendeskConnectorProfileCredentials (Prelude.Maybe ConnectorOAuthRequest)
+zendeskConnectorProfileCredentials_oAuthRequest = Lens.lens (\ZendeskConnectorProfileCredentials' {oAuthRequest} -> oAuthRequest) (\s@ZendeskConnectorProfileCredentials' {} a -> s {oAuthRequest = a} :: ZendeskConnectorProfileCredentials)
+
+-- | The identifier for the desired client.
+zendeskConnectorProfileCredentials_clientId :: Lens.Lens' ZendeskConnectorProfileCredentials Prelude.Text
+zendeskConnectorProfileCredentials_clientId = Lens.lens (\ZendeskConnectorProfileCredentials' {clientId} -> clientId) (\s@ZendeskConnectorProfileCredentials' {} a -> s {clientId = a} :: ZendeskConnectorProfileCredentials)
+
+-- | The client secret used by the OAuth client to authenticate to the
+-- authorization server.
+zendeskConnectorProfileCredentials_clientSecret :: Lens.Lens' ZendeskConnectorProfileCredentials Prelude.Text
+zendeskConnectorProfileCredentials_clientSecret = Lens.lens (\ZendeskConnectorProfileCredentials' {clientSecret} -> clientSecret) (\s@ZendeskConnectorProfileCredentials' {} a -> s {clientSecret = a} :: ZendeskConnectorProfileCredentials) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    ZendeskConnectorProfileCredentials
+  where
+  hashWithSalt
+    _salt
+    ZendeskConnectorProfileCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` accessToken
+        `Prelude.hashWithSalt` oAuthRequest
+        `Prelude.hashWithSalt` clientId
+        `Prelude.hashWithSalt` clientSecret
+
+instance
+  Prelude.NFData
+    ZendeskConnectorProfileCredentials
+  where
+  rnf ZendeskConnectorProfileCredentials' {..} =
+    Prelude.rnf accessToken
+      `Prelude.seq` Prelude.rnf oAuthRequest
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+
+instance
+  Data.ToJSON
+    ZendeskConnectorProfileCredentials
+  where
+  toJSON ZendeskConnectorProfileCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessToken" Data..=) Prelude.<$> accessToken,
+            ("oAuthRequest" Data..=) Prelude.<$> oAuthRequest,
+            Prelude.Just ("clientId" Data..= clientId),
+            Prelude.Just ("clientSecret" Data..= clientSecret)
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ZendeskConnectorProfileProperties.hs b/gen/Amazonka/AppFlow/Types/ZendeskConnectorProfileProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ZendeskConnectorProfileProperties.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.AppFlow.Types.ZendeskConnectorProfileProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ZendeskConnectorProfileProperties where
+
+import qualified 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 connector-specific profile properties required when using Zendesk.
+--
+-- /See:/ 'newZendeskConnectorProfileProperties' smart constructor.
+data ZendeskConnectorProfileProperties = ZendeskConnectorProfileProperties'
+  { -- | The location of the Zendesk resource.
+    instanceUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ZendeskConnectorProfileProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUrl', 'zendeskConnectorProfileProperties_instanceUrl' - The location of the Zendesk resource.
+newZendeskConnectorProfileProperties ::
+  -- | 'instanceUrl'
+  Prelude.Text ->
+  ZendeskConnectorProfileProperties
+newZendeskConnectorProfileProperties pInstanceUrl_ =
+  ZendeskConnectorProfileProperties'
+    { instanceUrl =
+        pInstanceUrl_
+    }
+
+-- | The location of the Zendesk resource.
+zendeskConnectorProfileProperties_instanceUrl :: Lens.Lens' ZendeskConnectorProfileProperties Prelude.Text
+zendeskConnectorProfileProperties_instanceUrl = Lens.lens (\ZendeskConnectorProfileProperties' {instanceUrl} -> instanceUrl) (\s@ZendeskConnectorProfileProperties' {} a -> s {instanceUrl = a} :: ZendeskConnectorProfileProperties)
+
+instance
+  Data.FromJSON
+    ZendeskConnectorProfileProperties
+  where
+  parseJSON =
+    Data.withObject
+      "ZendeskConnectorProfileProperties"
+      ( \x ->
+          ZendeskConnectorProfileProperties'
+            Prelude.<$> (x Data..: "instanceUrl")
+      )
+
+instance
+  Prelude.Hashable
+    ZendeskConnectorProfileProperties
+  where
+  hashWithSalt
+    _salt
+    ZendeskConnectorProfileProperties' {..} =
+      _salt `Prelude.hashWithSalt` instanceUrl
+
+instance
+  Prelude.NFData
+    ZendeskConnectorProfileProperties
+  where
+  rnf ZendeskConnectorProfileProperties' {..} =
+    Prelude.rnf instanceUrl
+
+instance
+  Data.ToJSON
+    ZendeskConnectorProfileProperties
+  where
+  toJSON ZendeskConnectorProfileProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("instanceUrl" Data..= instanceUrl)]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ZendeskDestinationProperties.hs b/gen/Amazonka/AppFlow/Types/ZendeskDestinationProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ZendeskDestinationProperties.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.AppFlow.Types.ZendeskDestinationProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ZendeskDestinationProperties where
+
+import Amazonka.AppFlow.Types.ErrorHandlingConfig
+import Amazonka.AppFlow.Types.WriteOperationType
+import qualified 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 properties that are applied when Zendesk is used as a destination.
+--
+-- /See:/ 'newZendeskDestinationProperties' smart constructor.
+data ZendeskDestinationProperties = ZendeskDestinationProperties'
+  { errorHandlingConfig :: Prelude.Maybe ErrorHandlingConfig,
+    idFieldNames :: Prelude.Maybe [Prelude.Text],
+    writeOperationType :: Prelude.Maybe WriteOperationType,
+    -- | The object specified in the Zendesk flow destination.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ZendeskDestinationProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorHandlingConfig', 'zendeskDestinationProperties_errorHandlingConfig' - Undocumented member.
+--
+-- 'idFieldNames', 'zendeskDestinationProperties_idFieldNames' - Undocumented member.
+--
+-- 'writeOperationType', 'zendeskDestinationProperties_writeOperationType' - Undocumented member.
+--
+-- 'object'', 'zendeskDestinationProperties_object' - The object specified in the Zendesk flow destination.
+newZendeskDestinationProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  ZendeskDestinationProperties
+newZendeskDestinationProperties pObject_ =
+  ZendeskDestinationProperties'
+    { errorHandlingConfig =
+        Prelude.Nothing,
+      idFieldNames = Prelude.Nothing,
+      writeOperationType = Prelude.Nothing,
+      object' = pObject_
+    }
+
+-- | Undocumented member.
+zendeskDestinationProperties_errorHandlingConfig :: Lens.Lens' ZendeskDestinationProperties (Prelude.Maybe ErrorHandlingConfig)
+zendeskDestinationProperties_errorHandlingConfig = Lens.lens (\ZendeskDestinationProperties' {errorHandlingConfig} -> errorHandlingConfig) (\s@ZendeskDestinationProperties' {} a -> s {errorHandlingConfig = a} :: ZendeskDestinationProperties)
+
+-- | Undocumented member.
+zendeskDestinationProperties_idFieldNames :: Lens.Lens' ZendeskDestinationProperties (Prelude.Maybe [Prelude.Text])
+zendeskDestinationProperties_idFieldNames = Lens.lens (\ZendeskDestinationProperties' {idFieldNames} -> idFieldNames) (\s@ZendeskDestinationProperties' {} a -> s {idFieldNames = a} :: ZendeskDestinationProperties) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+zendeskDestinationProperties_writeOperationType :: Lens.Lens' ZendeskDestinationProperties (Prelude.Maybe WriteOperationType)
+zendeskDestinationProperties_writeOperationType = Lens.lens (\ZendeskDestinationProperties' {writeOperationType} -> writeOperationType) (\s@ZendeskDestinationProperties' {} a -> s {writeOperationType = a} :: ZendeskDestinationProperties)
+
+-- | The object specified in the Zendesk flow destination.
+zendeskDestinationProperties_object :: Lens.Lens' ZendeskDestinationProperties Prelude.Text
+zendeskDestinationProperties_object = Lens.lens (\ZendeskDestinationProperties' {object'} -> object') (\s@ZendeskDestinationProperties' {} a -> s {object' = a} :: ZendeskDestinationProperties)
+
+instance Data.FromJSON ZendeskDestinationProperties where
+  parseJSON =
+    Data.withObject
+      "ZendeskDestinationProperties"
+      ( \x ->
+          ZendeskDestinationProperties'
+            Prelude.<$> (x Data..:? "errorHandlingConfig")
+            Prelude.<*> (x Data..:? "idFieldNames" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "writeOperationType")
+            Prelude.<*> (x Data..: "object")
+      )
+
+instance
+  Prelude.Hashable
+    ZendeskDestinationProperties
+  where
+  hashWithSalt _salt ZendeskDestinationProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorHandlingConfig
+      `Prelude.hashWithSalt` idFieldNames
+      `Prelude.hashWithSalt` writeOperationType
+      `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData ZendeskDestinationProperties where
+  rnf ZendeskDestinationProperties' {..} =
+    Prelude.rnf errorHandlingConfig
+      `Prelude.seq` Prelude.rnf idFieldNames
+      `Prelude.seq` Prelude.rnf writeOperationType
+      `Prelude.seq` Prelude.rnf object'
+
+instance Data.ToJSON ZendeskDestinationProperties where
+  toJSON ZendeskDestinationProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("errorHandlingConfig" Data..=)
+              Prelude.<$> errorHandlingConfig,
+            ("idFieldNames" Data..=) Prelude.<$> idFieldNames,
+            ("writeOperationType" Data..=)
+              Prelude.<$> writeOperationType,
+            Prelude.Just ("object" Data..= object')
+          ]
+      )
diff --git a/gen/Amazonka/AppFlow/Types/ZendeskMetadata.hs b/gen/Amazonka/AppFlow/Types/ZendeskMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ZendeskMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ZendeskMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ZendeskMetadata where
+
+import qualified 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 connector metadata specific to Zendesk.
+--
+-- /See:/ 'newZendeskMetadata' smart constructor.
+data ZendeskMetadata = ZendeskMetadata'
+  { -- | The desired authorization scope for the Zendesk account.
+    oAuthScopes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ZendeskMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'oAuthScopes', 'zendeskMetadata_oAuthScopes' - The desired authorization scope for the Zendesk account.
+newZendeskMetadata ::
+  ZendeskMetadata
+newZendeskMetadata =
+  ZendeskMetadata' {oAuthScopes = Prelude.Nothing}
+
+-- | The desired authorization scope for the Zendesk account.
+zendeskMetadata_oAuthScopes :: Lens.Lens' ZendeskMetadata (Prelude.Maybe [Prelude.Text])
+zendeskMetadata_oAuthScopes = Lens.lens (\ZendeskMetadata' {oAuthScopes} -> oAuthScopes) (\s@ZendeskMetadata' {} a -> s {oAuthScopes = a} :: ZendeskMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ZendeskMetadata where
+  parseJSON =
+    Data.withObject
+      "ZendeskMetadata"
+      ( \x ->
+          ZendeskMetadata'
+            Prelude.<$> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ZendeskMetadata where
+  hashWithSalt _salt ZendeskMetadata' {..} =
+    _salt `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData ZendeskMetadata where
+  rnf ZendeskMetadata' {..} = Prelude.rnf oAuthScopes
diff --git a/gen/Amazonka/AppFlow/Types/ZendeskSourceProperties.hs b/gen/Amazonka/AppFlow/Types/ZendeskSourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/Types/ZendeskSourceProperties.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.Types.ZendeskSourceProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.AppFlow.Types.ZendeskSourceProperties where
+
+import qualified 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 properties that are applied when using Zendesk as a flow source.
+--
+-- /See:/ 'newZendeskSourceProperties' smart constructor.
+data ZendeskSourceProperties = ZendeskSourceProperties'
+  { -- | The object specified in the Zendesk flow source.
+    object' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ZendeskSourceProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'object'', 'zendeskSourceProperties_object' - The object specified in the Zendesk flow source.
+newZendeskSourceProperties ::
+  -- | 'object''
+  Prelude.Text ->
+  ZendeskSourceProperties
+newZendeskSourceProperties pObject_ =
+  ZendeskSourceProperties' {object' = pObject_}
+
+-- | The object specified in the Zendesk flow source.
+zendeskSourceProperties_object :: Lens.Lens' ZendeskSourceProperties Prelude.Text
+zendeskSourceProperties_object = Lens.lens (\ZendeskSourceProperties' {object'} -> object') (\s@ZendeskSourceProperties' {} a -> s {object' = a} :: ZendeskSourceProperties)
+
+instance Data.FromJSON ZendeskSourceProperties where
+  parseJSON =
+    Data.withObject
+      "ZendeskSourceProperties"
+      ( \x ->
+          ZendeskSourceProperties'
+            Prelude.<$> (x Data..: "object")
+      )
+
+instance Prelude.Hashable ZendeskSourceProperties where
+  hashWithSalt _salt ZendeskSourceProperties' {..} =
+    _salt `Prelude.hashWithSalt` object'
+
+instance Prelude.NFData ZendeskSourceProperties where
+  rnf ZendeskSourceProperties' {..} =
+    Prelude.rnf object'
+
+instance Data.ToJSON ZendeskSourceProperties where
+  toJSON ZendeskSourceProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("object" Data..= object')]
+      )
diff --git a/gen/Amazonka/AppFlow/UnregisterConnector.hs b/gen/Amazonka/AppFlow/UnregisterConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/UnregisterConnector.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.UnregisterConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Unregisters the custom connector registered in your account that matches
+-- the connector label provided in the request.
+module Amazonka.AppFlow.UnregisterConnector
+  ( -- * Creating a Request
+    UnregisterConnector (..),
+    newUnregisterConnector,
+
+    -- * Request Lenses
+    unregisterConnector_forceDelete,
+    unregisterConnector_connectorLabel,
+
+    -- * Destructuring the Response
+    UnregisterConnectorResponse (..),
+    newUnregisterConnectorResponse,
+
+    -- * Response Lenses
+    unregisterConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUnregisterConnector' smart constructor.
+data UnregisterConnector = UnregisterConnector'
+  { -- | Indicates whether Amazon AppFlow should unregister the connector, even
+    -- if it is currently in use in one or more connector profiles. The default
+    -- value is false.
+    forceDelete :: Prelude.Maybe Prelude.Bool,
+    -- | The label of the connector. The label is unique for each
+    -- @ConnectorRegistration@ in your Amazon Web Services account.
+    connectorLabel :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UnregisterConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forceDelete', 'unregisterConnector_forceDelete' - Indicates whether Amazon AppFlow should unregister the connector, even
+-- if it is currently in use in one or more connector profiles. The default
+-- value is false.
+--
+-- 'connectorLabel', 'unregisterConnector_connectorLabel' - The label of the connector. The label is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account.
+newUnregisterConnector ::
+  -- | 'connectorLabel'
+  Prelude.Text ->
+  UnregisterConnector
+newUnregisterConnector pConnectorLabel_ =
+  UnregisterConnector'
+    { forceDelete = Prelude.Nothing,
+      connectorLabel = pConnectorLabel_
+    }
+
+-- | Indicates whether Amazon AppFlow should unregister the connector, even
+-- if it is currently in use in one or more connector profiles. The default
+-- value is false.
+unregisterConnector_forceDelete :: Lens.Lens' UnregisterConnector (Prelude.Maybe Prelude.Bool)
+unregisterConnector_forceDelete = Lens.lens (\UnregisterConnector' {forceDelete} -> forceDelete) (\s@UnregisterConnector' {} a -> s {forceDelete = a} :: UnregisterConnector)
+
+-- | The label of the connector. The label is unique for each
+-- @ConnectorRegistration@ in your Amazon Web Services account.
+unregisterConnector_connectorLabel :: Lens.Lens' UnregisterConnector Prelude.Text
+unregisterConnector_connectorLabel = Lens.lens (\UnregisterConnector' {connectorLabel} -> connectorLabel) (\s@UnregisterConnector' {} a -> s {connectorLabel = a} :: UnregisterConnector)
+
+instance Core.AWSRequest UnregisterConnector where
+  type
+    AWSResponse UnregisterConnector =
+      UnregisterConnectorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UnregisterConnectorResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UnregisterConnector where
+  hashWithSalt _salt UnregisterConnector' {..} =
+    _salt
+      `Prelude.hashWithSalt` forceDelete
+      `Prelude.hashWithSalt` connectorLabel
+
+instance Prelude.NFData UnregisterConnector where
+  rnf UnregisterConnector' {..} =
+    Prelude.rnf forceDelete
+      `Prelude.seq` Prelude.rnf connectorLabel
+
+instance Data.ToHeaders UnregisterConnector where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UnregisterConnector where
+  toJSON UnregisterConnector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("forceDelete" Data..=) Prelude.<$> forceDelete,
+            Prelude.Just
+              ("connectorLabel" Data..= connectorLabel)
+          ]
+      )
+
+instance Data.ToPath UnregisterConnector where
+  toPath = Prelude.const "/unregister-connector"
+
+instance Data.ToQuery UnregisterConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUnregisterConnectorResponse' smart constructor.
+data UnregisterConnectorResponse = UnregisterConnectorResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UnregisterConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'unregisterConnectorResponse_httpStatus' - The response's http status code.
+newUnregisterConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UnregisterConnectorResponse
+newUnregisterConnectorResponse pHttpStatus_ =
+  UnregisterConnectorResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+unregisterConnectorResponse_httpStatus :: Lens.Lens' UnregisterConnectorResponse Prelude.Int
+unregisterConnectorResponse_httpStatus = Lens.lens (\UnregisterConnectorResponse' {httpStatus} -> httpStatus) (\s@UnregisterConnectorResponse' {} a -> s {httpStatus = a} :: UnregisterConnectorResponse)
+
+instance Prelude.NFData UnregisterConnectorResponse where
+  rnf UnregisterConnectorResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/UntagResource.hs b/gen/Amazonka/AppFlow/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/UntagResource.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a tag from the specified flow.
+module Amazonka.AppFlow.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the flow that you want to untag.
+    resourceArn :: Prelude.Text,
+    -- | The tag keys associated with the tag that you want to remove from your
+    -- flow.
+    tagKeys :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the flow that you want to untag.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys associated with the tag that you want to remove from your
+-- flow.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the flow that you want to untag.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The tag keys associated with the tag that you want to remove from your
+-- flow.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/UpdateConnectorProfile.hs b/gen/Amazonka/AppFlow/UpdateConnectorProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/UpdateConnectorProfile.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.AppFlow.UpdateConnectorProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a given connector profile associated with your account.
+module Amazonka.AppFlow.UpdateConnectorProfile
+  ( -- * Creating a Request
+    UpdateConnectorProfile (..),
+    newUpdateConnectorProfile,
+
+    -- * Request Lenses
+    updateConnectorProfile_connectorProfileName,
+    updateConnectorProfile_connectionMode,
+    updateConnectorProfile_connectorProfileConfig,
+
+    -- * Destructuring the Response
+    UpdateConnectorProfileResponse (..),
+    newUpdateConnectorProfileResponse,
+
+    -- * Response Lenses
+    updateConnectorProfileResponse_connectorProfileArn,
+    updateConnectorProfileResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateConnectorProfile' smart constructor.
+data UpdateConnectorProfile = UpdateConnectorProfile'
+  { -- | The name of the connector profile and is unique for each
+    -- @ConnectorProfile@ in the Amazon Web Services account.
+    connectorProfileName :: Prelude.Text,
+    -- | Indicates the connection mode and if it is public or private.
+    connectionMode :: ConnectionMode,
+    -- | Defines the connector-specific profile configuration and credentials.
+    connectorProfileConfig :: ConnectorProfileConfig
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConnectorProfile' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorProfileName', 'updateConnectorProfile_connectorProfileName' - The name of the connector profile and is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+--
+-- 'connectionMode', 'updateConnectorProfile_connectionMode' - Indicates the connection mode and if it is public or private.
+--
+-- 'connectorProfileConfig', 'updateConnectorProfile_connectorProfileConfig' - Defines the connector-specific profile configuration and credentials.
+newUpdateConnectorProfile ::
+  -- | 'connectorProfileName'
+  Prelude.Text ->
+  -- | 'connectionMode'
+  ConnectionMode ->
+  -- | 'connectorProfileConfig'
+  ConnectorProfileConfig ->
+  UpdateConnectorProfile
+newUpdateConnectorProfile
+  pConnectorProfileName_
+  pConnectionMode_
+  pConnectorProfileConfig_ =
+    UpdateConnectorProfile'
+      { connectorProfileName =
+          pConnectorProfileName_,
+        connectionMode = pConnectionMode_,
+        connectorProfileConfig = pConnectorProfileConfig_
+      }
+
+-- | The name of the connector profile and is unique for each
+-- @ConnectorProfile@ in the Amazon Web Services account.
+updateConnectorProfile_connectorProfileName :: Lens.Lens' UpdateConnectorProfile Prelude.Text
+updateConnectorProfile_connectorProfileName = Lens.lens (\UpdateConnectorProfile' {connectorProfileName} -> connectorProfileName) (\s@UpdateConnectorProfile' {} a -> s {connectorProfileName = a} :: UpdateConnectorProfile)
+
+-- | Indicates the connection mode and if it is public or private.
+updateConnectorProfile_connectionMode :: Lens.Lens' UpdateConnectorProfile ConnectionMode
+updateConnectorProfile_connectionMode = Lens.lens (\UpdateConnectorProfile' {connectionMode} -> connectionMode) (\s@UpdateConnectorProfile' {} a -> s {connectionMode = a} :: UpdateConnectorProfile)
+
+-- | Defines the connector-specific profile configuration and credentials.
+updateConnectorProfile_connectorProfileConfig :: Lens.Lens' UpdateConnectorProfile ConnectorProfileConfig
+updateConnectorProfile_connectorProfileConfig = Lens.lens (\UpdateConnectorProfile' {connectorProfileConfig} -> connectorProfileConfig) (\s@UpdateConnectorProfile' {} a -> s {connectorProfileConfig = a} :: UpdateConnectorProfile)
+
+instance Core.AWSRequest UpdateConnectorProfile where
+  type
+    AWSResponse UpdateConnectorProfile =
+      UpdateConnectorProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateConnectorProfileResponse'
+            Prelude.<$> (x Data..?> "connectorProfileArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateConnectorProfile where
+  hashWithSalt _salt UpdateConnectorProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorProfileName
+      `Prelude.hashWithSalt` connectionMode
+      `Prelude.hashWithSalt` connectorProfileConfig
+
+instance Prelude.NFData UpdateConnectorProfile where
+  rnf UpdateConnectorProfile' {..} =
+    Prelude.rnf connectorProfileName
+      `Prelude.seq` Prelude.rnf connectionMode
+      `Prelude.seq` Prelude.rnf connectorProfileConfig
+
+instance Data.ToHeaders UpdateConnectorProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateConnectorProfile where
+  toJSON UpdateConnectorProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "connectorProfileName"
+                  Data..= connectorProfileName
+              ),
+            Prelude.Just
+              ("connectionMode" Data..= connectionMode),
+            Prelude.Just
+              ( "connectorProfileConfig"
+                  Data..= connectorProfileConfig
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateConnectorProfile where
+  toPath = Prelude.const "/update-connector-profile"
+
+instance Data.ToQuery UpdateConnectorProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateConnectorProfileResponse' smart constructor.
+data UpdateConnectorProfileResponse = UpdateConnectorProfileResponse'
+  { -- | The Amazon Resource Name (ARN) of the connector profile.
+    connectorProfileArn :: 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 'UpdateConnectorProfileResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorProfileArn', 'updateConnectorProfileResponse_connectorProfileArn' - The Amazon Resource Name (ARN) of the connector profile.
+--
+-- 'httpStatus', 'updateConnectorProfileResponse_httpStatus' - The response's http status code.
+newUpdateConnectorProfileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateConnectorProfileResponse
+newUpdateConnectorProfileResponse pHttpStatus_ =
+  UpdateConnectorProfileResponse'
+    { connectorProfileArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the connector profile.
+updateConnectorProfileResponse_connectorProfileArn :: Lens.Lens' UpdateConnectorProfileResponse (Prelude.Maybe Prelude.Text)
+updateConnectorProfileResponse_connectorProfileArn = Lens.lens (\UpdateConnectorProfileResponse' {connectorProfileArn} -> connectorProfileArn) (\s@UpdateConnectorProfileResponse' {} a -> s {connectorProfileArn = a} :: UpdateConnectorProfileResponse)
+
+-- | The response's http status code.
+updateConnectorProfileResponse_httpStatus :: Lens.Lens' UpdateConnectorProfileResponse Prelude.Int
+updateConnectorProfileResponse_httpStatus = Lens.lens (\UpdateConnectorProfileResponse' {httpStatus} -> httpStatus) (\s@UpdateConnectorProfileResponse' {} a -> s {httpStatus = a} :: UpdateConnectorProfileResponse)
+
+instance
+  Prelude.NFData
+    UpdateConnectorProfileResponse
+  where
+  rnf UpdateConnectorProfileResponse' {..} =
+    Prelude.rnf connectorProfileArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/UpdateConnectorRegistration.hs b/gen/Amazonka/AppFlow/UpdateConnectorRegistration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/UpdateConnectorRegistration.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.AppFlow.UpdateConnectorRegistration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a custom connector that you\'ve previously registered. This
+-- operation updates the connector with one of the following:
+--
+-- -   The latest version of the AWS Lambda function that\'s assigned to
+--     the connector
+--
+-- -   A new AWS Lambda function that you specify
+module Amazonka.AppFlow.UpdateConnectorRegistration
+  ( -- * Creating a Request
+    UpdateConnectorRegistration (..),
+    newUpdateConnectorRegistration,
+
+    -- * Request Lenses
+    updateConnectorRegistration_connectorProvisioningConfig,
+    updateConnectorRegistration_description,
+    updateConnectorRegistration_connectorLabel,
+
+    -- * Destructuring the Response
+    UpdateConnectorRegistrationResponse (..),
+    newUpdateConnectorRegistrationResponse,
+
+    -- * Response Lenses
+    updateConnectorRegistrationResponse_connectorArn,
+    updateConnectorRegistrationResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateConnectorRegistration' smart constructor.
+data UpdateConnectorRegistration = UpdateConnectorRegistration'
+  { connectorProvisioningConfig :: Prelude.Maybe ConnectorProvisioningConfig,
+    -- | A description about the update that you\'re applying to the connector.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the connector. The name is unique for each connector
+    -- registration in your AWS account.
+    connectorLabel :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConnectorRegistration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorProvisioningConfig', 'updateConnectorRegistration_connectorProvisioningConfig' - Undocumented member.
+--
+-- 'description', 'updateConnectorRegistration_description' - A description about the update that you\'re applying to the connector.
+--
+-- 'connectorLabel', 'updateConnectorRegistration_connectorLabel' - The name of the connector. The name is unique for each connector
+-- registration in your AWS account.
+newUpdateConnectorRegistration ::
+  -- | 'connectorLabel'
+  Prelude.Text ->
+  UpdateConnectorRegistration
+newUpdateConnectorRegistration pConnectorLabel_ =
+  UpdateConnectorRegistration'
+    { connectorProvisioningConfig =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      connectorLabel = pConnectorLabel_
+    }
+
+-- | Undocumented member.
+updateConnectorRegistration_connectorProvisioningConfig :: Lens.Lens' UpdateConnectorRegistration (Prelude.Maybe ConnectorProvisioningConfig)
+updateConnectorRegistration_connectorProvisioningConfig = Lens.lens (\UpdateConnectorRegistration' {connectorProvisioningConfig} -> connectorProvisioningConfig) (\s@UpdateConnectorRegistration' {} a -> s {connectorProvisioningConfig = a} :: UpdateConnectorRegistration)
+
+-- | A description about the update that you\'re applying to the connector.
+updateConnectorRegistration_description :: Lens.Lens' UpdateConnectorRegistration (Prelude.Maybe Prelude.Text)
+updateConnectorRegistration_description = Lens.lens (\UpdateConnectorRegistration' {description} -> description) (\s@UpdateConnectorRegistration' {} a -> s {description = a} :: UpdateConnectorRegistration)
+
+-- | The name of the connector. The name is unique for each connector
+-- registration in your AWS account.
+updateConnectorRegistration_connectorLabel :: Lens.Lens' UpdateConnectorRegistration Prelude.Text
+updateConnectorRegistration_connectorLabel = Lens.lens (\UpdateConnectorRegistration' {connectorLabel} -> connectorLabel) (\s@UpdateConnectorRegistration' {} a -> s {connectorLabel = a} :: UpdateConnectorRegistration)
+
+instance Core.AWSRequest UpdateConnectorRegistration where
+  type
+    AWSResponse UpdateConnectorRegistration =
+      UpdateConnectorRegistrationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateConnectorRegistrationResponse'
+            Prelude.<$> (x Data..?> "connectorArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateConnectorRegistration where
+  hashWithSalt _salt UpdateConnectorRegistration' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectorProvisioningConfig
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` connectorLabel
+
+instance Prelude.NFData UpdateConnectorRegistration where
+  rnf UpdateConnectorRegistration' {..} =
+    Prelude.rnf connectorProvisioningConfig
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf connectorLabel
+
+instance Data.ToHeaders UpdateConnectorRegistration where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateConnectorRegistration where
+  toJSON UpdateConnectorRegistration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("connectorProvisioningConfig" Data..=)
+              Prelude.<$> connectorProvisioningConfig,
+            ("description" Data..=) Prelude.<$> description,
+            Prelude.Just
+              ("connectorLabel" Data..= connectorLabel)
+          ]
+      )
+
+instance Data.ToPath UpdateConnectorRegistration where
+  toPath =
+    Prelude.const "/update-connector-registration"
+
+instance Data.ToQuery UpdateConnectorRegistration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateConnectorRegistrationResponse' smart constructor.
+data UpdateConnectorRegistrationResponse = UpdateConnectorRegistrationResponse'
+  { -- | The ARN of the connector being updated.
+    connectorArn :: 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 'UpdateConnectorRegistrationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectorArn', 'updateConnectorRegistrationResponse_connectorArn' - The ARN of the connector being updated.
+--
+-- 'httpStatus', 'updateConnectorRegistrationResponse_httpStatus' - The response's http status code.
+newUpdateConnectorRegistrationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateConnectorRegistrationResponse
+newUpdateConnectorRegistrationResponse pHttpStatus_ =
+  UpdateConnectorRegistrationResponse'
+    { connectorArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the connector being updated.
+updateConnectorRegistrationResponse_connectorArn :: Lens.Lens' UpdateConnectorRegistrationResponse (Prelude.Maybe Prelude.Text)
+updateConnectorRegistrationResponse_connectorArn = Lens.lens (\UpdateConnectorRegistrationResponse' {connectorArn} -> connectorArn) (\s@UpdateConnectorRegistrationResponse' {} a -> s {connectorArn = a} :: UpdateConnectorRegistrationResponse)
+
+-- | The response's http status code.
+updateConnectorRegistrationResponse_httpStatus :: Lens.Lens' UpdateConnectorRegistrationResponse Prelude.Int
+updateConnectorRegistrationResponse_httpStatus = Lens.lens (\UpdateConnectorRegistrationResponse' {httpStatus} -> httpStatus) (\s@UpdateConnectorRegistrationResponse' {} a -> s {httpStatus = a} :: UpdateConnectorRegistrationResponse)
+
+instance
+  Prelude.NFData
+    UpdateConnectorRegistrationResponse
+  where
+  rnf UpdateConnectorRegistrationResponse' {..} =
+    Prelude.rnf connectorArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/UpdateFlow.hs b/gen/Amazonka/AppFlow/UpdateFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/UpdateFlow.hs
@@ -0,0 +1,270 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AppFlow.UpdateFlow
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing flow.
+module Amazonka.AppFlow.UpdateFlow
+  ( -- * Creating a Request
+    UpdateFlow (..),
+    newUpdateFlow,
+
+    -- * Request Lenses
+    updateFlow_description,
+    updateFlow_metadataCatalogConfig,
+    updateFlow_flowName,
+    updateFlow_triggerConfig,
+    updateFlow_sourceFlowConfig,
+    updateFlow_destinationFlowConfigList,
+    updateFlow_tasks,
+
+    -- * Destructuring the Response
+    UpdateFlowResponse (..),
+    newUpdateFlowResponse,
+
+    -- * Response Lenses
+    updateFlowResponse_flowStatus,
+    updateFlowResponse_httpStatus,
+  )
+where
+
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateFlow' smart constructor.
+data UpdateFlow = UpdateFlow'
+  { -- | A description of the flow.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+    -- the data that\'s transferred by the associated flow. When Amazon AppFlow
+    -- catalogs the data from a flow, it stores metadata in a data catalog.
+    metadataCatalogConfig :: Prelude.Maybe MetadataCatalogConfig,
+    -- | The specified name of the flow. Spaces are not allowed. Use underscores
+    -- (_) or hyphens (-) only.
+    flowName :: Prelude.Text,
+    -- | The trigger settings that determine how and when the flow runs.
+    triggerConfig :: TriggerConfig,
+    sourceFlowConfig :: SourceFlowConfig,
+    -- | The configuration that controls how Amazon AppFlow transfers data to the
+    -- destination connector.
+    destinationFlowConfigList :: [DestinationFlowConfig],
+    -- | A list of tasks that Amazon AppFlow performs while transferring the data
+    -- in the flow run.
+    tasks :: [Task]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFlow' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateFlow_description' - A description of the flow.
+--
+-- 'metadataCatalogConfig', 'updateFlow_metadataCatalogConfig' - Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- the data that\'s transferred by the associated flow. When Amazon AppFlow
+-- catalogs the data from a flow, it stores metadata in a data catalog.
+--
+-- 'flowName', 'updateFlow_flowName' - The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+--
+-- 'triggerConfig', 'updateFlow_triggerConfig' - The trigger settings that determine how and when the flow runs.
+--
+-- 'sourceFlowConfig', 'updateFlow_sourceFlowConfig' - Undocumented member.
+--
+-- 'destinationFlowConfigList', 'updateFlow_destinationFlowConfigList' - The configuration that controls how Amazon AppFlow transfers data to the
+-- destination connector.
+--
+-- 'tasks', 'updateFlow_tasks' - A list of tasks that Amazon AppFlow performs while transferring the data
+-- in the flow run.
+newUpdateFlow ::
+  -- | 'flowName'
+  Prelude.Text ->
+  -- | 'triggerConfig'
+  TriggerConfig ->
+  -- | 'sourceFlowConfig'
+  SourceFlowConfig ->
+  UpdateFlow
+newUpdateFlow
+  pFlowName_
+  pTriggerConfig_
+  pSourceFlowConfig_ =
+    UpdateFlow'
+      { description = Prelude.Nothing,
+        metadataCatalogConfig = Prelude.Nothing,
+        flowName = pFlowName_,
+        triggerConfig = pTriggerConfig_,
+        sourceFlowConfig = pSourceFlowConfig_,
+        destinationFlowConfigList = Prelude.mempty,
+        tasks = Prelude.mempty
+      }
+
+-- | A description of the flow.
+updateFlow_description :: Lens.Lens' UpdateFlow (Prelude.Maybe Prelude.Text)
+updateFlow_description = Lens.lens (\UpdateFlow' {description} -> description) (\s@UpdateFlow' {} a -> s {description = a} :: UpdateFlow)
+
+-- | Specifies the configuration that Amazon AppFlow uses when it catalogs
+-- the data that\'s transferred by the associated flow. When Amazon AppFlow
+-- catalogs the data from a flow, it stores metadata in a data catalog.
+updateFlow_metadataCatalogConfig :: Lens.Lens' UpdateFlow (Prelude.Maybe MetadataCatalogConfig)
+updateFlow_metadataCatalogConfig = Lens.lens (\UpdateFlow' {metadataCatalogConfig} -> metadataCatalogConfig) (\s@UpdateFlow' {} a -> s {metadataCatalogConfig = a} :: UpdateFlow)
+
+-- | The specified name of the flow. Spaces are not allowed. Use underscores
+-- (_) or hyphens (-) only.
+updateFlow_flowName :: Lens.Lens' UpdateFlow Prelude.Text
+updateFlow_flowName = Lens.lens (\UpdateFlow' {flowName} -> flowName) (\s@UpdateFlow' {} a -> s {flowName = a} :: UpdateFlow)
+
+-- | The trigger settings that determine how and when the flow runs.
+updateFlow_triggerConfig :: Lens.Lens' UpdateFlow TriggerConfig
+updateFlow_triggerConfig = Lens.lens (\UpdateFlow' {triggerConfig} -> triggerConfig) (\s@UpdateFlow' {} a -> s {triggerConfig = a} :: UpdateFlow)
+
+-- | Undocumented member.
+updateFlow_sourceFlowConfig :: Lens.Lens' UpdateFlow SourceFlowConfig
+updateFlow_sourceFlowConfig = Lens.lens (\UpdateFlow' {sourceFlowConfig} -> sourceFlowConfig) (\s@UpdateFlow' {} a -> s {sourceFlowConfig = a} :: UpdateFlow)
+
+-- | The configuration that controls how Amazon AppFlow transfers data to the
+-- destination connector.
+updateFlow_destinationFlowConfigList :: Lens.Lens' UpdateFlow [DestinationFlowConfig]
+updateFlow_destinationFlowConfigList = Lens.lens (\UpdateFlow' {destinationFlowConfigList} -> destinationFlowConfigList) (\s@UpdateFlow' {} a -> s {destinationFlowConfigList = a} :: UpdateFlow) Prelude.. Lens.coerced
+
+-- | A list of tasks that Amazon AppFlow performs while transferring the data
+-- in the flow run.
+updateFlow_tasks :: Lens.Lens' UpdateFlow [Task]
+updateFlow_tasks = Lens.lens (\UpdateFlow' {tasks} -> tasks) (\s@UpdateFlow' {} a -> s {tasks = a} :: UpdateFlow) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UpdateFlow where
+  type AWSResponse UpdateFlow = UpdateFlowResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateFlowResponse'
+            Prelude.<$> (x Data..?> "flowStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateFlow where
+  hashWithSalt _salt UpdateFlow' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` metadataCatalogConfig
+      `Prelude.hashWithSalt` flowName
+      `Prelude.hashWithSalt` triggerConfig
+      `Prelude.hashWithSalt` sourceFlowConfig
+      `Prelude.hashWithSalt` destinationFlowConfigList
+      `Prelude.hashWithSalt` tasks
+
+instance Prelude.NFData UpdateFlow where
+  rnf UpdateFlow' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf metadataCatalogConfig
+      `Prelude.seq` Prelude.rnf flowName
+      `Prelude.seq` Prelude.rnf triggerConfig
+      `Prelude.seq` Prelude.rnf sourceFlowConfig
+      `Prelude.seq` Prelude.rnf destinationFlowConfigList
+      `Prelude.seq` Prelude.rnf tasks
+
+instance Data.ToHeaders UpdateFlow where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFlow where
+  toJSON UpdateFlow' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            ("metadataCatalogConfig" Data..=)
+              Prelude.<$> metadataCatalogConfig,
+            Prelude.Just ("flowName" Data..= flowName),
+            Prelude.Just ("triggerConfig" Data..= triggerConfig),
+            Prelude.Just
+              ("sourceFlowConfig" Data..= sourceFlowConfig),
+            Prelude.Just
+              ( "destinationFlowConfigList"
+                  Data..= destinationFlowConfigList
+              ),
+            Prelude.Just ("tasks" Data..= tasks)
+          ]
+      )
+
+instance Data.ToPath UpdateFlow where
+  toPath = Prelude.const "/update-flow"
+
+instance Data.ToQuery UpdateFlow where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFlowResponse' smart constructor.
+data UpdateFlowResponse = UpdateFlowResponse'
+  { -- | Indicates the current status of the flow.
+    flowStatus :: Prelude.Maybe FlowStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFlowResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'flowStatus', 'updateFlowResponse_flowStatus' - Indicates the current status of the flow.
+--
+-- 'httpStatus', 'updateFlowResponse_httpStatus' - The response's http status code.
+newUpdateFlowResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateFlowResponse
+newUpdateFlowResponse pHttpStatus_ =
+  UpdateFlowResponse'
+    { flowStatus = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Indicates the current status of the flow.
+updateFlowResponse_flowStatus :: Lens.Lens' UpdateFlowResponse (Prelude.Maybe FlowStatus)
+updateFlowResponse_flowStatus = Lens.lens (\UpdateFlowResponse' {flowStatus} -> flowStatus) (\s@UpdateFlowResponse' {} a -> s {flowStatus = a} :: UpdateFlowResponse)
+
+-- | The response's http status code.
+updateFlowResponse_httpStatus :: Lens.Lens' UpdateFlowResponse Prelude.Int
+updateFlowResponse_httpStatus = Lens.lens (\UpdateFlowResponse' {httpStatus} -> httpStatus) (\s@UpdateFlowResponse' {} a -> s {httpStatus = a} :: UpdateFlowResponse)
+
+instance Prelude.NFData UpdateFlowResponse where
+  rnf UpdateFlowResponse' {..} =
+    Prelude.rnf flowStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AppFlow/Waiters.hs b/gen/Amazonka/AppFlow/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AppFlow/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.AppFlow.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.AppFlow.Waiters where
+
+import Amazonka.AppFlow.Lens
+import Amazonka.AppFlow.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+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.AppFlow
+import Test.Amazonka.AppFlow.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "AppFlow"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/AppFlow.hs b/test/Test/Amazonka/AppFlow.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/AppFlow.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.AppFlow
+-- Copyright   : (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.AppFlow
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/AppFlow/Internal.hs b/test/Test/Amazonka/AppFlow/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/AppFlow/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.AppFlow.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.AppFlow.Internal where
diff --git a/test/Test/Amazonka/Gen/AppFlow.hs b/test/Test/Amazonka/Gen/AppFlow.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/AppFlow.hs
@@ -0,0 +1,498 @@
+{-# 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.AppFlow
+-- Copyright   : (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.AppFlow where
+
+import Amazonka.AppFlow
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.AppFlow.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"
+--         [ requestCreateConnectorProfile $
+--             newCreateConnectorProfile
+--
+--         , requestCreateFlow $
+--             newCreateFlow
+--
+--         , requestDeleteConnectorProfile $
+--             newDeleteConnectorProfile
+--
+--         , requestDeleteFlow $
+--             newDeleteFlow
+--
+--         , requestDescribeConnector $
+--             newDescribeConnector
+--
+--         , requestDescribeConnectorEntity $
+--             newDescribeConnectorEntity
+--
+--         , requestDescribeConnectorProfiles $
+--             newDescribeConnectorProfiles
+--
+--         , requestDescribeConnectors $
+--             newDescribeConnectors
+--
+--         , requestDescribeFlow $
+--             newDescribeFlow
+--
+--         , requestDescribeFlowExecutionRecords $
+--             newDescribeFlowExecutionRecords
+--
+--         , requestListConnectorEntities $
+--             newListConnectorEntities
+--
+--         , requestListConnectors $
+--             newListConnectors
+--
+--         , requestListFlows $
+--             newListFlows
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestRegisterConnector $
+--             newRegisterConnector
+--
+--         , requestStartFlow $
+--             newStartFlow
+--
+--         , requestStopFlow $
+--             newStopFlow
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUnregisterConnector $
+--             newUnregisterConnector
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateConnectorProfile $
+--             newUpdateConnectorProfile
+--
+--         , requestUpdateConnectorRegistration $
+--             newUpdateConnectorRegistration
+--
+--         , requestUpdateFlow $
+--             newUpdateFlow
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateConnectorProfile $
+--             newCreateConnectorProfileResponse
+--
+--         , responseCreateFlow $
+--             newCreateFlowResponse
+--
+--         , responseDeleteConnectorProfile $
+--             newDeleteConnectorProfileResponse
+--
+--         , responseDeleteFlow $
+--             newDeleteFlowResponse
+--
+--         , responseDescribeConnector $
+--             newDescribeConnectorResponse
+--
+--         , responseDescribeConnectorEntity $
+--             newDescribeConnectorEntityResponse
+--
+--         , responseDescribeConnectorProfiles $
+--             newDescribeConnectorProfilesResponse
+--
+--         , responseDescribeConnectors $
+--             newDescribeConnectorsResponse
+--
+--         , responseDescribeFlow $
+--             newDescribeFlowResponse
+--
+--         , responseDescribeFlowExecutionRecords $
+--             newDescribeFlowExecutionRecordsResponse
+--
+--         , responseListConnectorEntities $
+--             newListConnectorEntitiesResponse
+--
+--         , responseListConnectors $
+--             newListConnectorsResponse
+--
+--         , responseListFlows $
+--             newListFlowsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseRegisterConnector $
+--             newRegisterConnectorResponse
+--
+--         , responseStartFlow $
+--             newStartFlowResponse
+--
+--         , responseStopFlow $
+--             newStopFlowResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUnregisterConnector $
+--             newUnregisterConnectorResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateConnectorProfile $
+--             newUpdateConnectorProfileResponse
+--
+--         , responseUpdateConnectorRegistration $
+--             newUpdateConnectorRegistrationResponse
+--
+--         , responseUpdateFlow $
+--             newUpdateFlowResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateConnectorProfile :: CreateConnectorProfile -> TestTree
+requestCreateConnectorProfile =
+  req
+    "CreateConnectorProfile"
+    "fixture/CreateConnectorProfile.yaml"
+
+requestCreateFlow :: CreateFlow -> TestTree
+requestCreateFlow =
+  req
+    "CreateFlow"
+    "fixture/CreateFlow.yaml"
+
+requestDeleteConnectorProfile :: DeleteConnectorProfile -> TestTree
+requestDeleteConnectorProfile =
+  req
+    "DeleteConnectorProfile"
+    "fixture/DeleteConnectorProfile.yaml"
+
+requestDeleteFlow :: DeleteFlow -> TestTree
+requestDeleteFlow =
+  req
+    "DeleteFlow"
+    "fixture/DeleteFlow.yaml"
+
+requestDescribeConnector :: DescribeConnector -> TestTree
+requestDescribeConnector =
+  req
+    "DescribeConnector"
+    "fixture/DescribeConnector.yaml"
+
+requestDescribeConnectorEntity :: DescribeConnectorEntity -> TestTree
+requestDescribeConnectorEntity =
+  req
+    "DescribeConnectorEntity"
+    "fixture/DescribeConnectorEntity.yaml"
+
+requestDescribeConnectorProfiles :: DescribeConnectorProfiles -> TestTree
+requestDescribeConnectorProfiles =
+  req
+    "DescribeConnectorProfiles"
+    "fixture/DescribeConnectorProfiles.yaml"
+
+requestDescribeConnectors :: DescribeConnectors -> TestTree
+requestDescribeConnectors =
+  req
+    "DescribeConnectors"
+    "fixture/DescribeConnectors.yaml"
+
+requestDescribeFlow :: DescribeFlow -> TestTree
+requestDescribeFlow =
+  req
+    "DescribeFlow"
+    "fixture/DescribeFlow.yaml"
+
+requestDescribeFlowExecutionRecords :: DescribeFlowExecutionRecords -> TestTree
+requestDescribeFlowExecutionRecords =
+  req
+    "DescribeFlowExecutionRecords"
+    "fixture/DescribeFlowExecutionRecords.yaml"
+
+requestListConnectorEntities :: ListConnectorEntities -> TestTree
+requestListConnectorEntities =
+  req
+    "ListConnectorEntities"
+    "fixture/ListConnectorEntities.yaml"
+
+requestListConnectors :: ListConnectors -> TestTree
+requestListConnectors =
+  req
+    "ListConnectors"
+    "fixture/ListConnectors.yaml"
+
+requestListFlows :: ListFlows -> TestTree
+requestListFlows =
+  req
+    "ListFlows"
+    "fixture/ListFlows.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestRegisterConnector :: RegisterConnector -> TestTree
+requestRegisterConnector =
+  req
+    "RegisterConnector"
+    "fixture/RegisterConnector.yaml"
+
+requestStartFlow :: StartFlow -> TestTree
+requestStartFlow =
+  req
+    "StartFlow"
+    "fixture/StartFlow.yaml"
+
+requestStopFlow :: StopFlow -> TestTree
+requestStopFlow =
+  req
+    "StopFlow"
+    "fixture/StopFlow.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUnregisterConnector :: UnregisterConnector -> TestTree
+requestUnregisterConnector =
+  req
+    "UnregisterConnector"
+    "fixture/UnregisterConnector.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateConnectorProfile :: UpdateConnectorProfile -> TestTree
+requestUpdateConnectorProfile =
+  req
+    "UpdateConnectorProfile"
+    "fixture/UpdateConnectorProfile.yaml"
+
+requestUpdateConnectorRegistration :: UpdateConnectorRegistration -> TestTree
+requestUpdateConnectorRegistration =
+  req
+    "UpdateConnectorRegistration"
+    "fixture/UpdateConnectorRegistration.yaml"
+
+requestUpdateFlow :: UpdateFlow -> TestTree
+requestUpdateFlow =
+  req
+    "UpdateFlow"
+    "fixture/UpdateFlow.yaml"
+
+-- Responses
+
+responseCreateConnectorProfile :: CreateConnectorProfileResponse -> TestTree
+responseCreateConnectorProfile =
+  res
+    "CreateConnectorProfileResponse"
+    "fixture/CreateConnectorProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConnectorProfile)
+
+responseCreateFlow :: CreateFlowResponse -> TestTree
+responseCreateFlow =
+  res
+    "CreateFlowResponse"
+    "fixture/CreateFlowResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFlow)
+
+responseDeleteConnectorProfile :: DeleteConnectorProfileResponse -> TestTree
+responseDeleteConnectorProfile =
+  res
+    "DeleteConnectorProfileResponse"
+    "fixture/DeleteConnectorProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteConnectorProfile)
+
+responseDeleteFlow :: DeleteFlowResponse -> TestTree
+responseDeleteFlow =
+  res
+    "DeleteFlowResponse"
+    "fixture/DeleteFlowResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFlow)
+
+responseDescribeConnector :: DescribeConnectorResponse -> TestTree
+responseDescribeConnector =
+  res
+    "DescribeConnectorResponse"
+    "fixture/DescribeConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeConnector)
+
+responseDescribeConnectorEntity :: DescribeConnectorEntityResponse -> TestTree
+responseDescribeConnectorEntity =
+  res
+    "DescribeConnectorEntityResponse"
+    "fixture/DescribeConnectorEntityResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeConnectorEntity)
+
+responseDescribeConnectorProfiles :: DescribeConnectorProfilesResponse -> TestTree
+responseDescribeConnectorProfiles =
+  res
+    "DescribeConnectorProfilesResponse"
+    "fixture/DescribeConnectorProfilesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeConnectorProfiles)
+
+responseDescribeConnectors :: DescribeConnectorsResponse -> TestTree
+responseDescribeConnectors =
+  res
+    "DescribeConnectorsResponse"
+    "fixture/DescribeConnectorsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeConnectors)
+
+responseDescribeFlow :: DescribeFlowResponse -> TestTree
+responseDescribeFlow =
+  res
+    "DescribeFlowResponse"
+    "fixture/DescribeFlowResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFlow)
+
+responseDescribeFlowExecutionRecords :: DescribeFlowExecutionRecordsResponse -> TestTree
+responseDescribeFlowExecutionRecords =
+  res
+    "DescribeFlowExecutionRecordsResponse"
+    "fixture/DescribeFlowExecutionRecordsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFlowExecutionRecords)
+
+responseListConnectorEntities :: ListConnectorEntitiesResponse -> TestTree
+responseListConnectorEntities =
+  res
+    "ListConnectorEntitiesResponse"
+    "fixture/ListConnectorEntitiesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListConnectorEntities)
+
+responseListConnectors :: ListConnectorsResponse -> TestTree
+responseListConnectors =
+  res
+    "ListConnectorsResponse"
+    "fixture/ListConnectorsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListConnectors)
+
+responseListFlows :: ListFlowsResponse -> TestTree
+responseListFlows =
+  res
+    "ListFlowsResponse"
+    "fixture/ListFlowsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFlows)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseRegisterConnector :: RegisterConnectorResponse -> TestTree
+responseRegisterConnector =
+  res
+    "RegisterConnectorResponse"
+    "fixture/RegisterConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegisterConnector)
+
+responseStartFlow :: StartFlowResponse -> TestTree
+responseStartFlow =
+  res
+    "StartFlowResponse"
+    "fixture/StartFlowResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartFlow)
+
+responseStopFlow :: StopFlowResponse -> TestTree
+responseStopFlow =
+  res
+    "StopFlowResponse"
+    "fixture/StopFlowResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopFlow)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUnregisterConnector :: UnregisterConnectorResponse -> TestTree
+responseUnregisterConnector =
+  res
+    "UnregisterConnectorResponse"
+    "fixture/UnregisterConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UnregisterConnector)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateConnectorProfile :: UpdateConnectorProfileResponse -> TestTree
+responseUpdateConnectorProfile =
+  res
+    "UpdateConnectorProfileResponse"
+    "fixture/UpdateConnectorProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConnectorProfile)
+
+responseUpdateConnectorRegistration :: UpdateConnectorRegistrationResponse -> TestTree
+responseUpdateConnectorRegistration =
+  res
+    "UpdateConnectorRegistrationResponse"
+    "fixture/UpdateConnectorRegistrationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConnectorRegistration)
+
+responseUpdateFlow :: UpdateFlowResponse -> TestTree
+responseUpdateFlow =
+  res
+    "UpdateFlowResponse"
+    "fixture/UpdateFlowResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFlow)
